文章快速检索     高级检索
  山东大学学报(工学版)  2018, Vol. 48 Issue (3): 75-80  DOI: 10.6040/j.issn.1672-3961.0.2017.425
0

引用本文 

梁泽华, 崔耀东, 张雨. 有顺序依赖损耗的一维下料问题[J]. 山东大学学报(工学版), 2018, 48(3): 75-80. DOI: 10.6040/j.issn.1672-3961.0.2017.425.
LIANG Zehua, CUI Yaodong, ZHANG Yu. The one-dimensional cutting stock problem withsequence-dependent cut losses[J]. Journal of Shandong University (Engineering Science), 2018, 48(3): 75-80. DOI: 10.6040/j.issn.1672-3961.0.2017.425.

基金项目

国家自然科学基金资助项目(71371058);国家自然科学基金资助项目(61363026)

作者简介

梁泽华(1992—), 女, 广西柳州人, 硕士研究生, 主要研究方向为人工智能. E-mail:394766924@qq.com

通讯作者

崔耀东(1957—), 男, 河南林州人, 教授, 博士生导师, 主要研究方向为优化计算技术与CAD, 智能算法与设计. E-mail:ydcui@263.net

文章历史

收稿日期:2017-08-29
网络出版时间:2018-03-13 13:17:47
有顺序依赖损耗的一维下料问题
梁泽华, 崔耀东, 张雨     
广西大学计算机与电子信息学院, 广西 南宁 530004
摘要:针对从具体工业应用中抽象出的一种特殊一维下料问题, 提出一种基于顺序价值校正框架的下料算法, 在考虑问题特殊性的同时求取最小化线材使用量的下料方案。定义并求得每两个毛坯间的损耗值后, 顺序生成各个排样图, 并得到下料方案。通过不断修正毛坯价值, 生成多个下料方案, 取其中线材消耗量最小者来逼近最优解。与其他算法进行比较的结果表明, 本算法有较少的材料消耗量与合适的计算时间。
关键词一维下料问题    顺序依赖损耗    顺序价值校正    
The one-dimensional cutting stock problem withsequence-dependent cut losses
LIANG Zehua, CUI Yaodong, ZHANG Yu     
College of Computer and Electronic Information, Guangxi University, Nanning 530004, Guangxi, China
Abstract: For a particular one-dimensional cutting stock problem abstracted from specific industrial applications, an algorithm based on sequential value correction proposed with considering minimize stock material waste and the problem’s special properties was proposed. The cutting patterns were generated sequentially after defining and getting the cost between each two items, and then a cutting plan make-up was got by these patterns. Many different cutting plans were produced by continuously correcting the value of items, and the best one was chosen to approach optimal solution. Compared with the other algorithms, the results showed that the proposed approach could get less consumption of raw material and low computation time.
Key words: one-dimensional cutting stock problem    sequence-dependent cut losses    sequential value correction    
0 引言

下料问题广泛存在于各类制造业中。在需要进行材料分割的情况, 企业为了降低成本, 提高自身竞争力, 需要高利用率的下料方案。一维下料问题(one-dimensional cutting stock problem, 1DCSP)是将长度已知的一维原材料(线材)切割成较小的长度和需求量已知的毛坯, 并最小化所需线材的数量或价值问题。一维下料问题主要有两种求解方法:列延迟生成法(Delayed Column Generation)为下料问题建立线性规划模型并求解[1-5]; 顺序启发式算法(Sequential Heuristic Procedure, SHP)顺序地生成每个排样图并形成下料方案[6-10]。SHP具有结构清晰、易于实现、容易针对次要优化目标进行改正等优点, 但其贪婪性导致存在局部最优问题。Belov和Scheithauer[11]将顺序价值校正(sequential value correction, SVC)与SHP相结合, 通过在每次迭代后修改毛坯的价值, 增加下料方案的多样性, 以跳出局部最优。Cui等[12]在生成下料方案过程中只选择剩余毛坯的一个子集来生成当前排样图。Cui和Tang[13]将SVC用于求解多线材一维下料问题。启发式算法所用的启发式一般只适用于特定的问题, 无通用性, 有效的启发式对问题的求解是很有用的, 但是有时寻找一个有效的启发式比解决问题本身还要困难[14]。此外, 近年来也有研究者将智能算法应用在一维下料问题求解中[15-17]

