运筹学实验

运筹学实验
运筹学实验

运筹学》实验指导书

课程代码:0900030

课程名称:运筹学/Operational Research

开课院实验室:管理学院实验中心适用专业:工商管理、工程管理、管理信息、工业工程、工程造价等专业教学用书:《运筹学》(《运筹学》编写组编写,清华大学出版社出版)第一部分实验课简介

一、实验的地位、作用和目的及学生能力标准

运筹学是一门应用科学,在教学过程中通过案例分析与研究并与现代计算机技术相结合,力求实现理论与实践相结合,优化理论与经济管理专业理论相结合。实验,是《运筹学》课程中重要的实践环节。通过实验,可弥补课堂理论教学中的不足,增加学生的感性知识;要使学生能掌握系统的管理科学中的整体优化和定量分析的方法,熟练运用运筹学程序,对实际问题和研究对象进行系统模拟。

二、试验内容

应用Lindo6.1 版运筹学软件包,解决实际问题。

三、实验方式与基本要求

1、实验方式:综合性实验预习要求:复习编程方法及线性规划、整数规划的算法,对实际问题和研究对象,构造数学模型,确定优化技术方法,设计出原始数据表格。

实验设备:台式电脑

实验要求:按实验任务要求调试程序,程序执行结果应正确。

实验分组: 1 人/组

2、基本要求

(1)在实验室进行实验前,学生熟悉实验软件Lindo 程序、操作方法等;

(2)将程序调好后,将程序结果记录,并由实验教师检查后签字;

(3)将数据及有关的参数等记录在已经设计好的原始数据表格中;

(4)在一周内完成实验报告。

四、考核方式与实验报告要求

学生进入实验室后签到,实验结束后,指导教师逐个检查并提问,根据学生操作、实验结果、回答问题情况及实验纪律及作风等方面给出学生成绩,再综合实验报告情况给出最后的成绩。报告格式如附录。

第二部分Lindo背景及功能菜单简介

、Lin do简介

1. Li ndo 简介:LINDO (Lin ear In teractive and Discrete Optimizer)是一种专门

用于求解数学规划问题的软件包。由于LINDO执行速度很快、易于方便输入、求

解和分析数学规划问题。因此在数学、科研和工业界得到广泛应用。LINDO主要用于解线性规划、非线性规划、二次规划和整数规划等问题。也可以用于一些非线性

和线性方程组的求解以及代数方程求根等。LINDO中包含了一种建模语言和许多常用的数学函数(包括大量概论函数),可供使用者建立规划问题时调用。

一般用LINDO 解决线性规划(LP-Li near Programmi ng)。整数规划(IP—In teger Programming)问题。其中LINDO 6.1学生版至多可求解多达300个变量和150个约束的规划问题。其正式版(标准版)则可求解的变量和约束在1量级以上。

2. 特点:LINDO只要通过键盘输入就可以方便地实现交互性良好的操作与使用。另外,LINDO也可以对外建文件进行处理,只要这些文件里包含有必要的命令代码和输入数据,处理后就可以生成用于报告目的的文档。还可以自建子程序,然后直接与LINDO相结合形成一个包括你自己的代码和LINDO本身的优化库的综合程序。

、LINDO的视窗

菜单:文件一编辑一求解一报告一窗口一帮助

工具栏:它包含所有的其他窗口以及所有命令菜单和工具栏。在里面的是一个新的空白的模型窗口。

第三部分LINDO常用功能与操作简介

、LINDO数据输入与保存

1、打开一个空白工作表/项目

File—New,出现一个新的空白的模型窗口,在此窗口中输入需求解得模型如图所示:

2、

据输入:在空白窗口输入模型,输入方式与我们的数学书写的形式基本

一致。

LINDO 也不区分变量中的大小写字符,约束条件中的 “<=及“>=可用“<”

“ >代替。

3、 保存当前工作表:如果输入的问题模型已经不再需要改动,可用 SAVE 命 令

将它存入文件中,点File ―― Save,输入文件名,点 保存” 二、求解

从Solve 菜单选择Solve 命令,或者在窗口顶部的工具栏里按 Solve 按钮,LINDO 就会开始对模型进行编译。首先,LINDO 会检查模型是否具有数学意义以及是否符 合语法要求。如果模型不能通过这一步检查,会看到以下报错信息:An error occurred during compilation on line: n (产生错误的行数),LINDO 会自动跳转到发生错误的 行。我们就可以检查该行的语法错误并改正过来。

通过这一检查阶段后,LINDO 就会正式开始求解,这由一个叫 LINDO solver 的处理器完成。当solver 初始化时,会在屏幕上显示一个状态窗口,如下图所示:

I.nl u in.

It 491 BO ns

Obl'iacrlb vv

ILf 11^-

9 ^arK-h a-u-

B 0 I Iti!l ^11 ann | VF ril

这个状态窗口可以显示solver 的进度,下表是对各项数据/控制按钮的说明:

当solver 完成优化过程后将会提示你是否要进行灵敏度和范围分析。如果想重新 看到刚才的模型,可键入LOOK 命令,LINDO 会询问具体的行号。典型的应答可以 是3,或1-2,或ALL ,而结果,相应地会显示出第3行,第1-2行,或所有问题行。

数据项/控制 说明

Status 给出当前解决方案的状态, 可能的值包括:Optimal (最优的)‘Feasible (可仃的),In feasible (不可仃的),Un bou nded (未疋的)

Iterati ons solver 的重复次数 In feasibility

多余或错误约束条件数量

Objective 目标函数的当前值

Best IP

标示得到最优整数解决方案值, 该项只出现在IP (整数规划)模型。

