2017-11-24 14 views
0

私はこの問題について一日中考えており、最良の方法について他の意見を求めていました。BOMマッチングアルゴリズム

最近、同様の部品表(BOM)のマッチングに関するこの問題が発生しました。私は、これがどのようにプログラム的に最もうまくいくかを考えようとしてきました。

複数の構成部品で構成された組立部品(アセンブリ)があるとします。簡単にするために、アセンブリは1つのレベルだけ下がると仮定します。部品表記の類似性に基づいて、すべての同様のアセンブリを返す関数を作成したいとします。私は、類似度ランク1はBOMが同一であることを意味し、アセンブリはコンポーネントアイテムと全く同じ数で構成されていると仮定します。一方、ランク0は類似性がないことを意味する。ランクは、アセンブリの類似性に基づいて1〜0の範囲になります。同じ部品番号だけでなく、同じ数量の部品にも類似点をランク付けしますが、単純化するために今は数量を無視できます。

これにどのようにアプローチしますか?私はSQLを使って作業しますが、高度なアルゴリズムの観点からも興味があります。

答えて

2

よく知られているメトリックの1つは、https://en.wikipedia.org/wiki/Jaccard_indexです。このドメインに適用することを検討してください。

次に、BOM1のコンポーネントとBOM2のコンポーネントのセットを比較し、コンポーネントの数を無視して、いくつかの点で類似性を確認できます。したがって、類似度は同一の集合に対して1であり、集合のうちの1つに加えられる各項目について減少する。 Jaccardの類似性は、交差の大きさを組合の大きさで割ります。

コンポーネントの数を戻すので、BOM1の2つのボルトと3つのナットのサイズは5になります。この場合も、類似点を定義できます。今回は、マルチセットの交点と結合を見ます。あなたのドメインでは、これを異なる方法で重み付けしたいと思う可能性があるので、新規部品の最初の部品をBOMに追加すると大きな変更が生じ、その部品の2番目の部品を追加すると、はるかに小さな変更が得られます。

+0

あなたは素晴らしいです、それは大きなリードです。ありがとう! – MEEECNC

関連する問題