模拟退火算法求解Bin装箱

时间:2014-04-21 15:11:44

标签: algorithm

我正在研究Bin Packing问题。我目前用遗传编程方式实现了这个问题。但是当我研究这个问题的模拟退火算法时,我并不是很了解它。

此问题是否有任何良好的链接或代码/伪代码。

1 个答案:

答案 0 :(得分:4)

首先让我们定义问题

打包一套 N = {1, 2, …, n}项,每个都有大小 t_i, i =1, 2,…, n,放入相同的垃圾箱,每个垃圾箱都有C容量 在不违反容量限制的情况下最大限度地减少容器数量

退火算法的主要概述将包括:

  • 使用首次拟合递减程序构建初始解决方案
  • 计算并指定项目的权重以扭曲大小 个别箱的包装解决方案
  • 通过在所有成对的箱子之间交换物品来执行本地搜索
  • 根据之前的结果进行重新加权 优化运行
  • 根据制冷时间表减轻重量失真

现在,对于Bin装箱问题进行邻域搜索非常重要:

  • 从当前解决方案中,通过在箱之间交换项目来获取下一个解决方案 具有以下目标函数(Fleszar和Hindi 2002)

enter image description here

  • 交换计划 交换两个箱之间的物品,然后执行交换(1,0),交换(1,1),交换(1,2),交换 (2,2)对所有成对的箱子。
  • 交换(1,0)

enter image description here   - 然后仅评估目标函数值的变化

  • 交换(1,1),然后交换(1,2),如: enter image description here

那应该给你一个开始。