生产线平衡问题的+Leapms线性规划方法
知识点
第一类生产线平衡问题,第二类生产线平衡问题
整数线性规划模型,+Leapms模型,直接求解,CPLEX求解
装配生产线平衡问题 (The Assembly Line Balancing Problem)
装配生产线又叫做组装生产线, 是把产品的工艺做串行生产安排的流水生产线。一个产品的组装需要不同的工序来完成,且工序之间有先后次序要求。
下表是Jackson, J. R. . (1956)给出一个产品工序的装配次序要求:
工序 | 执行时长 | 紧前工序 |
1 | 6 | -- |
2 | 2 | 1 |
3 | 5 | 1 |
4 | 7 | 1 |
5 | 1 | 1 |
6 | 2 | 2 |
7 | 3 | 3,4,5 |
8 | 6 | 6 |
9 | 5 | 7 |
10 | 5 | 8 |
11 | 4 | 10,9 |
上表也可以用有向图表示:
生产线平衡问题的目的是:把工序划分成工作站,且满足工序紧前要求。优化目标有两种:(1)在生产节拍被指定时使得工作站数量最少;或(2)在工作站数量被限定情况下使得生产节拍最小。
前一种目标被称为第一类生产线平衡问题,后一种目标被称为第二类生产线平衡问题。
第二类问题生产线平衡问题的建模
(1)问题
已知工作站共有m=5个,工序共有n=11个,极小化生产节拍。
(2)有向图的表达
有向图可以表达为节点的点对集合,例如 e={ 1 2, 1 3, 1 4,...,10 11}
第k条边的前后两个顶点一般被写成 a[k], 和 b[k]。第k条边被记为 (a[k], b[k])
边的数目 ne 是 e 中元素数除以2,即:ne=_$(e)/2
(3)决策变量
设 x[i][j] 为0-1变量,表示工序j是否被分配给工作站i。其中i=1,...,m; j=1,...,n。
(4)依赖变量
设变量c为生产线的节拍
(5)目标是极小化生产节拍,即:
minimize c
(6)约束1: 每个工序被分配给且仅被分配给一个工作站:
sum{i=1,...,m} x[i][j] =1 | j =1,...,n
(7)约束2:节拍大于等于任何一个工作站的执行时长:
c >= sum{j=1,...,n}x[i][j]t[j] | i=1,...,m
(8)约束3:对任何边k,如果其后节点b[k]被分配到工作站i,则其前节点 a[k] 必须被分配到 j=1,...,i 中的某个节点,即:
x[i][b[k]] <= sum{j=1,...,i}x[j][a[k]] | i=1,...,m;k=1,...,ne
第二类问题生产线平衡问题的+leapms模型
//第二类生产线平衡问题
minimize c subject to
sum{i=1,...,m} x[i][j] =1 | j =1,...,n
c >= sum{j=1,...,n}x[i][j]t[j] | i=1,...,m
x[i][b[k]]<=sum{j=1,...,i}x[j][a[k]]|i=1,...,m;k=1,...,ne where
m,n,ne are integers
t[j] is a number | j=1,...,n
e is a set
a[k],b[k] is an integer|k=1,...,ne
c is a variable of number
x[i][j] is a variable of binary|i=1,...,m;j=1,...,n data
m=5
n=11
t={6 2 5 7 1 2 3 6 5 5 4}
e={
1 2
1 3
1 3
1 5
2 6
3 7
4 7
5 7
6 8
7 9
8 10
9 11
10 11
} data_relation
ne=_$(e)/2
a[k]=e[2k-1]|k=1,...,ne
b[k]=e[2k]|k=1,...,ne
第二类问题生产线平衡问题的模型求解
Welcome to +Leapms ver 1.1(162260) Teaching Version -- an LP/LMIP modeling and
solving tool.欢迎使用利珀 版本1.1(162260) Teaching Version -- LP/LMIP 建模和求
解工具. +Leapms>load
Current directory is "ROOT".
.........
p2.leap
.........
please input the filename:p2
================================================================
1: //第二类生产线平衡问题
2: minimize c
3:
4: subject to
5: sum{i=1,...,m} x[i][j] =1 | j =1,...,n
6: c >= sum{j=1,...,n}x[i][j]t[j] | i=1,...,m
7: x[i][b[k]]<=sum{j=1,...,i}x[j][a[k]]|i=1,...,m;k=1,...,ne
8:
9: where
10: m,n,ne are integers
11: t[j] is a number | j=1,...,n
12: e is a set
13: a[k],b[k] is an integer|k=1,...,ne
14: c is a variable of number
15: x[i][j] is a variable of binary|i=1,...,m;j=1,...,n
16:
17: data
18: m=5
19: n=11
20: t={6 2 5 7 1 2 3 6 5 5 4}
21: e={
22: 1 2
23: 1 3
24: 1 3
25: 1 5
26: 2 6
27: 3 7
28: 4 7
29: 5 7
30: 6 8
31: 7 9
32: 8 10
33: 9 11
34: 10 11
35: }
36: data_relation
37: ne=_$(e)/2
38: a[k]=e[2k-1]|k=1,...,ne
39: b[k]=e[2k]|k=1,...,ne
40:
================================================================
>>end of the file.
Parsing model:
1D
2R
3V
4O
5C
6S
7End.
..................................
number of variables=56
number of constraints=81
..................................
+Leapms>mip
relexed_solution=9.2; number_of_nodes_branched=0; memindex=(2,2)
nbnode=230; memindex=(24,24) zstar=13; GB->zi=10
The Problem is solved to optimal as an MIP.
找到整数规划的最优解.非零变量值和最优目标值如下:
.........
c* =10
x1_1* =1
x1_5* =1
x2_2* =1
x2_6* =1
x2_8* =1
x3_3* =1
x3_10* =1
x4_4* =1
x4_7* =1
x5_9* =1
x5_11* =1
.........
Objective*=10
.........
+Leapms>
上面的结果显示, 目标值即最小节拍为10, 分配方案是: 工序1,5分配在工作站1, 工序2,6,8 分配在工作站2, 工序3,10 分配在工作站3, 工序4,7分配在工作站4, 工序9,11分配在工作站5。
第二类生产线平衡问题求解结果图示
第二类生产线平衡问题的+Leapms-Latex数学概念模型
在+Leapms环境下,使用 “latex"命令可以把上面的+Leapms模型直接转换为如下Latex格式的数学概念模型。
第一类生产线平衡问题
由求解第2类生产线平衡问题知道,工作站数是5时,最小节拍是10。假设如果将节拍上限增加到10,问是否能够减小工作站数目。
第一类生产线平衡问题的建模
第一类生产线平衡问题的数学模型见Ritt, M. , & Costa, A. M. . (2015)。
第一类生产线平衡问题的+Leapms模型
//第一类生产线平衡问题
minimize sum{i=1,...,m}y[i] subject to
sum{i=1,...,m} x[i][j] =1 | j =1,...,n
y[i]c >= sum{j=1,...,n}x[i][j]t[j] | i=1,...,m
x[i][b[k]]<=sum{j=1,...,i}x[j][a[k]]|i=1,...,m;k=1,...,ne
y[i]<=y[i-1]|i=2,...,m where
m,n,ne are integers
t[j] is a number | j=1,...,n
e is a set
a[k],b[k] is an integer|k=1,...,ne
c is a number
x[i][j] is a variable of binary|i=1,...,m;j=1,...,n
y[i] is a variable of binary|i=1,...,m data
m=6
n=11
c=12
t={6 2 5 7 1 2 3 6 5 5 4}
e={
1 2
1 3
1 3
1 5
2 6
3 7
4 7
5 7
6 8
7 9
8 10
9 11
10 11
}
data_relation
ne=_$(e)/2
a[k]=e[2k-1]|k=1,...,ne
b[k]=e[2k]|k=1,...,ne
第一类生产线平衡问题的模型求解
Welcome to +Leapms ver 1.1(162260) Teaching Version -- an LP/LMIP modeling and
solving tool.欢迎使用利珀 版本1.1(162260) Teaching Version -- LP/LMIP 建模和求
解工具. +Leapms>load
Current directory is "ROOT".
.........
p1.leap
p2.leap
.........
please input the filename:p1
1: //第一类生产线平衡问题
2: minimize sum{i=1,...,m}y[i]
3:
4: subject to
5: sum{i=1,...,m} x[i][j] =1 | j =1,...,n
6: y[i]c >= sum{j=1,...,n}x[i][j]t[j] | i=1,...,m
7: x[i][b[k]]<=sum{j=1,...,i}x[j][a[k]]|i=1,...,m;k=1,...,ne
8: y[i]<=y[i-1]|i=2,...,m
9:
10: where
11: m,n,ne are integers
12: t[j] is a number | j=1,...,n
13: e is a set
14: a[k],b[k] is an integer|k=1,...,ne
15: c is a number
16: x[i][j] is a variable of binary|i=1,...,m;j=1,...,n
17: y[i] is a variable of binary|i=1,...,m
18:
19: data
20: m=6
21: n=11
22: c=12
23: t={6 2 5 7 1 2 3 6 5 5 4}
24: e={
25: 1 2
26: 1 3
27: 1 3
28: 1 5
29: 2 6
30: 3 7
31: 4 7
32: 5 7
33: 6 8
34: 7 9
35: 8 10
36: 9 11
37: 10 11
38: }
39: data_relation
40: ne=_$(e)/2
41: a[k]=e[2k-1]|k=1,...,ne
42: b[k]=e[2k]|k=1,...,ne
43:
>>end of the file.
Parsing model:
1D
2R
3V
4O
5C
6S
7End.
===========================================
number of variables=72
number of constraints=100
int_obj=0
=========================================== +Leapms>mip
relexed_solution=3.83333; number_of_nodes_branched=0; memindex=(2,2)
nbnode=117; memindex=(12,12) zstar=5.22619; GB->zi=6
nbnode=314; memindex=(38,38) zstar=5.625; GB->zi=6
nbnode=587; memindex=(24,24) zstar=5.01852; GB->zi=5
nbnode=861; memindex=(26,26) zstar=4.25; GB->zi=5
nbnode=1128; memindex=(22,22) zstar=3.83333; GB->zi=5
nbnode=1395; memindex=(38,38) zstar=3.83333; GB->zi=5
nbnode=1680; memindex=(40,40) zstar=6; GB->zi=5
nbnode=1959; memindex=(46,46) zstar=6; GB->zi=5
nbnode=2230; memindex=(30,30) zstar=3.9246; GB->zi=5
nbnode=2487; memindex=(26,26) zstar=4.44444; GB->zi=5
nbnode=2774; memindex=(36,36) zstar=4.16667; GB->zi=4
nbnode=2971; memindex=(20,20) zstar=3.83333; GB->zi=4
nbnode=3149; memindex=(26,26) zstar=4.16667; GB->zi=4
nbnode=3343; memindex=(36,36) zstar=3.91667; GB->zi=4
nbnode=3546; memindex=(20,20) zstar=4.04167; GB->zi=4
The Problem is solved to optimal as an MIP.
找到整数规划的最优解.非零变量值和最优目标值如下:
.........
x1_1* =1
x1_2* =1
x1_6* =1
x2_5* =1
x2_8* =1
x2_10* =1
x3_3* =1
x3_4* =1
x4_7* =1
x4_9* =1
x4_11* =1
y1* =1
y2* =1
y3* =1
y4* =1
.........
Objective*=4
.........
+Leapms>
结果显示工作站数可减少到4。分配方式如下面的图示。
第一类生产线平衡问题求解结果图示
第一类生产线平衡问题的CPLEX求解
在+Leapms环境中输入cplex命令即可触发在另外窗口内启动CPLEX求解器对模型进行求解:
+Leapms>cplex
You must have licience for Ilo Cplex, otherwise you will violate
corresponding copyrights, continue(Y/N)?
你必须有Ilo Cplex软件的授权才能使用此功能,否则会侵犯相应版权,
是否继续(Y/N)?y
+Leapms>
Tried aggregator 1 time.
MIP Presolve eliminated 24 rows and 3 columns.
MIP Presolve modified 71 coefficients.
Reduced MIP has 76 rows, 69 columns, and 362 nonzeros.
Reduced MIP has 69 binaries, 0 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.11 sec. (0.33 ticks)
Found incumbent of value 6.000000 after 0.20 sec. (0.40 ticks)
Probing fixed 15 vars, tightened 0 bounds.
Probing changed sense of 1 constraints.
Probing time = 0.00 sec. (0.18 ticks)
Cover probing fixed 1 vars, tightened 0 bounds.
Tried aggregator 1 time.
MIP Presolve eliminated 20 rows and 16 columns.
MIP Presolve modified 45 coefficients.
Reduced MIP has 56 rows, 53 columns, and 247 nonzeros.
Reduced MIP has 53 binaries, 0 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.01 sec. (0.21 ticks)
Probing fixed 1 vars, tightened 0 bounds.
Probing time = 0.02 sec. (0.11 ticks)
Tried aggregator 1 time.
MIP Presolve eliminated 3 rows and 1 columns.
MIP Presolve modified 12 coefficients.
Reduced MIP has 53 rows, 52 columns, and 230 nonzeros.
Reduced MIP has 52 binaries, 0 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.02 sec. (0.15 ticks)
Probing time = 0.00 sec. (0.10 ticks)
Clique table members: 207.
MIP emphasis: balance optimality and feasibility.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 4 threads.
Root relaxation solution time = 0.05 sec. (0.33 ticks) Nodes Cuts/
Node Left Objective IInf Best Integer Best Bound ItCnt Gap * 0+ 0 6.0000 4.0000 33.33%
* 0+ 0 5.0000 4.0000 20.00%
0 0 4.0000 21 5.0000 4.0000 54 20.00%
* 0+ 0 4.0000 4.0000 0.00%
0 0 cutoff 4.0000 4.0000 54 0.00%
Elapsed time = 0.45 sec. (1.85 ticks, tree = 0.00 MB, solutions = 3) Root node processing (before b&c):
Real time = 0.45 sec. (1.85 ticks)
Parallel b&c, 4 threads:
Real time = 0.00 sec. (0.00 ticks)
Sync time (average) = 0.00 sec.
Wait time (average) = 0.00 sec.
------------
Total (root+branch&cut) = 0.45 sec. (1.85 ticks)
Solution status = Optimal
Solution value = 4
x1_1=1
x1_2=1
x1_5=1
x1_6=1
x2_8=1
x2_10=1
x3_3=1
x3_4=1
x4_7=1
x4_9=1
x4_11=1
y1=1
y2=1
y3=1
y4=1
第一类生产线平衡问题的+Leapms-Latex数学概念模型
在+Leapms环境下,使用 “latex"命令可以把上面的+Leapms模型直接转换为如下Latex格式的数学概念模型
参考文献
[1] Jackson, J. R. . (1956). A computing procedure for a line balancing problem. Management Science, 2(3), 261-271.
[2] Ritt, M. , & Costa, A. M. . (2015). Improved integer programming models for simple assembly line balancing, and related problems. International Transactions in Operational Research, 19(8), 455-455.
生产线平衡问题的+Leapms线性规划方法的更多相关文章
- 旅游公司租车问题 —— 动态规划 v.s. + Leapms线性规划
有一个旅游公司承包一条旅游线路,未来四周内的大巴车需求分别是:4辆.1辆.4辆和5辆.该公司向租车公司租赁服务,租车公司的计价方案是:租车收取一次性手续费3000,每车每周费用2000.求最节省租车方 ...
- 旅行商问题(Traveling Salesman Problem,TSP)的+Leapms线性规划模型及c++调用
知识点 旅行商问题的线性规划模型旅行商问题的+Leapms模型及CPLEX求解C++调用+Leapms 旅行商问题 旅行商问题是一个重要的NP-难问题.一个旅行商人目前在城市1,他必须对其余n-1个城 ...
- 拓扑排序的 +Leapms 线性规划模型
知识点 拓扑排序 拓扑排序的+Leapms模型 无圈有向图 一个图G(V,E), 如果边有向且不存在回路,则为无圈有向图.在无圈有向图上可以定义拓扑排序.下图是一个无圈有向图的例子. 拓扑排序 给定一 ...
- 1218.1——OC中的常见关键字及一些基本方法
OC常见的关键字介绍: @ 看到这个关键字,我们就应该想到,这是Object-C对C语言的扩展,例如@interface XXX. @interface 声明类 @implementation 实现类 ...
- (转)java中的方法区
首先要说明的是,此文章转载自 http://blog.csdn.net/zzhangxiaoyun/article/details/7518917 谢谢作者.是本人认为对方法区解释得比较清楚的一篇文章 ...
- 【算法】论平衡二叉树(AVL)的正确种植方法
参考资料 <算法(java)> — — Robert Sedgewick, Kevin Wayne <数据结构> ...
- 【数据结构与算法Python版学习笔记】树——平衡二叉搜索树(AVL树)
定义 能够在key插入时一直保持平衡的二叉查找树: AVL树 利用AVL树实现ADT Map, 基本上与BST的实现相同,不同之处仅在于二叉树的生成与维护过程 平衡因子 AVL树的实现中, 需要对每个 ...
- 万字教你如何用 Python 实现线性规划
摘要:线性规划是一组数学和计算工具,可让您找到该系统的特定解,该解对应于某些其他线性函数的最大值或最小值. 本文分享自华为云社区<实践线性规划:使用 Python 进行优化>,作者: Yu ...
- IOS面试攻略
IOS面试攻略(1.0) 2013-10-13 20:58:09| 分类: IOS面试 | 标签:ios知识点总汇 ios面试 |举报|字号 订阅 来自:伊甸网 @ 看到这个关键字,我 ...
随机推荐
- 【bzoj3598】: [Scoi2014]方伯伯的商场之旅
Description 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子.说来也巧,位置在 i 的人面前的第 j 堆的石子的数量,刚好是 i 写成 K 进制后的 ...
- Python Django 2.2登录功能_2
#Now 让我们继续对上篇的登录进行操作 #对于csrf,以后再开篇章记录 #修改index.html <form method="post" action="/l ...
- 谈谈.NET架构师面试及如何设计面试题
上星期:应老东家的要求,帮其面试.NET架构师. 于是:老东家进行了一星期的简历收集: 终于:在一堆简历里,精挑细选了四个: 约了:周末上午下午各两个. 面试者年龄:在30-35岁左右,差不多10年. ...
- WeTest----如何使用WeTest进行App性能测试?
使用Wetest可以测试手机app的性能,wetest主打游戏app测试,但是对于其余的app仍然适用,手机可以root,也可在非root的情况下进行测试, 此时可以获取的性能数据包括:FPS.整机C ...
- “卷积神经网络(Convolutional Neural Network,CNN)”之问
目录 Q1:CNN 中的全连接层为什么可以看作是使用卷积核遍历整个输入区域的卷积操作? Q2:1×1 的卷积核(filter)怎么理解? Q3:什么是感受野(Receptive field)? Q4: ...
- Python中os和sys模块中常用的方法
os模块 os模块:该模块提供了一些方便使用操作系统相关功能的函数 os.remove() 删除文件 os.rename() 重命名文件 os.walk() 文件目录遍历器 os.chdir() 改变 ...
- .net core 注入中的三种模式:Singleton、Scoped 和 Transient
从上篇内容不如题的文章<.net core 并发下的线程安全问题>扩展认识.net core注入中的三种模式:Singleton.Scoped 和 Transient 我们都知道在 Sta ...
- Python猫荐书系列之五:Python高性能编程
稍微关心编程语言的使用趋势的人都知道,最近几年,国内最火的两种语言非 Python 与 Go 莫属,于是,隔三差五就会有人问:这两种语言谁更厉害/好找工作/高工资…… 对于编程语言的争论,就是猿界的生 ...
- Redis数据结构和常用API
Redis是一个速度非常快的非关系型数据库,可以存储键与5中不同数据结构类型之间的映射.这5种数据结构分别是STRING(字符串).LIST(列表).SET(集合).HASH(散列).ZSET(有序集 ...
- 学习python的第三天
4.28日总结 一.关于python 1.交互式 说一句解释一句 2.命令行式 1.编写文件并且保存 2.打开python解释器,在pyrhon中打开文本,读入内存(python打开的时候,翻译不是瞬 ...