遺伝的アルゴリズムの場合、通常、このように記号化された遺伝子:
PARENT1: 101101010101001001001001110011100110101011101101
PARENT2: 010100111011010101110101001001101011001010010110
したがって、クロスオーバーでは、次のようにこの表現を使用して変更を行うことができます。
クロスオーバーポイントを選択します。
PARENT1: 1011010101010010 01001001110011100110101011101101
PARENT2: 0101001110110101 01110101001001101011001010010110
クロスオーバーを実行して子を作成します。
CHILD: 1011010101010010 01110101001001101011001010010110
その後、まったく新しい染色体になります。
CHILD: 101101010101001001110101001001101011001010010110
私の問題は、Javaで週次スケジュール遺伝子をどのように表すかです。
この記事の例は次のとおりです。http://secretgeek.net/content/bambrilg.pdf
私はJavaでこの時間割の問題を妨害し、表現したいと思います
FIGURE 10: An Entire University Timetable
Javaで。
以下のコードは、問題にどのように取り組むかについてのアイデアを与えるかもしれません。1つのソリューション(大学の時間割)は、一連のシングルルームから構成されます。これらのシングルルームにはそれぞれ2次元配列があり、列は日、行は時間です。HOURSを16に設定したのは、夜間はクラスがないと思うからです。したがって、Hour Row 1は1日の最初の時間になります...おそらく午前7時から8時まででしょう。配列の値は、予約されているクラスを示します。
public class SingleRoom {
static final int DAYS = 7;
static final int HOURS = 16;
. . .
private int[][] timetable = new int[DAYS][HOURS]; //0 would say room is not booked, >0 indicates the booked class (english advanced (12), object oriented programming (139), etc..)
}
public class Solution {
static final int AVAILABLE_ROOMS = 26;
. . .
private SingleRoom[] university_timetable = new SingleRoom[AVAILABLE_ROOMS];
}
突然変異:
クラスの変更を変更-クラスを別のランダムクラスまたはゼロに変更=予約なし
クラスのオン/オフの切り替え-特定の部屋の1日の1時間が予約されている場合、予約されていない場合はオフにし、ランダムクラスでオンに切り替えます。これにより、アルゴリズムが時間を予約しない可能性があります。変更クラス変異0が選択される可能性が低い
制約:ソリューションを作成した後、すべての制約をチェックし、有効なソリューションを維持します。新しい有効なソリューションは、(ソリューションの)母集団に挿入する必要があります。人口の多様性
しかし、あなたが参照したドキュメントでは、この問題のGAを実装する方法についてかなり説明されています(16ページ以降)。
私は、多目的最適化アルゴリズムmPOEMS(改良された改善ステップによる多目的プロトタイプ最適化)の一般的なJavaフレームワークを書きました。これは、進化的概念を使用したGAです。
あなたはここでコードを見つけることができます、それはあなたにあなたの問題に取り組む方法のアイデアを与えるかもしれません:
このアルゴリズムで見つけることができるソリューションは、最先端のアルゴリズムSPEA-2およびNSGAを使用した科学的研究で比較されており、アルゴリズムが同等またはそれ以上のパフォーマンスであることが実証されています。パフォーマンスを測定します。
あなたはそれをここで見つけることができます。
その他のリソース:このフレームワークをプロジェクト選択問題に適用する私の論文:http : //www.ub.tuwien.ac.at/dipl/2008/AC05038968.pdf
フレームワークのドキュメント:http : //thomaskremmel.com/mpoems/mpoems_in_java_documentation.pdf
mPOEMSプレゼンテーションペーパー:http ://portal.acm.org/citation.cfm?id=1792634.1792653
実際、少しの熱意があれば、汎用フレームワークのコードをニーズに簡単に適合させることができます。
あなたはあなたの仕事で、または学生としてこのGAを書きますか?
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加