一、无约束最优化问题
用于无约束最优化模型求解
函数:可以调用 matlab的的函数, fminsearch、fminunc。
调用格式如下:[x,fval]= fminsearch(fun,x0) or [x,fval]= fminunc(fun,x0)
fun:为函数方程、 x0为初始值
举例:
求解函数方程的最小值:
f=@(x)(3/2)*x(1)^2+(1/2)*x(2)^2-x(1)*x(2)-2*x(1);[x fval]=fminsearch(f,[-2,4])%或者[x fval]=fminunc(f,[-2,4])
结果一样,都如下所示:
x =
1.0000 1.0000
fval =
-1.0000
因为解决非线性规划问题,都是使用的搜索算法,所以非常依赖初始值,大家需要注意。
二、约束最优化问题
调用方程 [x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
对于方程:
f=@(x)-x(1)*x(2)*x(3);A=[-1,-2,-2;1,2,2];b=[0;72];x0=[10,10,10];[x,fval]=fmincon(f,x0,A,b)
结果:
x =
24.0000 12.0000 12.0000
fval =
-3.4560e+03
当然我们一般可以用 Lingo 求解,这样又方便,又快捷
min=-x1*x2*x3;x1+2*x2+2*x3>=0;x1+2*x2+2*x3<=72;@free(x1);@free(x2);@free(x3);
一样的快捷和实用