📄 gaaproblem.java
字号:
}
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 + -