Bugfix; better name for MutateGAStandard

This commit is contained in:
Marcel Kronfeld 2010-04-29 14:02:01 +00:00
parent 1431bc4769
commit ebe02870df
5 changed files with 17 additions and 18 deletions

View File

@ -6,7 +6,7 @@ import java.util.BitSet;
import eva2.server.go.operators.crossover.CrossoverGANPoint; import eva2.server.go.operators.crossover.CrossoverGANPoint;
import eva2.server.go.operators.crossover.InterfaceCrossover; import eva2.server.go.operators.crossover.InterfaceCrossover;
import eva2.server.go.operators.mutation.InterfaceMutation; import eva2.server.go.operators.mutation.InterfaceMutation;
import eva2.server.go.operators.mutation.MutateGAStandard; import eva2.server.go.operators.mutation.MutateGANBit;
import eva2.server.go.problems.InterfaceOptimizationProblem; import eva2.server.go.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
@ -25,7 +25,7 @@ public class GAIndividualBinaryData extends AbstractEAIndividual implements Inte
public GAIndividualBinaryData() { public GAIndividualBinaryData() {
this.m_MutationProbability = 0.1; this.m_MutationProbability = 0.1;
this.m_MutationOperator = new MutateGAStandard(); this.m_MutationOperator = new MutateGANBit();
this.m_CrossoverProbability = 1.0; this.m_CrossoverProbability = 1.0;
this.m_CrossoverOperator = new CrossoverGANPoint(); this.m_CrossoverOperator = new CrossoverGANPoint();
this.m_GenotypeLength = 20; this.m_GenotypeLength = 20;

View File

@ -8,7 +8,7 @@ import eva2.server.go.individuals.codings.ga.InterfaceGADoubleCoding;
import eva2.server.go.operators.crossover.CrossoverGANPoint; import eva2.server.go.operators.crossover.CrossoverGANPoint;
import eva2.server.go.operators.crossover.InterfaceCrossover; import eva2.server.go.operators.crossover.InterfaceCrossover;
import eva2.server.go.operators.mutation.InterfaceMutation; import eva2.server.go.operators.mutation.InterfaceMutation;
import eva2.server.go.operators.mutation.MutateGAStandard; import eva2.server.go.operators.mutation.MutateGAUniform;
import eva2.server.go.problems.InterfaceOptimizationProblem; import eva2.server.go.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
@ -31,7 +31,7 @@ public class GAIndividualDoubleData extends AbstractEAIndividual implements Inte
public GAIndividualDoubleData() { public GAIndividualDoubleData() {
this.m_MutationProbability = 0.1; this.m_MutationProbability = 0.1;
this.m_MutationOperator = new MutateGAStandard(); this.m_MutationOperator = new MutateGAUniform();
this.m_CrossoverProbability = 0.7; this.m_CrossoverProbability = 0.7;
this.m_CrossoverOperator = new CrossoverGANPoint(); this.m_CrossoverOperator = new CrossoverGANPoint();
this.m_Range = new double[1][2]; this.m_Range = new double[1][2];

View File

@ -3,13 +3,11 @@ package eva2.server.go.individuals;
import java.util.BitSet; import java.util.BitSet;
import eva2.server.go.individuals.codings.ga.GAStandardCodingDouble;
import eva2.server.go.individuals.codings.ga.GAStandardCodingInteger; import eva2.server.go.individuals.codings.ga.GAStandardCodingInteger;
import eva2.server.go.individuals.codings.ga.InterfaceGADoubleCoding;
import eva2.server.go.individuals.codings.ga.InterfaceGAIntegerCoding; import eva2.server.go.individuals.codings.ga.InterfaceGAIntegerCoding;
import eva2.server.go.operators.crossover.CrossoverGANPoint; import eva2.server.go.operators.crossover.CrossoverGANPoint;
import eva2.server.go.operators.mutation.InterfaceMutation; import eva2.server.go.operators.mutation.InterfaceMutation;
import eva2.server.go.operators.mutation.MutateGAStandard; import eva2.server.go.operators.mutation.MutateGANBit;
import eva2.server.go.problems.InterfaceOptimizationProblem; import eva2.server.go.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
@ -31,7 +29,7 @@ public class GAIndividualIntegerData extends AbstractEAIndividual implements Int
public GAIndividualIntegerData() { public GAIndividualIntegerData() {
this.m_MutationProbability = 0.1; this.m_MutationProbability = 0.1;
this.m_MutationOperator = new MutateGAStandard(); this.m_MutationOperator = new MutateGANBit();
this.m_CrossoverProbability = 0.7; this.m_CrossoverProbability = 0.7;
this.m_CrossoverOperator = new CrossoverGANPoint(); this.m_CrossoverOperator = new CrossoverGANPoint();
this.m_Range = new int[1][2]; this.m_Range = new int[1][2];

View File

@ -16,13 +16,13 @@ import eva2.tools.math.RNG;
* Time: 10:03:37 * Time: 10:03:37
* To change this template use Options | File Templates. * To change this template use Options | File Templates.
*/ */
public class MutateGAStandard implements InterfaceMutation, java.io.Serializable { public class MutateGANBit implements InterfaceMutation, java.io.Serializable {
private int m_NumberOfMutations = 1; private int m_NumberOfMutations = 1;
public MutateGAStandard() { public MutateGANBit() {
} }
public MutateGAStandard(MutateGAStandard mutator) { public MutateGANBit(MutateGANBit mutator) {
this.m_NumberOfMutations = mutator.m_NumberOfMutations; this.m_NumberOfMutations = mutator.m_NumberOfMutations;
} }
@ -30,7 +30,7 @@ public class MutateGAStandard implements InterfaceMutation, java.io.Serializable
* @return The clone * @return The clone
*/ */
public Object clone() { public Object clone() {
return new MutateGAStandard(this); return new MutateGANBit(this);
} }
/** This method allows you to evaluate wether two mutation operators /** This method allows you to evaluate wether two mutation operators
@ -38,8 +38,8 @@ public class MutateGAStandard implements InterfaceMutation, java.io.Serializable
* @param mutator The other mutation operator * @param mutator The other mutation operator
*/ */
public boolean equals(Object mutator) { public boolean equals(Object mutator) {
if (mutator instanceof MutateGAStandard) { if (mutator instanceof MutateGANBit) {
MutateGAStandard mut = (MutateGAStandard)mutator; MutateGANBit mut = (MutateGANBit)mutator;
if (this.m_NumberOfMutations != mut.m_NumberOfMutations) return false; if (this.m_NumberOfMutations != mut.m_NumberOfMutations) return false;
return true; return true;
} else return false; } else return false;
@ -86,7 +86,7 @@ public class MutateGAStandard implements InterfaceMutation, java.io.Serializable
* @return A descriptive string. * @return A descriptive string.
*/ */
public String getStringRepresentation() { public String getStringRepresentation() {
return "GA standard mutation"; return "GA n-Bit mutation";
} }
/********************************************************************************************************************** /**********************************************************************************************************************
@ -97,13 +97,13 @@ public class MutateGAStandard implements InterfaceMutation, java.io.Serializable
* @return The name. * @return The name.
*/ */
public String getName() { public String getName() {
return "GA standard mutation"; return "GA n-Bit mutation";
} }
/** This method returns a global info string /** This method returns a global info string
* @return description * @return description
*/ */
public static String globalInfo() { public static String globalInfo() {
return "The standard mutation switches n bits of the GA genotype."; return "Switch n bits of the GA genotype.";
} }
/** This method allows you to set the number of mutations that occur in the /** This method allows you to set the number of mutations that occur in the

View File

@ -51,7 +51,7 @@ public class MutateGAUniform implements InterfaceMutation, Serializable {
public void init(AbstractEAIndividual individual, public void init(AbstractEAIndividual individual,
InterfaceOptimizationProblem opt) { InterfaceOptimizationProblem opt) {
if (useInvertedLength && (individual instanceof InterfaceGAIndividual)) setBitwiseProb(((InterfaceGAIndividual)individual).getGenotypeLength()); if (useInvertedLength && (individual instanceof InterfaceGAIndividual)) setBitwiseProb(1./((double)((InterfaceGAIndividual)individual).getGenotypeLength()));
} }
/** /**
@ -70,6 +70,7 @@ public class MutateGAUniform implements InterfaceMutation, Serializable {
return bitwiseProb; return bitwiseProb;
} }
public void setBitwiseProb(double bitwiseProb) { public void setBitwiseProb(double bitwiseProb) {
if (bitwiseProb <0. && (bitwiseProb > 1.)) System.err.println("Warning, probability should be within [0,1], given: " + bitwiseProb);
this.bitwiseProb = bitwiseProb; this.bitwiseProb = bitwiseProb;
} }
public String bitwiseProbTipText() { public String bitwiseProbTipText() {