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

非线性规划

eg1 投资决策问题
n个项目,至少投资一个,总资金A,花费ai,收益bi
xi=0/1(投资)
sigma如何打出
0 < ∑ i = 0 n a i ∗ x i ≤ A 0\lt \sum_{i=0}^n a_i*x_i \le A 0<i=0naixiA
xi(1-xi)=0
数学模型:
m a x Q = ∑ i = 0 n b i ∗ x i ∑ i = 0 n a i ∗ x i maxQ=\frac{ \sum_{i=0}^nb_i*x_i}{ \sum_{i=0}^na_i*x_i} maxQ=i=0naixii=0nbixi
s t . { 0 < ∑ i = 0 n a i ∗ x i ≤ A x i ∗ ( 1 − x i ) = 0 st. \begin{cases} 0\lt \sum_{i=0}^n a_i*x_i \le A\\ xi*(1-xi)=0 \end{cases} st.{0<i=0naixiAxi(1xi)=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

约束极值问题

二次规划

m i n 1 / 2 ∗ x T H x + f T x min 1/2*x_THx+f_Tx min1/2xTHx+fTx
[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’)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值