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