Convert most mutation strategies.

This commit is contained in:
Fabian Becker 2014-02-05 12:14:47 +01:00
parent 7e58bcf83c
commit 7232f818ce
19 changed files with 467 additions and 536 deletions

View File

@ -31,7 +31,7 @@ public class PropertyCrossoverMixer implements java.io.Serializable {
this.m_NormalizationEnabled = d.m_NormalizationEnabled;
this.m_AvailableTargets = new InterfaceCrossover[d.m_AvailableTargets.length];
for (int i = 0; i < this.m_AvailableTargets.length; i++) {
//this.m_AvailableTargets[i] = (InterfaceMutation)d.m_AvailableTargets[i].clone();
//this.availableTargets[i] = (InterfaceMutation)d.availableTargets[i].clone();
this.m_AvailableTargets[i] = d.m_AvailableTargets[i];
}
this.m_SelectedTargets = new InterfaceCrossover[d.m_SelectedTargets.length];

View File

@ -10,18 +10,14 @@ import java.util.ArrayList;
/**
* Created by IntelliJ IDEA.
* User: streiche
* Date: 20.05.2005
* Time: 13:53:46
* To change this template use File | Settings | File Templates.
*
*/
public class MutateEAMixer implements InterfaceMutation, java.io.Serializable {
private PropertyMutationMixer m_Mutators;
private boolean m_UseSelfAdaption = false;
protected double m_Tau1 = 0.15;
protected double m_LowerLimitChance = 0.05;
private PropertyMutationMixer mutationMixer;
private boolean useSelfAdaption = false;
protected double tau1 = 0.15;
protected double lowerLimitChance = 0.05;
public MutateEAMixer() {
InterfaceMutation[] tmpList;
@ -41,14 +37,14 @@ public class MutateEAMixer implements InterfaceMutation, java.io.Serializable {
System.out.println("Illegal access exception for " + (String) mutators.get(i));
}
}
this.m_Mutators = new PropertyMutationMixer(tmpList, false);
this.mutationMixer = new PropertyMutationMixer(tmpList, false);
tmpList = new InterfaceMutation[2];
tmpList[0] = new MutateGINominal();
tmpList[1] = new MutateGIOrdinal();
this.m_Mutators.setSelectedMutators(tmpList);
this.m_Mutators.normalizeWeights();
this.m_Mutators.setDescriptiveString("Combining alternative mutation operators, please norm the weights!");
this.m_Mutators.setWeightsLabel("Weigths");
this.mutationMixer.setSelectedMutators(tmpList);
this.mutationMixer.normalizeWeights();
this.mutationMixer.setDescriptiveString("Combining alternative mutation operators, please norm the weights!");
this.mutationMixer.setWeightsLabel("Weigths");
}
@ -58,7 +54,7 @@ public class MutateEAMixer implements InterfaceMutation, java.io.Serializable {
* @param mutators
*/
public MutateEAMixer(InterfaceMutation... mutators) {
this.m_Mutators = new PropertyMutationMixer(mutators, true);
this.mutationMixer = new PropertyMutationMixer(mutators, true);
}
public MutateEAMixer(InterfaceMutation m1, InterfaceMutation m2) {
@ -70,10 +66,10 @@ public class MutateEAMixer implements InterfaceMutation, java.io.Serializable {
}
public MutateEAMixer(MutateEAMixer mutator) {
this.m_Mutators = (PropertyMutationMixer) mutator.m_Mutators.clone();
this.m_UseSelfAdaption = mutator.m_UseSelfAdaption;
this.m_Tau1 = mutator.m_Tau1;
this.m_LowerLimitChance = mutator.m_LowerLimitChance;
this.mutationMixer = (PropertyMutationMixer) mutator.mutationMixer.clone();
this.useSelfAdaption = mutator.useSelfAdaption;
this.tau1 = mutator.tau1;
this.lowerLimitChance = mutator.lowerLimitChance;
}
/**
@ -111,7 +107,7 @@ public class MutateEAMixer implements InterfaceMutation, java.io.Serializable {
*/
@Override
public void init(AbstractEAIndividual individual, InterfaceOptimizationProblem opt) {
InterfaceMutation[] mutators = this.m_Mutators.getSelectedMutators();
InterfaceMutation[] mutators = this.mutationMixer.getSelectedMutators();
for (int i = 0; i < mutators.length; i++) {
mutators[i].init(individual, opt);
}
@ -125,22 +121,22 @@ public class MutateEAMixer implements InterfaceMutation, java.io.Serializable {
*/
@Override
public void mutate(AbstractEAIndividual individual) {
this.m_Mutators.normalizeWeights();
double[] probs = this.m_Mutators.getWeights();
if (this.m_UseSelfAdaption) {
this.mutationMixer.normalizeWeights();
double[] probs = this.mutationMixer.getWeights();
if (this.useSelfAdaption) {
for (int i = 0; i < probs.length; i++) {
probs[i] *= Math.exp(this.m_Tau1 * RNG.gaussianDouble(1));
if (probs[i] <= this.m_LowerLimitChance) {
probs[i] = this.m_LowerLimitChance;
probs[i] *= Math.exp(this.tau1 * RNG.gaussianDouble(1));
if (probs[i] <= this.lowerLimitChance) {
probs[i] = this.lowerLimitChance;
}
if (probs[i] >= 1) {
probs[i] = 1;
}
}
this.m_Mutators.normalizeWeights();
this.mutationMixer.normalizeWeights();
}
InterfaceMutation[] mutators = this.m_Mutators.getSelectedMutators();
InterfaceMutation[] mutators = this.mutationMixer.getSelectedMutators();
double pointer = RNG.randomFloat(0, 1);
double dum = probs[0];
int index = 0;
@ -168,8 +164,8 @@ public class MutateEAMixer implements InterfaceMutation, java.io.Serializable {
*/
@Override
public void crossoverOnStrategyParameters(AbstractEAIndividual indy1, Population partners) {
for (int i = 0; i < this.m_Mutators.getSelectedMutators().length; i++) {
this.m_Mutators.getSelectedMutators()[i].crossoverOnStrategyParameters(indy1, partners);
for (int i = 0; i < this.mutationMixer.getSelectedMutators().length; i++) {
this.mutationMixer.getSelectedMutators()[i].crossoverOnStrategyParameters(indy1, partners);
}
}
@ -212,11 +208,11 @@ public class MutateEAMixer implements InterfaceMutation, java.io.Serializable {
* @param d The mutation operators.
*/
public void setMutators(PropertyMutationMixer d) {
this.m_Mutators = d;
this.mutationMixer = d;
}
public PropertyMutationMixer getMutators() {
return this.m_Mutators;
return this.mutationMixer;
}
public String mutatorsTipText() {
@ -229,11 +225,11 @@ public class MutateEAMixer implements InterfaceMutation, java.io.Serializable {
* @param d The mutation operator.
*/
public void setUseSelfAdaption(boolean d) {
this.m_UseSelfAdaption = d;
this.useSelfAdaption = d;
}
public boolean getUseSelfAdaption() {
return this.m_UseSelfAdaption;
return this.useSelfAdaption;
}
public String useSelfAdaptionTipText() {
@ -249,11 +245,11 @@ public class MutateEAMixer implements InterfaceMutation, java.io.Serializable {
if (d < 0) {
d = 0;
}
this.m_LowerLimitChance = d;
this.lowerLimitChance = d;
}
public double getLowerLimitChance() {
return this.m_LowerLimitChance;
return this.lowerLimitChance;
}
public String lowerLimitChanceTipText() {
@ -269,11 +265,11 @@ public class MutateEAMixer implements InterfaceMutation, java.io.Serializable {
if (d < 0) {
d = 0;
}
this.m_Tau1 = d;
this.tau1 = d;
}
public double getTau1() {
return this.m_Tau1;
return this.tau1;
}
public String tau1TipText() {

View File

@ -23,12 +23,12 @@ import java.util.ArrayList;
* between successive mutation steps.
*/
public class MutateESCorrVector implements InterfaceMutation, java.io.Serializable {
protected double m_scalingDev = 0.05;
protected double m_initialVelocity = 0.02;
protected double m_LowerLimitStepSize = 0.0000001;
protected double m_UpperLimitStepSize = 0.5;
protected double m_rotationDev = 15.;
protected boolean m_checkConstraints = true;
protected double scalingDev = 0.05;
protected double initialVelocity = 0.02;
protected double lowerLimitStepSize = 0.0000001;
protected double upperLimitStepSize = 0.5;
protected double rotationDev = 15.;
protected boolean checkConstraints = true;
public static final String vectorKey = "MutateESCorrVectorVector";
public static final boolean TRACE = false;
@ -51,10 +51,10 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
}
public MutateESCorrVector(MutateESCorrVector mutator) {
this.m_scalingDev = mutator.m_scalingDev;
this.m_initialVelocity = mutator.m_initialVelocity;
this.m_LowerLimitStepSize = mutator.m_LowerLimitStepSize;
this.m_rotationDev = mutator.m_rotationDev;
this.scalingDev = mutator.scalingDev;
this.initialVelocity = mutator.initialVelocity;
this.lowerLimitStepSize = mutator.lowerLimitStepSize;
this.rotationDev = mutator.rotationDev;
}
/**
@ -77,13 +77,13 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
public boolean equals(Object mutator) {
if (mutator instanceof MutateESCorrVector) {
MutateESCorrVector mut = (MutateESCorrVector) mutator;
if (this.m_scalingDev != mut.m_scalingDev) {
if (this.scalingDev != mut.scalingDev) {
return false;
}
if (this.m_initialVelocity != m_initialVelocity) {
if (this.initialVelocity != initialVelocity) {
return false;
}
if (this.m_LowerLimitStepSize != mut.m_LowerLimitStepSize) {
if (this.lowerLimitStepSize != mut.lowerLimitStepSize) {
return false;
}
return true;
@ -100,7 +100,7 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
*/
@Override
public void init(AbstractEAIndividual individual, InterfaceOptimizationProblem opt) {
double[] initVelocity = calcInitialVel(m_initialVelocity, ((InterfaceESIndividual) individual).getDoubleRange());
double[] initVelocity = calcInitialVel(initialVelocity, ((InterfaceESIndividual) individual).getDoubleRange());
individual.putData(vectorKey, initVelocity);
}
@ -139,22 +139,22 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
double[] vel = (double[]) individual.getData(vectorKey);
// mutate the velocity vector and write it back
if ((m_scalingDev > 0) || (m_rotationDev > 0)) {
if ((scalingDev > 0) || (rotationDev > 0)) {
// for (int i = 0; i < vel.length; i++) {
// vel[i] += ((range[i][1] -range[i][0])/2)*RNG.gaussianDouble(this.mutationStepSize);
// }
double rotateRad = m_rotationDev * (Math.PI / 360.) * RNG.gaussianDouble(1.);
double rotateRad = rotationDev * (Math.PI / 360.) * RNG.gaussianDouble(1.);
// rotate with a gaussian distribution of deviation rotationDeg
Mathematics.rotateAllAxes(vel, rotateRad, false); // rotate
double rScale = Math.exp(RNG.gaussianDouble(m_scalingDev));
double rScale = Math.exp(RNG.gaussianDouble(scalingDev));
if ((m_LowerLimitStepSize > 0) || (m_UpperLimitStepSize > 0)) {
if ((lowerLimitStepSize > 0) || (upperLimitStepSize > 0)) {
double stepLen = Mathematics.norm(vel);
if (m_LowerLimitStepSize > 0) {
rScale = Math.max(rScale, m_LowerLimitStepSize / stepLen);
if (lowerLimitStepSize > 0) {
rScale = Math.max(rScale, lowerLimitStepSize / stepLen);
}
if (m_UpperLimitStepSize > 0) {
rScale = Math.min(rScale, m_UpperLimitStepSize / stepLen);
if (upperLimitStepSize > 0) {
rScale = Math.min(rScale, upperLimitStepSize / stepLen);
}
}
@ -173,7 +173,7 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
Mathematics.vvAdd(genes, vel, genes);
// check the range
if (m_checkConstraints) {
if (checkConstraints) {
Mathematics.projectToRange(genes, range);
}
@ -195,11 +195,11 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
public void crossoverOnStrategyParameters(AbstractEAIndividual indy1, Population partners) {
ArrayList<Double> tmpList = new ArrayList<Double>();
if (indy1.getMutationOperator() instanceof MutateESCorrVector) {
tmpList.add(new Double(((MutateESCorrVector) indy1.getMutationOperator()).m_scalingDev));
tmpList.add(new Double(((MutateESCorrVector) indy1.getMutationOperator()).scalingDev));
}
for (int i = 0; i < partners.size(); i++) {
if (((AbstractEAIndividual) partners.get(i)).getMutationOperator() instanceof MutateESCorrVector) {
tmpList.add(new Double(((MutateESCorrVector) ((AbstractEAIndividual) partners.get(i)).getMutationOperator()).m_scalingDev));
tmpList.add(new Double(((MutateESCorrVector) ((AbstractEAIndividual) partners.get(i)).getMutationOperator()).scalingDev));
}
}
double[] list = new double[tmpList.size()];
@ -210,7 +210,7 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
return;
}
// discreete mutation for step size
this.m_scalingDev = list[RNG.randomInt(0, list.length - 1)];
this.scalingDev = list[RNG.randomInt(0, list.length - 1)];
}
/**
@ -252,11 +252,11 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
* @param d The mutation operator.
*/
public void setScalingDev(double d) {
this.m_scalingDev = d;
this.scalingDev = d;
}
public double getScalingDev() {
return this.m_scalingDev;
return this.scalingDev;
}
public String scalingDevTipText() {
@ -272,11 +272,11 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
if (d < 0) {
d = 0;
}
this.m_LowerLimitStepSize = d;
this.lowerLimitStepSize = d;
}
public double getLowerLimitStepSize() {
return this.m_LowerLimitStepSize;
return this.lowerLimitStepSize;
}
public String lowerLimitStepSizeTipText() {
@ -284,11 +284,11 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
}
public double getRotationDev() {
return m_rotationDev;
return rotationDev;
}
public void setRotationDev(double rotationDeg) {
this.m_rotationDev = rotationDeg;
this.rotationDev = rotationDeg;
}
public String rotationDevTipText() {
@ -296,19 +296,19 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
}
public double getInitialVelocity() {
return m_initialVelocity;
return initialVelocity;
}
public void setInitialVelocity(double velocity) {
m_initialVelocity = velocity;
initialVelocity = velocity;
}
public double getUpperLimitStepSize() {
return m_UpperLimitStepSize;
return upperLimitStepSize;
}
public void setUpperLimitStepSize(double upperLimitStepSize) {
m_UpperLimitStepSize = upperLimitStepSize;
this.upperLimitStepSize = upperLimitStepSize;
}
public String upperLimitStepSizeTipText() {

View File

@ -132,70 +132,6 @@ public class MutateESCorrolated implements InterfaceMutation, java.io.Serializab
}
}
/**
* This method will mutate a given AbstractEAIndividual. If the individual
* doesn't implement InterfaceGAIndividual nothing happens.
*
* @param individual The individual that is to be mutated
*/
// public void mutate(AbstractEAIndividual individual) {
// if (individual instanceof InterfaceESIndividual) {
// double[] x = ((InterfaceESIndividual)individual).getDGenotype();
// double[] xCopy = ((InterfaceESIndividual)individual).getDGenotype();
// double[][] range = ((InterfaceESIndividual)individual).getDoubleRange();
// double tmpR = RNG.gaussianDouble(1);
// if (this.sigmas == null) {
// // init the Sigmas
// this.sigmas = new double[x.length];
// for (int i = 0; i < this.sigmas.length; i++) this.sigmas[i] = this.mutationStepSize;
// }
//
// //Mutate Sigmas
// for (int i = 0; i < x.length; i++) {
// this.sigmas[i] = this.sigmas[i] * Math.exp(this.tau1 * tmpR + this.tau2 * RNG.gaussianDouble(1));
// if (this.sigmas[i] < this.lowerLimitStepSize) this.sigmas[i] = this.lowerLimitStepSize;
// }
//
//// if (this.alphas == null) {
//// // init the Alphas
//// this.alphas = new double[(x.length*(x.length-1))/2];
//// for (int i = 0; i < this.alphas.length; i++) this.alphas[i] = 0.0;
//// }
//
//// //Mutate Alphas
//// for (int i = 0; i < this.alphas.length; i++) {
//// this.alphas[i] = this.alphas[i] + RNG.gaussianDouble(0.01);
//// if (this.alphas[i] < -m_PI/2) this.alphas[i] = -m_PI/2;
//// if (this.alphas[i] > m_PI/2) this.alphas[i] = m_PI/2;
//// }
//
// //Generate mutationvector in unitspace modified by sigmas
// for (int i = 0; i < x.length; i++) {
// xCopy[i] = RNG.gaussianDouble(this.sigmas[i]);
// }
//
// //modify genotype
// for (int i = 0; i < x.length; i++) {
// x[i] += ((range[i][1] -range[i][0])/2)*xCopy[i];
// if (range[i][0] > x[i]) x[i] = range[i][0];
// if (range[i][1] < x[i]) x[i] = range[i][1];
// }
//
// ((InterfaceESIndividual)individual).setDGenotype(x);
//
// //turn mutationvector with alphas
//// for (int i = 0; i < x.length-1; i++) {
//// for (int j = i+1; j < x.length; j++) {
//// double alpha=this.getAlpha(i,j, x.length);
//// double xX=java.lang.Math.cos(alpha)*xCopy[i]-java.lang.Math.sin(alpha)*xCopy[j];
//// double xY=java.lang.Math.sin(alpha)*xCopy[i]+java.lang.Math.cos(alpha)*xCopy[j];
//// xCopy[i]=xX;
//// xCopy[j]=xY;
//// }
//// }
//
// }
// }
@Override
public void mutate(AbstractEAIndividual individual) {
if (individual instanceof InterfaceESIndividual) {

View File

@ -19,39 +19,39 @@ import eva2.tools.math.RNG;
public class MutateESCovarianceMatrixAdaption implements InterfaceMutation, java.io.Serializable {
protected int m_D;
protected double[] m_Z;
protected double m_SigmaGlobal = 1;
protected double m_InitSigmaScalar = -1;
protected double m_c;
protected int D;
protected double[] Z;
protected double sigmaGlobal = 1;
protected double initSigmaScalar = -1;
protected double c;
protected double cu;
protected double cov;
protected double Beta;
protected double[] s_N;
protected double[] m_PathS;
protected double[] pathS;
protected double[] Bz;
protected double xi_dach;
protected Matrix m_C;
protected Matrix C;
protected Matrix B;
protected boolean m_CheckConstraints = false;
protected int m_constraintMaxTries = 50;
protected int m_Counter;
protected int m_frequency = 1;
protected double[] m_Eigenvalues;
protected boolean checkConstraints = false;
protected int constraintMaxTries = 50;
protected int counter;
protected int frequency = 1;
protected double[] eigenValues;
public MutateESCovarianceMatrixAdaption() {
}
public MutateESCovarianceMatrixAdaption(MutateESCovarianceMatrixAdaption mutator) {
this.m_Counter = mutator.m_Counter;
this.m_frequency = mutator.m_frequency;
this.m_InitSigmaScalar = mutator.m_InitSigmaScalar;
this.m_constraintMaxTries = mutator.m_constraintMaxTries;
this.m_CheckConstraints = mutator.m_CheckConstraints;
this.m_D = mutator.m_D;
this.m_SigmaGlobal = mutator.m_SigmaGlobal;
this.m_c = mutator.m_c;
this.counter = mutator.counter;
this.frequency = mutator.frequency;
this.initSigmaScalar = mutator.initSigmaScalar;
this.constraintMaxTries = mutator.constraintMaxTries;
this.checkConstraints = mutator.checkConstraints;
this.D = mutator.D;
this.sigmaGlobal = mutator.sigmaGlobal;
this.c = mutator.c;
this.cu = mutator.cu;
this.cov = mutator.cov;
this.Beta = mutator.Beta;
@ -59,23 +59,23 @@ public class MutateESCovarianceMatrixAdaption implements InterfaceMutation, java
if (mutator.s_N != null) {
this.s_N = (double[]) mutator.s_N.clone();
}
if (mutator.m_PathS != null) {
this.m_PathS = (double[]) mutator.m_PathS.clone();
if (mutator.pathS != null) {
this.pathS = (double[]) mutator.pathS.clone();
}
if (mutator.Bz != null) {
this.Bz = (double[]) mutator.Bz.clone();
}
if (mutator.m_C != null) {
this.m_C = (Matrix) mutator.m_C.clone();
if (mutator.C != null) {
this.C = (Matrix) mutator.C.clone();
}
if (mutator.B != null) {
this.B = (Matrix) mutator.B.clone();
}
if (mutator.m_Z != null) {
this.m_Z = (double[]) mutator.m_Z.clone();
if (mutator.Z != null) {
this.Z = (double[]) mutator.Z.clone();
}
if (mutator.m_Eigenvalues != null) {
this.m_Eigenvalues = (double[]) mutator.m_Eigenvalues.clone();
if (mutator.eigenValues != null) {
this.eigenValues = (double[]) mutator.eigenValues.clone();
}
}
@ -113,11 +113,11 @@ public class MutateESCovarianceMatrixAdaption implements InterfaceMutation, java
MutateESCovarianceMatrixAdaption mut = (MutateESCovarianceMatrixAdaption) mutator;
// i assume if the C Matrix is equal then the mutation operators are equal
try {
if (this.m_C == mut.m_C) {
if (this.C == mut.C) {
return true;
}
double[][] c1 = this.m_C.getArray();
double[][] c2 = mut.m_C.getArray();
double[][] c1 = this.C.getArray();
double[][] c2 = mut.C.getArray();
if (c1 == c2) {
return true;
}
@ -151,32 +151,32 @@ public class MutateESCovarianceMatrixAdaption implements InterfaceMutation, java
double[] x = ((InterfaceESIndividual) individual).getDGenotype();
double[][] ranges = ((InterfaceESIndividual) individual).getDoubleRange();
this.m_Counter = this.m_frequency;
if (m_InitSigmaScalar > 0) {
this.m_SigmaGlobal = this.m_InitSigmaScalar;
this.counter = this.frequency;
if (initSigmaScalar > 0) {
this.sigmaGlobal = this.initSigmaScalar;
} else {
double avgRange = Mathematics.getAvgRange(ranges);
this.m_SigmaGlobal = 0.25 * avgRange;
this.sigmaGlobal = 0.25 * avgRange;
}
System.out.println("Init sigma: " + m_SigmaGlobal);
this.m_D = x.length;
this.m_C = Matrix.identity(this.m_D, this.m_D);
EigenvalueDecomposition helper = new EigenvalueDecomposition(this.m_C);
System.out.println("Init sigma: " + sigmaGlobal);
this.D = x.length;
this.C = Matrix.identity(this.D, this.D);
EigenvalueDecomposition helper = new EigenvalueDecomposition(this.C);
this.B = helper.getV();
this.m_c = Math.sqrt(1.0 / (double) this.m_D);
this.cu = Math.sqrt((2.0 - this.m_c) / this.m_c);
this.Beta = this.m_c;
this.cov = 2.0 / ((double) this.m_D * (double) this.m_D);
this.m_Z = new double[this.m_D];
this.s_N = new double[this.m_D];
this.Bz = new double[this.m_D];
this.m_PathS = new double[this.m_D];
for (int i = 0; i < this.m_D; i++) {
this.c = Math.sqrt(1.0 / (double) this.D);
this.cu = Math.sqrt((2.0 - this.c) / this.c);
this.Beta = this.c;
this.cov = 2.0 / ((double) this.D * (double) this.D);
this.Z = new double[this.D];
this.s_N = new double[this.D];
this.Bz = new double[this.D];
this.pathS = new double[this.D];
for (int i = 0; i < this.D; i++) {
this.s_N[i] = 0;
this.Bz[i] = 0;
this.m_PathS[i] = 0;
this.pathS[i] = 0;
}
this.xi_dach = Math.sqrt(this.m_D - 0.5);
this.xi_dach = Math.sqrt(this.D - 0.5);
evaluateNewObjectX(x, ranges);
}
@ -223,36 +223,36 @@ public class MutateESCovarianceMatrixAdaption implements InterfaceMutation, java
double Cij;
double Bz_d;
double pathLen = 0.0;
for (int i = 0; i < this.m_D; i++) {
this.s_N[i] = (1.0 - this.m_c) * this.s_N[i] + this.m_c * this.cu * this.Bz[i];
for (int i = 0; i < this.D; i++) {
this.s_N[i] = (1.0 - this.c) * this.s_N[i] + this.c * this.cu * this.Bz[i];
}
// System.out.println("C bef:\n" + c.toString());
// ADAPT COVARIANCE
for (int i = 0; i < this.m_D; i++) {
for (int j = i; j < this.m_D; j++) {
Cij = (1.0 - this.cov) * this.m_C.get(i, j) + this.cov * this.s_N[i] * this.s_N[j];
this.m_C.set(i, j, Cij);
this.m_C.set(j, i, Cij);
for (int i = 0; i < this.D; i++) {
for (int j = i; j < this.D; j++) {
Cij = (1.0 - this.cov) * this.C.get(i, j) + this.cov * this.s_N[i] * this.s_N[j];
this.C.set(i, j, Cij);
this.C.set(j, i, Cij);
}
}
// System.out.println("C aft:\n" + c.toString());
// ADAPT GLOBAL STEPSIZE
for (int i = 0; i < this.m_D; i++) {
for (int i = 0; i < this.D; i++) {
Bz_d = 0.0;
for (int j = 0; j < this.m_D; j++) {
Bz_d += this.B.get(i, j) * this.m_Z[j];
for (int j = 0; j < this.D; j++) {
Bz_d += this.B.get(i, j) * this.Z[j];
}
this.m_PathS[i] = (1.0 - this.m_c) * this.m_PathS[i] + this.m_c * this.cu * Bz_d;
pathLen += this.m_PathS[i] * this.m_PathS[i];
this.pathS[i] = (1.0 - this.c) * this.pathS[i] + this.c * this.cu * Bz_d;
pathLen += this.pathS[i] * this.pathS[i];
}
this.m_SigmaGlobal *= Math.exp(this.Beta * this.m_c * (Math.sqrt(pathLen) - this.xi_dach));
this.sigmaGlobal *= Math.exp(this.Beta * this.c * (Math.sqrt(pathLen) - this.xi_dach));
}
protected void evaluateNewObjectX(double[] x, double[][] range) {
// if (Double.isNaN((x[0]))) System.out.println("treffer in cma "+ x[0]);
// if (Double.isNaN((c.get(0,0)))) System.out.println("treffer in cma");
// for (int i=0;i<N;i++) { // evaluate new random values
// m_Z[i] = RNG.gaussianDouble(1.0);
// Z[i] = RNG.gaussianDouble(1.0);
// }
// c = (c.plus(c.transpose()).times(0.5)); // MAKE C SYMMETRIC
// EigenvalueDecomposition helper = new EigenvalueDecomposition(c);
@ -265,12 +265,12 @@ public class MutateESCovarianceMatrixAdaption implements InterfaceMutation, java
// for (int i=0;i<N;i++) {
// Bz[i] = 0;
// for (int j=0;j<N;j++) {
// Bz[i] = Bz[i] + Math.sqrt(Math.abs(Eigenvalues[j])) * B.get(i,j)*m_Z[j];
// Bz[i] = Bz[i] + Math.sqrt(Math.abs(Eigenvalues[j])) * B.get(i,j)*Z[j];
// }
// tmpD[i]=x[i]+m_SigmaScalar*Bz[i]; // here is the new value
// }
// constraint = true;
// if (this.m_CheckConstraints) {
// if (this.checkConstraints) {
// for (int i=0;i<N;i++) {
// if ((tmpD[i]<range[i][0]) || (tmpD[i]>range[i][1])) constraint = false;
// }
@ -283,42 +283,42 @@ public class MutateESCovarianceMatrixAdaption implements InterfaceMutation, java
// }
// for (int i = 0; i < N; i++) x[i] = tmpD[i];
// conservation of mutation direction:
//double[] oldZ = (double[]) this.m_Z.clone();
//double[] oldZ = (double[]) this.Z.clone();
double[] oldX = (double[]) x.clone();
for (int i = 0; i < this.m_D; i++) {
this.m_Z[i] = RNG.gaussianDouble(1.0);
for (int i = 0; i < this.D; i++) {
this.Z[i] = RNG.gaussianDouble(1.0);
}
this.m_C = (this.m_C.plus(this.m_C.transpose()).times(0.5)); // MAKE C SYMMETRIC
this.m_Counter++;
if (this.m_Counter >= this.m_frequency) {
this.C = (this.C.plus(this.C.transpose()).times(0.5)); // MAKE C SYMMETRIC
this.counter++;
if (this.counter >= this.frequency) {
EigenvalueDecomposition helper;
this.m_Counter = 0;
helper = new EigenvalueDecomposition(this.m_C);
this.counter = 0;
helper = new EigenvalueDecomposition(this.C);
this.B = helper.getV();
this.m_Eigenvalues = helper.getRealEigenvalues();
this.eigenValues = helper.getRealEigenvalues();
}
boolean isNewPosFeasible = false;
int counter = 0;
while (!isNewPosFeasible && counter < this.m_constraintMaxTries) {
for (int i = 0; i < this.m_D; i++) {
while (!isNewPosFeasible && counter < this.constraintMaxTries) {
for (int i = 0; i < this.D; i++) {
this.Bz[i] = 0;
for (int j = 0; j < this.m_D; j++) {
this.Bz[i] += Math.sqrt(Math.abs(this.m_Eigenvalues[j])) * this.B.get(i, j) * this.m_Z[j];
for (int j = 0; j < this.D; j++) {
this.Bz[i] += Math.sqrt(Math.abs(this.eigenValues[j])) * this.B.get(i, j) * this.Z[j];
}
x[i] += this.m_SigmaGlobal * this.Bz[i]; // here is the new value
x[i] += this.sigmaGlobal * this.Bz[i]; // here is the new value
}
isNewPosFeasible = true;
if (this.m_CheckConstraints == true) {
for (int i = 0; i < m_D; i++) {
if (this.checkConstraints == true) {
for (int i = 0; i < D; i++) {
if (x[i] < range[i][0] || x[i] > range[i][1]) {
// undo the step and try new Z
for (int j = 0; j < this.m_D; j++) {
x[j] = oldX[j] - this.m_SigmaGlobal * this.Bz[j];
for (int j = 0; j < this.D; j++) {
x[j] = oldX[j] - this.sigmaGlobal * this.Bz[j];
}
this.m_SigmaGlobal *= 0.5;
this.sigmaGlobal *= 0.5;
isNewPosFeasible = false;
counter++;
break;
@ -331,7 +331,7 @@ public class MutateESCovarianceMatrixAdaption implements InterfaceMutation, java
// if (counter > 15) System.out.println(BeanInspector.toString(x));
// else System.out.println();
}
if (this.m_CheckConstraints && !isNewPosFeasible) { // use force
if (this.checkConstraints && !isNewPosFeasible) { // use force
Mathematics.projectToRange(x, range);
// System.err.println("PROJECTING BY FORCE");
}
@ -375,11 +375,11 @@ public class MutateESCovarianceMatrixAdaption implements InterfaceMutation, java
* @param bit The new representation for the inner constants.
*/
public void setCheckConstraints(boolean bit) {
this.m_CheckConstraints = bit;
this.checkConstraints = bit;
}
public boolean getCheckConstraints() {
return this.m_CheckConstraints;
return this.checkConstraints;
}
public String checkConstraintsTipText() {
@ -392,11 +392,11 @@ public class MutateESCovarianceMatrixAdaption implements InterfaceMutation, java
* @param d The initial sigma value.
*/
public void setInitSigmaScalar(double d) {
this.m_InitSigmaScalar = d;
this.initSigmaScalar = d;
}
public double getInitSigmaScalar() {
return this.m_InitSigmaScalar;
return this.initSigmaScalar;
}
public String initSigmaScalarTipText() {

View File

@ -9,12 +9,12 @@ import eva2.tools.math.Jama.Matrix;
public class MutateESCovarianceMatrixAdaptionPlus extends
MutateESCovarianceMatrixAdaption implements InterfaceMutation,
InterfaceAdaptOperatorGenerational {
protected double m_psuccess;
protected double m_cp;
protected double m_psuccesstarget = 0.44;
protected double m_stepd;
protected double m_pthresh;
protected int m_lambda = 1;
protected double psuccess;
protected double cp;
protected double psuccesstarget = 0.44;
protected double stepd;
protected double pthresh;
protected int lambda = 1;
public MutateESCovarianceMatrixAdaptionPlus() {
super();
@ -23,12 +23,12 @@ public class MutateESCovarianceMatrixAdaptionPlus extends
public MutateESCovarianceMatrixAdaptionPlus(
MutateESCovarianceMatrixAdaptionPlus mutator) {
super(mutator);
m_psuccess = mutator.m_psuccess;
m_cp = mutator.m_cp;
m_psuccesstarget = mutator.m_psuccesstarget;
m_lambda = mutator.m_lambda;
m_pthresh = mutator.m_pthresh;
m_stepd = mutator.m_stepd;
psuccess = mutator.psuccess;
cp = mutator.cp;
psuccesstarget = mutator.psuccesstarget;
lambda = mutator.lambda;
pthresh = mutator.pthresh;
stepd = mutator.stepd;
}
/**
@ -55,14 +55,14 @@ public class MutateESCovarianceMatrixAdaptionPlus extends
return;
}
super.init(individual, opt);
m_psuccesstarget = 1.0 / (5 + Math.sqrt(m_lambda) / 2);
m_psuccess = m_psuccesstarget;
m_stepd = 1.0 + m_D / (2.0 * m_lambda);
m_cp = m_psuccesstarget * m_lambda / (2 + m_psuccesstarget * m_lambda);
m_c = 2.0 / (2.0 + m_D);
this.cov = 2.0 / (6.0 + Math.pow(m_D, 2)); // ATTN: differs from the
psuccesstarget = 1.0 / (5 + Math.sqrt(lambda) / 2);
psuccess = psuccesstarget;
stepd = 1.0 + D / (2.0 * lambda);
cp = psuccesstarget * lambda / (2 + psuccesstarget * lambda);
c = 2.0 / (2.0 + D);
this.cov = 2.0 / (6.0 + Math.pow(D, 2)); // ATTN: differs from the
// standard CMA-ES
m_pthresh = 0.44;
pthresh = 0.44;
}
@ -82,8 +82,8 @@ public class MutateESCovarianceMatrixAdaptionPlus extends
*/
public void updateCovariance(AbstractEAIndividual child,
AbstractEAIndividual parent) {
double[] step = new double[m_D];
for (int i = 0; i < m_D; i++) {
double[] step = new double[D];
for (int i = 0; i < D; i++) {
step[i] = ((InterfaceESIndividual) parent).getDGenotype()[i]
- ((InterfaceESIndividual) child).getDGenotype()[i];
}
@ -91,8 +91,8 @@ public class MutateESCovarianceMatrixAdaptionPlus extends
}
public void updateCovariance() {
double[] step = new double[m_D];
for (int i = 0; i < m_D; i++) {
double[] step = new double[D];
for (int i = 0; i < D; i++) {
step[i] = Bz[i];
}
updateCovariance(step);
@ -102,23 +102,23 @@ public class MutateESCovarianceMatrixAdaptionPlus extends
* @param step
*/
public void updateCovariance(double[] step) {
for (int i = 0; i < m_D; i++) {
if (m_psuccess < m_pthresh) {
m_PathS[i] = (1.0 - m_c) * m_PathS[i]
+ Math.sqrt(m_c * (2.0 - m_c)) * (step[i])
/ m_SigmaGlobal;
for (int i = 0; i < D; i++) {
if (psuccess < pthresh) {
pathS[i] = (1.0 - c) * pathS[i]
+ Math.sqrt(c * (2.0 - c)) * (step[i])
/ sigmaGlobal;
} else {
m_PathS[i] = (1.0 - m_c) * m_PathS[i];
pathS[i] = (1.0 - c) * pathS[i];
}
}
if (m_psuccess < m_pthresh) {
m_C = m_C.multi((1.0 - cov));
m_C.plusEquals(Matrix.outer(m_PathS, m_PathS).multi(cov));
if (psuccess < pthresh) {
C = C.multi((1.0 - cov));
C.plusEquals(Matrix.outer(pathS, pathS).multi(cov));
} else {
m_C = m_C.multi((1.0 - cov)).plus(
(Matrix.outer(m_PathS, m_PathS).plus(
m_C.multi(m_c * (2.0 - m_c))).multi(cov)));
C = C.multi((1.0 - cov)).plus(
(Matrix.outer(pathS, pathS).plus(
C.multi(c * (2.0 - c))).multi(cov)));
}
}
@ -127,11 +127,11 @@ public class MutateESCovarianceMatrixAdaptionPlus extends
}
public int getLambda() {
return m_lambda;
return lambda;
}
public void setLambda(int mLambda) {
m_lambda = mLambda;
lambda = mLambda;
}
@Override
@ -203,13 +203,13 @@ public class MutateESCovarianceMatrixAdaptionPlus extends
}
public double getPSuccess() {
return m_psuccess;
return psuccess;
}
public void updateStepSize(double psuccess) {
this.m_psuccess = (1 - m_cp) * m_psuccess + m_cp * psuccess;
m_SigmaGlobal *= Math.exp(1 / m_stepd * (m_psuccess - m_psuccesstarget)
/ (1 - m_psuccesstarget));
this.psuccess = (1 - cp) * this.psuccess + cp * psuccess;
sigmaGlobal *= Math.exp(1 / stepd * (this.psuccess - psuccesstarget)
/ (1 - psuccesstarget));
}
@Override

View File

@ -205,10 +205,10 @@ public class MutateESMainVectorAdaption implements InterfaceMutation, java.io.Se
// boolean constraint = false;
// int counter = 0;
// while (constraint == false) {
// for (int i = 0; i < x.length; i++) x[i] = x[i] + m_SigmaScalar * (m_Z[i] + Z1 * w_v * m_main_v[i]);
// for (int i = 0; i < x.length; i++) x[i] = x[i] + m_SigmaScalar * (Z[i] + Z1 * w_v * m_main_v[i]);
// constraint = true;
// if (counter++ > 30) break;
// if (m_CheckConstraints == true) {
// if (checkConstraints == true) {
// for (int i = 0; i < x.length; i++) {
// if (x[i] < range[i][0]) x[i] = range[i][0];
// if (x[i] > range[i][1]) x[i] = range[i][1];

View File

@ -109,7 +109,7 @@ public class MutateESPathLengthAdaption implements InterfaceMutation, java.io.Se
double[] x = ((InterfaceESIndividual) individual).getDGenotype();
double[][] ranges = ((InterfaceESIndividual) individual).getDoubleRange();
this.m_dim = x.length;
// if (this.m_UsePath) this.m_c = Math.sqrt(1.0 / (double) this.m_dim);
// if (this.m_UsePath) this.c = Math.sqrt(1.0 / (double) this.m_dim);
this.m_randZ = new double[this.m_dim];
this.m_Path = new double[this.m_dim];

View File

@ -511,7 +511,7 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
params.mC = (params.mC.plus(params.mC.transpose()).times(0.5)); // MAKE C SYMMETRIC
EigenvalueDecomposition helper;
// this.m_Counter = 0;
// this.counter = 0;
helper = new EigenvalueDecomposition(params.mC);
params.mB = helper.getV(); // Return the eigenvector matrix
params.eigenvalues = helper.getRealEigenvalues();

View File

@ -15,14 +15,14 @@ import eva2.tools.math.RNG;
*/
public class MutateGIInsertDelete implements InterfaceMutation, java.io.Serializable {
int m_MaxLengthOfInsDel = 2;
int maxLengthOfInsDel = 2;
public MutateGIInsertDelete() {
}
public MutateGIInsertDelete(MutateGIInsertDelete mutator) {
this.m_MaxLengthOfInsDel = mutator.m_MaxLengthOfInsDel;
this.maxLengthOfInsDel = mutator.maxLengthOfInsDel;
}
/**
@ -45,7 +45,7 @@ public class MutateGIInsertDelete implements InterfaceMutation, java.io.Serializ
public boolean equals(Object mutator) {
if (mutator instanceof MutateGIInsertDelete) {
MutateGIInsertDelete mut = (MutateGIInsertDelete) mutator;
if (this.m_MaxLengthOfInsDel != mut.m_MaxLengthOfInsDel) {
if (this.maxLengthOfInsDel != mut.maxLengthOfInsDel) {
return false;
}
return true;
@ -92,7 +92,7 @@ public class MutateGIInsertDelete implements InterfaceMutation, java.io.Serializ
int[][] newRange;
int length, position;
//this.pintInt("Before ", x);
length = RNG.randomInt(1, this.m_MaxLengthOfInsDel);
length = RNG.randomInt(1, this.maxLengthOfInsDel);
boolean insert = RNG.flipCoin(0.5);
if ((!insert) && (length >= x.length - 1)) {
insert = true;
@ -184,11 +184,11 @@ public class MutateGIInsertDelete implements InterfaceMutation, java.io.Serializ
* @param n The max length of invert
*/
public void setMaxLengthOfInsDel(int n) {
this.m_MaxLengthOfInsDel = n;
this.maxLengthOfInsDel = n;
}
public int getMaxLengthOfInsDel() {
return this.m_MaxLengthOfInsDel;
return this.maxLengthOfInsDel;
}
public String maxLengthOfInsDelTipText() {

View File

@ -15,14 +15,14 @@ import eva2.tools.math.RNG;
*/
public class MutateGIInvert implements InterfaceMutation, java.io.Serializable {
int m_MaxLengthOfInvert = 2;
int maxLengthOfInvert = 2;
public MutateGIInvert() {
}
public MutateGIInvert(MutateGIInvert mutator) {
this.m_MaxLengthOfInvert = mutator.m_MaxLengthOfInvert;
this.maxLengthOfInvert = mutator.maxLengthOfInvert;
}
/**
@ -45,7 +45,7 @@ public class MutateGIInvert implements InterfaceMutation, java.io.Serializable {
public boolean equals(Object mutator) {
if (mutator instanceof MutateGIInvert) {
MutateGIInvert mut = (MutateGIInvert) mutator;
if (this.m_MaxLengthOfInvert != mut.m_MaxLengthOfInvert) {
if (this.maxLengthOfInvert != mut.maxLengthOfInvert) {
return false;
}
return true;
@ -77,7 +77,7 @@ public class MutateGIInvert implements InterfaceMutation, java.io.Serializable {
int[] x = ((InterfaceGIIndividual) individual).getIGenotype();
int range, center, index = 0;
//this.pintInt("Before ", x);
range = RNG.randomInt(1, this.m_MaxLengthOfInvert);
range = RNG.randomInt(1, this.maxLengthOfInvert);
if (2 * range >= x.length) {
return;
}
@ -154,11 +154,11 @@ public class MutateGIInvert implements InterfaceMutation, java.io.Serializable {
* @param n The max length of invert
*/
public void setMaxLengthOfInvert(int n) {
this.m_MaxLengthOfInvert = n;
this.maxLengthOfInvert = n;
}
public int getMaxLengthOfInvert() {
return this.m_MaxLengthOfInvert;
return this.maxLengthOfInvert;
}
public String maxLengthOfInvertTipText() {

View File

@ -15,14 +15,14 @@ import eva2.tools.math.RNG;
*/
public class MutateGINominal implements InterfaceMutation, java.io.Serializable {
int m_NumberOfMutations = 2;
int numberOfMutations = 2;
public MutateGINominal() {
}
public MutateGINominal(MutateGINominal mutator) {
this.m_NumberOfMutations = mutator.m_NumberOfMutations;
this.numberOfMutations = mutator.numberOfMutations;
}
/**
@ -45,7 +45,7 @@ public class MutateGINominal implements InterfaceMutation, java.io.Serializable
public boolean equals(Object mutator) {
if (mutator instanceof MutateGINominal) {
MutateGINominal mut = (MutateGINominal) mutator;
if (this.m_NumberOfMutations != mut.m_NumberOfMutations) {
if (this.numberOfMutations != mut.numberOfMutations) {
return false;
}
return true;
@ -77,7 +77,7 @@ public class MutateGINominal implements InterfaceMutation, java.io.Serializable
int[] x = ((InterfaceGIIndividual) individual).getIGenotype();
int[][] range = ((InterfaceGIIndividual) individual).getIntRange();
int mutInd = 0;
for (int k = 0; k < this.m_NumberOfMutations; k++) {
for (int k = 0; k < this.numberOfMutations; k++) {
try {
mutInd = RNG.randomInt(0, x.length - 1);
} catch (java.lang.ArithmeticException e) {
@ -140,11 +140,11 @@ public class MutateGINominal implements InterfaceMutation, java.io.Serializable
* @param n The number of mutations
*/
public void setNumberOfMutations(int n) {
this.m_NumberOfMutations = n;
this.numberOfMutations = n;
}
public int getNumberOfMutations() {
return this.m_NumberOfMutations;
return this.numberOfMutations;
}
public String numberOfMutationsTipText() {

View File

@ -15,16 +15,16 @@ import eva2.tools.math.RNG;
*/
public class MutateGIOrdinal implements InterfaceMutation, java.io.Serializable {
double m_StepSize = 0.1;
int m_NumberOfMutations = 2;
double stepSize = 0.1;
int numberOfMutations = 2;
public MutateGIOrdinal() {
}
public MutateGIOrdinal(MutateGIOrdinal mutator) {
this.m_StepSize = mutator.m_StepSize;
this.m_NumberOfMutations = mutator.m_NumberOfMutations;
this.stepSize = mutator.stepSize;
this.numberOfMutations = mutator.numberOfMutations;
}
/**
@ -47,10 +47,10 @@ public class MutateGIOrdinal implements InterfaceMutation, java.io.Serializable
public boolean equals(Object mutator) {
if (mutator instanceof MutateGIOrdinal) {
MutateGIOrdinal mut = (MutateGIOrdinal) mutator;
if (this.m_StepSize != mut.m_StepSize) {
if (this.stepSize != mut.stepSize) {
return false;
}
if (this.m_NumberOfMutations != mut.m_NumberOfMutations) {
if (this.numberOfMutations != mut.numberOfMutations) {
return false;
}
return true;
@ -83,9 +83,9 @@ public class MutateGIOrdinal implements InterfaceMutation, java.io.Serializable
int[][] range = ((InterfaceGIIndividual) individual).getIntRange();
int mutInd, mut;
double mutate;
for (int k = 0; k < this.m_NumberOfMutations; k++) {
for (int k = 0; k < this.numberOfMutations; k++) {
mutInd = RNG.randomInt(0, x.length - 1);
mutate = RNG.gaussianDouble(this.m_StepSize);
mutate = RNG.gaussianDouble(this.stepSize);
mutate *= (range[mutInd][1] - range[mutInd][1]);
mut = (int) Math.round(mutate);
if (mut == 0) {
@ -158,11 +158,11 @@ public class MutateGIOrdinal implements InterfaceMutation, java.io.Serializable
* @param n The step size
*/
public void setStepSize(double n) {
this.m_StepSize = n;
this.stepSize = n;
}
public double getStepSize() {
return this.m_StepSize;
return this.stepSize;
}
public String stepSizeTipText() {
@ -175,11 +175,11 @@ public class MutateGIOrdinal implements InterfaceMutation, java.io.Serializable
* @param n The number of mutations
*/
public void setNumberOfMutations(int n) {
this.m_NumberOfMutations = n;
this.numberOfMutations = n;
}
public int getNumberOfMutations() {
return this.m_NumberOfMutations;
return this.numberOfMutations;
}
public String numberOfMutationsTipText() {

View File

@ -16,8 +16,8 @@ import eva2.tools.math.RNG;
*/
public class MutateGITranslocate implements InterfaceMutation, java.io.Serializable {
int m_MaxLengthOfTranslocate = 4;
int m_maxTransLocDistance = -1;
int maxLengthOfTranslocate = 4;
int maxTransLocDistance = -1;
public MutateGITranslocate() {
}
@ -34,7 +34,7 @@ public class MutateGITranslocate implements InterfaceMutation, java.io.Serializa
}
public MutateGITranslocate(MutateGITranslocate mutator) {
this.m_MaxLengthOfTranslocate = mutator.m_MaxLengthOfTranslocate;
this.maxLengthOfTranslocate = mutator.maxLengthOfTranslocate;
}
/**
@ -57,7 +57,7 @@ public class MutateGITranslocate implements InterfaceMutation, java.io.Serializa
public boolean equals(Object mutator) {
if (mutator instanceof MutateGITranslocate) {
MutateGITranslocate mut = (MutateGITranslocate) mutator;
if (this.m_MaxLengthOfTranslocate != mut.m_MaxLengthOfTranslocate) {
if (this.maxLengthOfTranslocate != mut.maxLengthOfTranslocate) {
return false;
}
return true;
@ -88,16 +88,16 @@ public class MutateGITranslocate implements InterfaceMutation, java.io.Serializa
if (individual instanceof InterfaceGIIndividual) {
int[] x = ((InterfaceGIIndividual) individual).getIGenotype();
int from, to, length;
length = RNG.randomInt(1, this.m_MaxLengthOfTranslocate);
length = RNG.randomInt(1, this.maxLengthOfTranslocate);
if (x.length < length + 2) {
return;
}
from = RNG.randomInt(0, x.length - 1 - length);
if (m_maxTransLocDistance <= 0) {
if (maxTransLocDistance <= 0) {
to = RNG.randomInt(0, x.length - 1 - length);
} else {
int minTo = Math.max(0, from - m_maxTransLocDistance);
int maxTo = Math.min(x.length - 1 - length, from + m_maxTransLocDistance);
int minTo = Math.max(0, from - maxTransLocDistance);
int maxTo = Math.min(x.length - 1 - length, from + maxTransLocDistance);
// System.out.println("min/max-to: " + minTo + ", " + maxTo);
to = RNG.randomInt(minTo, maxTo);
// System.out.println("to is " + to);
@ -198,11 +198,11 @@ public class MutateGITranslocate implements InterfaceMutation, java.io.Serializa
* @param n The max length of invert
*/
public void setMaxLengthOfTranslocate(int n) {
this.m_MaxLengthOfTranslocate = n;
this.maxLengthOfTranslocate = n;
}
public int getMaxLengthOfTranslocate() {
return this.m_MaxLengthOfTranslocate;
return this.maxLengthOfTranslocate;
}
public String maxLengthOfTranslocateTipText() {
@ -215,11 +215,11 @@ public class MutateGITranslocate implements InterfaceMutation, java.io.Serializa
* @param n The max length of invert
*/
public void setMaxTranslocationDist(int n) {
this.m_maxTransLocDistance = n;
this.maxTransLocDistance = n;
}
public int getMaxTranslocationDist() {
return this.m_maxTransLocDistance;
return this.maxTransLocDistance;
}
public String maxTranslocationDistTipText() {

View File

@ -16,20 +16,20 @@ import eva2.tools.math.RNG;
* To change this template use Options | File Templates.
*/
public class MutateGPAdaptive implements InterfaceMutation, java.io.Serializable {
protected double m_MutationStep = 1;
protected double m_Tau1 = 0.15;
protected double m_Tau2 = 0.15;
protected double m_LowerLimitStepSize = 0.0000005;
protected double mutationStep = 1;
protected double tau1 = 0.15;
protected double tau2 = 0.15;
protected double lowerLimitStepSize = 0.0000005;
public MutateGPAdaptive() {
}
public MutateGPAdaptive(MutateGPAdaptive mutator) {
this.m_MutationStep = mutator.m_MutationStep;
this.m_Tau1 = mutator.m_Tau1;
this.m_Tau2 = mutator.m_Tau2;
this.m_LowerLimitStepSize = mutator.m_LowerLimitStepSize;
this.mutationStep = mutator.mutationStep;
this.tau1 = mutator.tau1;
this.tau2 = mutator.tau2;
this.lowerLimitStepSize = mutator.lowerLimitStepSize;
}
/**
@ -52,16 +52,16 @@ public class MutateGPAdaptive implements InterfaceMutation, java.io.Serializable
public boolean equals(Object mutator) {
if (mutator instanceof MutateGPAdaptive) {
MutateGPAdaptive mut = (MutateGPAdaptive) mutator;
if (this.m_MutationStep != mut.m_MutationStep) {
if (this.mutationStep != mut.mutationStep) {
return false;
}
if (this.m_Tau1 != mut.m_Tau1) {
if (this.tau1 != mut.tau1) {
return false;
}
if (this.m_Tau2 != mut.m_Tau2) {
if (this.tau2 != mut.tau2) {
return false;
}
if (this.m_LowerLimitStepSize != mut.m_LowerLimitStepSize) {
if (this.lowerLimitStepSize != mut.lowerLimitStepSize) {
return false;
}
return true;
@ -91,14 +91,14 @@ public class MutateGPAdaptive implements InterfaceMutation, java.io.Serializable
public void mutate(AbstractEAIndividual individual) {
//System.out.println("Before Mutate: " +((GAIndividual)individual).getSolutionRepresentationFor());
if (individual instanceof InterfaceGPIndividual) {
this.m_MutationStep *= Math.exp(this.m_Tau1 * RNG.gaussianDouble(1) + this.m_Tau2 * RNG.gaussianDouble(1));
if (this.m_MutationStep < this.m_LowerLimitStepSize) {
this.m_MutationStep = this.m_LowerLimitStepSize;
this.mutationStep *= Math.exp(this.tau1 * RNG.gaussianDouble(1) + this.tau2 * RNG.gaussianDouble(1));
if (this.mutationStep < this.lowerLimitStepSize) {
this.mutationStep = this.lowerLimitStepSize;
}
if (this.m_MutationStep > 1) {
this.m_MutationStep = 1;
if (this.mutationStep > 1) {
this.mutationStep = 1;
}
if (RNG.flipCoin(this.m_MutationStep)) {
if (RNG.flipCoin(this.mutationStep)) {
((IndividualInterface) individual).defaultMutate();
}
}
@ -157,13 +157,13 @@ public class MutateGPAdaptive implements InterfaceMutation, java.io.Serializable
*/
public void setMutationStep(double d) {
if (d < 0) {
d = this.m_LowerLimitStepSize;
d = this.lowerLimitStepSize;
}
this.m_MutationStep = d;
this.mutationStep = d;
}
public double getMutationStepSize() {
return this.m_MutationStep;
return this.mutationStep;
}
public String mutationStepSizeTipText() {
@ -179,11 +179,11 @@ public class MutateGPAdaptive implements InterfaceMutation, java.io.Serializable
if (d < 0) {
d = 0;
}
this.m_LowerLimitStepSize = d;
this.lowerLimitStepSize = d;
}
public double getLowerLimitStepSize() {
return this.m_LowerLimitStepSize;
return this.lowerLimitStepSize;
}
public String lowerLimitStepSizeTipText() {
@ -199,11 +199,11 @@ public class MutateGPAdaptive implements InterfaceMutation, java.io.Serializable
if (d < 0) {
d = 0;
}
this.m_Tau1 = d;
this.tau1 = d;
}
public double getTau1() {
return this.m_Tau1;
return this.tau1;
}
public String tau1TipText() {
@ -219,11 +219,11 @@ public class MutateGPAdaptive implements InterfaceMutation, java.io.Serializable
if (d < 0) {
d = 0;
}
this.m_Tau2 = d;
this.tau2 = d;
}
public double getTau2() {
return this.m_Tau2;
return this.tau2;
}
public String tau2TipText() {

View File

@ -9,42 +9,42 @@ package eva2.optimization.operator.mutation;
*/
public class PropertyMutationMixer implements java.io.Serializable {
public InterfaceMutation[] m_AvailableTargets;
public InterfaceMutation[] m_SelectedTargets;
public double[] m_Weights;
public String m_DescriptiveString = "No Description given.";
public String m_WeightsLabel = "-";
public boolean m_NormalizationEnabled = true;
public InterfaceMutation[] availableTargets;
public InterfaceMutation[] selectedTargets;
public double[] weights;
public String descriptiveString = "No Description given.";
public String weightsLabel = "-";
public boolean normalizationEnabled = true;
public PropertyMutationMixer(InterfaceMutation[] d, boolean selectAllOrNone) {
this.m_Weights = new double[d.length];
this.weights = new double[d.length];
for (int i = 0; i < d.length; i++) {
this.m_Weights[i] = 1 / ((double) d.length);
this.weights[i] = 1 / ((double) d.length);
}
this.m_AvailableTargets = d;
this.availableTargets = d;
if (selectAllOrNone) {
this.m_SelectedTargets = d.clone();
this.selectedTargets = d.clone();
} else {
this.m_SelectedTargets = null;
this.selectedTargets = null;
}
}
public PropertyMutationMixer(PropertyMutationMixer d) {
this.m_DescriptiveString = d.m_DescriptiveString;
this.m_WeightsLabel = d.m_WeightsLabel;
this.m_NormalizationEnabled = d.m_NormalizationEnabled;
this.m_AvailableTargets = new InterfaceMutation[d.m_AvailableTargets.length];
for (int i = 0; i < this.m_AvailableTargets.length; i++) {
//this.m_AvailableTargets[i] = (InterfaceMutation)d.m_AvailableTargets[i].clone();
this.m_AvailableTargets[i] = d.m_AvailableTargets[i];
this.descriptiveString = d.descriptiveString;
this.weightsLabel = d.weightsLabel;
this.normalizationEnabled = d.normalizationEnabled;
this.availableTargets = new InterfaceMutation[d.availableTargets.length];
for (int i = 0; i < this.availableTargets.length; i++) {
//this.availableTargets[i] = (InterfaceMutation)d.availableTargets[i].clone();
this.availableTargets[i] = d.availableTargets[i];
}
this.m_SelectedTargets = new InterfaceMutation[d.m_SelectedTargets.length];
for (int i = 0; i < this.m_SelectedTargets.length; i++) {
this.m_SelectedTargets[i] = (InterfaceMutation) d.m_SelectedTargets[i].clone();
this.selectedTargets = new InterfaceMutation[d.selectedTargets.length];
for (int i = 0; i < this.selectedTargets.length; i++) {
this.selectedTargets[i] = (InterfaceMutation) d.selectedTargets[i].clone();
}
if (d.m_Weights != null) {
this.m_Weights = new double[d.m_Weights.length];
System.arraycopy(d.m_Weights, 0, this.m_Weights, 0, this.m_Weights.length);
if (d.weights != null) {
this.weights = new double[d.weights.length];
System.arraycopy(d.weights, 0, this.weights, 0, this.weights.length);
}
}
@ -59,32 +59,32 @@ public class PropertyMutationMixer implements java.io.Serializable {
* @param d The InterfaceOptimizationTarget[]
*/
public void setSelectedMutators(InterfaceMutation[] d) {
this.m_SelectedTargets = d;
this.selectedTargets = d;
if (this.m_Weights == null) {
this.m_Weights = new double[d.length];
for (int i = 0; i < this.m_Weights.length; i++) {
this.m_Weights[i] = 1 / ((double) d.length);
if (this.weights == null) {
this.weights = new double[d.length];
for (int i = 0; i < this.weights.length; i++) {
this.weights[i] = 1 / ((double) d.length);
}
return;
}
if (d.length == this.m_Weights.length) {
if (d.length == this.weights.length) {
return;
}
if (d.length > this.m_Weights.length) {
if (d.length > this.weights.length) {
double[] newWeights = new double[d.length];
for (int i = 0; i < this.m_Weights.length; i++) {
newWeights[i] = this.m_Weights[i];
for (int i = 0; i < this.weights.length; i++) {
newWeights[i] = this.weights[i];
}
this.m_Weights = newWeights;
this.weights = newWeights;
} else {
double[] newWeights = new double[d.length];
for (int i = 0; i < d.length; i++) {
newWeights[i] = this.m_Weights[i];
newWeights[i] = this.weights[i];
}
this.m_Weights = newWeights;
this.weights = newWeights;
}
}
@ -94,7 +94,7 @@ public class PropertyMutationMixer implements java.io.Serializable {
* @return The InterfaceOptimizationTarget[].
*/
public InterfaceMutation[] getSelectedMutators() {
return this.m_SelectedTargets;
return this.selectedTargets;
}
/**
@ -103,7 +103,7 @@ public class PropertyMutationMixer implements java.io.Serializable {
* @return The InterfaceOptimizationTarget[].
*/
public InterfaceMutation[] getAvailableMutators() {
return this.m_AvailableTargets;
return this.availableTargets;
}
/**
@ -112,13 +112,13 @@ public class PropertyMutationMixer implements java.io.Serializable {
* @return the weights
*/
public double[] getWeights() {
return this.m_Weights;
return this.weights;
}
public void setWeights(double[] d) {
this.m_Weights = d;
for (int i = 0; i < this.m_Weights.length; i++) {
this.m_Weights[i] = Math.abs(this.m_Weights[i]);
this.weights = d;
for (int i = 0; i < this.weights.length; i++) {
this.weights[i] = Math.abs(this.weights[i]);
}
}
@ -128,11 +128,11 @@ public class PropertyMutationMixer implements java.io.Serializable {
* @return the string
*/
public String getDescriptiveString() {
return this.m_DescriptiveString;
return this.descriptiveString;
}
public void setDescriptiveString(String d) {
this.m_DescriptiveString = d;
this.descriptiveString = d;
}
/**
@ -141,21 +141,21 @@ public class PropertyMutationMixer implements java.io.Serializable {
* @return the string
*/
public String getWeigthsLabel() {
return this.m_WeightsLabel;
return this.weightsLabel;
}
public void setWeightsLabel(String d) {
this.m_WeightsLabel = d;
this.weightsLabel = d;
}
public void normalizeWeights() {
double sum = 0;
for (int i = 0; i < this.m_Weights.length; i++) {
sum += this.m_Weights[i];
for (int i = 0; i < this.weights.length; i++) {
sum += this.weights[i];
}
if (sum > 0) {
for (int i = 0; i < this.m_Weights.length; i++) {
this.m_Weights[i] /= sum;
for (int i = 0; i < this.weights.length; i++) {
this.weights[i] /= sum;
}
}
}
@ -166,22 +166,22 @@ public class PropertyMutationMixer implements java.io.Serializable {
* @param index The index of the target to be removed.
*/
public void removeMutator(int index) {
if ((index < 0) || (index >= this.m_SelectedTargets.length)) {
if ((index < 0) || (index >= this.selectedTargets.length)) {
return;
}
InterfaceMutation[] newList = new InterfaceMutation[this.m_SelectedTargets.length - 1];
double[] newWeights = new double[this.m_Weights.length - 1];
InterfaceMutation[] newList = new InterfaceMutation[this.selectedTargets.length - 1];
double[] newWeights = new double[this.weights.length - 1];
int j = 0;
for (int i = 0; i < this.m_SelectedTargets.length; i++) {
for (int i = 0; i < this.selectedTargets.length; i++) {
if (index != i) {
newList[j] = this.m_SelectedTargets[i];
newWeights[j] = this.m_Weights[i];
newList[j] = this.selectedTargets[i];
newWeights[j] = this.weights[i];
j++;
}
}
this.m_SelectedTargets = newList;
this.m_Weights = newWeights;
this.selectedTargets = newList;
this.weights = newWeights;
}
/**
@ -190,15 +190,15 @@ public class PropertyMutationMixer implements java.io.Serializable {
* @param optTarget
*/
public void addMutator(InterfaceMutation optTarget) {
InterfaceMutation[] newList = new InterfaceMutation[this.m_SelectedTargets.length + 1];
double[] newWeights = new double[this.m_Weights.length + 1];
for (int i = 0; i < this.m_SelectedTargets.length; i++) {
newList[i] = this.m_SelectedTargets[i];
newWeights[i] = this.m_Weights[i];
InterfaceMutation[] newList = new InterfaceMutation[this.selectedTargets.length + 1];
double[] newWeights = new double[this.weights.length + 1];
for (int i = 0; i < this.selectedTargets.length; i++) {
newList[i] = this.selectedTargets[i];
newWeights[i] = this.weights[i];
}
newList[this.m_SelectedTargets.length] = optTarget;
newWeights[this.m_SelectedTargets.length] = 1.0;
this.m_SelectedTargets = newList;
this.m_Weights = newWeights;
newList[this.selectedTargets.length] = optTarget;
newWeights[this.selectedTargets.length] = 1.0;
this.selectedTargets = newList;
this.weights = newWeights;
}
}

View File

@ -30,73 +30,73 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
/**
* Handles property change notification
*/
private PropertyChangeSupport m_Support = new PropertyChangeSupport(this);
private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
/**
* The label for when we can't edit that type
*/
private JLabel m_Label = new JLabel("Can't edit", SwingConstants.CENTER);
private JLabel label = new JLabel("Can't edit", SwingConstants.CENTER);
/**
* The FilePath that is to be edited
*/
private PropertyMutationMixer m_MutatorsWithWeights;
private PropertyMutationMixer mutatorsWithWeights;
/**
* The gaphix stuff
*/
private JComponent m_Editor;
private JPanel m_TargetList;
private JTextField[] m_Weights;
private JComponent[] m_Targets;
private JButton[] m_Delete;
private JScrollPane m_ScrollTargets;
private GeneralOptimizationEditorProperty[] m_Editors;
private GeneralGEOFaker m_Component;
private PropertyChangeListener m_self;
private JComponent editorComponent;
private JPanel targetListPanel;
private JTextField[] weights;
private JComponent[] targets;
private JButton[] deleteButtons;
private JScrollPane scrolltargetPanel;
private GeneralOptimizationEditorProperty[] editors;
private GeneralGEOFaker component;
private PropertyChangeListener self;
public PropertyMutationMixerEditor() {
m_self = this;
self = this;
}
/**
* This method will init the CustomEditor Panel
*/
private void initCustomEditor() {
m_self = this;
this.m_Editor = new JPanel();
this.m_Editor.setPreferredSize(new Dimension(450, 200));
this.m_Editor.setMinimumSize(new Dimension(450, 200));
self = this;
this.editorComponent = new JPanel();
this.editorComponent.setPreferredSize(new Dimension(450, 200));
this.editorComponent.setMinimumSize(new Dimension(450, 200));
// init the editors
InterfaceMutation[] list = this.m_MutatorsWithWeights.getSelectedMutators();
this.m_Editors = new GeneralOptimizationEditorProperty[list.length];
InterfaceMutation[] list = this.mutatorsWithWeights.getSelectedMutators();
this.editors = new GeneralOptimizationEditorProperty[list.length];
for (int i = 0; i < list.length; i++) {
this.m_Editors[i] = new GeneralOptimizationEditorProperty();
this.m_Editors[i].name = list[i].getStringRepresentation();
this.editors[i] = new GeneralOptimizationEditorProperty();
this.editors[i].name = list[i].getStringRepresentation();
try {
this.m_Editors[i].value = list[i];
this.m_Editors[i].editor = PropertyEditorProvider.findEditor(this.m_Editors[i].value.getClass());
if (this.m_Editors[i].editor == null) {
this.m_Editors[i].editor = PropertyEditorProvider.findEditor(InterfaceMutation.class);
this.editors[i].value = list[i];
this.editors[i].editor = PropertyEditorProvider.findEditor(this.editors[i].value.getClass());
if (this.editors[i].editor == null) {
this.editors[i].editor = PropertyEditorProvider.findEditor(InterfaceMutation.class);
}
if (this.m_Editors[i].editor instanceof GenericObjectEditor) {
((GenericObjectEditor) this.m_Editors[i].editor).setClassType(InterfaceMutation.class);
if (this.editors[i].editor instanceof GenericObjectEditor) {
((GenericObjectEditor) this.editors[i].editor).setClassType(InterfaceMutation.class);
}
this.m_Editors[i].editor.setValue(this.m_Editors[i].value);
this.m_Editors[i].editor.addPropertyChangeListener(this);
AbstractObjectEditor.findViewFor(this.m_Editors[i]);
if (this.m_Editors[i].view != null) {
this.m_Editors[i].view.repaint();
this.editors[i].editor.setValue(this.editors[i].value);
this.editors[i].editor.addPropertyChangeListener(this);
AbstractObjectEditor.findViewFor(this.editors[i]);
if (this.editors[i].view != null) {
this.editors[i].view.repaint();
}
} catch (Exception e) {
System.out.println("Darn can't read the value...");
}
}
this.m_TargetList = new JPanel();
this.targetListPanel = new JPanel();
this.updateTargetList();
this.m_ScrollTargets = new JScrollPane(this.m_TargetList);
this.scrolltargetPanel = new JScrollPane(this.targetListPanel);
this.m_Editor.setLayout(new BorderLayout());
this.m_Editor.add(this.m_ScrollTargets, BorderLayout.CENTER);
this.editorComponent.setLayout(new BorderLayout());
this.editorComponent.add(this.scrolltargetPanel, BorderLayout.CENTER);
// The Button Panel
JPanel buttonPanel = new JPanel();
@ -109,7 +109,7 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
buttonPanel.add(normButton);
buttonPanel.add(addButton);
this.m_Editor.add(buttonPanel, BorderLayout.SOUTH);
this.editorComponent.add(buttonPanel, BorderLayout.SOUTH);
// Some description would be nice
JTextArea jt = new JTextArea();
@ -117,7 +117,7 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
jt.setEditable(false);
jt.setLineWrap(true);
jt.setWrapStyleWord(true);
jt.setText(this.m_MutatorsWithWeights.getDescriptiveString());
jt.setText(this.mutatorsWithWeights.getDescriptiveString());
jt.setBackground(getBackground());
JPanel jp = new JPanel();
jp.setBorder(BorderFactory.createCompoundBorder(
@ -134,7 +134,7 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
jp.add(p2, BorderLayout.EAST);
GridBagConstraints gbConstraints = new GridBagConstraints();
this.m_Editor.add(jp, BorderLayout.NORTH);
this.editorComponent.add(jp, BorderLayout.NORTH);
this.updateEditor();
}
@ -145,15 +145,15 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
private void updateTargetList() {
BasicResourceLoader loader = BasicResourceLoader.instance();
byte[] bytes;
InterfaceMutation[] list = this.m_MutatorsWithWeights.getSelectedMutators();
double[] weights = this.m_MutatorsWithWeights.getWeights();
InterfaceMutation[] list = this.mutatorsWithWeights.getSelectedMutators();
double[] weights = this.mutatorsWithWeights.getWeights();
this.m_TargetList.removeAll();
this.m_TargetList.setLayout(new GridBagLayout());
this.targetListPanel.removeAll();
this.targetListPanel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
this.m_Weights = new JTextField[list.length];
this.m_Targets = new JComponent[list.length];
this.m_Delete = new JButton[list.length];
this.weights = new JTextField[list.length];
this.targets = new JComponent[list.length];
this.deleteButtons = new JButton[list.length];
String[] cups = new String[8];
for (int i = 0; i < cups.length; i++) {
cups[i] = "" + (i + 1);
@ -163,52 +163,52 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.weightx = 2;
this.m_TargetList.add(new JLabel(this.m_MutatorsWithWeights.getWeigthsLabel()), gbc);
this.targetListPanel.add(new JLabel(this.mutatorsWithWeights.getWeigthsLabel()), gbc);
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 1;
gbc.weightx = 10;
this.m_TargetList.add(new JLabel("Target"), gbc);
this.targetListPanel.add(new JLabel("Target"), gbc);
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.REMAINDER;
gbc.gridx = 2;
gbc.weightx = 1;
this.m_TargetList.add(new JLabel("Remove"), gbc);
this.targetListPanel.add(new JLabel("Remove"), gbc);
for (int i = 0; i < list.length; i++) {
// the weight
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.weightx = 2;
this.m_Weights[i] = new JTextField("" + weights[i]);
this.m_Weights[i].addKeyListener(this.readDoubleArrayAction);
this.m_TargetList.add(this.m_Weights[i], gbc);
this.weights[i] = new JTextField("" + weights[i]);
this.weights[i].addKeyListener(this.readDoubleArrayAction);
this.targetListPanel.add(this.weights[i], gbc);
// the status indicator
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 1;
gbc.weightx = 10;
this.m_Targets[i] = this.m_Editors[i].view;
this.m_TargetList.add(this.m_Targets[i], gbc);
this.targets[i] = this.editors[i].view;
this.targetListPanel.add(this.targets[i], gbc);
// The delete button
gbc.anchor = GridBagConstraints.WEST;
gbc.fill = GridBagConstraints.REMAINDER;
gbc.gridx = 2;
gbc.weightx = 1;
bytes = loader.getBytesFromResourceLocation("images/Sub24.gif", true);
this.m_Delete[i] = new JButton("", new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
this.m_Delete[i].addActionListener(deleteTarget);
this.m_TargetList.add(this.m_Delete[i], gbc);
this.deleteButtons[i] = new JButton("", new ImageIcon(Toolkit.getDefaultToolkit().createImage(bytes)));
this.deleteButtons[i].addActionListener(deleteTarget);
this.targetListPanel.add(this.deleteButtons[i], gbc);
}
this.m_TargetList.repaint();
this.m_TargetList.validate();
if (this.m_ScrollTargets != null) {
this.m_ScrollTargets.validate();
this.m_ScrollTargets.repaint();
this.targetListPanel.repaint();
this.targetListPanel.validate();
if (this.scrolltargetPanel != null) {
this.scrolltargetPanel.validate();
this.scrolltargetPanel.repaint();
}
if (this.m_Editor != null) {
this.m_Editor.validate();
this.m_Editor.repaint();
if (this.editorComponent != null) {
this.editorComponent.validate();
this.editorComponent.repaint();
}
}
@ -228,13 +228,13 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
ActionListener addTarget = new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
m_MutatorsWithWeights.addMutator((InterfaceMutation) m_MutatorsWithWeights.getAvailableMutators()[0].clone());
int l = m_MutatorsWithWeights.getSelectedMutators().length;
mutatorsWithWeights.addMutator((InterfaceMutation) mutatorsWithWeights.getAvailableMutators()[0].clone());
int l = mutatorsWithWeights.getSelectedMutators().length;
GeneralOptimizationEditorProperty[] newEdit = new GeneralOptimizationEditorProperty[l];
for (int i = 0; i < m_Editors.length; i++) {
newEdit[i] = m_Editors[i];
for (int i = 0; i < editors.length; i++) {
newEdit[i] = editors[i];
}
InterfaceMutation[] list = m_MutatorsWithWeights.getSelectedMutators();
InterfaceMutation[] list = mutatorsWithWeights.getSelectedMutators();
l--;
newEdit[l] = new GeneralOptimizationEditorProperty();
newEdit[l].name = list[l].getStringRepresentation();
@ -248,7 +248,7 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
((GenericObjectEditor) newEdit[l].editor).setClassType(InterfaceMutation.class);
}
newEdit[l].editor.setValue(newEdit[l].value);
newEdit[l].editor.addPropertyChangeListener(m_self);
newEdit[l].editor.addPropertyChangeListener(self);
AbstractObjectEditor.findViewFor(newEdit[l]);
if (newEdit[l].view != null) {
newEdit[l].view.repaint();
@ -256,7 +256,7 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
} catch (Exception e) {
System.out.println("Darn can't read the value...");
}
m_Editors = newEdit;
editors = newEdit;
updateTargetList();
}
};
@ -267,17 +267,17 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
ActionListener deleteTarget = new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
int l = m_MutatorsWithWeights.getSelectedMutators().length, j = 0;
int l = mutatorsWithWeights.getSelectedMutators().length, j = 0;
GeneralOptimizationEditorProperty[] newEdit = new GeneralOptimizationEditorProperty[l - 1];
for (int i = 0; i < m_Delete.length; i++) {
if (event.getSource().equals(m_Delete[i])) {
m_MutatorsWithWeights.removeMutator(i);
for (int i = 0; i < deleteButtons.length; i++) {
if (event.getSource().equals(deleteButtons[i])) {
mutatorsWithWeights.removeMutator(i);
} else {
newEdit[j] = m_Editors[i];
newEdit[j] = editors[i];
j++;
}
}
m_Editors = newEdit;
editors = newEdit;
updateTargetList();
}
};
@ -288,7 +288,7 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
ActionListener normalizeWeights = new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
m_MutatorsWithWeights.normalizeWeights();
mutatorsWithWeights.normalizeWeights();
updateTargetList();
}
};
@ -307,18 +307,18 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
@Override
public void keyReleased(KeyEvent event) {
double[] newW = m_MutatorsWithWeights.getWeights();
double[] newW = mutatorsWithWeights.getWeights();
for (int i = 0; i < newW.length; i++) {
try {
double d = 0;
d = new Double(m_Weights[i].getText()).doubleValue();
d = new Double(weights[i].getText()).doubleValue();
newW[i] = d;
} catch (Exception e) {
}
}
m_MutatorsWithWeights.setWeights(newW);
mutatorsWithWeights.setWeights(newW);
}
};
@ -326,13 +326,13 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
* The object may have changed update the editor.
*/
private void updateEditor() {
if (this.m_Editor != null) {
this.m_TargetList.validate();
this.m_TargetList.repaint();
this.m_ScrollTargets.validate();
this.m_ScrollTargets.repaint();
this.m_Editor.validate();
this.m_Editor.repaint();
if (this.editorComponent != null) {
this.targetListPanel.validate();
this.targetListPanel.repaint();
this.scrolltargetPanel.validate();
this.scrolltargetPanel.repaint();
this.editorComponent.validate();
this.editorComponent.repaint();
}
}
@ -344,7 +344,7 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
@Override
public void setValue(Object o) {
if (o instanceof PropertyMutationMixer) {
this.m_MutatorsWithWeights = (PropertyMutationMixer) o;
this.mutatorsWithWeights = (PropertyMutationMixer) o;
this.updateEditor();
}
}
@ -356,7 +356,7 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
*/
@Override
public Object getValue() {
return this.m_MutatorsWithWeights;
return this.mutatorsWithWeights;
}
@Override
@ -447,11 +447,11 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
*/
@Override
public Component getCustomEditor() {
if (this.m_Component == null) {
if (this.component == null) {
this.initCustomEditor();
this.m_Component = new GeneralGEOFaker((PropertyEditor) this, (JPanel) this.m_Editor);
this.component = new GeneralGEOFaker((PropertyEditor) this, (JPanel) this.editorComponent);
}
return this.m_Component;
return this.component;
}
/**
@ -469,12 +469,12 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
@Override
public void addPropertyChangeListener(PropertyChangeListener l) {
m_Support.addPropertyChangeListener(l);
propertyChangeSupport.addPropertyChangeListener(l);
}
@Override
public void removePropertyChangeListener(PropertyChangeListener l) {
m_Support.removePropertyChangeListener(l);
propertyChangeSupport.removePropertyChangeListener(l);
}
/**
@ -487,35 +487,35 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
public void propertyChange(PropertyChangeEvent evt) {
Object newVal = evt.getNewValue();
Object oldVal = evt.getOldValue();
InterfaceMutation[] list = this.m_MutatorsWithWeights.getSelectedMutators();
InterfaceMutation[] list = this.mutatorsWithWeights.getSelectedMutators();
for (int i = 0; i < list.length; i++) {
if (oldVal.equals(list[i])) {
list[i] = (InterfaceMutation) newVal;
this.m_Editors[i].name = list[i].getStringRepresentation();
this.editors[i].name = list[i].getStringRepresentation();
try {
this.m_Editors[i].value = list[i];
this.m_Editors[i].editor = PropertyEditorProvider.findEditor(this.m_Editors[i].value.getClass());
if (this.m_Editors[i].editor == null) {
this.m_Editors[i].editor = PropertyEditorProvider.findEditor(InterfaceMutation.class);
this.editors[i].value = list[i];
this.editors[i].editor = PropertyEditorProvider.findEditor(this.editors[i].value.getClass());
if (this.editors[i].editor == null) {
this.editors[i].editor = PropertyEditorProvider.findEditor(InterfaceMutation.class);
}
if (this.m_Editors[i].editor instanceof GenericObjectEditor) {
((GenericObjectEditor) this.m_Editors[i].editor).setClassType(InterfaceMutation.class);
if (this.editors[i].editor instanceof GenericObjectEditor) {
((GenericObjectEditor) this.editors[i].editor).setClassType(InterfaceMutation.class);
}
this.m_Editors[i].editor.setValue(this.m_Editors[i].value);
this.m_Editors[i].editor.addPropertyChangeListener(this);
AbstractObjectEditor.findViewFor(this.m_Editors[i]);
if (this.m_Editors[i].view != null) {
this.m_Editors[i].view.repaint();
this.editors[i].editor.setValue(this.editors[i].value);
this.editors[i].editor.addPropertyChangeListener(this);
AbstractObjectEditor.findViewFor(this.editors[i]);
if (this.editors[i].view != null) {
this.editors[i].view.repaint();
}
} catch (Exception e) {
System.out.println("Darn can't read the value...");
}
this.m_Targets[i] = this.m_Editors[i].view;
this.targets[i] = this.editors[i].view;
i = list.length;
}
}
//this.m_OptimizationTargets.setSelectedTargets(list);
this.updateCenterComponent(evt); // Let our panel update before guys downstream
m_Support.firePropertyChange("", m_MutatorsWithWeights, m_MutatorsWithWeights);
propertyChangeSupport.firePropertyChange("", mutatorsWithWeights, mutatorsWithWeights);
}
}

View File

@ -80,7 +80,7 @@ public class Population extends ArrayList implements PopulationInterface, Clonea
/**
* Best n Individuals in the history.
*/
private transient LinkedList<AbstractEAIndividual> m_History = new LinkedList<AbstractEAIndividual>();
private transient LinkedList<AbstractEAIndividual> historyList = new LinkedList<AbstractEAIndividual>();
/**
* Remember when the last sorted queue was prepared.
@ -190,8 +190,8 @@ public class Population extends ArrayList implements PopulationInterface, Clonea
if (population.populationArchive != null) {
this.populationArchive = (Population) population.populationArchive.clone();
}
if (population.m_History != null) {
this.m_History = (LinkedList<AbstractEAIndividual>) population.m_History.clone();
if (population.historyList != null) {
this.historyList = (LinkedList<AbstractEAIndividual>) population.historyList.clone();
}
if (population.additionalPopData != null) {
this.additionalPopData = (HashMap<String, Object>) additionalPopData.clone();
@ -364,7 +364,7 @@ public class Population extends ArrayList implements PopulationInterface, Clonea
* been inited by a problem
*/
public void init() {
this.m_History = new LinkedList<AbstractEAIndividual>();
this.historyList = new LinkedList<AbstractEAIndividual>();
this.generationCount = 0;
this.functionCallCount = 0;
double[] popSeed = null;
@ -453,7 +453,7 @@ public class Population extends ArrayList implements PopulationInterface, Clonea
/**
* This method inits the population. Function and generation counters are
* reset and m_Size default Individuals are created and initialized by the
* reset and size default Individuals are created and initialized by the
* GAIndividual default init() method.
*/
public void defaultInit(AbstractEAIndividual template) {
@ -591,18 +591,18 @@ public class Population extends ArrayList implements PopulationInterface, Clonea
public int getHistoryLength() {
if (historyMaxLen != 0) {
return m_History.size();
return historyList.size();
} else {
return 0;
}
}
public LinkedList<AbstractEAIndividual> getHistory() {
return m_History;
return historyList;
}
public void SetHistory(LinkedList<AbstractEAIndividual> theHist) {
m_History = theHist;
historyList = theHist;
}
/**
@ -709,11 +709,11 @@ public class Population extends ArrayList implements PopulationInterface, Clonea
*/
public void incrGeneration() {
if (isUsingHistory() && (this.size() >= 1)) {
if (historyMaxLen > 0 && (m_History.size() >= historyMaxLen)) {
if (historyMaxLen > 0 && (historyList.size() >= historyMaxLen)) {
// oldest one must be replaced.. should be the one in front
m_History.removeFirst();
historyList.removeFirst();
}
this.m_History.add((AbstractEAIndividual) this.getBestEAIndividual().clone());
this.historyList.add((AbstractEAIndividual) this.getBestEAIndividual().clone());
}
for (int i = 0; i < size(); i++) {
((AbstractEAIndividual) get(i)).incrAge();
@ -2508,8 +2508,8 @@ public class Population extends ArrayList implements PopulationInterface, Clonea
}
public void clearHistory() {
if (m_History != null) {
m_History.clear();
if (historyList != null) {
historyList.clear();
}
}

View File

@ -680,7 +680,7 @@ public class DifferentialEvolution implements InterfaceOptimizer, java.io.Serial
@Override
public void addPopulationChangedEventListener(InterfacePopulationChangedEventListener ea) {
if (this.populationChangedEventListeners == null) {
this.populationChangedEventListeners = new Vector<InterfacePopulationChangedEventListener>();
this.populationChangedEventListeners = new Vector<>();
}
this.populationChangedEventListeners.add(ea);
}
@ -689,7 +689,6 @@ public class DifferentialEvolution implements InterfaceOptimizer, java.io.Serial
public boolean removePopulationChangedEventListener(
InterfacePopulationChangedEventListener ea) {
if (populationChangedEventListeners != null && populationChangedEventListeners.removeElement(ea)) {
return true;
} else {
return false;