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 + -
显示快捷键?