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

📄 gaaproblem.java

📁 Java实现的遗传算法工具集:GA Playground
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.net.*;

public class GaaProblem {
	
	public GaaAllele alleles[];
	public GaaAlleleSet alleleSet;
	public GaaFileInput fileData;
	public GaaFunction function;
	public GaaCrossover crossover;
	public GaaMutation mutation;
	public GaaInversion inversion;
	
	int inputType;
	int problemCode;
	int genesNumber;
	int mapOrder;
	int defOrder;
	int popSize;
	int gaType;
	int minmaxType;
	int crossoverType;
	int mutationType;
	int selectionType;
	int inversionType;
	int stagnationLimit;
	int degradeLimit;
	int survivorsPercent;
	int redundancyFactor;
	int variablesNumber;
	int udfInteger;
		
	double crossoverRate;
	double mutationRate;
	double inversionRate;
	double shuffleRate;
	double inversionShuffle;
	double kickDistribution;	
	
	double minVal;
	double maxVal;
	double stepVal;
	double defVal;
	double exitValue;
	double exitTolerance;
	double kinFactor;
	double udfDouble;
	
	boolean withStatusHelp;
	boolean withTextWindow;
	boolean withGraphicWindow;
	boolean withSound;
	boolean withLogging;	
	boolean withStatusText;
	boolean withGraphicText;
	boolean udfBoolean;
	
	
	int mapMode;
	int parMode;
	
	double mapAlleles[][];
	double defAlleles[][];
	
	String parFileName;
	String mapFileName;
	String defFileName;
	String problemTitle;
	String problemDescription;
	String mapDelimiter;
	String inputString1;
	String inputString2;
	String udfExpression;
	String udfString;
	
	double currentMin;
	double currentMax;
	double currentBestVal;
	String currentBestChrom;
	long currentGeneration;
	long functionCalls;
	public static boolean success;
	URL fileDir;
	
	
	public GaaProblem(URL dir, String fileName) {
		
		int i = 0;
		String txt;
		
		fileDir = dir;
		parFileName = fileName;
		mapFileName = "";
		defFileName = "";
		inputString1 = "";
		inputString2 = "";
		udfExpression = "";
		udfString = "";
		success = true;
		currentBestVal = 0;
		currentGeneration = 0;
		functionCalls = 0;
		currentMin = 10e35;
		currentMax = -10e35;
		
		try 
		{
			URL fileUrl = new URL(dir,fileName);
			fileData = new GaaFileInput(this, fileUrl,"=");
			double e = exitValue;
			if (!fileData.success) {
				success =false;
				GaaAction.deb.debug("getProblem fileData error");
				return;
			}
		}
		catch(MalformedURLException e){
				success =false;
				GaaAction.deb.debug("GaaProblem getProblem Malformed error : " + e.toString());
				return;
		}	
		catch (Exception e){
				success =false;
				GaaAction.deb.debug("GaaProblem getProblem fileData error : " + e.toString());
				return;
		}  
		
		
		if ((GaaApplet.gaaAppMode.equals("Applet")) && (problemCode == 3)){
			int ret = MsgDialog.msg("Not for applet", "Cannot process this problem in applet mode", MsgDialog.MB_OK, 0);
			success = false;
			return;
		}
		
  	if (gaType == 2) {
  		minVal = 0;
  		maxVal = genesNumber - 1;
  		stepVal = 1;
	  }
	  
		
		if (success) {
			defineAlleles();
		}

	}
	
	
	public void defineAlleles() {
		
		String s0 = udfExpression;
		
		alleleSet = new GaaAlleleSet(this);
		alleles = alleleSet.alleles;
		int s = alleleSet.size;
		int s1 = alleles.length;
		
		if (success) {
			crossover = new GaaCrossover(this);
			mutation = new GaaMutation(this);
			inversion = new GaaInversion(this);
			
			function = new GaaFunction(this);
			success = function.initFunction();
			
			if (mapOrder > 0) {
				if ((mapFileName.equals("")) || (mapFileName.equals("None")))
					success = function.createAllelesMap();
				else
					success = getMapAlleles(fileDir, mapFileName);
			}
				
			if (defOrder > 0){
				if (!((defFileName.equals("")) || (defFileName.equals("None"))))
					success = getDefAlleles(fileDir, defFileName);
			}
		}
		
	}
	
