资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021/10/3,#,LINDO/LINGO软件,LINGO:Linear INteractive General Optimizer (V10.0),求解数学规划问题,Min Z=f(x),s.t x,A(,R,n,),需要掌握几个主要方面,基本语法结构,掌握集合(,SETS),应用,正确阅读求解汇报,正确了解求解状态窗口,学会设置基本求解选项(,OPTIONS),第1页,一、,Lingo,基本语法,1、定义了目标函数为,MIN=.,2、,以一个分号“;”结尾,除,SETS,ENDSETS,DATA,ENDDATA,END,之外,3、能够放在约束条件右端,同时数字也可放在约束条件左端。,4、假定各变量非负。,5、注释:“!”,6、为,、,第2页,建模时需要注意几个基本问题,尽可能使用实数优化,降低整数约束和整数变量,尽可能使用光滑优化,降低非光滑约束个数,尽可能少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数等,尽可能使用线性模型,降低非线性约束和非线性变量个数,如,x/y 5,改为,x5y,合理设定变量上下界,尽可能给出变量初始值,模型中使用参数数量级要适当,如小于10,3,第3页,二、Lingo集合,某企业有6个建筑工地,位置坐标为(,a,i,b,i,)(,单位:公里),水泥日用量,d,i,(,单位:吨),例1 选址问题,假设:料场和工地之间有直线道路,(1)现有2料场,位于,A(5,1),B(2,7),记(,x,j,y,j,),j=1,2,日储量,e,j,各有20吨。,目标:制订天天供给计划,即从,A,B,两料场分别向各工地运输多少吨水泥,使总吨公里数最小。,i,a,8.75,0.5,5.75,3,7.25,b,0.75,4.75,5,6.5,7.75,d,1.25,5,4,7,6,11,第4页,解:,决议变量:,料场,j,到,工地,i,运量,c,ij,12维,线性规划模型,lingo,表示式?,location,目标:吨公里,约束:需求,供给,第5页,基本使用,1、Lingo,建模语言,组成:4个段,目标与约束段,集合段(,SETS ENDSETS),数据段(,DATA ENDDATA),初始段(,INIT ENDINIT),(,计算段(,CALC ENDCALC)),第6页,目标与约束段,MODEL,:,Title,Location Problem;,sets,:,demand/1.6/:a,b,d;,supply/1.2/:x,y,e;,link(demand,supply):c;,endsets,data,:,a=1.25,8.75,0.5,5.75,3,7.25;,b=1.25,0.75,4.75,5,6.5,7.75;,d=3,5,4,7,6,11;e=20,20;,x,y=5,1,2,7;,enddata,init,:,endinit,min,=,sum,(link(i,j):c(i,j)*(x(j)-a(i)2+(y(j)-b(i)2)(1/2);,for,(demand(i):,sum,(supply(j):c(i,j)=d(i););,for,(supply(i):,sum,(demand(j):c(j,i)=e(i););,for,(supply:,free,(X);,free,(Y););,END,集合段,数据段,初始段,location,供给约束,需求,需求点位置,供需量,供给,初始点,目标,需求约束,连接,第7页,2、Lingo,集合,Set,及其属性,Attribute,例1,建筑工地位置坐标(,a,i,b,i,)、,水泥日用量,d,i,:,对每个,建筑工地(6个),都有一个对应值,都是一个由6个元素组成数组是已知,料场位置坐标(,x,j,y,j,)、,日储量,e,j,对每个,料场(2个),都有一个对应值,都是一个由2个元素组成数组当前是已知,料场到建筑工地供给计划,c,i j,对每个,料场与建筑工地之间(6,2,),都有一个对应值,是一个,6,2,个元素组成矩阵是未知数,LINDO,无数组,每个变量输入麻烦,Lingo,集合,Set,下标集合,100个工地?,第8页,集合,Set,及其属性,Attribute,定义数组下标集合,demand/1.6/,表示,6个建筑工地,a,b,d,称为该集合属性,表示,坐标(,a,i,b,i,)、,水泥日用量,d,i,定义数组下标集合,supply/1.2/,表示,6个建筑工地,该集合属性,x,y,e,表示,坐标(,x,j,y,j,)、,日储量,e,j,定义数组下标集合,link(demand,supply),表示,6,2,个料场到建筑工地连接,该集合属性,c,表示,每个,料场与建筑工地之间供给计划,c,i j,1,到6整数,第9页,建立下标集合,Lingo,建模语言集合段 数据段,需求点位置,供需量,sets,:,demand/1.6/:a,b,d;,supply/1.2/:x,y,e;,link(demand,supply):c;,endsets,data,:,a=1.25,8.75,0.5,5.75,3,7.25;,b=1.25,0.75,4.75,5,6.5,7.75;,d=3,5,4,7,6,11;e=20,20;,x,y=5,1,2,7;,enddata,赋值,需求,供给,连接,第10页,3、,定义集合,Set,直接把元素列举出来,定义格式 集合名 元素列表 属性列表,setname/member_list/:attribute_list;,可选项,元素列表,显式列举法列出全部元素,用逗号或空格分开,隐式列举法 1.,n,属性列表缺省集合可在程序中作为一循环变量使用,结构更复杂派生集合,元素列表缺省必须在数据段给出元素列表赋值,基本集合,primary set,第11页,派生集合,derived set,基于其它集合而派生出来二维或多维集合,定义格式 集合名 父集合列表 元素列表 属性列表,setname(parent_set_list)/member_list/:attribute_list;,元素列表缺省,全部组合,稠密集合,、或数据段列表赋值,元素列表,稀疏集合,元素列表法枚举,元素过滤法利用过滤条件,setname(parent_set_list)|filtrate_condition:attribute_list;,第12页,建立,下标集合,例1,需求点位置,供需量,sets,:,demand/1.6/:a,b,d;,supply/1.2/:x,y,e;,link(demand,supply):c;,endsets,data,:,a=1.25,8.75,0.5,5.75,3,7.25;,b=1.25,0.75,4.75,5,6.5,7.75;,d=3,5,4,7,6,11;e=20,20;,x,y=5,1,2,7;,enddata,赋值,需求,供给,连接,基本,集合,派生,集合,第13页,集合类型,集合,派生集合 基本集合,稀疏集合 稠密集合,元素列表法 元素过滤法 直接列举法 隐式列举法,setname/member_list/:attribute_list;,setname(parent_set_list)/member_list/,:attribute_list;,SETS:,CITIES/A1,A2,A3,B1,B2/;,ROADS(CITIES,CITIES)/A1,B1 A1,B2 A2,B1 A3,B2/:D;,ENDSETS,SETS:,STUDENTS/,S1.S8,/;,PAIRS(STUDENTS,STUDENTS)|,&2#GT#&1,:BENEFIT,MATCH;,ENDSETS,第14页,三、Lingo运算符和函数,过滤条件使用结果:0 1,1、运算符及其优先级,逻辑运算符,#,NOT#,否定,#,EQ#,相等,#,NE#,不等,#,AND#,而且,#,OR#,或者,#,GT#,大于,#,GE#,大于等于,#,LT#,小于,#,LE#,小于等于,算术运算符,+-*/,关系运算符,(=),第15页,运算符优先级,最高最低,#,NOT#,(,负号),*/,+,(减法),#EQ#NE#GT#GE#LT#LE#,#,AND#OR#,先左后右,先括号内,后括号外,第16页,Lingo内部函数”,2、,Lingo,基本数学函数,ABS(X),SIN(X),COS(X),TAN(X),LOG(X),EXP(X),SMAX(list),SMIN(list),SIGN(X),FLOOR(X),第17页,3、,Lingo,集合循环函数,难点!重点!,循环操作函数集合上元素下标:,集合函数名,function,(setname(set_index_list)|condition:expression_list);,集合名,集合索引列表,过滤条件,表示式,FORMAXMINSUM PROD,第18页,目标:吨公里,for,(demand(i):,sum,(supply(j):c(i,j)=d(i););,for,(supply(i):,sum,(demand(j):c(j,i)=e(i););,例1,约束:需求,供给,min,=,sum,(link(i,j):c(i,j)*(x(j)-a(i)2+(y(j)-,b(i)2)(1/2);,第19页,默认:?,4、,Lingo,变量定界函数,BND(L,X,N),L,U,FREE(X),自由变量,BIN(X),0-1,变量,GIN(X),整数变量,例1,约束:非负,for,(supply:,free,(X);,free,(Y););,第20页,4、,Lingo,条件判断函数,分段函数,IF,(logical_condition,true_result,false_result),OK,例1,第21页,目标与约束段,MODEL,:,Title,Location Problem;,sets,:,demand/1.6/:a,b,d;,supply/1.2/:x,y,e;,link(demand,supply):c;,endsets,data,:,a=1.25,8.75,0.5,5.75,3,7.25;,b=1.25,0.75,4.75,5,6.5,7.75;,d=3,5,4,7,6,11;e=20,20;,x,y=5,1,2,7;,enddata,init,:,endinit,min,=,sum,(link(i,j):c(i,j)*(x(j)-a(i)2+(y(j)-b(i)2)(1/2);,for,(demand(i):,sum,(supply(j):c(i,j)=d(i););,for,(supply(i):,sum,(demand(j):c(j,i)=e(i););,for,(supply:,free,(X);,free,(Y););,END,集合段,数据段,初始段,location,供给约束,需求,需求点位置,供需量,供给,初始点,目标,需求约束,连接,结果:总吨公里数为136.2,第22页,2)改建两个新料场,需要确定新料场位置(,x,j,y,j,),和运量,c,ij,,,在其它条件不变下使总吨公里数最小。,决议变量:,c,i j,,(,x,j,y,j,)16,维,非线性规划模型,例1 选址问题,目标:吨公里,约束:需求,供给,第23页,LINGO,集合段,数据段,初始段,目标与,约束段,最优:89.8835(吨公里,),LP:,移到数据段,location,局部,第24页,边界,第25页,例,2,连续投资问题,设有一笔资金M=10万,未来5年内能够投资4个项目。其中项目1要到第二年末才可回收资金,本利为115%;项目2只能在第三年初投资,到第五年末回收本利125%,但不超出3万;项目3在第二年初投资,第五年末回收本利140%,但不超出4万;项目4每年初投资,年末回收本利106%;试确定5年内怎样安排投资?,年,一,二,三,四,五,限额,回收时间,本利,项目1,第二年末,115%,项目2,3万,第五年末,125%,项目3,4万,第五年末,140%,项目4,年末,106%,第26页,目标,第五年末总资金,T,最大。,决议变量:各年用于各项目标投资额。记,xij,为第,i,年用于第,j,项目标投资额;,建立关系:,T=1.15x41+1.25x32+1.4x23+1.06x54,第一年投资:,x11+x14=10;,第二年投资:,x21+x23+x24=1.06x14,x234,第三年投资:,x31+x32+x34=1.15x11+1.06x24;x323,第四年:,x41+x44=1.15x21+1.06x34,第五年投资:,x54=1.15x31+1.06x44,年,一,二,三,四,五,限额,回收时间,本利,项目1,第二年末,115%,项目2,3万,第五年末,125%,项目3,4万,第五年末,140%,项目4,年末,106%,第27页,数学模型:,第28页,求解:,解:,X11 6.226415,X14 3.773585,X23 4.000000,X32 3.000000,X34 4.160377,X41 4.410000,lingo2,第29页,end,第30页,
展开阅读全文