【发布时间】:2020-09-25 04:10:22
【问题描述】:
在这个特定的问题中,我有一个想象中的城市被划分为正方形 - 基本上是一个 MxN 个正方形网格覆盖城市。 M 和 N 可能比较大,所以我的案例总共有超过 40,000 个方格。
我有许多客户Z分布在这个网格中,一些单元格将包含许多客户,而其他单元格将是空的。我想找到一种方法来放置 最少 数量的商店(每个单元只有一个),以便能够为所有客户提供服务,并限制所有客户必须“触手可及”一个商店并且需要包含所有客户。
另外,我有以下限制/问题:
- 客户可以行驶的最大距离 - 如果商店位于太远的单元格中,则客户无法与该商店关联。 编辑:这并不是真正的距离,而是衡量顾客到达商店的难易程度,所以我不能使用圆圈...
- 在遵守上述条件 (1) 的同时,很可能有多个商店在到达同一客户的距离。在这种情况下,最近的商店应该会获胜。
目前我试图忽略成本问题——许多客户意味着更大的商店和更高的成本——但也许在某个时候我也会考虑这个问题。问题是,我不知道我正在研究的问题的名称,也不知道可能的算法解决方案:这可以作为线性规划问题解决吗?
我通常使用 Python 编写代码,因此非常感谢任何关于可能的算法方法和/或一些代码/库来解决它的建议。
提前谢谢你。
编辑:作为后续,我发现我可以将这个问题作为 MINLP“无能力设施问题”来解决,但我发现的所有信息都太复杂了:我不知道我不在乎知道哪家商店为哪个顾客服务,我只关心是否和在哪里建了一家商店。我有一种辅助方法 - 作为后期处理 - 将客户关联到最合适的商店。
我发现的所有代码都设置了这个庞大的线性系统,将每个客户每个商店的约束关联起来(此处“解释”为:https://en.m.wikipedia.org/wiki/Facility_location_problem#Uncapacitated_facility_location),所以在像我这样的情况下,我很容易得到一个有数百万的线性系统行和列,整数/二进制变量将需要大约宇宙的年龄来解决。
必须有更简单的方法来处理这个......
【问题讨论】:
-
“必须有更简单的方法来处理这个问题”。著名的遗言。
-
感谢您的链接。我对我的问题进行了一些编辑,对于措辞不佳的原始问题感到抱歉。这并不是真正的距离,而是衡量顾客到达商店的难易程度,所以我不能使用圆圈...
标签: python algorithm optimization linear-programming numerical-methods