Python ルーチンを開発しています...この問題を定式化するのに助けが必要です:
エンジニアリング上の問題: 3 つの場所 ((x=3)、各場所に 4 つの物理サポート (y=4) があります。
Loc 1: {H1, L1, R1, G1}
Loc 2: {H2, L2, R2, G2}
Loc 3 (x):{H3, L3, R3, G3}
複数の場所で有効な組み合わせ (テストおよび最適化のため) は次のとおりです。
H1(Loc1), H2(Loc2), H3(Loc3)------ cost 1
H1(Loc1), H2(Loc2), L3(Loc3)------ cost 2
H1(Loc1), H2(Loc2), R3(Loc3)------ cost 3
H1(Loc1), H2(Loc2), G3(Loc3)------ cost 4
次のセット、
H1(Loc1), L2(Loc2), H3(Loc3)------ cost 5
H1(Loc1), L2(Loc2), L3(Loc3)------ cost 6
H1(Loc1), L2(Loc2), R3(Loc3)------ cost 7
H1(Loc1), L2(Loc2), G3(Loc3)------ cost 8
次のセット、
H1(Loc1), R2(Loc2), H3(Loc3)------ cost 9
H1(Loc1), R2(Loc2), L3(Loc3)------ cost 10
H1(Loc1), R2(Loc2), R3(Loc3)------ cost 11
H1(Loc1), R2(Loc2), G3(Loc3)------ cost 12
次のセット、
H1(Loc1), G2(Loc2), H3(Loc3)------ cost 13
H1(Loc1), G2(Loc2), L3(Loc3)------ cost 14
H1(Loc1), G2(Loc2), R3(Loc3)------ cost 15
H1(Loc1), G2(Loc2), G3(Loc3)------ cost 16
これは合計 16 セットで、それぞれにコストがかかります。そして、さらに3セット16セット(合計64セット)が登場します。ところで、順序は重要ですが、繰り返しはありません。したがって、{H1,G2, H3} は {G2, H1, H3} や {H1, H3, G2} などとは異なります。
まず、解空間で可能なセットの総数が 4^3 (y^x) セットであると仮定するのは正しいですか? これは何と呼ばれていますか?専門用語で混乱します。順列、組み合わせ?
コストが最小のセットを選択するか、コストがほぼ同じ (互いに 10% 以内など) のすべてのセットを表示する必要があります。この例では、3 つのループ (場所ごとに 1 つのループ) を設定し、アイテムを反復処理することでアプローチできると思います。
prevcost = 0.0
for loc1 items i:1 to 4
for loc2 items j: 1 to 4
for loc3 items k: 1 to 4
cost = findcost(i,j,k)
if cost < prevcost:
prevcost = cost
私はすでに各セットに関連するコストを持っているので; これは、セットのコストを見つけるために呼び出す別のルーチンであり、これを機能させることができます。
しかし、40 の場所と各場所で 5 つの可能なアイテムがある場合、5^40 セット (9E+27 !!) を処理する必要がありますか? 40 個のネストされたループをセットアップできません。再帰が答えです。しかし、これには巧妙な検索ルーチンが必要です。「シミュレートされたアニーリング」テクニックを読み終えたばかりですが、それを適応させる方法がわかりません。
このルーチンは (最終的に) 産業プラント設定の配管システムの物理的なフィールド サポートの最適な組み合わせを見つけることができます。最良とは、サポートにかかる負荷が最小になるサポートの組み合わせを意味します。(a) 組み合わせを 1 つずつ選択的に選択し、(b) エンジニアリング ソルバーを介して実行し、(c) ルーチンの解析結果ファイルを使用して (すべての場所で) 支持荷重の合計を見つけ、繰り返し実行する予定です。最適な組み合わせが見つかるまで進みます。
「原価計算」に使用する結果ファイルの形式は次のとおりです: python genfromtxt problems
アイデアを探しています。すべての回答がありがたく受け入れられました。ありがとうございました。