クラス HybsGeneticAlgorithm
java.lang.Object
org.opengion.penguin.math.ga.HybsGeneticAlgorithm
apache.commons.mathを利用した遺伝的アルゴリズム実行クラスです。
0/1ではなくリスト形式の染色体をある程度手軽に利用できるようにしています。
利用する場合は上記パッケージをjava\jre\lib\ext等に配置してください。
交叉率等はsetterで与えられるようにしています。
スケジューリング等を考慮して、交叉方法はOrderedCrossover(順序交叉)としています。
選択方式はトーナメントです。突然変異は遺伝子ランダム入れ替えです。
染色体として与えるものはhybsGAObjectインタフェイスを継承したクラスです。
AbstractListChromosomeを継承したAbstracthybsChromosomeを利用して染色体を作成します。
mainメソッドではサンプルとして、巡回セールスマン問題を行います。
-
コンストラクタの概要
コンストラクタ -
メソッドの概要
修飾子とタイプメソッド説明execute()
計算の実行。static void
ここからテスト用mainメソッド。利用する染色体クラスを指定します。setCrossoverRate
(double cr) 交叉率のセット。setElitismRate
(double er) エリート主義の割合。setGAList
(HybsGAObject[] gal) 染色体配列のセット。setMutationRate
(double mr) 突然変異率のセット。setOptionData
(Object obj) 染色体クラスにオプションをセットします。setPopulationSize
(int ps) 集団サイズ。setTournamentArity
(int ta) トーナメントサイズ。
-
コンストラクタの詳細
-
HybsGeneticAlgorithm
public HybsGeneticAlgorithm()
-
-
メソッドの詳細
-
execute
計算の実行。- 戻り値:
- 最適染色体
-
setGAList
染色体配列のセット。- パラメータ:
gal
- 染色体とする配列- 戻り値:
- クラス自身
-
setCrossoverRate
交叉率のセット。 交叉率+突然変異率 < 1.0 となるようにする 初期値は0.8- パラメータ:
cr
- 交叉率- 戻り値:
- クラス自身
-
setMutationRate
突然変異率のセット。 交叉率+突然変異率 < 1.0 となるようにする 初期値は0.05- パラメータ:
mr
- 突然変異率- 戻り値:
- クラス自身
-
setElitismRate
エリート主義の割合。 初期値は0.2- パラメータ:
er
- エリート主義の率- 戻り値:
- クラス自身
-
setTournamentArity
トーナメントサイズ。 初期値は2- パラメータ:
ta
- トーナメントサイズ- 戻り値:
- クラス自身
-
setPopulationSize
集団サイズ。 染色体のサイズ等によって適度な値を取るべきだが、初期値は100としている。- パラメータ:
ps
- 集団サイズ- 戻り値:
- クラス自身
-
setChromosomeClazz
利用する染色体クラスを指定します。 初期値はorg.opengion.fukurou.math.HybsScheduleChromosome- パラメータ:
cc
- 染色体のクラス名- 戻り値:
- クラス自身
-
setOptionData
染色体クラスにオプションをセットします。- パラメータ:
obj
- オプションデータ- 戻り値:
- クラス自身
-
main
ここからテスト用mainメソッド。- パラメータ:
args
- ****************************************
-