实验二利用Lingo求解整数规划及非线性规划问题.ppt
- 文档编号:18847753
- 上传时间:2024-01-22
- 格式:PPT
- 页数:22
- 大小:763.50KB
实验二利用Lingo求解整数规划及非线性规划问题.ppt
《实验二利用Lingo求解整数规划及非线性规划问题.ppt》由会员分享,可在线阅读,更多相关《实验二利用Lingo求解整数规划及非线性规划问题.ppt(22页珍藏版)》请在冰点文库上搜索。
实验目的:
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)集合的循环函数,集合的循环函数可以使所有的元素重复完成一些操作.,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将用父集合元素的所有组合作为衍生集合的元素.,(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)代替,三、Lingo循环编程举例,例5,现有五名工人甲,乙,丙,丁,戊,完成五项工作A,B,C,D,E,所需时间列表如下,三、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,42,1,3,1.5,3.51.75,1.5,2.5,1,32.5,2,1.5,0.5,41,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循环编程举例,三、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,112,83,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项业务的费用(单位:
元)各不相同,见下表:
应当怎样分派任务,才能使总的费用最小?
业务员,这是一个最优指派问题。
引入如下变量:
设矩阵a(4,4)为指派矩阵,其中a(i,j)为第i个业务员做第j项业务的业务费。
则可以建立如下模型:
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);END,LINGO程序如下:
上机作业题,1、某游泳队拟选用甲,乙,丙,丁四名游泳运动员组成一个4100m混合泳接力队,参加今年的锦标赛.他们的100m自由泳,蛙泳,蝶泳,仰泳的成绩如表所示,甲,乙,丙,丁四名队员各自游什么姿势,才最有可能取得好成绩?
上机作业题,2、某旅馆每日至少需要下列数量的服务员每班服务员从开始上班到下班连续工作八小时,为满足每班所需要的最少服务员数,这个旅馆至少需要多少服务员。
上机作业题,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 利用 Lingo 求解 整数 规划 非线性 问题