声明:文中所有观点仅代表个人见解,若有不妥之处欢迎指正。
这篇论文于2021年 被 SCI 3区 "Computers and Operations Research"录用,论文链接
目录
4. Simulated annealing algorithm
1.Overview
先建立一个目标函数,使用模拟退火算法,创建一个初始解,对初始解进行随机变换,寻找最优解。在迭代过程中,对每一个解都进行可行性分析,并提出了两个放置策略。
2. Background
2.1. SLM
本篇论文基于SLM (selective laser melter) 提出,SLM的工作原理如下:
金属粉末从stock area中,通过recoater blade推入printing area,然后通过laser scanner 对模型区域进行激光扫描变成零件部分;一层打印完成后,printing area向下降一层,stock area 向上升一层,重复上述操作。
因为SLM特别的打印原理,一个批次的操作时间认为与模型整体的体积与支撑结构的体积以及打印的最大高度有关。
2.2. AM scheduling process
本文的调度计划包括两部分:零件分配,将零件分配到不同批次中;批次分配,将得到的批次分配到指定打印机。
3. Problem description
(本文方法中,认为最大悬垂角度为45°,若超过则需要支撑结构)
Sm:机器m的准备时间
Vm:形成一个单位体积的零件所需要的时间
Um:铺一层粉末所需的时间
(Lm, Wm, Hm):打印平台的长、宽、高
vi:零件的体积
(qin, pin, rin, sin):支撑结构的长、宽、高及体积
M:一个足够大的正数
t:所有机器的完成总时间
Zkm:m机器的第k批次被使用,赋1,否则赋0
ikm:part i 被分配到m机器的k批次,赋1,否则赋0
bij:part i 在 part j 的左边,赋1,否则赋0
cij:part i 在 part j 的前边,赋1,否则赋0
ain:part i以第n个方向放置,赋1,否则赋0
3.1. 目标函数:t 为所有零件生产总时间
M在这里代表一个足够大的正数,对于每一条约束中M的值稍后会给出确定方式。通过M的值对不同的情况添加约束或放松约束。
约束(6-9):对模型放置位置进行约束,不能超过边界。特以(6)说明:当m机器的k批次投入使用时,M×0则不等式右边只剩下W(打印平台的宽),即限制放置区域在给定宽度以内。
约束(10-14):对零件的放置不能重叠进行限制,当两个零件在同一机器的同一批次进行工作时,两个零件的放置位置不能重叠。
3.2. M的确定如下:
3.3. 线性化
约束中约束(5)是二次的,为方便计算,对其进行线性化:
3.4. 打破对称的约束:
Km是对每个机器预分配的批次数,是实际使用的批次数,所以一共有
种可能挑选使用的批次数,对于所有机器,一共有
个解。
本文求解的问题认为一个任务中不同零件打印顺序的效果是一样的,即目标函数相同,所以认为是重复解,为避免这种情况,添加以下两个约束:k-1批次一定在k批次前执行,批次按照执行时间(从大到小)排序。
4. Simulated annealing algorithm
4.1. SA(模拟退火算法)
首先创建一个初始解,创建标准:批次越少越好(即每一批次中零件越多越好)
创建一个轮盘,用于选取operator(稍后讲解),初始每个operator概率相同(假设为1),每被选中一次且得到了最佳解(Sbest),对应operator概率加1
在优化算法的每次迭代中,通过解S(初始为初始解),按照概率获取到一个operator,得到一个可行解S‘,若S’的目标函数值更佳,则替代解S,(若比当前的最佳解更佳,则更新Sbest及轮盘,)否则按照一定概率更换S。
4.2. Neighborhood operators
分为三大类:重定位,交换,分割
a.重定位:
重定位批次
单一零件重定位到(同一或不同机器的)不同批次中
多个零件重定位到(同一或不同机器的)不同批次中
b.交换:
交换不同机器的两个批次
交换相同或不同机器中两个批次的两个零件
交换相同或不同机器中两个批次的多个零件
c.分割:
随机选取一个批次中的一系列零件,并使其重新生成一个批次新生成的批次随机分配到一个机器中
5.Packing Subproblem
5.1. Skyline
本文使用skyline表示包装过程中的图案轮廓:
简单的判别方法:左下角点向右上角做的最大对角线的区域为一个segment
5.2. 放置优先级的确定
竖直方向上的segment越少,代表越平滑,更有利于后期继续放置,所以优先级越高。
在优先级相同的情况下,给出下列两个标准辅助选择放置方式:
1.选择高度低的
2.选择支撑结构少的
5.3. 放置策略
First-fit Strategy
根据给定的零件顺序,一个一个摆放,得到的即为第一个可行packing
Best-fit Packing
从左下角开始,每次选择最合适的零件放置,得到的是最佳packing
RandomSL:
用来判断零件是否可以无重叠地放置在一个批次
给定一个批次,一组零件,首先根据sorting rule(高度降序,面积降序,长宽降序,支撑结构需求量降序)得到一个零件的序列,根据这个序列,调用上述两个放置策略,以进行判断。
Trie:
这里使用字典树进行可行解的存储,Trie存储batch的可行信息,每一个机器有一个Trie,根节点的每一个分支代表一个Batch,存储该batch的可行信息等,若查询到的packed=null,调用RandomLS并将结果存储到对应Trie.
5.4. Post-optimization
1.Makespan based greedy method:
随机从用时最长的机器中选择一个batch移动到用时最短的机器上
2.Util based greedy method:
从使用率最高的batch中随机选取一个part移动到使用率最低的batch
3.Height variance based greedy method:
从零件高度差最大的batch随机抽取一个零件移动到高度差最小的
4.Height based greedy method:
对每一个batch中的最高的零件改变其打印方向并重新pack
实验部分及结论部分参照论文,不做赘述。
Thanks for reading!