【问题标题】:Select N locations from a list to maximize the total profit from neighborhoods of the selected locations从列表中选择 N 个位置以最大化所选位置邻域的总利润
【发布时间】:2013-05-18 15:13:23
【问题描述】:

在 1000 个地点中,有 250 个地点有资格开设分店。我想从这 250 个地点中选择 5 个地点,以使所选地点的社区的利润总和最大化,并且这些网点相距至少 5 英里。给出了人们从一个地方到另一个地方旅行的意愿(它定义了那个地方的邻域)

我尝试过整数规划,但在定义目标函数时遇到了问题。有什么聚类/优化技术可以解决这个问题?

编辑:

给定:

  • 1000 个位置和任意两个位置之间的大圆距离
  • 所有 1000 个地点的人们从一个地点到另一个地点旅行的意愿
  • 250 个符合条件的地点

目标:

最大化 5 个集群的利润,其中每个集群包含一个选定位置以及人们愿意前往选定位置的所有位置。

约束:

  • 所选位置总数必须为 5 个,并且必须来自 250 个符合条件的位置
  • 所选位置必须相距至少 5 英里
  • 每个位置只能属于一个集群

【问题讨论】:

  • 也许你会在cstheory.stackexchange.com得到更好的回应
  • 一个网点的利润是否与其他网点的位置无关?示例:位置A 有一个插座,位置B 没有。如果我决定在B 开设分店,A 的利润会改变吗?
  • @Carsten 是的,如果有位置 C 属于 A 和 B 的社区。C 的利润只能在 A 或 B 中计算。所以在 B 开设分店会影响 A 的利润.
  • @Dukeling 我真的不知道。删除了另一个。

标签: algorithm


【解决方案1】:

对于这个问题大小应该做一个受约束的完整枚举:

  1. 枚举所有不违反“至少相距 5 英里”约束的可行位置组合。一个简单的递归,易于并行化。
  2. 对于来自 #1 的每个组合,计算布局“覆盖”的位置总数并选择最大值。对于这 1000 个节点中的每个节点,如果该节点的任何人会去,则找出哪个出口,如果有任何出口可以到达,则 +1。再次轻松并行化。
  3. 可选。在那些同样优秀的人中,更喜欢那些具有最佳“负载平衡”的人。

您正在处理的问题是: http://en.m.wikipedia.org/wiki/Quadratic_assignment_problem

接近这些的经典启发式方法是分支定界、遗传、退火。完整的枚举将用于验证启发式算法能够在小问题规模上有效地逼近全局最小值。

【讨论】:

  • 如果我错了,请纠正我,这是你的意思吗? * 250c5 组合过滤距离大于 5 英里的组合 * 对于每 5 个网点组合,找出愿意前往这 5 个网点的所有地点的利润总和,最大值为解。 - 优秀的蛮力方法。但是,我希望该算法适用于 25 个网点选择,那么这种方法将非常昂贵
  • @san8055 - 是的,它不会扩展,但它会让您更好地了解问题。
【解决方案2】:

如果我正确理解您的问题,您需要以下内容:

让变量Li 代表位置i 是否被选中。 (i = 1..250)

Si = {Lj for all j such that distance(Li, Lj) <= 5 miles}

Ci为常数,表示Li的邻域值

约束是:

Sum Si <= 1
Li = 1 or 0
Sum(Li for all i) == 5

目标函数是 最大化Sum(Li*Ci for all i)

【讨论】:

  • 目标函数不正确,因为邻域的值不是可以事先计算的常数。属于某个位置附近的位置取决于哪些其他位置有插座。
  • @san8055 你没有正确定义一个!
  • @ElKamina 编辑问题以增加清晰度
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
相关资源
最近更新 更多