2D背包或方形包装的变体

时间:2017-08-23 11:33:43

标签: r algorithm optimization mathematical-optimization combinatorics

我正在处理一个优化问题,我把它归类为组合问题。现在,我知道这是背包问题的2D变体,但请耐心等待:

如果我的区域被建模为由相同大小的单元组成的网格,如何在此网格区域放置一定数量的不同大小的方形对象,如果每个对象都有其成本及其好处和目标是对具有最大利益/成本比率的对象进行排列:

  • 对象1:1x1平方,成本= 800,值= 2478336
  • 对象2:2x2平方成本= 2000值= 7565257

  • 对象3:3x3平方成本= 3150值= 14363679

对象3具有最佳的价值/成本比率,所以我认为该方法是贪婪的,首先放置尽可能多的较大正方形,但仍有许多最佳解决方案,具体取决于区域。

此外,方形物体不能重叠。 我正在使用R,而adagio包具有单背包和多背包的算法,但不适用于2D背包问题。因为我在优化和编程方面很新,我不确定是否有办法用R解决这个问题,有人可以帮忙吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

首先,我不是R和adagio的专家。其次,我认为你的问题不完全是2d背包,它看起来像是packing problem的变体,所以它需要一种不同的方法。

首先,请查看R optimization packages这个很棒的列表,尤其是以下部分:

  1. 优化中的特定应用(例如,禁忌搜索可能对您有用)
  2. 开源优化器的数学编程求解器/接口(lpsolve绝对可以解决您的任务)
  3. 全局和随机优化(其中一些软件包可用于解决您的任务)
  4. 如果您未与 R 绑定,请将Minizinc视为解算器。它非常易于安装/使用,并且在内存/时间消耗方面非常高效。此外,还有很多很好的例子如何使用它。