質問
以下の問題に対して遺伝的アルゴリズムを試す価値はあると思いますか?
問題の側面は、ジェネレーター/フィットネス関数スタイルのセットアップに最適だと思います。(似たようなプロジェクトを失敗した場合は、ぜひご連絡ください。似たようなことはしないでください)
物事を構造化し、これを正しく釘付けにする方法についてのヒントをありがとう。
問題
次の実世界の問題に使用する適切なスケジューリング アルゴリズムを探しています。
このような 15 スロットのシーケンスがあります (数字は 0 から 20 まで変化する場合があります)。
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
(そして、このタイプの合計 10 の異なるシーケンスがあります)
各シーケンスは配列に拡張する必要があり、各スロットは 1 つの位置を取ることができます。
1 1 0 0 1 1 1 0 0 0 1 1 1 0 0
1 1 0 0 1 1 1 0 0 0 1 1 1 0 0
0 0 1 1 0 0 0 1 1 1 0 0 0 1 1
0 0 1 1 0 0 0 1 1 1 0 0 0 1 1
マトリックスの制約は次のとおりです。
- [行単位、つまり水平方向] 配置される 1 の数は、11 または 111 のいずれかでなければなりません
- [行単位] 1 の 2 つのシーケンス間の距離は 00 以上である必要があります
- 各列の合計は、元の配列と一致する必要があります。
- マトリックスの行数を最適化する必要があります。
次に、配列は 4 つの異なる行列の 1 つを割り当てる必要があり、行数が異なる場合があります。
A, B, C, D
A、B、C、D は実際の部門です。負荷は、他の部門の目標を妨げないように、10 日間にわたって合理的に公平に配置する必要があります。
各行列は、10 個の異なる元のシーケンスの拡張と比較されるため、次のようになります。
A1, A2, A3, A4, A5, A6, A7, A8, A9, A10
B1, B2, B3, B4, B5, B6, B7, B8, B9, B10
C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
D1, D2, D3, D4, D5, D6, D7, D8, D9, D10
これらの特定のスポットは予約されている場合があります(予約するだけにするか、予約しないか、機能ベースにするかはわかりません)。 予約されたスポットは、会議やその他のイベントである可能性があります
各行 (たとえば、すべての A) の合計は、2% 以内でほぼ同じになるはずです。つまり、sum(A1 から A10) は (B1 から B10) とほぼ同じである必要があります。
行数は異なる場合があるため、たとえば次のようになります。
A1: 5 行 A2: 5 行 A3: 1 行、その 1 行はたとえば次のようになります。
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0
等..
サブ問題*
問題の一部だけを解決できてとてもうれしいです。たとえば、次のように入力できます。
1 1 2 3 4 2 2 3 4 2 2 3 3 2 3
上記の制約に従って、行数が最小化された 1 と 0 を持つシーケンスの適切な配列を取得します。