收藏 分销(赏)

lingo软件及其应用(经典).ppt

上传人:可**** 文档编号:775710 上传时间:2024-03-12 格式:PPT 页数:128 大小:2.28MB
下载 相关 举报
lingo软件及其应用(经典).ppt_第1页
第1页 / 共128页
lingo软件及其应用(经典).ppt_第2页
第2页 / 共128页
点击查看更多>>
资源描述
LINGO软件及其应用 2016.5.15目录1 软件平台件平台2 lingo编程程3 应用用举例例1 软件平台(1)美国芝加哥(Chicago)大学的Linus Schrage(莱纳斯.施拉盖)教授于1980年前后开发。(2)LINGO:Linear Interactive General Optimizer(线性交互式通用优化器)。(3)用来求解的优化模型(连续优化和整数规划(IP)。类型:线性规划(LP)、二次规划(QP)、非线性规划(NLP)。(4)LINGO的界面如下LINGO软件的主窗口(用软件的主窗口(用户界面),所有其他窗口户界面),所有其他窗口都在这个窗口之内都在这个窗口之内。模型窗口(模型窗口(Model Window),用于输入),用于输入LINGO优化模型(即优化模型(即LINGO程序)。程序)。状态行(最左边显状态行(最左边显示示“Ready”,表,表示示“准备就绪准备就绪”)当前时间当前时间 当前光标当前光标的位置的位置 打开文件:F3打印文件:F7复制:Ctrl+C取消操作:Ctrl+Z查找:Ctrl+F显示解答:Alt+O匹 配 括 号:Ctrl+P选 项 设 置:Ctrl+I关闭所有窗口:Alt+X在线帮助:F1新建文件:F2保存文件:F4剪切:Ctrl+X粘贴:Ctrl+V恢 复 操 作:Ctrl+Y定位某行:ctrl+T求解模型:Ctrl+S模型图示:Ctrl+K窗口后置:Ctrl+B平铺窗口:Alt+T上下文相关的帮助(5)工具栏工具栏(6)LINGO 模型的最基本特征:l有max=(或min=)l每行后面均有一个分号“;”l系数与变量间有“*”l首行可增添:”model:”,末行增添”end”maxmax=2*x+3*y;=2*x+3*y;4*x+3*y10;4*x+3*y10;3*x+5*y12;3*x+5*y12;Globaloptimalsolutionfound.Objectivevalue:7.454545Totalsolveriterations:2VariableValueReducedCostX1.2727270.000000Y1.6363640.000000RowSlackorSurplusDualPrice17.4545451.00000020.0000000.9090909E-0130.0000000.5454545 (7 7)LingoLingo的不同保存类型的不同保存类型“LG4LG4”表示表示LINGO LINGO 格式的格式的模型文件,是一种特殊的二模型文件,是一种特殊的二进制格式文件,保存了我们进制格式文件,保存了我们在模型窗口中所能够看到的在模型窗口中所能够看到的所有文本和其他对象及其格所有文本和其他对象及其格式信息,只有式信息,只有LINGO LINGO 能读能读出它,用其他系统打开这种出它,用其他系统打开这种文件时会出现乱码文件时会出现乱码 “LNGLNG”表示表示LINGOLINGO文本文文本文件,以这个格式保存模型时件,以这个格式保存模型时系统系统 将给出警告,因为模将给出警告,因为模型中的格式信息(如字体、型中的格式信息(如字体、颜色等)将会丢失颜色等)将会丢失 “LDTLDT”表示数据文件表示数据文件“LTFLTF”表示表示 命令脚本文件命令脚本文件 “LGRLGR”表示表示 报告文件报告文件 除除“LG4LG4”文件外,这里的另外文件外,这里的另外几种格式的文件其实都是普通几种格式的文件其实都是普通的文本文件,可以用任何文本的文本文件,可以用任何文本编辑器打开和编辑编辑器打开和编辑 运行状态窗口运行状态窗口Variables(变量数量):(变量数量):变量总数(变量总数(Total)、)、非线性变量数(非线性变量数(Nonlinear)、)、整数变量数(整数变量数(Integer)。)。Constraints(约束数量):(约束数量):约束总数(约束总数(Total)、)、非线性约束个数非线性约束个数(Nonlinear)。Nonzeros(非零系数数量):(非零系数数量):总数(总数(Total)、)、非线性项系数个数非线性项系数个数(Nonlinear)。Generator Memory Used(K)(内存使内存使用量用量)Elapsed Runtime(hh:mm:ss)(求解花费的时间)(求解花费的时间)(8 8)状态窗口的参数解释状态窗口的参数解释运行状态窗口运行状态窗口求解求解器器(求求解程解程序序)状状态框态框当前模型的类型当前模型的类型:LP,QP,ILP,IQP,PILP,PIQP,NLP,INLP,PINLP(以(以I开头表示开头表示IP,以,以PI开头表示开头表示PIP)当前解的状态当前解的状态:Global Optimum,Local Optimum,Feasible,Infeasible“(不可行不可行),Unbounded“(无界无界),Interrupted“(中断中断),Undetermined“(未确定未确定)解的目标函数值解的目标函数值 当前约束不满足的总量当前约束不满足的总量(不是不不是不满足的约束的个数满足的约束的个数):实数(即使实数(即使该值该值=0,当前解也可能不可行,当前解也可能不可行,因为这个量中没有考虑用上下界因为这个量中没有考虑用上下界命令形式给出的约束)命令形式给出的约束)目前为止的目前为止的迭代次数迭代次数 运行状态窗口运行状态窗口扩展扩展的求的求解器解器(求解求解程序程序)状态状态框框使用的特殊求解程序使用的特殊求解程序:B-and-B(分枝定界算法分枝定界算法)Global(全局最优求解程序全局最优求解程序)Multistart(用多个初始点求解的程序用多个初始点求解的程序)目前为止找到的可行目前为止找到的可行解的最佳目标函数值解的最佳目标函数值 目标函数值的界目标函数值的界 特殊求解程序当前运行步数:特殊求解程序当前运行步数:分枝数分枝数(对对B-and-B程序程序);子问题数子问题数(对对Global程序程序);初始点数初始点数(对对Multistart程序程序)有效步数有效步数 2 lingo编程2.1 LINGO模型构成的模型构成的4个段个段(1)集合段()集合段(SETS ENDSETS)(2)数据段()数据段(DATA ENDDATA)(3)初始段()初始段(INIT ENDINIT)(4)目)目标与与约束段束段 LingoLingo的编程的编程 优化问题的一种建模语言。使用者可以只用键优化问题的一种建模语言。使用者可以只用键入一行文字就可以建立起含有大规模变量的目入一行文字就可以建立起含有大规模变量的目标函数和成千上万条约束标函数和成千上万条约束 LINGOLINGO模型的构成模型的构成:4:4个段个段集合段(集合段(SETS ENDSETSSETS ENDSETS)数据段(数据段(DATA ENDDATADATA ENDDATA)初始段(初始段(INIT ENDINITINIT ENDINIT)目标与约束段目标与约束段2.2 集合段(1)集:集是一群相联系的对象(集部分是LINGO模型的一个可选部分,即一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们,集部分以关键字“sets:”开始,以“endsets”结束(2)成员:集的对象(3)属性:集成员可能有一个或多个与之有关联的特征,称为属性(属性值可以预先给定,也可以是未知的,有待于lINGO求解)(4)集的类型集合的类型 集合集合 派生集合派生集合 基本集合基本集合 稀疏集合稀疏集合 稠密集合稠密集合 元素列表法元素列表法 元素过滤法元素过滤法 直接列举法直接列举法 隐式列举法隐式列举法setname/member_list/:attribute_list;setname(parent_set_list)/member_list/:attribute_list;SETS:CITIES/A1,A2,A3,B1,B2/;ROADS(CITIES,CITIES)/A1,B1A1,B2A2,B1A3,B2/:D;ENDSETSSETS:STUDENTS/S1.S8/;PAIRS(STUDENTS,STUDENTS)|&2#GT#&1:BENEFIT,MATCH;ENDSETS说明:集名字必须严格符合标准命名规则:以字母或下划线(_)为首字符,其后由字母(AZ)、下划线、阿拉伯数字(0,1,9)组成的总长度不超过32个字符的字符串,且不区分大小写。如果集成员放在集定义中,那么对它们可采取显式罗列(必须为每个成员输入一个不同的名字,中间用空格或逗号搁开)和隐式罗列(不必罗列出每个集成员。可采用如下语法:setname/member1.memberN/:attribute_list;这里的 member1 是集的第一个成员名,memberN 是集的最末一个成员名。LINGO 将自动产生中间的所有成员名)两种方式。如果集成员不放在集定义中,那么可以在随后的数据部分定义它们,如:!集部分;sets:students:sex,age;endsets!数据部分;data:students,sex,age=John 1 16 Jill 0 14 Rose 0 17 Mike 1 13;enddata集合元素的隐式列举类类型型隐隐式列式列举举格式格式示例示例示例集合的元素示例集合的元素数字型数字型1.n1.n1.51.51,2,3,4,51,2,3,4,5字符字符-数字型数字型stringM.stringNstringM.stringNCar101.car208Car101.car208Car101,car102,Car101,car102,car208car208星期型星期型dayM.dayNdayM.dayNMON.FRIMON.FRIMON,TUE,WED,MON,TUE,WED,THU,FRITHU,FRI月份型月份型monthM.monthNmonthM.monthNOCT.JANOCT.JANOCT,NOV,DEC,OCT,NOV,DEC,JANJAN年份年份-月份型月份型monthYearM.montmonthYearM.monthYearNhYearNOCT2001.JANOCT2001.JAN20022002OCT2001,OCT2001,NOV2001,NOV2001,DEC2001,JAN2002DEC2001,JAN20022.3 运算符的运算符的优先先级 优优优优先先先先级级级级运算符运算符运算符运算符最高最高最高最高#NOT#NOT#(负负号)号)号)号)*/*/+#EQ#EQ#相等相等相等相等#NE#NE#不相等不相等不相等不相等#GT#GT#大大大大于于于于#GE#GE#大于或等于大于或等于大于或等于大于或等于#LT#LT#LE#LE#AND#OR#AND#OR#最低最低最低最低(=)(=)2.4 数据段数据段ldata:l变量量1=数据列;数据列;l变量量2=数据列;数据列;l;lEnddata例例 1sets:set1/A,B,C/:X,Y;endsetsdata:X=1,2,3;!注意属性值的个数必须等于集成员的个数。Y=4,5,6;enddata例2 有时只想为一个集的某个属性的部分成员指定值,而让该属性的其余成员的保持未知,以便让LINGO去求出它们的最优值。在数据声明中输入两个相连的逗号表示该位置对应的集成员的属性值未知。两个逗号间可以有空格。sets:years/1.5/:capacity;endsetsdata:capacity=,34,20,;enddata属性capacity的第2个和第3个值分别为34和20,其余的未知2.5初始段初始段linit:l变量列量列=数据列;数据列;lEndinit说明:明:(1)初始部分输入的值仅被LINGO求解器当作初始点来用,并且仅仅对非线性模型有用。和数据部分指定变量的值不同,LINGO求解器可以自由改变初始部分初始化的变量的值。(2)初始部分的初始声明规则和数据部分的数据声明规则相同。也就是说,我们可以在声明的左边同时初始化多个集属性,可以把集属性初始化为一个值,可以用问号实现实时数据处理,还可以用逗号指定未知数值。init:X,Y=0,.1;endinitY=log(X);X2+Y2=1;好的初始点会减少模型的求解时间。init:X,Y=,.1;endinitinit:X,Y=?,.1;endinit2.6 目标和约束段 目标函数 约束条件2.7 各种函数(1)常用函数lsin(x);lcos(x);ltan(x);lexp(x);llog(x);labs(x);lsmax(x);lsmin(x);lsign(x);符号函数(与数学中的符号函数一致)lfloor(x);原点方向取整(2)变量界定函数量界定函数bnd(L,x,U):限定LxU;bin(x):限定x取0、1值;free(x):取消x的非负限制;gin(x):限定x为整数(general interger)(3)集合循集合循环函数函数function(setname(index_list)|condition:expression)其中function=for、max、min or sum。(4)txt文件与文件与lingo变量之量之间的数据的数据连接接file(外部文件路径文件名.txt):把外部txt文件数据传到lingo;txt(外部文件路径文件名.txt):把lingo变量数据传到外部.txt文件.sets:s/1.10/;ss(s,s):x1;endsetsdata:x1=file(C:Documents and SettingsOwner桌面t.txt);enddatasets:ss/1.10/;ww(ss,ss):s;endsetsdata:text(C:Documents and SettingsOwner桌面o.txt)=s;enddata(5)Lingo与与excel的数据的数据链接接lX=ole(路径文件名.xls,范围):xls数据给了lingo的x;lole(已有的路径文件名.xls,范围)=x:把lingo中的x给了已有的excel文件。(6)集合集合处理函数理函数lin(setname,&1,&2,&3):如果setname的元素包含本集合的元素值为1,否则为0。如:sets:stu/zhang,li,zhao/:s;pass/zhang,li/:p;false(stu)|#not#in(pass,&1):f;endsetsl index(setname,set_element):给出set_element在setname中的下标。如:sets:stu/zhang,li,zhao/:s;endsetsa=index(stu,li);lwrap(I,N):例如wrap(1,7)1,wrap(2,7)2,wrap(n*7,7)7,wrap(8,7)1与 而mod(n7,7)=0(n为正整数),可见就是正好是倍数时二者有区别。lsize(setname):集合大小。lif(logical_condition,true_result,false_resule)3 应用举例例例1 给定一个直角三角形,求包含定一个直角三角形,求包含该三角形的最小正方形三角形的最小正方形 sets:object/1.3/:f;endsetsdata:a,b=3,4;enddataf(1)=a*sin(x);f(2)=b*cos(x);f(3)=a*cos(x)+b*sin(x);min=smax(f(1),f(2),f(3);bnd(0,x,1.57);例2 求向量5,1,3,4,6,10前5个数最小值,后3个数最大值。sets:number/1.6/:x;endsetsdata:x=5134610;enddataminv=min(number(i)|i#le#5:x);!或者minv=smin(x1(1),x(2),x(3),x(4),x(5);maxv=max(number(i)|i#ge#4:x);!或者maxv=smax(x(4),x(5),x(6);end例例3 加工奶制品的生产计划加工奶制品的生产计划1桶牛奶3公斤A112小时8小时4公斤A2或获利24元/公斤获利16元/公斤50桶牛奶 时间480小时 至多加工100公斤A1 制订生产计划,使每天获利最大 35元可买到1桶牛奶,买吗?若买,每天最多买多少?可聘用临时工人,付出的工资最多是每小时几元?A1的获利增加到30元/公斤,应否改变生产计划?每天:1桶牛奶3公斤A112小时8小时4公斤A2或获利24元/公斤获利16元/公斤x1桶牛奶生产桶牛奶生产A1 x2桶牛奶生产桶牛奶生产A2 获利获利 243x1 获利获利 164 x2 每天获利每天获利约束条件约束条件线性规线性规划模型划模型(LP)时间时间480小时小时 至多加工至多加工100公斤公斤A1 50桶牛奶桶牛奶 每天每天加工能力加工能力原料供应原料供应劳动时间劳动时间非负约束非负约束目标函数目标函数决策变量决策变量model:max=72*x1+64*x2;x1+x250;12*x1+8*x2480;3*x1100;endGlobal optimal solution found.Objective value:3360.000 Total solver iterations:2 Variable Value Reduced Cost X1 20.00000 0.000000 X2 30.00000 0.000000 Row Slack or Surplus Dual Price 1 3360.000 1.000000 2 0.000000 48.00000 3 0.000000 2.000000 4 40.00000 0.000000模型求解与解释模型求解与解释 reduced cost值值表表示示当当该该非非基基变变量量增增加加一一个个单单位位时时(其其他他非非基基变变量量保保持持不不变变)目目标标函函数数减减少的量少的量(对对max型问题型问题)原料无剩余原料无剩余时间无剩余时间无剩余加工能力剩余加工能力剩余40三三种种资资源源“资源资源”剩余为零的约束为紧约束(有效约束)剩余为零的约束为紧约束(有效约束)影子价格影子价格:最优最优解下解下“资源资源”增增加加1单位时单位时“效效益益”的增量的增量 原料增原料增1单位单位,利润增利润增48时间加时间加1单位单位,利润增利润增2 能力增减不影响利润能力增减不影响利润35元可买到元可买到1桶牛奶,要买吗?桶牛奶,要买吗?35=30;end例5 LINGO模型 运输(lp)、选址(nlp)问题某公司有某公司有6个建筑工地,位置坐标为个建筑工地,位置坐标为(ai,bi)(单位:公里单位:公里),水泥日水泥日用量用量di(单位:吨)单位:吨)假设:料假设:料场和工地场和工地之间有直之间有直线道路线道路线性规划模型线性规划模型决策变量:决策变量:ci j(i工地从工地从j料场运来的料场运来的水泥量)水泥量)12维维sets:demand/1.6/:a,b,d;supply/1.2/:x,y,e;link(demand,supply):c;endsetsdata:a=1.258.750.55.7537.25;b=1.250.754.7556.57.75;d=3547611;e=20,20;x,y=5,1,2,7;enddatainit:endinitobjmin=sum(link(i,j):c(i,j)*(x(j)-a(i)2+(y(j)-b(i)2)(1/2);for(demand(i):demand_consum(supply(j):c(i,j)=d(i););for(supply(i):supply_consum(demand(j):c(j,i)=e(i););end2)改建两个新料场,需要确定新料场位置)改建两个新料场,需要确定新料场位置(xj,yj)和运量和运量cij,在其它,在其它条件不变下使总吨公里数最小。条件不变下使总吨公里数最小。决策变量:决策变量:ci j,(xj,yj)16维维非线性规划模型非线性规划模型sets:demand/1.6/:a,b,d;supply/1.2/:x,y,e;link(demand,supply):c;endsetsdata:a=1.258.750.55.7537.25;b=1.250.754.7556.57.75;d=3547611;e=20,20;enddatainit:x,y=5,1,2,7;endinitobjmin=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);例6 求解二次求解二次优化化min=x12+x22-4*x1+4;x2-x12;x1-x2=0);!对于每一个存在于每一个存在优先关系的作先关系的作业对(I,J)来来说,I先先J后安排后安排;FOR(STATION(K):SUM(TXS(I,K):T(I)*X(I,K)=required(J);end例例16 人力资源分配问题人力资源分配问题人力资源分配问题人力资源分配问题某个中型百货商场对售货人员(周某个中型百货商场对售货人员(周200200元)的需求经统计如下表元)的需求经统计如下表,为了保证销售人为了保证销售人员充分休息,销每周工作员充分休息,销每周工作5 5天,休息天,休息2 2天。问要使工资开支最省至少需要多少售货天。问要使工资开支最省至少需要多少售货员?且给出一个销售人员工作时间安排表。员?且给出一个销售人员工作时间安排表。星期星期1 12 23 34 45 56 67 7人数人数1616151512121414161618181919sets:people/1.22/;days/mon.sun/:required;link(people,days):x;endsetsdata:required=20161316191412;enddatafor(days(k):sum(people(i):x(i,k)=required(k);for(people(i):sum(days(k):x(i,k)=5);for(link:bin(x);data:data:ole(ole(C:DocumentsandSettingsOwnerC:DocumentsandSettingsOwner桌面桌面AA.xls,A1:G22)=x;AA.xls,A1:G22)=x;enddataenddata例例17 填数填数问题 分分别把把1,2,16填到填到图示的示的16个圈内,个圈内,使得每个三角形上的所有圈内的数的和使得每个三角形上的所有圈内的数的和为81(共(共4个三角形)。个三角形)。把圆圈编号决策变量第i个圈填数ajnoaj=j,1j16目标函数圈圈1 12 23 34 45 56 67 78 89 91010111112121313141415151616a a13137 78 89 93 3121214144 4111110102 216165 56 615151 1约束条件计算结果sets:number/1.16/:a;chengji(number,number):e;tri1(number)/1 2 3 4 5 6 7 8 9/;tri2(number)/1 2 3 4 16 15 12 11 10/;tri3(number)/4 5 6 7 14 13 12 15 16/;tri4(number)/7 8 9 1 10 11 12 13 14/;endsetsdata:a=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16;enddatamax=sum(chengji(i,j):e(i,j)*a(j);for(number(i):sum(chengji(i,j):e(i,j)=1);for(number(j):sum(chengji(i,j):e(i,j)=1);for(chengji(i,j):bin(e(i,j);sum(number(j):sum(tri1(i):e(i,j)*a(j)=81;sum(number(j):sum(tri2(i):e(i,j)*a(j)=81;sum(number(j):sum(tri3(i):e(i,j)*a(j)=81;sum(number(j):sum(tri4(i):e(i,j)*a(j)=81;sum(chengji(i,j):e(i,j)*a(j)=136;作业:九宫填数问题:作业:九宫填数问题:在每一个小九宫格中,分别填在每一个小九宫格中,分别填上上1至至9的数字,让整个大九宫格每一列、每一行的数的数字,让整个大九宫格每一列、每一行的数字都不重复。字都不重复。决策变量mn宫ij格填数akno约束条件对每一个m,n,k对每一个m,i,k对每一个n,j,k对每一个每,m,n,i,j例例18 九宫填数九宫填数对每个m,n对每个m,i对每个n,jemnijk取1或0目标函数结算结果sets:kk/1.9/:a;mm/1.3/;nn/1.3/;ii/1.3/;jj/1.3/;link(mm,nn,ii,jj,kk):e;link1(ii,jj);link2(nn,jj);link3(mm,ii);link4(ii,jj,kk);link5(nn,jj,kk);link6(mm,ii,kk);endsetsdata:a=123456789;enddatamax=sum(link:e*a);for(mm(m):for(nn(n):for(kk(k):sum(link1(i,j):e(m,n,i,j,k)=1;);););for(mm(m):for(ii(i):for(kk(k):sum(link2(n,j):e(m,n,i,j,k)=1;);););for(nn(n):for(jj(j):for(kk(k):sum(link3(m,i):e(m,n,i,j,k)=1;);););for(mm(m):for(nn(n):for(ii(i):for(jj(j):sum(kk(k):e(m,n,i,j,k)=1;););););for(mm(m):for(nn(n):sum(link4(i,j,k):e(m,n,i,j,k)*a(k)=45;););for(mm(m):for(ii(i):sum(link5(n,j,k):e(m,n,i,j,k)*a(k)=45;););for(nn(n):for(jj(j):sum(link6(m,i,k):e(m,n,i,j,k)*a(k)=45;););for(link:bin(e);例例19 旅行销售(旅行销售(TSP:Traveling Salesman Problem)问题)问题又称货郎担问题:某推销员,从城市又称货郎担问题:某推销员,从城市1出发,遍访城出发,遍访城市市2,3,4,5,6各一次,最后返回城市各一次,最后返回城市1。Cij为从为从i城到城到j城的旅行费用城的旅行费用(见左表见左表),问如何安排旅行顺序使得总,问如何安排旅行顺序使得总费用最少。费用最少。01476962866140962866997696066994196286604154286699410100669941541000决策变量决策变量由i城去j城no目标函数目标函数约束条件约束条件上述两个约束对TSP是必要但不充分有可能出现多个回路显然该两个回路也满足约束条件,但不是TSP解下面附加一个充分的约束条件,以避免产生多个回路下面附加一个充分的约束条件,以避免产生多个回路第i个城市第k次访问顺序数,取值为0,1,5.附加约束条件(1)任何含子巡回的路线都不满足该约束条件:此时必有不含城市1的子回路i1i2ik=i1,若上式成立k个式相加(2)任何总巡回i1i2i6i1,都满足该约束条件总回路上的边model:sets:city/1.6/:u;link(city,city):dist,x;endsetsdata:dist=0 14 76 96 28 66 14 0 96 28 66 99 76 96 0 66 99 41 96 28 66 0 41 54 28 66 99 41 0 100 66 99 41 54 100 0;enddatamin=sum(link:dist*x);FOR(city(K):sum(city(I)|I#ne#K:x(I,K)=1;sum(city(J)|J#ne#K:x(K,J)=1);for(city(I)|I#gt#1:for(city(J)|J#gt#1#and#I#ne#J:u(I)-u(J)+6*x(I,J)=5););for(city(I)|I#gt#1:u(I)=1);for(city:gin(u);for(link:bin(x);end计算结果例20 钻井布局例例19 钻井布局井布局(1999年全国建模B题)Pk 1 2 3 4 5 6 7 8 9 10 11 12a k 0.50 1.41 3.00 3.37 3.40 4.72 4.72 5.43 7.57 8.38 8.98 9.50b k 2.00 3.50 1.50 3.51 5.50 2.00 6.24 4.10 2.01 4.50 3.41 0.80 已有旧井已有旧井12眼眼在一个区域内按纵横等距在一个区域内按纵横等距(1个单位个单位)的正方形网格点来布置井位,进行的正方形网格点来布置井位,进行“撒网式撒网式”全面钻探全面钻探,若一个已知点,若一个已知点 Pi与某个网格结点与某个网格结点 Wij的距离的距离0.05 就利用旧井(规定两点间的距离为其横向距离及纵向距离的最大就利用旧井(规定两点间的距离为其横向距离及纵向距离的最大值值),在平面上平行移动网格),在平面上平行移动网格N,使可利用的旧井尽可多,使可利用的旧井尽可多,试确定网,试确定网格。格。解:由于解:由于x1=min(x)=0.5,x2=max(x)=9.5,y1=min(y)=0.8,y2=max(y)=6.24,故取故取 xi=0,1,2,3,4,5,6,7,8,9,10,yj=0,1,2,3,4,5,6,7,为网格结点坐标为网格结点坐标.下面分别用MATLAB和lingo软件去方法去解决该问题。分析:分析:由于钻井布局为平行坐标轴的单位边长的方形网格,为简化问题,我们只取ak、bk的小数部分,即(1)MATLAB求解模型求解模型可变成只找一个网格顶点(x0,y0),使得在该点的以0.05邻域半径的方形邻域内含有最多的旧井数。当a1(k)、b1(k)0.5时,取为1的余数。利用MATLAB(程序参看下页)计算结果为:(x0,y0)=(0.39,0.5025)即,此时2、4、5、10可用(最优)。%matlab_pro;a=0.501.413.003.373.404.724.725.437.578.388.989.50;b=2.003.501.503.515.502.006.244.102.014.503.410.80;a1=a-floor(a);b1=b-floor(b);plot(a1,b1,r.)axis(-1,1,-1,1);x2=a1=(0.38-0.05)&a1=(0.5-0.05)&a1=(0.5+0.05)x3=a1(2,4,5,10)y3=b1(2,4,5,10)meanx=mean(x3)meany=mean(y3)ex=abs(x3-meanx)ey=abs(y3-meany)(2)LINGO求解模型求解模型s:水平方向网格平移量t:铅锤方向网格平移量x1i=xi+s:网格结点横坐标y1i=yi+t:网格结点纵坐标决策变量第k个旧井到第(i,j)个网格的距离0.05否目标函数约束条件可利用的旧井最多0.4s0.5,0.5t0.6e(4,6,5)=1e(2,4,2)=1计算结果e(4,4,4)=1e(9,5,10)=1!lingo_pro;sets:xi/1.11/:x,x1;yj/1.8/:y,y1;pk/1.12/:a,b;link2(xi,yj,pk):e;ff/1/:f,g;endsetsdata:a=0.501.413.003.373.404.724.725.437.578.388.989.50;b=2.0,3.501.503.515.502.006.244.102.014.503.410.80;x=0,1,2,3,4,5,6,7,8,9,10;y=0,1,2,3,4,5,6,7;enddatafor(xi(i):x1(i)=x(i)+x0);for(yj(j):y1(j)=y(j)+y0);for(link2(i,j,k):e(i,j,k)=if(smax(abs(x1(i)-a(k),abs(y1(j)-b(k)#le#0.05,1,0);max=sum(link2:e);bnd(0.4,x0,0.5);bnd(0.5,y0,0.6);end例例例例21 21 销售点设置销售点设置销售点设置销售点设置 A1:34人A2:29人A5:56人A3:42人A4:21人A6:18人A7:71人7个大学生区分布及人数一家出版社准备在A1-A7大学生区开设两个销售点,每个销售点只能向本区和相邻区的大学生售书。这两个销售点应该设在何处,才能使所供应的学生数量最大?设售书点设在i区供应人数为xi决策变量第k个售书点设在i区第k个售书点不设在i区i=1,2,7;k=1,2目标函数约束条件每个售书点只能设在一个区每个区至多设一个售书点sets:place/a1.a7/:people_num;!people_num为各区域读书人数;number/shop1.shop2/;links(place,number):e;endsetsdata:people_num=105,182,126,237,124,166,110;enddatamax=sum(links(i,k):e(i,k)*people_num(i);for(place(i):sum(number(k):e(i,k)=1);for(number(k):sum(place(i):e(i,k)=1;);for(links:bin(e);计算结果E(A2,SHOP2)1E(A4,SHOP1)1例例22 面试问题面试问题(1)四名不同专业的学生参加招聘面试,面试分三阶段面试:秘书面试、主管复试和经理面试,在任何一个阶段均按甲、乙、丙,丁顺序,面试时间参看下表(时间单位:分)秘书面试秘书面试主管复试主管复试经理面试经理面试同学甲同学甲131315152020同学乙同学乙101020201818同学丙同学丙202016161010同学丁同学丁8 810101515面试时间tij这4名同学约定他们全部面试完以后一起离开公司,假定现在时间是早晨8:00问他们最早何时能离开公司?xik:第i个学生第k个面试阶段开始时间目标函数约束条件每个学生k阶段结束时间早于k+1阶段开始对每个k,后人始晚前人结束时间k阶段开始晚于前段结束sets:students/s1.s4/;!学生集三阶段面试模型;phases/p1.p3/;!阶段集;sp(students,phases):t,x;ss(students,students)/s1,s2s2,s3s3,s4/;endsetsdata:t=13152010201820161081015;enddata!单个学生面试阶段先后次序的约束;for(sp(i,k)|k#LT#3:x(i,k)+t(i,k)=x(i
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服