资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,利用Lingo求解整数规划及非线性规划问题,实验目的,:,1,、掌握线性整数规划模型在,lingo,中的求解,并能达到灵活运用。,2,、学会用,Lingo,对非线性规划问题进行求解。,实验二,利用,Lingo,求解整数规划及非线性规划问题,变量定界函数,:,bin(x):,限制,x,为,0,或,1.,gin(x):,限制,x,为整数,.,实验二,利用,Lingo,求解整数规划及非线性规划问题,例,1,用,Lingo,软件求解,0-1,规划问题,max=2*x1+5*x2+3*x3+4*x4;,-4*x1+x2+x3+x4=0;,-2*x1+4*x2+2*x3+4*x4=1;,x1+x2-x3+x4=1;,bin(x1);bin(x2);bin(x3);bin(x4);,Lingo,程序,:,一、用,Lingo,求解规划问题,例,2,用,Lingo,软件求解整数规划问题,min=2*x1+5*x2+3*x3;,-4*x1-x2+x3=0;,-2*x1+4*x2-2*x3=2;,x1-x2+x3=2;,gin(x1);gin(x2);gin(x3);,Lingo,程序,:,例,3,用,Lingo,软件求解非线性规划问题,min=(x1-1)2+(x2-2)2;,x2-x1=1;,x1+x2=2;,Lingo,程序,:,注意,:,Lingo,默认,变量,的取值从,0,到,正无穷大,变量定界函数,可以改变默认状态,.,free(x,):,取消对变量,x,的限制,(,即,x,可取任意实数值,),例,4,求函数 的最小值,.,解,:,编写,Lingo,程序如下,:,min=(x+2)2+(y-2)2;,free(x);,例,4,求函数 的最小值,.,求得结果,:,x=-2,y=2,二、,Lingo,循环编程语句,(1),集合,的定义,包括如下参数,:,1),集合,的名称,.,命名规则,:,以,字母开头,后面是,字母,或,下划线,.,字母不区分大小写,.,2),集合,包含的元素,(,可选,).,3),集合,中元素的所有属性,(,可选,).,例,4,Math,English,total,sets:,endsets,students,John,Jill,Rose,Mike,sets:,students,/,John,Jill,Rose,Mike,/:,Math,English,total,;,endsets,(2),数据赋值,例,4,data:,enddata,data:,Math=80,85,90,70;,English=75,80,72,60;,enddata,格式,:,(1),集合,的定义,例,4,sets:,students,/,John,Jill,Rose,Mike,/:,Math,English,total,;,endsets,(3),集合,的,循环函数,集合,的,循环函数,可以使所有的元素重复完成一些操作,.,函数,函数功能,for,形成集合,所有元素,需满足的约束条件,sum,计算集合中元素所在表达式的,和,min,计算集合中元素所在表达式的,最小值,max,计算集合中元素所在表达式的,最大值,maxM,=,max(students(i):Math,);,maxE,=,max(students(i):English,);,averageM,=sum(students(i):Math)/4;,for(students(i):total(i,)=,Math(i)+English(i,);,例,4,!,数学的最高分,;,!,英语的最高分,;,!,数学的平均分,;,!,每个学生数学与英语分数之和,.,(4),衍生集合,的定义,.,包括如下参数,:,1),衍生集合,的名称,.,3),衍生集合,包含的元素,(,可选,).,4),集合,中元素的所有属性,(,可选,).,例,5,link,2),衍生集合,的父集合名称,.,sets:,ren,/A,B,C,D/:rent;,job,/1.5/:,jobt,;,link,(ren,job,):,time,;,endsets,ren,job,time,注,:,若没有指明元素列表,LINGO,将用父集合元素的所有组合作为衍生集合的元素,.,(A,1),(A,2),(A,3),(A,4)(A,5),(B,1),(B,2),(B,3),(B,4)(B,5),(C,1),(C,2),(C,3),(C,4)(C,5),(D,1),(D,2),(D,3),(D,4)(D,5),(5)Lingo,内部的数学函数及其返回值,abs(x,):,返回,x,的绝对值,sin(x,):,返回,x,的正弦值,cos(x,):,返回,x,的余弦值,tan(x,):,返回,x,的正切值,log(x,):,返回,x,的自然对数值,exp(x,):,返回,e,x,的值,sqr(x,):,返回,x,的平方值,.,该函数可以用表达式,x2,代替,sqrt(x,):,返回,x,的正的平方根,.,可以用表达式,x(1/2),代替,三、,Lingo,循环编程举例,例,5,现有五名工人甲,乙,丙,丁,戊,完成五项工作,A,B,C,D,E,所需时间列表如下,工作,时间,(,小时,),工人,A,B,C,D,E,甲,1,0.5,2,1.75,4,乙,2,1,3,1.5,3.5,丙,1.75,1.5,2.5,1,3,丁,2.5,2,1.5,0.5,4,戊,1,1.5,2,2,3,(2),求每份工作最短的用时,.,(1),求每个人的最短工作时间,;,问题,:,三、,Lingo,循环编程举例,例,5,sets:,ren,/A,B,C,D,E/:rent;,job/1.5/:jobt;,link,(ren,job):,time,;,endsets,data:,time,=1,0.5,2,1.75,4,2,1,3,1.5,3.5,1.75,1.5,2.5,1,3,2.5,2,1.5,0.5,4,1,1.5,2,2,3;,enddata,S=,sum,(link(i,j):time(i,j,);,for,(ren(i):rent,=,min,(job(j):time(i,j,);,for,(job(j):jobt,=,min,(ren(i):time(i,j,);,!,定义集合,;,!,数据赋值,;,!,所有工作时间求和,;,!,求每个人的最短工作时间,;,!,求每份工作最短的用时,;,三、,Lingo,循环编程举例,例,5,用,Lingo,循环编程语句求解线性规划模型,三、,Lingo,循环编程举例,sets:,bliang/1,2/:x,a;,yshu/1,2,3/:b;,xshu(yshu,bliang):c,;,endsets,data:,a=72,64;,b=50,480,100;,c=1,1,12,8,3,0;,enddata,max=,sum,(bliang(i):a(i,)*,x(i,);,for,(yshu(j):,sum,(bliang(i):x(i,)*,c(j,i,)=,b(j,);,!,定义集合,;,!,数据赋值,;,!,目标函数,;,!,约束条件,;,例,5,用,Lingo,循环编程语句求解线性规划模型,例,6,、指派问题,公司在各地有,4,项业务,选定了,4,位业务员去处理。由于业务能力、经验和其它情况不同,,4,业务员去处理,4,项业务的费用(单位:元)各不相同,见下表:,应当怎样分派任务,才能使总的费用最小?,业务,1,2,3,4,1,1100,800,1000,700,2,600,500,300,800,3,400,800,1000,900,4,1100,1000,500,700,业务员,这是一个最优指派问题。引入如下变量:,设矩阵,a(4,4),为指派矩阵,其中,a(i,j,),为第,i,个业务员做第,j,项业,务的业务费。则可以建立如下模型:,MODEL:,SETS:,person/A,B,C,D/;,task/1.4/;,assign(person,task):a,x,;,ENDSETS,DATA:,a=1100,800,1000,700,600,500,300,800,400,800,1000,900,1100,1000,500,700;,ENDDATA,min=,sum(assign:a,*x);,for(person(i):sum(task(j):x(i,j,)=1);,for(task(j):sum(person(i):x(i,j,)=1);,for(assign(i,j):bin(x(i,j,);,END,LINGO,程序如下:,上机作业题,1,、某游泳队拟选用甲,乙,丙,丁 四名游泳运动员组成一个,4100 m,混合泳接力队,参加今年的锦标赛,.,他们的,100 m,自由泳,蛙泳,蝶泳,仰泳的成绩如表所示,乙,丙,丁,56,成绩,自由泳,/s,甲,63,57,55,74,蛙泳,/s,69,77,76,61,蝶泳,/s,65,63,62,63,仰泳,/s,71,67,62,甲,乙,丙,丁 四名队员各自游什么姿势,才最有可能取得好成绩,?,上机作业题,2,、某旅馆每日至少需要下列数量的服务员每班服务 员从开始上班到下班连续工作八小时,为满足每班所需要的最少服务员数,这个旅馆至少需要多少服务员。,班次,时间段,人数,班次,时间段,人数,1,06:00,10:00,80,4,18:00,22:00,70,2,10:00,14:00,90,5,22:00,02:00,40,3,14:00,18:00,85,6,02:00,06:00,30,上机作业题,谢谢大家!,
展开阅读全文