lingo相关杨洪lingo课件1000_第1页
lingo相关杨洪lingo课件1000_第2页
lingo相关杨洪lingo课件1000_第3页
lingo相关杨洪lingo课件1000_第4页
lingo相关杨洪lingo课件1000_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、杨洪Lingo课件1 1.LINGO快速入门 2.Lingo中的集 3.模型的数据部分和初始部分 4.Lingo函数 5. Lingo Windows命令1成都大学杨洪1LINGO快速入门 当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有 的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model LINGO1的窗口是LINGO的默认模型窗口,建立的模2型都成都都大学要杨在洪 该窗口内编码实现。LINGO 8.0有两种命令模式:Windows 模式, 通过下拉式菜单命令驱动LINGO 运行命令行(Comm

2、and-Line) 模式,仅在命令窗口下操作与LINDO 相比,LINGO 软件主要具有两大优点:1、除具有LINDO 的全部功能外,还可用于求解非线性规划问题,包括非线性整数规划问题2、LINGO 包含了内置的建模语言,允许以简练、直观的方式描述较大规模的优化问题,模型中所需的数 据可以以一定格式保存在独立的文件中3成都大学杨洪例1 在LINGO中求解如下的LP问题:4成都大学杨洪min2x1 + 3x2s.t.在模型窗口中输入如下代码:x1 + x2 x12x1 + x2x1 ,x2 350 100 6000min=2*x1+3*x2;x1+x2=350; x1=100; 2*x1+x2=

3、350 x1=100endLP问题在lindo和lingo中不同的输入形式:(1) 将目标函数的表示方式从“min”变成了“min=”(2) “ST”在LINGO 模型中不再需要,所以被删除了(3) 每个系数与变量间增加了运算符“*”(即乘号不能省略)Lingo: min=2*x1+3*x2; x1+x2=350; x1=100; 2*x1+x2=600;(4) 每行(目标、约束和说明语句)后面均增加了一个分号“;”(5) 模型结束标志“END”也被删除了(LINGO 中只有当模型以“MODEL:”开始时才能以“END”结束)。这是LINGO 模型的最基本特征5成都大学杨洪6成都大学杨洪Lin

4、go的不同保存类型“LG4”表示LINGO格式的模型文件,是一种特殊的二进制格式文件,保存了我们在模型窗口中所能够看到的所有文本和其除“LG4”文件外,这里的另外他对象及其格式信息,几种格式的文件其实都是普通的只有LINGO 能读出它,文本文件,可以用任何文本编辑器打开和编辑用其他系统打开这种文件时会出现乱码“LDT”表示数据文件“LTF”表示命令脚本文件“LGR”表示报告文成都大学杨洪7例1.2 使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。8成都大学杨洪385234182255A64156275932A54317293767A4341525549266产量B

