当前位置:文档之家› Lindo使用教程

Lindo使用教程

Lindo使用教程
Lindo使用教程

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

目录

第一节简介与安装

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

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

第五节LINGO简介

1997年8月

第一节简介与安装

1·1简介

本文主要面向大中专学生, 研究生, 及掌握一定的高等代数知识的读者,介绍LINDO软件包(学生版)的基本使用方法。该软件包(学生版)主要功能在于帮助使用者较快地输入一个优化问题的式子, 求解并分析该优化问题, 然后可做些较小的改动, 并重复上述的过程.

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

LINDO软件包(学生版)包括LINDO,GINO,LINGO和LINGO NL(LINGO2)等优化软件的学生版以及相应的例子文件。由于LINDO程序执行速度很快,易于方便地输入、求解和分析优化问题,LINDO在教学、科研和工业界得到广泛应用。这里用LINDO软件包作为LINDO,GINO,LINGO和LINGO NL等的统称,包含五种组件,下面分别介绍如下:

(1)LINDO是Linear INteractive and Discrete Optimizer字首的缩写形式,是由Linus Schrage 于1986年开发的优化计算软件包, 可以用来求解线性规划(LP----Linear Programming), 整数规划(IP----Integer Programming) 和二次规划(QP----Quadratic Programming) 问题. LINDO易于规划问题的输入、求解和分析,程序执行速度很快。LINDO学生版最多可求解多达200个变量和100个约束的规划问题。

(2)GINO可用于求解非线性规划(NLP----Nonlinear Linear Programming) 问题,求解线性和非线性方程组和不等式组,以及代数方程求根。GINO中包含了有关财务、概率等方面的函数和三角函数,以及各种一般的数学函数,可供使用者建立问题模型时调用。GINO 学生版最多可求解多达50个变量和30个约束的问题。

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

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

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

(5)例子文件:在软件包中还含有例子文件,其中有些例子文件与各软件在一起,但大多数例子文件一般安装在例子目录。例子目录下的例子文件是以LUTOS 1-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问题会得到如下的几种结果: 不可行(No feasible solution) 或可行(Feasible)

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

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

LINDO/PC 5.02 (4 MAR 92)

STUDENT VERSION. FOR EDUCATIONAL USE ONLY.

SINGLE USER LICENSE FOR EDUCATIONAL USE ONLY

DISTRIBUTED WITH TEXTBOOKS BY WADSWORTH PUBLISHING

:

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

Max z x y s t x y x y x y =++≤+≤≥234310

35120

..

,

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

: MAX 2x + 3Y ? ST

? 4X + 3Y < 10 ? 3x + 5Y < 12 ? END :

LINDO 中一般称上面这种问题实例(INSTANCE )为模型(MODEL )。以后涉及该模型时,目标函数为第一行,两个约束条件分别为第二、三行。直接键入运行(GO )命令就可得到解答, 屏幕显示如下:

:GO

LP OPTIMUM FOUND AT STEP 2

OBJECTIVE FUNCTION VALUE

1) 7.4545450

VARIABLE VALUE REDUCED COST X 1.272727 .000000 Y 1.636364 .000000

ROW SLACK OR SURPLUS DUAL PRICES 2) .000000 .090909 3) .000000 .545455

NO. ITERATIONS= 2

DO RANGE(SENSITIVITY) ANALYSIS? ? N :

计算结果表明:

“LP OPTIMUM FOUND AT STEP2”表示单纯形法在两次迭代(旋转)后得到最优解。 “OBJECTIVE FUNCTION VALUE 1) 7.4545450 ”表示最优目标值为7.4545450. “VALUE ”给出最优解中各变量(VARIABLE )的值: X =1.272727, Y =1.636364. “REDUCED COST ” 给出最优单纯形表中第0行中变量的系数 ( max 型问题). 其中基变量的reduced cost 值应为0,对于非基变量, 相应的 reduced cost 值表示当该非基变量增加一个单位时目标函数减少的量。本例中此值均为0。

“SLACK OR SURPLUS ” 给出松驰变量的值: 第2、3行松驰变量均为0, 说明对于最优解来讲,两个约束(第2、3行)均取等号。

“DUAL PRICES ” 给出对偶价格的值: 第2、3行对偶价格分别为 .090909,.545455。 “NO. ITERATIONS= 2” 表示用单纯形法进行了两次迭代(旋转)。

一个问题解答之后, LINDO 会询问是否需要做灵敏性分析(DO RANGE (SENSITIVITY) ANALYSIS? ) 如果你不需要,你应回答“N ”(NO ),回到提示符“:”之下.

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

: LOOK ROW: 3

3) 3 X + 5 Y <= 12 : 或

: LOOK all

MAX 2x + 3Y SUBJECT TO

2) 4 X + 3 Y <= 10 3) 3 X + 5 Y <= 12 END :

如果想修改问题,可键入 ALTER 命令, LINDO 会询问行号, 变量名, 及新的系数. 例如:如果要将上面问题中约束条件4310x y +≤改为6310x y +≤,再全部看一下,并求解新问题,那么键入ALTER 命令后相应的应答为 2,X,和6, 以下是演示过程:

:ALTER

ROW:

2

VAR:

X

NEW COEFFICIENT:

6

:LOOK ALL

MAX 2 X + 3 Y

SUBJECT TO

2) 6 X + 3 Y <= 10

3) 3 X + 5 Y <= 12

END

:go

LP OPTIMUM FOUND AT STEP 0

OBJECTIVE FUNCTION VALUE

1) 7.3333330

VARIABLE VALUE REDUCED COST

X .666667 .000000

Y 2.000000 .000000

ROW SLACK OR SURPLUS DUAL PRICES

2) .000000 .047619

3) .000000 .571429

NO. ITERATIONS= 0

DO RANGE(SENSITIVITY) ANALYSIS?

? N

: QUIT

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

注:输入、查看和修改一个LP模型更方便的方法是采用全屏幕编辑器。在“:”提示符下键入编辑(EDIT)命令可以进入全屏幕编辑器,可以和其他文本编辑器一样方便使用。

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

步骤:

1)首先是输入一个LP问题。为了检查有无错误,可用LOOK命令来显示问题式中的一行,几行或全部。

例如:LOOK 3 ---》屏幕显示第3行

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

LOOK ALL ---》显示整个模型

2)修正模型。

如果需要对问题中某变量系数进行修正,可用ALTER命令。此时,在LINDO的提示下需输入相应的变量所在的行号,变量名,及新的系数值。

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

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

改变约束条件中的不等号方向(如< 或>),可以将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)

MAX 60 DESKS + 30 TABLES + 20 CHAIRS

SUBJECT TO

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

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

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

5) TABLES <= 5

END

问题求解

:GO

LP OPTIMUM FOUND AT STEP 2

OBJECTIVE FUNCTION VALUE

1) 280.00000

VARIABLE VALUE REDUCED COST

DESKS 2.000000 .000000

