LINGO的基本用法_第1页
LINGO的基本用法_第2页
LINGO的基本用法_第3页
LINGO的基本用法_第4页
LINGO的基本用法_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、LINGO入门,LINGO的菜单,用LINGO编程语言建立模型,LINGO的运算符和函数,LINGO的基本用法,1.1 LINGO入门,第一章 LINGO的基本用法,1. LINGO的主要功能特色:,(1) 既能求解线性规划问题,也有较强的求解非线性规划 问题的能力;,(2) 输入模型简练直观;,(3) 运行速度快,计算能力强;,(4) 内置建模语言,提供几十个内部函数,从而能以较少 语句,较直观的方式描述较大规模的优化模型;,(5) 将集合的概念引入编程语言,很容易将实际问题转换 为LINGO模型;,(6) 能方便地与Excel、数据库等其他软件交换数据;,建模时需要注意的几个基本问题:,(

2、1) 尽量使用实数优化模型,减少整数约束和整数变量的 个数;,(2) 尽量使用光滑优化模型,减少非光滑约束的个数;,如:尽量少地使用绝对值函数、符号函数、多个变量求最大(或最小)值、四舍五入函数、取整函数等.,(3) 尽量使用线性优化模型,减少非线性约束和非线性变量的个数(如x/y 5改为x 5y) ;,(4) 合理设定变量的上下界,尽可能给出变量的初始值;,(5) 模型中使用的单位的数量级要适当(如小于103);,【约束条件】,2. LINGO的基本用法.,例1.,某工厂有两条生产线,分别用来生产M和P两种型号的产品,利润分别为200元/个和300元/个,生产线的最大生产能力分别为每日100

3、和120,生产线每生产一个M产品需要1个劳动日(1个工人工作8小时为1个劳动日)进行调试、检测等工作,而每个P产品需要2个劳动日,该厂工人每天共计能提供160劳动日,假如原材料等其他条件不受限制,问应该如何安排生产计划,才能使获得的利润最大?,解:,设两种产品的生产量分别为x1和x2,则该数学模型为,【目标函数】,再用LINGO处理,输入LINGO如下:,LINGO处理结果:,LINGO的语法规定:,(1) 求目标函数的最大值和最小值分别用MAX= 或MIN= 来表示;,(2) 每个语句必须以分号“;”结束,每行可以有多个语句,语句可以跨行;,(3) 变量名称必须以字母(A-Z)开头,由字母、

4、数字(0-9)和下划线“_”组成,长度不超过32个字符,不区分大小写;,(4) 可以给语句加上标号,例如OBJ MAX= ;,(5) 以“!”开头,以“;”结束的语句是注释语句;,(6) 如果对变量的取值范围没有作特殊说明,则默认所有决策变量都非负;,(7) LINGO模型以语句“MODEL:”开头,以“END”结束,对于比较简单的模型,这两句可以省略;,LINGO求解报告:,缩减成本系数(相差值),松弛或剩余,注: 最优解中变量的缩减成本系数值自动取零.,约束条件中, 对于“=”不等式, 称之为剩余 (Surplus). 不等式左右两边值相等时, 松弛和剩余的值为0; 如果约束条件无法满足,

5、 则松弛和剩余的值为负.,影子(对偶) 价格,含义: 如果该生产线最大生产能力增加1, 能使目标函数值增加50.,1.2 了解LINGO的菜单,新建,打开,保存,打印,剪切,复制,粘贴,取消,重做,查找,定位,匹配 括号,求解,显示 答案,模型 图示,选项 设置,窗口 后置,关闭所 有窗口,平铺 窗口,在线 帮助,上下文 相关帮助,文件菜单,编辑菜单,LINGO菜单,窗口菜单,帮助菜单,输出特殊格式文件,MPS格式文件,MPI格式文件,IBM开发的数学规划文件 标准格式,LINDO公司制定的数学规划 文件格式,用户基本信息,该命令弹出一个对话框,要求 输入用户名和密码(这些信息 在用ODBC函

6、数访问数据库要用到),选择性粘贴,该命令把Window剪贴板中的内容插入到光标所在位置.,插入新对象,链接,修改模型内插入对象的链接性质.,对象的性质,在模型中选择一个链接或嵌入对象,用本命令可以查看和修改这个对象的属性.,灵敏度分析,该命令产生当前模型的灵敏度分析报告:,(1)最优解保持不变的情况下,目标 函数的系数变化范围; (2)在影子价格和缩减成本系数都 不变的前提下,约束条件右边的 常数变化范围;,例. 做下列模型的灵敏度分析,MAX=200*X1+300*X2; X1=100; X2=120; X1+2*X2=160;,注:,灵敏性分析耗费相当多的求解时间,因此当速度很关键时,就没

