LINDOLINGO.docx

上传人:b****1 文档编号:13316305 上传时间:2023-06-13 格式:DOCX 页数:29 大小:49.31KB
下载 相关 举报
LINDOLINGO.docx_第1页
第1页 / 共29页
LINDOLINGO.docx_第2页
第2页 / 共29页
LINDOLINGO.docx_第3页
第3页 / 共29页
LINDOLINGO.docx_第4页
第4页 / 共29页
LINDOLINGO.docx_第5页
第5页 / 共29页
LINDOLINGO.docx_第6页
第6页 / 共29页
LINDOLINGO.docx_第7页
第7页 / 共29页
LINDOLINGO.docx_第8页
第8页 / 共29页
LINDOLINGO.docx_第9页
第9页 / 共29页
LINDOLINGO.docx_第10页
第10页 / 共29页
LINDOLINGO.docx_第11页
第11页 / 共29页
LINDOLINGO.docx_第12页
第12页 / 共29页
LINDOLINGO.docx_第13页
第13页 / 共29页
LINDOLINGO.docx_第14页
第14页 / 共29页
LINDOLINGO.docx_第15页
第15页 / 共29页
LINDOLINGO.docx_第16页
第16页 / 共29页
LINDOLINGO.docx_第17页
第17页 / 共29页
LINDOLINGO.docx_第18页
第18页 / 共29页
LINDOLINGO.docx_第19页
第19页 / 共29页
LINDOLINGO.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

LINDOLINGO.docx

《LINDOLINGO.docx》由会员分享,可在线阅读,更多相关《LINDOLINGO.docx(29页珍藏版)》请在冰点文库上搜索。

LINDOLINGO.docx

LINDOLINGO

数学软件:

LINDO、LINGO

 

一、            软件简介

  LINDO是一种专门用于求解数学规划问题的软件包。

由于LINDO执行速度很快、易于方便输入、求解和分析数学规划问题。

因此在数学、科研和工业界得到广泛应用。

LINDO主要用于解线性规划、非线性规划、二次规划和整数规划等问题。

也可以用于一些非线性和线性方程组的求解以及代数方程求根等。

LINDO中包含了一种建模语言和许多常用的数学函数(包括大量概论函数),可供使用者建立规划问题时调用。

 一般用LINDO(LinearInteractiveandDiscreteOptimizer)解决线性规划(LP—LinearProgramming)。

整数规划(IP—IntegerProgramming)问题。

其中LINDO6.1学生版至多可求解多达300个变量和150个约束的规划问题。

其正式版(标准版)则可求解的变量和约束在1量级以上。

LINGO则用于求解非线性规划(NLP—NON—LINEARPROGRAMMING)和二次规则(QP—QUARATICPROGRAMING)其中LINGO6.0学生版最多可版最多达300个变量和150个约束的规则问题,其标准版的求解能力亦再10^4量级以上。

虽然LINDO和LINGO不能直接求解目标规划问题,但用序贯式算法可分解成一个个LINDO和LINGO能解决的规划问题。

要学好用这两个软件最好的办法就是学习他们自带的HELP文件。

下面拟举数例以说明这两个软件的最基本用法。

(例子均选自张莹《运筹学基础》)

例1.(选自《运筹学基础》P54.汽油混合问题,线性规划问题)

一种汽油的特性可用两个指标描述:

其点火性用“辛烷数”描述,其挥发性用“蒸汽压力”描述。

某炼油厂有四种标准汽油,设其标号分别为1,2,3,4,其特性及库存量列于下表1中,将上述标准汽油适量混合,可得两种飞机汽油,某标号为1,2,这两种飞机汽油的性能指标及产量需求列于表2中。

问应如何根据库存情况适量混合各种标准汽油,使既满足飞机汽油的性能指标,而产量又为最高。

表1

标准汽油

辛烷数

蒸汽压力(g/cm^2)

库存量

107.5

7.11*10^(-2)

380000

93.0

11.38*10^(-2)

262200

87.0

5.69*10^(-2)

408100

108.0

28.45*10^(-2)

130100

(1g/cm^2=98Pa)

表2

飞机汽油

辛烷数

蒸汽压力(g/cm^2)

产量需求(L)

>=91

<=9.96*10^(-2)

越多越好

>=100

<=9.96*10^(-2)

>=250000

建模过程 略(详见《运筹学基础》P54—55)

目标函数:

maxz=x1+x2+x3+x4  

约束条件:

x5+x6+x7+x8>=250000

x1+x5<=380000

x2+x6<=265200

x3+x7<=408100

x4+x8<=130100

2.85x1-1.42x2+4.27x3-18.49x4>=0

2.85x5-1.42x6+4.27x7-18.49x8>=0

16.5x1+2.0x2-4.0x3+17x4>=0