TABLES .000000 5.000000

CHAIRS 8.000000 .000000

ROW SLACK OR SURPLUS DUAL PRICES

2) 24.000000 .000000

3) .000000 10.000000

4) .000000 10.000000

5) 5.000000 .000000

NO. ITERATIONS= 2

DO RANGE(SENSITIVITY) ANALYSIS?

?

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

RANGES IN WHICH THE BASIS IS UNCHANGED:

OBJ COEFFICIENT RANGES

VARIABLE CURRENT ALLOWABLE ALLOWABLE

COEF INCREASE DECREASE DESKS 60.000000 20.000000 4.000000

TABLES 30.000000 5.000000 INFINITY

CHAIRS 20.000000 2.500000 5.000000

RIGHT HAND SIDE RANGES

ROW CURRENT ALLOWABLE ALLOWABLE

RHS INCREASE DECREASE

2 48.000000 INFINITY 24.000000

3 20.000000 4.000000 4.000000

4 8.000000 2.000000 1.333333

5 5.000000 INFINITY 5.000000

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

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

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

“OBJECTIVE FUNCTION VALUE 280.000000“表示最优目标值为280.

“VALUE”给出最优解中各变量的值。例. Dakota 问题中需造2个(书桌)desks, 0个(桌子)tables, 和8个(椅子)chairs.

“SLACK OR SURPLUS”给出松驰变量的值。上例中:

s1= 第2行松驰变量=24

s2= 第3行松驰变量=0

s3= 第4行松驰变量=0

s4= 第5行松驰变量=5

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

另外,当你执行TABLEAU命令后,LINDO会显示单纯形表。在下表中我们可看到,基向量为BV={s1, Chairs, DESKS, s4},注意,在此例中,SLK5对应的是s4. ART是人工变量(artificial variable)。ART就是相应的目标值z; 这样z+ 5TABLES +10s2+10s3=280。

:TABLEAU

THE TABLEAU

ROW (BASIS) DESKS TABLES CHAIRS SLK 2 SLK 3

1 ART .000 5.000 .000 .000 10.000

2 SLK 2 .000 -2.000 .000 1.000 2.000

3 CHAIRS .000 -2.000 1.000 .000 2.000

4 DESKS 1.000 1.250 .000 .000 -.500

5 SLK 5 .000 1.000 .000 .000 .000

ROW SLK 4 SLK 5

1 10.000 .000 280.000

2 -8.000 .000 24.000

3 -4.000 .000 8.000

4 1.500 .000 2.000

5 .000 1.000 5.000

敏感性分析

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

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

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

如果REDUCED COST或DUAL PRICE 的值为0, 表示微小扰动不影响目标函数.

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

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)之中, 前面注有[!]符号. 例如: ! This is a comment.

14)LINDO将目标函数所在行作为第一行,从第二行起为约束条件。行号自动产生,也可以人为定义行号或行名。行名和变量名一样,不能超过8个字符。

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

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

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

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

1.简单的印刷错误

2.表达式的原理错误

3.近似误差

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

如何避免这些错误?

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

例:

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

SUBJECT TO

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可得到

A A A

B B B

C C C C

0 1 2 0 1 2 0 1 2 O

1: 5 6 2 4 3 7 2 9 8 MIN

2: 1 1 1 <8

3: 1 1 1 <9

4: 1 1 1 <6

5: 1 1 1 =6

6: 1 1 1 =5

7: 1 1 1 =9

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

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

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

2.5 LINDO命令

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

HELP CATEGORIES (可简写为CAT) COMMANDS ( 简写为COM)

功能如下:

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

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

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

下面按类型列出所有LINDO命令及简单的英文注释如下(本文后附所有命令的详细的中文注释):

1. Information

HELP Gives help in various situations

COM Lists commands by category

LOCAL Give info specific to your local installation

CAT Lists categories of commands

2. Input

MAX Start natural input

MIN Start natural input

RETR Retrieve old problem from file

RMPS Retrieve an MPS format file

TAKE Take terminal input from a file

LEAVE Undo the previous TAKE

3. Display

LOOK Print (part of )problem in natural format

SOLUTION Print standard solution report

RANGE Print RANGE analysis report

PICTURE Print logical PICTURE of matrix SHOCOLUMN Display a column of the problem TABLEAU Print current tableau

NONZEROES Print nonzero variables solution report BPICTURE Print logical PICTURE of basis

4. File output

SAVE Save current problem to file

DIVERT Divert output to file

RVRT Revert output to terminal

SMPS Save current problem in MPS format

5. Solution

GO Go to solve the problem

PIVOT Do the next simplex pivot

6. Problem editing

ALTER Alter some element of current problem

EXT Extend problem by adding constraints

DEL Delete a specified constraint

SUB Enter a simple upper bound for a var.

APPC Append a new column in the formulation

7. Integer programs

INT Identify integer variables

8. Conversational Parameters

WIDTH Set terminal width

TERSE Set conversational style to terse

VERBOSE Set conversational style to verbose (default) BATCH Tell LINDO that this is a batch run

9. User supplied subroutines

USER Call user written subroutine

10. Miscellaneous

INVERT Invert current basis to get more accurate answers STAT Print matrix summary statistics

BUG What to do if you find a bug

11. Quit

QUIT Quit

****************************************************************************** LINDO 常用命令注释表

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

MAX 2X + 3Y

ST

4X + 5Y < 9

7X + 6Y < 13

END

GO

进入LINDO后, 屏幕上出现":", 表示进入可接受命令的状态. 此时键入LINDO的有效命令即可执行.

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

如要结束一个临时的问题输入, 只需键入"END"或一个回车符, 即可回到命令状态模式":".欲知某命令的具体功效,执行该命令即可.

可求解的问题规模:

输入项最大规模

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

非零元4000

列201

行101

整型变量200

变量(行)名字符数8

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

1)信息类命令

HELP COM LOCAL CAT TIME

2)输入类命令

MAX MIN RETR RMPS TAKE LEAV RDBC FBR

3)演示类命令

PIC TABL LOOK NONZ SHOC SOLU RANGE BPIC CPRI RPRI

4)文件输出类命令

SAVE DIVE RVRT SMPS SDBC FBS

5)问题求解类命令

GO PIV

6)编辑类命令

ALT EXT DEL SUB APPC SLB FREE EDIT

7)退出命令

QUIT

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

INT QCP PARA POSD TITAN BIP GIN IPTOL

9)交互式参数命令

WIDTH TERS VERB BAT PAGE PAUS

10)使用者应用程序

USER

11)其它

INV STAT BUG DEB SET TITL

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

1)INFORMATION

HELP COM LOCAL CAT TIME

HELP命令:

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

COM MAND 命令:

给出LINDO 命令类型目录.

LOC AL 命令:

给出该程序的版本信息.

CAT EGORY 命令:

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

TIME命令:

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

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

2)INPUT

MAX MIN RETR RMPS TAKE LEAV RDBC FBR

