【问题标题】:Finding Groupings Of Points With A Additional Point Value查找具有附加点值的点分组
【发布时间】:2022-01-25 15:00:14
【问题描述】:

因此,作为电气工程师,我们要做的任务之一就是布局设计。我下个月的任务是进行满载电流 (FLA) 设计。大致选择哪些电机应该连接到哪个电路。这些电机应该紧密相连,整个电路的电流不应超过 24 安培。我能够从每个区域的 CAD 图纸中提取位置数据和马力(安培)。下面的例子。

Name, Xpos, Ypos, Amp
[U1000_MTR, 50,40,3 amp]
[U1010_MTR, 60,50,2.4 amp]
[U1100_MTR, 40,50,3 amp]
[U1110_MTR, 50,60,2.4 amp]
...........
[U1910_MTR, 90,40,2.4 amp]

问题: 我以前见过 python 聚类算法(亲和传播),但从来没有一个会采用额外常数或权重之和的算法(将 25 安培或更少的电机分组)。鉴于我拥有的数据集,有人对算法研究有任何建议吗?

我正在寻找的是关于要研究什么以实现此目标的建议

关于使用亲和传播的帖子

https://scikit-learn.org/stable/auto_examples/cluster/plot_affinity_propagation.html#sphx-glr-auto-examples-cluster-plot-affinity-propagation-py

类似这样,但要考虑数据点的权重

【问题讨论】:

    标签: python algorithm scikit-learn cluster-analysis


    【解决方案1】:

    我可能会将其转换为图形问题,然后解决,两个引擎(顶点)通过一条边连接,如果它们 a) 距离不太远 b) 不超过 24 安培。

    您可以使用很多方法来通过图论解决这个问题。但是,我很确定这是 NP-Hard 或 NP-Complete,因此您可能希望使用启发式算法,除非您的数据集很小(而且看起来不像)。

    一个简单的随机算法让你开始(不是最好的解决方案,但它是一个起点):

    1. 将您的安培数相加并除以 24 得到 K。这为您提供了所需集群数量的下限。
    2. 采用 K 个随机引擎并使用它们构成集群的核心。
    3. 从剩余引擎中随机选择一个引擎。
    4. 将该引擎随机添加到一个集群中,其中该引擎与该集群中已经存在的引擎的加权中心的距离在允许的范围内,并且不会导致该集群有超过 24 个。如果没有,则创建一个新的集群并检查之前添加的点,看看是否可以将它移到其他地方。为了提高性能,请保留有关给定点是否可以与另一个点在同一个集群中的数据(忽略 24 安培限制,除非两个引擎单独超过 24 安培),以便于查找(对于第 6 步非常有用) .
    5. 重复步骤 3/4,直到没有引擎。
    6. 通过检查每个点(可能是偶数对或三重)来优化结果,以查看是否有更适合该点的聚类。这里的目标是尝试减少集群的数量,因为很可能通过第 4 步创建了过多的集群。

    【讨论】:

      猜你喜欢
      • 2018-09-09
      • 2021-01-31
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      相关资源
      最近更新 更多