优化问题的matlab解法

1.线性优化:
   linprog函数的用法,具体可以help下。
2.非线性优化
   fmincon函数
[x,fval,exitflag,output,lambda,grad,hessian] =fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
fun的用法
(1)直接引号内写入方程式,如'-x(1)-x(2)+0.5*x(1)
^2+0.5*x(2)^2';
(2)‘fun’,然后用function;
(3)@fun,然后用function;

(4)@(x)+方程式:如@(x)-x(1)-x(2)+0.5*x(1)^2+0.5*x(2)^2;


后面的参数noncloon和fun完全类似。



3.无约束非线性优化

fminbnd,fminunc,fminsearch的区别联系

fminbnd只对单变量;
fminunc可对单变量也可对多变量,但只能对连续的目标函
数求解;
fminsearch只可对多变量;
三者仅仅是x属于实数范围内。


4.最小二乘法优化
(1)lsqlin:过原点的直线
(2)lsqcurvefut:求含有参变量(x)的拟合函数

(3)lsqnonlin:类似于找到x使表达式最小


以上的不用函数对用不同的优化数学模型,具体用到可参考help文件中的数学模型。

另外初始点的选取对算法的最终结果是有影响的,可以利用减少步长来减小误差,但不一定会完全没有误差。

同时也避免某些函数会造成局部最优的情况。避免方法可以是画图看看有个大致结果,再细做;

多用几个函数求解;多选取不同的初始点;利用遗传算法;利用lingo求解

你可能感兴趣的:(优化问题的matlab解法)