【问题标题】:BOM matching algorithmBOM匹配算法
【发布时间】:2017-11-24 14:11:33
【问题描述】:

我整天都在思考这个问题,想就解决这个问题的最佳方法获得一些其他意见。

我最近遇到了一个涉及匹配类似物料清单 (BOM) 的问题。我一直在思考如何以编程方式最好地完成这项工作。

假设有一个由多个组成部分组成的组装零件(组件)。为简单起见,我们假设程序集只下降了一层。假设我想创建一个函数,根据物料清单的相似性返回所有相似的程序集。我假设相似度等级为 1 意味着 BOM 相同,组件由完全相同数量的组件组成。另一方面,等级 0 表示没有相似性。根据程序集的相似性,排名将介于 1 和 0 之间。我不仅会根据相同的零件编号和相同的零件数量对相似度进行排名,但为简单起见,我现在可以忽略数量。

你会如何处理这个问题?我使用 SQL,但从高级算法的角度来看,我也只是好奇。

【问题讨论】:

    标签: sql algorithm


    【解决方案1】:

    一个众所周知的指标是 https://en.wikipedia.org/wiki/Jaccard_index 。考虑将其应用于此域。

    然后可以通过多种方式查看相似性,最简单的是比较 BOM1 中的组件集与 BOM2 中的组件集,忽略组件计数。因此,对于相同的集合,相似性是一个,并且对于添加到其中一个集合的每个项目,相似性都会降低。 Jaccard 相似度将交集的大小除以并集的大小。

    现在放回组件计数,因此 BOM1 中的 2 个螺栓加 3 个螺母将给出 5 的尺寸。您可以再次定义相似性,这一次查看多组的交集和并集。在您的领域中,您可能希望对此进行不同的加权,以便将新颖部件的第一个单元添加到 BOM 中会产生很大的变化,而添加该部件的第二个单元会产生小得多的变化。

    【讨论】:

    • 你太棒了,这是一个很好的线索。谢谢!
    猜你喜欢
    • 2011-06-18
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 2015-12-07
    • 2016-07-02
    • 2016-05-29
    • 2015-10-20
    相关资源
    最近更新 更多