非线性规划
eg1 投资决策问题
n个项目,至少投资一个,总资金A,花费ai,收益bi
xi=0/1(投资)
sigma如何打出
xi(1-xi)=0
数学模型:
matlab中用法
[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x的返回值是决策向量x的取值,fval是目标函数的取值,分量大小也可以是inf,nonclon是非线性向量,x0是x的初始值,如果没有要求就可以直接[]
无约束问题的matlab解法
无约束极值问题符号解
f(x,y)=x^3 -y^3 +3x^2+ 3y^2-9x的极值
fx=0,fy=0求驻点,再看jacobian的determinant
大于0最小,小于0最大
clc,clear
syms x y
f=x^3 -y^3 +3*x^2+ 3*y^2-9*x;
df=jacobian(f);%求一阶导
d2f=jacobian(df);%求jacobian
[xx,yy]=solve(df);
xx=double(xx);
yy=double(yy);
for i=1:length(xx)
a=subs(d2f,{x,y},{xx(i),yy(i)});%替换
b=eig(a);
f=subs(f,{x,y},{xx(i),yy(i)});
if all(b>0)%极小
if all(b>0)
if any(b>0)&any(b<0)
数值解
[x,fval]=fminunc(fun,x0,options)
fval(极小值,梯度,hessian,后两个可选)
或者
[x,fval]=fminsearch(fun,x0,options)
零点和方程组的解
root,solve,fsolve
约束极值问题
二次规划
[x,favl]=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,opt)
罚函数法(序列无约束最小化)
构造p=f+Msum(max g(x))-Msum(min H(x))+M*|k(x)|
求min p的最优解
计算精确度小
matlab求约束极值问题
1.fminbnd函数
f min x1<=x<=x2
[x,fval]=fminbnd(fun,x1,x2,options)
2.fseminf函数
在条件中多一个K(x,wi)<=0
3.fminimax 函数具体极小极大值意义
4.利用梯度
将df和dc算出
注意!options=optimset(‘GradObj’,‘on’,‘GradConstr’,‘on’)
来源:CSDN
作者:hyoer
链接:https://blog.csdn.net/weixin_44853593/article/details/104010685