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

📄 gaaproblem.java

📁 Java实现的遗传算法工具集:GA Playground
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				}
				
				
			else
				if (dataFields[i][0].equals("Status Help")) {
					withStatusHelp = GaaMisc.stringToBoolean(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Text Window")) {
					withTextWindow = GaaMisc.stringToBoolean(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Graphic Window")) {
					withGraphicWindow = GaaMisc.stringToBoolean(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Sound")) {
					withSound = GaaMisc.stringToBoolean(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("Logging")) {
					withLogging = GaaMisc.stringToBoolean(dataFields[i][1]);
				}
			else
				if (dataFields[i][0].equals("User Defined Flag")) {
					udfBoolean = GaaMisc.stringToBoolean(dataFields[i][1]);
				}
				
				
		}
		
  	if (gaType == 2) {
  		minVal = 0;
  		maxVal = genesNumber - 1;
  		stepVal = 1;
	  }
		
		}
		catch (Exception e) {
			GaaMisc.dbg("problem.dataFieldsToParams error: " + e.toString());	
		}
		
	}
	
	
	public void updateDataFields() {
		
		int i;
		String s0;
		String s1;
		String dataFields[][] = fileData.dataFields;
		
		for (i=0;i<fileData.recordNumber;i++) {
			s0 = dataFields[i][0];
				
			if (dataFields[i][0].equals("Population Size"))  
				dataFields[i][1] = Integer.toString(popSize);
			else if (dataFields[i][0].equals("Number of Genes"))
					dataFields[i][1] = Integer.toString(genesNumber);
			else if (dataFields[i][0].equals("Problem Code"))
					dataFields[i][1] = Integer.toString(problemCode);
			else if (dataFields[i][0].equals("Map Order"))
					dataFields[i][1] = Integer.toString(mapOrder);
 			else if (dataFields[i][0].equals("Def Order"))
					dataFields[i][1] = Integer.toString(defOrder);
			else if (dataFields[i][0].equals("GA Type"))
					dataFields[i][1] = Integer.toString(gaType);
			else if (dataFields[i][0].equals("MinMax Type")) 
					dataFields[i][1] = Integer.toString(minmaxType);
			else if (dataFields[i][0].equals("Stagnation Limit")) 
					dataFields[i][1] = Integer.toString(stagnationLimit);
			else if (dataFields[i][0].equals("Degrade Limit")) 
					dataFields[i][1] = Integer.toString(degradeLimit);
			else if (dataFields[i][0].equals("Survivors Percent")) 
					dataFields[i][1] = Integer.toString(survivorsPercent);
			else if (dataFields[i][0].equals("Redundancy Factor")) 
					dataFields[i][1] = Integer.toString(redundancyFactor);
			else if (dataFields[i][0].equals("Crossover Type")) 
					dataFields[i][1] = Integer.toString(crossoverType);
			else if (dataFields[i][0].equals("Mutation Type")) 
					dataFields[i][1] = Integer.toString(mutationType);
			else if (dataFields[i][0].equals("Selection Type")) 
					dataFields[i][1] = Integer.toString(selectionType);
			else if (dataFields[i][0].equals("Inversion Type")) 
					dataFields[i][1] = Integer.toString(inversionType);
			else if (dataFields[i][0].equals("Number of Variables"))
					dataFields[i][1] = Integer.toString(variablesNumber);
			else if (dataFields[i][0].equals("User Defined Integer")) 
					dataFields[i][1] = Integer.toString(udfInteger);
				
			else if (dataFields[i][0].equals("Crossover Rate")) 
					dataFields[i][1] =  Double.toString(crossoverRate);
			else if (dataFields[i][0].equals("Mutation Rate")) 
					dataFields[i][1] =  Double.toString(mutationRate);
			else if (dataFields[i][0].equals("Inversion Rate")) 
					dataFields[i][1] =  Double.toString(inversionRate);
			else if (dataFields[i][0].equals("Shuffle Rate")) 
					dataFields[i][1] =  Double.toString(shuffleRate);
			else if (dataFields[i][0].equals("Inversion Shuffle")) 
					dataFields[i][1] =  Double.toString(inversionShuffle);
			else if (dataFields[i][0].equals("Kick Distribution")) 
					dataFields[i][1] =  Double.toString(kickDistribution);
				
			else if (dataFields[i][0].equals("Min Value")) 
					dataFields[i][1] =  Double.toString(minVal);
			else if (dataFields[i][0].equals("Max Value")) 
					dataFields[i][1] =  Double.toString(maxVal);
			else if (dataFields[i][0].equals("Step Value")) 
					dataFields[i][1] =  Double.toString(stepVal);
			else if (dataFields[i][0].equals("Default Value")) 
					dataFields[i][1] =  Double.toString(defVal);
			else if (dataFields[i][0].equals("Exit Value")) 
					dataFields[i][1] =  Double.toString(exitValue);
			else if (dataFields[i][0].equals("Exit Tolerance")) 
					dataFields[i][1] =  Double.toString(exitTolerance);
			else if (dataFields[i][0].equals("Kin Competition Factor")) 
					dataFields[i][1] =  Double.toString(kinFactor);
			else if (dataFields[i][0].equals("User Defined Real")) 
					dataFields[i][1] =  Double.toString(udfDouble);
				
			else if (dataFields[i][0].equals("Alleles Def File")) 
					dataFields[i][1] = defFileName;
			else if (dataFields[i][0].equals("Alleles Map File")) 
					dataFields[i][1] = mapFileName;
			else if (dataFields[i][0].equals("Title")) 
					dataFields[i][1] = problemTitle;
			else if (dataFields[i][0].equals("Description")) 
					dataFields[i][1] = problemDescription;
			else if (dataFields[i][0].equals("Map Delimiter")) 
					dataFields[i][1] = mapDelimiter;
			else if (dataFields[i][0].equals("Input String #1")) 
					dataFields[i][1] = inputString1;
			else if (dataFields[i][0].equals("Input String #2")) 
					dataFields[i][1] = inputString2;
			else if (dataFields[i][0].equals("User Defined Expression")) 
					dataFields[i][1] = udfExpression;
			else if (dataFields[i][0].equals("User Defined String")) 
					dataFields[i][1] = udfString;
				

			else if (dataFields[i][0].equals("Status Help")) 
					dataFields[i][1] = GaaMisc.booleanToString(withStatusHelp);
			else if (dataFields[i][0].equals("Text Window")) 
					dataFields[i][1] = GaaMisc.booleanToString(withTextWindow);
			else if (dataFields[i][0].equals("Graphic Window")) 
					dataFields[i][1] = GaaMisc.booleanToString(withGraphicWindow);
			else if (dataFields[i][0].equals("Sound")) 
					dataFields[i][1] = GaaMisc.booleanToString(withSound);
			else if (dataFields[i][0].equals("Logging")) 
					dataFields[i][1] = GaaMisc.booleanToString(withLogging);
			else if (dataFields[i][0].equals("User Defined Flag")) 
					dataFields[i][1] = GaaMisc.booleanToString(udfBoolean);
				
		}
		
	}
	
	
	public void updateAlleles(double mn, double mx, double st, double vl) {
	
		int i;
		
		for (i=0;i<alleles.length;i++) 
			alleles[i].modifyAllele(mn, mx, st, vl);
			
	}

		
	public void updateAlleles(double mn, double mx, int ns, double vl) {
		
		int i;
		
		for (i=0;i<alleles.length;i++) 
			alleles[i].modifyAllele(mn, mx, ns, vl);
			
	}
	
	
	
	boolean getMapAlleles(URL dir, String mapFileName) {
		
		int i = 0;
		boolean flag = true;
		String txt;
		URL mapUrl = null;
		GaaAlleleMapInput pmi;
		
		try 
		{
			mapUrl = new URL(dir,mapFileName);
		}
		catch(MalformedURLException e){
			GaaAction.deb.debug("GaaProblem getMapAlleles Mal Formed error : " + e.toString());
			return(false);
		}	
		catch (Exception e){
			GaaAction.deb.debug("GaaProblem getMapAlleles error : " + e.toString());
			return(false);
		}  
		

		if (!mapFileName.equals("")) {
			if (mapDelimiter.equals("Default"))
				pmi = new GaaAlleleMapInput(mapUrl,mapOrder, genesNumber);
			else
				pmi = new GaaAlleleMapInput(mapUrl,mapDelimiter,mapOrder, genesNumber);
			
			if (pmi.success) {
				mapAlleles = pmi.mapAlleles;
				return(true);
			}
			else
				return(false);
		}
		else
			return(false);
			
	}
	
		
	boolean getDefAlleles(URL dir, String mapFileName) {
		
		int i = 0;
		int npar;
		boolean flag = true;
		String txt;
		URL defUrl = null;
		
		try 
		{
			defUrl = new URL(dir,defFileName);
		}
		catch(MalformedURLException e){
			GaaAction.deb.debug("GaaProblem getDefAlleles MalFormed error : " + e.toString());
			return(false);
		}	
		catch (Exception e){
			GaaAction.deb.debug("GaaProblem getDefAlleles error : " + e.toString());
			return(false);
		}  
		

		if (!mapFileName.equals("")) {
			GaaAlleleDefInput adi = new GaaAlleleDefInput(defUrl,",", genesNumber);
			if (adi.success) {
				defAlleles = adi.defAlleles;
				double a01 = defAlleles[0][0];
				double a02 = defAlleles[0][1];
				double a03 = defAlleles[0][2];
				double a04 = defAlleles[0][3];
				double a05 = defAlleles[0][4];
				double a11 = defAlleles[1][0];
				double a12 = defAlleles[1][1];
				double a13 = defAlleles[1][2];
				double a14 = defAlleles[1][3];
				double a15 = defAlleles[1][4];
				double a21 = defAlleles[2][0];
				double a22 = defAlleles[2][1];
				double a23 = defAlleles[2][2];
				double a24 = defAlleles[2][3];
				double a25 = defAlleles[2][4];
				
				int n = defAlleles.length;
				for (i=0;i<defAlleles.length;i++) {
					npar = (int) (defAlleles[i][0]);
					alleles[npar] = new GaaAllele(defAlleles[i][1], defAlleles[i][2], defAlleles[i][3], defAlleles[i][4]);
				}
				double b1 = alleles[0].min;
				double b2 = alleles[0].max;
				double b3 = alleles[0].step;
				double b4 = alleles[0].value;
				double c1 = alleles[1].min;
				double c2 = alleles[1].max;
				double c3 = alleles[1].step;
				double c4 = alleles[1].value;
				double da1 = alleles[2].min;
				double da2 = alleles[2].max;
				double da3 = alleles[2].step;
				double da4 = alleles[2].value;
				
				
				return(true);
			}
			else
				return(false);
		}
		else
			return(false);
			
	}
	
	
	public String parameterString() {
		
		String txt = "";
		
		txt = "\nList of parameters for the current problem\n\n"
		+ "Title:              \t" + problemTitle + "\n"
		+ "Description:        \t" + problemDescription + "\n"
		+ "\nIntegers\n"
		+ "Problem Code:       \t" + problemCode + "\n"
		+ "GA Type:            \t" + gaType + "\n"
		+ "MinMax Type:        \t" + minmaxType + "\n"
		+ "Genes Number:       \t" + genesNumber + "\n"
		+ "Population Size:    \t" + popSize + "\n"
		+ "Map Order:          \t" + mapOrder + "\n"
		+ "Stagnation Limit:   \t" + stagnationLimit + "\n"
		+ "Degrade Limit:      \t" + degradeLimit + "\n"
		+ "Survivors Percent:  \t" + survivorsPercent + "\n"
		+ "Redundancy Factor:  \t" + redundancyFactor + "\n"
		+ "Crossover Type:     \t" + crossoverType + "\n"
		+ "Mutation Type:      \t" + mutationType + "\n"
		+ "Selection Type:     \t" + selectionType + "\n"
		+ "Inversion Type:     \t" + inversionType + "\n"
		+ "Variables Number:   \t" + variablesNumber + "\n"
		+ "User Defined Int:   \t" + udfInteger + "\n"
		+ "\nReals\n"
		+ "Crossover Rate:     \t" + crossoverRate + "\n"
		+ "Shuffle Rate:       \t" + shuffleRate + "\n"
		+ "Mutation Rate:      \t" + mutationRate + "\n"
		+ "Inversion Rate:     \t" + inversionRate + "\n"
		+ "Inversion Shuffle:  \t" + inversionShuffle + "\n"
		+ "Kick Distribution:  \t" + kickDistribution + "\n"
		+ "Exit Value:         \t" + exitValue + "\n"
		+ "Exit Tolerance:     \t" + exitTolerance + "\n"
		+ "Min Value:          \t" + minVal + "\n"
		+ "Max Value:          \t" + maxVal + "\n"
		+ "Step Value:         \t" + stepVal + "\n"
		+ "Default Value:      \t" + defVal + "\n"
		+ "User Defined Real:  \t" + udfDouble + "\n"
		+ "\nStrings\n"
		+ "Map File Name:      \t" + mapFileName + "\n"
		+ "Def File Name:      \t" + defFileName + "\n"
		+ "Input String #1:    \t" + inputString1 + "\n"
		+ "Input String #2:    \t" + inputString2 + "\n"
		+ "User Expression:    \t" + udfExpression + "\n"
		+ "User Defined String:\t" + udfString + "\n"
		
		+ "\nFlags\n"
		+ "Status Help    :    \t" + GaaMisc.booleanToString(withStatusHelp) + "\n"
		+ "Text Window    :    \t" + GaaMisc.booleanToString(withTextWindow) + "\n"
		+ "Graphic Window :    \t" + GaaMisc.booleanToString(withGraphicWindow) + "\n"
		+ "Sound          :    \t" + GaaMisc.booleanToString(withSound) + "\n"
		+ "Logging        :    \t" + GaaMisc.booleanToString(withLogging) + "\n"
		+ "User Defined Flag:  \t" + GaaMisc.booleanToString(udfBoolean) + "\n";
		
		return(txt);
			
	}
		
}

⌨️ 快捷键说明

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