用Lingo求解整数(0-1)规划模型.ppt_第1页
用Lingo求解整数(0-1)规划模型.ppt_第2页
用Lingo求解整数(0-1)规划模型.ppt_第3页
用Lingo求解整数(0-1)规划模型.ppt_第4页
用Lingo求解整数(0-1)规划模型.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验二 用Lingo求解规划模型,变量定界函数:,bin(x): 限制 x 为 0 或 1.,gin(x): 限制 x 为整数.,例 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/15/: 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/15/: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 循环编程举例,三、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:人员选拔问题,3,5,7,1.92,队员号码,身高 / m,1,位置,1.88,1.85,1.80,中锋,前锋,前锋,后卫,4,6,8,1.90,队员号码,身高 / m,2,位置,1.86,1.83,1.78,中锋,前锋,后卫,后卫,同时, 要求出场阵容必须满足以下条件:,中锋只能有一个上场; (2) 至少有一名后卫; (3) 如果1号队员和4号队员都上场, 则6号队员不能上场; (4) 2号队员和6号队员必须至少保留一个不出场.,如何确定符合要求的出场阵容?,上机作业题,1、建立数学模型,,2、用lingo循环语句编写程序.,要求:,上机作业题,某城市的巡逻大队要求每天的各个时间段都有一定数量的警员值班, 以便随时处理突发事件, 每人连续工作6h, 中间不休息. 如表所示是一天8个班次所需值班警员的人数情况统计:,现在在不考虑时间段中警员上班和下班的情况下, 巡逻大队至少需要多少警员才能满足值班需要?,人员安排问题,设第 i 个班次开始上班的警员数为 xi .,目标函数:,约束条

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论