LINGO的基本用法.ppt

上传人:牧羊曲112 文档编号:5575613 上传时间:2023-07-29 格式:PPT 页数:35 大小:1.72MB
返回 下载 相关 举报
LINGO的基本用法.ppt_第1页
第1页 / 共35页
LINGO的基本用法.ppt_第2页
第2页 / 共35页
LINGO的基本用法.ppt_第3页
第3页 / 共35页
LINGO的基本用法.ppt_第4页
第4页 / 共35页
LINGO的基本用法.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《LINGO的基本用法.ppt》由会员分享,可在线阅读,更多相关《LINGO的基本用法.ppt(35页珍藏版)》请在三一办公上搜索。

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

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

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

4、不超过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函数访问数据库要用到),选择性粘贴,该命令把Window剪贴板中的内容插入到光标所在位置.,插入新

6、对象,链接,修改模型内插入对象的链接性质.,对象的性质,在模型中选择一个链接或嵌入对象,用本命令可以查看和修改这个对象的属性.,灵敏度分析,该命令产生当前模型的灵敏度分析报告:,(1)最优解保持不变的情况下,目标 函数的系数变化范围;(2)在影子价格和缩减成本系数都 不变的前提下,约束条件右边的 常数变化范围;,例.做下列模型的灵敏度分析,MAX=200*X1+300*X2;X1=100;X2=120;X1+2*X2=160;,注:,灵敏性分析耗费相当多的求解时间,因此当速度很关键时,就没有必要激活它,生成模型的展开形式,为当前模型生成一个用代数表达式表示的完整形式,即LINGO将所有基于集合

7、的表达式(目标函数和约束条件)扩展成为等价的完全展开的普通数学表达式模型.,生成图形,由模型生成图形,以矩阵形式显示模型的系数.,调试,模型统计资料,调试结果,找到充分行(Sufficient Rows)和必要行(Necessary Rows).,查看(以为本方式显示模型内容),命令行窗口,主要是为用户交互地测试命令脚本而设计.(通常不用),状态窗口,变量,约束,非零系数,内存使用量,已运行时间,求解器状态,扩展求解器状态,1.3 用LINGO编程语言建立模型,一、LINGO模型的基本组成.,例2.,某公司有6个供货栈,库存货物总数分别为60,55,51,43,41,52,现有8个客户各要一批

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;,注:如果集合的元素省略不写,则默认衍生集合的元素取它所 对应初始集合的所有可能组合.,2.数据初始化.,如何给例2中的集合AI,DJ,C,X赋值?,AI=60,55,51,43,41,52;,DJ=35,37,22,32,41,32,43,

10、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:”开始,以ENDDATA结束,这两个语句必须单独成一行;数据之间的逗号和空格可以替换,3.目标函数和约束条件.,例2的目标函数:,用LINGO语句表示为:,MIN=SUM(LINKS(I,J):C(I,J)*X(I,J);,注:,SUM是LINGO提供的内部函数,其作用是对某个集合的所有成员,求指定表达式的和.,SUM有两个参数:

11、集合名称和表达式,如果表达式中参与运算的属性属于同一个集合,则 SUM的索引可以省略.即,MIN=SUM(LINKS:C*X);,例2的约束条件:,用LINGO语句表示为:,FOR(WH(I):SUM(VD(J):X(I,J)=AI(I);,注:,FOR是LINGO提供的内部函数,其作用是对某个集合的所有成员分别生成一个约束表达式.,FOR有两个参数:集合名和约束表达式,这里的集合名表示对该集合所有成员生成对应约束表达式,问:语句中的I,J能不能省略?,用LINGO语句表示为:,FOR(VD(J):SUM(WH(I):X(I,J)=DJ(J);,1.4 LINGO的运算符和函数,一、LINGO

12、的常用运算符.,1.算术运算符.,*/+-,2.逻辑运算符.,逻辑运算符优先级别:#NOT#最高,#AND#和#OR#最低,3.关系运算符.,关系运算符通常用在条件表达式中,用来指定约束条件表达式左边与右边必须满足的关系.有以下三种:,=,注:LINGO没有单独的“”关系,如果出现了单个“”,LINGO认为是省略了“=”.,如果需要严格小(大)于关系,如A严格小于B,可以表示成:,这里 是一个小的正数,它的值依赖于模型中A小于B多少才算不等.,例.计算 2#GT#3#AND#4#GT#2,结果为 0(FALSE),二、数学函数.,三、概率函数.,四、集合操作函数.,上表中,前五个函数的表示形式

13、为:,函数名(集合名|条件:表达式),例.“FOR(VD(J)|J#NE#5:表达式e);”表示什么含义?,五、变量定界函数.,注:,BND函数可以用约束条件代替,但使用BND函数表达变量的取值范围比使用约束条件的求解速度快,且不计入约束条件的数目中.,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

14、*x,4*x);,【思考:】,此外还有:文件输入输出函数,金融函数,结果报告函数,补充,一、稠密集合与稀疏集合.,SETS:WH/W1.W6/: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,

15、J J,K D,E,E,H E,I H,J I,J/;,ENDSETS,(1)直接列表法;,(2)元素过滤法.,例.某公司8个职员两两相容度如下表.,SETS:,REN/1.8/;,LINKS(REN,REN)|,ENDSETS,注:这里&1和&2表示第一和第二个父集合的元素索引值,二、数据段的几点说明.,1.赋值.,SETS:SET1/A,B,C/:X,Y;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.

16、通过键盘输入数据.,例.当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,例.给下列集合的第二和第三个元素赋值为60和55,DATA:A=,60,55,;ENDDATA,三、初始化段.,在数据段给变量赋值以后,该变量在整个程序运行阶段都是常量,而不是决策变量.,如果想对决策变量赋一定初始值,希望该初始值作为寻找最优解的起始值(变量本身不是常量),可以在程序中增加初始段,初始化段以语句INIT:开头,以语句ENDINIT结束,如下程序,INIT:X=0.99;Y=0.01;ENDINITY=LOG(X);X2+Y2=1;,注:初始化段只对非线性模型起作用,在线性模型中不起任何作用.,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号