联系我:ligong15 AT foxmail.com
话接上回列生成学习笔记,通过下料问题对列生成问题进行学习。
一、问题场景与建模
在简单的下料问题(简称原问题)上加上切割模式数量限制,朴素的想法是加上如下约束
(1)
(2)
其中为原问题的变量,即用第
个切割模式切了
卷原材料。
为0-1变量,当
时,
,约束(1)对
与
的映射关系进行了阐述。约束(2)通过设定n,对问题生成的切割模式数量进行限制,即最优解的切割模式数量不大于n。
二、问题求解框架
在一般的列生成求解流程中加入以上约束,求解过程中线性松弛所有变量,针对原问题进行加列操作,并配套添加约束(1、2),在加列流程停止之后得到LP(final),修改变量属性为整数型,获得MIP,求解MIP。
三、初始解的生成
简单列生成算法初始可行解为每个切割模式固定切一个需求,初始可行解需要个切割模式,
为切割需求的数量。当
时,可以发现初始模型无可行解,即无法在n个切割模式限制下覆盖到所有需求。因此初始解需要进行特殊生成。
针对初始解的生成有两种思路:
(一)将需求长度进行排序得到序列,将序列
中从前到后长度和小于等于原材料长度的需求放置于同一切割模式中,得到初始解
;
(二)将需求数量进行排序得到序列,将序列
中从前到后长度和小于等于原材料长度的需求放置于同一切割模式中,得到初始解
。
四、实验结果
针对上文两种初始解生成方式进行实验,算例存在42种切割需求,总需求数量5393,切割模式限制为12,在15s内求解完成。初始解对应解为534卷,初始解
对应解为484卷,且解中均存在初始解。
五、需要解决的问题
通过对简单列生成算法进行修改,可以较为便利的求解限制切割模式数量的下料问题,但初始解对求解质量影响较大,暂未对求解质量进行分析。针对此问题后续进行学习研究。经对比发现,两个初始解得到的LP(final)所求最优解一致。