在2DNxN
矩阵中,每个点代表地图的一个区域随机区域的客户数量需要由随机区域的客户服务中心数量提供服务每个客户服务中心最多可提供M
个工作岗位所有客户的数量必须小于或等于客户服务中心的总能力。所有客户必须分配到任何服务中心,哈密顿距离是成本(客户只能向服务中心上、左、下和右移动)如何分配客户以使总成本最小化我在寻找一个方向,如果这是一个众所周知的问题或至少是伪代码。
最佳答案
我认为您可以使用mincost/maxflow算法来处理这个问题。按如下方式创建图形:
创建M + K + 2
节点;M
客户节点,K
客户服务中心节点(csc节点)、源和汇。
创建从源到csc节点的K
边,成本K
且容量等于每个csc可以服务的客户数量。
创建从0
客户节点到接收器的M
边,每个边的容量M
和成本1
。
创建从0
csc节点到K * M
客户节点的K
边,每个节点的容量等于M
且成本等于csc和客户之间的距离。
在网络上运行MinCost/MaxFlow算法(1
)如果最大流量值等于V = M + K + 2, E = M + K + M*K
,那么您可以用产生的(最小)成本为所有客户服务。
这种情况的解决方案是M
。
关于c - 寻找有效的聚类算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49473128/