在实际生产中存在着特殊的一维下料问题, 有顺序依赖损耗的一维下料问题(1DCSP with sequence-dependent cut losses, 1D-CSP with SDCL)[18]出现在木工行业, 其特殊性在于需要从一维线材上切出带有斜角的零件, 此时不同的毛坯顺序会导致切割损耗的不同。本研究根据有顺序依赖损耗的一维下料问题的特征, 采用SVC框架求解此问题, 可以加快排样图生成过程, 提高材料利用率与生产效率。试验结果表明:与其他算法相比, 本研究算法总体上能够生成利用率更高的下料方案。

1 数学模型

有顺序依赖损耗的一维下料问题, 指在一维的排样图内, 在每两个相邻的毛坯之间或毛坯与首尾两端之间可能会出现一种损耗, 这种损耗与排样图中毛坯排列的顺序相关。

设待切割的毛坯集合为I={1, …, m}, 每种毛坯iI具有长度li与需求di, 线材长度为LI中任意li < L。每两种毛坯ij之间存在切割损耗cij, 每种毛坯与线材开头之间有切割损耗c0i, 与线材结尾之间有损耗ci0。可行的排样图P为集合I的子集, 其中的毛坯长度加上损耗总和不大于线材长度L, 该子集可以包含重复的毛坯。设T为使用线材的总根数, nik为第k个排样图中含毛坯i的个数, fk为第k个排样图重复次数(iI, k=1, …, K), 可以建立如下整数规划模型:

$ \left\{ \begin{array}{l} \min T = \sum\limits_{k = 1}^K {{f_k}} \\ {\rm{s}}{\rm{.t}}{\rm{.}}\;\;\sum\limits_{k = 1}^K {{n_{ik}}{f_k} \ge {d_i}, i = 1, \cdots, m} \end{array} \right.。$ (2)

将梯形毛坯去掉斜角之后的长度作为毛坯的标准长度l, 并将斜角与其他切割损耗一起视为损耗, 可以计算得出每种毛坯两端与任意毛坯或线材两端相邻时的切割损耗。若不计切割造成的损耗, 设毛坯两端的斜角分别为piqi, 则cij=max(qi, pj)。图 1说明带斜角毛坯进行一维排列产生的损耗。

图 1 斜角毛坯排样示例 Figure 1 Stock cutting example with angle

问题的求解目标为生成一个下料方案(包含若干个排样图), 用所提供的线材生产出满足需求量的毛坯, 使所用的线材数量尽量少。

2 算法实现 2.1 算法思想

与列延迟生成法相比, 顺序启发式算法虽然不一定能求得最优解, 但是其结构简单、运算时间短, 更适用于较大规模的实际生产问题, 也更适合处理生产中出现的次要优化目标。经过优化后的顺序法运算结果已经能很好的逼近最优解, 结合以上优点, 使用顺序启发式算法更加符合本研究实际问题的需要, 故选用顺序启发式算法的框架求解有顺序依赖损耗的一维下料问题。

传统的SHP方法首先生成单个排样图, 顺序生成直至没有剩余毛坯为止, 即可得到下料方案。但由于总是先选取价值最高的排样图, 最后剩下的毛坯往往不易形成利用率高的排样图, 导致最后的排样图材料利用率偏低。为此引入价值校正, 令下料方案多元化, 有利于获得更加合适的下料方案。SVC框架的特点包括多代、顺序、价值修正[19]

由于继承了SHP简明易于实现的特点又规避了其缺陷, SVC框架在求解下料问题中得到广泛应用。

2.2 算法框架

定义G为当前迭代次数; Gmax为最大迭代次数; m为毛坯种数; L为线材长度; l为毛坯长度集合, l={l1, …, lm}, 其中li为第i种毛坯的长度; V为毛坯价值集合, V={v1, …, vm}, 其中vi为第i种毛坯的价值; D为毛坯总需求量集合, D={d1, …, dm}, 其中di为第i种毛坯的总需求量; R为毛坯剩余需求量集合, R={r1, …, rm}, 其中ri为第i种毛坯的剩余需求量; N为毛坯数量集合, N={n1, …, nm}, 其中ni为当前排样图中排入的第i种毛坯的数量; f为当前排样图的重复使用次数。

算法步骤如下:(1)令G=1, 并调用2.3节所述价值初始化函数初始化各毛坯的价值。(2)若G>Gmax, 则转步骤(8);否则令R=D。(3)调用2.4节所述的排样图生成函数, 生成当前排样图, 并令$f = \min \left\{ {\lfloor {{r_i}/{n_i}}\rfloor|{n_i} > 0\Lambda i \in \left( {1, \cdots, m} \right)} \right\}$。(4)将当前排样图加入当前下料方案, 并更新剩余需求:令ri=ri-fni, (i=1, …, m)。(5)调用2.5节所述价值修正函数修正各毛坯价值。(6)如果存在i∈{1, …, m}, 使ri>0, 则转步骤(3)。(7)若当前下料方案使用的线材数量小于目前最优方案, 则将当前下料方案作为最优下料方案。令$G \Leftarrow G + 1$, 转步骤(2)。(8)输出最优下料方案。

整个算法的时间复杂度由时间复杂度最高的排样图生成函数决定。

2.3 价值初始化函数

毛坯初始价值一般情况下可以取vi=li, (i=1, …, m); 但是由于SHP的贪心特性, 这种初始化方法有所不足。在生成下料方案的后期, 容易出现还有较多剩余的长毛坯, 却缺乏短毛坯的情况, 导致最后剩下的毛坯难以组合成利用率高的排样图。此时适当增加长毛坯的价值, 提升其排入的优先级, 令较长毛坯的需求能够更早得到满足。

计算初始毛坯价值的公式[20]

$ {v_i} = \left\{ \begin{array}{l} \lambda {l_i}, \;{l_i} \ge 0.5L\\ \;\;\;\;\;\;{l_i} \end{array} \right., $ (3)

式中:λ为大毛坯价值增长参数, 令$\lambda \gg 1$使长毛坯价值明显增大。

2.4 排样图生成函数

定义F(x)是长为x的线材上所含毛坯的总价值; ni(x)是长为x的线材上含第i种毛坯的个数; j是长为x的线材上排入的倒数第二个毛坯号; cij是毛坯ij之间的切割损耗; ci0是毛坯i在线材末尾时右端的切割损耗; x0是从长为x的线材上去掉线材末尾的毛坯i后剩下的长度, x0=x-cji-li-ci0+cj0, 计算示意图如图 2所示。

图 2 x0的计算示意图 Figure 2 Schematic of x0′s calculation

生成下料方案, 可以采用第1节所述整数规划模型求解。但考虑计算效率, 采用非精确的解法。有如下动态规划递推式

$ \left\{ \begin{array}{l} F\left( x \right) = 0, \;\left( {x = 0, \cdots, L} \right)\\ {n_i}\left( 0 \right) = 0, \left( {i = 1, \cdots, m} \right)\\ F\left( x \right) = \max \left\{ {F\left( {x- 1} \right), \max \left[{{v_i} + F\left( {{x_0}} \right)|} \right.} \right.\\ \;\;\;\;\;\;\;\;\;\;\;\left. {\left. {{x_0} \ge 0 \cap {n_i}\left( {{x_0}} \right) < {r_i}} \right]} \right\} \end{array} \right.。$ (4)

因其具有全容量特性, 一旦计算出F(x), 对于所有x∈[0, L], F(x)的值都可以确定。尝试每个长度每种可排入的毛坯, 选取价值最大的排样方式作为当前排样图, 算法时间复杂度为O(mL)。

2.5 价值校正函数

价值校正是SVC框架的精髓所在, 通过在每次生成排样图时改进毛坯价值, 使每次迭代生成的下料方案有所不同, 达到搜索更高质量解的目的。本研究采用如下价值修正公式[20]:

$ {v'_i} = {g_1}{v_i} + {g_2}{\left( {{l_i}} \right)^p}/u, \left( {i = 1, \cdots, m} \right), $ (5)
$ {g_2} = \frac{{\mathit{\Omega} {n_i}}}{{{d_i} + {r_i}}}, {g_1} = 1-{g_2}, $ (6)
$ u = \left( {\sum\limits_{i = 1}^m {{l_i}{n_i}} } \right)/L, $ (7)

式中:p(p>1)与Ω为参数; u为当前排样图的材料利用率。根据式(5), 新的毛坯价值vi由两部分组成:第一部分由毛坯之前的价值决定, 系数为g1; 第二部分由毛坯长度与当前排样图利用率决定, 系数为g2p表示毛坯长度在价值计算中的比例。越长的毛坯越难与其他毛坯结合形成利用率高的排样方式, 因此令p>1以增加长毛坯排入的优先级。g1g2则决定了两部分价值的比例, 由毛坯的需求量、总需求量与出现次数和参数Ω决定。

3 试验结果 3.1 试验环境

采用Java语言进行编程, 试验用计算机配置为Intel Core i5-6500 CPU, 3.20 GHz主频, 8 GB内存, 系统为Windows 7旗舰版SP1, 64位。所有例题的试验参数中Ω=0.3, p=1.05, λ=10。

3.2 试验结果

采用文献[18]给出的例题, 例题由随机生成的线材长度L、各毛坯长度l={l1, …, lm}、各毛坯需求量D={d1, …, dm}、起始端切割损耗Cstart={c01, …, c0m}、末端切割损耗Cend={c10, …, cm0}和损耗矩阵$\mathit{\boldsymbol{C}} = \left[{\begin{array}{*{20}{c}} {{c_{11}}}& \cdots &{{c_{1m}}}\\ \cdots&\cdots&\cdots \\ {{c_{m1}}}& \cdots &{{c_{mm}}} \end{array}} \right]$的数据组成, 分为两组。例题相关的参数如下:定义Q为生成例题时, 毛坯长度分布的期望值; N为单个例题中需要的毛坯数总和; C1为例题组1中的损耗值区间, 其中G表示损耗值区间为15~45, D表示5~15, C2为例题组2中的损耗值区间, x表示损耗值区间为1~1+x, x=0, 1, 2, 3, 4;LLB为使用列生成法[21]计算得出的该组例题的线材消耗根数均值下界[18]; LHSD为文献[18]提供的算法得出的线材消耗根数均值; LSVC为本研究算法得出的线材消耗根数均值; t为本研究算法计算该组例题的平均时间。

例题分为两大组。第1组根据QNC的不同分为30个小组, 每组5个例题, 共150个例题。第2组固定N=100, 毛坯长度为100~150, 根据C1分为5个小组, 每组5个例题, 共25个例题。第2组例题的特点为损耗很小。

图 3为例题组1的一个例题(Q=80, N=25, C1=D)计算结果的截图。该例题的具体数据为:L=1 000, l={71, 76, 76}, D={8, 9, 8}, Cstart={10, 12, 10}, Cend={13, 14, 7}, $\mathit{\boldsymbol{C}} = \left[{\begin{array}{*{20}{c}} {11}&5&5\\ {14}&{11}&6\\ {14}&9&{14} \end{array}} \right] $。图中, 毛坯上的数字为该毛坯的序号。

图 3 一个例题的计算结果截图 Figure 3 A screenshot of an instance’s result

试验数据见表 1~4, 其中LLB列中“-”表示文献[21]的算法无法在规定时间内算出下界。表中LSVC列数据与LLB列持平者使用加粗文本, 低于LHSD者使用斜体。

表 1 例题组1的平均计算结果(Q=80) Table 1 The average results of instances dataset 1(Q=80)
表 2 例题组1的平均计算结果(Q=125) Table 2 The average results of instances dataset 1(Q=125)
表 3 例题组1的平均计算结果(Q=170) Table 3 The average results esults of instancesdataset 1(Q=170)
表 4 例题组2的平均计算结果 Table 4 The average results esults of instances dataset 2
3.3 结果分析

在例题组1中, 当Q=80时, 本研究算法计算的线材消耗量在10组数据中有6组达到下界, 9组与LHSD持平, 1组数量超过LHSD; Q=125时, 有3组的线材消耗量达到下界, 7组与LHSD持平, 3组少于LHSD; Q=170时, 有4组的线材消耗量达到下界, 5组与LHSD持平, 5组少于LHSD。例题组2中, 本研究算法的线材消耗量全部达到下界, 5组中有4组少于LHSD。两组例题合计35小组中, 本研究算法的线材消耗量有18组达到下界, 12组线材消耗量少于LHSD, 1组超过LHSD

以上数据说明本研究算法总体来说可以较有效的节约材料。在Q相对较大以及损耗值较低时, 本研究算法比文献[18]中的算法更为有效。图 4对算法效果进行直观的说明。

图 4 C1=G时两种算法与下界之差 Figure 4 LLB of two algorithms comparison when C1=G

图 4可知:在毛坯长度分布期望值较大、损耗值低的情况下, 本研究所提方法在节省线材方面的优势。其中没有下界的情况以两种算法较低者作为下界。

4 结语

本研究提出一种采用SVC框架解决工业应用中的特殊下料问题——顺序依赖损耗的一维下料问题的算法, 通过与提出该问题的文献的算法进行对比, 说明应用本研究算法可以更有效降低材料消耗。针对毛坯长度分布期望值较小的情况作进一步优化、参数的调整、余料的利用以及排样图数目等次要优化目标可以作为今后的研究方向。

参考文献
[1] GILMORE P C, GOMORY R E. A linear programming approach to the cutting-stock problem[J]. Operations Research, 1961, 11(6): 849-859
[2] GILMORE P C, GOMORY R E. A linear programming approach to the cutting stock problem: Ⅱ[J]. Operations Research, 1963, 11(6): 863-888 DOI:10.1287/opre.11.6.863
[3] VANCE P H, BARNHART C, JOHNSON E L, et al. Solving binary cutting stock problems by column generation and branch-and-bound[J]. Computational Optimization and Applications, 1994, 3(2): 111-130 DOI:10.1007/BF01300970
[4] SCHEITHAUER G, TERNO J, MVLLER A, et al. Solving one-dimensional cutting stock problems exactly with a cutting plane algorithm[J]. Journal of the Operational Research Society, 2001, 52(12): 1390-1401 DOI:10.1057/palgrave.jors.2601242
[5] BELOV G, SCHEITHAUER G. A cutting plane algorithm for the one-dimensional cutting stock problem with multiple stock lengths[J]. European Journal of Operational Research, 2002, 141(2): 274-294 DOI:10.1016/S0377-2217(02)00125-X
[6] HAESSLER R W. Controlling cutting pattern changes in one-dimensional trim problems[J]. Operations Research, 1975, 23(3): 483-493 DOI:10.1287/opre.23.3.483
[7] VAHRENKAMP R. Random search in the one-dimensional cutting stock problem[J]. European Journal of Operational Research, 1996, 95(1): 191-200 DOI:10.1016/0377-2217(95)00198-0
[8] GRADIŠAR M, KLJAJIĆ M, RESINOVIČ G, et al. A sequential heuristic procedure for one-dimensional cutting[J]. European Journal of Operational Research, 1999, 114(3): 557-568 DOI:10.1016/S0377-2217(98)00140-4
[9] GRADIŠAR M, RESINOVIČ G, KLJAJIĆ M. A hybrid approach for optimization of one-dimensional cutting[J]. European Journal of Operational Research, 1999, 119(3): 719-728 DOI:10.1016/S0377-2217(98)00329-4
[10] 刘睿, 于波, 崔耀东. 一维下料问题中提高计算效率方法的研究[J]. 计算机工程与应用, 2013, 49(9): 247-250
LIU Rui, YU Bo, CUI Yaodong. Several heuristic strategies to improve computational efficiency for one-dimensional cutting stock problem[J]. Computer Engineering and Applications, 2013, 49(9): 247-250
[11] BELOV G, SCHEITHAUER G. Setup and open-stacks minimization in one-dimensional stock cutting[J]. Informs Journal on Computing, 2007, 19(1): 27-35 DOI:10.1287/ijoc.1050.0132
[12] CUI Y, ZHAO X, YANG Y, et al. A heuristic for the one-dimensional cutting stock problem with pattern reduction[J]. Proceedings of the Institution of Mechanical Engineers Part B: Journal of Engineering Manufacture, 2008, 222(6): 677-685 DOI:10.1243/09544054JEM966
[13] CUI Y P, TANG T B. Parallelized sequential value correction procedure for the one-dimensional cutting stock problem with multiple stock lengths[J]. Engineering Optimization, 2014, 46(10): 1352-1368 DOI:10.1080/0305215X.2013.841903
[14] 张春玲, 崔耀东. 一维优化下料问题[J]. 桂林理工大学学报, 2004, 24(1): 103-106
ZHANG Chunling, CUI Yaodong. Optimization of one-dimensional cutting stock problem[J]. Journal of Guilin University of Technology, 2004, 24(1): 103-106
[15] 金升平, 陈定方, 张翔, 等. 一维优化下料问题的基因遗传算法[J]. 武汉交通科技大学学报, 1997, 21(2): 168-172
JIN Shengping, Chen Dingfang, ZHANG Xiang, et al. A genetic algorithm for cutting one-dimension material[J]. Journal of Wuhan Transportation University, 1997, 21(2): 168-172
[16] WAGNER B J. A genetic algorithm solution for one-dimensional bundled stock cutting[J]. European Journal of Operational Research, 1999, 117(2): 368-381 DOI:10.1016/S0377-2217(98)00244-6
[17] 沈显君, 杨进才, 应伟勤, 等. 一维下料问题的自适应广义粒子群优化求解[J]. 华南理工大学学报(自然科学版), 2007, 35(9): 113-117
SHEN Xianjun, YANG Jincai, YING Weiqin, et al. Adaptive general particle swarm optimization for one-dimension cutting stock problem[J]. Journal of South China University of Technology (Natural Science Edition), 2007, 35(9): 113-117
[18] GARRAFFA M, SALASSA F, VANCROONENBURG W, et al. The one-dimensional cutting stock problem with sequence-dependent cut losses[J]. International Transactions in Operational Research, 2015, 23(1-2): 5-24
[19] 梁秋月, 崔耀东, 游凌伟. 应用三块排样方式求解二维下料问题[J]. 广西师范大学学报(自然科学版), 2014, 32(3): 41-45
LIANG Qiuyue, CUI Yaodong, YOU Lingwei. Soving two-dimensional cutting stock problem with three-block patterns[J]. Journal of Guangxi Normal University(Natural Science Edition), 2014, 32(3): 41-45
[20] 崔轶平. 多线材一维下料问题的顺序价值校正算法[D]. 桂林: 广西大学, 2015.
CUI Yiping. Solving the one-dimensional cutting stock problem with multiple stock lengths using sequential value correction procedure[D]. Guilin: Guangxi University, 2015. http://cdmd.cnki.com.cn/Article/CDMD-10593-1015441491.htm
[21] VANCROONENBURG W, DE CAUSMAECKER P, SPIEKSMA F, et al. Column generation for the 1D-CSP with SDCL, and the orienteering problem with multiplicity[R]. [2017-03-16]. http://allserv.kahosl.be/~wimvc/cg-1D-csp-with-sdcl.pdf, 2014.