MAX/MIN命令:

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

输入程序如下: 输入"MAX" ( 或"MIN" ), 继之以自然格式的目标函数作为第一行;再输入"SUBJECT TO"(可简写为"ST"), 后面跟约束条件行. 最后, 输入"END" 回到命令状态模式.

以后只需给出"GO" 命令即可开始优化求解过程.

其中, 变量名可以由1—8个字母或数字型的字符构成, 且第一个字符必须是字母. 变量系数不能是指数型, 例如: .258E+29形式的系数是不允许的. 任一系数位数为 6.5 DIGITS. 关键词("MAX","ST","END"...) 及各行之间必须用一个或多个空格分隔开. 空格可以出现在一行之中, 但不能出现在变量名中. 一个回车符等价于一个空格.

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

1) MIN 2X+3Y SUBJECT TO -5X-2Z<=10

+10X - Y >5 END

2) MIN 2X + 3 Y

ST -5X-2Z

< 10

10X -Y>+5

END

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

DEMAND) 10X - Y > 5

RETR IEVE 命令:

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

RMPS 命令:

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

TAKE 命令:

用该命令可执行由一系列LINDO命令组成的文件.该文件内容只能同终端输入一致, 例如: 文件中不能有行号. 且文件中最后一个命令应为"LEAVE".

LEAV E 命令:

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

RDBC命令:

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

FBR命令:

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

-------------------------------------------------------------------------------------------------------------------------------- 3)DISPLAY

PIC TABL LOOK NONZ SHOC SOLU RANGE BPIC

CPRI RPRI

PIC TURE 命令:

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

Z .000000 -- .000001

Y .000001 -- .000009

X .000010 -- .000099

W .000100 -- .000999

V .001000 -- .009999

U .010000 -- .099999

T 100000 -- .999999

A 1.000001 -- 10.000000

B 10.000001 -- 100.000000

C 100.000001 -- 1000.000000

D 1000.000001 -- 10000.000000

E 10000.000001 -- 100000.000000

F 100000.000001 -- 1000000.000000

G > 1000000

TABL EAU 命令:

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

LOOK命令:

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

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

显示一个小型的解报告, 其中只有非零的变量及相应的行. 注意: "NONZ"命令并不能求解问题, 所以需首先执行"GO" 命令, 且"NONZ"只有在设置了"TERSE"交互型模式后才能显示其作用.

SHOC OLUMN 命令:

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

SOLU TION 命令:

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

RANGE命令:

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

BPIC TURE 命令:

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

-------------------------------------------------------------------------------------------------------------------------------- 4) OUTPUT

SAVE DIVE RVRT SMPS SDBC FBS

CPRI/RPRI命令:

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

例如, 执行

CPRI N P : N = "M%%X" .AND. D > 0

将显示满足一定条件的列的名称及原始值(PRIMAL VALUE), 其条件为:列名的第一个字符= M, 第四个字符=X, 且有一对偶(DUAL ACTIVITY)大于零.

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

N = NAME(名称)

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

D = DUAL VALU

E (相当于列的REDUCED COST )

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

U = SIMPLE UPPER BOUND(上界), L = SIMPLE LOWER BOUND(下界)

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

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

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

其它一些有用的符号有:

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

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

LOG( ) EXP( ) .OR.

ABS( ) .NOT.

SAVE 命令:

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

DIVE RT 命令:

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

LINDO软件使用指导

一、软件简介 LINDO是一种专门用于求解数学规划问题的软件包。由于LINDO执行速度很快、易于方便输入、求解和分析数学规划问题。因此在数学、科研和工业界得到广泛应用。LINDO主要用于解线性规划、非线性规划、二次规划和整数规划等问题。也可以用于一些非线性和线性方程组的求解以及代数方程求根等。LINDO 中包含了一种建模语言和许多常用的数学函数(包括大量概论函数),可供使用者建立规划问题时调用。 一般用LINDO(Linear Interactive and Discrete Optimizer)解决线性规划(LP—Linear Programming)。整数规划(IP—Integer Programming)问题。其中LINDO 6 .1 学生版至多可求解多达300个变量和150个约束的规划问题。其正式版(标准版)则可求解的变量和约束在1量级以上。 LINDO则用于求解非线性规划(NLP—NON—LINEAR PROGRAMMING)和二次规则(QP —QUARATIC PROGRAMING)其中LINGO 6.0学生版最多可版最多达300个变量和150个约束的规则问题,其标准版的求解能力亦再10^4量级以上。虽然LINDO 和LINGO不能直接求解目标规划问题,但用序贯式算法可分解成一个个LINDO和LINGO能解决的规划问题。 要学好用这个软件最好的办法就是学习他们自带的HELP文件。 下面拟举数例以说明这个软件的最基本用法。 目标函数:max z=2x1+3x2 约束条件: x1+2x2<=8 4x1x6<=16 4x2 <=12 xj>=0(j=1,2 (8) 下面我们就用LINDO来解这一优化问题。 输入语句: max(不区分大小写) 2x1+3x2 ST(不区分大小写或写subject to) x1+2x2<=8 4x1x6<=16

应用LINDO软件求解整数规划

2012——2013学年第一学期 合肥学院数理系 实验报告 课程名称:运筹学 实验项目:应用LINDO软件求解整数规划 实验类别:综合性□设计性□√验证性□ 专业班级: 10级数学与应用数学(1)班 姓名:汪勤学号: 1007021004 实验地点: 35-612 实验时间: 2012-11-29 指导教师:管梅老师成绩:

一.实验目的 1、熟悉LINDO软件的求解整数规划功能。 2、学习应用LINGO软件求解整数规划问题。 3、熟练掌握LINGO软件的操作。 二.实验内容 1、某班有男同学30人,女同学20人,星期天准备去植树。根据 经验,一天中,男同学平均每人挖坑20个,或栽树30棵,或给 25棵树浇水,女同学平均每人挖坑10个,或栽树20棵,或给 15棵树浇水。问应怎样安排,才能使植树(包括挖坑、栽树、 浇水)最多。建立该问题的数学模型,并求其解。 2、求解线性规划: 12 12 12 2 12 max2 2512 28 .. 010 , z x x x x x x s t x x x =+ +≥ ? ?+≤ ? ? ≤≤ ? ??为整数 3、在高校篮球联赛中,我校男子篮球队要从8名队员中选择平均身高最高的出场阵容,队员的号码、身高及擅长的位置如下表: 同时,要求出场阵容满足以下条件:

⑴ 中锋最多只能上场一个。 ⑵ 至少有一名后卫 。 ⑶ 如果1号队员和4号队员都上场,则6号队员不能出场 ⑷ 2号队员和6号队员必须保留一个不出场。 问应当选择哪5名队员上场,才能使出场队员平均身高最高? 试写出上述问题的数学模型,并求解。 三. 模型建立 1、()36 12345625143625max 2515302030202010..2515302001,...,6i z x x x x x x x x x x x x s t x x x x x i =+++≤??++≤??+≤+??+≤+?≥=??且为整数 2、12 1212212max 2251228..010,z x x x x x x s t x x x =++≥??+≤??≤≤???为整数 3、 ()()123456781267814626811max 1.92 1.9 1.88 1.86 1.85 1.83 1.8 1.7851 121..5011,2,...8j j j z x x x x x x x x x x x x x x x x x x s t x x j = = ++++++++≤??++≥??++≤?+≤? ??=??==?∑或 四. 模型求解(含经调试后正确的源程序)

数学建模:运用Lindolingo软件求解线性规划

数学建模:运用Lindolingo软件求解线性规划 1、实验内容: 对下面是实际问题建立相应的数学模型,并用数学软件包Lindo/lingo对模型进行求解。 某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.名今工厂共有原料60千克,工人150名,又由于其他条件所限甲饮料产量不超过8百箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论: 1)若投资0.8万元可增加原料1千克,问应否作这项投资. 2)若每百箱甲饮料获利可增加1万元,问应否改变生产计划. 数学建模论文 运用lindo/lingo软件求解线性规划 运用lindo/lingo软件求解线性规划 一、摘要 本文要解决的问题是如何安排生产计划,即两种饮料各生产多少使获利最大。 首先,对问题进行重述明确题目的中心思想,做出合理的假设,对符号做简要的说明。 然后,对问题进行分析,根据题目的要求,建立合适的数学模型。 最后,运用lindo/lingo软件求出题目的解。 【关键词】最优解 lindo/lingo软件 第二、问题的重述 某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10名,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.今工厂共有原

