使用MATLAB求解线性规划问题.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用MATLAB求解线性规划问题

2使用MATLAB求解线性规划问题 应用Matlab优化工具箱中的linprog函数求解线性规划时模型要求为如下形式: 其中:均为列向量,为常数矩阵,为常数列向量。 函数调用格式如下: %决策变量有上下界,默认变量非负。 例1-38 用Matlab 求解下面线性规划问题 令z1= -z MATLAB求解程序存为liti2.m c=[-150,-210]; A=[2,3;3,4;5,5]; b=[100;120;150]; C=[]; d=[]; xm=[0;0]; xM=10^10*[1;1]; [x,z1]=linprog(c,A,b,C,d,xm,xM) Optimization terminated. 在命令窗口键入liti2.m,按回车得最优解和最优值 x = 0.0000 30.0000 z1 = -6.3000e+003 故最优解为 x1=0,x2=30; 最优值为z=-z1=6300. 3使用LINGO求解线性规划问题 通常在LINGO中建立优化模型由MODEL语句开始,由END语句结束。模型中包含四部分(即四段):集合(SETS)、数据段(DATA)、初始段(INIT)、目标和约束段。 集合段: 它是以 SETS开始,ENDSETS结束,其作用是定义所用集合变量及元素(数组的下标),以及相应的属性(数组)。 数据段:它是以 DATA开始,ENDDATA结束,其作用是对集合段中定义的属性(数组)赋值(常数)。数据之间用逗号分开或用空格分开。 初始段:它是以INIT开始,ENDINTI结束,其作用是对集合段中定义的属性(变量数组)赋迭代初值。这部分可以没有。 目标与约束段:在此段主要定义问题的目标函数和约束条件,一般用到LINGO内部的函数祥见附录A。 以下面线性规划问题为例给出LINGO的求解模型 问题: LINGO的求解模型 MODEL Sets: row/1..m/:b; !表示b是一个m维的列向量 arrang/1..n/:x,c; !表示x,c是n维的行向量 link(row,arrange):a; !表示a是mxn的矩阵 endsets data b=b(1),b(2),…,b(m); !表示约束条件的右端项 c=c(1),c(2),…,c(n); !表示目标函数系数 a=a(1,1),a(1,2),…,a(1,n), !表示约束条件的系数矩阵 a(2,1),a(2,2),…,a(2,n), … a(m,1),a(m,2),…,a(m,n); enddata [OBJ]max=@sum(arrange(j):c(j)*x(j)); @for(row(i):@sum(arrange(j):a(i,j)*x(j)=b(i);); @for(arrange(j):x(j)=0;); END 例1-39 用Matlab 求解下面线性规划问题 LINGO的求解程序: MODEL Sets: row/1,2,3/:b; arrang/1,2/:x,c; link(row,arrange):a; endsets data b=100,120,150; c=150,210; a=2,3, 3,4,5,5; enddata [OBJ]max=@sum(arrange(j):c(j)*x(j)); @for(row(i):@sum(arrange(j):a(i,j)*x(j)=b(i);); @for(arrange(j):x(j)=0;); END 最优解

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档