实验二利用求解整数规划及非线性规划问题.ppt
温州大学城市学院温州大学城市学院关于实验二利用求解整数规划及非线性规划问题现在学习的是第1页,共22页变量定界函数变量定界函数:bin(x):限制限制 x 为为 0 或或 1.gin(x):限制限制 x 为整数为整数.实验二实验二 利用利用Lingo求解整数规划及非线性规划问题求解整数规划及非线性规划问题现在学习的是第2页,共22页例例 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 求解规划问题求解规划问题现在学习的是第3页,共22页例例 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 程序程序:现在学习的是第4页,共22页例例 3 用用Lingo软件求解非线性规划问题软件求解非线性规划问题min=(x1-1)2+(x2-2)2;x2-x1=1;x1+x2=2;Lingo 程序程序:现在学习的是第5页,共22页注意注意:Lingo 默认默认变量变量的取值从的取值从0到到正无穷大正无穷大,变量定界函数变量定界函数可以改变默认状态可以改变默认状态.free(x):取消对变量取消对变量x的限制的限制(即即x可取任意实数值可取任意实数值)例例 4 求函数求函数 的最小值的最小值.现在学习的是第6页,共22页解解:编写编写Lingo 程序如下程序如下:min=(x+2)2+(y-2)2;free(x);例例 4 求函数求函数 的最小值的最小值.求得结果求得结果:x=-2,y=2现在学习的是第7页,共22页二、二、Lingo 循环编程语句循环编程语句(1)集合集合的定义的定义包括如下参数包括如下参数:1)集合集合的名称的名称.命名规则命名规则:以以字母开头字母开头,后面是后面是字母字母或或下划线下划线.字母不区分大小写字母不区分大小写.2)集合集合包含的元素包含的元素(可选可选).3)集合集合中元素的所有属性中元素的所有属性(可选可选).例例4 Math,English,totalsets:endsetsstudentsJohn,Jill,Rose,Mikesets:students/John,Jill,Rose,Mike/:Math,English,total;endsets现在学习的是第8页,共22页(2)数据赋值数据赋值例例4 data:enddatadata:Math=80,85,90,70;English=75,80,72,60;enddata格式格式:(1)集合集合的定义的定义例例4 sets:students/John,Jill,Rose,Mike/:Math,English,total;endsets现在学习的是第9页,共22页(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!数学的最高分数学的最高分;!英语的最高分英语的最高分;!数学的平均分数学的平均分;!每个学生数学与英语分数之和每个学生数学与英语分数之和.现在学习的是第10页,共22页(4)衍生集合衍生集合的定义的定义.包括如下参数包括如下参数:1)衍生集合衍生集合的名称的名称.3)衍生集合衍生集合包含的元素包含的元素(可选可选).4)集合集合中元素的所有属性中元素的所有属性(可选可选).例例5 link2)衍生集合衍生集合的父集合名称的父集合名称.sets:ren/A,B,C,D/:rent;job/1.5/:jobt;link(ren,job):time;endsetsrenjobtime注注:若没有指明元素列表若没有指明元素列表,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)现在学习的是第11页,共22页(5)Lingo 内部的数学函数及其返回值内部的数学函数及其返回值abs(x):返回返回x的绝对值的绝对值sin(x):返回返回x的正弦值的正弦值cos(x):返回返回x的余弦值的余弦值tan(x):返回返回x的正切值的正切值log(x):返回返回x的自然对数值的自然对数值exp(x):返回返回ex的值的值sqr(x):返回返回x的平方值的平方值.该函数可以用表达式该函数可以用表达式x2代替代替sqrt(x):返回返回x的正的平方根的正的平方根.可以用表达式可以用表达式x(1/2)代替代替现在学习的是第12页,共22页三、三、Lingo 循环编程举例循环编程举例例例5 现有五名工人甲现有五名工人甲,乙乙,丙丙,丁丁,戊戊,完成五项工作完成五项工作A,B,C,D,E,所需时间列表如下所需时间列表如下 工作 时间(小时)工人ABCDE甲10.521.754乙2131.53.5丙1.751.52.513丁2.521.50.54戊11.5223(2)求每份工作最短的用时求每份工作最短的用时.(1)求每个人的最短工作时间求每个人的最短工作时间;问题问题:现在学习的是第13页,共22页三、三、Lingo 循环编程举例循环编程举例例例5 sets:ren/A,B,C,D,E/:rent;job/1.5/:jobt;link(ren,job):time;endsetsdata: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;enddataS=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);!定义集合定义集合;!数据赋值数据赋值;!所有工作时间求和所有工作时间求和;!求每个人的最短工作时间求每个人的最短工作时间;!求每份工作最短的用时求每份工作最短的用时;现在学习的是第14页,共22页三、三、Lingo 循环编程举例循环编程举例例例5 用用Lingo循环编程语句求解线性规划模型循环编程语句求解线性规划模型现在学习的是第15页,共22页三、三、Lingo 循环编程举例循环编程举例sets:bliang/1,2/:x,a;yshu/1,2,3/:b;xshu(yshu,bliang):c;endsetsdata:a=72,64;b=50,480,100;c=1,1 12,8 3,0;enddatamax=sum(bliang(i):a(i)*x(i);for(yshu(j):sum(bliang(i):x(i)*c(j,i)=b(j);!定义集合定义集合;!数据赋值数据赋值;!目标函数目标函数;!约束条件约束条件;例例5 用用Lingo循环编程语循环编程语句求解线性规划模型句求解线性规划模型现在学习的是第16页,共22页例例6、指派问题、指派问题公司在各地有公司在各地有4项业务,选定了项业务,选定了4位业务员去处理。由于业务能位业务员去处理。由于业务能力、经验和其它情况不同,力、经验和其它情况不同,4业务员去处理业务员去处理4项业务的费用(单项业务的费用(单位:元)各不相同,见下表:位:元)各不相同,见下表:应当怎样分派任务,才能使总的费用最小?应当怎样分派任务,才能使总的费用最小?业务1234111008001000700260050030080034008001000900411001000500700业务员业务员现在学习的是第17页,共22页这是一个最优指派问题。引入如下变量:设矩阵a(4,4)为指派矩阵,其中a(i,j)为第i个业务员做第j项业务的业务费。则可以建立如下模型:现在学习的是第18页,共22页MODEL:SETS:person/A,B,C,D/;task/1.4/;assign(person,task):a,x;ENDSETSDATA:a=1100,800,1000,700,600,500,300,800,400,800,1000,900,1100,1000,500,700;ENDDATAmin=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);ENDLINGO程序如下:现在学习的是第19页,共22页上机作业题 1、某游泳队拟选用甲、某游泳队拟选用甲,乙乙,丙丙,丁丁 四名游泳运动员组成一个四名游泳运动员组成一个 4100 m 混合泳接力队混合泳接力队,参加今年的锦标赛参加今年的锦标赛.他们的他们的 100 m 自由自由泳泳,蛙泳蛙泳,蝶泳蝶泳,仰泳的成绩如表所示仰泳的成绩如表所示乙乙丙丙丁丁56成绩成绩自由泳自由泳/s甲甲63575574蛙泳蛙泳/s69777661蝶泳蝶泳/s65636263仰泳仰泳/s716762 甲甲,乙乙,丙丙,丁丁 四名队员各自游什么姿势四名队员各自游什么姿势,才最有才最有可能取得好成绩可能取得好成绩?现在学习的是第20页,共22页上机作业题2、某旅馆每日至少需要下列数量的服务员每班服务、某旅馆每日至少需要下列数量的服务员每班服务 员从开始上班到下班连续工作八小时,为满足每班所需要的最少服务员从开始上班到下班连续工作八小时,为满足每班所需要的最少服务员数,这个旅馆至少需要多少服务员。员数,这个旅馆至少需要多少服务员。班次时间段人数班次时间段人数106:0010:0080418:0022:0070210:0014:0090522:0002:0040314:0018:0085602:0006:0030现在学习的是第21页,共22页感谢大家观看现在学习的是第22页,共22页