




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Lingo软件入门(1)1.LINGO快速入门2.Lingo中的集3.模型的数据部分和初始部分4.Lingo函数5.LingoWindows命令
11LINGO快速入门
当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGOModel–LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。
2LINGO8.0有两种命令模式:与LINDO相比,LINGO软件主要具有两大优点:
Windows模式,通过下拉式菜单命令驱动LINGO运行命令行(Command-Line)模式,仅在命令窗口下操作1、除具有LINDO的全部功能外,还可用于求解非线性规划问题,包括非线性整数规划问题 2、LINGO包含了内置的建模语言,允许以简练、直观的方式描述较大规模的优化问题,模型中所需的数据可以以一定格式保存在独立的文件中 3例1
在LINGO中求解如下的LP问题:在模型窗口中输入如下代码:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后点击工具条上的按钮即可。
4LP问题在lindo和lingo中不同的输入形式:(1)将目标函数的表示方式从“min”变成了“min=” (2)“ST”在LINGO模型中不再需要,所以被删除了 (3)每个系数与变量间增加了运算符“*”(即乘号不能省略) (4)每行(目标、约束和说明语句)后面均增加了一个分号“;” (5)模型结束标志“END”也被删除了(LINGO中只有当模型以“MODEL:”开始时才能以“END”结束)。 Lingo:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;
这是LINGO模型的最基本特征 Lindo:min2x1+3x2stx1+y2>=250x1>=100end 56Lingo的不同保存类型 “LG4”表示LINGO格式的模型文件,是一种特殊的二进制格式文件,保存了我们在模型窗口中所能够看到的所有文本和其他对象及其格式信息,只有LINGO能读出它,用其他系统打开这种文件时会出现乱码 除“LG4”文件外,这里的另外几种格式的文件其实都是普通的文本文件,可以用任何文本编辑器打开和编辑 “LDT”表示数据文件“LTF”表示命令脚本文件“LGR”表示报告文 7
2Lingo中的集
对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。Lingo允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥Lingo建模语言的优势。2.1为什么使用集2.2模型的集部分82.1为什么使用集集是Lingo建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。例如:对于100个货栈的运输问题,如果一个一个的写出全部约束将是可怕的工作量。货栈1的运量<=存量货栈2的运量<=存量货栈3的运量<=存量………………Lingo可以采用最为简洁的表示方法:每个货栈的运输量<=存量92.2模型的集部分集部分是Lingo模型的一个可选部分。在Lingo模型中使用集之前,集部分必须事先定义。集部分以关键字“sets:”开始,以“endsets”结束。一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们。集合的定义:sets:集的名字/集的成员/:集成员的属性;endsets10例如:sets:
AP07102/zhangshan,lisi,wangwu/:name,sex,age;endsets集合的定义:sets:集的名字/集的成员/:集成员的属性;endsetssets:set1/1..3/:x,y;endsets112.2.1定义原始集①当显式罗列成员时,必须为每个成员输入一个不同的名字,中间用空格或逗号搁开,允许混合使用。例2.1可以定义一个名为students的原始集,它具有成员John、Jill、Rose和Mike,属性有sex和age:sets:
students/JohnJill,RoseMike/:sex,age;endsets122.2.1定义原始集②当隐式罗列成员时,不必罗列出每个集成员。可采用如下语法:集的名字/集的成员1..集的成员N/[:集成员的属性];隐式成员列表格式示例所产生集成员1..n1..51,2,3,4,5StringM..StringNCar2..car14Car2,Car3,Car4,…,Car14DayM..DayNMon..FriMon,Tue,Wed,Thu,FriMonthM..MonthNOct..JanOct,Nov,Dec,JanMonthYearM..MonthYearNOct2001..Jan2002Oct2001,Nov2001,Dec2001,Jan200213sets:set1/1..3/:x,y;endsetsdata:x=123;y=456;enddataSet1集合定义了两个属性x和y。x取1、2、3三个值,而y取4、5、6三个值。sets:set1/1..3/:x,y;endsetsdata:xy=142536;enddataSet1集合定义了两个属性x和y。x取1、2、3三个值,而y取4、5、6三个值。142.2.1定义原始集!集部分;sets:students:sex,age;endsets!数据部分;data:students,sex,age=John116Jill014 Rose017 Mike113;enddata注意:开头用感叹号(!),末尾用分号(;)表示注释,可跨多行。
③集成员不放在集定义中,而在随后的数据部分来定义。152.2.2定义派生集定义派生集的语法集的名字(父集名称列表)[/集的成员/][:集成员的属性];注意:用“[]”表示该部分内容可选。
父集名称列表是已定义的集的列表,多个时必须用逗号隔开。如果没有指定成员列表,那么Lingo会自动创建父集成员的所有组合作为派生集的成员(参见下页的例子)。派生集的父集既可以是原始集,也可以是其它的派生集。16编号成员编号成员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)定义派生集的例子sets:product/AB/;machine/MN/;week/1..2/;allowed(product,machine,week):x;endsets
Lingo生成了三个父集的所有组合共八组作为allowed集的成员:集的名字(父集名称列表)[/集的成员/][:集成员的属性];17成员列表被忽略时,派生集成员由父集成员所有的组合构成,这样的派生集成为稠密集。如果限制派生集的成员,使它成为父集成员所有组合构成的集合的一个子集,这样的派生集成为稀疏集。①显式罗列。例子:allowed(product,machine,week)/AM1,AN2,BN1/;②设置成员资格过滤器。稠密集的定义稀疏集的定义派生集成员列表方式18设置成员资格过滤器sets:!学生集:性别属性sex,1表示男性,0表示女性;年龄属性age;students/John,Jill,Rose,Mike/:sex,age;
!男学生和女学生的联系集:友好程度属性friend,[0,1]之间的数。;linkmf(students,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=116014017013;friend=0.30.50.6;enddata19设置成员资格过滤器(续)用竖线(|)来标记一个成员资格过滤器的开始。#eq#是逻辑运算符,用来判断是否“相等”,
&1可看作派生集的第1个原始父集的索引,它取遍该原始父集的所有成员;&2可看作派生集的第2个原始父集的索引,它取遍该原始父集的所有成员;&3,&4,……,以此类推。注意:如果派生集B的父集是另外的派生集A,那么上面所说的原始父集是集A向前回溯到最终的原始集,其顺序保持不变,并且派生集A的过滤器对派生集B仍然有效。因此,派生集的索引个数是最终原始父集的个数,索引的取值是从原始父集到当前派生集所作限制的总和。20例
使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。运价产地B1B2B3B4B5B6B7B8产量A16267425960A24953858255A35219743351A47673927143A52395726541A65522814352销量3537223241324338
销地21使用LINGO软件,编制程序如下:model:!6发点8收点运输问题;sets:chandi/A1..A6/:capacity;xiaodi/B1..B8/:need;links(chandi,xiaodi):cost,x;endsets!目标函数;min=@sum(links:cost*x);!需求约束;@for(xiaodi(J):@sum(chandi(I):x(I,J))=need(J));!产量约束;@for(chandi(I):@sum(xiaodi(J):x(I,J))<=capacity(I));!这里是数据;data:capacity=605551434152;need=3537223241324338;cost=626742954953858252197433767392712395726555228143;enddata然后点击工具条上的按钮即可。22
2Lingo中的集
2.4小结Lingo可识别的集只有两种:原始集和派生集原始集是基本的对象,不能再被拆分成更小的组分。原始集可以由显式罗列和隐式罗列两种方式来定义。当用显式罗列方式时,需在集成员列表中逐个输入每个成员。当用隐
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年土木工程生产实习报告【5】
- 设备融资投资立项项目可行性研究报告(2025咨询)
- 园林公司租借合同协议书
- 解除农民工合同协议书
- 心理咨询室创业计划书时
- 2025年天猫养车项目大数据研究报告
- 明星演唱会活动策划方案(多)
- 咖啡店商业计划书2
- syb美容创业计划书参考范文
- 健康探秘课件
- GB/T 3733.1-1983卡套式端直通管接头
- GB/T 1689-1998硫化橡胶耐磨性能的测定(用阿克隆磨耗机)
- 病原微生物实验室生物安全管理手册
- 上消化道出血病人的观察与护理-课件
- 光缆测试报告
- 初中物理教育科学八年级下册第十一章 机械与功《功》教学设计
- 神经病学人卫版习题集题库
- 入网安评基线核查常用检查项
- (统编版小学语文教师)语文新课标新旧对比变化
- 达希纳(尼洛替尼)毒副反应及处理
- 【图文】SEW变频器设置参数说明
评论
0/150
提交评论