MBS'是对MBS( Minimum Bin Slack )启发式的改进,它基于以下步骤:
- 在每个步骤中,尝试找到尽可能多地容纳容量的一组物品(包装)。
- 从这个意义上说,MBS类似于Ho ff mann用于解决装配线平衡问题的算法。
- 在每个阶段,保留到目前为止未分配到箱子的n'个项目的列表I',按照大小的递减顺序排序。
- 每次确定包装时,所涉及的物品都放在垃圾箱中并从I'中移除,保留排序顺序。
- 该过程从I'= I开始,当列表I'变空时结束。
- 每个包装都是在一个搜索程序中确定的,该程序测试列表I'中所有可能的最大容量为bin的项目子集。
- 采用最少松弛的子集;如果算法找到一个完全填充bin的子集,则停止搜索,并且在此状态下没有更好的打包。
- 从更大尺寸的物品开始搜索,即从I'开始,因为相对较大尺寸的物品通常难以装入垃圾箱,因此,应首先尝试包装它们。
[MBS算法] http://i.stack.imgur.com/jUltR.png
MBS':
- 它与MBS完全相同,只是它使用了加速算法的初始化过程。
- 建议对MBS进行以下修改:在调用单包装搜索程序之前,选择一个项目(种子)并永久固定在包装中。
- 这可以做到,因为无论如何每件物品都必须放在垃圾箱里。
- 种子的良好选择是最大尺寸的项目,即列表Z'上的第一个。
- 这将在搜索期间留下填充箱中的最小空间,从而缩短处理时间。
- 此外,解决方案流程将被迫使用更大的,因此更多的麻烦,首先是项目。