4

私は遺伝的アルゴリズムに不慣れで、薬局の平日あたりのリクエストの順序を最適化するために遺伝的アルゴリズムを実装するように割り当てられています。まず、問題を説明しましょう。

週のどの曜日(月曜日から金曜日)にも出席を要求する家族が9つあります。薬局は1日に1〜3家族しか出席できず、それ以上でも同じ週に家族を繰り返すこともできません。主な目標は、各家族が参加するのに最適な日を最適化することです。このようにして、薬局は、問題に課せられた制約の下で、週あたりの最大リクエストに対応します。最適化アルゴリズムへの入力は、各ファミリによって発行されたリクエストの各数の年平均です。例えば:

(例を単純化するために、3つのファミリのみで作業してみましょう):

入力:

        | 月| 火| 水| 木| 金
F1| 10 | 20 | 2 | 0 | 7
F2 | 20 | 12 | 0 | 1 | 2
F3 | 2 | 0 | 0 | 19 | 3

考えられる解決策:

| 月| 火| 水| 木| 金
| | F2 | F1 | F3 |

これまで私は遺伝学と遺伝的アルゴリズムの概念全体を研究してきました。粒子群最適化を検討しましたが、時間がかなり短いため、フレームワークを使用することにしました。私はJGAPを使用していますが、私の主な問題は、どのようにして潜在的な解決策を提示するかということです。つまり、交配や繁殖などに使用される染色体上の遺伝子をどのように整理すればよいのでしょうか... すでに適応度関数を開発しましたが、遺伝子を思い通りにエンコードできません。助言がありますか?

4

1 に答える 1

1

どのように私は潜在的な解決策を提示しますか?

すべての家族は1日にスケジュールする必要があります。したがって、各家族が予定されている日に保存することができます。遺伝子は5日間のうちの1つであり、クロムはこれらのうち9つを持ち、各家族に1つずつあります。

         1 2 3 4 5 6 7 8 9
Chrome   M T T F W H T M T

したがって、月曜日の家族1、火曜日の家族2と3などですThe pharmacy can only attend 1 to 3 families per day。適応度関数に他のすべての制約()を課す必要があります。

別のエンコーディングは

 M1 M2 M3 T1 T2 T3 W1 W2 W3 ... F2 F3
 1  2  -  -  5  -  9  -  3  ... 4  -

したがって、可能な限りすべての予定を取り、家族を記入するか、空のままにしておきます。この場合、適応度関数は、すべての家族が正確に1つの予定を持っていることを確認する必要があります。

于 2011-01-13T12:39:18.717 に答える