数学建模第三章非线性规划

亡梦爱人 提交于 2020-01-17 02:33:38

非线性规划

eg1 投资决策问题
n个项目,至少投资一个,总资金A,花费ai,收益bi
xi=0/1(投资)
sigma如何打出
0<i=0naixiA0\lt \sum_{i=0}^n a_i*x_i \le A
xi(1-xi)=0
数学模型:
maxQ=i=0nbixii=0naiximaxQ=\frac{ \sum_{i=0}^nb_i*x_i}{ \sum_{i=0}^na_i*x_i}
st.{0<i=0naixiAxi(1xi)=0st. \begin{cases} 0\lt \sum_{i=0}^n a_i*x_i \le A\\ xi*(1-xi)=0 \end{cases}

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

约束极值问题

二次规划

min1/2xTHx+fTxmin 1/2*x_THx+f_Tx
[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’)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!