第五讲 规划问题的matlab计算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

>> c=[13 9 10 11 12 8]; >> A=[0.4 1.1 1 0 0 0;
0 0 0 0.5 1.2 1.3];
>> b=[800;900];
>> Q=[1 0 0 1 0 0;
因为x没有下界, 计算中断
exiting:0One 0; more of the residuals, duality gap, or total 0 1 0 1 or relative error has grown 100000 times greater than its minimum0value so far: the dual appears to be infeasible 0 0 1 0 1]; (and the primal unbounded). (The primal residual >> p=[400;600;500]; < TolFun=1.00e-008.) x = 1.0e+042 * ( -1.6376 0.1424 0.4984 1.6376 0.1424 -0.4984) >> x=linprog(c,A,b,Q,p)
>> [x,fval,exitflag,output]=fminunc(@zuisu1,x,options) x = 1.2671 1.6062 fval = 0.0714 exitflag = 0 output = iterations: 23 funcCount: 252 stepsize: 1.0000e-003 firstorderopt: 0.2239 algorithm: 'medium-scale: Quasi-Newton line search' message: 'Solver stopped prematurely.fminunc stopped because it exceeded the function evaluation limit,options. MaxFunEvals = 250 (the selected value).
>> for k=1:5
for k1=1:5 A(k,5*(k-1)+k1)=1; end end >> for k=1:5 for k1=1:5 A(10+k,5*(k1-1)+k)=1; end end
>> for k=1:5 >> b=[1 1 1 1 1 -1 -1 -1 -1 -1 1>> 1 1 k=1:5 -1 -1 -1]; 1 for 1 -1 -1 for k1=1:5
x =
Ax b, s.t .Qx p , x 0
求解命令: x=linprog(c,A,b,Q,p)
若没有不等式,则令A=[ ],b=[ ]。
例2
例2 求解线性规划
min z 13 x1 9 x2 10 x3 11x4 12 x5 8 x6 ; x1 x4 400, x x 600, 5 2 x3 x6 500, s.t. 0.4 x1 1.1x2 x3 800, 0.5 x4 1.2 x5 1.3 x6 900, x16 0
二、0-1整数规划 1、bintprog函数
[x,fval,exitflag,output]=bintprog(f,A,b,Aeq,beq,x0,options)
所有变量说明如前。 例5 求解0-1线性规划问题
min f 100 y1 30 y 2 40 y 3 45 y 4 50 y1 30 y 2 25 y 3 10 y 4 20, 7 y 2 y y 4 y 4, 1 2 3 4 s.t. 2 y1 y 2 y 3 10 y 4 2, y y y 1 3 4 2 y1 , y 2 , y 3 , y 4 {0,1}
g为导数解析式
f=100*(x(2)-x(1)^2)^2+(1-x(1))^2;
[1] 不含解析的计算 g=[200*(x(2)-x(1)^2)*(-2)*x(1)-2*(1-x(1)),200*(x(2)-x(1)^2)];
>> x=[2;2]; >> options=optimset('LargeScale','off','HessUpdate', 'steepdesc','gradobj','off','MaxFunEvals',250,'display','iter');
Output:优化结果的约束信息
Lambda,exitfla:算法停止原因 1 算法收敛于x; 0 算法达到最大迭代次数停止迭代,x不一定是最优 解;
-2 算法没有找到可行解,无可行解;
-3 原问题为无界解;
…(其它信息可以查阅相关的help信息)
例4 求解线性规问题 min f x1 x 2 x 3
Grad:最优点的导数(梯度)
Hessian:最优点的二阶导数,海赛矩阵。
3、无约束优化的几种算法选择
3.1
最速下降法
在语法中,将输入参数options设置为
Options=optimset(‘LargeScale’,’off’,’HessUpdate’,’steepdesc’,’gr adobj’,’on’,’maxFunEvals’,250,’display’,’iter’); ‘LargeScale’,’off’ 大规模计算模式 关闭 ‘HessUpdate’,’steepdesc’ Hess矩阵修正,采用最速下降法 (不需要修正) ‘gradobj’,’on’ 目标函数导数解析式,on使用,off不使用(差分)
但是,输入matlab计算时,应该输入成x1,x2,…,x25的 格式。本题有25个0-1变量且需要约束全部化为小于等 于形式。约束矩阵是20x25的矩阵(为什么?),应 该采用稀疏矩阵的输入方式。
>> clear >> c=[32 17 34 36 25 21 31 21 22 19 24 29 40 28 39 26 35 41 33 29 33 27 31 42 22]; >> A=zeor(20,25);
ห้องสมุดไป่ตู้
3. 求解格式3
min z cx Ax b, s.t .Qx p , vlb x vub
x=linprog(c,A,b,Q,p,vlb,vub,x0)
例3
X0表示初始解,默认不写。vlb 表示决策变量x的 下界,vub 表示变量x的上界。 例3 求解例2,增加下界(0 0 0 0 0 0)。
>> clear
>> c=[-2,-1]; A=[0,2;6,2;1,1]; b=[15;25;5]; >> x=linprog(c,A,b)
注意:matlab规 划模块不会自动 认为决策向量x非 负,如果要求x非 负,需要给出下 界Lb。
2、求解格式2 terminated. cx min z Optimization
参数输入: Fun: x0: 目标函数,一般用M文件给出 优化的初始点
Options: 参数设置(后面说明)
函数输出:
X:最优点(或最后迭代值) Fval:最后迭代值的目标函数值 Exitflag:函数结束的信息 Oupput:函数基本信息,包括迭代次数,目标函数最 大计算次数,使用的算法名称,计算规模
例 4
7 x1 3x 2 9 x 3 1, 8x 5x 4 x 1, 1 2 3 s.t. 6 x1 9 x 2 5x 3 1, x1 , x 2 , x 3 0
>> c=[-1 -1 -1]; >> A=[7 3 9;8 5 4;6 9 5]; >> b=[1;1;1]; >> Ae=[];be=[];vlb=[0 0 0];ulb=[]; >> [x,fval,exitflag,output,lambda]=linprog(c,A,b,Ae,be,vlb,ulb)
>> vlb=zeros(6,1); >> vub=[]; >> x0=[]; >> x=linprog(c,A,b,Q,p,vlb,vub,x0)
Optimization terminated.
x=
4. 求解格式4
[x,f]=linprog(c,A,b,Q,p,vlb,vub,x0,options)
>> [x,f]=linprog(c,A,b,Q,p,vlb,vub,x0) Optimization terminated.
x=
0.0000
600.0000 0.0000 f表示最优解x对应的目标函数值。
5. 求解格式5
[x,fval,exitflag,output,lambda]=linprog(. . .)
Optimization terminated. x=
0.0870
0.0356
0.0316
fval = -0.1542 exitflag = 1
output = iterations: 7 algorithm: ‘large-scale: interior point’ cgiterations: 0 (共轭迭代0次) message: 'Optimization terminated.' constrviolation: 0 firstorderopt: 3.2143e-014 lambda = ineqlin: [3x1 double] eqlin: [0x1 double] upper: [3x1 double] lower: [3x1 double]
>> f=[100,30,40,45]; >> A=[-50 -30 -25 -10;-7 -2 -1 例5 -1 -1 -10;0 1 1 -1]; -4;-2 >> b=[-20;-4;-2;1]; >> [x,fval,exitflag,output]=bintprog(f,A,b,[],[],[]) Optimization terminated. x= 0 1 0 1 fval = 75 exitflag = 1 output = iterations: 15 nodes: 11 time: 1.1388 algorithm: 'LP-based branch-and-bound' branchStrategy: 'maximum integer infeasibility' nodeSrchStrategy: 'best node search' message: 'Optimization terminated.'
‘MaxFunEvals’ ,250 最大函数计算次数 250
‘display’,’iter’ 显示迭代过程
例7 利用最速下降法计算无约束优化问题
min
f 100 ( x 2 x ) (1 x1 )
2 2 1
2
function f=zuisu1(x)
不含导数解析式
f=100*(x(2)-x(1)^2)^2+(1-x(1))^2; function [f,g]=zuisu2(x)
例6 某装修公司有甲、乙、丙、丁、戊5个装修队,现 在公司接到5项装修任务A、B、C、D、E。各个装修 例6 0-1指派问题 队对5项任务的装修时间估计如下表 A B C D E

乙 丙
32
21 24
17
31 29
34
21 40
36
22 28
25
19 39


26
33
35
27
41
31
33
42
29
22
>> [x,fval]=bintprog(c,A,b) Optimization terminated.
X12,x23,x34,x41,x55取1,其余取0。
x=
(2,1)
1
(8,1)
(14,1) (16,1)
1
1 1
三、无约束优化
1、无约束最优性判别条件(略) 2、语法:
[x,fval,exitflag,output,grad,hessian]=fminunc(fun,x0,options)
如何分派任务,使得总用时最少?
根据指派问题的建模例子,本题的数学模型如下:
min f c ij x ij
i , j1 5
5 x ij 1( 1, 1), j 1,2,3,4,5 i 1 5 s.t. x ij 1, i 1,2,3,4,5 j1 x 0,1 , j 1,2,3,4,5 ;i ij
第五讲
利用matlab计算优化问题
Matlab的部分优化功能介绍
一、利用matlab求解线性规划 1、模型求解格式1
min z cx Ax b s.t. x 0 求解命令:x=linprog(c,A,b)
例1求解线性规划
max
z 2 x1 x2 ;
5 x2 15, 6 x 2 x 24, 1 2 s.t . x1 x2 5, x1 , x2 0
相关文档
最新文档