7.5x5-7.0x6-13.0x7+8.0x8>=0

xj>=0(j=1,2...,8)

下面我们就用LINDO来解这一优化问题。

输入语句:

max(不区分大小写)x1+x2+x3+x4

ST(大写或写subjectto)

x5+x6+x7+x8>=250000

x1+x5<=380000

x2+x6<=265200

x3+x7<=408100

x4+x8<=130100

2.85x1-1.42x2+4.27x3-18.49x4>=0

2.85x5-1.42x6+4.27x7-18.49x8>=0

16.5x1+2.0x2-4.0x3+17x4>=0

7.5x5-7.0x6-13.0x7+8.0x8>=0

end

然后再按运算符键即可得结果。

LINDO是规定Xj非负的,我们可发现输入方式与我们的数学书写的形式基本一致,运算后,计算机会问您是否需要灵敏度分析,我们选择是,结果如下:

LPOPTIMUMFOUNDATSTEP     6

       OBJECTIVEFUNCTIONVALUE

       1)     933400.0

 VARIABLE       VALUE         REDUCEDCOST

       X1   161351.734375         0.000000

       X2   265200.000000         0.000000

       X3   408100.000000         0.000000

       X4    98748.265625         0.000000

       X5   218648.265625         0.000000

       X6        0.000000         0.000000

       X7        0.000000         0.000000

       X8    31351.734375         0.000000

      ROW  SLACKORSURPLUS    DUALPRICES

       2)        0.000000        -1.000000

       3)        0.000000         1.000000

       4)        0.000000         1.000000

       5)        0.000000         1.000000

       6)        0.000000         1.000000

       7)        0.000000         0.000000

       8)    43454.000000         0.000000

       9)  3239024.250000         0.000000

      10)  1890675.875000         0.000000

 NO.ITERATIONS=      6

 RANGESINWHICHTHEBASISISUNCHANGED:

                          OBJCOEFFICIENTRANGES

 VARIABLE        CURRENT       ALLOWABLE       ALLOWABLE

                  COEF         INCREASE        DECREASE

      X1       1.000000        0.000000        1.154137

      X2       1.000000        INFINITY        0.000000

      X3       1.000000        INFINITY        0.000000

      X4       1.000000        0.000000        0.000000

      X5       0.000000        1.154137        0.000000

      X6       0.000000        0.000000        INFINITY

      X7       0.000000        0.000000        INFINITY

      X8       0.000000        0.000000        0.000000

                          RIGHTHANDSIDERANGES

     ROW        CURRENT       ALLOWABLE       ALLOWABLE

                   RHS         INCREASE        DECREASE

       2  250000.000000   186222.062500   234752.984375

       3  380000.000000   234752.984375    15247.017578

       4  265200.000000    30601.410156   265200.000000

       5  408100.000000   156685.250000    10176.581055

       6  130100.000000     2350.135254    36184.207031

       7       0.000000    43454.000000   669046.000000

       8       0.000000    43454.000000        INFINITY

       9       0.000000  3239024.250000        INFINITY

      10       0.000000  1890675.875000        INFINITY

下面给出其结果的一般解释:

“LPOPTIMUMFOUNDATSTEP6”表示LINDO在(用单纯形法)6次迭代或旋转后得到最优解。

“OBJECTIVEFUNCTIONVALUE1)933400.0”表示最优目标值为933400。

“VALUE”给出最优解中各变量的值。

“SLACKORSURPLUS”给出松弛变量的值。

上例中SLK2=第二行松弛变量=0(模型第一行表示目标函数,所以第二行对应第一个约束)

“REDUCECOST”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时,目标函数的变化率,其中基变量的reducecost值应为0,对于非基变量Xj相应的reducecost值表示Xj增加一个单位(此时假定其他非基变量保持不变)时目标函数减小的量(max型问题)。

上例中:

X1对应的reducecost值为0,表示当X1=1时,目标函数值不变。

“DUALPRICE”(对偶价格)列出最优单纯形表中判别数所在行的松弛变量的系数,表示当对应约束有微小变动时,目标函数的变化率,输出结果中对应每一个约束有一个对偶价格。

若其数值为X,表示对应约束中不等式右端项若增加一个单位,目标函数将增加X个单位(max型问题)。

上例中:

第二行对应的对偶价格值应为-1表示当约束 2)X5+X6+X7+X8>250000变为 2)X5+X6+X7+X8>250001时,

目标函数值=933400-1=933399

当REDUCECOST或DUALPRICE 的值为0。

表示当微小扰动不影响目标函数。

有时,通过分析DUALPRICE,也可对产生不可行问题的原因有所了解。

灵敏度分析:

如果做敏感性分析,则系统报告当目标函数的费用系数和约束右端项在什么范围变化(此时假定其他系数保持不变)时,最优基保持不变。

