遺伝的アルゴリズムを使用して Job Shop Scheduling の問題を解決したいのですが、コードは Python で記述します。
現在、個人を のリストとして提示しています[job, operation, machine, operation]
。たとえば、1 つの染色体の例を次に示します。
jobs = [ [1,3,3,2], [3,3,1,3], [1,1,1,4], [2,2,1,4], [2,3,3,4], [3,1,3,3], [2,1,2,1], [1,2,2,3], [3,2,2,2] ]
リストは、すべてのジョブの操作の優先順位の制約を満たす必要があります。たとえば、リスト内のジョブ 1 の正しい順序は次のとおりです。
[1,1,1,4], [1,2,2,3], [1,3,3,2]
つまり、ジョブ 1 (インデックス 0、インデックス 2、およびインデックス 7) の順序付けを行う必要があるのは、他のジョブがその位置に留まっている間だけです。正しい結果は次のようになります。
jobs = [ [1,1,1,4], [3,3,1,3], [1,2,2,3], [2,2,1,4], [2,3,3,4], [3,1,3,3], [2,1,2,1], [1,3,3,2], [3,2,2,2] ]
これまでの私の試み:
ジョブ 1 を含むすべての行を決定/フィルタリングします。
[row[:][:] for row in jobs if row[0]==1]
出力
[[1, 1, 1, 4], [1, 2, 2, 3], [1, 3, 3, 2]]