Skip to content

Commit 9967641

Browse files
authored
Merge pull request #847 from kusumotolab/add-cascade-crossover-option
CascadeCrossoverをオプションで選択できるようにした.
2 parents ae49eba + 77716ba commit 9967641

File tree

1 file changed

+32
-3
lines changed

1 file changed

+32
-3
lines changed

src/main/java/jp/kusumotolab/kgenprog/ga/crossover/Crossover.java

+32-3
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ enum Type {
5555
* 交叉を行うインスタンスを生成するメソッド.
5656
*
5757
* @see Crossover.Type#initialize(Random, FirstVariantSelectionStrategy,
58-
* SecondVariantSelectionStrategy, int)
58+
* SecondVariantSelectionStrategy, int, int)
5959
*
6060
* @param random 交叉処理の内部でランダム処理を行うためのシード
6161
* @param firstVariantSelectionStrategy 1つ目の親を選ぶためのアルゴリズム
@@ -84,7 +84,7 @@ public Crossover initialize(final Random random,
8484
* 交叉を行うインスタンスを生成するメソッド.
8585
*
8686
* @see Crossover.Type#initialize(Random, FirstVariantSelectionStrategy,
87-
* SecondVariantSelectionStrategy, int)
87+
* SecondVariantSelectionStrategy, int, int)
8888
*
8989
* @param random 交叉処理の内部でランダム処理を行うためのシード
9090
* @param firstVariantSelectionStrategy 1つ目の親を選ぶためのアルゴリズム
@@ -113,7 +113,7 @@ public Crossover initialize(final Random random,
113113
* 交叉を行うインスタンスを生成するメソッド.
114114
*
115115
* @see Crossover.Type#initialize(Random, FirstVariantSelectionStrategy,
116-
* SecondVariantSelectionStrategy, int)
116+
* SecondVariantSelectionStrategy, int, int)
117117
*
118118
* @param random 交叉処理の内部でランダム処理を行うためのシード
119119
* @param firstVariantSelectionStrategy 1つ目の親を選ぶためのアルゴリズム
@@ -130,6 +130,35 @@ public Crossover initialize(final Random random,
130130
return new UniformCrossover(random, firstVariantSelectionStrategy,
131131
secondVariantSelectionStrategy, generatingCount, requiredSolutions);
132132
}
133+
},
134+
135+
/**
136+
* 直列交叉を表す型.
137+
*
138+
* @see jp.kusumotolab.kgenprog.ga.crossover.CascadeCrossover
139+
*/
140+
Cascade {
141+
/**
142+
* 交叉を行うインスタンスを生成するメソッド.
143+
*
144+
* @see Crossover.Type#initialize(Random, FirstVariantSelectionStrategy,
145+
* SecondVariantSelectionStrategy, int, int)
146+
*
147+
* @param random 交叉処理の内部でランダム処理を行うためのシード
148+
* @param firstVariantSelectionStrategy 1つ目の親を選ぶためのアルゴリズム
149+
* @param secondVariantSelectionStrategy 2つ目の親を選ぶためのアルゴリズム
150+
* @param generatingCount 一世代の交叉処理で生成する個体の数
151+
* @param requiredSolutions 生成する必要がある修正プログラムの数
152+
* @return 交叉を行うインスタンス
153+
*/
154+
@Override
155+
public Crossover initialize(final Random random,
156+
final FirstVariantSelectionStrategy firstVariantSelectionStrategy,
157+
final SecondVariantSelectionStrategy secondVariantSelectionStrategy,
158+
final int generatingCount, final int requiredSolutions) {
159+
return new CascadeCrossover(firstVariantSelectionStrategy,
160+
secondVariantSelectionStrategy, requiredSolutions);
161+
}
133162
};
134163

135164
/**

0 commit comments

Comments
 (0)