当前位置:文档之家› 运筹学实验

运筹学实验

《运筹学》实验指导书课程代码:0900030课程名称:运筹学/Operational Research开课院实验室:管理学院实验中心适用专业:工商管理、工程管理、管理信息、工业工程、工程造价等专业教学用书:《运筹学》(《运筹学》编写组编写,清华大学出版社出版)第一部分实验课简介一、实验的地位、作用和目的及学生能力标准运筹学是一门应用科学,在教学过程中通过案例分析与研究并与现代计算机技术相结合,力求实现理论与实践相结合,优化理论与经济管理专业理论相结合。

实验,是《运筹学》课程中重要的实践环节。

通过实验,可弥补课堂理论教学中的不足,增加学生的感性知识;要使学生能掌握系统的管理科学中的整体优化和定量分析的方法,熟练运用运筹学程序,对实际问题和研究对象进行系统模拟。

二、试验内容应用Lindo6.1版运筹学软件包,解决实际问题。

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

实验设备:台式电脑实验要求:按实验任务要求调试程序,程序执行结果应正确。

实验分组:1人/组2、基本要求(1)在实验室进行实验前,学生熟悉实验软件Lindo程序、操作方法等;(2)将程序调好后,将程序结果记录,并由实验教师检查后签字;(3)将数据及有关的参数等记录在已经设计好的原始数据表格中;(4)在一周内完成实验报告。

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

报告格式如附录。

第二部分Lindo背景及功能菜单简介一、Lindo简介1.Lindo简介:LINDO(Linear Interactive and Discrete Optimizer)是一种专门用于求解数学规划问题的软件包。

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

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

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

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

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

一般用LINDO解决线性规划(LP-Linear Programming)。

整数规划(IP—Integer Programming)问题。

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

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

2.特点:LINDO只要通过键盘输入就可以方便地实现交互性良好的操作与使用。

另外,LINDO也可以对外建文件进行处理,只要这些文件里包含有必要的命令代码和输入数据,处理后就可以生成用于报告目的的文档。

还可以自建子程序,然后直接与LINDO相结合形成一个包括你自己的代码和LINDO本身的优化库的综合程序。

二、LINDO的视窗菜单:文件—编辑—求解—报告—窗口—帮助工具栏:它包含所有的其他窗口以及所有命令菜单和工具栏。

在里面的是一个新的空白的模型窗口。

第三部分LINDO常用功能与操作简介一、LINDO数据输入与保存1、打开一个空白工作表/项目File—New,出现一个新的空白的模型窗口,在此窗口中输入需求解得模型。

如图所示:2、数据输入:在空白窗口输入模型,输入方式与我们的数学书写的形式基本一致。

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

3、保存当前工作表:如果输入的问题模型已经不再需要改动,可用SA VE命令将它存入文件中,点File——Save,输入文件名,点“保存”。

二、求解从Solve菜单选择Solve命令,或者在窗口顶部的工具栏里按Solve按钮,LINDO 就会开始对模型进行编译。

首先,LINDO会检查模型是否具有数学意义以及是否符合语法要求。

如果模型不能通过这一步检查,会看到以下报错信息:An error occurred during compilation on line: n(产生错误的行数),LINDO会自动跳转到发生错误的行。

我们就可以检查该行的语法错误并改正过来。

通过这一检查阶段后,LINDO就会正式开始求解,这由一个叫LINDO solver 的处理器完成。

当solver初始化时,会在屏幕上显示一个状态窗口,如下图所示:这个状态窗口可以显示solver的进度,下表是对各项数据/控制按钮的说明:当solver完成优化过程后将会提示你是否要进行灵敏度和范围分析。

如果想重新看到刚才的模型,可键入LOOK命令,LINDO会询问具体的行号。

典型的应答可以是3,或1-2,或ALL,而结果,相应地会显示出第3行,第1-2行,或所有问题行。

数据项/控制说明Status 给出当前解决方案的状态,可能的值包括:Optimal(最优的),Feasible (可行的),Infeasible(不可行的),Unbounded(未定的)Iterations solver的重复次数Infeasibility 多余或错误约束条件数量Objective 目标函数的当前值Best IP 标示得到最优整数解决方案值,该项只出现在IP(整数规划)模型。

IP Bound IP模型中目标的理论范围Branches 由LINDO IP solver分生出来的整型变量个数Elapsed Time solver启动后所经过时间Update Interval 状态窗口更新周期(秒)。

你可以把这个值设成任何一个非负数,如果把它设成零的话很可能会增加求解时间。

Interrupt Solver 按下该按钮,solver将立刻停止并返回当前得到的最优解。

Close 按下该按钮关闭状态窗口,solver继续运行。

状态窗口可以通过选取相应命令重新打开。

ROW: 3或:LOOK all如果想修改问题,可键入ALTER命令,LINDO会询问行号、变量名、及新的系数。

例如:如果要将上面问题中约束条件改为,再全部看一下,并求解新问题,那么键入ALTER 命令后相应的应答为2,X,和6,以下是演示过程::ALTERROW: 2V AR: XNEW COEFFICIENT: 6或:LOOK ALL三、LINDO输出结果报告在Reports Window窗口里,它可以显示64,000个字符的信息。

如果有需要,LINDO会从顶部开始刷除部分输出以腾出空间来显示新的输出。

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

如下所示,Reports Window里显示的是模型的最优解决方案:按照顺序,报告首先告诉我们LINDO进行了两次运算后求出该解;跟着是在约束条件的约束下我们可以得到的最大利润是145;这时X和Y分别取值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,及AL TER等其它编辑命令,虽然全屏幕编辑器EDIT使这些命令用处减少了,但DEL在大块地清除一个模型时是有用的,而AL TER可允许做全局性的替换。

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

相关主题