📄 crossover.java
字号:
package net.leonmax.rpsGame.gaEngine;
import java.util.ArrayList;
import java.util.Random;
import net.leonmax.rpsGame.GlobalData;
public class Crossover {
Population[] maskX(Population[] p) {
Population[][] newP = new Population[GlobalData.pop_num / 2][2];
ArrayList<Integer> mateGen = new ArrayList<Integer>();
Random rand = new Random();
for (int i = 0; i < GlobalData.pop_num; i++) {
mateGen.add(new Integer(i));
}
int temp;
for (int i = 0; i < GlobalData.pop_num / 2; i++) {
int mate = rand.nextInt(GlobalData.pop_num - i * 2);
temp = mateGen.get(mate);
newP[i][0] = p[temp];
mateGen.remove(mate);
mate = rand.nextInt(GlobalData.pop_num - i * 2 - 1);
temp = mateGen.get(mate);
newP[i][1] = p[temp];
mateGen.remove(mate);
}
// parents crossover in pairs
p = new Population[GlobalData.pop_num];
for (int i = 0; i < GlobalData.pop_num / 2; i++) {
p[i*2] = new Population();
p[i*2+1] = new Population();
// TODO display
//System.out.println();
System.out.print("Crossover Mask "+i+ " is:\t");
for (int j = 0; j < GlobalData.pop_size; j++) {
boolean xMask = rand.nextBoolean();
if (xMask) {
// TODO display
System.out.print(1);
p[i * 2].addNewSeq(newP[i][0].getGaSeq(j), newP[i][0]
.getOppoSeq(j));
p[i * 2 + 1].addNewSeq(newP[i][1].getGaSeq(j), newP[i][1]
.getOppoSeq(j));
} else {
// TODO display
System.out.print(0);
p[i * 2].addNewSeq(newP[i][1].getGaSeq(j), newP[i][1]
.getOppoSeq(j));
p[i * 2 + 1].addNewSeq(newP[i][0].getGaSeq(j), newP[i][0]
.getOppoSeq(j));
}
}
// TODO display
System.out.println();
//System.out.println();
}
return p;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -