【问题标题】:A variant of the 2D knapsack or square packing二维背包或方形包装的变体
【发布时间】:2018-01-31 23:25:20
【问题描述】:

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

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

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

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

对象 3 具有最佳的价值/成本比,所以我猜这种方法会是一种贪婪的方法,尽可能多地把更大的正方形放在首位,但仍然有许多最佳解决方案,具体取决于地区。

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

【问题讨论】:

标签: r algorithm optimization mathematical-optimization combinatorics


【解决方案1】:

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

所以,首先,查看R optimization packages 的精彩列表,尤其是以下部分:

  1. 优化中的特定应用(例如,禁忌搜索可能对您有用)
  2. 数学编程求解器/开源优化器接口(@98​​7654323@ 绝对可以解决您的任务)
  3. 全局和随机优化(其中一些包可用于解决您的任务)

如果您不依赖于 R,请将 Minizinc 视为求解器。它非常易于安装/使用,并且在内存/时间消耗方面非常有效。此外,还有很多很好的示例如何使用它。

【讨论】:

  • 是的,你可能是对的,这不是一个背包问题。尽管背包被描述为包装问题的变体,但它没有考虑几何形状,因此在这种情况下可能没有意义。我已经考虑过正方形问题中填充正方形的变体,并且可能应该朝那个方向发展。谢谢!
  • @Dragana 我的观点是,您不太可能重复使用 adagio 中的某些内容 - 打包问题更为普遍。 :)
  • 是的,我绝对同意。我已经熟悉优化包的 Cran 存储库,我想我的问题在于公式本身,因为没有足够的知识来解决这类问题..
  • @Dragana 试试 Minizinc,它非常简单。您将获得一些经验并了解它的工作原理和操作,然后切换到 R 包。
猜你喜欢
  • 2018-12-16
  • 1970-01-01
  • 2014-01-06
  • 2015-03-09
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多