料60千克,工人150名,又由于其他条件所限甲饮料产量不超过8百箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论: 1)若投资0.8万元可增加原料1千克,问应否作这项投资。 2)若每百箱甲饮料获利可增加1万元,问应否改变生产计划。 第三、模型的基本假设 1、每一箱饮料消耗的人力、物力相同。 2、每个人的能力相等。 3、生产设备对生产没有影响。 第四、符号说明 1、x.....甲饮料 2、y.....乙饮料 3、z.....增加的原材料 第五、问题分析 根据题目要求:如何安排生产计划,即两种饮料各生产多少使获利最大,可知本题所求的是利润的最大值。我们可以先建立数学模型,然后用lindo/lingo软件包求解模型的最大值。 第六、模型的建立及求解根据题目建立如下3个模型: 模型1: max=0.1*x+0.09*y; 0.06*x+0.05*y<=60; 0.1*x+0.2*y<=150; x+y<=800; 结果:x=800;y=0;max=80 模型2:

lingo使用手册翻译

§2 LINGO中的集 对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。 现在我们将深入介绍如何创建集,并用数据初始化集的属性。学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。 2.1 为什么使用集 集是LINGO建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。 2.2 什么是集 集是一群相联系的对象,这些对象也称为集的成员。一个集可能是一系列产品、卡车或雇员。每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。属性值可以预先给定,也可以是未知的,有待于LINGO求解。例如,产品集中的每个产品可以有一个价格属性;卡车集中的每辆卡车可以有一个牵引力属性;雇员集中的每位雇员可以有一个薪水属性,也可以有一个生日属性等等。 LINGO有两种类型的集:原始集(primitive set)和派生集(derived set)。一个原始集是由一些最基本的对象组成的。一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存在的集。 2.3 模型的集部分 集部分是LINGO模型的一个可选部分。在LINGO模型中使用集之前,必须在集部分事先定义。集部分以关键字“sets:”开始,以“endsets”结束。一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分。一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们。 2.3.1 定义原始集 为了定义一个原始集,必须详细声明: 1、集的名字 2、可选集的成员

LINGO软件简介

