- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MatLab数值计算优化
PAGE
PAGE 15
MatLab 数学建模
授课: 唐 静 波 (九江学院理学院)
第五讲 数值计算(二)
线性优化
用命令x=lp(C,A,b,vlb,vub)。
[例] 最小值线性优化
f(x)=-5x1-4x2-6x3
x1-x2+x3≦20
3x1+2x2+4x3≦42
3x1+2x2≦30
(0≦x1, 0≦x2,0≦x3)
First, enter the coefficients:
f = [-5; -4; -6]
A = [1 -1 1
3 2 4
3 2 0];
b = [20; 42; 30];
lb = [0,0,0]; % x的最小值 [0,0,0]
ub = [inf,inf,inf];
Next, call a linear programming routine:
x= lp(f,A,b,lb,ub);
Entering x
x =
0.0000
15.0000
3.0000
实际此命令改为:
x = linprog(f,A,b,Aeq,beq)
x = linprog(f,A,b,Aeq,beq,lb,ub)
对以上的问题可做如下的操作:
First, enter the coefficients:
f = [-5; -4; -6];
A = [1 -1 1
3 2 4
3 2 0];
b = [20; 42; 30];
lb = zeros(3,1);
Next, call a linear programming routine:
[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb);
x =
0.0000
15.0000
3.0000
fval =
-78.0000
exitflag =
1
output =
iterations: 6
cgiterations: 0
algorithm: lipsol
lambda =
ineqlin: [3x1 double]
eqlin: [0x1 double]
upper: [3x1 double]
lower: [3x1 double]
[例] 线性优化
Min -400x1-1000x2-300x3+200x4
-2x2 + x3 + x4=0
2x1 +3x2 =16
3x1 +4x2 =24
x1, x2, x3, x4=0; x3=5
c=[-400,-1000,-300,200]; %目标函数系数
A=[0 -2 1 1; 2 3 0 0; 3 4 0 0]; %约束条件系数
b=[0; 16; 24];
xLB=[0,0,0,0]; % x取值范围的最小值
xUB=[inf,inf,5,inf]; % x取值范围的最大值
x0=[0,0,0,0]; % x取迭代初始值
nEq=1; % 约束条件中只有一个 = 号,其余为=
x=lp(c,A,b,xLB,xUB,x0,nEq)
disp([最优值为: ,num2str(c*x)])
结果:
x =
3.4483
3.0345
5.0000
1.0690
最优值为 -5700
非线性优化
用命令x=constr(f ,x0)。
[例] 最小值非线性优化
Min f(x)=-x1x2x3,
-x1-2x2-2x3≤0,
x1+2x2+2x3≤72,
初值: x = [10; 10; 10]
第一步:编写M文件 myfun.m
function [f,g]=myfun(x)
f=-x(1)*x(2)*x(3);
g(1)=-x(1)-2*x(2)-2*x(3);
g(2)=x(1)+2*x(2)+2*x(3)-72;
第二步:求解
在MATLAB工作窗中键入
x0=[10,10,10];
x=constr(myfun,x0)即可.
x =
24.0000 12.0000 12.0000
[例] 非线性优化
Min f(x)=-x1x2
(x1+ x2)x3=0;
x1, x2=0; x3=2;
第一步:编写M文件
文档评论(0)