我正致力于解决1D纸盒包装问题,作为初始填充,我将从MBS的生成器粒子开始。
我在网络上寻找MBS(minimum bin slack)算法,但找不到。
有人能帮我吗?
最佳答案
“MBS”是对MBS(最小仓位松弛)启发式算法的改进,该启发式算法基于以下步骤:
在每一步中,都试图找到一组尽可能满足箱子容量的物品(包装)。
在这个意义上,mbs类似于hoffemann求解装配线平衡问题的算法。
在每个阶段,都会保留一个列表,其中列出到目前为止尚未分配给存储箱的n个项目,这些项目按大小的降序排序。
每次确定包装时,所涉及的物品都放在一个箱子中,并从I'中取出,以保持分类顺序。
这个过程从I'=I开始,当列表I'变为空时结束。
每一个包装都是在一个搜索过程中确定的,它测试列表上的所有可能的子集i,最大的是bin的容量。
采用松弛度最小的子集;如果算法找到一个子集,该子集完全填充了该bin,则停止搜索,并且在这种状态下没有更好的打包可能。
搜索从较大的物品开始,即从i'开始,因为相对较大的物品通常较难装入箱子,因此,应首先尝试将其打包。
[MBS算法]http://i.stack.imgur.com/jUltR.png
MBS':
它与mbs完全相同,只是它使用了一个初始化过程来加速算法。
对mbs提出了如下修改:在调用one packing search过程之前,选择一个条目(seed)并将其永久地固定在packing中。
这是可以做到的,因为每个项目都必须放在一个箱子无论如何。
一个好的种子选择是最大的项目,即,第一个在名单上的z'。
这将在搜索期间在箱子中留下最少的空间来填充,从而缩短处理时间。
此外,解决方案过程将被迫使用更大的,并为此原因,更多的麻烦,首先项目。