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