1. 曲线拟合工具箱
工具箱提供的拟合类型有:
-
Custom Equations:用户自定义的函数类型
-
Exponential:指数逼近,有2种类型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)
-
Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1*cos(x*w) + b1*sin(x*w)
-
Gaussian:高斯逼近,有8种类型,基础型是 a1*exp(-((x-b1)/c1)^2)
-
Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-preserving
-
Polynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree ~
-
Power:幂逼近,有2种类型,a*x^b 、a*x^b + c
-
Rational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子还包括constant型
-
Smoothing Spline:平滑逼近
-
Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1*sin(b1*x + c1)
- Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b)
“Fit options”按钮:设置拟合算法、修改待估计参数的上下限等参数
问题在于只能拟合有一个变量或者是两个变量的曲线。
2. 优化工具箱
单目标优化
2.1 无约束非线性优化
(1)fminunc: 无约束 非线性 单变量优化,求极小值;需要提前写好func.m的函数,在objectfunction中输入@func.
应用典型类似 y=x^2-x+2
(2)fminsearch: 无约束 不可微 非线性 单变量优化,求极小值。典型应用类似于y=|x-3|
(3)lsqnonlin:无约束 非线性 最小二乘优化,求极小值。
2.2 有约束非线性优化
(1)fmincon:有约束 非线性 多变量优化,求极小值。多变量用x(1),x(2),x(3)...x(n)表示,约束表示:AX<=b AeqX=beq
注意是极小值而不是最小值,所以start point对于最终结果的影响比较大。
也可以求解非线性约束。使用方法类似于ga。
(2)linprog:线性规划,注意这里的f不是输入@func,而是输入参数的数组。比如说:min f=-4*x1-x2,输入f=[-4,-1]
2.3 智能算法
(1)ga
fitness function: 目标函数,传入numbers of variables个数的行向量。
numbers of variables:变量的个数
nonlinear constraint function:非线性约束函数,传入x,返回c(x)和ceq(x)。c(x)<=0 ceq(x)=0
[x,fval,exitflag,output,population,scores] = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon,options)
其中x是最小值对应的自变量,fval是最小值对应的因变量,nonlcon代表非线性约束,intCon为整数约束的变量的index。
当IntCon
非空时,Aeq
并且beq
必须是空条目([]
),并且nonlcon
必须返回空ceq
。
多目标优化
2.4 其他优化工具
(1)最大最小问题
[x,fval,maxfval,exitflag,output,lambda] = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
exitflag为145,则得到的解决方案正确;为0,则达到迭代次数停止;为-1,被输出函数终止;为-2,则找不到可行点。
maxfval评估的函数的最大值。
(2)gamultiobj
使用遗传算法求解多目标优化问题
[x,fval,exitflag,output,population,scores] = gamultiobj(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)
关于输入参数:
fun是目标函数,输入行向量x,返回函数数组f(x)的实数向量
nvars是变量数,即x的长度
关于输出结果:
x是帕累托点
fval是帕累托点的参数值
exitflag为1即结果正确;为0则超过最大迭代次数;为-1则由输出函数终止;为-2则找不到可行点;为-5则超出时限。
(3)fgoalattain
多目标达成问题
[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)
输出参数:
attainfactor:描述目标到达的程度。若是负的,证明已经超过了目标值;若是正的,证明小于目标值。
输入参数:
goal:目标向量
weight:控制目标的到达程度
整数规划和0-1规划
关于整数规划即为在intcon中填写有整数规划的下角标,关于0-1规划即为整数规划加上范围限定为0到1.