报告中INFINITY表示正无穷,如上例:

目标函数中X1的变量系数为1,当它在[1-1.154137,1-0]=

  [-0.154137,1]变化时,最优基保持不变。

第一个约束右端项为250000,当它在[250000-234752.984375,250000+186222.0625]=[15247.015625,436222.0625]范围变化时,最优基保持不变。

当您要判断表达式输入是否有错误时,也可以使用菜单“Reports“的”Picture“选项。

若想获得灵敏度分析,可用“Reports“的”Rang“选项。

若需显示单纯形表,可执行“Reports“的”Tablean“选项。

注意事项:

1)目标函数及各约束条件之间一定要有“Subjectto(ST)”分开。

2)变量名不能超过8个字符。

3)变量与其系数间可以有空格,单不能有任何运算符号(如乘号“*”等)。

4)要输入<=或>=约束,相应以<或>代替即可。

5)一般LINDO中不能接受括号“()“和逗号“,“,例:

400(X1+X2)需写成400X1+400X2;10,000需写成10000。

6)表达式应当已经过简化。

不能出现2X1+3X2-4X1,而应写成-2X1+3X2。

例2.(选自《运》P94习题2.4;整数规则)

有四个工人,要分别指派他们完成四项不同的工作,每个人做各项工作所消耗的时间如表。

问应该如何指派,才能使总的消耗时间为最小?

  工作

所耗

时间

工人

  A

     B

     C

     D

     甲

   15

   18

   21

   24

     乙

   19

   23

   22

   18

     丙

   26

   17

   16

   19

     丁

   19

   21

   23

   17

这是一道典型的整数规则问题。

我们记派第I去做工作记为Xij

注意到每人只能做一项工作。

每项工作一人做。

我们得到目标函数为约束条件:

 min15x11+19x21+26x31+19x41+18x12+23x22+17x32+21x42+24x13+22x23+16x33+23x43+24x14+18x24+19x34+17x44

ST

x11+x12+x13+x14=1

x21+x22+x23+x24=1

x31+x32+x33+x34=1

x41+x42+x43+x44=1

x11+x21+x31+x41=1

x12+x22+x32+x42=1

x13+x23+x33+x43=1

x14+x24+x34+x44=1

end

int16

运行后我们可得到最优目标值为70

当   ,其余为0时。

(具体的Reports我们略去)

在用LINDO解整数规划(IP)问题时,只要在END后加上标识即可,其中解0/1规划的用命令。

INTname或INTn(n指前n个变量标识为0/1型)解混合型整数规划则用GIN来标识。

LINDO解整数规划对变量的限制为50个。

(指LINDO6.1学生版)。

所以说,尽管LINDO对整数规划问题是很有威力。

要有效地使用还是需要一定技术的。

这是因为,人们很容易将一个本质上很简单的问题列成一个输入模型。

从而有可能会导致一个冗长的分支定界计算。

例3         用LINDO解目标规划

由于LINDO不能直接求解目标规划问题,这是否就意味着LINDO失去了效力呢?

不是的。

由求解目标规划问题的有效算法——序贯式算法可知其实目标规划我们常采取分解成前面二种办法而已。

例如算:

mina=((d1_+d1),(2d2+d3))

G1:

x1-10x2+d1_-d1=50

G2:

3x1+5x2+d2_-d2=20

G3:

8x1+6x2+d3_-d3=100

xi(i=1,2),dj_,dj(j=1,2,3)>=0

先求目标函数的最优值

mind1_+d1

ST

x1-10x2+d1_-d1=50

3x1+5x2+d2_-d2=20

end

求得D1_+D1的最优值为0

然后再求

min2d2+d3

ST

x1-10x2+d1_-d1=50

3x1+5x2+d2_-d2=20

8x1+6x2+d3_-d3=100

d1_+d1=0

end

即可算得第二级最优值2d2+d3

例4         LINDO虽亦可求解二次规划问题。

