LINDO软件包学生版 使用手册.docx

上传人:b****5 文档编号:7497605 上传时间:2023-01-24 格式:DOCX 页数:41 大小:54.26KB
下载 相关 举报
LINDO软件包学生版 使用手册.docx_第1页
第1页 / 共41页
LINDO软件包学生版 使用手册.docx_第2页
第2页 / 共41页
LINDO软件包学生版 使用手册.docx_第3页
第3页 / 共41页
LINDO软件包学生版 使用手册.docx_第4页
第4页 / 共41页
LINDO软件包学生版 使用手册.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

LINDO软件包学生版 使用手册.docx

《LINDO软件包学生版 使用手册.docx》由会员分享,可在线阅读,更多相关《LINDO软件包学生版 使用手册.docx(41页珍藏版)》请在冰豆网上搜索。

LINDO软件包学生版 使用手册.docx

LINDO软件包学生版使用手册

LINDO软件包(学生版)使用手册

目录

第一节简介与安装

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

第三节用LINDO求解整数规划(IP)和二次规划(QP)问题

第四节GINO简介

第五节LINGO简介

 

1997年8月

第一节简介与安装

1·1简介

本文主要面向大中专学生,研究生,及掌握一定的高等代数知识的读者,介绍LINDO软件包(学生版)的基本使用方法。

该软件包(学生版)主要功能在于帮助使用者较快地输入一个优化问题的式子,求解并分析该优化问题,然后可做些较小的改动,并重复上述的过程.

该软件包(学生版)在微机上DOS环境下运行。

其使用界面不是图形式的,而是字符式的;不是菜单式的,而是面向具体的命令(Command).它有许多的命令,每一个命令都可随时执行,由系统检查该命令是否在上下文中起作用.它采用一种对用户友好的交互使用方式,包括了所有的使用过程指导.基于使用的具体情况,它会向使用者询问下一步将做什么,或等待使用者输入下一个命令.

LINDO软件包(学生版)包括LINDO,GINO,LINGO和LINGONL(LINGO2)等优化软件的学生版以及相应的例子文件。

由于LINDO程序执行速度很快,易于方便地输入、求解和分析优化问题,LINDO在教学、科研和工业界得到广泛应用。

这里用LINDO软件包作为LINDO,GINO,LINGO和LINGONL等的统称,包含五种组件,下面分别介绍如下:

(1)LINDO是LinearINteractiveandDiscreteOptimizer字首的缩写形式,是由LinusSchrage于1986年开发的优化计算软件包,可以用来求解线性规划(LP----LinearProgramming),整数规划(IP----IntegerProgramming)和二次规划(QP----QuadraticProgramming)问题.LINDO易于规划问题的输入、求解和分析,程序执行速度很快。

LINDO学生版最多可求解多达200个变量和100个约束的规划问题。

(2)GINO可用于求解非线性规划(NLP----NonlinearLinearProgramming)问题,求解线性和非线性方程组和不等式组,以及代数方程求根。

GINO中包含了有关财务、概率等方面的函数和三角函数,以及各种一般的数学函数,可供使用者建立问题模型时调用。

GINO学生版最多可求解多达50个变量和30个约束的问题。

(3)LINGO可用于求解线性规划和整数规划问题。

(4)LINGONL(LINGO2)可用于求解线性、非线性和整数规划问题。

与LINDO和GINO不同的是,LINGO和LINGONL(LINGO2)包含了内置的建模语言,允许以简练、直观的方式描述所需求解的问题,模型中所需的数据可以以一定格式保存在列表(List)和表格(Table)中,也可以保存在独立的文件中。

LINGO和LINGONL(LINGO2)学生版最多可求解多达200个变量和100个约束的问题。

(5)例子文件:

在软件包中还含有例子文件,其中有些例子文件与各软件在一起,但大多数例子文件一般安装在例子目录。

例子目录下的例子文件是以LUTOS1-2-3的WK1格式存储的(也可用MS-OFFICE工具的EXCEL软件读写)。

1·2安装过程:

LINDO软件包(学生版)在微机上DOS环境下通过安装后运行。

安装盘为一片三英寸软盘,安装盘上有安装程序(install.exe)和简要介绍文本(read.me),还带有多个压缩文件和一个解压缩程序(lha.exe).

安装时,将安装盘直接插入软驱,然后运行该软盘上的安装程序,即在该软驱的提示符(如A:

>或B:

>)下键入“install”。

按“回车”(ENTER键)后,只需遵照屏幕上的提示即可完成整个安装过程:

(1)用户首先必须选择所需安装的内容:

用户可以任意选择所需安装的内容(从1·1节所介绍的五种组件中任意选取)。

如果想安装五种组件中的某个组件,就在它前面键入“Y”;否则键入“N”,然后“回车”。

如此反复,完成后屏幕将提示您确认您的选择。

(2)用户必须选择所需安装到的目的地(一般是硬盘上的某个目录)。

屏幕将提示缺省的目录,您可以任意修改,如此反复,完成后屏幕将提示您确认您的选择。

(3)确认您的选择之后,安装程序就会自动完成全部后续安装过程。