LINGO 软件简介 LINGO 软件是一个处理优化问题的专门软件,它尤其擅长求解线性规划、非线性规划、整 数规划等问题。 一个简单示例 有如下一个混合非线性规划问题: ?????≥≤≤+++---+为整数 213 212 13213 2 2212121,;0,,210022..15023.027798max x x x x x x x x x x t s x x x x x x x 。 LINGO 程序(模型): max =98*x1+277*x2-x1^*x1*x2-2*x2^2+150*x3; x1+2*x2+2*x3<=100; x1<=2*x2; @gin (x1);@gin (x2);! Lingo 默认变量非负 (注意:@bin(x)表示x 是0-1变量;@gin(x)表示x 是整数变量;@bnd(L,x,U)表示 限制LxU ;@free(x)表示取消对x 的符号限制,即可正、可负。) 结果: Global optimal solution found. Objective value: Extended solver steps: 0 Total solver iterations: 45 Variable Value Reduced Cost X1 X2 X3 Row Slack or Surplus Dual Price 1 2 3 ———————— 非常简单! 在LINGO 中使用集合 为了方便地表示大规模的规划问题,减少模型、数据表示的复杂程度,LINGO 引进了“集合”的用法,实现了变量、系数的数组化(下标)表示。 例如:对?? ? ??? ? ==-++-==≤++∑=.,,;10)0(;4,3,2,1),()())()1()(;4,3,2,1,20)(..)} (20)(450)(400{min 4 ,3,2,1均非负INV OP RP INV I I DEM I OP I RP I INV I INV I I RP t s I INV I OP I RP I 求解程序: model : sets : mark/1,2,3,4/:dem,rp,op,inv;!也可以vmark/1..4/:dem,rp,op,inv;

常见Lingo指令介绍

常见Lingo指令介绍 一、控制Sprite的常见指令 1.指令名称:sprite member 指令语法:the member of sprite 指令说明:sprite所代表的cast member。 例:精灵替换 set the member of sprite 1 to "yuan" 可改为:Sprite(1).member=”yuan” 点句表示法: ObjectName.[Property|function|Chunk that you want to specity] 2.指令名称:sprite memberNum 指令语法:the memberNum of sprite 指令说明:sprite所代表的cast member所在的位置。 例:循环播放 on exitFrame me if sprite (1). memberNum =10 then sprite (1). memberNum = 1 else sprite (1) .memberNum=sprite(1).memberNum+1 end if go to the frame end 3.旋转、倾斜、翻转精灵 指令说明:这些变换可以应用于位图、文本、矢量图形、GIF及Flash,但不能用于域,以及工具面板上的椭圆和矩形。 (1)旋转:正值代表顺时针,负值代表逆时针 sprite(1).rotation=30 set the rotation of sprite 1 to 30 例:指针调节 sprite(1).rotation=sprite(1).rotation+5 (2)倾斜:正值向右倾斜,负值向左倾斜,正常状态为0 sprite(1).skew=10 set the skew of sprite 1 to 10 例:图形变形 sprite(1).skew=sprite(1).skew+10 (3)翻转:左右(水平)翻转flipH,上下(垂直)翻转flipV,设置值为TRUE或FALSE (1或0) sprite(1).flipH=TURE sprite(1).flipV=1 例:翻转与恢复

LINGO使用说明比较简单

Lingo介绍 Lingo是美国LINDO系统公司(Lindo Symtem Inc)开发的求解数学规划系列软件中的一个(其他软件为LINGDO,GINO,What’s Best等),它的主要功能是求解大型线性、非线性和整数规划问题,目前的版本是lingo11.0。 lingo分为Demo、solve suite、hyper、industrial、extended等六类不同版本,只有Demo版本是免费的,其他版本需要向LINDO系统公司(在中国的代理商)购买,Lingo的不同版本对模型的变量总数、非线性变量个数、整型变量个数和约束条件的数量做出不同的限制(其中extended版本无限制)。 Lingo的主要功能特色为: (1)既能求解线性规划,也有较强的求解非线性规划的能力; (2)输入模型简练直观; (3)运行速度快、计算能力强; (4)内置建模语言,提供几十种内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型; (5)将集合的概念引入编程语言,很容易将实际问题转换为Lingo语言; (6)能方便地与excel、数据库等其他软件交换数据。 学校图书馆40本《lingo和excel在数学建模中的应用》,袁新生、邵大宏、郁时炼主编,科学出版社

Lingo 程序设计简要说明 在数学建模中会遇到如规划类的题型,在这种模型中总存在着一个目标,并希望这个目标的取值尽可能的大或小,同时与这个目标有关的一系列变量之间存在一些约束。在构造出目标函数和约束条件的表达式后,我们需要对求出这个最值和各变量的取值。一般我们用LINGO 来对模型进行求解,本文将通过举一个简单的例子,围绕这个例子逐步学习LINGO 的使用。LINGO 只是一个求解工具,我们主要的任务还是模型的建立! 当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。 示例:求解线性规划问题: max z=x1+x2+x3+x4+x5+x6+x7+x8 ???????????????≤≤≤≤≤≤269 + x88 + x72 + x66 + x55 + x47 + x38 + x28 + x1 6 15 6 + x8 7 + x7+ x65 + x54 + x44 + x34 + x25 + x15 444 + x86 + x77 + x68 + x58 + x45 + x32 + x27 + x14278 + x85 + x74 + x64 + x55 + x49 + x36 + x25 + x13389 + x84 + x75 + x62 + x57 + x46 + x35 + x28 + x1 2 154 + x8 3 + x79 + x66 + x55 + x45 + x3 4 + x27 + x1 求解这个模型的相应LINGO 程序代码如下: 程序一: max= x1+x2+x3+x4+x5+x6+x7+x8; x1 + 7*x2 + 4*x3 + 5*x4 + 5*x5 + 6*x6 + 9*x7 + 3*x8 + 415<=; 2*x1 + 8*x2 + 5*x3 + 6*x4 + 7*x5 + 2*x6 + 5*x7 + 4*x8 + 938<=; 3*x1 + 5*x2 + 6*x3 + 9*x4 + 5*x5 + 4*x6 + 4*x7 + 5*x8 + 827<=; 4*x1 + 7*x2 + 2*x3 + 5*x4 + 8*x5 + 8*x6 + 7*x7 + 6*x8 + 444<=; 5*x1 + 5*x2 + 4*x3 + 4*x4 + 4*x5 + 5*x6 + x7 + 7*x8 + 6 15<=; 6*x1 + 8*x2 + 8*x3 + 7*x4 + 5*x5 + 6*x6 + 2*x7 + 8*x8 + 926<=; 注:然后点击工具条上的按钮 即可。本模型的最优解为2.636364

lingo教程

LINGO是Linear Interactive and General Optimizer的缩写,中文名称为“交互式的线性和通用优化求解器”,是由美国LINDO系统公司(Lindo System Inc.)开发的一套专门用于求解最优化问题的软件包,用于求解线性规划和二次规划问题,LINGO可以求解非线性规划问题,也可以用于一些线性和非线性方程(组)的求解等。此外,LINGO还允许优化模型中的决策变量为整数(即整数规划),其执行速度很快,是求解优化模型的最佳选择。 1软件介绍 其特色在于内置建模语言,提供十几个内部函数,可以允许决策变量是整数(即整数规划,包括0-1整数规划),方便灵活,而且执行速度非常快。能方便与EXCEL,数据库等其他软件交换数据。最新版本LINGO14.0已经发布。 2操作步骤 一般地,使用LINGO求解运筹学问题可以分为以下两个步骤来完成:1)根据实际问题,建立数学模型,即使用数学建模的方法建立优化模型; 2)根据优化模型,利用LINGO来求解模型。主要是根据LINGO软件,把数学模型转译成计算机语言,借助于计算机来求解。 例题:在线性规划中的应用maxZ=5X1+3X2+6X3, s.t.X1+2X2+X3≤18 2X1+X2+3X3=16 X1+X2+X3=10

X1,X2≥0,X3为自由变量 应用LINGO来求解该模型,只需要在lingo窗口中输入以下信息即可: max=5*x1+3*x2+6*x3; x1+2*x2+x3<=18; 2*x1+x2+3*x3=16; x1+x2+x3=10; @free(x3); 然后按运行按钮,得到模型最优解,具体如下:Objectivevalue:46.00000 VariableValueReducedCost x114.000000.000000 x20.0000001.000000 x3-4.0000000.000000 由此可知,当x1=14,x2=0,x3=-4时,模型得到最优值,且最优值为46。 说明:在利用LINGO求解线性规划时,如自变量都为非负的话,在LINGO中输入的信息和模型基本相同;如自变量为自由变量,可以使用函数@free来把系统默认的非负变量定义自由变量,如实例一中的x3。 3软件详述 LINGO全称是LinearINteractiveandGeneralOptimizer的缩写---

lindoapi数学软件介绍

lindoapi数学软件介绍 LINDO是一种专门用于求解数学 规划问题的软件包。由于LINDO执行速度很快、易于方便输入、求解和分析数学规划问题。因此在数学、科研和工业界得到广泛应用。LINDO主要用于解线 性规划、非线性规划、二次规划和整数规划等问题。也可以用于一些非线性和线性方程组的求解以及代数方程求根等。LINDO中包含了一种建模语言和许多常用 的数学函数(包括大量概论函数),可供使用者建立规划问题时调用。 LINDO 6.1是求解线性、整数和二个规划问题的多功能工具。LINDO 6.1互动的环境可以让你容易得建立和求解最佳化问题,或者你可以将LINDO的最佳化引擎挂在您己开发的程序内。而另一方面,LINDO也可以用来解决 一些复杂的二次线性整数规划方面的实际问题。如在大型的机器上,LINDO被用来解决一些拥有超过50,000各约束条件和200,000万个变量的大规 模复杂问题 LINGO则用于求解非线性规划(NLP—NON—LINEAR PROGRAMMING)和二次规则(QP—QUARATIC

PROGRAMING)其中LINGO 6.0学生版最多可版最多达300个变量和150个约束的规则问题,其标准版的求解能力亦再10^4量级以上。虽然LINDO 和LINGO不能直接求解目 标规划问题,但用序贯式算法可分解成一个个LINDO和LINGO能解决的规划问题。 什么是LINDO 在这里有必要先让大家知道什么是运筹学。运筹学是近四十年来发展起来的一门新兴学科。它的目的是为行政管理人员在作决策时提供科学的依据。因此,它是实 现管理现代化的有力工具。运筹学在生产管理、工程技术、军事作战、科学试验、财政经济以及社会科学中都得到了极为广泛的应用。讲到这里,你已经被运筹学深 深吸引了吧,至于你会怎么去学不是我们讨论的问题,在这里我们只说学运筹学要用到的工具。应用运筹学去处理问题有两个重要特征:一是从全局的观点出发;二 是通过建立模型如数学模型或模拟模型,对于要求解的问题得到最合理的决策。好了,说到这里,LINDO该出场了,它的作用就是负责把问题的最优决策求出来,省去大量难以想象的人工计算。如果你是运筹学的学习者,你就必须拥有

