2011-01-12 11 views
4

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

仕事の週の任意の日(金曜から金曜日)に出席するように要求する9つの家族がいます。薬局は1日当たり1〜3家族しか出席せず、同じ週に家族を繰り返すことはできません。主な目的は、参加する家族ごとに最適な日を最適化することです。そのようにして、薬局は問題に課せられた制約を払って1週間に最大の要求に従います。最適化アルゴリズムへの入力は、各ファミリによって発行されたリクエスト数の年間平均です。たとえば、次のように

(のは例を簡単にするために、唯一の3家族と協力しましょう):

入力:

                |  月  |   Tue   |  水  |   Thu   |  金
F1       |         |     |           |         | F2     | 20         | 12     | 0         | 1       | 2
F3   | 2             | 0       | 0           | 19     | 3

考えられる解決策:

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

これまでのところ、私は遺伝学と遺伝的アルゴリズムの概念全体を研究してきました。パーティクルの最適化を見てきましたが、私の時間が短いので、フレームワークを使うことにしました。私はJGAPを使用していますが、私の主な問題はどのような方法で潜在的な解決策を提示するかです。私は交配、育種などに使用される染色体上のどのように遺伝子を編成すべきですか?私はすでにフィットネス機能を開発しましたが、私が望むように遺伝子をコード化することはできません。助言がありますか?

+1

あなたが説明してきたとの例が与えられたものを、私は(この特定のケースでは、より適切であったその1かなり確実ではない)この問題は、線形組合せ最適化問題であり、そのような単純やナップザックアルゴリズムなどの適切な方法によって解決することができると思うから。 GAを使用しなければならないのですか、それともこのプロジェクトの希望ですか? – posdef

+0

毎週新しいスケジュールを作成していますか、または事前に数週間分のスケジュールを並べ替えていますか? – Alain

+2

5家族で9家族の場合、最大5、9、100万の解決策があります。それほど大したことではない、シンプルなBFSがそのトリックを行うべきである。それとも? – Ishtar

答えて

1

どのように私は潜在的な ソリューションを提示しますか?

すべての家族は、その日にスケジュールされなければなりません。だから、あなたは各家族が予定されている日を記憶することができます。遺伝子は、クロムはあなたが他のすべてを課す必要があるこれらの9、各familiyについて1

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

だから、月曜日の家族1、火曜日に家族2と3、などを持つことになり、5日の1、だろう適合関数の制約(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つのアポイントメントを持っていることを確認する必要があります。

関連する問題