2022年LINGO软件的使用 .pdf
《2022年LINGO软件的使用 .pdf》由会员分享,可在线阅读,更多相关《2022年LINGO软件的使用 .pdf(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章 LINGO 软件使用入门LINGO是美国 LINDO系统公司开发的一套专门用于求解最优化问题的软件它为求解最优化问题提供了一个平台,主要用于求解线性规划、非线性规划、整数规划、二次规划、线性及非线性方程组等问题它是最优化问题的一种建模语言,包含有许多常用的函数供使用者编写程序时调用,并提供了与其他数据文件的接口,易于方便地输入,求解和分析大规模最优化问题,且执行速度快由于它的功能较强,所以在教学、科研、工业、商业、服务等许多领域得到了广泛的应用3.1 LINGO 操作界面简介在 Windows 操作系统下启动LINGO软件,屏幕上首先显示如图1.1 所示的窗口图 1.1 图 1.1 中
2、最外层的窗口是LINGO软件的主窗口 (LINGO软件的用户界面) ,所有其他窗口都在这个窗口之内主窗口有:标题栏、菜单栏、工具栏和状态栏目前,状态栏最左边显示的是“ Ready” , 表示准备就绪, 右下角显示的是当前时间,时间前面是当前光标的位置“ Ln 1,Col 1” (即 1 行 1 列) 将来用户可以用选项命令(LINGO|Options|Interface菜单命令)决定是否需要显示工具栏和状态栏LINGO有 5 个主菜单:File (文件)Edit (编辑)LINGO (LINGO系统)Windows(窗口)Help (帮助)这些菜单的用法与Windows 下其他应用程序的标准用
3、法类似,下面只对主菜单中LINGO名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 34 页 - - - - - - - - - 系统的主要命令进行简要介绍LINGO系统( LINGO )的主菜单LINGO|Solve(Ctrl-S) LINGO|Solve(Ctrl-S)(求解)命令对当前模型进行编译并求解如果当前模型输入有错误,编译时将报告错误求解时会显示一个求解器运行状态窗口LINGO|Solution(Ctrl-O) LINGO|Solution(Ctrl-O)(解
4、答)命令显示当前解LINGO|Range(Ctrl-R) LINGO|Range(Ctrl-R)(灵敏度分析)命令显示当前解的灵敏度分析结果(你必须在此之前求解过当前模型)LINGO|Options(Ctrl-I) LINGO|Options(Ctrl-I)(选项)命令将打开一个含有7 个选项卡的对话框窗口,你可以通过它修改LINGO系统的各种控制参数和选项修改完以后,你如果单击“应用”按钮,则新的设置马上生效;如果单击“OK ”按钮,则新的设置马上生效,并且同时关闭该窗口;如果单击 “Save”按钮,则将当前设置变为默认设置,下次启动 LINGO时这些设置仍然有效;如果单击“ Default
5、 ”按钮,则恢复LINGO系统定义的原始默认设置;如果单击“Cancel ”按钮将废弃本次操作,退出对话框;单击“Help ”按钮将显示本对话框的帮助信息LINGO|Generate 和 LINGO|Picture LINGO|Generate 和 LINGO|Picture命令都是在模型窗口下才能使用,他们的功能是按照LINGO模型的完整形式分别以代数表达式形式和矩阵图形形式显示目标函数和约束LINGO|Debug(Ctrl+D )LINGO|Debug(Ctrl+D )命令分析线性规划无解或无界的原因,建议如何修改LINGO|Model Statistics(Ctrl+E )LINGO|M
6、odel Statistics(Ctrl+E )命令显示当前模型的统计信息LINGO|Look(Ctrl+L )LINGO|Look(Ctrl+L )命令显示当前模型的文本形式,显示时对所有行按顺序编号图 1.2 给出了工具栏的简要功能说明图 1.2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 34 页 - - - - - - - - - 当前光标所在的窗口 (窗口标题栏上标有 “LINGO Model-LINGO1” ) , 就是模型窗口 (model window
7、s) ,也就是用于输入LINGO优化模型(即LINGO程序)的窗口3.2 LINGO 模型的基本特征LINGO模型(程序)从LINGO模型窗口输入,它以语句“MODEL: ”开始,以语句“END ”结束它是由一系列语句组成,每个语句都是以分号“; ”结束,语句是组成LINGO模型的基本单位 每行可以写多个语句,为了保持模型的可读性,最好一行只写一个语句,并且按照语句之间的嵌套关系对语句安排适当的缩进,增强层次感以感叹号“! ”开始的语句是注释语句(注释语句也需要以分号“;”结束)LINGO模型(程序)一般由5 个部分(或称5 段)组成:(1)集合段( SETS ) :这部分要以“ SETS :
8、 ”开始,以“ ENDSETS ”结束,作用在于定义必要的集合变量(SET )及其元素( member ,含义类似于数组的下标)和属性(attribute,含义类似于数组) 格式有基本集和派生集两种基本集:Setname(集合变量名 )/member_list(元素列表 )/:attribute_list(属性列表 ) ;元素列表可以全部一一列出,也可以用格式“/ 元素 1. 元素 N/”列出,例如SETS :STUDENTS/1,2,3,4,5/:NAME,AGE ;ENDSETS SETS :STUDENTS/1.5/:NAME,AGE;ENDSETS 派生集:Setname(parent
9、_set_list(源集列表 )/member_list/:attribute_list;例如SETS: PRODUCT/A B/ ; MACHINE/M N/ ; WEEK/1.2/; ALLOWED( PRODUCT,MACHINE,WEEK);ENDSETS 列表可以用逗号“, ”分开,也可以用空格分开(2)数据段( DATA ) :这部分要以“ DATA : ”开始,以“ ENDDATA ”结束,作用在于对集合的属性(数组)输入必要的常数数据格式为:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
10、 - - - - 第 3 页,共 34 页 - - - - - - - - - attribute_list(属性列表 )=value_list(常数列表 ) ;例如SETS: SET1 /A, B, C/: X, Y;ENDSETS DATA: X = 1 2 3; Y = 4 5 6;ENDDATA (3)初始化段( INIT ) :这部分要以“ INIT : ”开始,以“ ENDINIT”结束,作用在于对集合的属性(数组)给出初值格式为:attribute_list(属性列表 )=value_list(常数列表 ) ;与数据段的用法类似(4)计算段( CALC ) :这部分要以“ CAL
11、C : ”开始,以“ ENDCALC ”结束,作用在于对一些原始数据进行计算处理因为在实际问题中,输入的数据往往是原始数据,不一定能在模型中直接使用,可以在这个段对这些原始数据进行一定的“预处理”,得到模型中真正需要的数据在计算段中语句是顺序执行的(5)目标与约束段:这部分没有段的开始和结束标记,作用在于给定目标函数与约束条件 可见除这一段外,其他 4 个段都有明确的段标记这一段是模型的主要部分,其他段是为这一段服务的其他四段可以没有,这一段必须要有否则不称其为模型这一段一般要用到 LINGO的运算符和各种函数3.3 LINGO 的运算符和函数LINGO包含有大量的运算符和函数,供程序(建立优
12、化模型)调用,其功能很强充分利用这些函数, 对解决问题将是非常方便的下面给出部分函数及简要功能介绍,全部函数及详细功能说明可进一步参考LINGO的使用手册一、运算符及其优先级LINGO的运算符有三类:算数运算符、逻辑运算符和关系运算符1算术运算符:LINGO中的算术运算符有以下5 种:+(加法),- (减法或负号) ,*(乘法),/ (除法),(求幂) 算术运算是数与数之间的运算,运算结果仍是数2逻辑运算符:LINGO中的逻辑运算符有以下9 种,可以分成两类:(1)#AND# (与) ,#OR# (或),#NOT# (非) :这三个运算是逻辑值之间的运算,也就是名师资料总结 - - -精品资料
13、欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 34 页 - - - - - - - - - 它们操作的对象本身必须已经是逻辑值或逻辑表达式,计算结果也是逻辑值(2)#EQ# (等于), #NE# (不等于),#GT# (大于),#GE# (大于等于),#LT#(小于),#LE#(小于等于) :这 6 个操作实际上是“数与数之间”的比较,也就是它们操作的对象本身必须是两个数,而逻辑表达式计算的结果是逻辑值3关系运算符:LINGO中的关系运算符有以下3 种:(即,小于等于),(等于),(即,大于等于)这三
14、个运算符虽然也是“数与数之间” 的比较, 但在 LINGO中只用来表示优化模型的约束条件,所以不是真正意义上的运算这些运算符的优先级如表3.1 所示(同一优先级按左到右的顺序执行;如果有括号 “ () ” ,则括号内的表达式优先进行计算)表 3.1 优先级运算符最高最低#NOT# -(负号)* / + - (减法)#EQ# #NE# #GT# #GE# #LT# #LE# #AND# #OR# 二、基本的数学函数在 LINGO中写程序时可以调用大量的内部函数,这些函数以“ ”符号打头(类似调用命令) LINGO中数学函数的用法与其它语言中的数学函数的用法类似,主要有以下函数:ABS(X) :绝
15、对值函数,返回X 的绝对值COS(X) :余弦函数,返回X的余弦值( X的单位是弧度) EXP(X) :指数函数,返回ex的值FLOOR(X) :取整函数,返回X 的整数部分(向最靠近0 的方向取整)LGM(X) :返回 X的伽马( Gamma )函数的自然对数值LOG(X) :自然对数函数,返回X的自然对数值MOD(X,Y) :模函数,返回X对 Y 取模的结果POW(X,Y) :指数函数,返回XY的值SIGN(X):符号函数,返回X的符号值( X0 时返回 -1 ,X 0 返回 1) SIN(X):正弦函数,返回X的正弦值SMAX(list) :最大值函数,返回列表(list)中的最大值名师
16、资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 34 页 - - - - - - - - - SMIN(list):最小值函数,返回列表(list)中的最小值SQR(X) :平方函数,返回X的平方值SQRT(X) :平方根函数,返回X 的正的平方根的值TAN(X) :正切函数,返回X的正切值三、集合循环函数集合循环函数是指对集合上的元素(下标)进行循环操作的函数,主要有FOR,MAX,MIN ,SUM,PROD 五种 , 其用法如下:function(setname(set_
17、index_list)|conditional_qualifier:expression_list);其中:Function是集合函数名;Setname 是集合名;set_index_list是集合索引列表(不需要使用索引时可以省略);|conditional_qualifier是用逻辑表达式给出的过滤条件(无条件时可以省略);:expression_list是一个表达式(对FOR 函数,可以是一组表达式)下面简要介绍其作用FOR(setname(set_index_list)|cond_qualifier:exp_list):对集合 setname 中的每个元素独立地生成由exp_list描
18、述的表达式(通常是优化问题的约束)MAX(setname(set_index_list)|cond_qualifier:exp): 返回集合setname 上的表达式 exp 的最大值MIN(setname(set_index_list)|cond_qualifier:exp): 返回集合setname 上的表达式 exp 的最小值SUM(setname(set_index_list)|cond_qualifier:exp): 返回集合setname 上的表达式 exp 的和PROD(setname(set_index_list)|cond_qualifier:exp):返回集合setname
19、 上的表达式 exp 的积四、集合操作函数集合操作函数是指对集合进行操作的函数,主要有 INDEX,IN,WRAP,SIZE四种,下面简要介绍其作用INDEX(set_name,primitive_set_element):返回元素 primitive_set_element在集合 set_name 中的索引值(即按定义集合时元素出现顺序的位置编号)如果省略集合名set_name,LINGO按程序定义的集合顺序找到第一个含有元素primitive_set_element的集名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心
20、整理 - - - - - - - 第 6 页,共 34 页 - - - - - - - - - 合,并返回索引值如果在所有集合中均没有找到该元素,会给出出错信息IN(set_name,primitive_index_1,primitive_index_2 .):判断一个集合中是否含有索引值 集合 set_name 中包含由索引primitive_index_1,primitive_index_2.所表示的对应元素,则返回1(逻辑值“真” ) ,否则返回0(逻辑值“假” ) WRAP(INDEX,LIMIT) : 返回 J=INDEX-K*LIMIT, 其中 J 位于区间 1 ,LIMIT ,
21、K为整数 当INDEX位于区间 1 ,LIMIT 内时直接返回INDEX 相当于数学上用INDEX对 LIMIT 取模函数的值 +1,即 WRAP(INDEX,LIMIT)=MOD(INDEX,LIMIT)+1 此函数对LIMIT 1 无定义可以想到,此函数的目得之一是防止集合的索引值越界SIZE(set_name) :返回集合set_name 的模,即元素的个数五、变量定界函数变量定界函数是对变量的取值范围加以限制的函数主要有 BIN,BND, FREE, GIN 四种,下面简要介绍其作用BIN(variable):限制变量variable为 0 或 1BND(lower_bound, va
22、riable, upper_bound):限制lower_bound variable upper_bound FREE(variable) :取消对变量variable的符号限制(即可取负数、0 或正数)GIN(variable):限制变量variable为整数六、财务会计函数财务会计函数是用于计算净现值的函数主要有 FPA,FPL 两种,下面简要介绍其作用FPA(I,N) :返回若干时段单位等额回收净现值其中单位时段利率为I, 时段 N个,即NnnINIFPA1)1(1),(FPL(I,N) :返回一个时段单位回收净现值其中单位时段利率为I, 时段 N,即NINIFPL)1(1),(七、概
23、率中的相关函数概率中的相关函数是涉及到概率论和随机过程中的一些函数主要有以下函数:PSN(X) :返回标准正态分布的分布函数在X点的取值PSL(X) :标准正态的线性损失函数,即返回MAX(0,Z-X) 的期望值,其中Z 为均值为A名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 34 页 - - - - - - - - - 的 Poisson 随机变量PPS(A,X):返回均值为A的 Poisson 分布的分布函数在X点的取值PPL(A,X):Poisson 分布的线性损
24、失函数,即返回MAX(0,Z-X) 的期望值,其中Z 为标准正态随机变量PBN(P,N,X):返回参数为(N,P)的二项分布的分布函数在X点的取值PHG(POP,G,N,X) :返回总共有POP个球,其中G个是白球,随机地从中取出N个球,白球不超过X的概率PFD(N,D,X):返回自由度为N和 D的 F 分布的分布函数在X 点的取值PCX(N,X):返回自由度为N的2分布的分布函数在X 点的取值PTD(N,X):返回自由度为N的 t 分布的分布函数在X点的取值PEB(A,X):返回当到达负荷 (强度) 为 A,服务系统有X 个服务器且允许无穷排队时的Erlang 繁忙概率PEL(A,X):返回
25、当到达负荷(强度)为A,服务系统有X 个服务器且不允许排队时的Erlang 繁忙概率PFS(A,X,C):返回当负荷上限为A,顾客数为C,并行服务器数量为X 时,有限源的Poisson 服务系统得等待顾客数的期望值QRAND(SEED):返回 0 与 1 之间的多个拟均匀随机数,其中SEED为种子,默认时取当前计算机时间为种子该函数只能用在数据段(DATA-ENDDATA) RAND(SEED):返回 0 与 1 之间的一个伪均匀随机数,其中SEED为种子八、文件输入输出函数文件输入输出函数是指通过文件输入数据和输出结果的函数主要有以下函数:FILE(filename):这个函数提供LINGO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年LINGO软件的使用 2022 LINGO 软件 使用
限制150内