LINDO使用说明

实验1 LINDO 软件包介绍 LINDO 软件包首先由Linus Schrage 开发,现在,美国的LINDO 系统公司(LINDO System Inc.)拥有版权,是一种专门求解数学规划(优化问题)的软件包。它能求解线性规划、(0,1)规划、整数规划、二次规划等优化问题,并能同时给出灵敏度分析、影子价格以及最优解的松弛分析,非常方便实用。 1.注意事项 (1) 低版本的LINDO 要求变量一律用大写字母表示; (2) 求解一个问题,送入的程序必须以MIN 或MAX 开头,以END 结 束;然后按Ctrl + S (或按工具栏中的执行快捷键)进行求解; (3) 目标函数与约束条件之间要用SUBJECT TO (或ST )分开,其 中字母全部大写; (4) LINDO 已假定所有变量非负,若某变量,例如X5有可能取负值, 可在END 命令下面一行用FREE X5命令取消X5的非负限制; LINDO 要求将取整数值的变量放在前面(即下标取小值),在 END 下面一行用命令INTEGER K ,表示前K 个变量是(0,1) 变量;在END 下面一行用命令GIN H 表示前H 个变量是整数变 量; (5) 在LINDO 中,“<”等价于“≤” ,“>”等价于“≥” ; (6) 在LINDO 的输出结果中有STATUS (状态栏),它的表出状态有: OPTIMAL (说明软件包求得的结果是最优解)、FEASIBLE (说 明软件包求得的结果只是可行解)、INFEASIBLE (说明软件包 求得的结果是不可行解)。 (7) 在LINDO 命令中,约束条件的右边只能是常数,不能有变量; (8) 变量名不能超过8个字符; (9) LINDO 对目标函数的要求,每项都要有变量,例如,LINDO 不 认识MIN 2000-X+Y ,要改为MIN –X+Y ; (10)LINDO 不认识400(X+Y )要改为400X+400Y 。 2.求解线性规划问题 例6-1 求解下列线性规划问题: ?? ???≥≤+≤++=0,12 531034..32max y x y x y x t s y x f 在LINDO 中输入下列命令:

lingo使用手册

LINGO快速入门 LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 §1 LINGO快速入门 (2) §2 LINGO中的集 (3) 2.1 为什么使用集 (3) 2.2 什么是集 (4) 2.3 模型的集部分 (4) 2.3.1 定义原始集 (4) 2.3.2 定义派生集 (5) §3 模型的数据部分和初始部分 (7) 3.1 模型的数据部分 (7) 3.1.1 数据部分入门 (7) 3.1.2 参数 (8) 3.1.3 实时数据处理 (8) 3.1.4 指定属性为一个值 (9) 3.1.5 数据部分的未知数值 (9) 3.2 模型的初始部分 (10) §4 LINGO函数 (10) 4.1 基本运算符 (10) 4.1.1 算术运算符 (11) 4.1.2 逻辑运算符 (11) 4.1.3 关系运算符 (11) 4.2 数学函数 (12) 4.3 金融函数 (13) 4.4 概率函数 (13) 4.5 变量界定函数 (15) 4.6 集操作函数 (15) 4.7 集循环函数 (16) 4.8 输入和输出函数 (18) 4.9 辅助函数 (21) §5 LINGO WINDOWS命令 (22) 5.1 文件菜单(File Menu) (22) 5.2 编辑菜单(Edit Menu) (23) 5.3 LINGO菜单 (23) 5.4 窗口菜单(Windows Menu) (35) 5.5 帮助菜单(Help Menu) (37) §6 LINGO的命令行命令 (37) §7 综合举例 (41)

LindoLingo软件基本知识

Lindo /Lingo 软件基本知识 Lindo/Lingo 软件是美国Lindo 系统公司开发的一套专门用于求解优化模型的软件。 一.Lingo 入门 1.编写简单的Lingo 程序 Lingo 程序:在“模型窗口”中,按Lingo 语法格式,输入一个完整的优化模型。 (注意:一个程序就是一个优化模型) 例1 要求解线性规划问题 . 0,, 1253,1034.., 32max ≥≤+≤++=y x y x y x t s y x z 输入程序: max=2*x+3*y; 4*x+3*y<=10; 3*x+5*y<=12; 例2 求解 .,0,, 2, 100.., 23.027798max 21212122212121且都是整数≥≤≤+---+x x x x x x t s x x x x x x 输入程序: max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2; x1<=2*x2;x1+x2<=100; @gin(x1); @gin(x2); 2.语法格式 (1)目标函数 max= 或 min= (2)每个语句的结尾要有“;” (3)程序中,各个语句的先后次序无关 (4)自动默认各个变量均为大于等于零的实数 (5)不区分大写、小写 (6)程序中的“<=”、“<”等同于原模型中的“≤” 程序中的“>=”、“>”等同于原模型中的“≥” (7)对一个特定的变量 x ,进行限制: @free(x) :把x 放宽为任意实数

@gin(x) :限制x 为整数 @bin(x) :限制x 只能取0或1 @bnd(-6,x,18) :限制x 为闭区间[-6,18]上的任意实数 例3:某学校游泳队要从5名队员中选4名参加4乘100米混合泳接力赛。 5名队员4种泳姿的百米成绩(单位:秒) ----------------------------------------------------------------------------------- 李 王 张 刘 赵 蝶泳 66.8 57.2 78 70 67.4 仰泳 75.6 66 67.8 74.2 71 蛙泳 87 66.4 84.6 69.6 83.8 自由泳 58.6 53 59.4 57.2 62.4 ----------------------------------------------------------------------------------- 如何选拔? (1)请建立“0----1规划”模型; (2)用Lingo 求解。 解:若第i 名队员参加第j 种泳姿比赛,则令1=ij x ;否则令0=ij x ;共有20个决策变量ij x 。第i 名队员的第j 种泳姿成绩记为ij c ,则 目标函数为:∑∑==5141min i j ij ij x c 约束条件有:每名队员顶多能参加一种泳姿比赛 5,4,3,2,1,14 1=≤∑=i x j ij ; 每种泳姿有且仅有一人参加 .4,3,2,1,151==∑=j x i ij 这样就能建立如下“0----1规划”模型: ∑∑==5141min i j ij ij x c s.t. 5,4,3,2,1,141=≤∑=i x j ij .4,3,2,1,151==∑=j x i ij

