- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Matlab求解LP
式中 , f、x、b、beq、lb和ub为向量。A 和 Aeq为矩阵。
需要提醒的是, MATLAB中给向量和矩阵的赋值是逐行进行的,行之间用分号“;”隔开,每行元素之间可用 “,”也可用空格隔开,矩阵右上角用符号“”表示转置运算。
linprog 函数的调用格式如下:
1) [x , fval] = linprog( f , A , b),求解线性规划问题的,约束条件为,同时返回解 x 处的目标函数值fval。
2) [x , fval] = linprog( f, A, b , Aeq , beq ),求解线性规划问题的,约束条件为,但增加等式约束的条件,;若不等式不存在,则令 A=[]、b= [],同时返回解x 处的目标函数值 fval。
3) [x, fval]=linprog( , A , b , Aeq, beq , lb, ub),求解线性规划问题的,约束条件为及,并定义变量x 的下界lb和上界ub,使得x 始终在该范围内; 若等式不存在,则令Aeq=[]、beq=[],同时返回解x 处的目标函数值fval。
4) [x , fval] = linprog(f , A, b, Aeq, beq, lb, ub, x0) ,求解线性规划问题的, 约束条件为及,定义变量 x 的下界lb和上界ub,设置初值为x0同时返回解 x 处的目标函数值 fval。
5) [x , fval] = linprog (f , A , b, Aeq, beq, lb, ub, x0, options),求解线性规划问题的, 约束条件为及,定义变量x 的下界lb和上界ub,设置初值为x0。用options 指定的优化参数进行最小化,同时返回解 x 处的目标函数值 fval。
Matlab优化工具箱(Optimization Toolbox)中,求解(1)的程序如下:[x,fval,exitflag,output,lambda] = linprog (c,A,b,Aeq,beq,lb,ub,x0,options)
注意关键标识符意义:
1)x0是线性规划的初始解,这种设计仅对中规模算法有效,通常可以缺省。
2)输出X是最优解,fval是最优值
3)输出exitflag描述了程序的运行情况,若其值大于零,表示程序收敛到最优解;若其值等于零,表示计算达到了最大次数;若其值小于零,表示问题无可行解,或程序运行失败。
4)输出output表示程序运行的某些信息,如迭代次数(iterations)、所用算法(algorithm)、共轭梯度(cgiterations)等。
5)lambda表示解处的拉格朗日乘子,其中lower,upper,ineqlin,eqlin分别对应于下界、上界、不等式约束与等式约束。
6) 在使用linprog( )命令时,系统默认它的参数至少为3个,但如果我们需要给定第6个参数,则第4个参数、第5个参数也必须给出,否则系统无法认定给出的是第6个参数。遇到无法给出时,则用空矩阵“[]”替代。
例:
解 Matlab程序如下:
c=[-2,-1,1]; 求解目标函数的系数矩阵
A=[1,4,-1;2,-2,1]; A是不等式约束的系数矩阵
b=[4;12]; b是不等式约束
相应的常数列向量
Aeq=[1,1,2]; Aeq是等式约束的系数矩阵
beq=6; beq是等式约束相应的常数列向量,若没有等式约束,则均用[]代替;
lb=[0,0,-inf];
ub=[inf,inf,5]; 如果某个变量无下界,则用-inf表示;如果某个变量无上界,则用inf表示,若决策变量 无下界,则lb用[]代替;若决策变量 无上界,则ub用[]代替;
[x,z]=linprog(c,A,b,Aeq,beq,lb,ub)
运行后得到输出
Optimization terminated successfully.
x=
4.6667
0.0000
0.6667
z=
-8.6667
文档评论(0)