- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五讲 数值计算(二)
min C T x , x ? R n
s.t. Ax ? b vlb ? x ? vub
一、 线性优化
用命令 x=lp(C,A,b,vlb,vub) 。[例] 最小值线性优化
f(x)=-5x -4x -6x
1 2 3
x -x +x ≦20
1 2 3
3x +2x +4x ≦42
1 2 3
3x +2x ≦30
1 2
(0≦x , 0≦x ,0≦x )
1 2 3
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 -400x
-1000x -300x
+200x
1 2
-2x
2
2x +3x
1 2
3x +4x
1 2
3 4
+ x + x =0
3 4
=16
=24
x , x , x , x =0; x =5
1 2 3 4 3
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
min f ( x ), x ? R n
s.t.g ( x ) ? 0
二、 非线性优化
用命令 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)=-x x
1 2
(x + x )x =0;
1 2 3
x , x =0; x =2;
1 2 3
第一步:编写 M 文件 fxxgh.m function [F,G]=fxxgh(x) F=-x(1)*x(2);
G(1)=(x(1)+x(2))*x(3)-120;
第二步:求解
在 MATLAB 工作窗中键入
x=[1,1,1];
%
x 取迭代初始值
options(13)=0;
%
约束条件中有0 个 = 号,其余为=
XL=[0,0,2];
%
x 取值范围的最小值
XU=[in
文档评论(0)