LINDO软件求线性规划整数规划和01规划.docx

上传人:b****2 文档编号:2346937 上传时间:2023-05-03 格式:DOCX 页数:28 大小:482.66KB
下载 相关 举报
LINDO软件求线性规划整数规划和01规划.docx_第1页
第1页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第2页
第2页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第3页
第3页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第4页
第4页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第5页
第5页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第6页
第6页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第7页
第7页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第8页
第8页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第9页
第9页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第10页
第10页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第11页
第11页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第12页
第12页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第13页
第13页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第14页
第14页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第15页
第15页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第16页
第16页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第17页
第17页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第18页
第18页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第19页
第19页 / 共28页
LINDO软件求线性规划整数规划和01规划.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

LINDO软件求线性规划整数规划和01规划.docx

《LINDO软件求线性规划整数规划和01规划.docx》由会员分享,可在线阅读,更多相关《LINDO软件求线性规划整数规划和01规划.docx(28页珍藏版)》请在冰点文库上搜索。

LINDO软件求线性规划整数规划和01规划.docx

LINDO软件求线性规划整数规划和01规划

LINDO软件简介/求解线性规划问题

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

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

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

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

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

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

 一般用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非负的,我们可发现输入方式与我们的数学书写的形式基本一致,运算后,计算机会问您是否需要灵敏度分析,我们选择“是”,结果如下:

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

“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。

LINDO常用命令注释表

(6.1版是面对用户的窗口,只需在窗口菜单上找到相应的操作菜单后单击即可,当然,后面的命令注释是有助于了解常用操作的命令菜单的。

LINDO软件包可以用来求解以自然格式输入的线性规划,整数规划及二次规划问题.下面即是一个常见问题的有效输入格式:

MAX2X+3Y

ST

4X+5Y<9

7X+6Y<13

END

GO

进入LINDO后,屏幕上出现":

",表示进入可接受命令的状态.此时键入LINDO的有效命令即可执行.

需要时,可键入"COMMANDS"即可得到LINDO的所有有效命令.如需得到其中某个命令的帮助信息,可键入"HELPname",其中"name"为该命令名.例如,初学者通过键入"HELPMAX"可以了解怎样输入一个LP问题的数学表达式,.

如要结束一个临时的问题输入,只需键入"END"或一个回车符,即可回到命令状态模式":

".欲知某命令的具体功效,执行该命令即可.

可求解的问题规模:

输入项最大规模

---------------------------------------------------------------------------

非零元4000

列201

行101

整型变量200

变量(行)名字符数8

LINDO命令类型目录.欲知某个具体命令的功能,键入"HELP"+"命令名".

1)信息类命令

HELPCOMLOCALCATTIME

2)输入类命令

MAXMINRETRRMPSTAKELEAVRDBCFBR

3)演示类命令

PICTABLLOOKNONZSHOCSOLURANGEBPICCPRIRPRI

4)文件输出类命令

SAVEDIVERVRTSMPSSDBCFBS

5)问题求解类命令

GOPIV

6)编辑类命令

ALTEXTDELSUBAPPCSLBFREEEDIT

7)退出命令

QUIT

8)与整数,二次型,及参数规划相关的命令

INTQCPPARAPOSDTITANBIPGINIPTOL

9)交互式参数命令

WIDTHTERSVERBBATPAGEPAUS

10)使用者应用程序

USER

11)其它

INVSTATBUGDEBSETTITL

*****************************************************************LINDO命令中文注释如下(按分类序):

1)INFORMATION

HELPCOMLOCALCATTIME

HELP命令:

键入"HELP"会显示出LINDO的一般信息.通过键入"HELPcommand",LINDO可帮你了解某个具体的命令,其中"command"是命令名.

COMMAND命令:

给出LINDO命令类型目录.

LOCAL命令:

给出该程序的版本信息.

CATEGORY命令:

列出LINDO命令类型,并可按提示有选择地给出某类型下的所有命令.

TIME命令:

显示执行LINDO后累计的CPU时间.

2)INPUT

MAXMINRETRRMPSTAKELEAVRDBCFBR

MAX/MIN命令:

用于输入一个包含目标函数,约束条件在内的LP模型.

输入程序如下:

输入"MAX"(或"MIN"),继之以自然格式的目标函数作为第一行;再输入"SUBJECTTO"(可简写为"ST"),后面跟约束条件行.最后,输入"END"回到命令状态模式.以后只需给出"GO"命令即可开始优化求解过程.

其中,变量名可以由1—8个字母或数字型的字符构成,且第一个字符必须是字母.变量系数不能是指数型,例如:

.258E+29形式的系数是不允许的.任一系数位数为6.5DIGITS.关键词("MAX","ST","END"...)及各行之间必须用一个或多个空格分隔开.空格可以出现在一行之中,但不能出现在变量名中.一个回车符等价于一个空格.

下面是同一问题的两种合法的输入方式:

1)MIN2X+3YSUBJECTTO-5X-2Z<=10

+10X-Y>5END

2)MIN2X+3Y

ST-5X-2Z

<10

10X-Y>+5

END

另外,任一约束可自由选择一个名称来代替行号,例如:

:

DEMAND)10X-Y>5

RETRIEVE命令:

执行该命令可直接从硬盘上获得一个问题模型.LINDO会为你提示可供选择的具体的文件名或UNITNUMBER.能被RETRIEVE的模型文件必须是以前经"SAVE"命令存入的.

RMPS命令:

转化一个MPS格式文件,形成问题输入.该MPS格式请见IBMMPSX手册

TAKE命令:

用该命令可执行由一系列LINDO命令组成的文件.该文件内容只能同终端输入一致,例如:

文件中不能有行号.且文件中最后一个命令应为"LEAVE".

LEAVE命令:

该命令表示结束一个"TAKE"文件的输入.任一TAKE文件中的最后一个命令必须是”LEAVE”.

RDBC命令:

给出当前模型的一个初始解.该解是以前由"SDBC"命令存入的.

FBR命令:

从一个由FBS命令建立的文件中得到一个(可行)基.一个与该(可行)基匹配的数学问题表达式必须是内存中已有的.

3)DISPLAY

PICTABLLOOKNONZSHOCSOLURANGEBPIC

CPRIRPRI

PICTURE命令:

给出一个LP问题中系数矩阵的简图.该命令有助于DEBUG一个模型.下面是图中对应字母代表的数字大小:

Z.000000--.000001

Y.000001--.000009

X.000010--.000099

W.000100--.000999

V.001000--.009999

U.010000--.099999

T100000--.999999

A1.000001--10.000000

B10.000001--100.000000

C100.000001--1000.000000

D1000.000001--10000.000000

E10000.000001--100000.000000

F100000.000001--1000000.000000

G>1000000

TABLEAU命令:

显示当前单纯形表中的系数.

LOOK命令:

可用"LOOK"查看当前问题模型的全部或部分.键入"LOOKALL"可看全部问题模型.键入"LOOKrow1,row2"可看行row1至行row2.

模型中系数只能有5个小数位,最多有9位整数.任何更大的数只能显示为*****.

NONZEROES命令:

显示一个小型的解报告,其中只有非零的变量及相应的行.注意:

"NONZ"命令并不能求解问题,所以需首先执行"GO"命令,且"NONZ"只有在设置了"TERSE"交互型模式后才能显示其作用.

SHOCOLUMN命令:

键入"SHOCvariable-name"可显示出变量variable-name的系数列.

SOLUTION命令:

显示解的标准报告.若要存到硬盘上,请见"DIVERT"命令.若需要更简明的解报告,请见"NONZ","CPRI"及"RPRI"命令.

RANGE命令:

显示关于RHS(右端项)及OBJ(目标函数)的范围报告.

BPICTURE命令:

按上一次转置/三角化的行序显示当前(可行)基的逻辑图.

4)OUTPUT

SAVEDIVERVRTSMPSSDBCFBS

CPRI/RPRI命令:

可有选择地显示列(用CPRI)或行(用RPRI)的有关信息.CPRI的命令格式如下:

CPRIprint-list:

conditional-expression

例如,执行

CPRINP:

N="M%%X".AND.D>0

将显示满足一定条件的列的名称及原始值(PRIMALVALUE),其条件为:

列名的第一个字符=M,第四个字符=X,且有一对偶(DUALACTIVITY)大于零.

如果"print-list"一项被省略了,将只显示匹配的数目.下面是print-list及conditional-expression中有关列/行特征的常用符号及意义:

N=NAME(名称)

P=PRIMALVALUE(相当于行的松驰量)

D=DUALVALUE(相当于列的REDUCEDCOST)

R=RIM(OBJ(目标函数),列系数;行的RHS(右端项))

U=SIMPLEUPPERBOUND(上界),L=SIMPLELOWERBOUND(下界)

T=键("C","I",or"F";"<","=",OR">")

Z=一列或一行中的非零元.

%=名称(N)中的不确定字符

其它一些有用的符号有:

算术运算符逻辑运算符关系运算符顺序运算符

