selection.java
来自「java实现的遗传算法RPS」· Java 代码 · 共 46 行
JAVA
46 行
package net.leonmax.rpsGame.gaEngine;
import net.leonmax.rpsGame.GlobalData;
public class Selection {
Population[] select(Population[] p) {
Population[] newP = new Population[GlobalData.pop_num];
int winCountSum = 0;
for (int i = 0; i < GlobalData.pop_num; i++) {
winCountSum += this.involution(p[i].getWinCount(),
GlobalData.selScale);
;
}
double[] prptn = new double[GlobalData.pop_num];
for (int i = 0; i < GlobalData.pop_num; i++) {
prptn[i] = ((double) this.involution(p[i].getWinCount(),
GlobalData.selScale))
/ ((double) winCountSum);
// System.out.println(this.involution(p[i].getWinCount(),
// GlobalData.selScale)+"\t"+winCountSum
// +"\t"+prptn[i]);
}
RanMachine r = new RanMachine();
r.setGroup(prptn);
int[] newPopOrder = r.roulette(GlobalData.pop_num);
System.out.println();
for (int i = 0; i < GlobalData.pop_num; i++) {
System.out.println("the " + i
+ " position of the new population is "
+ (newPopOrder[i] + 1));
newP[i] = p[newPopOrder[i]];
}
System.out.println();
return newP;
}
private int involution(int origin, int power) {
int ret = 1;
for (int i = 0; i < power; i++) {
ret *= origin;
}
return ret;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?