安装过程结束后,您就可以进入安装好的目录,运行相应的优化软件了。

第二节用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).000000.047619

3).000000.571429

NO.ITERATIONS=0

DORANGE(SENSITIVITY)ANALYSIS?

?

N

:

QUIT

最后键入退出(QUIT)命令,即可退出LINDO工作环境。

注:

输入、查看和修改一个LP模型更方便的方法是采用全屏幕编辑器。

在“:

”提示符下键入编辑(EDIT)命令可以进入全屏幕编辑器,可以和其他文本编辑器一样方便使用。

2·2求解LP问题的一般步骤及例子

步骤:

1)首先是输入一个LP问题。

为了检查有无错误,可用LOOK命令来显示问题式中的一行,几行或全部。

例如:

LOOK3---》屏幕显示第3行

LOOK1-3---》显示第1-3行

LOOKALL---》显示整个模型

2)修正模型。

如果需要对问题中某变量系数进行修正,可用ALTER命令。

此时,在LINDO的提示下需输入相应的变量所在的行号,变量名,及新的系数值。

此外下面两种情况也可用ALTER命令:

改动约束条件的右端顶,可以将RHS(即right-handside)做为变量名。

改变约束条件中的不等号方向(如<或>),可以将DIR做为变量名。

修改问题还可用EXT命令(增加新的约束行),DEL命令(去掉一行),和APPC命令(增加一个新的变量),也可用EDIT编辑器。

3)存储模型

如果输入的问题模型已经不再需要改动,可用SAVE命令将它存入文件中。

(此时LINDO会提示你输入一个文件名。

)日后如需用到该问题可用RETR命令提取。

4)键入GO命令可得到LP问题的最优解。

如果想将计算结果直接输出到某文件中,可在GO命令前先使用DIVERT命令,LINDO会提示你键入该输出文件的文件名,此后键入GO命令,屏幕上只会显示最优的目标函数值,其它结果都将存入输出文件。

GO命令执行后,LINDO会问你是否做敏感性分析,可看需要键入“Y”(YES)或“N”(NO).如果没什么错误,求解就结束了。

可键入QUIT退出。

LINDO中有下面三种命令可帮助使用者对LINDO的命令有更多的了解:

HELP:

若HELP后面跟有具体命令,则解释该命令.若单只一个HELP,将会给出一般性的信息.

CATEGORIES(可简写为CAT):

只列出所有命令的类型目录,随后可允许使用者有选择地列出某个具体类型中的所有命令.

COMMANDS(简写为COM)COM:

按类型列出所有有效的命令,例如输入(INPUT)型命令,输出(OUTPUT)型命令,等等.

下面即是一个具体应用的例子:

(可参照上述使用步骤)

首先输入问题:

(或用命令RETR读取LINDO目录下的例子文件DAKOTA)

MAX60DESKS+30TABLES+20CHAIRS

SUBJECTTO

2)8DESKS+6TABLES+CHAIRS<=48

3)4DESKS+2TABLES+1.5CHAIRS<=20

4)2DESKS+1.5TABLES+0.5CHAIRS<=8

5)TABLES<=5

END

问题求解

:

GO

LPOPTIMUMFOUNDATSTEP2

OBJECTIVEFUNCTIONVALUE

1)280.00000

VARIABLEVALUEREDUCEDCOST

DESKS2.000000.000000

TABLES.0000005.000000

CHAIRS8.000000.000000

ROWSLACKORSURPLUSDUALPRICES

2)24.000000.000000

3).00000010.000000

4).00000010.000000

5)5.000000.000000

NO.ITERATIONS=2

DORANGE(SENSITIVITY)ANALYSIS?

?

随后键入"Y"表示同意做敏感性分析:

RANGESINWHICHTHEBASISISUNCHANGED:

OBJCOEFFICIENTRANGES

VARIABLECURRENTALLOWABLEALLOWABLE

COEFINCREASEDECREASE

DESKS60.00000020.0000004.000000

TABLES30.0000005.000000INFINITY

CHAIRS20.0000002.5000005.000000

RIGHTHANDSIDERANGES

ROWCURRENTALLOWABLEALLOWABLE

RHSINCREASEDECREASE

248.000000INFINITY24.000000

320.0000004.0000004.000000

48.0000002.0000001.333333

55.000000INFINITY5.000000

2·3计算结果显示及敏感性分析

仍以上面的问题DAKOTA为例,下面给出其结果的一般注释:

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

“OBJECTIVEFUNCTIONVALUE280.000000“表示最优目标值为280.

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

例.Dakota问题中需造2个(书桌)desks,0个(桌子)tables,和8个(椅子)chairs.

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

上例中:

s1=第2行松驰变量=24

s2=第3行松驰变量=0

s3=第4行松驰变量=0

s4=第5行松驰变量=5

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

另外,当你执行TABLEAU命令后,LINDO会显示单纯形表。

在下表中我们可看到,基向量为BV={s1,Chairs,DESKS,s4},注意,在此例中,SLK5对应的是s4.ART是人工变量(artificialvariable)。

ART就是相应的目标值z;这样z+5TABLES+10s2+10s3=280。

TABLEAU

