在2D NxN
矩阵中,每个点代表地图的一个区域。随机区域中有M
个客户,其服务需要由K
个随机区域的客户服务中心提供服务。每个客户服务中心最多可以提供X
个工作。所有客户的数量必须小于或等于客户服务中心的总体能力。所有客户必须在任何服务中心分配,哈密顿距离是成本(客户可以向上,向左,向下和向右移动到服务中心)。如何分配客户以最小化总成本?如果它是一个众所周知的问题或者至少是伪代码,我一直在寻找方向。
答案 0 :(得分:1)
问题的制定方式,您有 constrained optimization problem ,而不是群集问题。它可能是凸的,integer and linear。
群集算法不能满足容量限制。
对此类优化进行了大量研究。有各种高度优化的求解器。
答案 1 :(得分:1)
我认为您可以使用MinCost / MaxFlow算法处理此问题。创建图表如下:
M
个节点; K
个客户节点,K
客户服务中心节点(csc节点),源和接收器。K
csc节点创建0
边,费用为M
,容量等于每个CSC可以投放的客户数。M
客户节点到接收器创建1
边缘,每个边缘的容量为0
,费用为K * M
。K
csc-nodes到M
个客户节点创建1
个边缘,每个客户节点的容量等于V = M + K + 2, E = M + K + M*K
,且成本等于CSC和客户。在网络上运行MinCost / MaxFlow算法(M
)。如果最大流量值等于23
,那么您可以为所有客户提供最低成本。
此案例的解决方案是No TNS listener
。