- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章 最优化方法
本章主要介绍线性规划、0-1规划、非线性规划等问题的MATLAB求解。
9.1 线性规划(Linear Programming,简写为LP)问题
线性规划问题就是求多变量线性函数在线性约束条件下的最优值。满足约束条件的解称为可行解,所有可行解构成的集合称为可行域,满足目标式的可行解称为最优解。
MATLAB解决的线性规划问题的标准形式为:
min
其中为列向量,为矩阵。
其它形式的线性规划问题都可经过适当变换化为此标准形式。
在MATLAB中求解线性规划问题函数为linprog,其使用格式为:
[x, fval, exitflag, output, lambda] = linprog(f, A, b, Aeq, beq, lb, ub)
输入部分:其中各符号对应线性规划问题标准形式中的向量和矩阵,如果约束条件中有缺少,则其相应位置用空矩阵[]代替。
输出部分:其中x为最优解,用列向量表示;fval为最优值;exitflag为退出标志,若exitflag=1表示函数有最优解,若exitflag=0表示超过设定的迭代最大次数,若exitflag=-2,表示约束区域不可行,若exitflag=-3,表示问题无解,若exitflag=-4,表示执行迭代算法时遇到NaN,若exitflag=-5,表示原问题和对偶问题均不可行,若exitflag=-7,表示搜索方向太小,不能继续前进;output表明算法和迭代情况;lambda表示存储情况。
例1 用linprog函数求下面的线性规划问题
输入如下:
f = [-5, -4,-6];
A = [1 -1 1; 3 2 4; 3 2 0];
b = [20; 42; 30];
lb = zeros(3,1);
[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)
注意:由于该问题没有等式约束,所以输入格式中相应的位置用[]代替,变量没有上限约束,所以ub也用[]代替,但由于其在最后,可以不写。
输出结果如下:
Optimization terminated.
x = % 最优解
0.0000
15.0000
3.0000
fval = %最优值
-78.0000
exitflag = %函数收敛于解
1
output =
iterations: 6
algorithm: large-scale: interior point
cgiterations: 0
message: Optimization terminated.
lambda =
ineqlin: [3x1 double]
eqlin: [0x1 double]
upper: [3x1 double]
lower: [3x1 double]
例2 一家家具公司生产桌子和椅子,用于生产的全部劳动力共计450个工时,原料是400个单位的木材。每张桌子使用15个工时的劳动力,20个单位的木材,售价为80元。每张椅子使用10个工时,用料5个单位,售价45元。问为达到最大效益,应如何安排生产?
解 设生产桌子个,椅子个,建立如下模型:
输入如下:
f = [-80,-45];
A = [20, 5; 15, 10];
b = [400, 450];
lb = zeros(2,1);
[x, fval, exitflag] = linprog(f,A,b,[],[],lb)
结果如下:
Optimization terminated.
x =
14.0000
24.0000
fval =
-2.2000e+003
exitflag =
1
注意:由于linprog是求目标函数的最小值,如求目标函数的最大值,可先求出的最小值fval,则-fval就是的最大值。本例只输出最优解、最优值和退出标志,可见生产14个桌子,24个椅子,可获得最大利润2200元。
9.2 0-1规划
0-1规划是一种特殊形式的整数规划,它的决策变量仅取值0或1.一般用0表示放弃,1表示选取,故0-1规划可以用来处理选址问题、指派问题、装箱问题、项目评价、资金分配、生产计划安排等问题。
在MATALB中求解0-1规划问题函数为bintprog,其针对下述0-1规划:
min
其中为列向量,为矩阵。
使用格式为:
[x, fval, exitflag, output] = bintprog(f, A, b, Aeq, beq)
输入部分:其中各符号对应0-1规划问题
文档评论(0)