lingo用户手册

为什么要使用集合? 集是LINGO的建模语言的基本构建方案的最强大的功能块的基础。随着对集的理解,你可以写一系列类似的限制在一个单独的语句,并表示长期,复杂的公式。这使您可以非常快速,轻松地表达你的最大的模型。在较大的模型,你会遇到来表达一组几个非常类似的计算或约束的需要。幸运的是,LINGO的能力,处理信息集,可以有效地执行这样的操作。 例如,准备一个仓库发货型号为100的仓库,如果你有明确写入每个约束(例如,“仓库1必须装运不超过其目前的库存较多,仓库2必须装运不超过其目前的库存,仓库更是繁琐3必须运输不超过其本库存......“,等等)。LINGO让您表达最简单的形式公式你阅读和理解(例如,“每个仓库出货必须不超过其目前的库存比较”)。 什么是集? 集是简单地相关对象的组。一组可能是产品,卡车,或员工列表。在该组的每个成员可以有一个或多个与之相关联的特性。我们称这些特征属性。属性值可以提前或未知的LINGO解决该已知。例如,在一组产品的每个产品可能有一个价格属性;在一组的卡车可能有运力属性的每个卡车;并在一组雇员的每个员工可能具有一个工资属性,以及出生日期属性。 集类型 LINGO认可两种套:原始的和衍生的。 原语集是一组唯一的对象不能被进一步减小构成。在无线小工具的例子(第27页),设置仓库,这是由六个仓库,是一种原始的集合。同样,集合八家厂商组成是一种原始的集合。派生集合是使用一个或多个其他组中定义。换句话说,一个来自集源自其他预先存在的集的成员。此外,使用无线小工具例如,集合六个仓库和八家厂商(LINKS)之间的联系组成一个派生集。它源于它的成员来自独特的对仓库的成员和供应商集。虽然链接组被从原始集仅衍生,但也可以从其他来源的集建立来自集为好。请参阅下面的部分,定义导集,以了解更多信息 模型的集科 套在一个LINGO模型的可选部分称为集部分定义。在您的LINGO模型中使用集,你必须在模型组部分定义它们。套节与关键字集开始:(包括结肠),并与关键字ENDSETS结束。模型可以具有没有套部中,单个集合部,或多组部分。一个集部分可能会出现在任何地方的模型。唯一的限制是你必须定义一组及其属性之前,他们在模型的约束引用。 定义原始集 要定义基本设置在台部分,指定: 该组的名称, 任选,其成员(包含在一组对象),并 任选,任何属性集的成员可以具有。 原语集定义的语法如下: setname可以[/ member_list/] [:ATTRIBUTE_LIST];注:使用方括号表示一个项目是可选的。在这种特殊情况下,原始设定的ATTRIBUTE_LIST和member_list都是可选的。 该setname可以是你选择指定设置一个名称。这应该是一个描述性的名称,很容易记住。集名称必须符合标准LINGO命名约定。换句话说,该名称必须以字母字符,这可能是随后长达31个字母数字字符或下划线(_)。LINGO不大写和小写字符之间的名称区分开。 一个member_list是构成一组成员名单,如果该组成员包括在集定义,它们可以被显式地或隐式地列出。如果集成员不包括在set.definition,那么他们可以随后在模型的一个数据部分定义。有关定义组成员在数据部分的详细信息,请参阅简介部分数据。 当明确列出成员,为每个成员输入唯一的名称,可选用逗号隔开。与集名称,成员名称也必须符合标准命名约定。在无线小部件模型,我们可以用一个明确的成员名单在集合部分定义

简明运筹学lindo的使用实验报告

实验报告 实验课程名称运筹学 实验项目名称 lindo 的运用 年级 09 专业信息与计算科学 学生姓名张文祥 学号 0907010224 理学院 实验时间:2011 年 09 月 28 日 学生实验室守则

一、按教学安排准时到实验室上实验课,不得迟到、早退和旷课。 二、进入实验室必须遵守实验室的各项规章制度,保持室内安静、整洁,不准在室内打闹、喧哗、吸烟、吃食物、随地吐痰、乱扔杂物,不准做与实验内容无关的事,非实验用品一律不准带进实验室。 三、实验前必须做好预习(或按要求写好预习报告),未做预习者不准参加实验。 四、实验必须服从教师的安排和指导,认真按规程操作,未经教师允许不得擅自动用仪器设备,特别是与本实验无关的仪器设备和设施,如擅自动用或违反操作规程造成损坏,应按规定赔偿,严重者给予纪律处分。 五、实验中要节约水、电、气及其它消耗材料。 六、细心观察、如实记录实验现象和结果,不得抄袭或随意更改原始记录和数据,不得擅离操作岗位和干扰他人实验。 七、使用易燃、易爆、腐蚀性、有毒有害物品或接触带电设备进行实验,应特别注意规范操作,注意防护;若发生意外,要保持冷静,并及时向指导教师和管理人员报告,不得自行处理。仪器设备发生故障和损坏,应立即停止实验,并主动向指导教师报告,不得自行拆卸查看和拼装。 八、实验完毕,应清理好实验仪器设备并放回原位,清扫好实验现场,经指导教师检查认可并将实验记录交指导教师检查签字后方可离去。 九、无故不参加实验者,应写出检查,提出申请并缴纳相应的实验费及材料消耗费,经批准后,方可补做。 十、自选实验,应事先预约,拟订出实验方案,经实验室主任同意后,在指导教师或实验技术人员的指导下进行。 十一、实验室内一切物品未经允许严禁带出室外,确需带出,必须经过批准并办理手续。 学生所在学院:理学院专业:信息与计算科学班级:091 姓名张文祥学号097010224 实验组

LINGO的使用方法说明大全