THETABLEAU

ROW(BASIS)DESKSTABLESCHAIRSSLK2SLK3

1ART.0005.000.000.00010.000

2SLK2.000-2.000.0001.0002.000

3CHAIRS.000-2.0001.000.0002.000

4DESKS1.0001.250.000.000-.500

5SLK5.0001.000.000.000.000

ROWSLK4SLK5

110.000.000280.000

2-8.000.00024.000

3-4.000.0008.000

41.500.0002.000

5.0001.0005.000

敏感性分析

使用LINDO时,结果输出中会提供敏感性分析.这一信息一般包含于两个标题之下,其一是REDUCEDCOSTS,另一个是DUALPRICES.它们分别表示了当变量或约束条件有微小变动时,目标函数的变化率.

在输出结果中对应于每个变量都有一个REDUCEDCOST,若其数值为x,表示对应的变量为零时,若增加1个单位,目标函数将减少x个单位.

输出结果中对应于每一个约束也都有一个DUALPRICE.若其数值为x,表示对应约束中不等式右端项若减少1个单位,目标函数将增加x个单位.

如果REDUCEDCOST或DUALPRICE的值为0,表示微小扰动不影响目标函数.

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

2·4注意事项:

1).进入LINDO后,":

"表示LINDO已准备接受一个命令.

2).LINDO中已假定所有变量非负.变量名不能超过8个字符。

3)如要输入<=或>=型约束,相应以<或>代替即可.

4).LINDO不允许变量出现在一个约束条件的右端.

5)目标函数及各约束条件之间一定要有空格分开.

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

400(X1+X2)需写为400X1+400X2;10,000需写为10000.

7).EDIT命令调用一个全屏幕编辑器,可对当前模型进行全屏幕编辑.编辑完成后用“Esc”键保存当前修改,退出全屏幕编辑器;此时若模型有错误,则要求改正错误后再退出。

用“Ctrl+Break”键废弃当前修改,退出全屏幕编辑器。

8).LINDO有DEL,EXT,及ALTER等其它编辑命令,虽然全屏幕编辑器EDIT使这些命令用处减少了,但DEL在大块地清除一个模型时是有用的,而ALTER可允许做全局性的替换.

9).LOOK命令会为你在屏幕上显示你的问题(EDIT也可如此).

10).如想获得敏感性分析可用RANGE命令.

11).SAVE命令用来存储一个问题模型到文件中,RETR或TAKE命令用来读取一个以文件存储的模型.TAKE命令还可用于解读一个以文本格式存储的LINGO格式的问题模型.

12).DIVERT会导致大多数信息被输送到文件中,而只有少量信息被传送到屏幕.RVRT用于结束DIVERET.如果你divert到一个名为PRN的文件,结果将被直接传到打印机.

13)LINDO文件中常有注释间杂于各命令(COMMANDS)之中,前面注有[!

]符号.例如:

!

Thisisacomment.

14)LINDO将目标函数所在行作为第一行,从第二行起为约束条件。

行号自动产生,也可以人为定义行号或行名。

行名和变量名一样,不能超过8个字符。

15)数值均衡化及其它考虑

LINDO不能将LP中的矩阵进行数值均衡化.为了避免数值问题,使用者应自己对矩阵的行列进行均衡化.一个原则是,系数矩阵中非零元的绝对值不能大于100,000或者小于.0001.如果LINDO觉得矩阵元素之间很不均衡,将会给出警告.

16)量纲分析与一般错误的避免

当你将一个实际问题写成一个数学表达式时,有可能式子中会带有某些错误.这些错误主要有以下几类:

1.简单的印刷错误

2.表达式的原理错误

3.近似误差

第一类错误虽只是抄写一类问题造成的,但当问题规模较大时,要搜寻它们也是一个困难的问题;第二类错误也往往是建模不当造成的.

如何避免这些错误?

对第一类错误,主要任务在于如何找到它们.在LINDO中有一些可帮助寻找错误的功能.其中之一就是PICTURE命令,它的功能是可以将表达式中的系数通过列表显示出来.

例:

MIN5A0+6A1+2A2+4B0+3B1+7B2+2C0+9C1+8C2

SUBJECTTO

2)A0+A1+A2<=8

3)B0+B1+B2<=9

4)A0+A1+A2<=6

5)A0+B0+CO=6

6)A1+B1+C1=5

7)A2+B2+C2=9

END

用PICTURE可得到

AAABBBCCCC

012012012O

1:

562437298MIN

2:

111<8

3:

111<9

4:

111<6

5:

111=6

6:

111=5

7:

111=9

从上表可以发现,最后一列中的1可能放错位置了.其实原因只不过在表达式5)行中C0与CO弄混了.

另外,使用者有时从不合理的计算结果中也可发现第1类的错误.

第二类的表达式错误有许多类.这类常由新手造成的问题可通过量纲分析(dimensionalanalysis)暴露出来.所谓量纲分析,就是检查一下表达式中各量的单位是否一致.

2.5LINDO命令

LINDO中有下面三种命令可帮助使用者对LINDO的命令有更多的了解:

HELPCATEGORIES(可简写为CAT)COMMA

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1