【数学建模】13 非线性规划模型求解方法

1 近似线性法

近似线性法:在一个小范围内展开
在这里插入图片描述

2 罚函数法

基本思想是通过构造罚函数把约束问题转化为一系列无约束最优化问题,进而用无约束最优化方法去求解。这类方法为序列无约束最小化方法。简称为SUMT。分为内点法和外点法两种。
罚函数法:将约束条件放入目标函数
(1)SUMT外点法
原问题化为
在这里插入图片描述

其中T(X,M)称为罚函数,M称为罚因子,带M的项称为罚项。罚函数只对不满足约束条件的点实行惩罚。
(2)SUMT内点法(障碍函数法)
构造障碍函数
在这里插入图片描述

3 MATLAB函数求解方法

(1)二次规划模型
标准型:
在这里插入图片描述

用MATB软件求解,其输入格式如下:

1,x=quadprog(H,CA,b);
2,x=quadprog(H,CA,b,Aeqbeq);
3,x=quadprog(H,C,A,b,Aeq,beq,VLBVUB);
4,x=quadprog(H,CA,b,Aeq,beqVLBVUBXO);
5,x=quadprog(H,C,A,b,AeqbeqVLBVUB,XOoptions);
6,[xfva刂=quaprog(...);
7,[xfval,exitflag]=quaprog(...);
8,[xfval,exitflag,output]=quaprog(,..);

举例:
在这里插入图片描述

写成标准型
在这里插入图片描述

程序设计:

H = [1 1 ;1 1]
C = [-1;-2]
A = [2 3;1 4]
b = [6:5]
vlb = [0,0]
[x,fval] = quadprog(H,C,A,b,[],[],vlb)

(2)一般规划模型
标准型
在这里插入图片描述

MATLAB求解方法

  • 首先建立M文件fun.m。用来定义目标函数F(X)
  • 若约束条件中有非线性约束:G(X)<=0或Ceq = 0,则建立M文件nonlcon.m定义函数G(X)与Ceq(X)
function[G,Ceq](X〕
G=...
Ceq=...
  • 建立主程序
x = fmincon('fun',X0,A, b)
x =fmincon('fun' , XO,A, b, Aeq, beq)
x =fmincon('fun',X0,A,b,Aeq, beq, VLB, VUB)
x=fmincon ( 'fun' , XO , A, b, Aeg, beg,VLB, VLJB, 'nonlcon' )
x=fmincon ('fun' ,XO,A,b,Aeq, beq, YLB, YUB, ' nonlcon' , options )
[z, fval]= fmincon(... )
[z, fval, exitflag] = fmincon(... )
[z, fval, exitflag, output] = fmincon(...)

举例:
在这里插入图片描述

写成标准形式:
在这里插入图片描述

程序设计

x0 = [1;1];
A=[2 3 ;1 4 ];
b = [6;5];
Aeq = [];
beq = [];
vlb = [0;0];
[x,fval] = fmincon(@fun,x0,A,b,Aeq,beq,vlb)
function f = fun(x)
    f = -x(1)-2*x(2)+ (1/2)*x(1)^2+(1/2)*x(2)^2+ x(1)*x(2)
end

4 LINGO软件求解方法

min =-x1-2*x2 + x1^2/2 + x2^2/2 + x1*x2
2*x1 + 3*x2 <6
x1 + 4*x2 <5

5 课后习题

编程求解下列非线性数学规划模型
在这里插入图片描述

x0 = rand(3,1);
VLB = zeros(3,1);
[x,fval] =  fmincon(@fun1,x0,[],[],[],[],VLB,[],@fun2)
function f=fun1(x)
 f=2*x(1)+3*x(1)^2+3*x(2)+x(2)^2+x(3);
end
function [C,Ceq]=fun2(x)
C(1)=x(1)+2*x(1)^2+x(2)+2*x(2)^2+x(3)-10; % 非线性约束,若不止1个,则用C(1),C(2),...
C(2)=x(1)+x(1)^2+x(2)+x(2)^2-x(3)-50; 
C(3)=2*x(1)+x(1)^2+2*x(2)+x(3)-40;
C(4)= -x(1)-2*x(2)+1;
Ceq= x(1)^2+x(3)-2; % 等式约束, 若没有等式约束,可令Ceq=[];
end

输出结果是
x =
0.0006
0.4997
2.0000
fval =
3.7500

© 版权声明
THE END
喜欢就支持一下吧
点赞448 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容