搜索有效的聚类算法

时间:2018-03-25 06:26:22

标签: c algorithm matrix 2d cluster-analysis

在2D NxN矩阵中,每个点代表地图的一个区域。随机区域中有M个客户,其服务需要由K个随机区域的客户服务中心提供服务。每个客户服务中心最多可以提供X个工作。所有客户的数量必须小于或等于客户服务中心的总体能力。所有客户必须在任何服务中心分配,哈密顿距离是成本(客户可以向上,向左,向下和向右移动到服务中心)。如何分配客户以最小化总成本?如果它是一个众所周知的问题或者至少是伪代码,我一直在寻找方向。

2 个答案:

答案 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,那么您可以为所有客户提供最低成本。

gg1

此案例的解决方案是No TNS listener

gg2