《Lingo软件学习》PPT课件.ppt_第1页
《Lingo软件学习》PPT课件.ppt_第2页
《Lingo软件学习》PPT课件.ppt_第3页
《Lingo软件学习》PPT课件.ppt_第4页
《Lingo软件学习》PPT课件.ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

目录,Lingo的发展、简介 示例 用编程语言建立模型 Lingo中部分函数介绍 应用举例,一、Lingo发展、简介,一、 lingo是美国lindo公司开发的求解数学规划系列软件的一个,它的主要功能是求解大型线性、非线性和整数规划问题; 二、主要功能特色 (1) 既能求解线性规划问题,也有较强的求解非线性规划问题的能力; (2) 输入模型简练直观; (3) 运行速度快、计算能力强; (4) 内置数模语言,提供了几十个内部函数,可用较少语句,较直观的方式描述较大规模的优化问题; (5) 将集合的概念引入编程语言,很容易将实际问题转化为lingo模型; (6) 能很方便的与Excel、数据库等其他软件交换数据;,二、示例,在LINGO中求解如下的LP问题: 在模型窗口中输入如下代码: min=2*x1+3*x2; x1+x2=350; x1=100; 2*x1+x2=600; 然后点击工具条上的运行按钮 即可。程序,lingo的语法规定 1、求解目标函数的最大值或最小值分别用MAX=或者MIN=来表示; 2、每个语句必须以分号“;”结束,每行可以有多个语句,语句可以跨行; 3、变量名称必须以字母(A Z)开头,有字母、数字(0 9)和下划线组成,长度不能超过32个字符,不区分大小写; 4、可以给语句加上标号; 5、以!开头,以;号结束的语句是注释语句; 6、如果对变量的取值范围没有特殊说明,则默认所有决策变量都非负; 7、lingo模型以”model”开头,以“end”结束,对于比较简单的模型,这两个语句可以省略; 点击菜单lingo|solve求解即可,对例一结果的相关说明,例一运行后得到如下结果: Global optimal solution found. Objective value: 800.0000 Total solver iterations: 2 Variable Value Reduced Cost X1 250.0000 0.000000 X2 100.0000 0.000000 Row Slack or Surplus Dual Price 1 800.0000 -1.000000 2 0.000000 -4.000000 3 150.0000 0.000000 4 0.000000 1.000000,对例一结果的相关说明,1、报告说明运行了2步找到全局最优解,目标函数值为800,变量值分别为X1=250,X2=100. 2、“Reduced Cost”的含义是缩减成本系数,“Row”是输入模型中的行号,“Slack or Surplus ”为松弛或剩余,即约束条件左边与右边的差值,如果约束条件无法满足是,即没有可行解,则松弛或剩余的值为负数,“Dual Price”为影子价格,就是该变量增加一个单位,能使目标函数增加增加的值。,三、用编程语言建立模型,上面介绍了lingo的基本用法,其输入模型简单,一般的数学表达式直接输入即可,但是如果变量和约束条件很多则有很多不足之处,例如: 有200*200个变量显然要一个个输入将会非常麻烦!所以在lingo里面引入了集合的概念,这为建立大规模数学规划模型提供了方便,也可以更好的用lingo语言编写程序表达一个实际的优化问题。,例二:某公司有6个货栈,库存货物总数分别为,60,55,51,43,41,52,现有8个客户要一批货,数量分别为35,37,22,32,41,32,43,38。各个货栈到客户处的单位货物运输价格见表1,试确定各个客栈到各个客户调运数量,使总的运输费用最小? 设xij表示第i个货栈到第j个客户的货运量。Cij表示从第i个货栈到第j个客户运价,ai表示第i个货栈的供货量,dj表示第j个客户的订货量。则可建立本问题的数学模型:,下面用lingo语言表述: 集合(set)是一组相关对象的组合,代表模型中的实际事物,并与数学变量及常量联系起来,是实际问题到数学的抽象。上面的例子中6个客栈和8个客户可以看成两个集合。其中集合要明确三个方面的内容:集合的名称、集合内的成员、集合的属性。 可以分别定义客栈集合和客户集合: Kezhan/w1w6/AI; Kehu/v1v8/DJ; 其中kezhan和kehu是集合的名称,“”是特定的省略号,AI和DJ分别是集合的属性,“/”是规定的语法规则,以上面两个集合为基础可以再定义一个表示运输关系的集合,links(kezhan,kehu):c,x;称为衍生集合。衍生集合的定义语句有以下要素组成: 集合的名称、对应的初始集合、集合的成员、集合的属性。,所以模型的完整的集合定义为: sets: kezhan/w1w6/AI; kehu/v1v8/DJ; links(kezhan,kehu):c,x; endsets 集合定义部分以sets:开头,以endsets结束,两个语句必须单独成行,endsets后面不能有符号。 数据部分: data: 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; enddata 语法规则和上面类似以data:开头,以enddata结束且不能有符号。,目标函数的表达式用lingo表述: min=sum(links(i,j):c(i,j)*x(i,j); sum是lingo的内部函数,其作用是对某个集合的所有成员求指定表达式的和,该函数需要两个参数,第一个参数是集合名称,指定对该集合的所有成员,第二个参数是一个表达式,表示求和运算对该表达式进行。其运算规则是,先求c(i,j)*x(i,j)的值,然后求和。 约束条件的表示: for(kezhan(I):sum(kehu(J):x(I,J)=AI(I); for也是lingo提供的内部函数,它的作用是某个集合的所有成员列表分别生成一个约束条件,也要一个集合名;一个表示该集合所有成员生成对应的约束表达式, sum和 for是使用很多的还可以嵌套使用。 所以得到一下完整模型:,model: sets: kezhan/w1w6/:AI; kehu/v1v8/:DJ; links(kezhan,kehu):c,x; endsets data: 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; enddata min=sum(links:c*x);!目标函数; for(kezhan(I):sum(kehu(J):x(I,J)=AI(I); !约束条件; for(kehu(J):sum(kezhan(I):x(I,J)=DJ(J); !约束条件; End Lingo以Model:开头,以end结束,这两个语句单独成行,补充:关于与Excel中数据的链接 先将Excel中的数据复制到剪切板上,然后将光标置于要插入数据的部位,再在lingo编辑菜单中选择选择性粘贴(Paste Special),注意粘贴与粘贴链接的区别!,四、Lingo中部分函数介绍,LINGO中的函数有基本元算符,数学函数,金融函数,变量限定函数等,全部函数请参照Edit|paste funtion。 算术运算符是针对数值进行操作的。LINGO提供了5种二元运算符: 乘方 乘 除 加 减 LINGO唯一的一元算术运算符是取反函数“” LINGO具有种逻辑运算符: #not# 否定该操作数的逻辑值,not是一个一元运算符 #eq# 若两个运算数相等,则为true;否则为flase #ne# 若两个运算符不相等,则为true;否则为flase #gt# 若左边的运算符严格大于右边的运算符,则为true;否则为flase #ge# 若左边的运算符大于或等于右边的运算符,则为true;否则为flase #lt# 若左边的运算符严格小于右边的运算符,则为true;否则为flase #le# 若左边的运算符小于或等于右边的运算符,则为true;否则为flase #and# 仅当两个参数都为true时,结果为true;否则为flase #or# 仅当两个参数都为false时,结果为false;否则为true,在集合里用到的有: FOR 用于对集合的所有元素产生约束; SUM 计算出基于集合元素表达式的总和; MIN 求出基于集合元素的表达式的最小值; MAX 求出基于集合元素的表达式的最大值; BIN 限制变量为0或1,该函数在0-1规划中特别有用; GIN 限制变量为整数 BND(L,X,U)限制变量在L和U之间。 其他函数请参考其他资料!,五、应用举例,一、指派问题: 设有n项工作需要分配给n个人去做,没人做一项,由于个人的工作效率不同,因而完成同一工作所需要时间也就不同,设人员i完成j项工作所需时间为Cij,问如何分配工作,使完成所有工作所用的总时间最少?这类问题称为指派问题,也称为最优匹配问题,是一类重要的组合最优化问题,其一般模型如下 如分配甲、乙、丙丁戊去完成五项工作,没人完成一项,每项共作只能由一个人完成,数据,程序,二旅行售货商(TSP )问题: 其问题:有一个旅行推销商,从某个城市出发,要遍访若干城市各一次且仅一次最后返回原出发城市。已知从城市i到j的旅费为Cij,问如何安排旅行路线使总旅费最少?一般模型如下: 程序,三、职员时序安排模型 一项工作一周7天都需要有人(比如护士工作),每天(周一至周日)所需的最少职员数为20、16、13、16、19、14和12,并要求每个职员一周连

温馨提示

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

评论

0/150

提交评论