SelProb -> SelectionProbability
This commit is contained in:
parent
d0a3d2e434
commit
5e4018d73d
@ -2,8 +2,8 @@ package eva2.optimization.operator.selection;
|
|||||||
|
|
||||||
import eva2.optimization.individuals.AbstractEAIndividual;
|
import eva2.optimization.individuals.AbstractEAIndividual;
|
||||||
import eva2.optimization.operator.selection.probability.InterfaceSelectionProbability;
|
import eva2.optimization.operator.selection.probability.InterfaceSelectionProbability;
|
||||||
import eva2.optimization.operator.selection.probability.SelProbStandard;
|
import eva2.optimization.operator.selection.probability.SelectionProbabilityStandard;
|
||||||
import eva2.optimization.operator.selection.probability.SelProbStandardScaling;
|
import eva2.optimization.operator.selection.probability.SelectionProbabilityStandardScaling;
|
||||||
import eva2.optimization.population.Population;
|
import eva2.optimization.population.Population;
|
||||||
import eva2.tools.math.RNG;
|
import eva2.tools.math.RNG;
|
||||||
import eva2.util.annotation.Description;
|
import eva2.util.annotation.Description;
|
||||||
@ -23,14 +23,14 @@ public class SelectParticleWheel implements InterfaceSelection, java.io.Serializ
|
|||||||
* Comment for {@code serialVersionUID}
|
* Comment for {@code serialVersionUID}
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private InterfaceSelectionProbability selProbCalculator = new SelProbStandard();
|
private InterfaceSelectionProbability selProbCalculator = new SelectionProbabilityStandard();
|
||||||
private boolean selectFixedSteps = false;
|
private boolean selectFixedSteps = false;
|
||||||
|
|
||||||
public SelectParticleWheel() {
|
public SelectParticleWheel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelectParticleWheel(double scalingProb) {
|
public SelectParticleWheel(double scalingProb) {
|
||||||
selProbCalculator = new SelProbStandardScaling(scalingProb);
|
selProbCalculator = new SelectionProbabilityStandardScaling(scalingProb);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelectParticleWheel(InterfaceSelectionProbability selProb) {
|
public SelectParticleWheel(InterfaceSelectionProbability selProb) {
|
||||||
|
@ -2,7 +2,7 @@ package eva2.optimization.operator.selection;
|
|||||||
|
|
||||||
import eva2.optimization.individuals.AbstractEAIndividual;
|
import eva2.optimization.individuals.AbstractEAIndividual;
|
||||||
import eva2.optimization.operator.selection.probability.InterfaceSelectionProbability;
|
import eva2.optimization.operator.selection.probability.InterfaceSelectionProbability;
|
||||||
import eva2.optimization.operator.selection.probability.SelProbStandard;
|
import eva2.optimization.operator.selection.probability.SelectionProbabilityStandard;
|
||||||
import eva2.optimization.population.Population;
|
import eva2.optimization.population.Population;
|
||||||
import eva2.tools.math.RNG;
|
import eva2.tools.math.RNG;
|
||||||
import eva2.util.annotation.Description;
|
import eva2.util.annotation.Description;
|
||||||
@ -17,7 +17,7 @@ import eva2.util.annotation.Description;
|
|||||||
public class SelectXProbRouletteWheel implements InterfaceSelection, java.io.Serializable {
|
public class SelectXProbRouletteWheel implements InterfaceSelection, java.io.Serializable {
|
||||||
|
|
||||||
private transient TreeElement[] treeRoot = null;
|
private transient TreeElement[] treeRoot = null;
|
||||||
private InterfaceSelectionProbability selectionProbability = new SelProbStandard();
|
private InterfaceSelectionProbability selectionProbability = new SelectionProbabilityStandard();
|
||||||
private boolean obeyDebsConstViolationPrinciple = true;
|
private boolean obeyDebsConstViolationPrinciple = true;
|
||||||
|
|
||||||
public SelectXProbRouletteWheel() {
|
public SelectXProbRouletteWheel() {
|
||||||
|
@ -11,7 +11,7 @@ import java.util.ArrayList;
|
|||||||
* This abstract implementation gives some general
|
* This abstract implementation gives some general
|
||||||
* methods for retrieving and cleaning fitness values.
|
* methods for retrieving and cleaning fitness values.
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractSelProb implements InterfaceSelectionProbability, java.io.Serializable {
|
public abstract class AbstractSelectionProbability implements InterfaceSelectionProbability, java.io.Serializable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method allows you to make a deep clone of
|
* This method allows you to make a deep clone of
|
@ -9,24 +9,24 @@ import eva2.util.annotation.Description;
|
|||||||
* invariant to any linear transition function.
|
* invariant to any linear transition function.
|
||||||
*/
|
*/
|
||||||
@Description("This is the Boltzman Normation.")
|
@Description("This is the Boltzman Normation.")
|
||||||
public class SelProbBoltzman extends AbstractSelProb implements java.io.Serializable {
|
public class SelectionProbabilityBoltzman extends AbstractSelectionProbability implements java.io.Serializable {
|
||||||
|
|
||||||
private double q = 1.0;
|
private double q = 1.0;
|
||||||
|
|
||||||
public SelProbBoltzman() {
|
public SelectionProbabilityBoltzman() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelProbBoltzman(double q) {
|
public SelectionProbabilityBoltzman(double q) {
|
||||||
this.q = q;
|
this.q = q;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelProbBoltzman(SelProbBoltzman a) {
|
public SelectionProbabilityBoltzman(SelectionProbabilityBoltzman a) {
|
||||||
this.q = a.q;
|
this.q = a.q;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object clone() {
|
public Object clone() {
|
||||||
return new SelProbBoltzman(this);
|
return new SelectionProbabilityBoltzman(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -10,16 +10,16 @@ import eva2.util.annotation.Description;
|
|||||||
* Here we have the infamous fitness sharing method.
|
* Here we have the infamous fitness sharing method.
|
||||||
*/
|
*/
|
||||||
@Description("This is a fitness sharing based normation method.")
|
@Description("This is a fitness sharing based normation method.")
|
||||||
public class SelProbFitnessSharing extends AbstractSelProb implements java.io.Serializable {
|
public class SelectionProbabilityFitnessSharing extends AbstractSelectionProbability implements java.io.Serializable {
|
||||||
|
|
||||||
private InterfaceSelectionProbability basicNormationMethod = new SelProbStandard();
|
private InterfaceSelectionProbability basicNormationMethod = new SelectionProbabilityStandard();
|
||||||
private InterfaceDistanceMetric distanceMetric = new PhenotypeMetric();
|
private InterfaceDistanceMetric distanceMetric = new PhenotypeMetric();
|
||||||
private double sharingDistance = 0.1;
|
private double sharingDistance = 0.1;
|
||||||
|
|
||||||
public SelProbFitnessSharing() {
|
public SelectionProbabilityFitnessSharing() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelProbFitnessSharing(SelProbFitnessSharing a) {
|
public SelectionProbabilityFitnessSharing(SelectionProbabilityFitnessSharing a) {
|
||||||
if (a.basicNormationMethod != null) {
|
if (a.basicNormationMethod != null) {
|
||||||
this.basicNormationMethod = (InterfaceSelectionProbability) a.basicNormationMethod.clone();
|
this.basicNormationMethod = (InterfaceSelectionProbability) a.basicNormationMethod.clone();
|
||||||
}
|
}
|
||||||
@ -31,7 +31,7 @@ public class SelProbFitnessSharing extends AbstractSelProb implements java.io.Se
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object clone() {
|
public Object clone() {
|
||||||
return new SelProbFitnessSharing(this);
|
return new SelectionProbabilityFitnessSharing(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -10,24 +10,24 @@ import eva2.util.annotation.Description;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Description("This is a standard normation method inverted by maximum fitness.")
|
@Description("This is a standard normation method inverted by maximum fitness.")
|
||||||
public class SelProbInvertByMax extends AbstractSelProb {
|
public class SelectionProbabilityInvertByMax extends AbstractSelectionProbability {
|
||||||
|
|
||||||
private double maxFit = 1.;
|
private double maxFit = 1.;
|
||||||
|
|
||||||
public SelProbInvertByMax() {
|
public SelectionProbabilityInvertByMax() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelProbInvertByMax(double mF) {
|
public SelectionProbabilityInvertByMax(double mF) {
|
||||||
maxFit = mF;
|
maxFit = mF;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelProbInvertByMax(SelProbInvertByMax a) {
|
public SelectionProbabilityInvertByMax(SelectionProbabilityInvertByMax a) {
|
||||||
this.maxFit = a.maxFit;
|
this.maxFit = a.maxFit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object clone() {
|
public Object clone() {
|
||||||
return new SelProbInvertByMax(this);
|
return new SelectionProbabilityInvertByMax(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -7,22 +7,22 @@ import eva2.util.annotation.Description;
|
|||||||
* A linear ranking method with offsets.
|
* A linear ranking method with offsets.
|
||||||
*/
|
*/
|
||||||
@Description("This is linear ranking normation.")
|
@Description("This is linear ranking normation.")
|
||||||
public class SelProbLinearRanking extends AbstractSelProb implements java.io.Serializable {
|
public class SelectionProbabilityLinearRanking extends AbstractSelectionProbability implements java.io.Serializable {
|
||||||
|
|
||||||
private double nappaPlus = 1.1;
|
private double nappaPlus = 1.1;
|
||||||
private double nappaMinus = 0.9;
|
private double nappaMinus = 0.9;
|
||||||
|
|
||||||
public SelProbLinearRanking() {
|
public SelectionProbabilityLinearRanking() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelProbLinearRanking(SelProbLinearRanking a) {
|
public SelectionProbabilityLinearRanking(SelectionProbabilityLinearRanking a) {
|
||||||
this.nappaPlus = a.nappaPlus;
|
this.nappaPlus = a.nappaPlus;
|
||||||
this.nappaMinus = a.nappaMinus;
|
this.nappaMinus = a.nappaMinus;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object clone() {
|
public Object clone() {
|
||||||
return new SelProbLinearRanking(this);
|
return new SelectionProbabilityLinearRanking(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -8,24 +8,24 @@ import eva2.util.annotation.Description;
|
|||||||
* the given optimization problem i guess.
|
* the given optimization problem i guess.
|
||||||
*/
|
*/
|
||||||
@Description("This is non-linear ranking normation.")
|
@Description("This is non-linear ranking normation.")
|
||||||
public class SelProbNonLinearRanking extends AbstractSelProb implements java.io.Serializable {
|
public class SelectionProbabilityNonLinearRanking extends AbstractSelectionProbability implements java.io.Serializable {
|
||||||
|
|
||||||
private double c = 0.04;
|
private double c = 0.04;
|
||||||
|
|
||||||
public SelProbNonLinearRanking() {
|
public SelectionProbabilityNonLinearRanking() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelProbNonLinearRanking(double theC) {
|
public SelectionProbabilityNonLinearRanking(double theC) {
|
||||||
this.c = theC;
|
this.c = theC;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelProbNonLinearRanking(SelProbNonLinearRanking a) {
|
public SelectionProbabilityNonLinearRanking(SelectionProbabilityNonLinearRanking a) {
|
||||||
this.c = a.c;
|
this.c = a.c;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object clone() {
|
public Object clone() {
|
||||||
return new SelProbNonLinearRanking(this);
|
return new SelectionProbabilityNonLinearRanking(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -8,17 +8,17 @@ import eva2.util.annotation.Description;
|
|||||||
* This truly scaling invariant.
|
* This truly scaling invariant.
|
||||||
*/
|
*/
|
||||||
@Description("This is ranking normation.")
|
@Description("This is ranking normation.")
|
||||||
public class SelProbRanking extends AbstractSelProb implements java.io.Serializable {
|
public class SelectionProbabilityRanking extends AbstractSelectionProbability implements java.io.Serializable {
|
||||||
|
|
||||||
public SelProbRanking() {
|
public SelectionProbabilityRanking() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelProbRanking(SelProbRanking a) {
|
public SelectionProbabilityRanking(SelectionProbabilityRanking a) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object clone() {
|
public Object clone() {
|
||||||
return new SelProbRanking(this);
|
return new SelectionProbabilityRanking(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -9,17 +9,17 @@ import eva2.util.annotation.Description;
|
|||||||
* p(i is selected) = exp(-fitness(i))/sum_j(exp(-fitness(j)))
|
* p(i is selected) = exp(-fitness(i))/sum_j(exp(-fitness(j)))
|
||||||
*/
|
*/
|
||||||
@Description("This is a standard normation method using the exp function.")
|
@Description("This is a standard normation method using the exp function.")
|
||||||
public class SelProbStandard extends AbstractSelProb implements java.io.Serializable {
|
public class SelectionProbabilityStandard extends AbstractSelectionProbability implements java.io.Serializable {
|
||||||
|
|
||||||
public SelProbStandard() {
|
public SelectionProbabilityStandard() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelProbStandard(SelProbStandard a) {
|
public SelectionProbabilityStandard(SelectionProbabilityStandard a) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object clone() {
|
public Object clone() {
|
||||||
return new SelProbStandard(this);
|
return new SelectionProbabilityStandard(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -7,24 +7,24 @@ import eva2.util.annotation.Description;
|
|||||||
* A simple sum with a scaling factor.
|
* A simple sum with a scaling factor.
|
||||||
*/
|
*/
|
||||||
@Description("This is a standard normation method with scaling.")
|
@Description("This is a standard normation method with scaling.")
|
||||||
public class SelProbStandardScaling extends AbstractSelProb implements java.io.Serializable {
|
public class SelectionProbabilityStandardScaling extends AbstractSelectionProbability implements java.io.Serializable {
|
||||||
|
|
||||||
private double Q = 0;
|
private double Q = 0;
|
||||||
|
|
||||||
public SelProbStandardScaling() {
|
public SelectionProbabilityStandardScaling() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelProbStandardScaling(double q) {
|
public SelectionProbabilityStandardScaling(double q) {
|
||||||
Q = q;
|
Q = q;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelProbStandardScaling(SelProbStandardScaling a) {
|
public SelectionProbabilityStandardScaling(SelectionProbabilityStandardScaling a) {
|
||||||
this.Q = a.Q;
|
this.Q = a.Q;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object clone() {
|
public Object clone() {
|
||||||
return new SelProbStandardScaling(this);
|
return new SelectionProbabilityStandardScaling(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -7,7 +7,7 @@ import eva2.optimization.operator.distancemetric.EuclideanMetric;
|
|||||||
import eva2.optimization.operator.distancemetric.InterfaceDistanceMetric;
|
import eva2.optimization.operator.distancemetric.InterfaceDistanceMetric;
|
||||||
import eva2.optimization.operator.distancemetric.PhenotypeMetric;
|
import eva2.optimization.operator.distancemetric.PhenotypeMetric;
|
||||||
import eva2.optimization.operator.postprocess.PostProcess;
|
import eva2.optimization.operator.postprocess.PostProcess;
|
||||||
import eva2.optimization.operator.selection.probability.AbstractSelProb;
|
import eva2.optimization.operator.selection.probability.AbstractSelectionProbability;
|
||||||
import eva2.tools.EVAERROR;
|
import eva2.tools.EVAERROR;
|
||||||
import eva2.tools.Pair;
|
import eva2.tools.Pair;
|
||||||
import eva2.tools.Serializer;
|
import eva2.tools.Serializer;
|
||||||
@ -2143,7 +2143,7 @@ public class Population extends ArrayList<AbstractEAIndividual> implements Popul
|
|||||||
* @param criterion
|
* @param criterion
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public double[] getCenterWeighted(AbstractSelProb selProb, int criterion, boolean obeyConst) {
|
public double[] getCenterWeighted(AbstractSelectionProbability selProb, int criterion, boolean obeyConst) {
|
||||||
selProb.computeSelectionProbability(this, "Fitness", obeyConst);
|
selProb.computeSelectionProbability(this, "Fitness", obeyConst);
|
||||||
double[] mean = AbstractEAIndividual.getDoublePosition(getEAIndividual(0));
|
double[] mean = AbstractEAIndividual.getDoublePosition(getEAIndividual(0));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user