龙源期刊网 http://www.qikan.com.cn
运用Lingo和Matlab软件求解线性规划问题的比较研究
作者:肖满红
来源:《中小企业管理与科技·上旬刊》2013年第08期
摘要:本文就一个给定的线性规划模型,通过介绍优化软件Lingo和科学计算软件Matlab中求解线性规划问题的命令和函数,指出Lingo软件在求解线性规划问题上占有一定优势。 关键词:线性规划 Lingo软件 Matlab软件 最优解
线性规划由前苏联经济学家康托洛维奇提出,它主要研究的是在线性等式(或不等式)约束条件下,使某一线性目标函数取得最大值(或最小值)的问题。随着计算机技术的发展,借助软件可以快速对线性规划问题进行求解和分析。目前,能够求解规划问题的数学软件比较多,常见的有优化软件Lingo和科学计算软件Matlab。
本文以如下线性规划为例,分别利用这二种软件来求解,并就它们在求解线性规划上的差异进行对比分析。
minz=10.8x11+10.95x12+11.1x13+11.25x14+11.1x22+ 11.25x23+11.4x24+11x33+11.15x34+11.3x44; s.t.x11+x12+x13+x14 1 Lingo求解线性规划
1.1 Lingo软件简介 Lindo和Lingo是美国 Lindo系统公司开发的一套专门用于求解最优化问题的软件包。Lindo 用于求解线性规划和二次规划问题,Lingo除了具有Lindo的全部功能外,还可以用于求解非线性规划问题,也可以用于一些线性和非线性方程(组)的求解等等。 1.2 Lingo中求解线性规划的命令介绍 按照Lingo语法规则,要求计算的模型首行以Max 或Min 开始,并按线性规划问题的自然形式录入,程序最后以end结束.程序中,不区分变量中的大小写字符,注释使用“!”来引导,约束条件中的“≥”与“≤”以“>”“ 1.3 Lingo求解上述线性规划的具体实现 Lingo程序1: min=10.8*x11+10.95*x12+11.1*x13+11.25*x14+11.1* x22+11.25*x23+11.4*x24+11*x33+11.15*x34+11.3*x44;
龙源期刊网 http://www.qikan.com.cn
x11+x12+x13+x14 x22+x23+x24 x33+x34 x44 x11=10; x12+x22=15; x13+x23+x33=25; x14+x24+x34+x44=20。
运行后,得(Lingo的输出结果很丰富,但由于版面限制,此处仅摘取部分): Objective value: 773.0000 Variable Value X11 10.00000 X12 15.00000 X13 0.000000 X14 0.000000 X22 0.000000 X23 0.000000 X24 5.000000 X33 25.00000 X34 5.000000 X44 10.00000
即最优解为x11=10、x12=15、x24=5、x33=25、x34=5、x44=10,其余都是0,最优值为773.
龙源期刊网 http://www.qikan.com.cn
下面介绍运用Lingo中提供的集合定义形式来重新编写程序. Lingo程序2: sets:
warehouse/1..4/: capacity; vendors/1..4/: demand;
links(warehouses,vendors): c,x; endsets
min=@sum(links: c*x);!目标函数;
@for(warehouses(i):@sum(vendors(j): x(i,j)) capacity(i));
@for(vendors(j):@sum(warehouses(i): x(i,j))= demand(j)); data: !变量的赋值; capacity=25 35 30 10; demand=10 15 25 20; c=10.8 10.95 11.1 11.25 0 11.1 11.25 11.4 0 0 11 11.15 0 0 0 11.3;
x=,,,,0,,,,0,0,,,0,0,0,;!x21=x31=x32=x41=x42=x43=0; enddata end