From ebe02870dfbd9b6e899dac5068e87f5caa67d33f Mon Sep 17 00:00:00 2001 From: Marcel Kronfeld Date: Thu, 29 Apr 2010 14:02:01 +0000 Subject: [PATCH] Bugfix; better name for MutateGAStandard --- .../go/individuals/GAIndividualBinaryData.java | 4 ++-- .../go/individuals/GAIndividualDoubleData.java | 4 ++-- .../individuals/GAIndividualIntegerData.java | 6 ++---- ...MutateGAStandard.java => MutateGANBit.java} | 18 +++++++++--------- .../go/operators/mutation/MutateGAUniform.java | 3 ++- 5 files changed, 17 insertions(+), 18 deletions(-) rename src/eva2/server/go/operators/mutation/{MutateGAStandard.java => MutateGANBit.java} (89%) diff --git a/src/eva2/server/go/individuals/GAIndividualBinaryData.java b/src/eva2/server/go/individuals/GAIndividualBinaryData.java index d3121198..31dbfc24 100644 --- a/src/eva2/server/go/individuals/GAIndividualBinaryData.java +++ b/src/eva2/server/go/individuals/GAIndividualBinaryData.java @@ -6,7 +6,7 @@ import java.util.BitSet; import eva2.server.go.operators.crossover.CrossoverGANPoint; import eva2.server.go.operators.crossover.InterfaceCrossover; 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.tools.math.RNG; @@ -25,7 +25,7 @@ public class GAIndividualBinaryData extends AbstractEAIndividual implements Inte public GAIndividualBinaryData() { this.m_MutationProbability = 0.1; - this.m_MutationOperator = new MutateGAStandard(); + this.m_MutationOperator = new MutateGANBit(); this.m_CrossoverProbability = 1.0; this.m_CrossoverOperator = new CrossoverGANPoint(); this.m_GenotypeLength = 20; diff --git a/src/eva2/server/go/individuals/GAIndividualDoubleData.java b/src/eva2/server/go/individuals/GAIndividualDoubleData.java index 12b568ae..d4fa641e 100644 --- a/src/eva2/server/go/individuals/GAIndividualDoubleData.java +++ b/src/eva2/server/go/individuals/GAIndividualDoubleData.java @@ -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.InterfaceCrossover; 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.tools.math.RNG; @@ -31,7 +31,7 @@ public class GAIndividualDoubleData extends AbstractEAIndividual implements Inte public GAIndividualDoubleData() { this.m_MutationProbability = 0.1; - this.m_MutationOperator = new MutateGAStandard(); + this.m_MutationOperator = new MutateGAUniform(); this.m_CrossoverProbability = 0.7; this.m_CrossoverOperator = new CrossoverGANPoint(); this.m_Range = new double[1][2]; diff --git a/src/eva2/server/go/individuals/GAIndividualIntegerData.java b/src/eva2/server/go/individuals/GAIndividualIntegerData.java index 086dea62..1229aef3 100644 --- a/src/eva2/server/go/individuals/GAIndividualIntegerData.java +++ b/src/eva2/server/go/individuals/GAIndividualIntegerData.java @@ -3,13 +3,11 @@ package eva2.server.go.individuals; 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.InterfaceGADoubleCoding; import eva2.server.go.individuals.codings.ga.InterfaceGAIntegerCoding; import eva2.server.go.operators.crossover.CrossoverGANPoint; 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.tools.math.RNG; @@ -31,7 +29,7 @@ public class GAIndividualIntegerData extends AbstractEAIndividual implements Int public GAIndividualIntegerData() { this.m_MutationProbability = 0.1; - this.m_MutationOperator = new MutateGAStandard(); + this.m_MutationOperator = new MutateGANBit(); this.m_CrossoverProbability = 0.7; this.m_CrossoverOperator = new CrossoverGANPoint(); this.m_Range = new int[1][2]; diff --git a/src/eva2/server/go/operators/mutation/MutateGAStandard.java b/src/eva2/server/go/operators/mutation/MutateGANBit.java similarity index 89% rename from src/eva2/server/go/operators/mutation/MutateGAStandard.java rename to src/eva2/server/go/operators/mutation/MutateGANBit.java index 6784ccd2..eeb24588 100644 --- a/src/eva2/server/go/operators/mutation/MutateGAStandard.java +++ b/src/eva2/server/go/operators/mutation/MutateGANBit.java @@ -16,13 +16,13 @@ import eva2.tools.math.RNG; * Time: 10:03:37 * 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; - public MutateGAStandard() { + public MutateGANBit() { } - public MutateGAStandard(MutateGAStandard mutator) { + public MutateGANBit(MutateGANBit mutator) { this.m_NumberOfMutations = mutator.m_NumberOfMutations; } @@ -30,7 +30,7 @@ public class MutateGAStandard implements InterfaceMutation, java.io.Serializable * @return The clone */ public Object clone() { - return new MutateGAStandard(this); + return new MutateGANBit(this); } /** 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 */ public boolean equals(Object mutator) { - if (mutator instanceof MutateGAStandard) { - MutateGAStandard mut = (MutateGAStandard)mutator; + if (mutator instanceof MutateGANBit) { + MutateGANBit mut = (MutateGANBit)mutator; if (this.m_NumberOfMutations != mut.m_NumberOfMutations) return false; return true; } else return false; @@ -86,7 +86,7 @@ public class MutateGAStandard implements InterfaceMutation, java.io.Serializable * @return A descriptive string. */ 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. */ public String getName() { - return "GA standard mutation"; + return "GA n-Bit mutation"; } /** This method returns a global info string * @return description */ 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 diff --git a/src/eva2/server/go/operators/mutation/MutateGAUniform.java b/src/eva2/server/go/operators/mutation/MutateGAUniform.java index fdbc0590..9b932983 100644 --- a/src/eva2/server/go/operators/mutation/MutateGAUniform.java +++ b/src/eva2/server/go/operators/mutation/MutateGAUniform.java @@ -51,7 +51,7 @@ public class MutateGAUniform implements InterfaceMutation, Serializable { public void init(AbstractEAIndividual individual, 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; } 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; } public String bitwiseProbTipText() {