+-/*^.AND.><=#()

LOG()EXP().OR.

ABS().NOT.

SAVE命令:

将当前的问题模型用压缩的LINDO格式存储到一个文件中.该问题模型可由"RETR"命令重新提取.

DIVERT命令:

要求你提供一个文件名,随后所有的结果输出(如解集报告等),将转至该文件中,直至你给出一个RVRT(REVERT)命令为止.

RVRT命令:

重新使以后的所有结果输出都回到终端.该命令的作用与"DIVERT"命令相反.

SMPS命令:

将当前的问题模型用MPS格式存储到文件中.细节参看IBMMPSX手册.

SDBC命令:

用DATABASE格式存储一列.变量名称,大小,REDUCEDCOST,上界SUB和下界SLB都以(A8,2G15.8,A1,2G15.8)格式存储.

FBS命令:

将当前的(可行)基存入一个文件.若重新提取,可参见FBR命令.

5)SOLUTION

GOPIV

GO命令:

求解当前的问题模型.该模型在求解过程中不会被改变.若在GO之后有一正整数,表示用单纯形法枢变(PIVOT)的次数.

PIVOT命令:

演示单纯形方法的每一步(PIVOTSTEP).如果键入"PIVOT"+变量名,则该变量会被输入到解中,同时会输出该变量所在的行号.

6)PROBLEMEDITING

ALTEXTDELSUBAPPCSLBFREEEDIT

ALTER命令:

用"ALTER"可编辑当前的问题模型.使用格式为:

"ALTERrow-idvar-id"."row-id"是需要改动的行的行号,"var-id"是需要改动的变量系数的变量名.随后,LINDO会提示你输入一个新的值.如果想改动RHS(右端项),DIRECTION(不等号方向)或某个行的名称,"var-id"一项可用"RHS","DIR",或"NAME".

注:

-对目标函数而言,有效的DIRECTIONS有"MAX"或

"MIN";对所有其它行可用"<","=",或"<".

-请用"DELETE"命令,而勿用"ALTER"来消去一行.

EXTEND命令:

可为一个以前定义的问题模型增添约束行.输入新的行,不要再键入"MAX","MIN"或"SUBJECTTO"这样的关键词.新的行将会被附在原问题模型的最后.键入"END"以结束.

DELETE命令:

键入"DELETErow-id"可从当前的问题模型中消除行"row-id".也可键入"DELETErow1row2"消去行row1至行row2."DELETEALL"可用来清除当前的整个问题模型.

SUB命令:

键入"SUBvar-idbound"可以输入或改变一个变量的上界,其中"var-id"是变量名,而"bound"是作为上界的具体数值.对大问题而言,SUB用于表示象X<10这样的约束是比较有效的.

APPENDCOLUMN命令:

键入"APPCvar-id"可为问题模型添加以"var-id"命名的新的一列.随后是关于该对应变量出现的行/系数值.每行有一对行/系数值;行和系数值要用一个空格分开.输入A0作为行名可结束.若以"RHS"为列名,将使输入成为新的RHS(右端项).

SLB命令:

键入"SLBvar-idbound"可以输入或改变一个变量的下界,其中"var-id"是变量名,而"bound"是作为下界的具体数值.对大问题而言,SUB用于表示象X>10这样的约束是比较有效的.

FREE命令:

键入:

FREEX可使当前数学表达式中的X成为一个自由变量,既无上界亦无下界.

EDIT命令:

LINDO转为全屏幕编辑状态.光标可游动于问题模型中.其它有用的编辑设置包括:

光标移动到正文开始处

光标移动到正文结尾处

/翻页

Cntrl-S光标移动到当前行的开始

Cntrl-E光标移动到当前行的结尾

Cntrl-rightarrow光标移动到当前词的结尾

Cntrl-leftarrow光标移动到当前词的开始

用EDIT命令编辑的问题模型不能超过30998个字符.问题若更大可用ALTER,DEL和EXTEND命令.

7)QUIT

QUIT

QUIT命令:

"QUIT"用于退出LINDO.任何未存储下来的问题模型会被丢失!

8)INTEGER,QUADRATIC,ANDPARAMETRICPROGRAMS

INTQCPPARAPOSDTITANBIPGINIPTOL

INTEGER命令:

INTEGER命令可将问题模型中的变量标为0/1型.第一种格式为"INTEGERn",其中n是整型变量的个数.LINDO要求整型变量应放在问题模型的最前面.第二种格式为"INTEGERvar-id",其中"var-id"是变量名.

执行GO命令后,将会显示一系列渐优的整数规划解.

QCP命令:

"QCP"用于求解二次规划问题.例如:

对于

MIN3X*X+Y*Y-X*Y+.4Y

ST

1.2X+.9Y>1.1

X+Y=1

Y<.7

该问题通过在实际约束前增加有关变量的一阶条件转化为线性(互补)型.这需

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

当前位置:首页 > 医药卫生 > 基础医学

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

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