7、有必要激活它,生成模型的展开形式,为当前模型生成一个用代数表达式表示的完整形式,即LINGO将所有基于集合的表达式(目标函数和约束条件)扩展成为等价的完全展开的普通数学表达式模型.,生成图形,由模型生成图形,以矩阵形式显示模型的系数.,调试,模型统计资料,调试结果,找到充分行(Sufficient Rows)和必要行(Necessary Rows).,查看(以为本方式显示模型内容),命令行窗口,主要是为用户交互地测试命令脚本而设计.(通常不用),状态窗口,变量,约束,非零系数,内存使用量,已运行时间,求解器状态,扩展求解器状态,1.3 用LINGO编程语言建立模型,一、 LINGO模型的基本组

8、成.,例2.,某公司有6个供货栈, 库存货物总数分别为60, 55, 51, 43, 41, 52, 现有8个客户各要一批货, 数量分别为35, 37, 22, 32, 41, 32, 43, 38. 各供货栈到8个客户处的单位货物运输价见下表,试确定各货栈到各客户处的货物调运数量, 使总的运输费用最小,解:,设xij从第i个货栈到第j个客户的运货量, cij表示从第i个货栈到第j个客户的单位货物运价, ai表示第i个货栈的最大供货量, dj表示第j个客户的订货量,模型如下,1. 集合定义部分,集合是一组相关对象构成的组合,集合在使用之前需要预先给出定义, 初始集合的定义三要素: 集合的名称,

9、 集合的元素, 集合的属性(可视为与该集合有关的变量或常量).,集合分为初始(基本原始)集合和衍生(派生)集合,初始集合的定义格式:,集合的名称/集合的元素/:集合的属性;,例. 定义例2的货栈集合ai和dj,WH / W1.W6 /: AI;,VD / V1.V8 /: DJ;,衍生集合的定义四要素: 集合的名称, 对应的初始集合, 集合的元素(可以省略), 集合的属性(可以没有).,例.,定义集合,表示例3中从第i个货栈到第j个客户的运货量xij, 和第i个货栈到第j个客户的单位货物运价cij.,LINKS,(WH, VD),:C, X;,注: 如果集合的元素省略不写, 则默认衍生集合的元

10、素取它所 对应初始集合的所有可能组合.,2. 数据初始化.,如何给例2中的集合AI, DJ, C, X赋值?,AI = 60, 55, 51, 43, 41, 52;,DJ = 35, 37, 22, 32, 41, 32, 43, 38;,C =,6, 2, 6, 7, 4, 2, 5, 9,4, 9, 5, 3, 8, 5, 8, 2,5, 2, 1, 9, 7, 4, 3, 3,7, 6, 7, 3, 9, 2, 7, 1,2, 3, 9, 5, 7, 2, 6, 5,5, 5, 2, 2, 8, 1, 4, 3;,DATA:,ENDDATA,注: 数据初始化部分以“DATA:” 开始,