LINGO的使用简介 LINGO软件是美国的LINGO系统公司开发的一套专门用于求解最优化问题的软件包.LINGO除了能够用于求解线性规划和二次规划外,还可以用于非线性规划求解、以及一些线性和非线性方程(组)的求解等.LINGO软件的最大特色在于它允许优化模型中的决策变量为整数,即可以求解整数规划,而且执行速度快.LINGO是用来求解线性和非线性优化问题的简易工具.LINGO置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果.在这里仅简单介绍LINGO的使用方法. LINGO(Linear INteractive and General Optimizer )的基本含义是交互式的线性和通过优化求解器.它是美国芝加哥大学的 Linus Schrage 教授于1980年开发了一套用于求解最优化问题的工具包,后来经过完善成何扩充,并成立了LINDO系统公司.这套软件主要产品有:LINDO,LINGO,LINDO API和What’sBest.它们在求解最优化问题上,与同类软件相比有着绝对的优势.软件有演示版和正式版.正式版包括:求解包(solver suite)、高级版(super)、超级版(hyper)、工业版(industrial)、扩展版(extended).不同版本的LINGO对求解问题的规模有限制,如附表3-1所示. 附表3-1 不同版本LINGO对求解规模的限制 版本类型总变量数整数变量数非线性变量数约束数 演示版 300 30 30 150 求解包 500 50 50 250 高级版 2000 200 200 1000 超级版 8000 800 800 4000 工业版 32000 3200 32000 16000 扩展版无限无限无限无限 3.1 LINGO程序框架 LINGO可以求解线性规划、二次规划、非线性规划、整数规划、图论及网络最优化问题和最大最小求解问题,以及排队论模型中最优化等问题. 一个LINGO程序一般会包括以下几个部分: (1) 集合段:集部分是LINGO模型的一个可选部分.在LINGO模型中使用集之前,必须在集部分事先定义.集部分以关键字“sets:”开始,以“endsets”结束.一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分.一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须先定义. (2) 数据段:在处理模型的数据时,需要为集部分定义的某些元素在LINGO求解模型之前为其指定

lindo详细使用说明

LINDO软件包使用手册 目录 第一节简介与安装 第二节用LINDO求解线性规划(LP) 问题 第三节用LINDO求解整数规划(IP) 和二次规划(QP) 问题第四节GINO简介 第五节LINGO简介

第一节简介与安装 1·1简介 本文主要面向大中专学生, 研究生, 及掌握一定的高等代数知识的读者,介绍LINDO软件包(学生版)的基本使用方法。该软件包(学生版)主要功能在于帮助使用者较快地输入一个优化问题的式子, 求解并分析该优化问题, 然后可做些较小的改动, 并重复上述的过程. 该软件包(学生版)在微机上DOS环境下运行。其使用界面不是图形式的,而是字符式的;不是菜单式的, 而是面向具体的命令(Command). 它有许多的命令, 每一个命令都可随时执行, 由系统检查该命令是否在上下文中起作用. 它采用一种对用户友好的交互使用方式, 包括了所有的使用过程指导. 基于使用的具体情况, 它会向使用者询问下一步将做什么, 或等待使用者输入下一个命令. LINDO软件包(学生版)包括LINDO,GINO,LINGO和LINGO NL(LINGO2)等优化软件的学生版以及相应的例子文件。由于LINDO程序执行速度很快,易于方便地输入、求解和分析优化问题,LINDO在教学、科研和工业界得到广泛应用。这里用LINDO软件包作为LINDO,GINO,LINGO和LINGO NL等的统称,包含五种组件,下面分别介绍如下: (1)LINDO是Linear INteractive and Discrete Optimizer字首的缩写形式,是由Linus Schrage 于1986年开发的优化计算软件包, 可以用来求解线性规划(LP----Linear Programming), 整数规划(IP----Integer Programming) 和二次规划(QP----Quadratic Programming) 问题. LINDO易于规划问题的输入、求解和分析,程序执行速度很快。LINDO学生版最多可求解多达200个变量和100个约束的规划问题。 (2)GINO可用于求解非线性规划(NLP----Nonlinear Linear Programming) 问题,求解线性和非线性方程组和不等式组,以及代数方程求根。GINO中包含了有关财务、概率等方面的函数和三角函数,以及各种一般的数学函数,可供使用者建立问题模型时调用。GINO 学生版最多可求解多达50个变量和30个约束的问题。 (3)LINGO 可用于求解线性规划和整数规划问题。 (4)LINGO NL(LINGO2)可用于求解线性、非线性和整数规划问题。 与LINDO和GINO不同的是,LINGO和LINGO NL(LINGO2)包含了内置的建模语言,允许以简练、直观的方式描述所需求解的问题,模型中所需的数据可以以一定格式保存在列表(List)和表格(Table)中,也可以保存在独立的文件中。LINGO和LINGO NL(LINGO2)学生版最多可求解多达200个变量和100个约束的问题。 (5)例子文件:在软件包中还含有例子文件,其中有些例子文件与各软件在一起,但大多数例子文件一般安装在例子目录。例子目录下的例子文件是以LUTOS 1-2-3的WK1格式存储的(也可用MS-OFFICE工具的EXCEL软件读写)。

lingo-lindo简介

Lingo、lindo简介 一、软件概述 (1) 二、快速入门 (4) 三、Mathematica函数大全--运算符及特殊符号 (11) 参见网址: https://www.doczj.com/doc/f615982093.html,/ 一、软件概述 (一)简介 LINGO软件是由美国LINDO系统公司研发的主要产品。LINGO是Linear Interactive and General Optimizer的缩写,即交互式的线性和通用优化求解器。LINGO可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。其特色在于 内置建模语言,提供十几个内部函数,可以允许决策变量是整数(即整数规划,包括 0-1 整数规划),方便灵活,而且执行速度非常快。能方便与EXCEL,数据库等其他软件交换数据。 LINGO实际上还是最优化问题的一种建模语言,包括许多常用的函数可供使用者建立优化模型时调用,并提供与其他数据文件(如文本文件、Excel 电子表格文件、数据库文件等)的接口,易于方便地输入、求解和分析大规模最优化问题。 (二)LINGO的主要特点: Lingo 是使建立和求解线性、非线性和整数最佳化模型更快更简单更 有效率的综合工具。Lingo 提供强大的语言和快速的求解引擎来阐述和求 解最佳化模型。

1 简单的模型表示 LINGO 可以将线性、非线性和整数问题迅速得予以公式表示,并且容易阅读、了解和修改。LINGO的建模语言允许您使用汇总和下标变量以一种易懂的直观的方式来表达模型,非常类似您在使用纸和笔。模型更加容易构建,更容易理解,因此也更容易维护。 2 方便的数据输入和输出选择 LINGO 建立的模型可以直接从数据库或工作表获 取资料。同样地,LINGO 可以将求解结果直接输出到数据库或工作表。使得您能够在您选择的应用程序中生成报告。 3 强大的求解器 LINGO拥有一整套快速的,内建的求解器用来求解线性的,非线性的(球面&非球面的),二次的,二次约束的,和整数优化问题。您甚至不需要指定或启动特定的求解器,因为LINGO会读取您的方程式并自动选择合适的求解器。 4交互式模型或创建Turn-key应用程序 您能够在LINGO内创建和求解模型,或您能够从您自己编写的应用程序中直接调用LINGO。对于开发交互式模型,LINGO提供了一整套建模环境来构建,求解和分析您的模型。对于构建turn-key解决方案,LINGO提供的可调用的DLL 和OLE界面能够从用户自己写的程序中被调用。LINGO也能够从Excel宏或数据库应用程序中被直接调用。 5 广泛的文件和HELP功能

相关主题
文本预览
相关文档 最新文档