	public void dataFieldsToParams() {
		
		int i;
		String s0;
		String s1;
		String dataFields[][] = fileData.dataFields;

		try{
		for (i=0;i<fileData.recordNumber;i++) {
			
			s0 = dataFields[i][0];
			s1 = dataFields[i][1];
			if (s1 == null)
				s1 = "0";
			
		  if (dataFields[i][0].equals("Population Size")) { 
				popSize = Integer.parseInt(dataFields[i][1]);
			}
			else
				if (dataFields[i][0].equals("Number of Genes")) {
					genesNumber = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Problem Code")) {
					problemCode = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Map Order")) {
					mapOrder = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Def Order")) {
					defOrder = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("GA Type")) {
					gaType = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("MinMax Type")) {
					minmaxType = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Stagnation Limit")) {
					stagnationLimit = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Degrade Limit")) {
					degradeLimit = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Survivors Percent")) {
					survivorsPercent = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Redundancy Factor")) {
					redundancyFactor = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Crossover Type")) {
					crossoverType = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Mutation Type")) {
					mutationType = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Selection Type")) {
					selectionType = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Inversion Type")) {
					inversionType = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Number of variables")) {
					variablesNumber = Integer.parseInt(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("User Defined Integer")) {
					udfInteger = Integer.parseInt(dataFields[i][1]);
				}
				
			else
				if (dataFields[i][0].equals("Crossover Rate")) {
					crossoverRate = Double.valueOf(dataFields[i][1]).doubleValue();
				}
			else
				if (dataFields[i][0].equals("Mutation Rate")) {
					mutationRate = Double.valueOf(dataFields[i][1]).doubleValue();
				}
			else
				if (dataFields[i][0].equals("Inversion Rate")) {
					inversionRate = Double.valueOf(dataFields[i][1]).doubleValue();
				}
			else
				if (dataFields[i][0].equals("Shuffle Rate")) {
					shuffleRate = Double.valueOf(dataFields[i][1]).doubleValue();
				}
			else
				if (dataFields[i][0].equals("InversionShuffle")) {
					inversionShuffle = Double.valueOf(dataFields[i][1]).doubleValue();
				}
			else
				if (dataFields[i][0].equals("Kick Distribution")) {
					kickDistribution = Double.valueOf(dataFields[i][1]).doubleValue();
				}
				
			else
				if (dataFields[i][0].equals("Min Value")) {
					minVal = Double.valueOf(dataFields[i][1]).doubleValue();
				}
			else
				if (dataFields[i][0].equals("Max Value")) {
					maxVal = Double.valueOf(dataFields[i][1]).doubleValue();
				}
			else
				if (dataFields[i][0].equals("Step Value")) {
					stepVal = Double.valueOf(dataFields[i][1]).doubleValue();
				}
			else
				if (dataFields[i][0].equals("Default Value")) {
					defVal = Double.valueOf(dataFields[i][1]).doubleValue();
				}
			else
				if (dataFields[i][0].equals("Exit Value")) {
					exitValue = Double.valueOf(dataFields[i][1]).doubleValue();
				}
			else
				if (dataFields[i][0].equals("Exit Tolerance")) {
					exitTolerance = Double.valueOf(dataFields[i][1]).doubleValue();
				}
			else
				if (dataFields[i][0].equals("Kin Competition Factor")) {
					kinFactor = Double.valueOf(dataFields[i][1]).doubleValue();
				}
			else
				if (dataFields[i][0].equals("User Defined Real")) {
					udfDouble = Double.valueOf(dataFields[i][1]).doubleValue();
				}
				
			else
				if (dataFields[i][0].equals("Title")) {
					problemTitle = dataFields[i][1];
				}
			else
				if (dataFields[i][0].equals("Description")) {
					problemDescription = dataFields[i][1];
				}
			else
				if (dataFields[i][0].equals("Alleles Def File")) {
					defFileName = dataFields[i][1];
				}
			else
				if (dataFields[i][0].equals("Alleles Map File")) {
					mapFileName = dataFields[i][1];
				}
			else
				if (dataFields[i][0].equals("Input String #1")) {
					inputString1 = dataFields[i][1];
				}
			else
				if (dataFields[i][0].equals("Input String #2")) {
					inputString2 = dataFields[i][1];
				}
			else
				if (dataFields[i][0].equals("User Defined Expression")) {
					udfExpression = dataFields[i][1];
				}
			else
				if (dataFields[i][0].equals("User Defined String")) {
					udfString = dataFields[i][1];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -