用Lingo求解整数(0-1)规划模型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字母不区分大小写. 2) 集合包含的元素(可选). John, Jill, Rose, Mike
3) 集合中元素的所有属性(可选). Math,English,total 例4
sets: students/John, Jill, Rose, Mike/:Math,English,total; endsets
温州大学城市学院 (1) 集合的定义
例4 sets:
students/John, Jill, Rose, Mike/:Math,English,total; endsets
(2) 数据赋值
格式: data:
enddata
例4
data: Math=80,85,90,70; English=75,80,72,60; enddata
!约束条件;
温州大学城市学院
例6:人员选拔问题
队员号码 1 3 身高 / m 1.92 1.88 位置 中锋 前锋 队员号码 2 4 身高 / m 1.90 1.86 位置 中锋 前锋
5
7
1.85
1.80
前锋
后卫
6
8
1.83
1.78
后卫
后卫
同时, 要求出场阵容必须满足以下条件 : (1) 中锋只能有一个上场; (2) 至少有一名后卫; (3) 如果1号队员和4号队员都上场, 则6号队员不能上场; (4) 2号队员和6号队员必须至少保留一个不出场. 如何确定符合要求的出场阵容?
温州大学城市学院
注意:
Lingo 默认变量的取值从0到正无穷大,
变量定界函数可以改变默认状态.
@free(x): 取消对变量x的限制(即x可取任意实数值)
例 4 求函数 z x 2 y 2 的最小值.
2 2
温州大学城市学院 例 4 求函数 z x 2 y 2 的最小值.
Lingo 程序: 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);
温州大学城市学院
例 2 用Lingo软件求解整数规划问题 min z 2 x1 5 x2 3 x3
成绩 甲 乙 丙 丁 自由泳 / s 56 63 57 55 蛙泳 / s 74 69 77 76 蝶泳 / s 61 65 63 62 仰泳 / s 63 71 67 62
甲, 乙, 丙, 丁 四名队员各自游什么姿势 , 才最有可能取得好成绩?
温州大学城市学院
min f 56 x11 74 x12 61 x13 63 x14 63 x21 69 x22 65 x23 71x24 57 x31 77 x32 63 x33 67 x34 55 x41 76 x42 62 x43 62 x44
max z 72 x1 64 x2
x1 x2 50, 12 x1 8 x2 480, 3 x1 100, x 0, x 0. 1 2
!数据赋值;
max=@sum(bliang(i):a(i)*x(i)); !目标函数; @for(yshu(j):@sum(bliang(i):x(i)*c(j,i))<=b(j));
4 x1 x2 x3 0 2 x1 4 x2 2 x3 2 x1 x2 x3 2 x 0 且取整数, i 1, 2, 3 i
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);
温州大学城市学院 (3) 集合的循环函数 集合的循环函数可以使所有的元素重复完成一些操作.
函数 函数功能
@for
@sum @min @max
形成集合所有元素需满足的约束条件
计算集合中元素所在表达式的和 计算集合中元素所在表达式的最小值 计算集合中元素所在表达式的最大值
例4 maxM=@max(students(i):Math); !数学的最高分;
!定义集合;
!数据赋值;
!所有工作时间求和;
@for(ren(i):rent=@min(job(j):time(i,j))); !求每个人的最短工作时间; @for(job(j):jobt=@min(ren(i):time(i,j))); !求每份工作最短的用时;
温州大学城市学院 三、Lingo 循环编程举例 例5 用Lingo循环编程语句求解线性规划模型
max z 72 x1 64 x2
x1 x2 50, 12 x1 8 x2 480, 3 x1 100, x 0, x 0. 1 2
温州大学城市学院 三、Lingo 循环编程举例
例5 用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 !定义集合;
温州大学城市学院 目标函数: min z x1 x2 x3 x4 x5 x6 x7 x8 约束条件:

x1 x8 70; x1 x2 80; x2 x3 65; x3 x4 90; x4 x5 80; x5 x6 100;
温州大学城市学院 实验二 用Lingo求解规划模型
变量定界函数: @bin(x): 限制 x 为 0 或 1. @gin(x): 限制 x 为整数.
温州大学城市学院 一、用Lingo 求解规划问题
例 1 用Lingo软件求解0-1规划问题
max z 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 x , x , x , x 0或1 1 2 3 4
约 束 条 件
x11 x12 x13 x14 1; x21 x22 x23 x24 1; x31 x32 x33 x34 1; x41 x42 x43 x44 1; x11 x21 x31 x41 1; x12 x22 x32 x42 1; x x x x 1; x x x x 1; 23 33 43 14 24 34 44 13 xij 0或1, i , j 1, 2, 3, 4.
2 2
解: 编写Lingo 程序如下: min=(x+2)^2+(y-2)^2;
@free(x);
求得结果: x=-2, y=2
温州大学城市学院 二、Lingo 循环编程语句
(1) 集合的定义
包括如下参数: 1) 集合的名称.
sets: endsets students
命名规则: 以字母开头, 后面是字母或下划线.
温州大学城市学院
例 3 用Lingo软件求解非线性规划问题
min z x1 1 x2 2
2
2
x2 x1 1, x1 x2 2, x 0, x 0. 1 2
Lingo 程序: min=(x1-1)^2+(x2-2)^2;
x2-x1=1; x1+x2<=2;
time
4) 集合中元素的所有属性(可选).
例5 sets:
ren/A,B,C,D/: rent; job/1..5/: jobt; link(ren,job): time; endsets
温州大学城市学院 (5) Lingo 内部的数学函数及其返回值 @abs(x): 返回x的绝对值 @sin(x): 返回x的正弦值 @cos(x): 返回x的余弦值 @tan(x): 返回x的正切值 @log(x): 返回x的自然对数值 @exp(x): 返回ex的值 @sqr(x): 返回x的平方值. 该函数可以用表达式x^2代替 @sqrt(x): 返回x的正的平方根. 可以用表达式x^(1/2)代替
温州大学城市学院
max f 1.92 x1 1.90 x2 1.88 x3 1.86 x4 1.85 x5 1.83 x6 1.80 x7 1.78 x8
x1 x2 1 x6 x7 x8 1 x1 x4 x6 2 x 2 x6 1 8 x 5 i 1 i xi 0 或 1, i 1, 2,
班次 时间段 人数 班次 时间段 人数
1
2 3 4
6:00~9:00
9:00~12:00 12:00~15:00 15:00~18:00
70
80 65 90
5
6 7 8
18:00~21:00
21:00~24:00 24:00~3:00 3:00~6:00
80
100 120 90
现在在不考虑时间段中警员上班和下班的情况下, 巡逻大队至少需要多少警员才能满足值班需要? 设第 i 个班次开始上班的警员数为 xi .
maxE=@max(students(i):English); !英语的最高分; averageM=@sum(students(i):Math)/4; !数学的平均分; @for(students(i):total(i)=Math(i)+English(i)); !每个学生数学与英语分数之和.
温州大学城市学院 (4) 衍生集合的定义. 包括如下参数: 1) 衍生集合的名称. link 2) 衍生集合的父集合名称.
x6 x7 120; x7 x8 90;
xi 0, 且为整数, i 1, 2, ,8
温州大学城市学院
温州大学城市学院
上机作业题
分配问题
某游泳队拟选用甲, 乙, 丙, 丁 四名游泳运动员组成 一个 4×100 m 混合泳接力队, 参加今年的锦标赛. 他们 的 100 m 自由泳, 蛙泳, 蝶泳, 仰泳的成绩如表所示
E
4 3.5 3 4 3
问题: (1) 求每个人的最短工作时间; (2) 求每份工作最短的用时.
温州大学城市学院 三、Lingo 循环编程举例
Hale Waihona Puke Baidu
例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));
ren job
3) 衍生集合包含的元素(可选).
注: 若没有指明元素列 表, 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)
,8
温州大学城市学院
温州大学城市学院
上机作业题
要求:
1、建立数学模型,
2、用lingo循环语句编写程序.
温州大学城市学院
上机作业题
人员安排问题
某城市的巡逻大队要求每天的各个时间段都有一 定数量的警员值班, 以便随时处理突发事件, 每人连续 工作6h, 中间不休息. 如表所示是一天8个班次所需值 班警员的人数情况统计:
温州大学城市学院 三、Lingo 循环编程举例 例5 现有五名工人甲, 乙, 丙, 丁, 戊, 完成五项 工作A, B, C, D, E, 所需时间列表如下
工作 时间(小时) 工人 甲 乙 丙 丁 戊
A
1 2 1.75 2.5 1
B
0.5 1 1.5 2 1.5
C
2 3 2.5 1.5 2
D
1.75 1.5 1 0.5 2
相关文档
最新文档