11、 以ENDDATA结束, 这两个语句必须单独成一行; 数据之间的逗号和空格可以替换,3. 目标函数和约束条件.,例2的目标函数:,用LINGO语句表示为:,MIN = SUM(LINKS(I, J): C(I, J)*X(I, J);,注: ,SUM是LINGO提供的内部函数,其作用是对某个集合的所有成员,求指定表达式的和.,SUM有两个参数:集合名称和表达式, 如果表达式中参与运算的属性属于同一个集合,则 SUM的索引可以省略. 即,MIN = SUM(LINKS: C*X);,例2的约束条件:,用LINGO语句表示为:,FOR(WH(I): SUM(VD(J): X(I, J)=AI(I)

12、;,注: ,FOR是LINGO提供的内部函数,其作用是对某个集合的所有成员分别生成一个约束表达式.,FOR有两个参数:集合名和约束表达式,这里的集合名表示对该集合所有成员生成对应约束表达式,问: 语句中的I, J能不能省略?,用LINGO语句表示为:,FOR(VD(J): SUM(WH(I): X(I, J) =DJ(J);,1.4 LINGO的运算符和函数,一、 LINGO的常用运算符.,1. 算术运算符., * / + -,2. 逻辑运算符.,逻辑运算符优先级别:#NOT#最高, #AND#和#OR#最低,3. 关系运算符.,关系运算符通常用在条件表达式中,用来指定约束条件表达式左边与右边

13、必须满足的关系. 有以下三种:,= =,注:LINGO没有单独的“”关系,如果出现了单个 “”,LINGO认为是省略了“=”.,如果需要严格小(大)于关系,如A严格小于B,可以表示成:,这里 是一个小的正数,它的值依赖于模型中A小于B多少才算不等.,例. 计算 2 #GT# 3 #AND# 4 #GT# 2,结果为 0(FALSE),二、数学函数.,三、概率函数.,四、集合操作函数.,上表中,前五个函数的表示形式为:,函数名(集合名|条件:表达式),例. “FOR(VD(J)|J#NE#5:表达式e);”表示什么含义?,五、变量定界函数.,注:,BND函数可以用约束条件代替,但使用BND函数表

14、达变量的取值范围比使用约束条件的求解速度快, 且不计入约束条件的数目中.,FREE(X)的作用是取消对变量X的默认非负设置.,例. 求函数 z = (x+2)2 + (y-2)2的最小值.,min=(x+2)2+(y-2)2; free(x);,【请大家上机验证一下有FREE和没有的差别】,五、其他函数.,例. 用IF表示下列函数.,f = IF(x#LE#500,4*x,500+3*x);,或 f = IF(x#GT#500,500+3*x,4*x);,【思考:】,此外还有: 文件输入输出函数,金融函数,结果报告函数,补充,一、 稠密集合与稀疏集合.,SETS: WH / W1.W6 /:

15、AI; VD/V1.V8/:DJ; LINKS(WH,VD):C,X; ENDSETS,省略了成员列表,只是指出它基于两个初始集合的衍生集合 称为稠密集合.,如果衍生集合的成员只是稠密集合中的一部分(子集),则 称为稀疏集合.,稀疏集合的定义方法有两种:,(1)直接列表法;,(2)元素过滤法.,例. 有如下工作流程.,SETS:,TASK/A B C D E F G H I J K/;,PRED(TASK,TASK),/A,B B,C C,F C,G F,J G,J J,K D,E,E,H E,I H,J I,J/;,ENDSETS,(1)直接列表法;,(2)元素过滤法.,例. 某公司8个职员

16、两两相容度如下表.,SETS:,REN/1.8/;,LINKS(REN,REN)|,ENDSETS,注: 这里 ENDSETS,例.给下列集合赋值,(法1) DATA: X=1,2,3; Y=4,5,6; ENDDATA,(法2) DATA: X,Y=1,4 2,5 3,6; ENDDATA,注: 同一集合的多个属性一起赋值时,LINGO用按列赋值方式进行.,2. 通过键盘输入数据.,例. 当A=125, A=265时,下列模型的目标函数值是多少?,Max=98*x1+A*x2-x12-0.3*x1*x2-2*x22; x1+x2100; x1=x2; GIN(x1); GIN(x2);,DATA: A=?; ENDDATA,MODEL:,END,3. 部分赋值.,SETS: WH / W1.W6 /: A; ENDSETS,例. 给下列集合的第

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论