1

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

アイデアを探しています。すべての回答がありがたく受け入れられました。ありがとうございました。

4

0 に答える 0