i. INI > n

5

widow M&to

JXVJC

CI 0 0 0 ?1

:LOOK

ROW: 3

:LOOK all

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

:ALTER

ROW: 2

VAR: X

NEW COEFFICIENT: 6

:LOOK ALL

三、LINDO输出结果报告

在Reports Window窗口里,它可以显示64,000个字符的信息。如果有需要,LINDO会从顶部开始刷除部分输出以腾出空间来显示新的输出。如果你有一个很长

的解决方案报告,需要完整地进行阅读使用,你可以把这些信息从Reports Window 写到另外一个磁盘文件里,方法是选取File|Log Output命令,快捷键是F10,然后你就可以找到该文件进行阅读使用。如下所示,Reports Window里显示的是模型的

最优解决方案:

按照顺序,报告首先告诉我们LINDO进行了两次运算后求出该解;跟着是在约束条件的约束下我们可以得到的最大利润是145;这时X和丫分别取值10和3。

四、LINDO求解单纯的或混合型的整数规划(IP)问题

LINDO可用于求解单纯的或混合型的整数规划(IP)问题。但目前尚无相应完善的敏感性分析理论。IP问题的输入与LP问题类似,但在END标志后需定义整型变量。0-1型的变量可由INTEGER (可简写为INT)命令来标识:

INTEGER vname 或INTEGER n

五、注意事项

1.进入LINDO 后,":"表示LINDO 已准备接受一个命令。

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

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

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

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

6.一般LINDO 中不能接受括号( )和逗号",",例:400( X1+X2 )需写为400X1+400X2 ;10 ,000 需写为10000。

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

“ Ctr+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 中的矩阵进行数值均衡化。为了避免数值问题,使用者应自己对矩阵的行列进行均衡化。一个原则是,系数矩阵中非零元的绝对值不能大于100000

或者小于。0001。如果LINDO 觉得矩阵元素之间很不均衡,将会给出警告。

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

天津理工大学管理学院运筹学实验报告

实验日期: ____________

学号_____________ 姓名_________________ 系别、专业____________________

实验习题

一农户拥有土地100亩和资金30000元,在冬半年(从10月中到第二年4月中),农户有劳力3500工时,在夏半年有劳力4000工时,如果有剩余劳力,那么农户就安排到邻居帮工。冬半年工钱是 4.00元/小时,夏半年是4.50元/小时。

农户可以通过种植三种作物和饲养奶牛和蛋鸡来获得现金收入。作物不需投

资,而每买一头奶牛需支付900元,一只蛋鸡7元。

每饲养一头奶牛需用地1.5亩,在冬半年需劳力100工时,在夏半年需劳力50 工时,每头奶牛每年的纯现金收入为800元。相应的,养鸡不需土地,一只在冬半年需0.6工时,在夏半年需0.3工时,每只鸡的年净收入5元。农户的鸡舍最大可容鸡3000只,牛圈最多可养牛32头。

三种作物每亩所需工时及每年的收入如下:

1. 农户应养多少奶牛,多少蛋鸡,以及三种作物各种多少亩才能使年净收入最大?

2. 建立线性规划模型,变量如下:

a)SOY, CORN, OATS分别代表种植黄豆,玉米,和燕麦的亩数。

b)COWS, HENS分别代表饲养奶牛和蛋鸡的数量。

c)X SSUM,SXWW分别代表夏半年和冬半年的剩余工时。

线性规划模型如下:

3.问题:

(1)在最优计划中,下面各量各为多少?

a)植黄豆(56.25 )

b)养鸡(3000 )

c)邻家帮工,冬半年(0工时);夏半年(0工时)

d)种植玉米(0亩)

e)种植燕麦(0亩)

f )饲养奶牛(5.75头)

g)年净收入(40693.75元)

(2)在最优计划中,使用资金占原有资金的百分比是多少?答:百分之87.25%(3)(a)在最优计划中,用来养牛的土地是多少亩?

答:8.625亩

(b)养奶牛所花费的资金是多少?

答:5175元

(4)冬半年最后一个工时的边际效益是多少?

答:5.31元

(5)(a)若夏半年劳力减少500工时,那么年总收入将增加(2687.5 )减少(V )不变()

(b)若夏半年劳力增加1500工时,那么年总收入的变化是多少?

答:增加8004.17元

(6)若农户可从当地银行以5%的年利率借款,至多不超过10000元,则应借多少?答:应不借。

(7)(a)如果由于国家的严重饥荒,农户必须种植玉米或燕麦,而且只种一种,那么农户应种植哪种作物?

答:燕麦

(b)如果种植30亩以上选定的作物,那么将使年收入增加(),年收入减少(1229.46 )不改变年收入()不能确定()

(8)一个地方牛奶场愿出 5.00元/小时雇用临时帮工,那么农户应该:(c)

A 在夏半年帮工

B 在冬半年帮工

C 不帮工

D 不能确定

(9)假设由于黄豆的大丰收,黄豆价格下降5%,因此

年收入将增加()年收入至多将增加(1054.69元)

年收入将降低()年收入至多降低().

(10)假设有人愿在冬半年帮工,工钱 5.20 元/小时,问农户是否使用帮工?如果使用帮工,年收入将增加多少?(假设中使用帮工为100小时). 答:应该适应帮工,年收入增加11.25元

(11)(a)计算出农户应养5.75头奶牛,显然0头牛是不可能,为了予以纠正,应该:

( B )

A 一头牛也不养

B 养5 头牛

C 养6 头牛

D 不能确定

(b)年收入将每年增加()每年减少(600元)保持不变()不能确定)

相关主题
相关文档
最新文档