运筹学与系统工程实验三.docx
- 文档编号:7750178
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:15
- 大小:1.28MB
运筹学与系统工程实验三.docx
《运筹学与系统工程实验三.docx》由会员分享,可在线阅读,更多相关《运筹学与系统工程实验三.docx(15页珍藏版)》请在冰豆网上搜索。
运筹学与系统工程实验三
运筹学与系统工程上机实验指导书
机电学院工业工程专业
2013-2014
(1)学期
上机实验三:
Lingo软件操作与实例练习
一、实验目的
了解Lingo软件的用途、求解模型、求解过程、基本界面、运行方式、文件类型等相关知识,熟练操作打开和运行Lingo模型求解的过程,学习分析求解结果和状态的方法。
学习Lingo基本的语法规则,学会使用Lingo求解一般的线性规划模型的方法和过程。
二、实验要求
1、根据本指导书和例1、例2熟悉Lingo软件界面与Lingo线性规划模型求解过程。
2、应用Lingo软件独立完成思考练习题。
3、整理程序代码与运行结果并完成上机实验报告。
三、相关技术资料
1、LINGO软件简介
LINGO(LinearInteractiveandGeneralOptimizer),即“交互式的线性和通用优化求解器”,是美国LINDO系统公司(LindoSystemInc.)推出的求解优化模型的软件。
其特色在于内置建模语言,提供十几个内部函数,可以允许决策变量是整数(即整数规划,包括0-1整数规划),方便灵活,而且执行速度非常快。
能方便与EXCEL,数据库等其他软件交换数据。
2、LINDO与LINGO
LINDO是美国芝加哥(Chicago)大学的LinusSchrage教授于1980年前后开发,后来成立了LINDO系统公司(LINDOSystemsInc.),主要产品包括:
LINDO与LINGO等(主要区别是求解问题范围不同,见图1)。
图1Lindo与Lingo的区别
3、LINGO软件安装过程
安装过程可选择LINDO或LINGO作为默认的建模语言,推荐的是采用LINGO,安装后可通过“LINGO|Options|FileFormat”命令修改缺省的建模(即编程)语言。
图2Lingo安装选项
第一次运行时提示输入授权序列号,如图3所示:
图3授权序列号
4、LINGO的求解过程
Lingo根据不同的问题自动选择不同的求解程序,对于线性规划和二次规划,选择线性优化求解程序,对于非线性优化问题选择非线性优化求解程序,对于整数规划问题先运行分枝定界管理程序再求解,求解过程如图4所示。
图4Lingo求解过程
5、LINGO软件界面
图5LINGO工作界面
图6Lingo工具栏
6、LINGO文件格式
♦.LG4:
LINGO格式的模型文件,保存了模型窗口中所能够看到的所有文本和其他对象及其格式信息;
♦.LGR:
LINGO报告文件;
10、基本语法规则
(1)每个程序以MODEL:
开始,以END结束
(2)集合段以SETS:
开始,以ENDSETS结束
(3)数据段以DATA:
开始,以ENDDATA结束
(4)目标和约束段
(5)在程序开头可以用TITLE语句对模型取个标题
(6)通过在前面加[OBJ]自定义行号。
(7)每个语句都以分号结尾,编写程序时可以按照语句之间的嵌套关系对语句安排适当的缩进,增强层次感和模型的可读性。
(8)注释语句:
以感叹号开始,也需要以分号结束。
11、LINGO中的变量
(1)变量命名:
LINGO中不区分大小写字母;变量和行名可以超过8个字符,但不能超过64个字符,且必须以字母开头。
(2)变量范围:
系统假定所有变量非负(除非用限定变量取值范围的函数@free(取消非负限制)或@sub或@slb另行说明)
(3)变量可以放在约束条件的右端。
12、定义集合及其属性
图7定义集合及其属性实例
图8派生集合实例
(一)
图9派生集合实例
(二)
13、目标函数定义
⏹@SUM(集合(下标):
关于集合的属性的表达式)
图10目标函数定义的实例(两种等价形式)
14、约束定义
⏹循环函数
⏹@FOR(集合(下标):
关于集合的属性的约束关系式)
⏹表示对“:
”前面的集合的每个元素(下标),“:
”后面的约束关系式都要成立。
图11循环函数实例
15、运算符及其优先级
⏹算术运算符:
+、-、*、/、^(求幂)
⏹逻辑运算符:
⏹1:
True;其它值(0):
False
⏹#AND#(与),#OR#(或),#NOT#(非)
⏹#EQ#(等于),#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于),#LE#(小于等于)
⏹<、=、>、<=、>=“约束条件中使用”
图12运算符优先级
16、基本的数学函数
⏹@ABS(X):
绝对值函数,返回X的绝对值。
⏹@COS(X):
余弦函数,返回X的余弦值(X的单位是弧度)。
⏹@EXP(X):
指数函数,返回eX的值(其中e=2.718281...)。
⏹@FLOOR(X):
取整函数,返回X的整数部分(向最靠近0的方向取整)。
⏹@LOG(X):
自然对数函数,返回X的自然对数值。
⏹@MOD(X,Y):
模函数,返回X对Y取模的结果,即X除以Y的余数,这里X和Y应该是整数。
⏹@POW(X,Y):
指数函数,返回XY的值。
⏹@SIGN(X):
符号函数,返回X的符号值(X<0时返回-1,X>=0时返回+1)。
⏹@SIN(X):
正弦函数,返回X的正弦值(X的单位是弧度)。
⏹@SMAX(list):
最大值函数,返回一列数(list)的最大值。
⏹@SMIN(list):
最小值函数,返回一列数(list)的最小值。
⏹@SQR(X):
平方函数,返回X的平方(即X*X)的值。
⏹@SQRT(X):
开平方函数,返回X的正的平方根的值。
⏹@TAN(X):
正切函数,返回X的正切值(X的单位是弧度)
17、集合循环函数
集合循环函数是集合上的元素(下标)进行循环操作的函数
(1)基本用法:
@function(setname[(set_index_list)[|condition]]:
expression_list);
其中:
function集合函数名,FOR、MAX、MIN、PROD、SUM之一;
Setname集合名;
set_index_list集合索引列表(不需使用索引时可以省略);
Condition用逻辑表达式描述的过滤条件(通常含有索引,无条件时可以省略);
expression_list一个表达式(对@FOR函数,可以是一组表达式。
(2)常用的集合循环函数
⏹@FOR(集合元素的循环函数):
对集合setname的每个元素独立地生成表达式,表达式由expression_list描述(通常是优化问题的约束)。
⏹@MAX(集合属性的最大值函数):
返回集合setname上的表达式的最大值。
⏹@MIN(集合属性的最小值函数):
返回集合setname上的表达式的最小值。
⏹@PROD(集合属性的乘积函数):
返回集合setname上的表达式的积。
⏹@SUM(集合属性的求和函数):
返回集合setname上的表达式的和。
18、变量定界函数
变量定界函数是对变量的取值范围附加限制,共有以下四种:
⏹@BND(L,X,U):
限制L<=X<=U。
注意LINGO中没有与LINDO命令SLB、SUB类似的函数@SLB和@SUB
⏹@BIN(X):
限制X为0或1。
注意LINDO中的命令是INT,但LINGO中这个函数的名字却不是@INT(X)
⏹@FREE(X):
取消对X的符号限制(即可取负数、0或正数)
⏹@GIN(X):
限制X为整数
19、其他专业函数
⏹@FPA(I,N)返回如下情形下总的净现值:
单位时段利率为I,连续N个时段支付,每个时段支付单位费用。
⏹@FPL(I,N)返回如下情形下总的净现值:
单位时段利率为I,第N个时段支付单位费用。
⏹@RAND(SEED):
返回0与1之间的一个伪均匀随机数(SEED为种子)。
20、文件输入输出函数
⏹@FILE(filename):
当前模型引用其他ASCII码文件中的数据或文本时可以采用该语句(但不允许嵌套使用),其中filename为存放数据的文件名,该文件中记录之间用“~”分开。
⏹@OLE提供LINGO与OLE(ObjectLinkingandEmbeding)接口。
四、实验内容与步骤
1、打开、运行LINGO程序与运行状态及报告分析
运行示例程序,熟悉Lingo软件的打开、运行命令。
点击菜单中的FileOpen打开Lingo11\Samples\SampText中的某一.lg4文件,运行(Solve),另存程序文件(.lg4)和结果文件(.lgr),在报告中分析题目结果,并将相关界面截图保存在报告中。
图13打开LINGO程序
图14运行LINGO程序
图15程序运行状态
(一)
图16程序运行状态
(二)
图17报告分析
2、根据题目要求,完成程序的录入、运行和状态、报告分析:
例1:
某工厂用三种原料生产三种产品,已知的条件如表1所示,试制订总利润最大的生产计划。
表1某工厂产品与原料相关信息表
单位产品所需原料数量(公斤)
产品Q1
产品Q2
产品Q3
原料可用量(公斤/日)
原料P1
2
3
0
1500
原料P2
0
2
4
800
原料P3
3
2
5
2000
单位产品的利润(千元)
3
5
4
第一步:
建立模型:
第二步:
编写LINGO程序:
图18例1的参考LINGO程序
第三步:
参考图19和图20,以文字形式分析运行状态与结果报告的内容。
图19运行状态报告
图20运行结果报告
3、根据题目要求,完成程序的录入、运行和状态、报告分析:
例2:
某建筑公司有三个钢材供应站,准备向四个建筑工地供应钢材,钢材拥有量、各工地的需要量,以及应站向各工地调动钢材的单位运价见表,现制定调运计划使运输费用最少。
若将A2的供应量改为600,调运计划需要如何调整,最少运费是多少?
若将B1的需要量改为500,调运计划需要如何调整,最少运费是多少?
表2钢材拥有量、需要量及调运单位运价表
工地
供应站
B1
B2
B3
B4
拥有量
A1
3
11
3
10
700
A2
1
9
2
8
400
A3
7
4
10
5
900
需求量
300
600
500
600
2000
图21例2的参考Lingo程序
五、思考练习题
试应用Lingo软件完成教材中例6.1、例6.2模型的求解和分析过程。
六、实验报告要求
完成实验内容与步骤中的各练习,按各部分的要求整理报告。
格式要求:
页面A4纵向,封皮见末页模板,标题黑体四号,正文宋体小四,图和表格要求有标题和编号。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运筹学 系统工程 实验