(但我认为它在输入对不如用LINGO方便,用LINDO输入时要先作偏导数计算不如LINGO哪样可直接输入。

(选自《运筹学基础》P190.习题4.10

minf(x)=(x1-1)^2+(x2-2)^2

x2-x1=1

x1+x2<=2

x1>=0,x2>=0

先来说一说如何使用LINGO

一般来说LINGO多用于解决大规模数学规划。

用时要注意以下几点:

(1)每条语句后必须使用分号“;”结束。

问题模型必须由MODEL命令开始,END结束。

(2)用MODEL命令来作为输入问题模型的开始,格式为MODEL:

statement(语句)。

(3)目标函数必须由“min=”或“max=”开头。

则上面的例子的输入就为

Model:

min=(x1-1)^2+(x2-2)^2

x2-1=1;

x1+x2<=2;

end

我们即可得到最优值0.5。

当X1=0.5,X2=1.5,及灵敏度分析。

我们还可得作图分析。

对于大规模规划求解请参见LINGO的HELP文件。

二、用LINDO求解线性规划(LP)问题

2.1初试LINDO

LINDO的求解机制:

LINDO的求解过程采用单纯形法,一般是首先寻求一个可行解,在有可行解情况下再寻求最优解.用LINDO求解一个LP问题会得到如下的几种结果:

不可行(Nofeasiblesolution)或可行(Feasible)

可行时又可分为:

有最优解(OptimalSolution)和解无界(UnboundedSolution)两种情况.由于在实际问题中,不太可能出现最大利润无上限的情形,所以使用者应检查是否少了一个约束或有其它印刷错误.

在LINDO子目录下执行LINDO.EXE文件即可进入LINDO工作环境,其屏幕显示如下:

LINDO/PC5.02(4MAR92)

STUDENTVERSION.FOREDUCATIONALUSEONLY.

SINGLEUSERLICENSEFOREDUCATIONALUSEONLY

DISTRIBUTEDWITHTEXTBOOKSBYWADSWORTHPUBLISHING

:

“:

”为LINDO提示符,在其之后,使用者即可用具体的命令来输入并求解优化问题。

让我们来解如下LP问题:

由于LINDO中已假设所有的变量都是非负的,所以非负约束可不必再输入到计算机中;LINDO也不区分变量中的大小写字符(实际上任何小写字符将被转换为大写字符);约束条件中的“<=”及“>=”可用“<”及“>”代替。

上面问题用键盘输入如下:

:

MAX2x+3Y

?

ST

?

4X+3Y<10

?

3x+5Y<12

?

END

:

LINDO中一般称上面这种问题实例(INSTANCE)为模型(MODEL)。

以后涉及该模型时,目标函数为第一行,两个约束条件分别为第二、三行。

直接键入运行(GO)命令就可得到解答,屏幕显示如下:

:

GO

LPOPTIMUMFOUNDATSTEP2

OBJECTIVEFUNCTIONVALUE

1)7.4545450

VARIABLEVALUEREDUCEDCOST

X1.272727.000000

Y1.636364.000000

ROWSLACKORSURPLUSDUALPRICES

2).000000.090909

3).000000.545455

NO.ITERATIONS=2

DORANGE(SENSITIVITY)ANALYSIS?

N

计算结果表明:

“LPOPTIMUMFOUNDATSTEP2”表示单纯形法在两次迭代(旋转)后得到最优解。

“OBJECTIVEFUNCTIONVALUE1)7.4545450”表示最优目标值为7.4545450.

“VALUE”给出最优解中各变量(VARIABLE)的值:

X=1.272727,Y=1.636364.

“REDUCEDCOST”给出最优单纯形表中第0行中变量的系数(max型问题).其中基变量的reducedcost值应为0,对于非基变量,相应的reducedcost值表示当该非基变量增加一个单位时目标函数减少的量。

本例中此值均为0。

“SLACKORSURPLUS”给出松驰变量的值:

第2、3行松驰变量均为0,说明对于最优解来讲,两个约束(第2、3行)均取等号。

“DUALPRICES”给出对偶价格的值:

第2、3行对偶价格分别为.090909,.545455。

“NO.ITERATIONS=2”表示用单纯形法进行了两次迭代(旋转)。

一个问题解答之后,LINDO会询问是否需要做灵敏性分析(DORANGE(SENSITIVITY)ANALYSIS?

)如果你不需要,你应回答“N”(NO),回到提示符“:

”之下.

如果想重新看到刚才的模型,可键入LOOK命令,LINDO会询问具体的行号.典型的应答可以是3,或1-2,或ALL,而结果,相应地会显示出第3行,第1-2行,或所有问题行.

:

LOOK

ROW:

3

3)3X+5Y<=12

:

:

LOOKall

MAX2x+3Y

SUBJECTTO

2)4X+3Y<=10

3)3X+5Y<=12

END

:

如果想修改问题,可键入ALTER命令,LINDO会询问行号,变量名,及新的系数.例如:

如果要将上面问题中约束条件

改为

,再全部看一下,并求解新问题,那么键入ALTER命令后相应的应答为2,X,和6,以下是演示过程:

ALTER

ROW:

2

VAR:

X

NEWCOEFFICIENT:

6

:

LOOKALL

MAX2X+3Y

SUBJECTTO

2)6X+3Y<=10

3)3X+5Y<=12

END

:

go

LPOPTIMUMFOUNDATSTEP0

OBJECTIVEFUNCTIONVALUE

1)7.3333330

VARIABLEVALUEREDUCEDCOST

X.666667.000000

Y2.000000.000000

ROWSLACKORSURPLUSDUALPRICES

2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2