Algorithm 从列表中选择N个地点,以最大化所选地点附近的总利润

Algorithm 从列表中选择N个地点,以最大化所选地点附近的总利润,algorithm,Algorithm,在1000个地点中,有250个地点有资格设立销售点。我想在这250个地点中选择5个,这样它可以最大化从选定地点的社区获得的利润总和,并且门店之间至少相距5英里。人们从一个地点到另一个地点旅行的意愿是给定的,这定义了该地点的邻里关系 我尝试过整数规划,但在定义目标函数时遇到了问题。有没有集群/优化技术可以解决这个问题 编辑: 鉴于: 1000个位置和任意两个位置之间的大圆距离 在所有1000个地点,人们愿意从一个地点旅行到另一个地点 250个符合条件的地点 目标: 最大化5个集群的利润,其中每个集

在1000个地点中,有250个地点有资格设立销售点。我想在这250个地点中选择5个,这样它可以最大化从选定地点的社区获得的利润总和,并且门店之间至少相距5英里。人们从一个地点到另一个地点旅行的意愿是给定的,这定义了该地点的邻里关系

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

编辑:

鉴于:

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

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

限制条件:

所选地点总数必须为5个,且必须来自250个符合条件的地点 选定的位置必须至少相距5英里 每个位置只能属于一个集群
如果我正确理解您的问题,您需要以下信息:

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


设Si={Lj表示所有j,这样distanceLi,Lja受约束的完全枚举应该对这个问题大小执行:

列举所有不违反至少5英里间隔限制的可行位置组合。一个简单的递归,易于并行化。 对于1中的每个组合,计算布局覆盖的位置总数,并选择1000个节点中每个节点的最大值。如果节点中有人要去,则查找哪个出口,如果可以到达任何出口,则查找+1。再次,轻松并行化。 可选。在同样优秀的系统中,最好选择负载平衡最好的。 您正在处理的问题是:


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

也许你会对一个出口的利润与其他出口的位置无关做出更好的回答?例如:地点A有营业点,地点B没有。如果我决定在B开营业点,利润会发生变化吗?@Carsten是的,如果有地点C属于A和B两个社区。C的利润只能在A或B中计算。所以在B开营业点会影响A的利润…@Dukeling,我真的不知道。删除了另一个第一,目标函数不正确,因为邻域的值不是一个可以事先计算的常数。作为一个位置邻域的一部分的位置取决于其他位置是否有出口。@san8055您没有正确定义出口!@ElKamina编辑了这个问题以增加清晰度如果我错了,请纠正我,是吗这就是你的意思?*在250c5组合中,过滤距离大于5英里的组合*对于每5个门店组合,找出愿意前往这5个门店的所有地点的利润总和,最大值就是解决方案。-优秀的暴力方法。但是,我希望算法适用于25个门店的选择,然后使用此方法d将是非常重要的expensive@san8055-是的,它不会缩放,但它会让你对问题有更好的感觉。
Sum Si <= 1
Li = 1 or 0
Sum(Li for all i) == 5