5、8B7B6B5B4B3B2B1单位销地运价产地A12A29A32745603885597351322235销量37324143使用LINGO软件,编制程序如下:model:成都大学杨洪!6发点8收点运输问题; sets:warehouses/wh1.wh6/: capacity;vendors/v1.v8/: demand; links(warehouses,vendors):cost, volume; endsets!目标函数;min=sum(links: cost*volume);!需求约束;for(vendors(J): sum(warehouses(I)en:dvolume(I,J)=

6、demand(J);! 产 量 约 束 ; for(warehouses(I):sum(vendors(J): volume(I,J)=capacity(I);!这里是数据;data:capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38;cost=6 2 6 7 4 2 9 54 9 5 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddata然后点击工具条上的按钮即可。为了能够使用LINGO的强大功能,接着第二节的学习吧。92 Lin

7、go中的集对实际问题建模的时候,总会遇到一群或多群 相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。Lingo允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥Lingo建模语言的优势。 2.1 为什么使用集2.2 什么是集2.3 模型的集部分 2.4 小结10成都大学杨洪 2.1 为什么使用集集是Lingo建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合 公式表示一系列相似的约束,从而可以快速方便地表达规 模较大的模型。例如:对于100个货栈的运输问题,如果一个一个的写出 全部约束将是可怕的工作量。货

8、栈1的运量=存量货栈2的运量=存量货栈3的运量=存量Lingo可以采用最为简洁的表示方法: 每个货栈的运输量=存量11成都大学杨洪2.2 什么是集集是一群相联系的对象,这些对象也称为集的成员。 一个集可能是一系列产品、卡车或雇员。每个集成员 可能有一个或多个与之有关联的特征,我们把这些特 征称为属性。属性值可以预先给定,也可以是未知的,有待于Lingo求解。例如: (1)产品集中的每个产品可以有一个价格属性;(2)卡车集中的每辆卡车可以有一个牵引力属性;(3)雇员集中的每位雇员可以有一个薪水属性,也 可以有一个生日属性等等。12成都大学杨洪2 Lingo中的集 2.2 什么是集(续)Lingo

9、有两种类型的集:原始集(primitive set)和派生集(derived set)一个原始集是由一些最基本的对象组成的。例如:集合WAREHOUSE是有6个货栈组成集合VENDERS是由8个销售商组成16成都大学杨洪2 Lingo中的集 2.2 什么是集(续)一个派生集是用一个或多个其它集来定义的,也 就是说,它的成员来自于其它已存在的例如:由6个货栈和8个销售商之间的联系而形成的集合(LINKS)就是派生集合,需要注意的是,派生集合也可以由其他派生集合生成 2.3 模型的集部分 集部分是Lingo模型的一个可选部分。一个模型可以没有集部分,或有一个简单的集部分, 或有多个集部分。 在Li

10、ngo模型中使用集之前,集部分必须事先定义。一个集部分可以放置于模型的任何地方,但是一个集 及其属性在模型约束中被引用之前必须定义了它们。 集部分以关键字“sets:”开始,以“endsets”结束。 2.3 模型的集部分sets: set1/1.3/:x,y; endsetsdata: x=1 2 3;y=4 5 6;enddataSet1集合定义了两个属性x和y。x取1、2、3三个值,而y取4、5、6三个值。sets: set1/1.3/:x,y; endsetsdata:x y = 1 42 53 6;enddataSet1集合定义了两个属性x和y。x取1、2、3三个值,而y取4、5、6

11、三个值。 2.3 模型的集部分sets:warehouses/wh1.wh6/: capacity; vendors/v1.v8/: demand; links(warehouses,vendors): cost, volume;endsetsdata:capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38;cost=6 2 6 7 4 2 9 54 9 5 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddata17成都大学杨洪2 Li

12、ngo中的集 2.3.1 定义原始集 定义原始集的语法集的名字/集的成员/:集成员的属性;注意:用“”表示该部分内容可选。如果集成员放在集定义中,那么对它们可采取显式罗列和隐式罗 列两种方式。如果集成员不放在集定义中,那么可以在随后的数据部分定义它 们。19成都大学杨洪2 Lingo中的集 2.3.1 定义原始集(续) 当显式罗列成员时,必须为每个成员输入一个不同的名字, 中间用空格或逗号搁开,允许混合使用。例2.1 可以定义一个名为students的原始集,它具有成员John、Jill、Rose和Mike,属性有sex和age:sets:students/JohnJill, RoseMike

13、/: sex, age; endsets2 Lingo中的集 2.3.1 定义原始集(续) 当隐式罗列成员时,不必罗列出每个集成员。可采用如下语法:集的名字/集的成员1.集的成员N/: 集成员的属性;隐式成员列表格式示例所产生集成员1.n1.51,2,3,4,5StringM.StringNCar2.car14Car2,Car3,Car4,C ar14DayM.DayNMon.FriMon,Tue,Wed,Thu,FriMonthM.MonthNOct.JanOct,Nov,Dec,JanMonthYearM.Month YearNOct2001.Jan2002Oct2001,Nov2001,

14、D ec2001,Jan200221成都大学杨洪2 Lingo中的集 2.3.1 定义原始集(续) 集成员不放在集定义中,而在随后的数据部分来定义。!集部分; sets:students:sex,age; endsets!数据部分; data:students,sex,age= John 1 16Jill014Rose 0 17Mike 1 13;enddata注意:开头用感叹号(!),末尾用分号(;)表示注释,可跨多行。2 Lingo中的集 原始集和C语言的类比sets:warehouses/wh1.wh6/:capacity;vendors/v1.v8/:demand;endsetscla

15、ss WAREHOUSESint capacity;WAREHOUSES warehouses6;class VENDORSint demand;VENDORS vendors8;22成都大学杨洪2 Lingo中的集 2.3.2 定义派生集 定义派生集的语法集的名字(父集名称列表)/集的成员/:集成员的属性;注意:用“”表示该部分内容可选。父集名称列表是已定义的集的列表,多个时必须用逗号隔开。如 果没有指定成员列表,那么Lingo会自动创建父集成员的所有组合作为派生集的成员(参见下页的例子)。派生集的父集既可以是原始集,也可以是其它的派生集。23成都大学杨洪2 Lingo中的集 2.3.2 定

16、义派生集(续) 定义派生集的例子sets: product/A B/;machine/M N/; week/1.2/;allowed(product,machine,week):x; endsetsProductMachineWeekAllowedAllowed的个数 2228个Lingo生成了三个父集的所有组合共八组作为allowed集的成员:编号成员编号成员1(A,M,1)2(A,M,2)3(A,N,1)4(A,N,2)5(B,M,1)6(B,M,2)7(B,N,1)8(B,N,2)242 Lingo中的集 2.3.2 定义派生集(续) 稠密集的定义成员列表被忽略时,派生集成员由父集成员所

17、有的组合构成,这 样的派生集成为稠密集。 稀疏集的定义如果限制派生集的成员,使它成为父集成员所有组合构成的集合的一个子集,这样的派生集成为稀疏集。 派生集成员列表方式显式罗列。例子:allowed(product,machine,week)/A M 1,A N 2,B N 1/;设置成员资格过滤器。252 Lingo中的集 设置成员资格过滤器sets:!学生集:性别属性sex,1表示男性,0表示女性;年龄属性age.; students/John,Jill,Rose,Mike/:sex,age;!男学生和女学生的联系集:友好程度属性friend,0,1之间的数。 ; linkmf(studen

18、ts,students)|sex(&1) #eq# 1 #and# sex(&2) #eq# 0: friend;!男学生和女学生的友好程度大于0.5的集; linkmf2(linkmf) | friend(&1,&2) #ge# 0.5 : x; endsetsdata:sex,age = 1 160 140 170 13;friend = 0.3 0.5 0.6; enddata26成都大学杨洪2 Lingo中的集 设置成员资格过滤器(续)用竖线(|)来标记一个成员资格过滤器的开始。#eq#是逻辑运算符,用来判断是否“相等”,可参考4.&1可看作派生集的第1个原始父集的索引,它取遍该原始父

19、集的 所有成员;&2可看作派生集的第2 个原始父集的索引,它取遍该原始父集的所有成员;&3,&4,以此类推。注意:如果派生集B的父集是另外的派生集A,那么上面所说的原始父集是集A向前回溯到最终的原始集,其顺序保持不变,并且派 生集A的过滤器对派生集B仍然有效。因此,派生集的索引个数是最终原始父集的个数,索引的取值是 从原始父集到当前派生集所作限制的总和。28成都大学杨洪2 Lingo中的集 2.4 小结 Lingo可识别的集只有两种:原始集和派生集原始集是基本的对象,不能再被拆分成更小的组分。原始集可以由显 式罗列和隐式罗列两种方式来定义。当用显式罗列方式时,需在集成 员列表中逐个输入每个成员。当用隐式罗列方式时,只需在集成员列 表中输入首成员和末成员,而中间的成员由Lingo产生。 派生集是由其它的集来创建。这些集被称为该派生集的父集(原始集或其它的派生集)。一个派生集既可以是稀疏的,也可以是稠密

温馨提示

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

评论

0/150

提交评论