⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crossover.java

📁 java实现的遗传算法RPS
💻 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 + -