Lingo求解运输问题

上传人:niu****ong 文档编号:244919172 上传时间:2024-10-06 格式:PPT 页数:21 大小:228.50KB
返回 下载 相关 举报
Lingo求解运输问题_第1页
第1页 / 共21页
Lingo求解运输问题_第2页
第2页 / 共21页
Lingo求解运输问题_第3页
第3页 / 共21页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,(,Linear Interactive General Optimizer,),LINGO,简介,LINGO,(,Linear Interactive General Optimizer,)是用来求解线性和非线性优化问题的简易工具。,LINGO,内置了一种建立最优化模型的语言,可以简,便地表达大规模问题,利用,LINGO,高效的求解器可,快速求解并分析结果。,例,1,如何在,LINGO,中求解如下的,LP,问题:,min,=2*x1+3*x2;,x1+x2=350;,x1=100;,2*x1+x2=600;,然后点击工具条上的按钮 即可。,在模型窗口中输入如下代码:,例,2,直接用,LINGO,来解如下二次规划问题:,输入窗口如下:,程序语句输入的备注:,LINGO,总是根据“,MAX=”,或“,MIN=”,寻找目标函数,而除注释语句和,TITLE,语句外的其他语句都是约束条件,因此语句的顺序并不重要。,限定变量取整数值的语句为“,GIN(X1)”,和“,GIN(X2)”,,不可以写成“,GIN(2)”,,否则,LINGO,将把这个模型看成没有整数变量。,LINGO,中函数一律需要以“,”,开头,其中整型变量函数(,BIN,、,GIN,)和上下界限定函数(,FREE,、,SUB,、,SLB,)与,LINDO,中的命令类似。而且,0/1,变量函数是,BIN,函数。,LINGO,的基本用法的几点注意事项,LINGO,中不区分大小写字母;变量和行名可以超过,8,个字符,但不能超过,32,个字符,且必须以字母开头。,用,LINGO,解优化模型时已假定所有变量非负,(,除非用限定变量取值范围的函数,free,或,sub,或,slb,另行说明,),。,变量可以放在约束条件的右端,(,同时数字也可放在约束条件的左端,),。但为了提高,LINGO,求解时的效率,应尽可能采用线性表达式定义目标和约束,(,如果可能的话,),。,语句是组成,LINGO,模型的基本单位,每个语句都以分号结尾,编写程序时应注意模型的可读性。例如:一行只写一个语句,按照语句之间的嵌套关系对语句安排适当的缩进,增强层次感。,以感叹号开始的是说明语句,(,说明语句也需要以分号结束,),。,LINGO,模型最基本的组成要素,一般来说,,LINGO,中建立的优化模型可以由五个部分组成,或称为五“段”(,SECTION,):,(,1,)集合段(,SETS,):,以“,SETS:”,开始,“,ENDSETS”,结束,定义必要的集合变量(,SET,)及其元素(,MEMBER,,含义类似于数组的下标)和属性(,ATTRIBUTE,,含义类似于数组)。,基本集合的定义语法,基本集合的定义格式为,(,方括号“,”,中的内容是可选项,可以没有,):,setname/member_list/:attribute_list;,类型,隐式列举格式,示例,示例集合表示的元素,数字型,1.n,1.5,1,2,3,4,5,字符,-,数字型,stringM.stringN,Car101.car208,Car101,car102,car208,日期(星期)型,dayM.dayN,MON.FRI,MON,TUE,WED,THU,FRI,月份型,monthM.monthN,OCT.JAN,OCT,NOV,DEC,JAN,年份,-,月份型,monthYearM.monthYearN,OCT2001.JAN2002,OCT2001,NOV2001,DEC2001,JAN2002,setname/member_list/:attribute_list;,其中,setname,为定义的集合名,,member_list,为元素列表,,attribute_list,为属性列表。元素列表可以采用显式列举法,(,即直接将所有元素全部列出,元素之间用逗号或空格分开,),也可以采用隐式列举法,隐式列举法可以有几种不同格式。,(,2,)目标与约束段,:目标函数、约束条件等,没有段的开始和结束标记,因此实际上就是除其它四个段,(,都有明确的段标记,),外的,LINGO,模型。,这里一般要用到,LINGO,的内部函数,尤其是与集合相关的求和函数,SUM,和循环函数,FOR,等。,(,3,)数据段,(DATA),:以“,DATA:”,开始,“ENDDATA”,结束,对集合的属性,(,数组,),输入必要的常数数据。,格式为:“,attribute(,属性,)=value_list(,常数列表,);,”,常数列表,(value_list),中数据之间可以用逗号“,”,分开,也可以用空格分开,(,回车等价于一个空格,),。,(,4,)初始段,(INIT),:以“,INIT:”,开始,“,ENDINIT”,结束,对集合的属性,(,数组,),定义初值,(,因为求解算法一般是迭代算法,所以用户如果能给出一个比较好的迭代初值,对提高算法的计算效果是有益的,),。,如果有一个接近最优解的初值,对,LINGO,求解模型是有帮助的。定义初值的格式为:,“,attribute,(属性),=value_list,(常数列表);,”,这与数据段中的用法是类似的。,(,5,)计算段,(CALC),:以“,CALC:”,开始,“,ENDCALC”,结束,对一些原始数据进行计算处理。,在实际问题中,输入的数据通常是原始数据,不一定能在模型中直接使用,可以在这个段对这些原始数据进行一定的“预处理”,得到模型中真正需要的数据。,逻辑运算符,运算结果只有“真”,(TRUE),和“假”,(FALSE),两个值,(,称为“逻辑值”,),,,LINGO,中用数字,1,代表,TRUE,,其他值,(,典型的值是,0),都是,FALSE,。,在,LINGO,中,逻辑运算,(,表达式,),通常作为过滤条件使用,逻辑运算符有,9,种,可以分成两类:,#AND#(,与,),#OR#(,或,),#NOT#(,非,),:逻辑值之间的运算,它们操作的对象本身已经是逻辑值或逻辑表达式,计算结果也是逻辑值。,#EQ#(,等于,),#NE#(,不等于,),#GT#(,大于,),#GE#(,大于等于,),#LT#(,小于,),#LE#(,小于等于,),:是“数与数之间”的比较,也就是它们操作的对象本身必须是两个数,计算得到的结果是逻辑值。,关系运算符,表示是“数与数之间”的大小关系,在,LINGO,中用来表示优化模型的约束条件。,LINGO,中关系运算符有,3,种:,(,即,(,即,=,,大于等于,),(,在优化模型中,约束一般没有严格小于、严格大于关系,),运算符的优先级,优先级,最高,最低,运算符,#NOT#,(,负号,),*/,+,(,减法,),#EQ#NE#GT#GE#LT#LE#,#AND#OR#,例,4,使用,LINGO,软件计算,6,个发点,8,个收点的最小费用运输问题。产销单位运价如下表。,单,位 销地,运,价,产地,B,1,B,2,B,3,B,4,B,5,B,6,B,7,B,8,产量,A,1,6,2,6,7,4,2,5,9,60,A,2,4,9,5,3,8,5,8,2,55,A,3,5,2,1,9,7,4,3,3,51,A,4,7,6,7,3,9,2,7,1,43,A,5,2,3,9,5,7,2,6,5,41,A,6,5,5,2,2,8,1,4,3,52,销量,35,37,22,32,41,32,43,38,6 8,min z=,c,ij,x,ij,i=1 j=1,8,s.t.,x,ij,a,i,(,i=1,2,6),j=1,6,x,ij,=b,j,(,j=1,2,8),i=1,x,ij,0,(,i=1,2,6,;,j=1,2,8),建立模型,:(产大于销),设,x,ij,为从第,i,个产地调运给第,j,个销地的物资数量,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):volume(I,J)=demand(J);,!,产量约束,;,for,(warehouses(I):,sum,(vendors(J):volume(I,J)=capacity(I);,!,这里是数据,;,然后点击工具条上的按钮 即可。,使用,LINGO,软件,编制程序如下:,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 5,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,end,集合的属性相当于以集合的元素为下标的数组。这里的 相当于二维数组。它的两个下标分别来自集合,warehouses,和,vendors,,因此可以定义一个由二元对组成的新的集合,然后将 定义成这个新集合的属性。,本例中集合的概念,利用集合的概念,可以定义产地,warehouses,和销地,vendors,两个集合,分别有,6,个和,8,个元素,(,下标,),,其属性分别为产量,capacity,和销量,demand,。但从各个产地到销地的单位运价 和决策变量,(,运送量,),与集合,warehouses,和集合,vendors,都有关系的。该如何定义这样的属性?,输入程序,定义了三个集合,其中,links,在前两个集合,warehouses,和,vendors,的基础上定义,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):volume(I,J)=demand(J);,!,产量约束,;,for,(warehouses(I):,sum,(vendors(J):volume(I,J)=capacity(I);,!,这里是数据,;,LINGO,建模语言也称为矩阵生成器(,MATRIX GENERATOR,)。类似,warehouses,和,vendors,直接把元素列举出来的集合,称为,基本集合,(primary set),而把,links,这种基于其它集合而派生出来的二维或多维集合称为,派生集合,(derived set),。由于是,warehouses,和,vendors,生成了派生集合,links,,所以,warehouses,和,vendors,称为,links,的,父集合,。,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 5,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,end,表示集合,links,中的元素就是集合,warehouses,和,vendors,的元素组合成的有序二元组,从数学上看
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!