Removed another 1k m_

This commit is contained in:
Fabian Becker 2014-02-05 15:54:56 +01:00
parent 46bff71b69
commit 7223d27a08
78 changed files with 1140 additions and 1577 deletions

View File

@ -12,14 +12,9 @@ import eva2.tools.chart2d.DPointIcon;
* This is an abstract archiving strategy giving default implementation of determining * This is an abstract archiving strategy giving default implementation of determining
* dominance, inserting individuals in exsisting Pareto front (removing now dominated solutions) * dominance, inserting individuals in exsisting Pareto front (removing now dominated solutions)
* and some plot methods typically used for debugging. * and some plot methods typically used for debugging.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 04.08.2003
* Time: 17:00:44
* To change this template use Options | File Templates.
*/ */
public abstract class AbstractArchiving implements InterfaceArchiving, java.io.Serializable { public abstract class AbstractArchiving implements InterfaceArchiving, java.io.Serializable {
transient protected Plot m_Plot = null; transient protected Plot plot = null;
protected int p = 0; protected int p = 0;
public boolean obeyDebsConstViolationPrinciple = true; public boolean obeyDebsConstViolationPrinciple = true;

View File

@ -7,11 +7,6 @@ import eva2.optimization.population.Population;
/** /**
* This simple strategy simply archives all Pareto optimal solutions. This method is * This simple strategy simply archives all Pareto optimal solutions. This method is
* very prone to OutOfMemory errors! * very prone to OutOfMemory errors!
* Created by IntelliJ IDEA.
* User: streiche
* Date: 28.07.2003
* Time: 14:40:43
* To change this template use Options | File Templates.
*/ */
public class ArchivingAllDominating extends AbstractArchiving implements java.io.Serializable { public class ArchivingAllDominating extends AbstractArchiving implements java.io.Serializable {

View File

@ -20,17 +20,17 @@ import eva2.tools.chart2d.DPointIcon;
*/ */
public class ArchivingMaxiMin implements InterfaceArchiving, java.io.Serializable { public class ArchivingMaxiMin implements InterfaceArchiving, java.io.Serializable {
private MOSOMaxiMin m_MaxiMin = new MOSOMaxiMin(); private MOSOMaxiMin maxiMin = new MOSOMaxiMin();
private InterfaceSelection m_Selection = new SelectBestIndividuals(); private InterfaceSelection selection = new SelectBestIndividuals();
private boolean m_ObeyDebsConstViolationPrinciple = true; private boolean obeyDebsConstViolationPrinciple = true;
public ArchivingMaxiMin() { public ArchivingMaxiMin() {
} }
public ArchivingMaxiMin(ArchivingMaxiMin a) { public ArchivingMaxiMin(ArchivingMaxiMin a) {
this.m_MaxiMin = new MOSOMaxiMin(); this.maxiMin = new MOSOMaxiMin();
this.m_Selection = (InterfaceSelection) a.m_Selection.clone(); this.selection = (InterfaceSelection) a.selection.clone();
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@ -60,10 +60,10 @@ public class ArchivingMaxiMin implements InterfaceArchiving, java.io.Serializabl
tmpPop.removeRedundantIndiesUsingFitness(); tmpPop.removeRedundantIndiesUsingFitness();
// Now calculate the MaxiMin Criterium // Now calculate the MaxiMin Criterium
this.m_MaxiMin.convertMultiObjective2SingleObjective(tmpPop); this.maxiMin.convertMultiObjective2SingleObjective(tmpPop);
this.m_Selection.setObeyDebsConstViolationPrinciple(this.m_ObeyDebsConstViolationPrinciple); this.selection.setObeyDebsConstViolationPrinciple(this.obeyDebsConstViolationPrinciple);
this.m_Selection.prepareSelection(tmpPop); this.selection.prepareSelection(tmpPop);
archive = this.m_Selection.selectFrom(tmpPop, pop.getArchive().getTargetSize()); archive = this.selection.selectFrom(tmpPop, pop.getArchive().getTargetSize());
archive.setTargetSize(pop.getArchive().getTargetSize()); archive.setTargetSize(pop.getArchive().getTargetSize());
// now unconvert from SO to MO // now unconvert from SO to MO
@ -113,11 +113,11 @@ public class ArchivingMaxiMin implements InterfaceArchiving, java.io.Serializabl
* @param pop The selection method used. * @param pop The selection method used.
*/ */
public void setSelectionMethod(InterfaceSelection pop) { public void setSelectionMethod(InterfaceSelection pop) {
this.m_Selection = pop; this.selection = pop;
} }
public InterfaceSelection getSelectionMethod() { public InterfaceSelection getSelectionMethod() {
return this.m_Selection; return this.selection;
} }
public String selectionMethodTipText() { public String selectionMethodTipText() {
@ -131,11 +131,11 @@ public class ArchivingMaxiMin implements InterfaceArchiving, java.io.Serializabl
* @param b The new state * @param b The new state
*/ */
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {
@ -144,15 +144,15 @@ public class ArchivingMaxiMin implements InterfaceArchiving, java.io.Serializabl
} }
//extends AbstractArchiving implements java.io.Serializable { //extends AbstractArchiving implements java.io.Serializable {
// //
// private MOSOMaxiMin m_MaxiMin = new MOSOMaxiMin(); // private MOSOMaxiMin maxiMin = new MOSOMaxiMin();
// private InterfaceSelection m_Selection = new SelectBestIndividuals(); // private InterfaceSelection selections = new SelectBestIndividuals();
// //
// public ArchivingMaxiMin() { // public ArchivingMaxiMin() {
// } // }
// //
// public ArchivingMaxiMin(ArchivingMaxiMin a) { // public ArchivingMaxiMin(ArchivingMaxiMin a) {
// this.m_MaxiMin = new MOSOMaxiMin(); // this.maxiMin = new MOSOMaxiMin();
// this.m_Selection = (InterfaceSelection)a.m_Selection.clone(); // this.selections = (InterfaceSelection)a.selections.clone();
// } // }
// //
// public Object clone() { // public Object clone() {
@ -176,9 +176,9 @@ public class ArchivingMaxiMin implements InterfaceArchiving, java.io.Serializabl
// tmpPop.removeDoubleInstancesUsingFitness(); // tmpPop.removeDoubleInstancesUsingFitness();
// //
// // Now calculate the MaxiMin Criterium // // Now calculate the MaxiMin Criterium
// this.m_MaxiMin.convertMultiObjective2SingleObjective(tmpPop); // this.maxiMin.convertMultiObjective2SingleObjective(tmpPop);
// this.m_Selection.prepareSelection(tmpPop); // this.selections.prepareSelection(tmpPop);
// archive = this.m_Selection.selectFrom(tmpPop, pop.getArchive().getPopulationSize()); // archive = this.selections.selectFrom(tmpPop, pop.getArchive().getPopulationSize());
// archive.setPopulationSize(pop.getArchive().getPopulationSize()); // archive.setPopulationSize(pop.getArchive().getPopulationSize());
// //
// // now unconvert from SO to MO // // now unconvert from SO to MO
@ -219,10 +219,10 @@ public class ArchivingMaxiMin implements InterfaceArchiving, java.io.Serializabl
// * @param pop The selection method used. // * @param pop The selection method used.
// */ // */
// public void setSelectionMethod(InterfaceSelection pop) { // public void setSelectionMethod(InterfaceSelection pop) {
// this.m_Selection = pop; // this.selections = pop;
// } // }
// public InterfaceSelection getSelectionMethod() { // public InterfaceSelection getSelectionMethod() {
// return this.m_Selection; // return this.selections;
// } // }
// public String selectionMethodTipText() { // public String selectionMethodTipText() {
// return "Choose the selection method (single-criteria ones please)."; // return "Choose the selection method (single-criteria ones please).";

View File

@ -9,13 +9,13 @@ import eva2.optimization.population.Population;
@eva2.util.annotation.Description(value ="Non-dominating sorting GA revision 1.0.") @eva2.util.annotation.Description(value ="Non-dominating sorting GA revision 1.0.")
public class ArchivingNSGA extends AbstractArchiving implements java.io.Serializable { public class ArchivingNSGA extends AbstractArchiving implements java.io.Serializable {
public InterfaceRemoveSurplusIndividuals m_Cleaner = new RemoveSurplusIndividualsDynamicHyperCube(); public InterfaceRemoveSurplusIndividuals cleaner = new RemoveSurplusIndividualsDynamicHyperCube();
public ArchivingNSGA() { public ArchivingNSGA() {
} }
public ArchivingNSGA(ArchivingNSGA a) { public ArchivingNSGA(ArchivingNSGA a) {
this.m_Cleaner = (InterfaceRemoveSurplusIndividuals) a.m_Cleaner.clone(); this.cleaner = (InterfaceRemoveSurplusIndividuals) a.cleaner.clone();
} }
@Override @Override
@ -48,7 +48,7 @@ public class ArchivingNSGA extends AbstractArchiving implements java.io.Serializ
// Now clear the archive of surplus individuals // Now clear the archive of surplus individuals
Population archive = pop.getArchive(); Population archive = pop.getArchive();
this.m_Cleaner.removeSurplusIndividuals(archive); this.cleaner.removeSurplusIndividuals(archive);
} }
/** /**
@ -67,11 +67,11 @@ public class ArchivingNSGA extends AbstractArchiving implements java.io.Serializ
* @param s The design mode. * @param s The design mode.
*/ */
public void setCleaner(InterfaceRemoveSurplusIndividuals s) { public void setCleaner(InterfaceRemoveSurplusIndividuals s) {
this.m_Cleaner = s; this.cleaner = s;
} }
public InterfaceRemoveSurplusIndividuals getCleaner() { public InterfaceRemoveSurplusIndividuals getCleaner() {
return this.m_Cleaner; return this.cleaner;
} }
public String cleanerTipText() { public String cleanerTipText() {

View File

@ -72,7 +72,7 @@ public class ArchivingNSGAII extends ArchivingNSGA implements java.io.Serializab
// therefore we could add some individuals from front[index] // therefore we could add some individuals from front[index]
// to the archive using the crowding distance sorting // to the archive using the crowding distance sorting
fronts[index].setTargetSize(archive.getTargetSize() - archive.size()); fronts[index].setTargetSize(archive.getTargetSize() - archive.size());
this.m_Cleaner.removeSurplusIndividuals(fronts[index]); this.cleaner.removeSurplusIndividuals(fronts[index]);
archive.addPopulation(fronts[index]); archive.addPopulation(fronts[index]);
} }
for (int i = 0; i < fronts.length; i++) { for (int i = 0; i < fronts.length; i++) {

View File

@ -17,13 +17,13 @@ import java.util.ArrayList;
*/ */
public class ArchivingPESAII extends AbstractArchiving implements java.io.Serializable { public class ArchivingPESAII extends AbstractArchiving implements java.io.Serializable {
private int m_GridSize = 4; private int gridSize = 4;
public ArchivingPESAII() { public ArchivingPESAII() {
} }
public ArchivingPESAII(ArchivingPESAII a) { public ArchivingPESAII(ArchivingPESAII a) {
this.m_GridSize = a.m_GridSize; this.gridSize = a.gridSize;
} }
@Override @Override
@ -112,7 +112,7 @@ public class ArchivingPESAII extends AbstractArchiving implements java.io.Serial
} }
// if (debug) { // if (debug) {
// System.out.println("The bounds are ("+bounds[0][0]+"/"+bounds[0][1]+")("+bounds[1][0]+"/"+bounds[1][1]+")"); // System.out.println("The bounds are ("+bounds[0][0]+"/"+bounds[0][1]+")("+bounds[1][0]+"/"+bounds[1][1]+")");
// System.out.println("Gridwidth is "+((bounds[0][1] - bounds[0][0])/this.m_GridSize)+"/"+((bounds[1][1] - bounds[1][0])/this.m_GridSize)); // System.out.println("Gridwidth is "+((bounds[0][1] - bounds[0][0])/this.gridSize)+"/"+((bounds[1][1] - bounds[1][0])/this.gridSize));
// } // }
// now that i got the bounds i can calculate the squeeze grid // now that i got the bounds i can calculate the squeeze grid
@ -128,7 +128,7 @@ public class ArchivingPESAII extends AbstractArchiving implements java.io.Serial
tmpFit = ((AbstractEAIndividual) pop.get(i)).getFitness(); tmpFit = ((AbstractEAIndividual) pop.get(i)).getFitness();
coll = new ArrayList(); coll = new ArrayList();
for (int j = 0; j < tmpFit.length; j++) { for (int j = 0; j < tmpFit.length; j++) {
grid[j] = (bounds[j][1] - bounds[j][0]) / this.m_GridSize; grid[j] = (bounds[j][1] - bounds[j][0]) / this.gridSize;
curGrid[j] = (int) ((tmpFit[j] - bounds[j][0]) / grid[j]); curGrid[j] = (int) ((tmpFit[j] - bounds[j][0]) / grid[j]);
} }
// if (debug) { // if (debug) {
@ -201,11 +201,11 @@ public class ArchivingPESAII extends AbstractArchiving implements java.io.Serial
* @param b The new size of a grid element. * @param b The new size of a grid element.
*/ */
public void setGridSize(int b) { public void setGridSize(int b) {
this.m_GridSize = b; this.gridSize = b;
} }
public int getGridSize() { public int getGridSize() {
return this.m_GridSize; return this.gridSize;
} }
public String gridSizeTipText() { public String gridSizeTipText() {

View File

@ -14,22 +14,17 @@ import eva2.tools.chart2d.DPoint;
/** /**
* The strength Pareto EA in it's second version, which is based on * The strength Pareto EA in it's second version, which is based on
* dominance counts. * dominance counts.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 31.03.2004
* Time: 15:01:06
* To change this template use File | Settings | File Templates.
*/ */
public class ArchivingSPEAII extends AbstractArchiving implements java.io.Serializable { public class ArchivingSPEAII extends AbstractArchiving implements java.io.Serializable {
private InterfaceDistanceMetric m_Metric = new ObjectiveSpaceMetric(); private InterfaceDistanceMetric metric = new ObjectiveSpaceMetric();
private boolean soutDebug = false; private boolean soutDebug = false;
public ArchivingSPEAII() { public ArchivingSPEAII() {
} }
public ArchivingSPEAII(ArchivingSPEAII a) { public ArchivingSPEAII(ArchivingSPEAII a) {
this.m_Metric = (InterfaceDistanceMetric) a.m_Metric.clone(); this.metric = (InterfaceDistanceMetric) a.metric.clone();
} }
@Override @Override
@ -70,7 +65,7 @@ public class ArchivingSPEAII extends AbstractArchiving implements java.io.Serial
Population archive = new Population(); Population archive = new Population();
archive.setTargetSize(pop.getArchive().getTargetSize()); archive.setTargetSize(pop.getArchive().getTargetSize());
// archive = this.m_Selection.selectFrom(tmpPop, archive.getPopulationSize()); // archive = this.selections.selectFrom(tmpPop, archive.getPopulationSize());
// first i'll add all non-dominated // first i'll add all non-dominated
for (int i = 0; i < RawFitness.length; i++) { for (int i = 0; i < RawFitness.length; i++) {
@ -201,10 +196,10 @@ public class ArchivingSPEAII extends AbstractArchiving implements java.io.Serial
for (int i = 0; i < result.length; i++) { for (int i = 0; i < result.length; i++) {
System.out.println("Result " + i + ": " + result[i]); System.out.println("Result " + i + ": " + result[i]);
} }
this.m_Plot = new Plot("Debug SPEAII", "Y1", "Y2", true); this.plot = new Plot("Debug SPEAII", "Y1", "Y2", true);
this.m_Plot.setUnconnectedPoint(0, 0, 11); this.plot.setUnconnectedPoint(0, 0, 11);
this.m_Plot.setUnconnectedPoint(1.2, 2.0, 11); this.plot.setUnconnectedPoint(1.2, 2.0, 11);
GraphPointSet mySet = new GraphPointSet(10, this.m_Plot.getFunctionArea()); GraphPointSet mySet = new GraphPointSet(10, this.plot.getFunctionArea());
double[][] trueFitness; double[][] trueFitness;
trueFitness = new double[pop.size()][]; trueFitness = new double[pop.size()][];
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
@ -253,7 +248,7 @@ public class ArchivingSPEAII extends AbstractArchiving implements java.io.Serial
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
distMatrix[i][i] = 0.0; distMatrix[i][i] = 0.0;
for (int j = i + 1; j < pop.size(); j++) { for (int j = i + 1; j < pop.size(); j++) {
distMatrix[i][j] = this.m_Metric.distance((AbstractEAIndividual) pop.get(i), (AbstractEAIndividual) pop.get(j)); distMatrix[i][j] = this.metric.distance((AbstractEAIndividual) pop.get(i), (AbstractEAIndividual) pop.get(j));
distMatrix[j][i] = distMatrix[i][j]; distMatrix[j][i] = distMatrix[i][j];
} }
} }
@ -345,7 +340,7 @@ public class ArchivingSPEAII extends AbstractArchiving implements java.io.Serial
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
distMatrix[i][i] = 0.0; distMatrix[i][i] = 0.0;
for (int j = i + 1; j < pop.size(); j++) { for (int j = i + 1; j < pop.size(); j++) {
distMatrix[i][j] = this.m_Metric.distance((AbstractEAIndividual) pop.get(i), (AbstractEAIndividual) pop.get(j)); distMatrix[i][j] = this.metric.distance((AbstractEAIndividual) pop.get(i), (AbstractEAIndividual) pop.get(j));
distMatrix[j][i] = distMatrix[i][j]; distMatrix[j][i] = distMatrix[i][j];
} }
} }

View File

@ -6,11 +6,6 @@ import eva2.optimization.population.Population;
* This information retrieval inserts the retrieved * This information retrieval inserts the retrieved
* solutions, by removing random individuals from the * solutions, by removing random individuals from the
* population. * population.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 11.03.2004
* Time: 14:55:18
* To change this template use File | Settings | File Templates.
*/ */
public class InformationRetrievalInserting implements InterfaceInformationRetrieval, java.io.Serializable { public class InformationRetrievalInserting implements InterfaceInformationRetrieval, java.io.Serializable {

View File

@ -6,11 +6,6 @@ import eva2.tools.math.RNG;
/** /**
* This information retrieval method simply add the retrieved solutions * This information retrieval method simply add the retrieved solutions
* to the current population. * to the current population.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 11.03.2004
* Time: 15:01:45
* To change this template use File | Settings | File Templates.
*/ */
public class InformationRetrievalReplacing implements InterfaceInformationRetrieval, java.io.Serializable { public class InformationRetrievalReplacing implements InterfaceInformationRetrieval, java.io.Serializable {

View File

@ -10,11 +10,6 @@ import eva2.tools.math.RNG;
* space. But i guess currently you can't toggel that. But here * space. But i guess currently you can't toggel that. But here
* the hybercubes are dynamic, e.g. theey are recalculated after * the hybercubes are dynamic, e.g. theey are recalculated after
* an individual is removed. * an individual is removed.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 13.05.2004
* Time: 14:36:54
* To change this template use File | Settings | File Templates.
*/ */
public class RemoveSurplusIndividualsDynamicHyperCube implements InterfaceRemoveSurplusIndividuals, java.io.Serializable { public class RemoveSurplusIndividualsDynamicHyperCube implements InterfaceRemoveSurplusIndividuals, java.io.Serializable {

View File

@ -10,11 +10,6 @@ import eva2.tools.math.RNG;
* space. But i guess currently you can't toggel that. But here * space. But i guess currently you can't toggel that. But here
* the hybercubes are dynamic, e.g. theey are recalculated after * the hybercubes are dynamic, e.g. theey are recalculated after
* an individual is removed. * an individual is removed.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 13.05.2004
* Time: 14:36:54
* To change this template use File | Settings | File Templates.
*/ */
public class RemoveSurplusIndividualsSMetric implements InterfaceRemoveSurplusIndividuals, java.io.Serializable { public class RemoveSurplusIndividualsSMetric implements InterfaceRemoveSurplusIndividuals, java.io.Serializable {

View File

@ -10,11 +10,6 @@ import eva2.tools.math.RNG;
* space. But i guess currently you can't toggel that. But here * space. But i guess currently you can't toggel that. But here
* the hybercubes are static, e.g. theey are not recalculated after * the hybercubes are static, e.g. theey are not recalculated after
* an individual is removed. * an individual is removed.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 13.05.2004
* Time: 14:43:15
* To change this template use File | Settings | File Templates.
*/ */
public class RemoveSurplusIndividualsStaticHyperCube extends RemoveSurplusIndividualsDynamicHyperCube implements java.io.Serializable { public class RemoveSurplusIndividualsStaticHyperCube extends RemoveSurplusIndividualsDynamicHyperCube implements java.io.Serializable {

View File

@ -12,11 +12,6 @@ import java.awt.event.WindowEvent;
* Self-organizing maps, a simple, but easy to visualize method * Self-organizing maps, a simple, but easy to visualize method
* for classification. The Dikel flag is an undocumented extension, * for classification. The Dikel flag is an undocumented extension,
* which seems to work but is not published. * which seems to work but is not published.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 09.12.2004
* Time: 15:10:45
* To change this template use File | Settings | File Templates.
*/ */
public class ClassificationSelfOrganizingMaps implements java.io.Serializable, InterfaceClassification { public class ClassificationSelfOrganizingMaps implements java.io.Serializable, InterfaceClassification {
@ -24,55 +19,55 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
* Generated serial version identifer. * Generated serial version identifer.
*/ */
private static final long serialVersionUID = 1447707947002269263L; private static final long serialVersionUID = 1447707947002269263L;
private int m_Dim1 = 5, m_Dim2 = 15; private int dim1 = 5, dim2 = 15;
private int m_AlternativeClasses; private int alternativeClasses;
private double[][][] m_SOM; private double[][][] SOM;
private int[][][] m_SOMClass; private int[][][] SOMClass;
private double[][] m_Range; //[dimension][min, max, mean, sigma] private double[][] range; //[dimension][min, max, mean, sigma]
private double m_Alpha = 0.4; private double alpha = 0.4;
private int m_TrainingCycles = 250; private int trainingCycles = 250;
private int m_NeighborhoodSize = 2; private int neighborhoodSize = 2;
private boolean m_DikelThis = true; private boolean dikelThis = true;
private boolean debug = false; private boolean debug = false;
public ClassificationSelfOrganizingMaps() { public ClassificationSelfOrganizingMaps() {
} }
public ClassificationSelfOrganizingMaps(ClassificationSelfOrganizingMaps a) { public ClassificationSelfOrganizingMaps(ClassificationSelfOrganizingMaps a) {
this.m_Dim1 = a.m_Dim1; this.dim1 = a.dim1;
this.m_Dim2 = a.m_Dim2; this.dim2 = a.dim2;
this.m_AlternativeClasses = a.m_AlternativeClasses; this.alternativeClasses = a.alternativeClasses;
this.m_NeighborhoodSize = a.m_NeighborhoodSize; this.neighborhoodSize = a.neighborhoodSize;
this.m_Alpha = a.m_Alpha; this.alpha = a.alpha;
this.m_DikelThis = a.m_DikelThis; this.dikelThis = a.dikelThis;
this.m_TrainingCycles = a.m_TrainingCycles; this.trainingCycles = a.trainingCycles;
if (a.m_SOM != null) { if (a.SOM != null) {
this.m_SOM = new double[a.m_SOM.length][a.m_SOM[0].length][a.m_SOM[0][0].length]; this.SOM = new double[a.SOM.length][a.SOM[0].length][a.SOM[0][0].length];
for (int i = 0; i < a.m_SOM.length; i++) { for (int i = 0; i < a.SOM.length; i++) {
for (int j = 0; j < a.m_SOM[0].length; j++) { for (int j = 0; j < a.SOM[0].length; j++) {
for (int k = 0; k < a.m_SOM[0][0].length; k++) { for (int k = 0; k < a.SOM[0][0].length; k++) {
this.m_SOM[i][j][k] = a.m_SOM[i][j][k]; this.SOM[i][j][k] = a.SOM[i][j][k];
} }
} }
} }
} }
if (a.m_SOMClass != null) { if (a.SOMClass != null) {
this.m_SOMClass = new int[a.m_SOMClass.length][a.m_SOMClass[0].length][a.m_SOMClass[0][0].length]; this.SOMClass = new int[a.SOMClass.length][a.SOMClass[0].length][a.SOMClass[0][0].length];
for (int i = 0; i < a.m_SOMClass.length; i++) { for (int i = 0; i < a.SOMClass.length; i++) {
for (int j = 0; j < a.m_SOMClass[0].length; j++) { for (int j = 0; j < a.SOMClass[0].length; j++) {
for (int k = 0; k < a.m_SOMClass[0][0].length; k++) { for (int k = 0; k < a.SOMClass[0][0].length; k++) {
this.m_SOMClass[i][j][k] = a.m_SOMClass[i][j][k]; this.SOMClass[i][j][k] = a.SOMClass[i][j][k];
} }
} }
} }
} }
if (a.m_Range != null) { if (a.range != null) {
this.m_Range = new double[a.m_Range.length][4]; this.range = new double[a.range.length][4];
for (int i = 0; i < this.m_Range.length; i++) { for (int i = 0; i < this.range.length; i++) {
this.m_Range[i][0] = a.m_Range[i][0]; this.range[i][0] = a.range[i][0];
this.m_Range[i][1] = a.m_Range[i][1]; this.range[i][1] = a.range[i][1];
this.m_Range[i][2] = a.m_Range[i][2]; this.range[i][2] = a.range[i][2];
this.m_Range[i][3] = a.m_Range[i][3]; this.range[i][3] = a.range[i][3];
} }
} }
} }
@ -96,34 +91,34 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
*/ */
@Override @Override
public void init(double[][] space, int[] type) { public void init(double[][] space, int[] type) {
this.m_AlternativeClasses = 0; this.alternativeClasses = 0;
for (int i = 0; i < type.length; i++) { for (int i = 0; i < type.length; i++) {
this.m_AlternativeClasses = Math.max(type[i], this.m_AlternativeClasses); this.alternativeClasses = Math.max(type[i], this.alternativeClasses);
} }
this.m_AlternativeClasses++; this.alternativeClasses++;
this.m_SOM = new double[this.m_Dim1][this.m_Dim2][space[0].length]; this.SOM = new double[this.dim1][this.dim2][space[0].length];
this.m_SOMClass = new int[this.m_Dim1][this.m_Dim2][this.m_AlternativeClasses]; this.SOMClass = new int[this.dim1][this.dim2][this.alternativeClasses];
this.m_Range = new double[space[0].length][4]; this.range = new double[space[0].length][4];
for (int i = 0; i < this.m_Range.length; i++) { for (int i = 0; i < this.range.length; i++) {
this.m_Range[i][0] = Double.POSITIVE_INFINITY; this.range[i][0] = Double.POSITIVE_INFINITY;
this.m_Range[i][1] = Double.NEGATIVE_INFINITY; this.range[i][1] = Double.NEGATIVE_INFINITY;
this.m_Range[i][2] = 0; this.range[i][2] = 0;
this.m_Range[i][3] = 0; this.range[i][3] = 0;
} }
for (int i = 0; i < space.length; i++) { for (int i = 0; i < space.length; i++) {
for (int k = 0; k < space[0].length; k++) { for (int k = 0; k < space[0].length; k++) {
this.m_Range[k][0] = Math.min(this.m_Range[k][0], space[i][k]); this.range[k][0] = Math.min(this.range[k][0], space[i][k]);
this.m_Range[k][1] = Math.max(this.m_Range[k][1], space[i][k]); this.range[k][1] = Math.max(this.range[k][1], space[i][k]);
this.m_Range[k][2] += space[i][k]; this.range[k][2] += space[i][k];
} }
} }
for (int i = 0; i < this.m_Range.length; i++) { for (int i = 0; i < this.range.length; i++) {
this.m_Range[i][2] /= ((double) space.length); this.range[i][2] /= ((double) space.length);
for (int j = 0; j < space.length; j++) { for (int j = 0; j < space.length; j++) {
this.m_Range[i][3] += Math.pow((this.m_Range[i][2] - space[j][i]), 2); this.range[i][3] += Math.pow((this.range[i][2] - space[j][i]), 2);
} }
this.m_Range[i][3] = Math.sqrt(this.m_Range[i][3] / ((double) space.length)); this.range[i][3] = Math.sqrt(this.range[i][3] / ((double) space.length));
// System.out.println("Range: ["+this.m_Range[i][0]+", "+this.m_Range[i][1]+"] Mean: "+this.m_Range[i][2]+" Var: "+this.m_Range[i][3]); // System.out.println("Range: ["+this.range[i][0]+", "+this.range[i][1]+"] Mean: "+this.range[i][2]+" Var: "+this.range[i][3]);
} }
this.initSOM(); this.initSOM();
// if (this.debug) this.drawSOM(space, type); // if (this.debug) this.drawSOM(space, type);
@ -133,15 +128,15 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
* This method inits the weights of the SOM in the current range * This method inits the weights of the SOM in the current range
*/ */
private void initSOM() { private void initSOM() {
for (int i = 0; i < this.m_SOM.length; i++) { for (int i = 0; i < this.SOM.length; i++) {
for (int j = 0; j < this.m_SOM[0].length; j++) { for (int j = 0; j < this.SOM[0].length; j++) {
for (int k = 0; k < this.m_SOM[0][0].length; k++) { for (int k = 0; k < this.SOM[0][0].length; k++) {
this.m_SOM[i][j][k] = 0 * RNG.randomDouble( this.SOM[i][j][k] = 0 * RNG.randomDouble(
(this.m_Range[k][0] - this.m_Range[k][2]) / (1 + this.m_Range[k][3]), (this.range[k][0] - this.range[k][2]) / (1 + this.range[k][3]),
(this.m_Range[k][1] - this.m_Range[k][2]) / (1 + this.m_Range[k][3])); (this.range[k][1] - this.range[k][2]) / (1 + this.range[k][3]));
} }
for (int k = 0; k < this.m_SOMClass[0][0].length; k++) { for (int k = 0; k < this.SOMClass[0][0].length; k++) {
this.m_SOMClass[i][j][k] = 0; this.SOMClass[i][j][k] = 0;
} }
} }
} }
@ -158,24 +153,24 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
@Override @Override
public void train(double[][] space, int[] type) { public void train(double[][] space, int[] type) {
// first init the assignment to zero // first init the assignment to zero
for (int i = 0; i < this.m_SOM.length; i++) { for (int i = 0; i < this.SOM.length; i++) {
for (int j = 0; j < this.m_SOM[0].length; j++) { for (int j = 0; j < this.SOM[0].length; j++) {
for (int k = 0; k < this.m_SOMClass[0][0].length; k++) { for (int k = 0; k < this.SOMClass[0][0].length; k++) {
this.m_SOMClass[i][j][k] = 0; this.SOMClass[i][j][k] = 0;
} }
} }
} }
// now train the stuff // now train the stuff
int[] order; int[] order;
int[] winner; int[] winner;
for (int t = 0; t < this.m_TrainingCycles; t++) { for (int t = 0; t < this.trainingCycles; t++) {
// train the full set // train the full set
order = RNG.randomPerm(space.length); order = RNG.randomPerm(space.length);
for (int i = 0; i < order.length; i++) { for (int i = 0; i < order.length; i++) {
winner = this.findWinningNeuron(space[order[i]]); winner = this.findWinningNeuron(space[order[i]]);
// now i got the winning neuron *puh* // now i got the winning neuron *puh*
// update this neuron and the neighbors // update this neuron and the neighbors
this.update(winner, space[order[i]], t / ((double) this.m_TrainingCycles)); this.update(winner, space[order[i]], t / ((double) this.trainingCycles));
} }
// if (this.debug) this.drawSOM(space, type); // if (this.debug) this.drawSOM(space, type);
@ -184,7 +179,7 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
// most likely it is a percentage value // most likely it is a percentage value
for (int i = 0; i < space.length; i++) { for (int i = 0; i < space.length; i++) {
winner = this.findWinningNeuron(space[i]); winner = this.findWinningNeuron(space[i]);
this.m_SOMClass[winner[0]][winner[1]][type[i]]++; this.SOMClass[winner[0]][winner[1]][type[i]]++;
} }
if (this.debug) { if (this.debug) {
this.drawSOM(space, type); this.drawSOM(space, type);
@ -199,25 +194,25 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
* @param t The current time * @param t The current time
*/ */
private void update(int[] w, double[] data, double t) { private void update(int[] w, double[] data, double t) {
double a = this.m_Alpha * (1 - t); double a = this.alpha * (1 - t);
double dist; double dist;
int[] tmpI = new int[2]; int[] tmpI = new int[2];
// move the winner to the data point // move the winner to the data point
if (this.m_DikelThis) { if (this.dikelThis) {
this.drikelWinnerTo(w, data, a); this.drikelWinnerTo(w, data, a);
} else { } else {
this.moveNeuronTo(w, data, a); this.moveNeuronTo(w, data, a);
} }
// move the neighbors to the data point // move the neighbors to the data point
for (int i = -this.m_NeighborhoodSize; i <= this.m_NeighborhoodSize; i++) { for (int i = -this.neighborhoodSize; i <= this.neighborhoodSize; i++) {
for (int j = -this.m_NeighborhoodSize; j <= this.m_NeighborhoodSize; j++) { for (int j = -this.neighborhoodSize; j <= this.neighborhoodSize; j++) {
// not the original point // not the original point
if ((j != 0) || (i != 0)) { if ((j != 0) || (i != 0)) {
// not outside the array // not outside the array
if ((this.m_SOM.length > w[0] + i) && (w[0] + i >= 0) if ((this.SOM.length > w[0] + i) && (w[0] + i >= 0)
&& (this.m_SOM[0].length > w[1] + j) && (w[1] + j >= 0)) { && (this.SOM[0].length > w[1] + j) && (w[1] + j >= 0)) {
dist = Math.sqrt(i * i + j * j); dist = Math.sqrt(i * i + j * j);
tmpI[0] = w[0] + i; tmpI[0] = w[0] + i;
tmpI[1] = w[1] + j; tmpI[1] = w[1] + j;
@ -239,9 +234,9 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
result[0] = 0; result[0] = 0;
result[1] = 0; result[1] = 0;
// find the winning neuron for order[j] // find the winning neuron for order[j]
for (int m = 0; m < this.m_SOM.length; m++) { for (int m = 0; m < this.SOM.length; m++) {
for (int n = 0; n < this.m_SOM[0].length; n++) { for (int n = 0; n < this.SOM[0].length; n++) {
dist = this.distance(this.m_SOM[m][n], data); dist = this.distance(this.SOM[m][n], data);
if (minDist > dist) { if (minDist > dist) {
minDist = dist; minDist = dist;
result[0] = m; result[0] = m;
@ -264,7 +259,7 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
double result = 0; double result = 0;
for (int i = 0; i < n.length; i++) { for (int i = 0; i < n.length; i++) {
result += Math.pow(n[i] - (d[i] - this.m_Range[i][2]) / (1 + this.m_Range[i][3]), 2); result += Math.pow(n[i] - (d[i] - this.range[i][2]) / (1 + this.range[i][3]), 2);
} }
result = Math.sqrt(result); result = Math.sqrt(result);
@ -279,11 +274,11 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
* @param a The scaling factor * @param a The scaling factor
*/ */
public void moveNeuronTo(int[] w, double[] d, double a) { public void moveNeuronTo(int[] w, double[] d, double a) {
double[] vec = new double[this.m_SOM[w[0]][w[1]].length]; double[] vec = new double[this.SOM[w[0]][w[1]].length];
for (int i = 0; i < this.m_SOM[w[0]][w[1]].length; i++) { for (int i = 0; i < this.SOM[w[0]][w[1]].length; i++) {
vec[i] = (d[i] - this.m_Range[i][2]) / (1 + this.m_Range[i][3]) - this.m_SOM[w[0]][w[1]][i]; vec[i] = (d[i] - this.range[i][2]) / (1 + this.range[i][3]) - this.SOM[w[0]][w[1]][i];
this.m_SOM[w[0]][w[1]][i] += a * vec[i]; this.SOM[w[0]][w[1]][i] += a * vec[i];
} }
} }
@ -296,11 +291,11 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
* @param a The scaling factor * @param a The scaling factor
*/ */
public void drikelWinnerTo(int[] w, double[] d, double a) { public void drikelWinnerTo(int[] w, double[] d, double a) {
double[] vec = new double[this.m_SOM[w[0]][w[1]].length]; double[] vec = new double[this.SOM[w[0]][w[1]].length];
double[] nec = new double[this.m_SOM[w[0]][w[1]].length]; double[] nec = new double[this.SOM[w[0]][w[1]].length];
for (int i = 0; i < this.m_SOM[w[0]][w[1]].length; i++) { for (int i = 0; i < this.SOM[w[0]][w[1]].length; i++) {
vec[i] = (d[i] - this.m_Range[i][2]) / (1 + this.m_Range[i][3]) - this.m_SOM[w[0]][w[1]][i]; vec[i] = (d[i] - this.range[i][2]) / (1 + this.range[i][3]) - this.SOM[w[0]][w[1]][i];
nec[i] = 0; nec[i] = 0;
} }
for (int i = -1; i <= 1; i++) { for (int i = -1; i <= 1; i++) {
@ -308,18 +303,18 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
// not the original point // not the original point
if ((j != 0) || (i != 0)) { if ((j != 0) || (i != 0)) {
// not outside the array // not outside the array
if ((this.m_SOM.length > w[0] + i) && (w[0] + i >= 0) if ((this.SOM.length > w[0] + i) && (w[0] + i >= 0)
&& (this.m_SOM[0].length > w[1] + j) && (w[1] + j >= 0)) { && (this.SOM[0].length > w[1] + j) && (w[1] + j >= 0)) {
for (int k = 0; k < this.m_SOM[0][0].length; k++) { for (int k = 0; k < this.SOM[0][0].length; k++) {
nec[k] += (d[k] - this.m_Range[k][2]) / (1 + this.m_Range[k][3]) - this.m_SOM[w[0] + i][w[1] + j][k]; nec[k] += (d[k] - this.range[k][2]) / (1 + this.range[k][3]) - this.SOM[w[0] + i][w[1] + j][k];
} }
} }
} }
} }
} }
for (int i = 0; i < this.m_SOM[w[0]][w[1]].length; i++) { for (int i = 0; i < this.SOM[w[0]][w[1]].length; i++) {
vec[i] -= (a / 2.0) * nec[i]; vec[i] -= (a / 2.0) * nec[i];
this.m_SOM[w[0]][w[1]][i] += a * vec[i]; this.SOM[w[0]][w[1]][i] += a * vec[i];
} }
} }
@ -335,10 +330,10 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
int mostClasses = 0; int mostClasses = 0;
int result = 0; int result = 0;
for (int i = 0; i < this.m_SOMClass[winner[0]][winner[1]].length; i++) { for (int i = 0; i < this.SOMClass[winner[0]][winner[1]].length; i++) {
if (mostClasses < this.m_SOMClass[winner[0]][winner[1]][i]) { if (mostClasses < this.SOMClass[winner[0]][winner[1]][i]) {
result = i; result = i;
mostClasses = this.m_SOMClass[winner[0]][winner[1]][i]; mostClasses = this.SOMClass[winner[0]][winner[1]][i];
} }
} }
return result; return result;
@ -367,16 +362,16 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
DArea area = new DArea(); DArea area = new DArea();
area.setBorder(myBorder); area.setBorder(myBorder);
area.setBackground(Color.white); area.setBackground(Color.white);
for (int i = 0; i < this.m_SOM.length; i++) { for (int i = 0; i < this.SOM.length; i++) {
for (int j = 0; j < this.m_SOM[0].length; j++) { for (int j = 0; j < this.SOM[0].length; j++) {
pos1 = this.m_SOM[i][j]; pos1 = this.SOM[i][j];
if ((i + 1) < this.m_SOM.length) { if ((i + 1) < this.SOM.length) {
pos2 = this.m_SOM[i + 1][j]; pos2 = this.SOM[i + 1][j];
tmpL = new DLine(pos1[0], pos1[1], pos2[0], pos2[1], Color.BLACK); tmpL = new DLine(pos1[0], pos1[1], pos2[0], pos2[1], Color.BLACK);
area.addDElement(tmpL); area.addDElement(tmpL);
} }
if ((j + 1) < this.m_SOM[i].length) { if ((j + 1) < this.SOM[i].length) {
pos2 = this.m_SOM[i][j + 1]; pos2 = this.SOM[i][j + 1];
tmpL = new DLine(pos1[0], pos1[1], pos2[0], pos2[1], Color.BLACK); tmpL = new DLine(pos1[0], pos1[1], pos2[0], pos2[1], Color.BLACK);
area.addDElement(tmpL); area.addDElement(tmpL);
} }
@ -390,7 +385,7 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
// area.addDElement(tmpP); // area.addDElement(tmpP);
// } // }
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
tmpP = new DPoint((data[i][0] - this.m_Range[0][2]) / (1 + this.m_Range[0][3]), (data[i][1] - this.m_Range[1][2]) / (1 + this.m_Range[1][3])); tmpP = new DPoint((data[i][0] - this.range[0][2]) / (1 + this.range[0][3]), (data[i][1] - this.range[1][2]) / (1 + this.range[1][3]));
tmpP.setIcon(new Chart2DDPointIconCross()); tmpP.setIcon(new Chart2DDPointIconCross());
tmpP.setColor(this.getColorFor(types[i])); tmpP.setColor(this.getColorFor(types[i]));
area.addDElement(tmpP); area.addDElement(tmpP);
@ -407,22 +402,22 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
public JComponent getViewOnSOM() { public JComponent getViewOnSOM() {
DArea result = new DArea(); DArea result = new DArea();
result.setBackground(Color.WHITE); result.setBackground(Color.WHITE);
result.setVisibleRectangle(0, 0, this.m_SOM.length, this.m_SOM[0].length); result.setVisibleRectangle(0, 0, this.SOM.length, this.SOM[0].length);
result.setPreferredSize(new Dimension(this.m_SOM.length * 10, this.m_SOM[0].length * 10)); result.setPreferredSize(new Dimension(this.SOM.length * 10, this.SOM[0].length * 10));
result.setMinimumSize(new Dimension(this.m_SOM.length * 2, this.m_SOM[0].length * 2)); result.setMinimumSize(new Dimension(this.SOM.length * 2, this.SOM[0].length * 2));
DRectangle tmpRect; DRectangle tmpRect;
int best; int best;
double total; double total;
double currentP; double currentP;
double lastP; double lastP;
for (int i = 0; i < this.m_SOM.length; i++) { for (int i = 0; i < this.SOM.length; i++) {
for (int j = 0; j < this.m_SOM[i].length; j++) { for (int j = 0; j < this.SOM[i].length; j++) {
total = 0; total = 0;
currentP = 0; currentP = 0;
lastP = 0; lastP = 0;
// first determine how many instances have been assigned to // first determine how many instances have been assigned to
for (int k = 0; k < this.m_SOMClass[i][j].length; k++) { for (int k = 0; k < this.SOMClass[i][j].length; k++) {
total += this.m_SOMClass[i][j][k]; total += this.SOMClass[i][j][k];
} }
// now determine the percentage for each class and draw the box // now determine the percentage for each class and draw the box
if (false) { if (false) {
@ -430,17 +425,17 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
tmpRect = new DRectangle(i, j, 1, 1); tmpRect = new DRectangle(i, j, 1, 1);
tmpRect.setColor(Color.BLACK); tmpRect.setColor(Color.BLACK);
best = 0; best = 0;
for (int k = 0; k < this.m_SOMClass[i][j].length; k++) { for (int k = 0; k < this.SOMClass[i][j].length; k++) {
if (best < this.m_SOMClass[i][j][k]) { if (best < this.SOMClass[i][j][k]) {
best = this.m_SOMClass[i][j][k]; best = this.SOMClass[i][j][k];
tmpRect.setFillColor(this.getColorFor(k)); tmpRect.setFillColor(this.getColorFor(k));
} }
} }
result.addDElement(tmpRect); result.addDElement(tmpRect);
} else { } else {
// try to draw the percentage for each element // try to draw the percentage for each element
for (int k = 0; k < this.m_SOMClass[i][j].length; k++) { for (int k = 0; k < this.SOMClass[i][j].length; k++) {
currentP = this.m_SOMClass[i][j][k] / total; currentP = this.SOMClass[i][j][k] / total;
if (currentP > 0) { if (currentP > 0) {
tmpRect = new DRectangle(i, j + lastP, 1, currentP); tmpRect = new DRectangle(i, j + lastP, 1, currentP);
tmpRect.setColor(this.getColorFor(k)); tmpRect.setColor(this.getColorFor(k));
@ -536,11 +531,11 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
if (t < 1) { if (t < 1) {
t = 1; t = 1;
} }
this.m_Dim1 = t; this.dim1 = t;
} }
public int getSizeX() { public int getSizeX() {
return this.m_Dim1; return this.dim1;
} }
public String sizeXTipText() { public String sizeXTipText() {
@ -557,11 +552,11 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
if (t < 1) { if (t < 1) {
t = 1; t = 1;
} }
this.m_Dim2 = t; this.dim2 = t;
} }
public int getSizeY() { public int getSizeY() {
return this.m_Dim2; return this.dim2;
} }
public String sizeYTipText() { public String sizeYTipText() {
@ -577,11 +572,11 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
if (t < 1) { if (t < 1) {
t = 1; t = 1;
} }
this.m_TrainingCycles = t; this.trainingCycles = t;
} }
public int getTrainingCycles() { public int getTrainingCycles() {
return this.m_TrainingCycles; return this.trainingCycles;
} }
public String trainingCyclesTipText() { public String trainingCyclesTipText() {
@ -597,11 +592,11 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
if (t < 0) { if (t < 0) {
t = 0; t = 0;
} }
this.m_NeighborhoodSize = t; this.neighborhoodSize = t;
} }
public int getNeighborhoodSize() { public int getNeighborhoodSize() {
return this.m_NeighborhoodSize; return this.neighborhoodSize;
} }
public String neighborhoodSizeTipText() { public String neighborhoodSizeTipText() {
@ -620,11 +615,11 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
if (t > 0.5) { if (t > 0.5) {
t = 0.5; t = 0.5;
} }
this.m_Alpha = t; this.alpha = t;
} }
public double getAlpha() { public double getAlpha() {
return this.m_Alpha; return this.alpha;
} }
public String AlphaTipText() { public String AlphaTipText() {
@ -637,11 +632,11 @@ public class ClassificationSelfOrganizingMaps implements java.io.Serializable, I
* @param t The dikel factor * @param t The dikel factor
*/ */
public void setDikelThis(boolean t) { public void setDikelThis(boolean t) {
this.m_DikelThis = t; this.dikelThis = t;
} }
public boolean getDikelThis() { public boolean getDikelThis() {
return this.m_DikelThis; return this.dikelThis;
} }
public String dikelThisTipText() { public String dikelThisTipText() {

View File

@ -9,7 +9,7 @@ package eva2.optimization.operator.classification;
* To change this template use File | Settings | File Templates. * To change this template use File | Settings | File Templates.
*/ */
public interface InterfaceClassification { public interface InterfaceClassification {
/** /** x
* This method allows you to make a deep clone of * This method allows you to make a deep clone of
* the object * the object
* *

View File

@ -26,19 +26,19 @@ import java.util.Arrays;
*/ */
public class ClusteringXMeans implements InterfaceClustering, java.io.Serializable { public class ClusteringXMeans implements InterfaceClustering, java.io.Serializable {
public int m_MaxK = 5; public int maxK = 5;
public double[][] m_C; public double[][] C;
public boolean m_UseSearchSpace = false; public boolean useSearchSpace = false;
public boolean m_Debug = false; public boolean debug = false;
public ClusteringXMeans() { public ClusteringXMeans() {
} }
public ClusteringXMeans(ClusteringXMeans a) { public ClusteringXMeans(ClusteringXMeans a) {
this.m_Debug = a.m_Debug; this.debug = a.debug;
this.m_MaxK = a.m_MaxK; this.maxK = a.maxK;
this.m_UseSearchSpace = a.m_UseSearchSpace; this.useSearchSpace = a.useSearchSpace;
} }
/** /**
@ -64,8 +64,8 @@ public class ClusteringXMeans implements InterfaceClustering, java.io.Serializab
@Override @Override
public Population[] cluster(Population pop, Population referencePop) { public Population[] cluster(Population pop, Population referencePop) {
ClusteringKMeans kmeans = new ClusteringKMeans(); ClusteringKMeans kmeans = new ClusteringKMeans();
Population[][] tmpResults = new Population[this.m_MaxK][]; Population[][] tmpResults = new Population[this.maxK][];
double[][][] tmpC = new double[this.m_MaxK][][]; double[][][] tmpC = new double[this.maxK][][];
double[][] data = this.extractClusterDataFrom(pop); double[][] data = this.extractClusterDataFrom(pop);
// the first result is the unclustered population // the first result is the unclustered population
@ -74,8 +74,8 @@ public class ClusteringXMeans implements InterfaceClustering, java.io.Serializab
tmpC[0] = new double[1][]; tmpC[0] = new double[1][];
tmpC[0][0] = this.calculateMean(data); tmpC[0][0] = this.calculateMean(data);
// the other solutions are kmeans results // the other solutions are kmeans results
for (int i = 1; i < this.m_MaxK; i++) { for (int i = 1; i < this.maxK; i++) {
kmeans.setUseSearchSpace(this.m_UseSearchSpace); kmeans.setUseSearchSpace(this.useSearchSpace);
kmeans.setK(i + 1); kmeans.setK(i + 1);
tmpResults[i] = kmeans.cluster(pop, (Population) null); tmpResults[i] = kmeans.cluster(pop, (Population) null);
tmpC[i] = kmeans.getC(); tmpC[i] = kmeans.getC();
@ -86,7 +86,7 @@ public class ClusteringXMeans implements InterfaceClustering, java.io.Serializab
int index = 0; int index = 0;
for (int i = 0; i < tmpResults.length; i++) { for (int i = 0; i < tmpResults.length; i++) {
tmpBIC = this.calculateBIC(tmpResults[i], tmpC[i]); tmpBIC = this.calculateBIC(tmpResults[i], tmpC[i]);
if (this.m_Debug) { if (this.debug) {
Plot plot; Plot plot;
double[] tmpD = new double[2], x; double[] tmpD = new double[2], x;
tmpD[0] = 0; tmpD[0] = 0;
@ -129,7 +129,7 @@ public class ClusteringXMeans implements InterfaceClustering, java.io.Serializab
} }
System.out.println("XMeans results in " + (index + 1) + " clusters."); System.out.println("XMeans results in " + (index + 1) + " clusters.");
Population[] result = tmpResults[index]; Population[] result = tmpResults[index];
this.m_C = tmpC[index]; this.C = tmpC[index];
return result; return result;
} }
@ -225,7 +225,7 @@ public class ClusteringXMeans implements InterfaceClustering, java.io.Serializab
// let's fetch the raw data either the double // let's fetch the raw data either the double
// phenotype or the coordinates in objective space // phenotype or the coordinates in objective space
// @todo: i case of repair i would need to set the phenotype! // @todo: i case of repair i would need to set the phenotype!
if (this.m_UseSearchSpace && (pop.get(0) instanceof InterfaceDataTypeDouble)) { if (this.useSearchSpace && (pop.get(0) instanceof InterfaceDataTypeDouble)) {
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
data[i] = ((InterfaceDataTypeDouble) pop.get(i)).getDoubleData(); data[i] = ((InterfaceDataTypeDouble) pop.get(i)).getDoubleData();
} }
@ -274,7 +274,7 @@ public class ClusteringXMeans implements InterfaceClustering, java.io.Serializab
* @return The centroids * @return The centroids
*/ */
public double[][] getC() { public double[][] getC() {
return this.m_C; return this.C;
} }
/** /**
@ -310,7 +310,7 @@ public class ClusteringXMeans implements InterfaceClustering, java.io.Serializab
public static void main(String[] args) { public static void main(String[] args) {
ClusteringXMeans ckm = new ClusteringXMeans(); ClusteringXMeans ckm = new ClusteringXMeans();
ckm.setUseSearchSpace(true); ckm.setUseSearchSpace(true);
ckm.m_Debug = true; ckm.debug = true;
Population pop = new Population(); Population pop = new Population();
pop.setTargetSize(100); pop.setTargetSize(100);
F1Problem f1 = new F1Problem(); F1Problem f1 = new F1Problem();
@ -393,14 +393,14 @@ public class ClusteringXMeans implements InterfaceClustering, java.io.Serializab
* @return The current number of clusters to find. * @return The current number of clusters to find.
*/ */
public int getMaxK() { public int getMaxK() {
return this.m_MaxK; return this.maxK;
} }
public void setMaxK(int m) { public void setMaxK(int m) {
if (m < 1) { if (m < 1) {
m = 1; m = 1;
} }
this.m_MaxK = m; this.maxK = m;
} }
public String maxKTipText() { public String maxKTipText() {
@ -414,11 +414,11 @@ public class ClusteringXMeans implements InterfaceClustering, java.io.Serializab
* @return The distance type to use. * @return The distance type to use.
*/ */
public boolean getUseSearchSpace() { public boolean getUseSearchSpace() {
return this.m_UseSearchSpace; return this.useSearchSpace;
} }
public void setUseSearchSpace(boolean m) { public void setUseSearchSpace(boolean m) {
this.m_UseSearchSpace = m; this.useSearchSpace = m;
} }
public String useSearchSpaceTipText() { public String useSearchSpaceTipText() {

View File

@ -38,7 +38,7 @@ public class PropertyCrossoverMixerEditor extends JPanel implements PropertyEdit
*/ */
private JLabel m_Label = new JLabel("Can't edit", SwingConstants.CENTER); private JLabel m_Label = new JLabel("Can't edit", SwingConstants.CENTER);
/** /**
* The FilePath that is to be edited * The filePath that is to be edited
*/ */
private PropertyCrossoverMixer m_CrossoversWithWeights; private PropertyCrossoverMixer m_CrossoversWithWeights;

View File

@ -8,16 +8,11 @@ import eva2.optimization.strategies.InterfaceOptimizer;
/** /**
* Migration based on a Multi-criterial selection mechanism * Migration based on a Multi-criterial selection mechanism
* migrating the n best individuals between all populations. * migrating the n best individuals between all populations.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 15.09.2004
* Time: 15:41:15
* To change this template use File | Settings | File Templates.
*/ */
public class MOBestMigration implements InterfaceMigration, java.io.Serializable { public class MOBestMigration implements InterfaceMigration, java.io.Serializable {
private InterfaceSelection m_Selection = new SelectMOMaxiMin(); private InterfaceSelection selection = new SelectMOMaxiMin();
int m_N = 5; int n = 5;
/** /**
* The ever present clone method * The ever present clone method
@ -67,9 +62,9 @@ public class MOBestMigration implements InterfaceMigration, java.io.Serializable
comSet = oldIPOP; comSet = oldIPOP;
// todo: Here i could implement multiple selection and replacement schemes // todo: Here i could implement multiple selection and replacement schemes
newIPOP[i].removeNIndividuals(comSet.length * this.m_N); newIPOP[i].removeNIndividuals(comSet.length * this.n);
for (int j = 0; j < comSet.length; j++) { for (int j = 0; j < comSet.length; j++) {
selected = this.m_Selection.selectFrom(comSet[j], this.m_N); selected = this.selection.selectFrom(comSet[j], this.n);
newIPOP[i].addPopulation((Population) selected.clone()); newIPOP[i].addPopulation((Population) selected.clone());
} }
} }
@ -107,11 +102,11 @@ public class MOBestMigration implements InterfaceMigration, java.io.Serializable
* @return The selection method * @return The selection method
*/ */
public InterfaceSelection getSelection() { public InterfaceSelection getSelection() {
return this.m_Selection; return this.selection;
} }
public void setSelection(InterfaceSelection b) { public void setSelection(InterfaceSelection b) {
this.m_Selection = b; this.selection = b;
} }
public String selectionTipText() { public String selectionTipText() {
@ -125,14 +120,14 @@ public class MOBestMigration implements InterfaceMigration, java.io.Serializable
* @return The current number of individuals to migrate * @return The current number of individuals to migrate
*/ */
public int getN() { public int getN() {
return this.m_N; return this.n;
} }
public void setN(int b) { public void setN(int b) {
if (b < 1) { if (b < 1) {
b = 1; b = 1;
} }
this.m_N = b; this.n = b;
} }
public String nTipText() { public String nTipText() {

View File

@ -24,20 +24,15 @@ import java.io.IOException;
* scheme, this method rearanges the populations and may * scheme, this method rearanges the populations and may
* impose area constraints on the subpopulations. This method * impose area constraints on the subpopulations. This method
* is suited for K-means only. * is suited for K-means only.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 27.09.2004
* Time: 17:24:44
* To change this template use File | Settings | File Templates.
*/ */
public class MOClusteringSeparation implements InterfaceMigration, java.io.Serializable { public class MOClusteringSeparation implements InterfaceMigration, java.io.Serializable {
public boolean debug = false; public boolean debug = false;
private ClusteringKMeans m_KMeans = new ClusteringKMeans(); private ClusteringKMeans kMeans = new ClusteringKMeans();
private ArchivingNSGAII m_NSGAII = new ArchivingNSGAII(); private ArchivingNSGAII NSGAII = new ArchivingNSGAII();
private boolean m_UseConstraints = true; private boolean useConstraints = true;
private boolean m_ReuseC = false; private boolean reuseC = false;
private InterfaceSelection m_Selection = new SelectRandom(); private InterfaceSelection selection = new SelectRandom();
public MOClusteringSeparation() { public MOClusteringSeparation() {
@ -45,15 +40,15 @@ public class MOClusteringSeparation implements InterfaceMigration, java.io.Seria
public MOClusteringSeparation(MOClusteringSeparation b) { public MOClusteringSeparation(MOClusteringSeparation b) {
this.debug = b.debug; this.debug = b.debug;
this.m_UseConstraints = b.m_UseConstraints; this.useConstraints = b.useConstraints;
if (b.m_KMeans != null) { if (b.kMeans != null) {
this.m_KMeans = (ClusteringKMeans) b.m_KMeans.clone(); this.kMeans = (ClusteringKMeans) b.kMeans.clone();
} }
if (b.m_NSGAII != null) { if (b.NSGAII != null) {
this.m_NSGAII = (ArchivingNSGAII) b.m_NSGAII.clone(); this.NSGAII = (ArchivingNSGAII) b.NSGAII.clone();
} }
if (b.m_Selection != null) { if (b.selection != null) {
this.m_Selection = (InterfaceSelection) b.m_Selection.clone(); this.selection = (InterfaceSelection) b.selection.clone();
} }
} }
@ -72,8 +67,8 @@ public class MOClusteringSeparation implements InterfaceMigration, java.io.Seria
@Override @Override
public void initMigration(InterfaceOptimizer[] islands) { public void initMigration(InterfaceOptimizer[] islands) {
// pff at a later stage i could initialize a topology here // pff at a later stage i could initialize a topology here
if (this.m_ReuseC) { if (this.reuseC) {
this.m_KMeans.resetC(); this.kMeans.resetC();
} }
} }
@ -131,7 +126,7 @@ public class MOClusteringSeparation implements InterfaceMigration, java.io.Seria
// } // }
// Now lets cluster this stuff // Now lets cluster this stuff
Population[] archives = this.m_NSGAII.getNonDominatedSortedFronts(collector); Population[] archives = this.NSGAII.getNonDominatedSortedFronts(collector);
Population toCluster = new Population(); Population toCluster = new Population();
int currentFront = 0; int currentFront = 0;
toCluster.addPopulation(archives[currentFront]); toCluster.addPopulation(archives[currentFront]);
@ -141,10 +136,10 @@ public class MOClusteringSeparation implements InterfaceMigration, java.io.Seria
} }
// first set the K to the K-Means // first set the K to the K-Means
this.m_KMeans.setK(islands.length); this.kMeans.setK(islands.length);
this.m_KMeans.cluster(toCluster, (Population) null); this.kMeans.cluster(toCluster, (Population) null);
double[][] c = this.m_KMeans.getC(); double[][] c = this.kMeans.getC();
newIPOP = this.m_KMeans.cluster(collector, c); newIPOP = this.kMeans.cluster(collector, c);
if (this.debug) { if (this.debug) {
Plot plot; Plot plot;
@ -178,7 +173,7 @@ public class MOClusteringSeparation implements InterfaceMigration, java.io.Seria
} }
} }
if (this.m_UseConstraints) { if (this.useConstraints) {
// i should set the constraints to the optimizers // i should set the constraints to the optimizers
InterfaceOptimizationProblem prob; InterfaceOptimizationProblem prob;
for (int i = 0; i < islands.length; i++) { for (int i = 0; i < islands.length; i++) {
@ -197,7 +192,7 @@ public class MOClusteringSeparation implements InterfaceMigration, java.io.Seria
myOtherClass[j] = c[index]; myOtherClass[j] = c[index];
index++; index++;
} }
ConstBelongsToDifferentClass b = new ConstBelongsToDifferentClass(myClass, myOtherClass, this.m_KMeans.getUseSearchSpace()); ConstBelongsToDifferentClass b = new ConstBelongsToDifferentClass(myClass, myOtherClass, this.kMeans.getUseSearchSpace());
((AbstractMultiObjectiveOptimizationProblem) prob).areaConst4Parallelization.add(b); ((AbstractMultiObjectiveOptimizationProblem) prob).areaConst4Parallelization.add(b);
// if (this.debug) { // if (this.debug) {
// String out = ""; // String out = "";
@ -211,7 +206,7 @@ public class MOClusteringSeparation implements InterfaceMigration, java.io.Seria
// } // }
// out += "}"; // out += "}";
// } // }
// if (this.m_KMeans.getUsePhenotype()) out += "\n Using phenotype."; // if (this.kMeans.getUsePhenotype()) out += "\n Using phenotype.";
// else out += "\n Using objective space."; // else out += "\n Using objective space.";
// System.out.println(""+out); // System.out.println(""+out);
// } // }
@ -226,7 +221,7 @@ public class MOClusteringSeparation implements InterfaceMigration, java.io.Seria
oldIPOP[i].addPopulation(newIPOP[i]); oldIPOP[i].addPopulation(newIPOP[i]);
// todo remove this for nice pictures // todo remove this for nice pictures
if (!oldIPOP[i].targetSizeReached()) { if (!oldIPOP[i].targetSizeReached()) {
oldIPOP[i].addPopulation(this.m_Selection.selectFrom(memory, oldIPOP[i].getTargetSize() - oldIPOP[i].size())); oldIPOP[i].addPopulation(this.selection.selectFrom(memory, oldIPOP[i].getTargetSize() - oldIPOP[i].size()));
} }
if (this.debug) { if (this.debug) {
System.out.println("Setting " + i + " to population size " + oldIPOP[i].size()); System.out.println("Setting " + i + " to population size " + oldIPOP[i].size());
@ -277,7 +272,7 @@ public class MOClusteringSeparation implements InterfaceMigration, java.io.Seria
// islands[i].init(); // islands[i].init();
// } // }
// //
// cluster.m_KMeans.setUseSearchSpace(true); // cluster.kMeans.setUseSearchSpace(true);
// //
// for (int i = 0; i < 20; i++) { // for (int i = 0; i < 20; i++) {
// for (int j = 0; j < islands.length; j++) { // for (int j = 0; j < islands.length; j++) {
@ -383,11 +378,11 @@ public class MOClusteringSeparation implements InterfaceMigration, java.io.Seria
* @return The clustering algorithm method * @return The clustering algorithm method
*/ */
public ClusteringKMeans getKMeans() { public ClusteringKMeans getKMeans() {
return this.m_KMeans; return this.kMeans;
} }
public void setKMeans(ClusteringKMeans b) { public void setKMeans(ClusteringKMeans b) {
this.m_KMeans = b; this.kMeans = b;
} }
public String kMeansTipText() { public String kMeansTipText() {
@ -402,11 +397,11 @@ public class MOClusteringSeparation implements InterfaceMigration, java.io.Seria
* @return The modus of constraints. * @return The modus of constraints.
*/ */
public boolean getUseConstraints() { public boolean getUseConstraints() {
return this.m_UseConstraints; return this.useConstraints;
} }
public void setUseConstraints(boolean b) { public void setUseConstraints(boolean b) {
this.m_UseConstraints = b; this.useConstraints = b;
} }
public String useConstraintsTipText() { public String useConstraintsTipText() {
@ -419,13 +414,13 @@ public class MOClusteringSeparation implements InterfaceMigration, java.io.Seria
* @return The distance type to use. * @return The distance type to use.
*/ */
public boolean getReuseC() { public boolean getReuseC() {
this.m_ReuseC = this.m_KMeans.getReuseC(); this.reuseC = this.kMeans.getReuseC();
return this.m_ReuseC; return this.reuseC;
} }
public void setReuseC(boolean m) { public void setReuseC(boolean m) {
this.m_ReuseC = m; this.reuseC = m;
this.m_KMeans.setReuseC(this.m_ReuseC); this.kMeans.setReuseC(this.reuseC);
} }
public String reuseCTipText() { public String reuseCTipText() {

View File

@ -26,19 +26,14 @@ import java.io.IOException;
* This method implements the cone separation subdivision * This method implements the cone separation subdivision
* scheme, this method rearanges the populations and may * scheme, this method rearanges the populations and may
* impose area constraints on the subpopulations. * impose area constraints on the subpopulations.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 15.09.2004
* Time: 17:39:26
* To change this template use File | Settings | File Templates.
*/ */
public class MOConeSeparation implements InterfaceMigration, java.io.Serializable { public class MOConeSeparation implements InterfaceMigration, java.io.Serializable {
public boolean debug = false; public boolean debug = false;
private boolean m_UseAllToDetermineR = false; // since i'm only interessted in the pareto-front this should be set to false!! private boolean useAllToDetermineR = false; // since i'm only interessted in the pareto-front this should be set to false!!
private boolean m_UseConstraints = true; private boolean useConstraints = true;
private InterfaceSelection m_Selection = new SelectRandom(); private InterfaceSelection selection = new SelectRandom();
private double[][] m_3DBounds; private double[][] bounds3D;
public MOConeSeparation() { public MOConeSeparation() {
@ -46,10 +41,10 @@ public class MOConeSeparation implements InterfaceMigration, java.io.Serializabl
public MOConeSeparation(MOConeSeparation b) { public MOConeSeparation(MOConeSeparation b) {
this.debug = b.debug; this.debug = b.debug;
this.m_UseConstraints = b.m_UseConstraints; this.useConstraints = b.useConstraints;
this.m_UseAllToDetermineR = b.m_UseAllToDetermineR; this.useAllToDetermineR = b.useAllToDetermineR;
if (b.m_Selection != null) { if (b.selection != null) {
this.m_Selection = (InterfaceSelection) b.m_Selection.clone(); this.selection = (InterfaceSelection) b.selection.clone();
} }
} }
@ -116,7 +111,7 @@ public class MOConeSeparation implements InterfaceMigration, java.io.Serializabl
oldIPOP[i].addPopulation(newIPOP[i]); oldIPOP[i].addPopulation(newIPOP[i]);
// todo remove this for nice pictures // todo remove this for nice pictures
if (!oldIPOP[i].targetSizeReached()) { if (!oldIPOP[i].targetSizeReached()) {
oldIPOP[i].addPopulation(this.m_Selection.selectFrom(memory, oldIPOP[i].getTargetSize() - oldIPOP[i].size())); oldIPOP[i].addPopulation(this.selection.selectFrom(memory, oldIPOP[i].getTargetSize() - oldIPOP[i].size()));
} }
if (this.debug) { if (this.debug) {
System.out.println("Setting island " + i + " to population size " + oldIPOP[i].size()); System.out.println("Setting island " + i + " to population size " + oldIPOP[i].size());
@ -170,7 +165,7 @@ public class MOConeSeparation implements InterfaceMigration, java.io.Serializabl
Population archive = collector.getArchive(); Population archive = collector.getArchive();
Population ref; Population ref;
if (this.m_UseAllToDetermineR) { if (this.useAllToDetermineR) {
ref = collector; ref = collector;
} else { } else {
ref = archive; ref = archive;
@ -264,7 +259,7 @@ public class MOConeSeparation implements InterfaceMigration, java.io.Serializabl
} }
} }
if (this.m_UseConstraints) { if (this.useConstraints) {
// i should set the constraints to the optimizers // i should set the constraints to the optimizers
InterfaceOptimizationProblem prob; InterfaceOptimizationProblem prob;
for (int i = 0; i < islands.length; i++) { for (int i = 0; i < islands.length; i++) {
@ -308,7 +303,7 @@ public class MOConeSeparation implements InterfaceMigration, java.io.Serializabl
Population archive = collector.getArchive(); Population archive = collector.getArchive();
Population ref; Population ref;
if (this.m_UseAllToDetermineR) { if (this.useAllToDetermineR) {
ref = collector; ref = collector;
} else { } else {
ref = archive; ref = archive;
@ -342,12 +337,12 @@ public class MOConeSeparation implements InterfaceMigration, java.io.Serializabl
firstVec = this.getNormalized(firstVec); firstVec = this.getNormalized(firstVec);
double[] normDist = this.getNormalized(distopian); double[] normDist = this.getNormalized(distopian);
this.m_3DBounds = new double[normals.length + 2][3]; this.bounds3D = new double[normals.length + 2][3];
this.m_3DBounds[0] = distopian; this.bounds3D[0] = distopian;
for (int i = 0; i < normals.length; i++) { for (int i = 0; i < normals.length; i++) {
normals[i] = this.rotVector(firstVec, normDist, Math.toRadians(i * angIncr)); normals[i] = this.rotVector(firstVec, normDist, Math.toRadians(i * angIncr));
this.m_3DBounds[i + 1] = normals[i]; this.bounds3D[i + 1] = normals[i];
} }
// now i got the bounding planes // now i got the bounding planes
@ -375,7 +370,7 @@ public class MOConeSeparation implements InterfaceMigration, java.io.Serializabl
// j--; // j--;
} }
} }
if (this.m_UseConstraints) { if (this.useConstraints) {
prob = (InterfaceOptimizationProblem) islands[i].getProblem(); prob = (InterfaceOptimizationProblem) islands[i].getProblem();
if (prob instanceof AbstractMultiObjectiveOptimizationProblem) { if (prob instanceof AbstractMultiObjectiveOptimizationProblem) {
// set the boundaries to perform the constrained // set the boundaries to perform the constrained
@ -416,7 +411,7 @@ public class MOConeSeparation implements InterfaceMigration, java.io.Serializabl
// //
// int last = newIPOP.length-1; // int last = newIPOP.length-1;
// newIPOP[last].addPopulation(collector); // newIPOP[last].addPopulation(collector);
// if (this.m_UseConstraints) { // if (this.useConstraints) {
// prob = (InterfaceOptimizationProblem) islands[last].getProblem(); // prob = (InterfaceOptimizationProblem) islands[last].getProblem();
// if (prob instanceof AbstractMultiObjectiveOptimizationProblem) { // if (prob instanceof AbstractMultiObjectiveOptimizationProblem) {
// // set the boundaries to perform the constrained // // set the boundaries to perform the constrained
@ -689,7 +684,7 @@ public class MOConeSeparation implements InterfaceMigration, java.io.Serializabl
// } catch (FileNotFoundException e) { // } catch (FileNotFoundException e) {
// System.out.println("Could not open output file! Filename: "); // System.out.println("Could not open output file! Filename: ");
// } // }
// double[][] surf = cone.m_3DBounds; // double[][] surf = cone.bounds3D;
// cone.writeToFile(outfile, "0\t 0\t 0"); // cone.writeToFile(outfile, "0\t 0\t 0");
// cone.writeToFile(outfile, ""+surf[0][0]+"\t"+surf[0][1]+"\t"+surf[0][2]); // cone.writeToFile(outfile, ""+surf[0][0]+"\t"+surf[0][1]+"\t"+surf[0][2]);
// cone.writeToFile(outfile, ""+surf[0][0]+"\t"+surf[0][1]+"\t"+surf[0][2]); // cone.writeToFile(outfile, ""+surf[0][0]+"\t"+surf[0][1]+"\t"+surf[0][2]);
@ -778,11 +773,11 @@ public class MOConeSeparation implements InterfaceMigration, java.io.Serializabl
* @return The modus to calculate the reference point. * @return The modus to calculate the reference point.
*/ */
public boolean getUseAllToDetermineR() { public boolean getUseAllToDetermineR() {
return this.m_UseAllToDetermineR; return this.useAllToDetermineR;
} }
public void setUseAllToDetermineR(boolean b) { public void setUseAllToDetermineR(boolean b) {
this.m_UseAllToDetermineR = b; this.useAllToDetermineR = b;
} }
public String useAllToDetermineRTipText() { public String useAllToDetermineRTipText() {
@ -797,11 +792,11 @@ public class MOConeSeparation implements InterfaceMigration, java.io.Serializabl
* @return The modus of constraints. * @return The modus of constraints.
*/ */
public boolean getUseConstraints() { public boolean getUseConstraints() {
return this.m_UseConstraints; return this.useConstraints;
} }
public void setUseConstraints(boolean b) { public void setUseConstraints(boolean b) {
this.m_UseConstraints = b; this.useConstraints = b;
} }
public String useConstraintsTipText() { public String useConstraintsTipText() {

View File

@ -24,35 +24,30 @@ import java.io.IOException;
* This method implements the clustering based subdivision * This method implements the clustering based subdivision
* scheme suited to identify uni- and multi-modal search spaces * scheme suited to identify uni- and multi-modal search spaces
* under development and currently defunct. * under development and currently defunct.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 24.06.2005
* Time: 10:38:26
* To change this template use File | Settings | File Templates.
*/ */
public class MOXMeansSeparation implements InterfaceMigration, java.io.Serializable { public class MOXMeansSeparation implements InterfaceMigration, java.io.Serializable {
public boolean m_Debug = false; public boolean debug = false;
private ClusteringXMeans m_XMeans = new ClusteringXMeans(); private ClusteringXMeans xMeans = new ClusteringXMeans();
private ArchivingNSGAII m_NSGAII = new ArchivingNSGAII(); private ArchivingNSGAII NSGAII = new ArchivingNSGAII();
private boolean m_UseConstraints = true; private boolean useConstraints = true;
private InterfaceSelection m_Selection = new SelectRandom(); private InterfaceSelection selection = new SelectRandom();
public MOXMeansSeparation() { public MOXMeansSeparation() {
} }
public MOXMeansSeparation(MOXMeansSeparation b) { public MOXMeansSeparation(MOXMeansSeparation b) {
this.m_Debug = b.m_Debug; this.debug = b.debug;
this.m_UseConstraints = b.m_UseConstraints; this.useConstraints = b.useConstraints;
if (b.m_XMeans != null) { if (b.xMeans != null) {
this.m_XMeans = (ClusteringXMeans) b.m_XMeans.clone(); this.xMeans = (ClusteringXMeans) b.xMeans.clone();
} }
if (b.m_NSGAII != null) { if (b.NSGAII != null) {
this.m_NSGAII = (ArchivingNSGAII) b.m_NSGAII.clone(); this.NSGAII = (ArchivingNSGAII) b.NSGAII.clone();
} }
if (b.m_Selection != null) { if (b.selection != null) {
this.m_Selection = (InterfaceSelection) b.m_Selection.clone(); this.selection = (InterfaceSelection) b.selection.clone();
} }
} }
@ -94,7 +89,7 @@ public class MOXMeansSeparation implements InterfaceMigration, java.io.Serializa
// collect the populations // collect the populations
for (int i = 0; i < islands.length; i++) { for (int i = 0; i < islands.length; i++) {
oldIPOP[i] = islands[i].getPopulation(); oldIPOP[i] = islands[i].getPopulation();
if (this.m_Debug) { if (this.debug) {
System.out.println("Got population from " + i + " of size " + oldIPOP[i].size()); System.out.println("Got population from " + i + " of size " + oldIPOP[i].size());
} }
collector.addPopulation((Population) oldIPOP[i].clone()); collector.addPopulation((Population) oldIPOP[i].clone());
@ -128,7 +123,7 @@ public class MOXMeansSeparation implements InterfaceMigration, java.io.Serializa
// } // }
// Now lets cluster this stuff // Now lets cluster this stuff
Population[] archives = this.m_NSGAII.getNonDominatedSortedFronts(collector); Population[] archives = this.NSGAII.getNonDominatedSortedFronts(collector);
Population toCluster = new Population(); Population toCluster = new Population();
int currentFront = 0; int currentFront = 0;
toCluster.addPopulation(archives[currentFront]); toCluster.addPopulation(archives[currentFront]);
@ -138,16 +133,16 @@ public class MOXMeansSeparation implements InterfaceMigration, java.io.Serializa
} }
// first set the K to the K-Means // first set the K to the K-Means
this.m_XMeans.setMaxK(islands.length); this.xMeans.setMaxK(islands.length);
this.m_XMeans.cluster(toCluster, (Population) null); this.xMeans.cluster(toCluster, (Population) null);
double[][] c = this.m_XMeans.getC(); double[][] c = this.xMeans.getC();
//@todo Hier muss ich mal denk machen und weniger click... //@todo Hier muss ich mal denk machen und weniger click...
newIPOP = this.m_XMeans.cluster(collector, c); newIPOP = this.xMeans.cluster(collector, c);
for (int i = 0; i < islands.length; i++) { for (int i = 0; i < islands.length; i++) {
islands[i].getPopulation().clear(); islands[i].getPopulation().clear();
islands[i].getPopulation().setTargetSize(0); islands[i].getPopulation().setTargetSize(0);
} }
if (this.m_Debug) { if (this.debug) {
Plot plot; Plot plot;
double[] tmpD = new double[2]; double[] tmpD = new double[2];
tmpD[0] = 0; tmpD[0] = 0;
@ -179,7 +174,7 @@ public class MOXMeansSeparation implements InterfaceMigration, java.io.Serializa
} }
} }
if ((this.m_UseConstraints) && (c.length > 1)) { if ((this.useConstraints) && (c.length > 1)) {
// i should set the constraints to the optimizers // i should set the constraints to the optimizers
InterfaceOptimizationProblem prob; InterfaceOptimizationProblem prob;
@ -199,7 +194,7 @@ public class MOXMeansSeparation implements InterfaceMigration, java.io.Serializa
myOtherClass[j] = c[index]; myOtherClass[j] = c[index];
index++; index++;
} }
ConstBelongsToDifferentClass b = new ConstBelongsToDifferentClass(myClass, myOtherClass, this.m_XMeans.getUseSearchSpace()); ConstBelongsToDifferentClass b = new ConstBelongsToDifferentClass(myClass, myOtherClass, this.xMeans.getUseSearchSpace());
((AbstractMultiObjectiveOptimizationProblem) prob).areaConst4Parallelization.add(b); ((AbstractMultiObjectiveOptimizationProblem) prob).areaConst4Parallelization.add(b);
// if (this.debug) { // if (this.debug) {
// String out = ""; // String out = "";
@ -213,7 +208,7 @@ public class MOXMeansSeparation implements InterfaceMigration, java.io.Serializa
// } // }
// out += "}"; // out += "}";
// } // }
// if (this.m_XMeans.getUsePhenotype()) out += "\n Using phenotype."; // if (this.xMeans.getUsePhenotype()) out += "\n Using phenotype.";
// else out += "\n Using objective space."; // else out += "\n Using objective space.";
// System.out.println(""+out); // System.out.println(""+out);
// } // }
@ -229,9 +224,9 @@ public class MOXMeansSeparation implements InterfaceMigration, java.io.Serializa
oldIPOP[i].addPopulation(newIPOP[i]); oldIPOP[i].addPopulation(newIPOP[i]);
// todo remove this for nice pictures // todo remove this for nice pictures
if (!oldIPOP[i].targetSizeReached()) { if (!oldIPOP[i].targetSizeReached()) {
oldIPOP[i].addPopulation(this.m_Selection.selectFrom(memory, oldIPOP[i].getFreeSlots())); oldIPOP[i].addPopulation(this.selection.selectFrom(memory, oldIPOP[i].getFreeSlots()));
} }
if (this.m_Debug) { if (this.debug) {
System.out.println("Setting " + i + " to population size " + oldIPOP[i].size()); System.out.println("Setting " + i + " to population size " + oldIPOP[i].size());
} }
islands[i].setPopulation(oldIPOP[i]); islands[i].setPopulation(oldIPOP[i]);
@ -281,7 +276,7 @@ public class MOXMeansSeparation implements InterfaceMigration, java.io.Serializa
// islands[i].init(); // islands[i].init();
// } // }
// //
// cluster.m_XMeans.setUseSearchSpace(true); // cluster.xMeans.setUseSearchSpace(true);
// //
// for (int i = 0; i < 20; i++) { // for (int i = 0; i < 20; i++) {
// for (int j = 0; j < islands.length; j++) { // for (int j = 0; j < islands.length; j++) {
@ -387,11 +382,11 @@ public class MOXMeansSeparation implements InterfaceMigration, java.io.Serializa
* @return The clustering algorithm method * @return The clustering algorithm method
*/ */
public ClusteringXMeans getXMeans() { public ClusteringXMeans getXMeans() {
return this.m_XMeans; return this.xMeans;
} }
public void setXMeans(ClusteringXMeans b) { public void setXMeans(ClusteringXMeans b) {
this.m_XMeans = b; this.xMeans = b;
} }
public String xMeansTipText() { public String xMeansTipText() {
@ -406,11 +401,11 @@ public class MOXMeansSeparation implements InterfaceMigration, java.io.Serializa
* @return The modus of constraints. * @return The modus of constraints.
*/ */
public boolean getUseConstraints() { public boolean getUseConstraints() {
return this.m_UseConstraints; return this.useConstraints;
} }
public void setUseConstraints(boolean b) { public void setUseConstraints(boolean b) {
this.m_UseConstraints = b; this.useConstraints = b;
} }
public String useConstraintsTipText() { public String useConstraintsTipText() {

View File

@ -8,16 +8,11 @@ import eva2.optimization.strategies.InterfaceOptimizer;
/** /**
* Simple single-objective migration scheme. * Simple single-objective migration scheme.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 15.09.2004
* Time: 14:52:02
* To change this template use File | Settings | File Templates.
*/ */
public class SOBestMigration implements InterfaceMigration, java.io.Serializable { public class SOBestMigration implements InterfaceMigration, java.io.Serializable {
private InterfaceSelection m_Selection = new SelectBestIndividuals(); private InterfaceSelection selection = new SelectBestIndividuals();
private int m_N = 5; private int n = 5;
/** /**
* The ever present clone method * The ever present clone method
@ -67,9 +62,9 @@ public class SOBestMigration implements InterfaceMigration, java.io.Serializable
comSet = oldIPOP; comSet = oldIPOP;
// todo: Here i could implement multiple selection and replacement schemes // todo: Here i could implement multiple selection and replacement schemes
newIPOP[i].removeNIndividuals(comSet.length * this.m_N); newIPOP[i].removeNIndividuals(comSet.length * this.n);
for (int j = 0; j < comSet.length; j++) { for (int j = 0; j < comSet.length; j++) {
selected = this.m_Selection.selectFrom(comSet[j], this.m_N); selected = this.selection.selectFrom(comSet[j], this.n);
newIPOP[i].add(((AbstractEAIndividual) selected.get(0)).clone()); newIPOP[i].add(((AbstractEAIndividual) selected.get(0)).clone());
} }
} }
@ -106,11 +101,11 @@ public class SOBestMigration implements InterfaceMigration, java.io.Serializable
* @return The selection method * @return The selection method
*/ */
public InterfaceSelection getSelection() { public InterfaceSelection getSelection() {
return this.m_Selection; return this.selection;
} }
public void setSelection(InterfaceSelection b) { public void setSelection(InterfaceSelection b) {
this.m_Selection = b; this.selection = b;
} }
public String selectionTipText() { public String selectionTipText() {
@ -124,14 +119,14 @@ public class SOBestMigration implements InterfaceMigration, java.io.Serializable
* @return The current number of individuals to migrate * @return The current number of individuals to migrate
*/ */
public int getN() { public int getN() {
return this.m_N; return this.n;
} }
public void setN(int b) { public void setN(int b) {
if (b < 1) { if (b < 1) {
b = 1; b = 1;
} }
this.m_N = b; this.n = b;
} }
public String nTipText() { public String nTipText() {

View File

@ -4,11 +4,6 @@ import eva2.optimization.strategies.InterfaceOptimizer;
/** /**
* Implements no migration as reference. * Implements no migration as reference.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 16.09.2004
* Time: 16:12:05
* To change this template use File | Settings | File Templates.
*/ */
public class SOMONoMigration implements InterfaceMigration, java.io.Serializable { public class SOMONoMigration implements InterfaceMigration, java.io.Serializable {

View File

@ -4,25 +4,21 @@ import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 11.03.2004
* Time: 18:59:14
* To change this template use File | Settings | File Templates.
*/ */
public class MOSODynamicallyWeightedFitness implements InterfaceMOSOConverter, java.io.Serializable { public class MOSODynamicallyWeightedFitness implements InterfaceMOSOConverter, java.io.Serializable {
private double m_F = 50; private double f = 50;
private int m_CurrentGeneration = 0; private int currentGeneration = 0;
private int m_OutputDimension = 2; private int outputDimension = 2;
public MOSODynamicallyWeightedFitness() { public MOSODynamicallyWeightedFitness() {
} }
public MOSODynamicallyWeightedFitness(MOSODynamicallyWeightedFitness b) { public MOSODynamicallyWeightedFitness(MOSODynamicallyWeightedFitness b) {
this.m_CurrentGeneration = b.m_CurrentGeneration; this.currentGeneration = b.currentGeneration;
this.m_F = b.m_F; this.f = b.f;
this.m_OutputDimension = b.m_OutputDimension; this.outputDimension = b.outputDimension;
} }
@Override @Override
@ -41,7 +37,7 @@ public class MOSODynamicallyWeightedFitness implements InterfaceMOSOConverter, j
*/ */
@Override @Override
public void convertMultiObjective2SingleObjective(Population pop) { public void convertMultiObjective2SingleObjective(Population pop) {
this.m_CurrentGeneration = pop.getGeneration(); this.currentGeneration = pop.getGeneration();
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
this.convertSingleIndividual((AbstractEAIndividual) pop.get(i)); this.convertSingleIndividual((AbstractEAIndividual) pop.get(i));
} }
@ -63,7 +59,7 @@ public class MOSODynamicallyWeightedFitness implements InterfaceMOSOConverter, j
weights = new double[tmpFit.length]; weights = new double[tmpFit.length];
// calculate the dynamic weights // calculate the dynamic weights
weights[0] = Math.pow(Math.sin(2 * Math.PI * (double) this.m_CurrentGeneration / this.m_F), 2); weights[0] = Math.pow(Math.sin(2 * Math.PI * (double) this.currentGeneration / this.f), 2);
weights[1] = 1 - weights[0]; weights[1] = 1 - weights[0];
for (int i = 0; (i < 2) && (i < tmpFit.length); i++) { for (int i = 0; (i < 2) && (i < tmpFit.length); i++) {
@ -81,7 +77,7 @@ public class MOSODynamicallyWeightedFitness implements InterfaceMOSOConverter, j
*/ */
@Override @Override
public void setOutputDimension(int dim) { public void setOutputDimension(int dim) {
this.m_OutputDimension = dim; this.outputDimension = dim;
// i think as far as i got not solution for the (n>2) dimensional case // i think as far as i got not solution for the (n>2) dimensional case
// i could simply ignore this.... // i could simply ignore this....
} }
@ -125,11 +121,11 @@ public class MOSODynamicallyWeightedFitness implements InterfaceMOSOConverter, j
* @param f The frequency of change. * @param f The frequency of change.
*/ */
public void setF(double f) { public void setF(double f) {
this.m_F = f; this.f = f;
} }
public double getF() { public double getF() {
return this.m_F; return this.f;
} }
public String fTipText() { public String fTipText() {

View File

@ -13,21 +13,21 @@ import eva2.optimization.population.Population;
*/ */
public class MOSOEpsilonConstraint implements InterfaceMOSOConverter, java.io.Serializable { public class MOSOEpsilonConstraint implements InterfaceMOSOConverter, java.io.Serializable {
private PropertyEpsilonConstraint m_EpsilonConstraint = null; private PropertyEpsilonConstraint epsilonConstraint = null;
public MOSOEpsilonConstraint() { public MOSOEpsilonConstraint() {
this.m_EpsilonConstraint = new PropertyEpsilonConstraint(); this.epsilonConstraint = new PropertyEpsilonConstraint();
this.m_EpsilonConstraint.m_OptimizeObjective = 0; this.epsilonConstraint.optimizeObjective = 0;
double[] tmpD = new double[2]; double[] tmpD = new double[2];
for (int i = 0; i < tmpD.length; i++) { for (int i = 0; i < tmpD.length; i++) {
tmpD[i] = 0.0; tmpD[i] = 0.0;
} }
this.m_EpsilonConstraint.m_TargetValue = tmpD; this.epsilonConstraint.targetValue = tmpD;
} }
public MOSOEpsilonConstraint(MOSOEpsilonConstraint b) { public MOSOEpsilonConstraint(MOSOEpsilonConstraint b) {
if (b.m_EpsilonConstraint != null) { if (b.epsilonConstraint != null) {
this.m_EpsilonConstraint = (PropertyEpsilonConstraint) b.m_EpsilonConstraint.clone(); this.epsilonConstraint = (PropertyEpsilonConstraint) b.epsilonConstraint.clone();
} }
} }
@ -64,10 +64,10 @@ public class MOSOEpsilonConstraint implements InterfaceMOSOConverter, java.io.Se
tmpFit = indy.getFitness(); tmpFit = indy.getFitness();
indy.putData("MOFitness", tmpFit); indy.putData("MOFitness", tmpFit);
resultFit[0] = tmpFit[this.m_EpsilonConstraint.m_OptimizeObjective]; resultFit[0] = tmpFit[this.epsilonConstraint.optimizeObjective];
for (int i = 0; i < this.m_EpsilonConstraint.m_TargetValue.length; i++) { for (int i = 0; i < this.epsilonConstraint.targetValue.length; i++) {
if (i != this.m_EpsilonConstraint.m_OptimizeObjective) { if (i != this.epsilonConstraint.optimizeObjective) {
indy.addConstraintViolation(Math.max(0, tmpFit[i] - this.m_EpsilonConstraint.m_TargetValue[i])); indy.addConstraintViolation(Math.max(0, tmpFit[i] - this.epsilonConstraint.targetValue[i]));
} }
} }
indy.setFitness(resultFit); indy.setFitness(resultFit);
@ -87,14 +87,14 @@ public class MOSOEpsilonConstraint implements InterfaceMOSOConverter, java.io.Se
for (int i = 0; i < newTarget.length; i++) { for (int i = 0; i < newTarget.length; i++) {
newTarget[i] = 0; newTarget[i] = 0;
} }
for (int i = 0; (i < this.m_EpsilonConstraint.m_TargetValue.length) && (i < newTarget.length); i++) { for (int i = 0; (i < this.epsilonConstraint.targetValue.length) && (i < newTarget.length); i++) {
newTarget[i] = this.m_EpsilonConstraint.m_TargetValue[i]; newTarget[i] = this.epsilonConstraint.targetValue[i];
} }
if (this.m_EpsilonConstraint.m_OptimizeObjective >= dim) { if (this.epsilonConstraint.optimizeObjective >= dim) {
this.m_EpsilonConstraint.m_OptimizeObjective = dim - 1; this.epsilonConstraint.optimizeObjective = dim - 1;
} }
this.m_EpsilonConstraint.m_TargetValue = newTarget; this.epsilonConstraint.targetValue = newTarget;
} }
/** /**
@ -137,11 +137,11 @@ public class MOSOEpsilonConstraint implements InterfaceMOSOConverter, java.io.Se
* @param weights The Epsilon Threshhold for the fitness sum. * @param weights The Epsilon Threshhold for the fitness sum.
*/ */
public void setEpsilonThreshhold(PropertyEpsilonConstraint weights) { public void setEpsilonThreshhold(PropertyEpsilonConstraint weights) {
this.m_EpsilonConstraint = weights; this.epsilonConstraint = weights;
} }
public PropertyEpsilonConstraint getEpsilonThreshhold() { public PropertyEpsilonConstraint getEpsilonThreshhold() {
return this.m_EpsilonConstraint; return this.epsilonConstraint;
} }
public String epsilonThreshholdTipText() { public String epsilonThreshholdTipText() {

View File

@ -5,34 +5,30 @@ import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 05.03.2004
* Time: 14:53:47
* To change this template use File | Settings | File Templates.
*/ */
public class MOSOEpsilonThreshold implements InterfaceMOSOConverter, java.io.Serializable { public class MOSOEpsilonThreshold implements InterfaceMOSOConverter, java.io.Serializable {
private PropertyEpsilonThreshold m_EpsilonThreshold = null; private PropertyEpsilonThreshold epsilonThreshold = null;
public MOSOEpsilonThreshold() { public MOSOEpsilonThreshold() {
this.m_EpsilonThreshold = new PropertyEpsilonThreshold(); this.epsilonThreshold = new PropertyEpsilonThreshold();
this.m_EpsilonThreshold.m_OptimizeObjective = 0; this.epsilonThreshold.optimizeObjective = 0;
double[] tmpD = new double[2]; double[] tmpD = new double[2];
for (int i = 0; i < tmpD.length; i++) { for (int i = 0; i < tmpD.length; i++) {
tmpD[i] = 0.0; tmpD[i] = 0.0;
} }
this.m_EpsilonThreshold.m_TargetValue = tmpD; this.epsilonThreshold.targetValue = tmpD;
tmpD = new double[2]; tmpD = new double[2];
for (int i = 0; i < tmpD.length; i++) { for (int i = 0; i < tmpD.length; i++) {
tmpD[i] = 1.0; tmpD[i] = 1.0;
} }
this.m_EpsilonThreshold.m_Punishment = tmpD; this.epsilonThreshold.punishment = tmpD;
} }
public MOSOEpsilonThreshold(MOSOEpsilonThreshold b) { public MOSOEpsilonThreshold(MOSOEpsilonThreshold b) {
if (b.m_EpsilonThreshold != null) { if (b.epsilonThreshold != null) {
this.m_EpsilonThreshold = (PropertyEpsilonThreshold) b.m_EpsilonThreshold.clone(); this.epsilonThreshold = (PropertyEpsilonThreshold) b.epsilonThreshold.clone();
} }
} }
@ -77,16 +73,16 @@ public class MOSOEpsilonThreshold implements InterfaceMOSOConverter, java.io.Ser
System.out.println("Fitness is Infinite"); System.out.println("Fitness is Infinite");
} }
} }
resultFit[0] = tmpFit[this.m_EpsilonThreshold.m_OptimizeObjective]; resultFit[0] = tmpFit[this.epsilonThreshold.optimizeObjective];
// System.out.println("Optimize: " + this.m_EpsilonThreshold.m_OptimizeObjective); // System.out.println("Optimize: " + this.epsilonThreshold.optimizeObjective);
// for (int i = 0; i < tmpFit.length; i++) { // for (int i = 0; i < tmpFit.length; i++) {
// System.out.println("Target: " + this.m_EpsilonThreshold.m_TargetValue[i] + " Punish: " + this.m_EpsilonThreshold.m_Punishment[i]); // System.out.println("Target: " + this.epsilonThreshold.targetValue[i] + " Punish: " + this.epsilonThreshold.punishment[i]);
// } // }
for (int i = 0; i < this.m_EpsilonThreshold.m_Punishment.length; i++) { for (int i = 0; i < this.epsilonThreshold.punishment.length; i++) {
if (i != this.m_EpsilonThreshold.m_OptimizeObjective) { if (i != this.epsilonThreshold.optimizeObjective) {
resultFit[0] += this.m_EpsilonThreshold.m_Punishment[i] * Math.max(0, tmpFit[i] - this.m_EpsilonThreshold.m_TargetValue[i]); resultFit[0] += this.epsilonThreshold.punishment[i] * Math.max(0, tmpFit[i] - this.epsilonThreshold.targetValue[i]);
} }
} }
tmpFit = (double[]) indy.getData("MOFitness"); tmpFit = (double[]) indy.getData("MOFitness");
@ -117,16 +113,16 @@ public class MOSOEpsilonThreshold implements InterfaceMOSOConverter, java.io.Ser
newPunish[i] = 1; newPunish[i] = 1;
newTarget[i] = 0; newTarget[i] = 0;
} }
for (int i = 0; (i < this.m_EpsilonThreshold.m_Punishment.length) && (i < newTarget.length); i++) { for (int i = 0; (i < this.epsilonThreshold.punishment.length) && (i < newTarget.length); i++) {
newPunish[i] = this.m_EpsilonThreshold.m_Punishment[i]; newPunish[i] = this.epsilonThreshold.punishment[i];
newTarget[i] = this.m_EpsilonThreshold.m_TargetValue[i]; newTarget[i] = this.epsilonThreshold.targetValue[i];
} }
if (this.m_EpsilonThreshold.m_OptimizeObjective >= dim) { if (this.epsilonThreshold.optimizeObjective >= dim) {
this.m_EpsilonThreshold.m_OptimizeObjective = dim - 1; this.epsilonThreshold.optimizeObjective = dim - 1;
} }
this.m_EpsilonThreshold.m_Punishment = newPunish; this.epsilonThreshold.punishment = newPunish;
this.m_EpsilonThreshold.m_TargetValue = newTarget; this.epsilonThreshold.targetValue = newTarget;
} }
/** /**
@ -169,11 +165,11 @@ public class MOSOEpsilonThreshold implements InterfaceMOSOConverter, java.io.Ser
* @param weights The Epsilon Threshhold for the fitness sum. * @param weights The Epsilon Threshhold for the fitness sum.
*/ */
public void setEpsilonThreshhold(PropertyEpsilonThreshold weights) { public void setEpsilonThreshhold(PropertyEpsilonThreshold weights) {
this.m_EpsilonThreshold = weights; this.epsilonThreshold = weights;
} }
public PropertyEpsilonThreshold getEpsilonThreshhold() { public PropertyEpsilonThreshold getEpsilonThreshhold() {
return this.m_EpsilonThreshold; return this.epsilonThreshold;
} }
public String epsilonThreshholdTipText() { public String epsilonThreshholdTipText() {

View File

@ -5,27 +5,23 @@ import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 05.03.2004
* Time: 15:49:16
* To change this template use File | Settings | File Templates.
*/ */
public class MOSOGoalProgramming implements InterfaceMOSOConverter, java.io.Serializable { public class MOSOGoalProgramming implements InterfaceMOSOConverter, java.io.Serializable {
private PropertyDoubleArray m_Goals = null; private PropertyDoubleArray goals = null;
public MOSOGoalProgramming() { public MOSOGoalProgramming() {
double[] tmpD = new double[2]; double[] tmpD = new double[2];
for (int i = 0; i < tmpD.length; i++) { for (int i = 0; i < tmpD.length; i++) {
tmpD[i] = 0.0; tmpD[i] = 0.0;
} }
this.m_Goals = new PropertyDoubleArray(tmpD); this.goals = new PropertyDoubleArray(tmpD);
} }
public MOSOGoalProgramming(MOSOGoalProgramming b) { public MOSOGoalProgramming(MOSOGoalProgramming b) {
if (b.m_Goals != null) { if (b.goals != null) {
this.m_Goals = (PropertyDoubleArray) b.m_Goals; this.goals = (PropertyDoubleArray) b.goals;
} }
} }
@ -63,8 +59,8 @@ public class MOSOGoalProgramming implements InterfaceMOSOConverter, java.io.Seri
tmpFit = indy.getFitness(); tmpFit = indy.getFitness();
indy.putData("MOFitness", tmpFit); indy.putData("MOFitness", tmpFit);
resultFit[0] = 0; resultFit[0] = 0;
for (int i = 0; (i < this.m_Goals.getNumRows()) && (i < tmpFit.length); i++) { for (int i = 0; (i < this.goals.getNumRows()) && (i < tmpFit.length); i++) {
resultFit[0] += tmpFit[i] - this.m_Goals.getValue(i, 0); resultFit[0] += tmpFit[i] - this.goals.getValue(i, 0);
} }
indy.setFitness(resultFit); indy.setFitness(resultFit);
} }
@ -83,11 +79,11 @@ public class MOSOGoalProgramming implements InterfaceMOSOConverter, java.io.Seri
for (int i = 0; i < newWeights.length; i++) { for (int i = 0; i < newWeights.length; i++) {
newWeights[i] = 0.0; newWeights[i] = 0.0;
} }
for (int i = 0; (i < this.m_Goals.getNumRows()) && (i < newWeights.length); i++) { for (int i = 0; (i < this.goals.getNumRows()) && (i < newWeights.length); i++) {
newWeights[i] = this.m_Goals.getValue(i, 0); newWeights[i] = this.goals.getValue(i, 0);
} }
this.m_Goals.setDoubleArray(newWeights); this.goals.setDoubleArray(newWeights);
} }
/** /**
@ -130,11 +126,11 @@ public class MOSOGoalProgramming implements InterfaceMOSOConverter, java.io.Seri
* @param goals The weights for the fitness sum. * @param goals The weights for the fitness sum.
*/ */
public void setGoals(PropertyDoubleArray goals) { public void setGoals(PropertyDoubleArray goals) {
this.m_Goals = goals; this.goals = goals;
} }
public PropertyDoubleArray getGoals() { public PropertyDoubleArray getGoals() {
return this.m_Goals; return this.goals;
} }
public String goalsTipText() { public String goalsTipText() {

View File

@ -5,29 +5,25 @@ import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 05.03.2004
* Time: 15:49:16
* To change this template use File | Settings | File Templates.
*/ */
public class MOSOLpMetric implements InterfaceMOSOConverter, java.io.Serializable { public class MOSOLpMetric implements InterfaceMOSOConverter, java.io.Serializable {
private PropertyDoubleArray m_Reference = null; private PropertyDoubleArray reference = null;
private int m_P = 2; private int p = 2;
public MOSOLpMetric() { public MOSOLpMetric() {
double[] tmpD = new double[2]; double[] tmpD = new double[2];
for (int i = 0; i < tmpD.length; i++) { for (int i = 0; i < tmpD.length; i++) {
tmpD[i] = 0.0; tmpD[i] = 0.0;
} }
this.m_Reference = new PropertyDoubleArray(tmpD); this.reference = new PropertyDoubleArray(tmpD);
} }
public MOSOLpMetric(MOSOLpMetric b) { public MOSOLpMetric(MOSOLpMetric b) {
this.m_P = b.m_P; this.p = b.p;
if (b.m_Reference != null) { if (b.reference != null) {
this.m_Reference = (PropertyDoubleArray) b.m_Reference.clone(); this.reference = (PropertyDoubleArray) b.reference.clone();
} }
} }
@ -64,18 +60,18 @@ public class MOSOLpMetric implements InterfaceMOSOConverter, java.io.Serializabl
tmpFit = indy.getFitness(); tmpFit = indy.getFitness();
indy.putData("MOFitness", tmpFit); indy.putData("MOFitness", tmpFit);
if (m_P >= 1) { if (p >= 1) {
// standard Lp Metric // standard Lp Metric
resultFit[0] = 0; resultFit[0] = 0;
for (int i = 0; (i < this.m_Reference.getNumRows()) && (i < tmpFit.length); i++) { for (int i = 0; (i < this.reference.getNumRows()) && (i < tmpFit.length); i++) {
resultFit[0] += Math.pow(Math.abs(tmpFit[i] - this.m_Reference.getValue(i, 0)), this.m_P); resultFit[0] += Math.pow(Math.abs(tmpFit[i] - this.reference.getValue(i, 0)), this.p);
} }
resultFit[0] = Math.pow(resultFit[0], 1 / ((double) this.m_P)); resultFit[0] = Math.pow(resultFit[0], 1 / ((double) this.p));
} else { } else {
// Tchebycheff metric // Tchebycheff metric
resultFit[0] = Double.NEGATIVE_INFINITY; resultFit[0] = Double.NEGATIVE_INFINITY;
for (int i = 0; (i < this.m_Reference.getNumRows()) && (i < tmpFit.length); i++) { for (int i = 0; (i < this.reference.getNumRows()) && (i < tmpFit.length); i++) {
resultFit[0] += Math.max(Math.abs(tmpFit[i] - this.m_Reference.getValue(i, 0)), resultFit[0]); resultFit[0] += Math.max(Math.abs(tmpFit[i] - this.reference.getValue(i, 0)), resultFit[0]);
} }
} }
@ -96,11 +92,11 @@ public class MOSOLpMetric implements InterfaceMOSOConverter, java.io.Serializabl
for (int i = 0; i < newWeights.length; i++) { for (int i = 0; i < newWeights.length; i++) {
newWeights[i] = 0.0; newWeights[i] = 0.0;
} }
for (int i = 0; (i < this.m_Reference.getNumRows()) && (i < newWeights.length); i++) { for (int i = 0; (i < this.reference.getNumRows()) && (i < newWeights.length); i++) {
newWeights[i] = this.m_Reference.getValue(i, 0); newWeights[i] = this.reference.getValue(i, 0);
} }
this.m_Reference.setDoubleArray(newWeights); this.reference.setDoubleArray(newWeights);
} }
/** /**
@ -111,11 +107,11 @@ public class MOSOLpMetric implements InterfaceMOSOConverter, java.io.Serializabl
@Override @Override
public String getStringRepresentation() { public String getStringRepresentation() {
String result = "Lp Metric\n"; String result = "Lp Metric\n";
result += " P = " + this.m_P + "\n"; result += " P = " + this.p + "\n";
result += " Ref.Fitness = ("; result += " Ref.Fitness = (";
for (int i = 0; i < m_Reference.getNumRows(); i++) { for (int i = 0; i < reference.getNumRows(); i++) {
result += m_Reference.getValue(i, 0); result += reference.getValue(i, 0);
if (i < (m_Reference.getNumRows() - 1)) { if (i < (reference.getNumRows() - 1)) {
result += "; "; result += "; ";
} }
} }
@ -152,11 +148,11 @@ public class MOSOLpMetric implements InterfaceMOSOConverter, java.io.Serializabl
* @param reference The reference vector. * @param reference The reference vector.
*/ */
public void setReference(PropertyDoubleArray reference) { public void setReference(PropertyDoubleArray reference) {
this.m_Reference = reference; this.reference = reference;
} }
public PropertyDoubleArray getReference() { public PropertyDoubleArray getReference() {
return this.m_Reference; return this.reference;
} }
public String referenceTipText() { public String referenceTipText() {
@ -169,11 +165,11 @@ public class MOSOLpMetric implements InterfaceMOSOConverter, java.io.Serializabl
* @param p * @param p
*/ */
public void setP(int p) { public void setP(int p) {
this.m_P = Math.max(1, p); this.p = Math.max(1, p);
} }
public int getP() { public int getP() {
return this.m_P; return this.p;
} }
public String pTipText() { public String pTipText() {

View File

@ -1,27 +1,21 @@
package eva2.optimization.operator.moso; package eva2.optimization.operator.moso;
import eva2.gui.plot.Plot;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 06.08.2004
* Time: 15:30:52
* To change this template use File | Settings | File Templates.
*/ */
public class MOSOMaxiMin implements InterfaceMOSOConverter, java.io.Serializable { public class MOSOMaxiMin implements InterfaceMOSOConverter, java.io.Serializable {
private int m_OutputDimension = 2; private int outputDimension = 2;
transient protected Plot m_Plot = null;
public MOSOMaxiMin() { public MOSOMaxiMin() {
} }
public MOSOMaxiMin(MOSOMaxiMin b) { public MOSOMaxiMin(MOSOMaxiMin b) {
this.m_OutputDimension = b.m_OutputDimension; this.outputDimension = b.outputDimension;
} }
@Override @Override
@ -64,8 +58,6 @@ public class MOSOMaxiMin implements InterfaceMOSOConverter, java.io.Serializable
result[i] = Math.max(result[i], tmpResult); result[i] = Math.max(result[i], tmpResult);
} }
} }
// result[i] is now negative and big for good individuals
//result[i] = Math.exp(this.m_ScalingFactor * result[i]);
// write the result to the individuals // write the result to the individuals
tmpIndy = (AbstractEAIndividual) pop.get(i); tmpIndy = (AbstractEAIndividual) pop.get(i);
tmpFit = tmpIndy.getFitness(); tmpFit = tmpIndy.getFitness();
@ -74,32 +66,7 @@ public class MOSOMaxiMin implements InterfaceMOSOConverter, java.io.Serializable
resultFit[0] = result[i]; resultFit[0] = result[i];
tmpIndy.setFitness(resultFit); tmpIndy.setFitness(resultFit);
} }
////////////////////////////////////////////////////////////////////////////////////
// if (false) {
// this.plot = new eva2.gui.plot.Plot("Debug MaxiMin", "Y1", "Y2");
// this.plot.setUnconnectedPoint(0, 0, 11);
// this.plot.setUnconnectedPoint(1.2, 2.0, 11);
// double[][] trueFitness, moFitness;
// GraphPointSet mySet = new GraphPointSet(10, this.plot.getFunctionArea());
// DPoint myPoint;
// double tmp1, tmp2;
// Chart2DDPointIconText tmp;
// trueFitness = new double[pop.size()][];
// moFitness = new double[pop.size()][];
// for (int i = 0; i < pop.size(); i++) {
// trueFitness[i] = ((AbstractEAIndividual)pop.get(i)).getFitness();
// moFitness[i] = (double[])((AbstractEAIndividual)pop.get(i)).getData("MOFitness");
// }
// mySet.setConnectedMode(false);
// for (int i = 0; i < trueFitness.length; i++) {
// myPoint = new DPoint(moFitness[i][0], moFitness[i][1]);
// tmp1 = Math.round(trueFitness[i][0] *100)/100.0;
// tmp = new Chart2DDPointIconText(""+tmp1);
// tmp.setIcon(new Chart2DDPointIconCircle());
// myPoint.setIcon(tmp);
// mySet.addDPoint(myPoint);
// }
// }
} }
/** /**
@ -128,7 +95,7 @@ public class MOSOMaxiMin implements InterfaceMOSOConverter, java.io.Serializable
*/ */
@Override @Override
public void setOutputDimension(int dim) { public void setOutputDimension(int dim) {
this.m_OutputDimension = dim; this.outputDimension = dim;
} }
/** /**
@ -141,10 +108,6 @@ public class MOSOMaxiMin implements InterfaceMOSOConverter, java.io.Serializable
return this.getName() + "\n"; return this.getName() + "\n";
} }
/**********************************************************************************************************************
* These are for GUI
*/
/** /**
* This method allows the CommonJavaObjectEditorPanel to read the * This method allows the CommonJavaObjectEditorPanel to read the
* name to the current object. * name to the current object.
@ -164,17 +127,4 @@ public class MOSOMaxiMin implements InterfaceMOSOConverter, java.io.Serializable
public static String globalInfo() { public static String globalInfo() {
return "This method calculate the maximum of minimum distance over all criterias over all individuals."; return "This method calculate the maximum of minimum distance over all criterias over all individuals.";
} }
// /** This method allows you to choose the ScalingFactor for
// * the exp() function
// * @param goals The scaling factor.
// */
// public void setScalingFactor(double goals) {
// this.m_ScalingFactor = goals;
// }
// public double getScalingFactor() {
// return this.m_ScalingFactor;
// }
// public String scalingFactorTipText() {
// return "Choose the scaling factor for the exp() function.";
// }
} }

View File

@ -5,21 +5,17 @@ import eva2.optimization.population.Population;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 30.03.2004
* Time: 17:56:39
* To change this template use File | Settings | File Templates.
*/ */
public class MOSORandomChoice implements InterfaceMOSOConverter, java.io.Serializable { public class MOSORandomChoice implements InterfaceMOSOConverter, java.io.Serializable {
private int m_OutputDimension = 2; private int outputDimension = 2;
public MOSORandomChoice() { public MOSORandomChoice() {
} }
public MOSORandomChoice(MOSORandomChoice b) { public MOSORandomChoice(MOSORandomChoice b) {
this.m_OutputDimension = b.m_OutputDimension; this.outputDimension = b.outputDimension;
} }
@Override @Override
@ -68,7 +64,7 @@ public class MOSORandomChoice implements InterfaceMOSOConverter, java.io.Seriali
*/ */
@Override @Override
public void setOutputDimension(int dim) { public void setOutputDimension(int dim) {
this.m_OutputDimension = dim; this.outputDimension = dim;
// i think as far as i got not solution for the (n>2) dimensional case // i think as far as i got not solution for the (n>2) dimensional case
// i could simply ignore this.... // i could simply ignore this....
} }

View File

@ -5,22 +5,18 @@ import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 11.03.2004
* Time: 13:44:55
* To change this template use File | Settings | File Templates.
*/ */
public class MOSOUtilityFunction implements InterfaceMOSOConverter, java.io.Serializable { public class MOSOUtilityFunction implements InterfaceMOSOConverter, java.io.Serializable {
private int m_OutputDimension = 2; private int outputDimension = 2;
public MOSOUtilityFunction() { public MOSOUtilityFunction() {
} }
public MOSOUtilityFunction(MOSOUtilityFunction b) { public MOSOUtilityFunction(MOSOUtilityFunction b) {
System.out.println("Warning no source!"); System.out.println("Warning no source!");
this.m_OutputDimension = b.m_OutputDimension; this.outputDimension = b.outputDimension;
} }
@Override @Override
@ -79,7 +75,7 @@ public class MOSOUtilityFunction implements InterfaceMOSOConverter, java.io.Seri
*/ */
@Override @Override
public void setOutputDimension(int dim) { public void setOutputDimension(int dim) {
this.m_OutputDimension = dim; this.outputDimension = dim;
} }
/** /**
@ -92,9 +88,6 @@ public class MOSOUtilityFunction implements InterfaceMOSOConverter, java.io.Seri
return this.getName() + "\n"; return this.getName() + "\n";
} }
/**********************************************************************************************************************
* These are for GUI
*/
/** /**
* This method allows the CommonJavaObjectEditorPanel to read the * This method allows the CommonJavaObjectEditorPanel to read the
* name to the current object. * name to the current object.
@ -115,17 +108,4 @@ public class MOSOUtilityFunction implements InterfaceMOSOConverter, java.io.Seri
return "This method allows you to progamm an individual utility function."; return "This method allows you to progamm an individual utility function.";
} }
// /** This method allows you to edit the source for the MOSOUtilityFunction
// * and therefore alter the utility function itself!
// * @param newSource The new source code for the ultility function
// */
// public void setSource (Source newSource) {
// m_Source = newSource;
// }
// public Source getSource() {
// return m_Source;
// }
// public String sourceTipText() {
// return "Edit the source code for the utility function, but limit editing to the convertSingleIndividual() method.";
// }
} }

View File

@ -5,24 +5,20 @@ import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 05.03.2004
* Time: 10:48:39
* To change this template use File | Settings | File Templates.
*/ */
public class MOSOWeightedFitness implements InterfaceMOSOConverter, java.io.Serializable { public class MOSOWeightedFitness implements InterfaceMOSOConverter, java.io.Serializable {
private PropertyDoubleArray m_Weights = null; private PropertyDoubleArray weights = null;
public MOSOWeightedFitness() { public MOSOWeightedFitness() {
double[][] tmpD = new double[2][1]; double[][] tmpD = new double[2][1];
for (int i = 0; i < tmpD.length; i++) { for (int i = 0; i < tmpD.length; i++) {
tmpD[i][0] = 1.0; tmpD[i][0] = 1.0;
} }
this.m_Weights = new PropertyDoubleArray(tmpD); this.weights = new PropertyDoubleArray(tmpD);
for (int i = 0; i < this.m_Weights.getNumRows(); i++) { for (int i = 0; i < this.weights.getNumRows(); i++) {
this.m_Weights.normalizeColumns(); this.weights.normalizeColumns();
} }
} }
@ -32,8 +28,8 @@ public class MOSOWeightedFitness implements InterfaceMOSOConverter, java.io.Seri
} }
public MOSOWeightedFitness(MOSOWeightedFitness b) { public MOSOWeightedFitness(MOSOWeightedFitness b) {
if (b.m_Weights != null) { if (b.weights != null) {
this.m_Weights = (PropertyDoubleArray) b.m_Weights; this.weights = (PropertyDoubleArray) b.weights;
} }
} }
@ -70,17 +66,17 @@ public class MOSOWeightedFitness implements InterfaceMOSOConverter, java.io.Seri
tmpFit = indy.getFitness(); tmpFit = indy.getFitness();
indy.putData("MOFitness", tmpFit); indy.putData("MOFitness", tmpFit);
for (int i = 0; (i < this.m_Weights.getNumRows()) && (i < tmpFit.length); i++) { for (int i = 0; (i < this.weights.getNumRows()) && (i < tmpFit.length); i++) {
resultFit[0] += tmpFit[i] * this.m_Weights.getValue(i, 0); resultFit[0] += tmpFit[i] * this.weights.getValue(i, 0);
} }
indy.setFitness(resultFit); indy.setFitness(resultFit);
} }
private void checkingWeights() { private void checkingWeights() {
String s = "Using Weights: {"; String s = "Using Weights: {";
for (int i = 0; i < this.m_Weights.getNumRows(); i++) { for (int i = 0; i < this.weights.getNumRows(); i++) {
s += this.m_Weights.getValue(i, 0); s += this.weights.getValue(i, 0);
if (i < this.m_Weights.getNumRows() - 1) { if (i < this.weights.getNumRows() - 1) {
s += "; "; s += "; ";
} }
} }
@ -101,11 +97,11 @@ public class MOSOWeightedFitness implements InterfaceMOSOConverter, java.io.Seri
for (int i = 0; i < newWeights.length; i++) { for (int i = 0; i < newWeights.length; i++) {
newWeights[i] = 1; newWeights[i] = 1;
} }
for (int i = 0; (i < this.m_Weights.getNumRows()) && (i < newWeights.length); i++) { for (int i = 0; (i < this.weights.getNumRows()) && (i < newWeights.length); i++) {
newWeights[i] = this.m_Weights.getValue(i, 0); newWeights[i] = this.weights.getValue(i, 0);
} }
this.m_Weights.setDoubleArray(newWeights); this.weights.setDoubleArray(newWeights);
} }
/** /**
@ -149,11 +145,11 @@ public class MOSOWeightedFitness implements InterfaceMOSOConverter, java.io.Seri
* @param weights The weights for the fitness sum. * @param weights The weights for the fitness sum.
*/ */
public void setWeights(PropertyDoubleArray weights) { public void setWeights(PropertyDoubleArray weights) {
this.m_Weights = weights; this.weights = weights;
} }
public PropertyDoubleArray getWeights() { public PropertyDoubleArray getWeights() {
return this.m_Weights; return this.weights;
} }
public String weightsTipText() { public String weightsTipText() {

View File

@ -5,34 +5,30 @@ import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 15.07.2005
* Time: 10:12:28
* To change this template use File | Settings | File Templates.
*/ */
public class MOSOWeightedLPTchebycheff implements InterfaceMOSOConverter, java.io.Serializable { public class MOSOWeightedLPTchebycheff implements InterfaceMOSOConverter, java.io.Serializable {
private PropertyWeightedLPTchebycheff m_WLPT = null; private PropertyWeightedLPTchebycheff weightedLPTchebycheff = null;
public MOSOWeightedLPTchebycheff() { public MOSOWeightedLPTchebycheff() {
this.m_WLPT = new PropertyWeightedLPTchebycheff(); this.weightedLPTchebycheff = new PropertyWeightedLPTchebycheff();
this.m_WLPT.m_P = 0; this.weightedLPTchebycheff.p = 0;
double[] tmpD = new double[2]; double[] tmpD = new double[2];
for (int i = 0; i < tmpD.length; i++) { for (int i = 0; i < tmpD.length; i++) {
tmpD[i] = 0.0; tmpD[i] = 0.0;
} }
this.m_WLPT.idealValue = tmpD; this.weightedLPTchebycheff.idealValue = tmpD;
tmpD = new double[2]; tmpD = new double[2];
for (int i = 0; i < tmpD.length; i++) { for (int i = 0; i < tmpD.length; i++) {
tmpD[i] = 1.0; tmpD[i] = 1.0;
} }
this.m_WLPT.weights = tmpD; this.weightedLPTchebycheff.weights = tmpD;
} }
public MOSOWeightedLPTchebycheff(MOSOWeightedLPTchebycheff b) { public MOSOWeightedLPTchebycheff(MOSOWeightedLPTchebycheff b) {
if (b.m_WLPT != null) { if (b.weightedLPTchebycheff != null) {
this.m_WLPT = (PropertyWeightedLPTchebycheff) b.m_WLPT.clone(); this.weightedLPTchebycheff = (PropertyWeightedLPTchebycheff) b.weightedLPTchebycheff.clone();
} }
} }
@ -71,14 +67,14 @@ public class MOSOWeightedLPTchebycheff implements InterfaceMOSOConverter, java.i
indy.putData("MOFitness", tmpFit); indy.putData("MOFitness", tmpFit);
resultFit[0] = 0; resultFit[0] = 0;
for (int i = 0; i < tmpFit.length; i++) { for (int i = 0; i < tmpFit.length; i++) {
if (this.m_WLPT.m_P == 0) { if (this.weightedLPTchebycheff.p == 0) {
resultFit[0] = Math.max(resultFit[0], this.m_WLPT.weights[i] * Math.abs(tmpFit[i] - this.m_WLPT.idealValue[i])); resultFit[0] = Math.max(resultFit[0], this.weightedLPTchebycheff.weights[i] * Math.abs(tmpFit[i] - this.weightedLPTchebycheff.idealValue[i]));
} else { } else {
resultFit[0] += this.m_WLPT.weights[i] * Math.pow(tmpFit[i] - this.m_WLPT.idealValue[i], this.m_WLPT.m_P); resultFit[0] += this.weightedLPTchebycheff.weights[i] * Math.pow(tmpFit[i] - this.weightedLPTchebycheff.idealValue[i], this.weightedLPTchebycheff.p);
} }
} }
if (this.m_WLPT.m_P > 0) { if (this.weightedLPTchebycheff.p > 0) {
resultFit[0] = Math.pow(resultFit[0], 1 / ((double) this.m_WLPT.m_P)); resultFit[0] = Math.pow(resultFit[0], 1 / ((double) this.weightedLPTchebycheff.p));
} }
indy.setFitness(resultFit); indy.setFitness(resultFit);
} }
@ -99,12 +95,12 @@ public class MOSOWeightedLPTchebycheff implements InterfaceMOSOConverter, java.i
newTarget[i] = 0; newTarget[i] = 0;
newWeights[i] = 1.0; newWeights[i] = 1.0;
} }
for (int i = 0; (i < this.m_WLPT.idealValue.length) && (i < newTarget.length); i++) { for (int i = 0; (i < this.weightedLPTchebycheff.idealValue.length) && (i < newTarget.length); i++) {
newTarget[i] = this.m_WLPT.idealValue[i]; newTarget[i] = this.weightedLPTchebycheff.idealValue[i];
newWeights[i] = this.m_WLPT.weights[i]; newWeights[i] = this.weightedLPTchebycheff.weights[i];
} }
this.m_WLPT.idealValue = newTarget; this.weightedLPTchebycheff.idealValue = newTarget;
this.m_WLPT.weights = newWeights; this.weightedLPTchebycheff.weights = newWeights;
} }
/** /**
@ -115,9 +111,9 @@ public class MOSOWeightedLPTchebycheff implements InterfaceMOSOConverter, java.i
@Override @Override
public String getStringRepresentation() { public String getStringRepresentation() {
String result = "Lp Metric\n"; String result = "Lp Metric\n";
result += " P = " + this.m_WLPT.m_P + "\n"; result += " P = " + this.weightedLPTchebycheff.p + "\n";
result += " Ref.Fitness = ("; result += " Ref.Fitness = (";
double[] p = this.m_WLPT.idealValue; double[] p = this.weightedLPTchebycheff.idealValue;
for (int i = 0; i < p.length; i++) { for (int i = 0; i < p.length; i++) {
result += p[i]; result += p[i];
if (i < (p.length - 1)) { if (i < (p.length - 1)) {
@ -126,7 +122,7 @@ public class MOSOWeightedLPTchebycheff implements InterfaceMOSOConverter, java.i
} }
result += ")\n"; result += ")\n";
result += " Weights = ("; result += " Weights = (";
p = this.m_WLPT.weights; p = this.weightedLPTchebycheff.weights;
for (int i = 0; i < p.length; i++) { for (int i = 0; i < p.length; i++) {
result += p[i]; result += p[i];
if (i < (p.length - 1)) { if (i < (p.length - 1)) {
@ -167,11 +163,11 @@ public class MOSOWeightedLPTchebycheff implements InterfaceMOSOConverter, java.i
* @param weights The Epsilon Threshhold for the fitness sum. * @param weights The Epsilon Threshhold for the fitness sum.
*/ */
public void setIdealPWeights(PropertyWeightedLPTchebycheff weights) { public void setIdealPWeights(PropertyWeightedLPTchebycheff weights) {
this.m_WLPT = weights; this.weightedLPTchebycheff = weights;
} }
public PropertyWeightedLPTchebycheff getIdealPWeights() { public PropertyWeightedLPTchebycheff getIdealPWeights() {
return this.m_WLPT; return this.weightedLPTchebycheff;
} }
public String idealPWeightsTipText() { public String idealPWeightsTipText() {

View File

@ -249,41 +249,6 @@ public class MutateESCovarianceMatrixAdaption implements InterfaceMutation, java
} }
protected void evaluateNewObjectX(double[] x, double[][] range) { 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
// Z[i] = RNG.gaussianDouble(1.0);
// }
// c = (c.plus(c.transpose()).times(0.5)); // MAKE C SYMMETRIC
// EigenvalueDecomposition helper = new EigenvalueDecomposition(c);
// B = helper.getV();
// double [] Eigenvalues = helper.getRealEigenvalues();
// double[] tmpD = new double[x.length];
// boolean constraint = false;
// while (constraint == false) {
//
// 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)*Z[j];
// }
// tmpD[i]=x[i]+m_SigmaScalar*Bz[i]; // here is the new value
// }
// constraint = true;
// if (this.checkConstraints) {
// for (int i=0;i<N;i++) {
// if ((tmpD[i]<range[i][0]) || (tmpD[i]>range[i][1])) constraint = false;
// }
// if (!constraint) this.m_SigmaScalar = this.m_SigmaScalar/2;
// if (this.m_SigmaScalar < 1.e-20) {
// this.m_SigmaScalar = 1.e-10;
// return;
// }
// }
// }
// for (int i = 0; i < N; i++) x[i] = tmpD[i];
// conservation of mutation direction:
//double[] oldZ = (double[]) this.Z.clone();
double[] oldX = (double[]) x.clone(); double[] oldX = (double[]) x.clone();
for (int i = 0; i < this.D; i++) { for (int i = 0; i < this.D; i++) {

View File

@ -14,17 +14,17 @@ import eva2.tools.math.RNG;
* To change this template use File | Settings | File Templates. * To change this template use File | Settings | File Templates.
*/ */
public class MutateESFixedStepSize implements InterfaceMutation, java.io.Serializable { public class MutateESFixedStepSize implements InterfaceMutation, java.io.Serializable {
protected double m_Sigma = 0.005; protected double sigma = 0.005;
public MutateESFixedStepSize() { public MutateESFixedStepSize() {
} }
public MutateESFixedStepSize(MutateESFixedStepSize mutator) { public MutateESFixedStepSize(MutateESFixedStepSize mutator) {
this.m_Sigma = mutator.m_Sigma; this.sigma = mutator.sigma;
} }
public MutateESFixedStepSize(double sigma) { public MutateESFixedStepSize(double sigma) {
m_Sigma = sigma; this.sigma = sigma;
} }
/** /**
@ -47,7 +47,7 @@ public class MutateESFixedStepSize implements InterfaceMutation, java.io.Seriali
public boolean equals(Object mutator) { public boolean equals(Object mutator) {
if (mutator instanceof MutateESFixedStepSize) { if (mutator instanceof MutateESFixedStepSize) {
MutateESFixedStepSize mut = (MutateESFixedStepSize) mutator; MutateESFixedStepSize mut = (MutateESFixedStepSize) mutator;
if (this.m_Sigma != mut.m_Sigma) { if (this.sigma != mut.sigma) {
return false; return false;
} }
return true; return true;
@ -80,7 +80,7 @@ public class MutateESFixedStepSize implements InterfaceMutation, java.io.Seriali
double[] x = ((InterfaceESIndividual) individual).getDGenotype(); double[] x = ((InterfaceESIndividual) individual).getDGenotype();
double[][] range = ((InterfaceESIndividual) individual).getDoubleRange(); double[][] range = ((InterfaceESIndividual) individual).getDoubleRange();
for (int i = 0; i < x.length; i++) { for (int i = 0; i < x.length; i++) {
x[i] += ((range[i][1] - range[i][0]) / 2) * RNG.gaussianDouble(this.m_Sigma); x[i] += ((range[i][1] - range[i][0]) / 2) * RNG.gaussianDouble(this.sigma);
if (range[i][0] > x[i]) { if (range[i][0] > x[i]) {
x[i] = range[i][0]; x[i] = range[i][0];
} }
@ -148,11 +148,11 @@ public class MutateESFixedStepSize implements InterfaceMutation, java.io.Seriali
if (d < 0) { if (d < 0) {
d = 0; d = 0;
} }
this.m_Sigma = d; this.sigma = d;
} }
public double getSigma() { public double getSigma() {
return this.m_Sigma; return this.sigma;
} }
public String sigmaTipText() { public String sigmaTipText() {

View File

@ -13,17 +13,13 @@ import java.util.ArrayList;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 02.04.2003
* Time: 16:29:47
* To change this template use Options | File Templates.
*/ */
public class MutateESGlobal implements InterfaceMutation, java.io.Serializable, InterfaceAdditionalPopulationInformer { public class MutateESGlobal implements InterfaceMutation, java.io.Serializable, InterfaceAdditionalPopulationInformer {
protected double m_MutationStepSize = 0.2; protected double mutationStepSize = 0.2;
protected double m_Tau1 = 0.15; protected double tau1 = 0.15;
protected double m_LowerLimitStepSize = 0.0000005; protected double lowerLimitStepSize = 0.0000005;
protected MutateESCrossoverTypeEnum m_CrossoverType = MutateESCrossoverTypeEnum.none; protected MutateESCrossoverTypeEnum crossoverType = MutateESCrossoverTypeEnum.none;
public MutateESGlobal() { public MutateESGlobal() {
} }
@ -48,10 +44,10 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
} }
public MutateESGlobal(MutateESGlobal mutator) { public MutateESGlobal(MutateESGlobal mutator) {
this.m_MutationStepSize = mutator.m_MutationStepSize; this.mutationStepSize = mutator.mutationStepSize;
this.m_Tau1 = mutator.m_Tau1; this.tau1 = mutator.tau1;
this.m_LowerLimitStepSize = mutator.m_LowerLimitStepSize; this.lowerLimitStepSize = mutator.lowerLimitStepSize;
this.m_CrossoverType = mutator.m_CrossoverType; this.crossoverType = mutator.crossoverType;
} }
/** /**
@ -74,13 +70,13 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
public boolean equals(Object mutator) { public boolean equals(Object mutator) {
if (mutator instanceof MutateESGlobal) { if (mutator instanceof MutateESGlobal) {
MutateESGlobal mut = (MutateESGlobal) mutator; MutateESGlobal mut = (MutateESGlobal) mutator;
if (this.m_MutationStepSize != mut.m_MutationStepSize) { if (this.mutationStepSize != mut.mutationStepSize) {
return false; return false;
} }
if (this.m_Tau1 != mut.m_Tau1) { if (this.tau1 != mut.tau1) {
return false; return false;
} }
if (this.m_LowerLimitStepSize != mut.m_LowerLimitStepSize) { if (this.lowerLimitStepSize != mut.lowerLimitStepSize) {
return false; return false;
} }
return true; return true;
@ -112,12 +108,12 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
if (individual instanceof InterfaceESIndividual) { if (individual instanceof InterfaceESIndividual) {
double[] x = ((InterfaceESIndividual) individual).getDGenotype(); double[] x = ((InterfaceESIndividual) individual).getDGenotype();
double[][] range = ((InterfaceESIndividual) individual).getDoubleRange(); double[][] range = ((InterfaceESIndividual) individual).getDoubleRange();
this.m_MutationStepSize *= Math.exp(this.m_Tau1 * RNG.gaussianDouble(1)); this.mutationStepSize *= Math.exp(this.tau1 * RNG.gaussianDouble(1));
if (this.m_MutationStepSize < this.m_LowerLimitStepSize) { if (this.mutationStepSize < this.lowerLimitStepSize) {
this.m_MutationStepSize = this.m_LowerLimitStepSize; this.mutationStepSize = this.lowerLimitStepSize;
} }
for (int i = 0; i < x.length; i++) { for (int i = 0; i < x.length; i++) {
x[i] += ((range[i][1] - range[i][0]) / 2) * RNG.gaussianDouble(this.m_MutationStepSize); x[i] += ((range[i][1] - range[i][0]) / 2) * RNG.gaussianDouble(this.mutationStepSize);
if (range[i][0] > x[i]) { if (range[i][0] > x[i]) {
x[i] = range[i][0]; x[i] = range[i][0];
} }
@ -140,14 +136,14 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
*/ */
@Override @Override
public void crossoverOnStrategyParameters(AbstractEAIndividual indy1, Population partners) { public void crossoverOnStrategyParameters(AbstractEAIndividual indy1, Population partners) {
if (m_CrossoverType != MutateESCrossoverTypeEnum.none) { if (crossoverType != MutateESCrossoverTypeEnum.none) {
ArrayList<Double> tmpList = new ArrayList<Double>(); ArrayList<Double> tmpList = new ArrayList<Double>();
if (indy1.getMutationOperator() instanceof MutateESGlobal) { if (indy1.getMutationOperator() instanceof MutateESGlobal) {
tmpList.add(new Double(((MutateESGlobal) indy1.getMutationOperator()).m_MutationStepSize)); tmpList.add(new Double(((MutateESGlobal) indy1.getMutationOperator()).mutationStepSize));
} }
for (int i = 0; i < partners.size(); i++) { for (int i = 0; i < partners.size(); i++) {
if (((AbstractEAIndividual) partners.get(i)).getMutationOperator() instanceof MutateESGlobal) { if (((AbstractEAIndividual) partners.get(i)).getMutationOperator() instanceof MutateESGlobal) {
tmpList.add(new Double(((MutateESGlobal) ((AbstractEAIndividual) partners.get(i)).getMutationOperator()).m_MutationStepSize)); tmpList.add(new Double(((MutateESGlobal) ((AbstractEAIndividual) partners.get(i)).getMutationOperator()).mutationStepSize));
} }
} }
double[] list = new double[tmpList.size()]; double[] list = new double[tmpList.size()];
@ -158,16 +154,16 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
return; return;
} }
switch (this.m_CrossoverType) { switch (this.crossoverType) {
case intermediate: case intermediate:
this.m_MutationStepSize = 0; this.mutationStepSize = 0;
for (int i = 0; i < list.length; i++) { for (int i = 0; i < list.length; i++) {
this.m_MutationStepSize += list[i]; this.mutationStepSize += list[i];
} }
this.m_MutationStepSize /= (double) list.length; this.mutationStepSize /= (double) list.length;
break; break;
case discrete: case discrete:
this.m_MutationStepSize = list[RNG.randomInt(0, list.length - 1)]; this.mutationStepSize = list[RNG.randomInt(0, list.length - 1)];
break; break;
case none: // do nothing case none: // do nothing
break; break;
@ -215,13 +211,13 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
*/ */
public void setMutationStepSize(double d) { public void setMutationStepSize(double d) {
if (d < 0) { if (d < 0) {
d = this.m_LowerLimitStepSize; d = this.lowerLimitStepSize;
} }
this.m_MutationStepSize = d; this.mutationStepSize = d;
} }
public double getMutationStepSize() { public double getMutationStepSize() {
return this.m_MutationStepSize; return this.mutationStepSize;
} }
public String mutationStepSizeTipText() { public String mutationStepSizeTipText() {
@ -237,11 +233,11 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
if (d < 0) { if (d < 0) {
d = 0; d = 0;
} }
this.m_LowerLimitStepSize = d; this.lowerLimitStepSize = d;
} }
public double getLowerLimitStepSize() { public double getLowerLimitStepSize() {
return this.m_LowerLimitStepSize; return this.lowerLimitStepSize;
} }
public String lowerLimitStepSizeTipText() { public String lowerLimitStepSizeTipText() {
@ -257,11 +253,11 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
if (d < 0) { if (d < 0) {
d = 0; d = 0;
} }
this.m_Tau1 = d; this.tau1 = d;
} }
public double getTau1() { public double getTau1() {
return this.m_Tau1; return this.tau1;
} }
public String tau1TipText() { public String tau1TipText() {
@ -274,11 +270,11 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
* @param d The mutation operator. * @param d The mutation operator.
*/ */
public void setCrossoverType(MutateESCrossoverTypeEnum d) { public void setCrossoverType(MutateESCrossoverTypeEnum d) {
this.m_CrossoverType = d; this.crossoverType = d;
} }
public MutateESCrossoverTypeEnum getCrossoverType() { public MutateESCrossoverTypeEnum getCrossoverType() {
return this.m_CrossoverType; return this.crossoverType;
} }
public String crossoverTypeTipText() { public String crossoverTypeTipText() {
@ -309,6 +305,6 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
*/ */
@Override @Override
public Object[] getAdditionalDataValue(PopulationInterface pop) { public Object[] getAdditionalDataValue(PopulationInterface pop) {
return new Object[]{m_MutationStepSize}; return new Object[]{mutationStepSize};
} }
} }

View File

@ -14,42 +14,38 @@ import eva2.tools.math.RNG;
import java.util.ArrayList; import java.util.ArrayList;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 02.04.2003
* Time: 17:58:30
* To change this template use Options | File Templates.
*/ */
public class MutateESLocal implements InterfaceMutation, InterfaceAdditionalPopulationInformer, java.io.Serializable { public class MutateESLocal implements InterfaceMutation, InterfaceAdditionalPopulationInformer, java.io.Serializable {
protected double m_MutationStepSize = 0.2; protected double mutationStepSize = 0.2;
protected double m_Tau1 = 0.15; protected double tau1 = 0.15;
protected double m_LowerLimitStepSize = 0.0000005; protected double lowerLimitStepSize = 0.0000005;
private double[] m_Sigmas; private double[] sigmas;
protected double m_Tau2 = 0.15; protected double tau2 = 0.15;
protected SelectedTag m_CrossoverType; protected SelectedTag crossoverType;
public MutateESLocal() { public MutateESLocal() {
this.m_Sigmas = null; this.sigmas = null;
Tag[] tag = new Tag[3]; Tag[] tag = new Tag[3];
tag[0] = new Tag(0, "None"); tag[0] = new Tag(0, "None");
tag[1] = new Tag(1, "Intermediate"); tag[1] = new Tag(1, "Intermediate");
tag[2] = new Tag(2, "Discrete"); tag[2] = new Tag(2, "Discrete");
this.m_CrossoverType = new SelectedTag(0, tag); this.crossoverType = new SelectedTag(0, tag);
} }
public MutateESLocal(MutateESLocal mutator) { public MutateESLocal(MutateESLocal mutator) {
if (mutator.m_Sigmas != null) { if (mutator.sigmas != null) {
this.m_Sigmas = new double[mutator.m_Sigmas.length]; this.sigmas = new double[mutator.sigmas.length];
for (int i = 0; i < this.m_Sigmas.length; i++) { for (int i = 0; i < this.sigmas.length; i++) {
this.m_Sigmas[i] = mutator.m_Sigmas[i]; this.sigmas[i] = mutator.sigmas[i];
} }
} }
this.m_MutationStepSize = mutator.m_MutationStepSize; this.mutationStepSize = mutator.mutationStepSize;
this.m_Tau1 = mutator.m_Tau1; this.tau1 = mutator.tau1;
this.m_Tau2 = mutator.m_Tau2; this.tau2 = mutator.tau2;
this.m_LowerLimitStepSize = mutator.m_LowerLimitStepSize; this.lowerLimitStepSize = mutator.lowerLimitStepSize;
this.m_CrossoverType = (SelectedTag) mutator.m_CrossoverType.clone(); this.crossoverType = (SelectedTag) mutator.crossoverType.clone();
} }
/** /**
@ -75,18 +71,18 @@ public class MutateESLocal implements InterfaceMutation, InterfaceAdditionalPopu
} }
if (mutator instanceof MutateESLocal) { if (mutator instanceof MutateESLocal) {
MutateESLocal mut = (MutateESLocal) mutator; MutateESLocal mut = (MutateESLocal) mutator;
if (this.m_Tau1 != mut.m_Tau1) { if (this.tau1 != mut.tau1) {
return false; return false;
} }
if (this.m_Tau2 != mut.m_Tau2) { if (this.tau2 != mut.tau2) {
return false; return false;
} }
if (this.m_LowerLimitStepSize != mut.m_LowerLimitStepSize) { if (this.lowerLimitStepSize != mut.lowerLimitStepSize) {
return false; return false;
} }
if (this.m_Sigmas != null) { if (this.sigmas != null) {
for (int i = 0; i < this.m_Sigmas.length; i++) { for (int i = 0; i < this.sigmas.length; i++) {
if (this.m_Sigmas[i] != mut.m_Sigmas[i]) { if (this.sigmas[i] != mut.sigmas[i]) {
return false; return false;
} }
} }
@ -109,9 +105,9 @@ public class MutateESLocal implements InterfaceMutation, InterfaceAdditionalPopu
public void init(AbstractEAIndividual individual, InterfaceOptimizationProblem opt) { public void init(AbstractEAIndividual individual, InterfaceOptimizationProblem opt) {
if (individual instanceof InterfaceESIndividual) { if (individual instanceof InterfaceESIndividual) {
// init the Sigmas // init the Sigmas
this.m_Sigmas = new double[((InterfaceESIndividual) individual).getDGenotype().length]; this.sigmas = new double[((InterfaceESIndividual) individual).getDGenotype().length];
for (int i = 0; i < this.m_Sigmas.length; i++) { for (int i = 0; i < this.sigmas.length; i++) {
this.m_Sigmas[i] = this.m_MutationStepSize; this.sigmas[i] = this.mutationStepSize;
} }
} }
} }
@ -132,11 +128,11 @@ public class MutateESLocal implements InterfaceMutation, InterfaceAdditionalPopu
double tmpR = RNG.gaussianDouble(1); double tmpR = RNG.gaussianDouble(1);
for (int i = 0; i < x.length; i++) { for (int i = 0; i < x.length; i++) {
this.m_Sigmas[i] *= Math.exp(this.m_Tau1 * tmpR + this.m_Tau2 * RNG.gaussianDouble(1)); this.sigmas[i] *= Math.exp(this.tau1 * tmpR + this.tau2 * RNG.gaussianDouble(1));
if (this.m_Sigmas[i] < this.m_LowerLimitStepSize) { if (this.sigmas[i] < this.lowerLimitStepSize) {
this.m_Sigmas[i] = this.m_LowerLimitStepSize; this.sigmas[i] = this.lowerLimitStepSize;
} }
x[i] += ((range[i][1] - range[i][0]) / 2) * RNG.gaussianDouble(this.m_Sigmas[i]); x[i] += ((range[i][1] - range[i][0]) / 2) * RNG.gaussianDouble(this.sigmas[i]);
if (range[i][0] > x[i]) { if (range[i][0] > x[i]) {
x[i] = range[i][0]; x[i] = range[i][0];
} }
@ -161,13 +157,13 @@ public class MutateESLocal implements InterfaceMutation, InterfaceAdditionalPopu
ArrayList tmpListA = new ArrayList(); ArrayList tmpListA = new ArrayList();
ArrayList tmpListB = new ArrayList(); ArrayList tmpListB = new ArrayList();
if (indy1.getMutationOperator() instanceof MutateESLocal) { if (indy1.getMutationOperator() instanceof MutateESLocal) {
tmpListA.add(new Double(((MutateESLocal) indy1.getMutationOperator()).m_MutationStepSize)); tmpListA.add(new Double(((MutateESLocal) indy1.getMutationOperator()).mutationStepSize));
tmpListB.add(((MutateESLocal) indy1.getMutationOperator()).m_Sigmas); tmpListB.add(((MutateESLocal) indy1.getMutationOperator()).sigmas);
} }
for (int i = 0; i < partners.size(); i++) { for (int i = 0; i < partners.size(); i++) {
if (((AbstractEAIndividual) partners.get(i)).getMutationOperator() instanceof MutateESLocal) { if (((AbstractEAIndividual) partners.get(i)).getMutationOperator() instanceof MutateESLocal) {
tmpListA.add(new Double(((MutateESLocal) ((AbstractEAIndividual) partners.get(i)).getMutationOperator()).m_MutationStepSize)); tmpListA.add(new Double(((MutateESLocal) ((AbstractEAIndividual) partners.get(i)).getMutationOperator()).mutationStepSize));
tmpListB.add(((MutateESLocal) ((AbstractEAIndividual) partners.get(i)).getMutationOperator()).m_Sigmas); tmpListB.add(((MutateESLocal) ((AbstractEAIndividual) partners.get(i)).getMutationOperator()).sigmas);
} }
} }
double[] listA = new double[tmpListA.size()]; double[] listA = new double[tmpListA.size()];
@ -179,30 +175,30 @@ public class MutateESLocal implements InterfaceMutation, InterfaceAdditionalPopu
if (listA.length <= 1) { if (listA.length <= 1) {
return; return;
} }
switch (this.m_CrossoverType.getSelectedTag().getID()) { switch (this.crossoverType.getSelectedTag().getID()) {
case 1: { case 1: {
this.m_MutationStepSize = 0; this.mutationStepSize = 0;
for (int i = 0; i < this.m_Sigmas.length; i++) { for (int i = 0; i < this.sigmas.length; i++) {
this.m_Sigmas[i] = 0; this.sigmas[i] = 0;
} }
for (int i = 0; i < listA.length; i++) { for (int i = 0; i < listA.length; i++) {
this.m_MutationStepSize += listA[i]; this.mutationStepSize += listA[i];
for (int j = 0; j < this.m_Sigmas.length; j++) { for (int j = 0; j < this.sigmas.length; j++) {
this.m_Sigmas[j] += listB[i][j]; this.sigmas[j] += listB[i][j];
} }
} }
this.m_MutationStepSize /= (double) listA.length; this.mutationStepSize /= (double) listA.length;
for (int i = 0; i < this.m_Sigmas.length; i++) { for (int i = 0; i < this.sigmas.length; i++) {
this.m_Sigmas[i] /= (double) listA.length; this.sigmas[i] /= (double) listA.length;
} }
break; break;
} }
case 2: { case 2: {
int rn = RNG.randomInt(0, listA.length - 1); int rn = RNG.randomInt(0, listA.length - 1);
this.m_MutationStepSize = listA[rn]; this.mutationStepSize = listA[rn];
for (int i = 0; i < this.m_Sigmas.length; i++) { for (int i = 0; i < this.sigmas.length; i++) {
rn = RNG.randomInt(0, listA.length - 1); rn = RNG.randomInt(0, listA.length - 1);
this.m_Sigmas[i] = listB[rn][i]; this.sigmas[i] = listB[rn][i];
} }
break; break;
} }
@ -252,13 +248,13 @@ public class MutateESLocal implements InterfaceMutation, InterfaceAdditionalPopu
*/ */
public void setMutationStepSize(double d) { public void setMutationStepSize(double d) {
if (d < 0) { if (d < 0) {
d = this.m_LowerLimitStepSize; d = this.lowerLimitStepSize;
} }
this.m_MutationStepSize = d; this.mutationStepSize = d;
} }
public double getMutationStepSize() { public double getMutationStepSize() {
return this.m_MutationStepSize; return this.mutationStepSize;
} }
public String mutationStepSizeTipText() { public String mutationStepSizeTipText() {
@ -274,11 +270,11 @@ public class MutateESLocal implements InterfaceMutation, InterfaceAdditionalPopu
if (d < 0) { if (d < 0) {
d = 0; d = 0;
} }
this.m_LowerLimitStepSize = d; this.lowerLimitStepSize = d;
} }
public double getLowerLimitStepSize() { public double getLowerLimitStepSize() {
return this.m_LowerLimitStepSize; return this.lowerLimitStepSize;
} }
public String lowerLimitStepSizeTipText() { public String lowerLimitStepSizeTipText() {
@ -294,11 +290,11 @@ public class MutateESLocal implements InterfaceMutation, InterfaceAdditionalPopu
if (d < 0) { if (d < 0) {
d = 0; d = 0;
} }
this.m_Tau1 = d; this.tau1 = d;
} }
public double getTau1() { public double getTau1() {
return this.m_Tau1; return this.tau1;
} }
public String tau1TipText() { public String tau1TipText() {
@ -314,11 +310,11 @@ public class MutateESLocal implements InterfaceMutation, InterfaceAdditionalPopu
if (d < 0) { if (d < 0) {
d = 0; d = 0;
} }
this.m_Tau2 = d; this.tau2 = d;
} }
public double getTau2() { public double getTau2() {
return this.m_Tau2; return this.tau2;
} }
public String tau2TipText() { public String tau2TipText() {
@ -331,11 +327,11 @@ public class MutateESLocal implements InterfaceMutation, InterfaceAdditionalPopu
* @param d The mutation operator. * @param d The mutation operator.
*/ */
public void setCrossoverType(SelectedTag d) { public void setCrossoverType(SelectedTag d) {
this.m_CrossoverType = d; this.crossoverType = d;
} }
public SelectedTag getCrossoverType() { public SelectedTag getCrossoverType() {
return this.m_CrossoverType; return this.crossoverType;
} }
public String crossoverTypeTipText() { public String crossoverTypeTipText() {
@ -366,6 +362,6 @@ public class MutateESLocal implements InterfaceMutation, InterfaceAdditionalPopu
*/ */
@Override @Override
public Object[] getAdditionalDataValue(PopulationInterface pop) { public Object[] getAdditionalDataValue(PopulationInterface pop) {
return new Object[]{m_Sigmas}; return new Object[]{sigmas};
} }
} }

View File

@ -8,26 +8,22 @@ import eva2.tools.math.Mathematics;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 26.03.2004
* Time: 11:18:36
* To change this template use File | Settings | File Templates.
*/ */
public class MutateESMainVectorAdaption implements InterfaceMutation, java.io.Serializable { public class MutateESMainVectorAdaption implements InterfaceMutation, java.io.Serializable {
private boolean m_CheckConstraints = true; private boolean checkConstraints = true;
static public final String Name = "MVA"; static public final String Name = "MVA";
private int N; private int N;
private double[] m_Z; private double[] Z;
private double m_SigmaScalar = 1.0; private double sigmaScalar = 1.0;
private double m_InitSigmaScalar = 1.0; private double initSigmaScalar = 1.0;
private double m_c; private double c;
private double m_cov; private double cov;
private double m_Beta; private double beta;
private double[] s_N; private double[] sN;
private double[] s_d_N; private double[] dN;
private double[] m_main_v; private double[] mainV;
private double xi_dach; private double xi_dach;
private double Z1; private double Z1;
private double w_v = 3.0; private double w_v = 3.0;
@ -38,25 +34,25 @@ public class MutateESMainVectorAdaption implements InterfaceMutation, java.io.Se
public MutateESMainVectorAdaption(MutateESMainVectorAdaption mutator) { public MutateESMainVectorAdaption(MutateESMainVectorAdaption mutator) {
this.N = mutator.N; this.N = mutator.N;
this.m_SigmaScalar = mutator.m_SigmaScalar; this.sigmaScalar = mutator.sigmaScalar;
this.m_InitSigmaScalar = mutator.m_InitSigmaScalar; this.initSigmaScalar = mutator.initSigmaScalar;
this.m_c = mutator.m_c; this.c = mutator.c;
this.m_cov = mutator.m_cov; this.cov = mutator.cov;
this.m_Beta = mutator.m_Beta; this.beta = mutator.beta;
this.xi_dach = mutator.xi_dach; this.xi_dach = mutator.xi_dach;
this.Z1 = mutator.Z1; this.Z1 = mutator.Z1;
this.w_v = mutator.w_v; this.w_v = mutator.w_v;
if (mutator.m_main_v != null) { if (mutator.mainV != null) {
this.m_main_v = (double[]) mutator.m_main_v.clone(); this.mainV = (double[]) mutator.mainV.clone();
} }
if (mutator.m_Z != null) { if (mutator.Z != null) {
this.m_Z = (double[]) mutator.m_Z.clone(); this.Z = (double[]) mutator.Z.clone();
} }
if (mutator.s_N != null) { if (mutator.sN != null) {
this.s_N = (double[]) mutator.s_N.clone(); this.sN = (double[]) mutator.sN.clone();
} }
if (mutator.s_d_N != null) { if (mutator.dN != null) {
this.s_d_N = (double[]) mutator.s_d_N.clone(); this.dN = (double[]) mutator.dN.clone();
} }
} }
@ -84,12 +80,12 @@ public class MutateESMainVectorAdaption implements InterfaceMutation, java.io.Se
if (mutator instanceof MutateESMainVectorAdaption) { if (mutator instanceof MutateESMainVectorAdaption) {
MutateESMainVectorAdaption mut = (MutateESMainVectorAdaption) mutator; MutateESMainVectorAdaption mut = (MutateESMainVectorAdaption) mutator;
// i assume if the main_V is equal then the mutation operators are equal // i assume if the main_V is equal then the mutation operators are equal
if (this.m_main_v == mut.m_main_v) { if (this.mainV == mut.mainV) {
return true; return true;
} }
if (this.m_main_v != null) { if (this.mainV != null) {
for (int i = 0; i < this.m_main_v.length; i++) { for (int i = 0; i < this.mainV.length; i++) {
if (this.m_main_v[i] != mut.m_main_v[i]) { if (this.mainV[i] != mut.mainV[i]) {
return false; return false;
} }
} }
@ -115,24 +111,24 @@ public class MutateESMainVectorAdaption implements InterfaceMutation, java.io.Se
} }
double[] x = ((InterfaceESIndividual) individual).getDGenotype(); double[] x = ((InterfaceESIndividual) individual).getDGenotype();
double[][] ranges = ((InterfaceESIndividual) individual).getDoubleRange(); double[][] ranges = ((InterfaceESIndividual) individual).getDoubleRange();
this.m_SigmaScalar = this.m_InitSigmaScalar; this.sigmaScalar = this.initSigmaScalar;
this.N = x.length; this.N = x.length;
this.m_c = Math.sqrt(1.0 / (double) this.N); // Sigma-Path-Constant this.c = Math.sqrt(1.0 / (double) this.N); // Sigma-Path-Constant
this.m_Beta = this.m_c; this.beta = this.c;
this.m_cov = 2.0 / ((double) this.N * (double) this.N); this.cov = 2.0 / ((double) this.N * (double) this.N);
this.m_Z = new double[this.N]; this.Z = new double[this.N];
this.s_N = new double[this.N]; this.sN = new double[this.N];
this.s_d_N = new double[this.N]; this.dN = new double[this.N];
this.m_main_v = new double[this.N]; this.mainV = new double[this.N];
for (int i = 0; i < this.N; i++) { for (int i = 0; i < this.N; i++) {
this.s_N[i] = 0; this.sN[i] = 0;
this.s_d_N[i] = 0; this.dN[i] = 0;
this.m_main_v[i] = 0; this.mainV[i] = 0;
} }
; ;
this.xi_dach = Math.sqrt(this.N - 0.5); this.xi_dach = Math.sqrt(this.N - 0.5);
for (int i = 0; i < this.N; i++) { for (int i = 0; i < this.N; i++) {
this.m_Z[i] = RNG.gaussianDouble(1.0); this.Z[i] = RNG.gaussianDouble(1.0);
} }
this.Z1 = RNG.gaussianDouble(1.0); this.Z1 = RNG.gaussianDouble(1.0);
evaluateNewObjectX(x, ranges); evaluateNewObjectX(x, ranges);
@ -152,7 +148,7 @@ public class MutateESMainVectorAdaption implements InterfaceMutation, java.io.Se
double[][] ranges = ((InterfaceESIndividual) individual).getDoubleRange(); double[][] ranges = ((InterfaceESIndividual) individual).getDoubleRange();
this.adaptStrategy(); this.adaptStrategy();
for (int i = 0; i < N; i++) { for (int i = 0; i < N; i++) {
m_Z[i] = RNG.gaussianDouble(1.0); Z[i] = RNG.gaussianDouble(1.0);
} }
Z1 = RNG.gaussianDouble(1.0); Z1 = RNG.gaussianDouble(1.0);
evaluateNewObjectX(x, ranges); evaluateNewObjectX(x, ranges);
@ -177,14 +173,14 @@ public class MutateESMainVectorAdaption implements InterfaceMutation, java.io.Se
private void adaptStrategy() { private void adaptStrategy() {
double length = 0.0; double length = 0.0;
for (int i = 0; i < this.N; i++) { for (int i = 0; i < this.N; i++) {
this.s_d_N[i] = (1.0 - this.m_c) * this.s_d_N[i] + Math.sqrt(this.m_c * (2.0 - this.m_c)) * this.m_Z[i]; // PATH this.dN[i] = (1.0 - this.c) * this.dN[i] + Math.sqrt(this.c * (2.0 - this.c)) * this.Z[i]; // PATH
length += this.s_d_N[i] * this.s_d_N[i]; length += this.dN[i] * this.dN[i];
} }
this.m_SigmaScalar *= Math.exp(this.m_Beta * this.m_c * (Math.sqrt(length) - this.xi_dach)); this.sigmaScalar *= Math.exp(this.beta * this.c * (Math.sqrt(length) - this.xi_dach));
// SIGN OF SCALAR PRODUCT // SIGN OF SCALAR PRODUCT
double Product = 0.0; double Product = 0.0;
for (int i = 0; i < this.N; i++) { for (int i = 0; i < this.N; i++) {
Product += this.s_N[i] * this.m_main_v[i]; Product += this.sN[i] * this.mainV[i];
} }
if (Product < 0.0) { if (Product < 0.0) {
Product = -1.0; Product = -1.0;
@ -192,8 +188,8 @@ public class MutateESMainVectorAdaption implements InterfaceMutation, java.io.Se
Product = 1.0; Product = 1.0;
} }
for (int i = 0; i < this.N; i++) { // ADAPT MAIN VECTOR for (int i = 0; i < this.N; i++) { // ADAPT MAIN VECTOR
this.s_N[i] = (1.0 - this.m_c) * this.s_N[i] + Math.sqrt(this.m_c * (2.0 - this.m_c)) * (this.m_Z[i] + this.Z1 * this.w_v * this.m_main_v[i]); // PATH MAIN VECTOR this.sN[i] = (1.0 - this.c) * this.sN[i] + Math.sqrt(this.c * (2.0 - this.c)) * (this.Z[i] + this.Z1 * this.w_v * this.mainV[i]); // PATH MAIN VECTOR
this.m_main_v[i] = (1.0 - this.m_cov) * Product * this.m_main_v[i] + this.m_cov * this.s_N[i]; this.mainV[i] = (1.0 - this.cov) * Product * this.mainV[i] + this.cov * this.sN[i];
} }
} }
@ -205,7 +201,7 @@ public class MutateESMainVectorAdaption implements InterfaceMutation, java.io.Se
// boolean constraint = false; // boolean constraint = false;
// int counter = 0; // int counter = 0;
// while (constraint == false) { // while (constraint == false) {
// for (int i = 0; i < x.length; i++) x[i] = x[i] + m_SigmaScalar * (Z[i] + Z1 * w_v * m_main_v[i]); // for (int i = 0; i < x.length; i++) x[i] = x[i] + sigmaScalar * (Z[i] + Z1 * w_v * mainV[i]);
// constraint = true; // constraint = true;
// if (counter++ > 30) break; // if (counter++ > 30) break;
// if (checkConstraints == true) { // if (checkConstraints == true) {
@ -216,7 +212,7 @@ public class MutateESMainVectorAdaption implements InterfaceMutation, java.io.Se
// } // }
// } // }
// } // }
double[] v = (double[]) this.m_main_v.clone(); double[] v = (double[]) this.mainV.clone();
double[] grad = new double[x.length]; double[] grad = new double[x.length];
double vl = 0; double vl = 0;
double gradl = 0; double gradl = 0;
@ -230,7 +226,7 @@ public class MutateESMainVectorAdaption implements InterfaceMutation, java.io.Se
for (int i = 0; i < x.length; i++) { for (int i = 0; i < x.length; i++) {
v[i] /= vl; v[i] /= vl;
grad[i] /= gradl; grad[i] /= gradl;
x[i] += this.m_SigmaScalar * (this.m_Z[i] + this.Z1 * this.w_v * this.m_main_v[i]); x[i] += this.sigmaScalar * (this.Z[i] + this.Z1 * this.w_v * this.mainV[i]);
} }
if (getCheckConstraints()) { // MK: lets actually do a constraint check if (getCheckConstraints()) { // MK: lets actually do a constraint check
Mathematics.projectToRange(x, range); Mathematics.projectToRange(x, range);
@ -275,11 +271,11 @@ public class MutateESMainVectorAdaption implements InterfaceMutation, java.io.Se
* @param bit The new representation for the inner constants. * @param bit The new representation for the inner constants.
*/ */
public void setCheckConstraints(boolean bit) { public void setCheckConstraints(boolean bit) {
this.m_CheckConstraints = bit; this.checkConstraints = bit;
} }
public boolean getCheckConstraints() { public boolean getCheckConstraints() {
return this.m_CheckConstraints; return this.checkConstraints;
} }
public String checkConstraintsTipText() { public String checkConstraintsTipText() {

View File

@ -7,42 +7,38 @@ import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 10.09.2004
* Time: 14:23:37
* To change this template use File | Settings | File Templates.
*/ */
public class MutateESMutativeStepSizeControl implements InterfaceMutation, java.io.Serializable { public class MutateESMutativeStepSizeControl implements InterfaceMutation, java.io.Serializable {
protected double m_MutationStepSize = 0.2; protected double mutationStepSize = 0.2;
protected double m_Alpha = 1.2; protected double alpha = 1.2;
protected double m_LowerLimitStepSize = 0.0000005; protected double lowerLimitStepSize = 0.0000005;
protected double m_UpperLimitStepSize = 0.4; protected double upperLimitStepSize = 0.4;
public MutateESMutativeStepSizeControl() { public MutateESMutativeStepSizeControl() {
} }
public MutateESMutativeStepSizeControl(double initialStepSize, double lowerLimit, double upperLimit) { public MutateESMutativeStepSizeControl(double initialStepSize, double lowerLimit, double upperLimit) {
m_MutationStepSize = initialStepSize; mutationStepSize = initialStepSize;
if (m_LowerLimitStepSize > m_UpperLimitStepSize) { if (lowerLimitStepSize > upperLimitStepSize) {
System.err.println("Invalid step size bounds, switching upper and lower..."); System.err.println("Invalid step size bounds, switching upper and lower...");
double tmp = upperLimit; double tmp = upperLimit;
upperLimit = lowerLimit; upperLimit = lowerLimit;
lowerLimit = tmp; lowerLimit = tmp;
} }
m_LowerLimitStepSize = lowerLimit; lowerLimitStepSize = lowerLimit;
m_UpperLimitStepSize = upperLimit; upperLimitStepSize = upperLimit;
if (initialStepSize < lowerLimit || initialStepSize > upperLimit) { if (initialStepSize < lowerLimit || initialStepSize > upperLimit) {
m_MutationStepSize = (upperLimit + lowerLimit) / 2.; mutationStepSize = (upperLimit + lowerLimit) / 2.;
System.err.println("Invalid initial stepsize, setting it to " + m_MutationStepSize); System.err.println("Invalid initial stepsize, setting it to " + mutationStepSize);
} }
} }
public MutateESMutativeStepSizeControl(MutateESMutativeStepSizeControl mutator) { public MutateESMutativeStepSizeControl(MutateESMutativeStepSizeControl mutator) {
this.m_MutationStepSize = mutator.m_MutationStepSize; this.mutationStepSize = mutator.mutationStepSize;
this.m_Alpha = mutator.m_Alpha; this.alpha = mutator.alpha;
this.m_LowerLimitStepSize = mutator.m_LowerLimitStepSize; this.lowerLimitStepSize = mutator.lowerLimitStepSize;
this.m_UpperLimitStepSize = mutator.m_UpperLimitStepSize; this.upperLimitStepSize = mutator.upperLimitStepSize;
} }
/** /**
@ -65,16 +61,16 @@ public class MutateESMutativeStepSizeControl implements InterfaceMutation, java.
public boolean equals(Object mutator) { public boolean equals(Object mutator) {
if (mutator instanceof MutateESMutativeStepSizeControl) { if (mutator instanceof MutateESMutativeStepSizeControl) {
MutateESMutativeStepSizeControl mut = (MutateESMutativeStepSizeControl) mutator; MutateESMutativeStepSizeControl mut = (MutateESMutativeStepSizeControl) mutator;
if (this.m_MutationStepSize != mut.m_MutationStepSize) { if (this.mutationStepSize != mut.mutationStepSize) {
return false; return false;
} }
if (this.m_Alpha != mut.m_Alpha) { if (this.alpha != mut.alpha) {
return false; return false;
} }
if (this.m_LowerLimitStepSize != mut.m_LowerLimitStepSize) { if (this.lowerLimitStepSize != mut.lowerLimitStepSize) {
return false; return false;
} }
if (this.m_UpperLimitStepSize != mut.m_UpperLimitStepSize) { if (this.upperLimitStepSize != mut.upperLimitStepSize) {
return false; return false;
} }
return true; return true;
@ -107,18 +103,18 @@ public class MutateESMutativeStepSizeControl implements InterfaceMutation, java.
double[] x = ((InterfaceESIndividual) individual).getDGenotype(); double[] x = ((InterfaceESIndividual) individual).getDGenotype();
double[][] range = ((InterfaceESIndividual) individual).getDoubleRange(); double[][] range = ((InterfaceESIndividual) individual).getDoubleRange();
if (RNG.flipCoin(0.5)) { if (RNG.flipCoin(0.5)) {
this.m_MutationStepSize *= this.m_Alpha; this.mutationStepSize *= this.alpha;
} else { } else {
this.m_MutationStepSize /= this.m_Alpha; this.mutationStepSize /= this.alpha;
} }
if (this.m_MutationStepSize < this.m_LowerLimitStepSize) { if (this.mutationStepSize < this.lowerLimitStepSize) {
this.m_MutationStepSize = this.m_LowerLimitStepSize; this.mutationStepSize = this.lowerLimitStepSize;
} }
if (this.m_MutationStepSize > this.m_UpperLimitStepSize) { if (this.mutationStepSize > this.upperLimitStepSize) {
this.m_MutationStepSize = this.m_UpperLimitStepSize; this.mutationStepSize = this.upperLimitStepSize;
} }
for (int i = 0; i < x.length; i++) { for (int i = 0; i < x.length; i++) {
x[i] += ((range[i][1] - range[i][0]) / 2) * RNG.gaussianDouble(this.m_MutationStepSize); x[i] += ((range[i][1] - range[i][0]) / 2) * RNG.gaussianDouble(this.mutationStepSize);
if (range[i][0] > x[i]) { if (range[i][0] > x[i]) {
x[i] = range[i][0]; x[i] = range[i][0];
} }
@ -184,13 +180,13 @@ public class MutateESMutativeStepSizeControl implements InterfaceMutation, java.
*/ */
public void setMutationStepSize(double d) { public void setMutationStepSize(double d) {
if (d < 0) { if (d < 0) {
d = this.m_LowerLimitStepSize; d = this.lowerLimitStepSize;
} }
this.m_MutationStepSize = d; this.mutationStepSize = d;
} }
public double getMutationStepSize() { public double getMutationStepSize() {
return this.m_MutationStepSize; return this.mutationStepSize;
} }
public String mutationStepSizeTipText() { public String mutationStepSizeTipText() {
@ -203,11 +199,11 @@ public class MutateESMutativeStepSizeControl implements InterfaceMutation, java.
* @param d The mutation operator. * @param d The mutation operator.
*/ */
public void setLowerLimitStepSize(double d) { public void setLowerLimitStepSize(double d) {
this.m_LowerLimitStepSize = d; this.lowerLimitStepSize = d;
} }
public double getLowerLimitStepSize() { public double getLowerLimitStepSize() {
return this.m_LowerLimitStepSize; return this.lowerLimitStepSize;
} }
public String lowerLimitStepSizeTipText() { public String lowerLimitStepSizeTipText() {
@ -220,11 +216,11 @@ public class MutateESMutativeStepSizeControl implements InterfaceMutation, java.
* @param d The mutation operator. * @param d The mutation operator.
*/ */
public void setUpperLimitStepSize(double d) { public void setUpperLimitStepSize(double d) {
this.m_UpperLimitStepSize = d; this.upperLimitStepSize = d;
} }
public double getUpperLimitStepSize() { public double getUpperLimitStepSize() {
return this.m_UpperLimitStepSize; return this.upperLimitStepSize;
} }
public String upperLimitStepSizeTipText() { public String upperLimitStepSizeTipText() {
@ -240,11 +236,11 @@ public class MutateESMutativeStepSizeControl implements InterfaceMutation, java.
if (d < 0) { if (d < 0) {
d = 0; d = 0;
} }
this.m_Alpha = d; this.alpha = d;
} }
public double getAlpha() { public double getAlpha() {
return this.m_Alpha; return this.alpha;
} }
public String alphaTipText() { public String alphaTipText() {

View File

@ -15,33 +15,33 @@ import eva2.tools.math.RNG;
*/ */
public class MutateESPathLengthAdaption implements InterfaceMutation, java.io.Serializable { public class MutateESPathLengthAdaption implements InterfaceMutation, java.io.Serializable {
private int m_dim; private int dim;
private double[] m_randZ; private double[] randZ;
private double[] m_Path; private double[] path;
private double m_SigmaGlobal = 1.0; private double sigmaGlobal = 1.0;
private double m_c; private double c;
private boolean m_UsePath = true; private boolean usePath = true;
private double dampening = 1; private double dampening = 1;
private double expectedPathLen = -1; private double expectedPathLen = -1;
private double m_cu; private double cu;
public MutateESPathLengthAdaption() { public MutateESPathLengthAdaption() {
} }
public MutateESPathLengthAdaption(MutateESPathLengthAdaption mutator) { public MutateESPathLengthAdaption(MutateESPathLengthAdaption mutator) {
this.m_UsePath = true; this.usePath = true;
this.m_dim = mutator.m_dim; this.dim = mutator.dim;
this.m_SigmaGlobal = mutator.m_SigmaGlobal; this.sigmaGlobal = mutator.sigmaGlobal;
this.m_c = mutator.m_c; this.c = mutator.c;
this.dampening = mutator.dampening; this.dampening = mutator.dampening;
this.expectedPathLen = mutator.expectedPathLen; this.expectedPathLen = mutator.expectedPathLen;
this.m_cu = mutator.m_cu; this.cu = mutator.cu;
if (mutator.m_randZ != null) { if (mutator.randZ != null) {
this.m_randZ = (double[]) mutator.m_randZ.clone(); this.randZ = (double[]) mutator.randZ.clone();
} }
if (mutator.m_Path != null) { if (mutator.path != null) {
this.m_Path = (double[]) mutator.m_Path.clone(); this.path = (double[]) mutator.path.clone();
} }
} }
@ -66,25 +66,25 @@ public class MutateESPathLengthAdaption implements InterfaceMutation, java.io.Se
if (mutator instanceof MutateESPathLengthAdaption) { if (mutator instanceof MutateESPathLengthAdaption) {
MutateESPathLengthAdaption mut = (MutateESPathLengthAdaption) mutator; MutateESPathLengthAdaption mut = (MutateESPathLengthAdaption) mutator;
// i assume if the C Matrix is equal then the mutation operators are equal // i assume if the C Matrix is equal then the mutation operators are equal
if (this.m_dim != mut.m_dim) { if (this.dim != mut.dim) {
return false; return false;
} }
if (this.m_SigmaGlobal != mut.m_SigmaGlobal) { if (this.sigmaGlobal != mut.sigmaGlobal) {
return false; return false;
} }
if (this.m_c != mut.m_c) { if (this.c != mut.c) {
return false; return false;
} }
if ((this.m_randZ != null) && (mut.m_randZ != null)) { if ((this.randZ != null) && (mut.randZ != null)) {
for (int i = 0; i < this.m_randZ.length; i++) { for (int i = 0; i < this.randZ.length; i++) {
if (this.m_randZ[i] != mut.m_randZ[i]) { if (this.randZ[i] != mut.randZ[i]) {
return false; return false;
} }
} }
} }
if ((this.m_Path != null) && (mut.m_Path != null)) { if ((this.path != null) && (mut.path != null)) {
for (int i = 0; i < this.m_Path.length; i++) { for (int i = 0; i < this.path.length; i++) {
if (this.m_Path[i] != mut.m_Path[i]) { if (this.path[i] != mut.path[i]) {
return false; return false;
} }
} }
@ -108,25 +108,25 @@ public class MutateESPathLengthAdaption implements InterfaceMutation, java.io.Se
} }
double[] x = ((InterfaceESIndividual) individual).getDGenotype(); double[] x = ((InterfaceESIndividual) individual).getDGenotype();
double[][] ranges = ((InterfaceESIndividual) individual).getDoubleRange(); double[][] ranges = ((InterfaceESIndividual) individual).getDoubleRange();
this.m_dim = x.length; this.dim = x.length;
// if (this.m_UsePath) this.c = Math.sqrt(1.0 / (double) this.m_dim); // if (this.usePath) this.c = Math.sqrt(1.0 / (double) this.dim);
this.m_randZ = new double[this.m_dim]; this.randZ = new double[this.dim];
this.m_Path = new double[this.m_dim]; this.path = new double[this.dim];
for (int i = 0; i < this.m_dim; i++) { for (int i = 0; i < this.dim; i++) {
this.m_randZ[i] = RNG.gaussianDouble(1.0); this.randZ[i] = RNG.gaussianDouble(1.0);
// this.m_Path[i]=1; // this.path[i]=1;
} }
if (this.m_UsePath) { if (this.usePath) {
this.m_c = 4. / (m_dim + 4); this.c = 4. / (dim + 4);
} else { } else {
this.m_c = 1.0; this.c = 1.0;
} }
expectedPathLen = Math.sqrt(m_dim) * (1 - (1. / (4 * m_dim)) + (1. / (21 * m_dim * m_dim))); expectedPathLen = Math.sqrt(dim) * (1 - (1. / (4 * dim)) + (1. / (21 * dim * dim)));
dampening = (1. / m_c) + 1; dampening = (1. / c) + 1;
m_cu = Math.sqrt(m_c * (2.0 - m_c)); cu = Math.sqrt(c * (2.0 - c));
mutateX(x, ranges, true); mutateX(x, ranges, true);
} }
@ -167,8 +167,8 @@ public class MutateESPathLengthAdaption implements InterfaceMutation, java.io.Se
} }
private void calculateNewStep() { private void calculateNewStep() {
for (int i = 0; i < m_dim; i++) { for (int i = 0; i < dim; i++) {
m_randZ[i] = RNG.gaussianDouble(1.0); randZ[i] = RNG.gaussianDouble(1.0);
} }
} }
@ -185,22 +185,22 @@ public class MutateESPathLengthAdaption implements InterfaceMutation, java.io.Se
} }
private void adaptStrategy() { private void adaptStrategy() {
// remember the path taken. m_randZ is at this time the last step before selection. // remember the path taken. randZ is at this time the last step before selection.
for (int i = 0; i < m_dim; i++) { for (int i = 0; i < dim; i++) {
m_Path[i] = (1.0 - m_c) * m_Path[i] + m_cu * m_randZ[i]; path[i] = (1.0 - c) * path[i] + cu * randZ[i];
} }
double pathLen = Mathematics.norm(m_Path); double pathLen = Mathematics.norm(path);
// double expectedPathLen = Math.sqrt(((double)m_dim)+0.5); // double expectedPathLen = Math.sqrt(((double)dim)+0.5);
// double kappa_d = ((double)m_dim)/4.0+1.0; // double kappa_d = ((double)dim)/4.0+1.0;
double exp = (pathLen - expectedPathLen) / (dampening * expectedPathLen); double exp = (pathLen - expectedPathLen) / (dampening * expectedPathLen);
m_SigmaGlobal *= Math.exp(exp); sigmaGlobal *= Math.exp(exp);
} }
private void mutateX(double[] x, double[][] range, boolean checkRange) { private void mutateX(double[] x, double[][] range, boolean checkRange) {
for (int i = 0; i < x.length; i++) { for (int i = 0; i < x.length; i++) {
x[i] += m_SigmaGlobal * m_randZ[i]; x[i] += sigmaGlobal * randZ[i];
} }
if (checkRange) { if (checkRange) {
checkRange(x, range); checkRange(x, range);
@ -243,10 +243,10 @@ public class MutateESPathLengthAdaption implements InterfaceMutation, java.io.Se
// * @param bit The new representation for the inner constants. // * @param bit The new representation for the inner constants.
// */ // */
// public void setUsePath(boolean bit) { // public void setUsePath(boolean bit) {
// this.m_UsePath = bit; // this.usePath = bit;
// } // }
// public boolean getUsePath() { // public boolean getUsePath() {
// return this.m_UsePath; // return this.usePath;
// } // }
// public String usePathTipText() { // public String usePathTipText() {
// return "Use path."; // return "Use path.";
@ -258,11 +258,11 @@ public class MutateESPathLengthAdaption implements InterfaceMutation, java.io.Se
* @param d The initial sigma value. * @param d The initial sigma value.
*/ */
public void setSigmaGlobal(double d) { public void setSigmaGlobal(double d) {
this.m_SigmaGlobal = d; this.sigmaGlobal = d;
} }
public double getSigmaGlobal() { public double getSigmaGlobal() {
return this.m_SigmaGlobal; return this.sigmaGlobal;
} }
public String initSigmaGlobalTipText() { public String initSigmaGlobalTipText() {

View File

@ -7,24 +7,20 @@ import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 08.09.2004
* Time: 17:05:23
* To change this template use File | Settings | File Templates.
*/ */
public class MutateESPolynomial implements InterfaceMutation, java.io.Serializable { public class MutateESPolynomial implements InterfaceMutation, java.io.Serializable {
private double m_Eta = 0.2; private double eta = 0.2;
public MutateESPolynomial() { public MutateESPolynomial() {
} }
public MutateESPolynomial(MutateESPolynomial mutator) { public MutateESPolynomial(MutateESPolynomial mutator) {
this.m_Eta = mutator.m_Eta; this.eta = mutator.eta;
} }
public MutateESPolynomial(double eta) { public MutateESPolynomial(double eta) {
m_Eta = eta; this.eta = eta;
} }
/** /**
@ -47,7 +43,7 @@ public class MutateESPolynomial implements InterfaceMutation, java.io.Serializab
public boolean equals(Object mutator) { public boolean equals(Object mutator) {
if (mutator instanceof MutateESPolynomial) { if (mutator instanceof MutateESPolynomial) {
MutateESPolynomial mut = (MutateESPolynomial) mutator; MutateESPolynomial mut = (MutateESPolynomial) mutator;
if (this.m_Eta != mut.m_Eta) { if (this.eta != mut.eta) {
return false; return false;
} }
return true; return true;
@ -84,9 +80,9 @@ public class MutateESPolynomial implements InterfaceMutation, java.io.Serializab
double r = RNG.randomDouble(); double r = RNG.randomDouble();
double delta = 0; double delta = 0;
if (r < 0.5) { if (r < 0.5) {
delta = Math.pow((2 * r), (1 / (m_Eta + 1))) - 1; delta = Math.pow((2 * r), (1 / (eta + 1))) - 1;
} else { } else {
delta = 1 - Math.pow((2 * (1 - r)), (1 / (m_Eta + 1))); delta = 1 - Math.pow((2 * (1 - r)), (1 / (eta + 1)));
} }
x[i] += delta; x[i] += delta;
@ -158,11 +154,11 @@ public class MutateESPolynomial implements InterfaceMutation, java.io.Serializab
if (a < 0) { if (a < 0) {
a = 0; a = 0;
} }
this.m_Eta = a; this.eta = a;
} }
public double getEta() { public double getEta() {
return this.m_Eta; return this.eta;
} }
public String etaTipText() { public String etaTipText() {

View File

@ -5,27 +5,18 @@ import eva2.optimization.population.Population;
/** /**
* Success rule implementation. * Success rule implementation.
* <p/>
* User: streiche
* Date: 10.05.2005
* Time: 14:11:49
* To change this template use File | Settings | File Templates.
*/ */
public class MutateESSuccessRule extends MutateESFixedStepSize implements InterfaceMutation, InterfaceAdaptOperatorGenerational, java.io.Serializable { public class MutateESSuccessRule extends MutateESFixedStepSize implements InterfaceMutation, InterfaceAdaptOperatorGenerational, java.io.Serializable {
// it would be quite nice to make this variable static, but in that case protected double successRate = 0.2;
// no one could runs n independent ES runs in parallel anymore *sigh* protected double alpha = 1.2;
// protected static double mutationStepSize = 0.2;
// protected double mutationStepSize = 0.2; // now in base class
protected double m_SuccessRate = 0.2;
protected double m_Alpha = 1.2;
public MutateESSuccessRule() { public MutateESSuccessRule() {
} }
public MutateESSuccessRule(MutateESSuccessRule mutator) { public MutateESSuccessRule(MutateESSuccessRule mutator) {
super(mutator); super(mutator);
this.m_SuccessRate = mutator.m_SuccessRate; this.successRate = mutator.successRate;
this.m_Alpha = mutator.m_Alpha; this.alpha = mutator.alpha;
} }
/** /**
@ -48,13 +39,13 @@ public class MutateESSuccessRule extends MutateESFixedStepSize implements Interf
public boolean equals(Object mutator) { public boolean equals(Object mutator) {
if (mutator instanceof MutateESSuccessRule) { if (mutator instanceof MutateESSuccessRule) {
MutateESSuccessRule mut = (MutateESSuccessRule) mutator; MutateESSuccessRule mut = (MutateESSuccessRule) mutator;
if (this.m_Sigma != mut.m_Sigma) { if (this.sigma != mut.sigma) {
return false; return false;
} }
if (this.m_SuccessRate != mut.m_SuccessRate) { if (this.successRate != mut.successRate) {
return false; return false;
} }
if (this.m_Alpha != mut.m_Alpha) { if (this.alpha != mut.alpha) {
return false; return false;
} }
return true; return true;
@ -78,14 +69,14 @@ public class MutateESSuccessRule extends MutateESFixedStepSize implements Interf
* This method increases the mutation step size. * This method increases the mutation step size.
*/ */
public void increaseMutationStepSize() { public void increaseMutationStepSize() {
this.m_Sigma *= this.m_Alpha; this.sigma *= this.alpha;
} }
/** /**
* This method decrease the mutation step size. * This method decrease the mutation step size.
*/ */
public void decreaseMutationStepSize() { public void decreaseMutationStepSize() {
this.m_Sigma /= this.m_Alpha; this.sigma /= this.alpha;
} }
/********************************************************************************************************************** /**********************************************************************************************************************
@ -127,11 +118,11 @@ public class MutateESSuccessRule extends MutateESFixedStepSize implements Interf
if (d > 1) { if (d > 1) {
d = 1; d = 1;
} }
this.m_SuccessRate = d; this.successRate = d;
} }
public double getSuccessRate() { public double getSuccessRate() {
return this.m_SuccessRate; return this.successRate;
} }
public String successRateTipText() { public String successRateTipText() {
@ -147,11 +138,11 @@ public class MutateESSuccessRule extends MutateESFixedStepSize implements Interf
if (d < 1) { if (d < 1) {
d = 1; d = 1;
} }
this.m_Alpha = d; this.alpha = d;
} }
public double getAlpha() { public double getAlpha() {
return this.m_Alpha; return this.alpha;
} }
public String alphaTipText() { public String alphaTipText() {

View File

@ -12,27 +12,21 @@ import java.util.BitSet;
/** /**
* The mutation probability is adapted using a parameter tau and stored in the individual. * The mutation probability is adapted using a parameter tau and stored in the individual.
* Better mutation probabilities are selected indirectly as they produce better offspring. * Better mutation probabilities are selected indirectly as they produce better offspring.
* <p/>
* Created by IntelliJ IDEA.
* User: streiche
* Date: 27.05.2003
* Time: 19:52:16
* To change this template use Options | File Templates.
*/ */
public class MutateGAAdaptive implements InterfaceMutation, java.io.Serializable { public class MutateGAAdaptive implements InterfaceMutation, java.io.Serializable {
protected double m_MutationStep = 1; protected double mutationStep = 1;
protected double m_Tau1 = 0.15; protected double tau1 = 0.15;
protected double m_LowerLimitStepSize = 0.0000005; protected double lowerLimitStepSize = 0.0000005;
public MutateGAAdaptive() { public MutateGAAdaptive() {
} }
public MutateGAAdaptive(MutateGAAdaptive mutator) { public MutateGAAdaptive(MutateGAAdaptive mutator) {
this.m_MutationStep = mutator.m_MutationStep; this.mutationStep = mutator.mutationStep;
this.m_Tau1 = mutator.m_Tau1; this.tau1 = mutator.tau1;
this.m_LowerLimitStepSize = mutator.m_LowerLimitStepSize; this.lowerLimitStepSize = mutator.lowerLimitStepSize;
} }
/** /**
@ -55,13 +49,13 @@ public class MutateGAAdaptive implements InterfaceMutation, java.io.Serializable
public boolean equals(Object mutator) { public boolean equals(Object mutator) {
if (mutator instanceof MutateGAAdaptive) { if (mutator instanceof MutateGAAdaptive) {
MutateGAAdaptive mut = (MutateGAAdaptive) mutator; MutateGAAdaptive mut = (MutateGAAdaptive) mutator;
if (this.m_MutationStep != mut.m_MutationStep) { if (this.mutationStep != mut.mutationStep) {
return false; return false;
} }
if (this.m_Tau1 != mut.m_Tau1) { if (this.tau1 != mut.tau1) {
return false; return false;
} }
if (this.m_LowerLimitStepSize != mut.m_LowerLimitStepSize) { if (this.lowerLimitStepSize != mut.lowerLimitStepSize) {
return false; return false;
} }
return true; return true;
@ -92,12 +86,12 @@ public class MutateGAAdaptive implements InterfaceMutation, java.io.Serializable
//System.out.println("Before Mutate: " +((GAIndividual)individual).getSolutionRepresentationFor()); //System.out.println("Before Mutate: " +((GAIndividual)individual).getSolutionRepresentationFor());
if (individual instanceof InterfaceGAIndividual) { if (individual instanceof InterfaceGAIndividual) {
BitSet tmpBitSet = ((InterfaceGAIndividual) individual).getBGenotype(); BitSet tmpBitSet = ((InterfaceGAIndividual) individual).getBGenotype();
this.m_MutationStep *= Math.exp(this.m_Tau1 * RNG.gaussianDouble(1)); this.mutationStep *= Math.exp(this.tau1 * RNG.gaussianDouble(1));
if (this.m_MutationStep < this.m_LowerLimitStepSize) { if (this.mutationStep < this.lowerLimitStepSize) {
this.m_MutationStep = this.m_LowerLimitStepSize; this.mutationStep = this.lowerLimitStepSize;
} }
for (int i = 0; i < ((InterfaceGAIndividual) individual).getGenotypeLength(); i++) { for (int i = 0; i < ((InterfaceGAIndividual) individual).getGenotypeLength(); i++) {
if (RNG.flipCoin(this.m_MutationStep / ((InterfaceGAIndividual) individual).getGenotypeLength())) { if (RNG.flipCoin(this.mutationStep / ((InterfaceGAIndividual) individual).getGenotypeLength())) {
tmpBitSet.flip(i); tmpBitSet.flip(i);
} }
} }
@ -158,13 +152,13 @@ public class MutateGAAdaptive implements InterfaceMutation, java.io.Serializable
*/ */
public void setMutationStep(double d) { public void setMutationStep(double d) {
if (d < 0) { if (d < 0) {
d = this.m_LowerLimitStepSize; d = this.lowerLimitStepSize;
} }
this.m_MutationStep = d; this.mutationStep = d;
} }
public double getMutationStepSize() { public double getMutationStepSize() {
return this.m_MutationStep; return this.mutationStep;
} }
public String mutationStepSizeTipText() { public String mutationStepSizeTipText() {
@ -180,11 +174,11 @@ public class MutateGAAdaptive implements InterfaceMutation, java.io.Serializable
if (d < 0) { if (d < 0) {
d = 0; d = 0;
} }
this.m_LowerLimitStepSize = d; this.lowerLimitStepSize = d;
} }
public double getLowerLimitStepSize() { public double getLowerLimitStepSize() {
return this.m_LowerLimitStepSize; return this.lowerLimitStepSize;
} }
public String lowerLimitStepSizeTipText() { public String lowerLimitStepSizeTipText() {
@ -200,11 +194,11 @@ public class MutateGAAdaptive implements InterfaceMutation, java.io.Serializable
if (d < 0) { if (d < 0) {
d = 0; d = 0;
} }
this.m_Tau1 = d; this.tau1 = d;
} }
public double getTau1() { public double getTau1() {
return this.m_Tau1; return this.tau1;
} }
public String tau1TipText() { public String tau1TipText() {

View File

@ -13,15 +13,15 @@ import java.util.BitSet;
*/ */
public class MutateGAInvertBits implements InterfaceMutation, java.io.Serializable { public class MutateGAInvertBits implements InterfaceMutation, java.io.Serializable {
private int m_NumberOfMutations = 1; private int numberOfMutations = 1;
private int m_MaxInveredBits = 5; private int maxInveredBits = 5;
public MutateGAInvertBits() { public MutateGAInvertBits() {
} }
public MutateGAInvertBits(MutateGAInvertBits mutator) { public MutateGAInvertBits(MutateGAInvertBits mutator) {
this.m_NumberOfMutations = mutator.m_NumberOfMutations; this.numberOfMutations = mutator.numberOfMutations;
this.m_MaxInveredBits = mutator.m_MaxInveredBits; this.maxInveredBits = mutator.maxInveredBits;
} }
/** /**
@ -44,10 +44,10 @@ public class MutateGAInvertBits implements InterfaceMutation, java.io.Serializab
public boolean equals(Object mutator) { public boolean equals(Object mutator) {
if (mutator instanceof MutateGAInvertBits) { if (mutator instanceof MutateGAInvertBits) {
MutateGAInvertBits mut = (MutateGAInvertBits) mutator; MutateGAInvertBits mut = (MutateGAInvertBits) mutator;
if (this.m_NumberOfMutations != mut.m_NumberOfMutations) { if (this.numberOfMutations != mut.numberOfMutations) {
return false; return false;
} }
if (this.m_MaxInveredBits != mut.m_MaxInveredBits) { if (this.maxInveredBits != mut.maxInveredBits) {
return false; return false;
} }
return true; return true;
@ -76,11 +76,11 @@ public class MutateGAInvertBits implements InterfaceMutation, java.io.Serializab
public void mutate(AbstractEAIndividual individual) { public void mutate(AbstractEAIndividual individual) {
if (individual instanceof InterfaceGAIndividual) { if (individual instanceof InterfaceGAIndividual) {
BitSet tmpBitSet = ((InterfaceGAIndividual) individual).getBGenotype(); BitSet tmpBitSet = ((InterfaceGAIndividual) individual).getBGenotype();
int[][] mutationIndices = new int[this.m_NumberOfMutations][2]; int[][] mutationIndices = new int[this.numberOfMutations][2];
for (int i = 0; i < mutationIndices.length; i++) { for (int i = 0; i < mutationIndices.length; i++) {
mutationIndices[i][0] = RNG.randomInt(0, ((InterfaceGAIndividual) individual).getGenotypeLength()); mutationIndices[i][0] = RNG.randomInt(0, ((InterfaceGAIndividual) individual).getGenotypeLength());
; ;
mutationIndices[i][1] = RNG.randomInt(0, this.m_MaxInveredBits); mutationIndices[i][1] = RNG.randomInt(0, this.maxInveredBits);
; ;
} }
// ToDo: double instances of mutationIndices could be checked here... *sigh* // ToDo: double instances of mutationIndices could be checked here... *sigh*
@ -150,11 +150,11 @@ public class MutateGAInvertBits implements InterfaceMutation, java.io.Serializab
if (mutations < 0) { if (mutations < 0) {
mutations = 0; mutations = 0;
} }
this.m_NumberOfMutations = mutations; this.numberOfMutations = mutations;
} }
public int getNumberOfMutations() { public int getNumberOfMutations() {
return this.m_NumberOfMutations; return this.numberOfMutations;
} }
public String numberOfMutationsTipText() { public String numberOfMutationsTipText() {
@ -171,11 +171,11 @@ public class MutateGAInvertBits implements InterfaceMutation, java.io.Serializab
if (mutations < 0) { if (mutations < 0) {
mutations = 0; mutations = 0;
} }
this.m_MaxInveredBits = mutations; this.maxInveredBits = mutations;
} }
public int getMaxInveredBits() { public int getMaxInveredBits() {
return this.m_MaxInveredBits; return this.maxInveredBits;
} }
public String maxInveredBitsTipText() { public String maxInveredBitsTipText() {

View File

@ -17,16 +17,16 @@ import java.util.BitSet;
*/ */
public class MutateGAShiftSubstring implements InterfaceMutation, java.io.Serializable { public class MutateGAShiftSubstring implements InterfaceMutation, java.io.Serializable {
private int m_subStringLength = 0; private int subStringLength = 0;
private int m_shiftDistance = 0; private int shiftDistance = 0;
public MutateGAShiftSubstring() { public MutateGAShiftSubstring() {
} }
public MutateGAShiftSubstring(MutateGAShiftSubstring mutator) { public MutateGAShiftSubstring(MutateGAShiftSubstring mutator) {
this.m_subStringLength = mutator.m_subStringLength; this.subStringLength = mutator.subStringLength;
this.m_shiftDistance = mutator.m_shiftDistance; this.shiftDistance = mutator.shiftDistance;
} }
/** /**
@ -49,10 +49,10 @@ public class MutateGAShiftSubstring implements InterfaceMutation, java.io.Serial
public boolean equals(Object mutator) { public boolean equals(Object mutator) {
if (mutator instanceof MutateGAShiftSubstring) { if (mutator instanceof MutateGAShiftSubstring) {
MutateGAShiftSubstring mut = (MutateGAShiftSubstring) mutator; MutateGAShiftSubstring mut = (MutateGAShiftSubstring) mutator;
if (this.m_subStringLength != mut.m_subStringLength) { if (this.subStringLength != mut.subStringLength) {
return false; return false;
} }
if (this.m_shiftDistance != mut.m_shiftDistance) { if (this.shiftDistance != mut.shiftDistance) {
return false; return false;
} }
return true; return true;
@ -106,21 +106,21 @@ public class MutateGAShiftSubstring implements InterfaceMutation, java.io.Serial
} }
private int selectShiftDist(int len) { private int selectShiftDist(int len) {
if (m_shiftDistance <= 0) { if (shiftDistance <= 0) {
return RNG.randomInt(len); return RNG.randomInt(len);
} else { } else {
return m_shiftDistance; return shiftDistance;
} }
} }
private int[] selectSubstring(BitSet tmpBitSet, int len) { private int[] selectSubstring(BitSet tmpBitSet, int len) {
int[] str = new int[2]; int[] str = new int[2];
if (m_subStringLength <= 0) { if (subStringLength <= 0) {
str[0] = RNG.randomInt(len); // TODO check for collision? Not a problem in higher dims... str[0] = RNG.randomInt(len); // TODO check for collision? Not a problem in higher dims...
str[1] = RNG.randomInt(len); str[1] = RNG.randomInt(len);
} else { } else {
str[0] = RNG.randomInt(len); str[0] = RNG.randomInt(len);
str[1] = m_subStringLength + str[0] - 1; // this may be larger than len, but its modulo-ed away in mutate str[1] = subStringLength + str[0] - 1; // this may be larger than len, but its modulo-ed away in mutate
} }
return str; return str;
} }
@ -171,11 +171,11 @@ public class MutateGAShiftSubstring implements InterfaceMutation, java.io.Serial
} }
public int getSubStringLength() { public int getSubStringLength() {
return m_subStringLength; return subStringLength;
} }
public void setSubStringLength(int stringLength) { public void setSubStringLength(int stringLength) {
m_subStringLength = stringLength; subStringLength = stringLength;
} }
public String subStringLengthTipText() { public String subStringLengthTipText() {
@ -183,11 +183,11 @@ public class MutateGAShiftSubstring implements InterfaceMutation, java.io.Serial
} }
public int getShiftDistance() { public int getShiftDistance() {
return m_shiftDistance; return shiftDistance;
} }
public void setShiftDistance(int distance) { public void setShiftDistance(int distance) {
m_shiftDistance = distance; shiftDistance = distance;
} }
public String shiftDistanceTipText() { public String shiftDistanceTipText() {

View File

@ -1,11 +1,7 @@
package eva2.optimization.operator.mutation; package eva2.optimization.operator.mutation;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 20.05.2005
* Time: 13:54:25
* To change this template use File | Settings | File Templates.
*/ */
public class PropertyMutationMixer implements java.io.Serializable { public class PropertyMutationMixer implements java.io.Serializable {

View File

@ -36,7 +36,7 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
*/ */
private JLabel 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 * The filePath that is to be edited
*/ */
private PropertyMutationMixer mutatorsWithWeights; private PropertyMutationMixer mutatorsWithWeights;
@ -394,7 +394,6 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
* @param a The action listener. * @param a The action listener.
*/ */
public void addOkListener(ActionListener a) { public void addOkListener(ActionListener a) {
//m_OKButton.addActionListener(a);
} }
/** /**
@ -403,7 +402,6 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
* @param a The action listener * @param a The action listener
*/ */
public void removeOkListener(ActionListener a) { public void removeOkListener(ActionListener a) {
//m_OKButton.removeActionListener(a);
} }
/** /**
@ -514,7 +512,6 @@ public class PropertyMutationMixerEditor extends JPanel implements PropertyEdito
i = list.length; i = list.length;
} }
} }
//this.m_OptimizationTargets.setSelectedTargets(list);
this.updateCenterComponent(evt); // Let our panel update before guys downstream this.updateCenterComponent(evt); // Let our panel update before guys downstream
propertyChangeSupport.firePropertyChange("", mutatorsWithWeights, mutatorsWithWeights); propertyChangeSupport.firePropertyChange("", mutatorsWithWeights, mutatorsWithWeights);
} }

View File

@ -14,33 +14,28 @@ import java.util.ArrayList;
* The D1* Pareto front metric requires a refrence Pareto front * The D1* Pareto front metric requires a refrence Pareto front
* and calculate the distance between the true Pareto front and * and calculate the distance between the true Pareto front and
* the current solution. * the current solution.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 09.06.2005
* Time: 13:57:28
* To change this template use File | Settings | File Templates.
*/ */
public class MetricD1ApproxParetoFront implements eva2.optimization.operator.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable { public class MetricD1ApproxParetoFront implements eva2.optimization.operator.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable {
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt"); private PropertyFilePath inputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt");
private String[] m_Titles; private String[] titles;
private double[][] m_Reference; private double[][] reference;
public MetricD1ApproxParetoFront() { public MetricD1ApproxParetoFront() {
this.loadReferenceData(); this.loadReferenceData();
} }
public MetricD1ApproxParetoFront(MetricD1ApproxParetoFront b) { public MetricD1ApproxParetoFront(MetricD1ApproxParetoFront b) {
if (b.m_Titles != null) { if (b.titles != null) {
this.m_Titles = new String[b.m_Titles.length]; this.titles = new String[b.titles.length];
for (int i = 0; i < this.m_Titles.length; i++) { for (int i = 0; i < this.titles.length; i++) {
this.m_Titles[i] = b.m_Titles[i]; this.titles[i] = b.titles[i];
} }
} }
if (b.m_Reference != null) { if (b.reference != null) {
this.m_Reference = new double[b.m_Reference.length][b.m_Reference[0].length]; this.reference = new double[b.reference.length][b.reference[0].length];
for (int i = 0; i < this.m_Reference.length; i++) { for (int i = 0; i < this.reference.length; i++) {
for (int j = 0; j < this.m_Reference[i].length; j++) { for (int j = 0; j < this.reference[i].length; j++) {
this.m_Reference[i][j] = b.m_Reference[i][j]; this.reference[i][j] = b.reference[i][j];
} }
} }
} }
@ -67,16 +62,16 @@ public class MetricD1ApproxParetoFront implements eva2.optimization.operator.par
* This method loads the reference data * This method loads the reference data
*/ */
private void loadReferenceData() { private void loadReferenceData() {
String[] tmpS, lines = FileTools.loadStringsFromFile(this.m_InputFilePath.getCompleteFilePath()); String[] tmpS, lines = FileTools.loadStringsFromFile(this.inputFilePath.getCompleteFilePath());
if (lines == null) { if (lines == null) {
System.out.println("Failed to read " + this.m_InputFilePath.getCompleteFilePath()); System.out.println("Failed to read " + this.inputFilePath.getCompleteFilePath());
} }
lines[0].trim(); lines[0].trim();
this.m_Titles = lines[0].split("\t"); this.titles = lines[0].split("\t");
ArrayList tmpA = new ArrayList(); ArrayList tmpA = new ArrayList();
double[] tmpD; double[] tmpD;
for (int i = 1; i < lines.length; i++) { for (int i = 1; i < lines.length; i++) {
tmpD = new double[this.m_Titles.length]; tmpD = new double[this.titles.length];
lines[i].trim(); lines[i].trim();
tmpS = lines[i].split("\t"); tmpS = lines[i].split("\t");
for (int j = 0; (j < tmpD.length) && (j < tmpS.length); j++) { for (int j = 0; (j < tmpD.length) && (j < tmpS.length); j++) {
@ -84,9 +79,9 @@ public class MetricD1ApproxParetoFront implements eva2.optimization.operator.par
} }
tmpA.add(tmpD); tmpA.add(tmpD);
} }
this.m_Reference = new double[tmpA.size()][]; this.reference = new double[tmpA.size()][];
for (int i = 0; i < tmpA.size(); i++) { for (int i = 0; i < tmpA.size(); i++) {
this.m_Reference[i] = (double[]) tmpA.get(i); this.reference[i] = (double[]) tmpA.get(i);
} }
} }
@ -102,9 +97,9 @@ public class MetricD1ApproxParetoFront implements eva2.optimization.operator.par
if (pop.getArchive() != null) { if (pop.getArchive() != null) {
tmpPPO.addPopulation(pop.getArchive()); tmpPPO.addPopulation(pop.getArchive());
} }
if (this.m_Reference == null) { if (this.reference == null) {
this.loadReferenceData(); this.loadReferenceData();
if (this.m_Reference == null) { if (this.reference == null) {
System.out.println("No reference data!"); System.out.println("No reference data!");
return 0; return 0;
} }
@ -115,8 +110,8 @@ public class MetricD1ApproxParetoFront implements eva2.optimization.operator.par
result = 0; result = 0;
for (int i = 0; i < tmpPPO.size(); i++) { for (int i = 0; i < tmpPPO.size(); i++) {
min = Double.POSITIVE_INFINITY; min = Double.POSITIVE_INFINITY;
for (int j = 0; j < this.m_Reference.length; j++) { for (int j = 0; j < this.reference.length; j++) {
min = Math.min(min, distance(((AbstractEAIndividual) tmpPPO.get(i)).getFitness(), this.m_Reference[j])); min = Math.min(min, distance(((AbstractEAIndividual) tmpPPO.get(i)).getFitness(), this.reference[j]));
} }
result += min; result += min;
} }
@ -164,12 +159,12 @@ public class MetricD1ApproxParetoFront implements eva2.optimization.operator.par
* @param b File path. * @param b File path.
*/ */
public void setInputFilePath(PropertyFilePath b) { public void setInputFilePath(PropertyFilePath b) {
this.m_InputFilePath = b; this.inputFilePath = b;
this.loadReferenceData(); this.loadReferenceData();
} }
public PropertyFilePath getInputFilePath() { public PropertyFilePath getInputFilePath() {
return this.m_InputFilePath; return this.inputFilePath;
} }
public String inputFilePathTipText() { public String inputFilePathTipText() {

View File

@ -14,36 +14,29 @@ import java.util.ArrayList;
* The D1 Pareto front metric requires a refrence Pareto front * The D1 Pareto front metric requires a refrence Pareto front
* and calculate the distance between the current solution and * and calculate the distance between the current solution and
* the true Pareto front. * the true Pareto front.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 09.06.2005
* Time: 13:57:13
* To change this template use File | Settings | File Templates.
*/ */
public class MetricD1TrueParetoFront implements eva2.optimization.operator.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable { public class MetricD1TrueParetoFront implements eva2.optimization.operator.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable {
// private String base = System.getProperty("user.dir"); private PropertyFilePath inputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt");
// private String FS = System.getProperty("file.separator"); private String[] titles;
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt"); private double[][] reference;
private String[] m_Titles;
private double[][] m_Reference;
public MetricD1TrueParetoFront() { public MetricD1TrueParetoFront() {
this.loadReferenceData(); this.loadReferenceData();
} }
public MetricD1TrueParetoFront(MetricD1TrueParetoFront b) { public MetricD1TrueParetoFront(MetricD1TrueParetoFront b) {
if (b.m_Titles != null) { if (b.titles != null) {
this.m_Titles = new String[b.m_Titles.length]; this.titles = new String[b.titles.length];
for (int i = 0; i < this.m_Titles.length; i++) { for (int i = 0; i < this.titles.length; i++) {
this.m_Titles[i] = b.m_Titles[i]; this.titles[i] = b.titles[i];
} }
} }
if (b.m_Reference != null) { if (b.reference != null) {
this.m_Reference = new double[b.m_Reference.length][b.m_Reference[0].length]; this.reference = new double[b.reference.length][b.reference[0].length];
for (int i = 0; i < this.m_Reference.length; i++) { for (int i = 0; i < this.reference.length; i++) {
for (int j = 0; j < this.m_Reference[i].length; j++) { for (int j = 0; j < this.reference[i].length; j++) {
this.m_Reference[i][j] = b.m_Reference[i][j]; this.reference[i][j] = b.reference[i][j];
} }
} }
} }
@ -70,16 +63,16 @@ public class MetricD1TrueParetoFront implements eva2.optimization.operator.paret
* This method loads the reference data * This method loads the reference data
*/ */
private void loadReferenceData() { private void loadReferenceData() {
String[] tmpS, lines = FileTools.loadStringsFromFile(this.m_InputFilePath.getCompleteFilePath()); String[] tmpS, lines = FileTools.loadStringsFromFile(this.inputFilePath.getCompleteFilePath());
if (lines == null) { if (lines == null) {
System.out.println("Failed to read " + this.m_InputFilePath.getCompleteFilePath()); System.out.println("Failed to read " + this.inputFilePath.getCompleteFilePath());
} }
lines[0].trim(); lines[0].trim();
this.m_Titles = lines[0].split("\t"); this.titles = lines[0].split("\t");
ArrayList tmpA = new ArrayList(); ArrayList tmpA = new ArrayList();
double[] tmpD; double[] tmpD;
for (int i = 1; i < lines.length; i++) { for (int i = 1; i < lines.length; i++) {
tmpD = new double[this.m_Titles.length]; tmpD = new double[this.titles.length];
lines[i].trim(); lines[i].trim();
tmpS = lines[i].split("\t"); tmpS = lines[i].split("\t");
for (int j = 0; (j < tmpD.length) && (j < tmpS.length); j++) { for (int j = 0; (j < tmpD.length) && (j < tmpS.length); j++) {
@ -87,9 +80,9 @@ public class MetricD1TrueParetoFront implements eva2.optimization.operator.paret
} }
tmpA.add(tmpD); tmpA.add(tmpD);
} }
this.m_Reference = new double[tmpA.size()][]; this.reference = new double[tmpA.size()][];
for (int i = 0; i < tmpA.size(); i++) { for (int i = 0; i < tmpA.size(); i++) {
this.m_Reference[i] = (double[]) tmpA.get(i); this.reference[i] = (double[]) tmpA.get(i);
} }
} }
@ -105,9 +98,9 @@ public class MetricD1TrueParetoFront implements eva2.optimization.operator.paret
if (pop.getArchive() != null) { if (pop.getArchive() != null) {
tmpPPO.addPopulation(pop.getArchive()); tmpPPO.addPopulation(pop.getArchive());
} }
if (this.m_Reference == null) { if (this.reference == null) {
this.loadReferenceData(); this.loadReferenceData();
if (this.m_Reference == null) { if (this.reference == null) {
System.out.println("No reference data!"); System.out.println("No reference data!");
return 0; return 0;
} }
@ -116,14 +109,14 @@ public class MetricD1TrueParetoFront implements eva2.optimization.operator.paret
dom.addElementsToArchive(tmpPPO); dom.addElementsToArchive(tmpPPO);
tmpPPO = tmpPPO.getArchive(); tmpPPO = tmpPPO.getArchive();
result = 0; result = 0;
for (int j = 0; j < this.m_Reference.length; j++) { for (int j = 0; j < this.reference.length; j++) {
min = Double.POSITIVE_INFINITY; min = Double.POSITIVE_INFINITY;
for (int i = 0; i < tmpPPO.size(); i++) { for (int i = 0; i < tmpPPO.size(); i++) {
min = Math.min(min, distance(((AbstractEAIndividual) tmpPPO.get(i)).getFitness(), this.m_Reference[j])); min = Math.min(min, distance(((AbstractEAIndividual) tmpPPO.get(i)).getFitness(), this.reference[j]));
} }
result += min; result += min;
} }
return (result / ((double) this.m_Reference.length)); return (result / ((double) this.reference.length));
} }
/** /**
@ -167,12 +160,12 @@ public class MetricD1TrueParetoFront implements eva2.optimization.operator.paret
* @param b File path. * @param b File path.
*/ */
public void setInputFilePath(PropertyFilePath b) { public void setInputFilePath(PropertyFilePath b) {
this.m_InputFilePath = b; this.inputFilePath = b;
this.loadReferenceData(); this.loadReferenceData();
} }
public PropertyFilePath getInputFilePath() { public PropertyFilePath getInputFilePath() {
return this.m_InputFilePath; return this.inputFilePath;
} }
public String inputFilePathTipText() { public String inputFilePathTipText() {

View File

@ -15,35 +15,30 @@ import java.util.ArrayList;
* The error ratio metric only suited for small discrete * The error ratio metric only suited for small discrete
* Pareto fronts, since it calculates the intersection between * Pareto fronts, since it calculates the intersection between
* the reference and the current solution. * the reference and the current solution.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 08.06.2005
* Time: 17:22:23
* To change this template use File | Settings | File Templates.
*/ */
public class MetricErrorRatio implements eva2.optimization.operator.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable { public class MetricErrorRatio implements eva2.optimization.operator.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable {
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt"); private PropertyFilePath inputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt");
private double m_Epsilon = 0.0001; private double epsilon = 0.0001;
private String[] m_Titles; private String[] titles;
private double[][] m_Reference; private double[][] reference;
public MetricErrorRatio() { public MetricErrorRatio() {
this.loadReferenceData(); this.loadReferenceData();
} }
public MetricErrorRatio(MetricErrorRatio b) { public MetricErrorRatio(MetricErrorRatio b) {
this.m_Epsilon = b.m_Epsilon; this.epsilon = b.epsilon;
if (b.m_Titles != null) { if (b.titles != null) {
this.m_Titles = new String[b.m_Titles.length]; this.titles = new String[b.titles.length];
for (int i = 0; i < this.m_Titles.length; i++) { for (int i = 0; i < this.titles.length; i++) {
this.m_Titles[i] = b.m_Titles[i]; this.titles[i] = b.titles[i];
} }
} }
if (b.m_Reference != null) { if (b.reference != null) {
this.m_Reference = new double[b.m_Reference.length][b.m_Reference[0].length]; this.reference = new double[b.reference.length][b.reference[0].length];
for (int i = 0; i < this.m_Reference.length; i++) { for (int i = 0; i < this.reference.length; i++) {
for (int j = 0; j < this.m_Reference[i].length; j++) { for (int j = 0; j < this.reference[i].length; j++) {
this.m_Reference[i][j] = b.m_Reference[i][j]; this.reference[i][j] = b.reference[i][j];
} }
} }
} }
@ -70,16 +65,16 @@ public class MetricErrorRatio implements eva2.optimization.operator.paretofrontm
* This method loads the reference data * This method loads the reference data
*/ */
private void loadReferenceData() { private void loadReferenceData() {
String[] tmpS, lines = FileTools.loadStringsFromFile(this.m_InputFilePath.getCompleteFilePath()); String[] tmpS, lines = FileTools.loadStringsFromFile(this.inputFilePath.getCompleteFilePath());
if (lines == null) { if (lines == null) {
System.out.println("Failed to read " + this.m_InputFilePath.getCompleteFilePath()); System.out.println("Failed to read " + this.inputFilePath.getCompleteFilePath());
} }
lines[0].trim(); lines[0].trim();
this.m_Titles = lines[0].split("\t"); this.titles = lines[0].split("\t");
ArrayList tmpA = new ArrayList(); ArrayList tmpA = new ArrayList();
double[] tmpD; double[] tmpD;
for (int i = 1; i < lines.length; i++) { for (int i = 1; i < lines.length; i++) {
tmpD = new double[this.m_Titles.length]; tmpD = new double[this.titles.length];
lines[i].trim(); lines[i].trim();
tmpS = lines[i].split("\t"); tmpS = lines[i].split("\t");
for (int j = 0; (j < tmpD.length) && (j < tmpS.length); j++) { for (int j = 0; (j < tmpD.length) && (j < tmpS.length); j++) {
@ -87,9 +82,9 @@ public class MetricErrorRatio implements eva2.optimization.operator.paretofrontm
} }
tmpA.add(tmpD); tmpA.add(tmpD);
} }
this.m_Reference = new double[tmpA.size()][]; this.reference = new double[tmpA.size()][];
for (int i = 0; i < tmpA.size(); i++) { for (int i = 0; i < tmpA.size(); i++) {
this.m_Reference[i] = (double[]) tmpA.get(i); this.reference[i] = (double[]) tmpA.get(i);
} }
} }
@ -106,9 +101,9 @@ public class MetricErrorRatio implements eva2.optimization.operator.paretofrontm
if (pop.getArchive() != null) { if (pop.getArchive() != null) {
tmpPPO.addPopulation(pop.getArchive()); tmpPPO.addPopulation(pop.getArchive());
} }
if (this.m_Reference == null) { if (this.reference == null) {
this.loadReferenceData(); this.loadReferenceData();
if (this.m_Reference == null) { if (this.reference == null) {
System.out.println("No reference data!"); System.out.println("No reference data!");
return 0; return 0;
} }
@ -132,12 +127,12 @@ public class MetricErrorRatio implements eva2.optimization.operator.paretofrontm
private boolean inReference(AbstractEAIndividual indy) { private boolean inReference(AbstractEAIndividual indy) {
double[] fitness = indy.getFitness(); double[] fitness = indy.getFitness();
double result = 0; double result = 0;
for (int i = 0; i < this.m_Reference.length; i++) { for (int i = 0; i < this.reference.length; i++) {
result = 0; result = 0;
for (int j = 0; (j < fitness.length) && (j < this.m_Reference[i].length); j++) { for (int j = 0; (j < fitness.length) && (j < this.reference[i].length); j++) {
result += Math.pow((fitness[j] - this.m_Reference[i][j]), 2); result += Math.pow((fitness[j] - this.reference[i][j]), 2);
} }
if (Math.sqrt(result) < this.m_Epsilon) { if (Math.sqrt(result) < this.epsilon) {
return true; return true;
} }
} }
@ -172,12 +167,12 @@ public class MetricErrorRatio implements eva2.optimization.operator.paretofrontm
* @param b File path. * @param b File path.
*/ */
public void setInputFilePath(PropertyFilePath b) { public void setInputFilePath(PropertyFilePath b) {
this.m_InputFilePath = b; this.inputFilePath = b;
this.loadReferenceData(); this.loadReferenceData();
} }
public PropertyFilePath getInputFilePath() { public PropertyFilePath getInputFilePath() {
return this.m_InputFilePath; return this.inputFilePath;
} }
public String inputFilePathTipText() { public String inputFilePathTipText() {
@ -190,11 +185,11 @@ public class MetricErrorRatio implements eva2.optimization.operator.paretofrontm
* @param d The upper border. * @param d The upper border.
*/ */
public void setEpsilon(double d) { public void setEpsilon(double d) {
this.m_Epsilon = d; this.epsilon = d;
} }
public double getEpsilon() { public double getEpsilon() {
return this.m_Epsilon; return this.epsilon;
} }
public String epsilonTipText() { public String epsilonTipText() {

View File

@ -13,33 +13,28 @@ import java.util.ArrayList;
/** /**
* Maximum Pareto Front Error gives the maximum distance of all minimum distances of each * Maximum Pareto Front Error gives the maximum distance of all minimum distances of each
* element in the current solution to the true Pareto front. * element in the current solution to the true Pareto front.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 09.06.2005
* Time: 13:25:44
* To change this template use File | Settings | File Templates.
*/ */
public class MetricMaximumParetoFrontError implements eva2.optimization.operator.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable { public class MetricMaximumParetoFrontError implements eva2.optimization.operator.paretofrontmetrics.InterfaceParetoFrontMetric, java.io.Serializable {
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt"); private PropertyFilePath inputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt");
private String[] m_Titles; private String[] titles;
private double[][] m_Reference; private double[][] reference;
public MetricMaximumParetoFrontError() { public MetricMaximumParetoFrontError() {
this.loadReferenceData(); this.loadReferenceData();
} }
public MetricMaximumParetoFrontError(MetricMaximumParetoFrontError b) { public MetricMaximumParetoFrontError(MetricMaximumParetoFrontError b) {
if (b.m_Titles != null) { if (b.titles != null) {
this.m_Titles = new String[b.m_Titles.length]; this.titles = new String[b.titles.length];
for (int i = 0; i < this.m_Titles.length; i++) { for (int i = 0; i < this.titles.length; i++) {
this.m_Titles[i] = b.m_Titles[i]; this.titles[i] = b.titles[i];
} }
} }
if (b.m_Reference != null) { if (b.reference != null) {
this.m_Reference = new double[b.m_Reference.length][b.m_Reference[0].length]; this.reference = new double[b.reference.length][b.reference[0].length];
for (int i = 0; i < this.m_Reference.length; i++) { for (int i = 0; i < this.reference.length; i++) {
for (int j = 0; j < this.m_Reference[i].length; j++) { for (int j = 0; j < this.reference[i].length; j++) {
this.m_Reference[i][j] = b.m_Reference[i][j]; this.reference[i][j] = b.reference[i][j];
} }
} }
} }
@ -66,16 +61,16 @@ public class MetricMaximumParetoFrontError implements eva2.optimization.operator
* This method loads the reference data * This method loads the reference data
*/ */
private void loadReferenceData() { private void loadReferenceData() {
String[] tmpS, lines = FileTools.loadStringsFromFile(this.m_InputFilePath.getCompleteFilePath()); String[] tmpS, lines = FileTools.loadStringsFromFile(this.inputFilePath.getCompleteFilePath());
if (lines == null) { if (lines == null) {
System.out.println("Failed to read " + this.m_InputFilePath.getCompleteFilePath()); System.out.println("Failed to read " + this.inputFilePath.getCompleteFilePath());
} }
lines[0].trim(); lines[0].trim();
this.m_Titles = lines[0].split("\t"); this.titles = lines[0].split("\t");
ArrayList tmpA = new ArrayList(); ArrayList tmpA = new ArrayList();
double[] tmpD; double[] tmpD;
for (int i = 1; i < lines.length; i++) { for (int i = 1; i < lines.length; i++) {
tmpD = new double[this.m_Titles.length]; tmpD = new double[this.titles.length];
lines[i].trim(); lines[i].trim();
tmpS = lines[i].split("\t"); tmpS = lines[i].split("\t");
for (int j = 0; (j < tmpD.length) && (j < tmpS.length); j++) { for (int j = 0; (j < tmpD.length) && (j < tmpS.length); j++) {
@ -83,9 +78,9 @@ public class MetricMaximumParetoFrontError implements eva2.optimization.operator
} }
tmpA.add(tmpD); tmpA.add(tmpD);
} }
this.m_Reference = new double[tmpA.size()][]; this.reference = new double[tmpA.size()][];
for (int i = 0; i < tmpA.size(); i++) { for (int i = 0; i < tmpA.size(); i++) {
this.m_Reference[i] = (double[]) tmpA.get(i); this.reference[i] = (double[]) tmpA.get(i);
} }
} }
@ -101,9 +96,9 @@ public class MetricMaximumParetoFrontError implements eva2.optimization.operator
if (pop.getArchive() != null) { if (pop.getArchive() != null) {
tmpPPO.addPopulation(pop.getArchive()); tmpPPO.addPopulation(pop.getArchive());
} }
if (this.m_Reference == null) { if (this.reference == null) {
this.loadReferenceData(); this.loadReferenceData();
if (this.m_Reference == null) { if (this.reference == null) {
System.out.println("No reference data!"); System.out.println("No reference data!");
return 0; return 0;
} }
@ -112,10 +107,10 @@ public class MetricMaximumParetoFrontError implements eva2.optimization.operator
dom.addElementsToArchive(tmpPPO); dom.addElementsToArchive(tmpPPO);
tmpPPO = tmpPPO.getArchive(); tmpPPO = tmpPPO.getArchive();
result = Double.NEGATIVE_INFINITY; result = Double.NEGATIVE_INFINITY;
for (int j = 0; j < this.m_Reference.length; j++) { for (int j = 0; j < this.reference.length; j++) {
min = Double.POSITIVE_INFINITY; min = Double.POSITIVE_INFINITY;
for (int i = 0; i < tmpPPO.size(); i++) { for (int i = 0; i < tmpPPO.size(); i++) {
min = Math.min(min, distance(((AbstractEAIndividual) tmpPPO.get(i)).getFitness(), this.m_Reference[j])); min = Math.min(min, distance(((AbstractEAIndividual) tmpPPO.get(i)).getFitness(), this.reference[j]));
} }
result = Math.max(result, min); result = Math.max(result, min);
} }
@ -163,12 +158,12 @@ public class MetricMaximumParetoFrontError implements eva2.optimization.operator
* @param b File path. * @param b File path.
*/ */
public void setInputFilePath(PropertyFilePath b) { public void setInputFilePath(PropertyFilePath b) {
this.m_InputFilePath = b; this.inputFilePath = b;
this.loadReferenceData(); this.loadReferenceData();
} }
public PropertyFilePath getInputFilePath() { public PropertyFilePath getInputFilePath() {
return this.m_InputFilePath; return this.inputFilePath;
} }
public String inputFilePathTipText() { public String inputFilePathTipText() {

View File

@ -8,15 +8,10 @@ import eva2.optimization.problems.AbstractMultiObjectiveOptimizationProblem;
/** /**
* Overall Non-Dom. Vector Generation calculates simply the number of * Overall Non-Dom. Vector Generation calculates simply the number of
* non-dominated solutions in the current soltuion set. * non-dominated solutions in the current soltuion set.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 08.06.2005
* Time: 14:27:44
* To change this template use File | Settings | File Templates.
*/ */
public class MetricOverallNonDominatedVectors implements InterfaceParetoFrontMetric, java.io.Serializable { public class MetricOverallNonDominatedVectors implements InterfaceParetoFrontMetric, java.io.Serializable {
private ArchivingAllDominating m_Dom = new ArchivingAllDominating(); private ArchivingAllDominating dominating = new ArchivingAllDominating();
public MetricOverallNonDominatedVectors() { public MetricOverallNonDominatedVectors() {
@ -55,8 +50,8 @@ public class MetricOverallNonDominatedVectors implements InterfaceParetoFrontMet
tmpPPO.addPopulation(pop.getArchive()); tmpPPO.addPopulation(pop.getArchive());
} }
for (int i = 0; i < tmpPPO.size(); i++) { for (int i = 0; i < tmpPPO.size(); i++) {
if (this.m_Dom.isDominant((AbstractEAIndividual) tmpPPO.get(i), tmpPop)) { if (this.dominating.isDominant((AbstractEAIndividual) tmpPPO.get(i), tmpPop)) {
this.m_Dom.addIndividualToArchive((AbstractEAIndividual) tmpPPO.get(i), tmpPop); this.dominating.addIndividualToArchive((AbstractEAIndividual) tmpPPO.get(i), tmpPop);
} }
} }
return tmpPop.size(); return tmpPop.size();

View File

@ -9,15 +9,10 @@ import eva2.optimization.problems.AbstractMultiObjectiveOptimizationProblem;
/** /**
* S-Metric calculates the hyper-volume covered between the current solutions and a reference point. * S-Metric calculates the hyper-volume covered between the current solutions and a reference point.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 08.06.2005
* Time: 14:28:24
* To change this template use File | Settings | File Templates.
*/ */
public class MetricS implements InterfaceParetoFrontMetric, java.io.Serializable { public class MetricS implements InterfaceParetoFrontMetric, java.io.Serializable {
private double[][] m_ObjectiveSpaceRange; private double[][] objectiveSpaceRange;
private static boolean TRACE = false; private static boolean TRACE = false;
public MetricS() { public MetricS() {
@ -25,11 +20,11 @@ public class MetricS implements InterfaceParetoFrontMetric, java.io.Serializable
} }
public MetricS(MetricS b) { public MetricS(MetricS b) {
if (b.m_ObjectiveSpaceRange != null) { if (b.objectiveSpaceRange != null) {
this.m_ObjectiveSpaceRange = new double[b.m_ObjectiveSpaceRange.length][2]; this.objectiveSpaceRange = new double[b.objectiveSpaceRange.length][2];
for (int i = 0; i < this.m_ObjectiveSpaceRange.length; i++) { for (int i = 0; i < this.objectiveSpaceRange.length; i++) {
this.m_ObjectiveSpaceRange[i][0] = b.m_ObjectiveSpaceRange[i][0]; this.objectiveSpaceRange[i][0] = b.objectiveSpaceRange[i][0];
this.m_ObjectiveSpaceRange[i][1] = b.m_ObjectiveSpaceRange[i][1]; this.objectiveSpaceRange[i][1] = b.objectiveSpaceRange[i][1];
} }
} }
} }
@ -45,7 +40,7 @@ public class MetricS implements InterfaceParetoFrontMetric, java.io.Serializable
} }
public void setObjectiveSpaceRange(double[][] range) { public void setObjectiveSpaceRange(double[][] range) {
this.m_ObjectiveSpaceRange = range; this.objectiveSpaceRange = range;
} }
/** /**
@ -61,14 +56,14 @@ public class MetricS implements InterfaceParetoFrontMetric, java.io.Serializable
*/ */
@Override @Override
public double calculateMetricOn(Population pop, AbstractMultiObjectiveOptimizationProblem problem) { public double calculateMetricOn(Population pop, AbstractMultiObjectiveOptimizationProblem problem) {
this.m_ObjectiveSpaceRange = problem.getObjectiveSpaceRange(); this.objectiveSpaceRange = problem.getObjectiveSpaceRange();
if (TRACE) { if (TRACE) {
System.out.println("Border: " + BeanInspector.toString(m_ObjectiveSpaceRange)); System.out.println("Border: " + BeanInspector.toString(objectiveSpaceRange));
} }
double smetric = this.calculateSMetric(pop, this.m_ObjectiveSpaceRange, this.m_ObjectiveSpaceRange.length); double smetric = this.calculateSMetric(pop, this.objectiveSpaceRange, this.objectiveSpaceRange.length);
double reference = 1; double reference = 1;
for (int i = 0; i < this.m_ObjectiveSpaceRange.length; i++) { for (int i = 0; i < this.objectiveSpaceRange.length; i++) {
reference *= (this.m_ObjectiveSpaceRange[i][1] - this.m_ObjectiveSpaceRange[i][0]); reference *= (this.objectiveSpaceRange[i][1] - this.objectiveSpaceRange[i][0]);
} }
//System.out.println("SMetric: "+smetric +" Reference: " + reference); //System.out.println("SMetric: "+smetric +" Reference: " + reference);
double res = ((Math.abs(smetric) / Math.abs(reference)) * 100); double res = ((Math.abs(smetric) / Math.abs(reference)) * 100);
@ -82,10 +77,10 @@ public class MetricS implements InterfaceParetoFrontMetric, java.io.Serializable
// * an achieved Pareto-Front // * an achieved Pareto-Front
// */ // */
// public double calculateMetricOn(Population pop) { // public double calculateMetricOn(Population pop) {
// double smetric = this.calculateSMetric(pop, this.m_ObjectiveSpaceRange, this.m_ObjectiveSpaceRange.length); // double smetric = this.calculateSMetric(pop, this.objectiveSpaceRange, this.objectiveSpaceRange.length);
// double reference = 1; // double reference = 1;
// for (int i = 0; i < this.m_ObjectiveSpaceRange.length; i++) { // for (int i = 0; i < this.objectiveSpaceRange.length; i++) {
// reference *= (this.m_ObjectiveSpaceRange[i][1] - this.m_ObjectiveSpaceRange[i][0]); // reference *= (this.objectiveSpaceRange[i][1] - this.objectiveSpaceRange[i][0]);
// } // }
// //System.out.println("SMetric: "+smetric +" Reference: " + reference); // //System.out.println("SMetric: "+smetric +" Reference: " + reference);
// return ((Math.abs(smetric)/Math.abs(reference))*100); // return ((Math.abs(smetric)/Math.abs(reference))*100);

View File

@ -14,41 +14,36 @@ import java.util.ArrayList;
/** /**
* S-Metric calculates the hyper-volume covered between the current solutions and a reference point. * S-Metric calculates the hyper-volume covered between the current solutions and a reference point.
* But here the difference to a given hybervolume is to be minimized. * But here the difference to a given hybervolume is to be minimized.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 28.06.2005
* Time: 10:58:33
* To change this template use File | Settings | File Templates.
*/ */
public class MetricSWithReference implements InterfaceParetoFrontMetric, java.io.Serializable { public class MetricSWithReference implements InterfaceParetoFrontMetric, java.io.Serializable {
private double[][] m_ObjectiveSpaceRange; private double[][] objectiveSpaceRange;
private PropertyFilePath m_InputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt"); private PropertyFilePath inputFilePath = PropertyFilePath.getFilePathFromResource("MOPReference/T1_250.txt");
private String[] m_Titles; private String[] titles;
private double[][] m_Reference; private double[][] reference;
private double m_ReferenceSMetric = -1; private double referenceSMetric = -1;
public MetricSWithReference() { public MetricSWithReference() {
this.loadReferenceData(); this.loadReferenceData();
} }
public MetricSWithReference(MetricSWithReference b) { public MetricSWithReference(MetricSWithReference b) {
if (b.m_ObjectiveSpaceRange != null) { if (b.objectiveSpaceRange != null) {
this.m_ObjectiveSpaceRange = new double[b.m_ObjectiveSpaceRange.length][2]; this.objectiveSpaceRange = new double[b.objectiveSpaceRange.length][2];
for (int i = 0; i < this.m_ObjectiveSpaceRange.length; i++) { for (int i = 0; i < this.objectiveSpaceRange.length; i++) {
this.m_ObjectiveSpaceRange[i][0] = b.m_ObjectiveSpaceRange[i][0]; this.objectiveSpaceRange[i][0] = b.objectiveSpaceRange[i][0];
this.m_ObjectiveSpaceRange[i][1] = b.m_ObjectiveSpaceRange[i][1]; this.objectiveSpaceRange[i][1] = b.objectiveSpaceRange[i][1];
} }
} }
this.m_InputFilePath = b.m_InputFilePath; this.inputFilePath = b.inputFilePath;
if (b.m_Titles != null) { if (b.titles != null) {
this.m_Titles = new String[b.m_Titles.length]; this.titles = new String[b.titles.length];
System.arraycopy(b.m_Titles, 0, this.m_Titles, 0, this.m_Titles.length); System.arraycopy(b.titles, 0, this.titles, 0, this.titles.length);
} }
if (b.m_Reference != null) { if (b.reference != null) {
this.m_Reference = new double[b.m_Reference.length][]; this.reference = new double[b.reference.length][];
for (int i = 0; i < this.m_Reference.length; i++) { for (int i = 0; i < this.reference.length; i++) {
this.m_Reference[i] = new double[b.m_Reference[i].length]; this.reference[i] = new double[b.reference[i].length];
System.arraycopy(b.m_Reference[i], 0, this.m_Reference[i], 0, this.m_Reference[i].length); System.arraycopy(b.reference[i], 0, this.reference[i], 0, this.reference[i].length);
} }
} }
} }
@ -71,23 +66,23 @@ public class MetricSWithReference implements InterfaceParetoFrontMetric, java.io
} }
public void setObjectiveSpaceRange(double[][] range) { public void setObjectiveSpaceRange(double[][] range) {
this.m_ObjectiveSpaceRange = range; this.objectiveSpaceRange = range;
} }
/** /**
* This method loads the reference data * This method loads the reference data
*/ */
private void loadReferenceData() { private void loadReferenceData() {
String[] tmpS, lines = FileTools.loadStringsFromFile(this.m_InputFilePath.getCompleteFilePath()); String[] tmpS, lines = FileTools.loadStringsFromFile(this.inputFilePath.getCompleteFilePath());
if (lines == null) { if (lines == null) {
System.out.println("Failed to read " + this.m_InputFilePath.getCompleteFilePath()); System.out.println("Failed to read " + this.inputFilePath.getCompleteFilePath());
} }
lines[0].trim(); lines[0].trim();
this.m_Titles = lines[0].split("\t"); this.titles = lines[0].split("\t");
ArrayList tmpA = new ArrayList(); ArrayList tmpA = new ArrayList();
double[] tmpD; double[] tmpD;
for (int i = 1; i < lines.length; i++) { for (int i = 1; i < lines.length; i++) {
tmpD = new double[this.m_Titles.length]; tmpD = new double[this.titles.length];
lines[i].trim(); lines[i].trim();
tmpS = lines[i].split("\t"); tmpS = lines[i].split("\t");
for (int j = 0; (j < tmpD.length) && (j < tmpS.length); j++) { for (int j = 0; (j < tmpD.length) && (j < tmpS.length); j++) {
@ -95,11 +90,11 @@ public class MetricSWithReference implements InterfaceParetoFrontMetric, java.io
} }
tmpA.add(tmpD); tmpA.add(tmpD);
} }
this.m_Reference = new double[tmpA.size()][]; this.reference = new double[tmpA.size()][];
for (int i = 0; i < tmpA.size(); i++) { for (int i = 0; i < tmpA.size(); i++) {
this.m_Reference[i] = (double[]) tmpA.get(i); this.reference[i] = (double[]) tmpA.get(i);
} }
this.m_ReferenceSMetric = -1; this.referenceSMetric = -1;
} }
/** /**
@ -108,21 +103,21 @@ public class MetricSWithReference implements InterfaceParetoFrontMetric, java.io
*/ */
@Override @Override
public double calculateMetricOn(Population pop, AbstractMultiObjectiveOptimizationProblem problem) { public double calculateMetricOn(Population pop, AbstractMultiObjectiveOptimizationProblem problem) {
this.m_ObjectiveSpaceRange = problem.getObjectiveSpaceRange(); this.objectiveSpaceRange = problem.getObjectiveSpaceRange();
double smetric = this.calculateSMetric(pop, this.m_ObjectiveSpaceRange, this.m_ObjectiveSpaceRange.length); double smetric = this.calculateSMetric(pop, this.objectiveSpaceRange, this.objectiveSpaceRange.length);
if (this.m_ReferenceSMetric < 0) { if (this.referenceSMetric < 0) {
Population tmpPop = new Population(); Population tmpPop = new Population();
AbstractEAIndividual tmpIndy; AbstractEAIndividual tmpIndy;
tmpPop.setTargetSize(this.m_Reference.length); tmpPop.setTargetSize(this.reference.length);
tmpPop.clear(); tmpPop.clear();
for (int i = 0; i < this.m_Reference.length; i++) { for (int i = 0; i < this.reference.length; i++) {
tmpIndy = new ESIndividualDoubleData(); tmpIndy = new ESIndividualDoubleData();
tmpIndy.setFitness(this.m_Reference[i]); tmpIndy.setFitness(this.reference[i]);
tmpPop.addIndividual(tmpIndy); tmpPop.addIndividual(tmpIndy);
} }
this.m_ReferenceSMetric = this.calculateSMetric(tmpPop, this.m_ObjectiveSpaceRange, this.m_ObjectiveSpaceRange.length); this.referenceSMetric = this.calculateSMetric(tmpPop, this.objectiveSpaceRange, this.objectiveSpaceRange.length);
} }
return (smetric - this.m_ReferenceSMetric); return (smetric - this.referenceSMetric);
} }
/** /**
@ -288,12 +283,12 @@ public class MetricSWithReference implements InterfaceParetoFrontMetric, java.io
* @param b File path. * @param b File path.
*/ */
public void setInputFilePath(PropertyFilePath b) { public void setInputFilePath(PropertyFilePath b) {
this.m_InputFilePath = b; this.inputFilePath = b;
this.loadReferenceData(); this.loadReferenceData();
} }
public PropertyFilePath getInputFilePath() { public PropertyFilePath getInputFilePath() {
return this.m_InputFilePath; return this.inputFilePath;
} }
public String inputFilePathTipText() { public String inputFilePathTipText() {

View File

@ -3,41 +3,37 @@ package eva2.optimization.operator.selection;
import java.util.ArrayList; import java.util.ArrayList;
/** /**
* Created by IntelliJ IDEA. *
* User: streiche
* Date: 24.02.2005
* Time: 11:31:58
* To change this template use File | Settings | File Templates.
*/ */
public class MOMultipleSolutions { public class MOMultipleSolutions {
public int m_ParetoOptimalSolutions; public int paretoOptimalSolutions;
private ArrayList m_Solutions = new ArrayList(); private ArrayList solutions = new ArrayList();
public int m_Iterations; public int iterations;
public int m_SizeDominantSolutions = 0; public int sizeDominantSolutions = 0;
public void add(double[] fit, double[] w) { public void add(double[] fit, double[] w) {
this.m_Solutions.add(new MOSolution(fit, w)); this.solutions.add(new MOSolution(fit, w));
} }
public void add(MOSolution p) { public void add(MOSolution p) {
this.m_Solutions.add(p); this.solutions.add(p);
} }
public MOSolution get(int i) { public MOSolution get(int i) {
return (MOSolution) this.m_Solutions.get(i); return (MOSolution) this.solutions.get(i);
} }
public Object remove(int i) { public Object remove(int i) {
return this.m_Solutions.remove(i); return this.solutions.remove(i);
} }
public int size() { public int size() {
return this.m_Solutions.size(); return this.solutions.size();
} }
public void reset() { public void reset() {
this.m_SizeDominantSolutions = 0; this.sizeDominantSolutions = 0;
} }
public void testDominance(MOMultipleSolutions malta) { public void testDominance(MOMultipleSolutions malta) {

View File

@ -4,24 +4,19 @@ import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.population.Population; import eva2.optimization.population.Population;
/** /**
* Simple method to selecet all. * Simple method to select all.
* In case of multiple fitness values the selection * In case of multiple fitness values the selection
* criteria is selected randomly for each selection event. pff * criteria is selected randomly for each selection event. pff
* Created by IntelliJ IDEA.
* User: streiche
* Date: 31.03.2004
* Time: 15:08:53
* To change this template use File | Settings | File Templates.
*/ */
public class SelectAll implements InterfaceSelection, java.io.Serializable { public class SelectAll implements InterfaceSelection, java.io.Serializable {
private boolean m_ObeyDebsConstViolationPrinciple = true; private boolean obeyDebsConstViolationPrinciple = true;
public SelectAll() { public SelectAll() {
} }
public SelectAll(SelectAll a) { public SelectAll(SelectAll a) {
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@ -55,7 +50,7 @@ public class SelectAll implements InterfaceSelection, java.io.Serializable {
public Population selectFrom(Population population, int size) { public Population selectFrom(Population population, int size) {
Population result = new Population(); Population result = new Population();
result.setTargetSize(size); result.setTargetSize(size);
if (this.m_ObeyDebsConstViolationPrinciple) { if (this.obeyDebsConstViolationPrinciple) {
int index = 0; int index = 0;
while (result.size() < size) { while (result.size() < size) {
if (!((AbstractEAIndividual) population.get(index % population.size())).violatesConstraint()) { if (!((AbstractEAIndividual) population.get(index % population.size())).violatesConstraint()) {
@ -121,11 +116,11 @@ public class SelectAll implements InterfaceSelection, java.io.Serializable {
*/ */
@Override @Override
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {

View File

@ -10,22 +10,17 @@ import java.util.ArrayList;
/** /**
* Select the best individuals. * Select the best individuals.
* In case of multiple fitness values the selection * In case of multiple fitness values the selection
* critria is selected randomly for each selection event. * criteria is selected randomly for each selection event.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 27.05.2003
* Time: 19:34:16
* To change this template use Options | File Templates.
*/ */
public class SelectBestIndividuals implements InterfaceSelection, java.io.Serializable { public class SelectBestIndividuals implements InterfaceSelection, java.io.Serializable {
private boolean m_ObeyDebsConstViolationPrinciple = true; private boolean obeyDebsConstViolationPrinciple = true;
public SelectBestIndividuals() { public SelectBestIndividuals() {
} }
public SelectBestIndividuals(SelectBestIndividuals a) { public SelectBestIndividuals(SelectBestIndividuals a) {
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@ -95,7 +90,7 @@ public class SelectBestIndividuals implements InterfaceSelection, java.io.Serial
boolean member; boolean member;
AbstractEAIndividual indy; AbstractEAIndividual indy;
if (this.m_ObeyDebsConstViolationPrinciple) { if (this.obeyDebsConstViolationPrinciple) {
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
indy = (AbstractEAIndividual) pop.get(i); indy = (AbstractEAIndividual) pop.get(i);
// check if indy is tabu // check if indy is tabu
@ -203,11 +198,11 @@ public class SelectBestIndividuals implements InterfaceSelection, java.io.Serial
*/ */
@Override @Override
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {

View File

@ -9,15 +9,10 @@ import eva2.tools.math.RNG;
* Select best individual multiple times if necessary. * Select best individual multiple times if necessary.
* In case of multiple fitness values the selection * In case of multiple fitness values the selection
* critria is selected randomly for each selection event. * critria is selected randomly for each selection event.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 18.03.2003
* Time: 16:17:10
* To change this template use Options | File Templates.
*/ */
public class SelectBestSingle implements InterfaceSelection, java.io.Serializable { public class SelectBestSingle implements InterfaceSelection, java.io.Serializable {
private boolean m_ObeyDebsConstViolationPrinciple = true; private boolean obeyDebsConstViolationPrinciple = true;
private boolean excludeSelfAsPartner = true; // try to avoid selecting as a mating partner the individual itself private boolean excludeSelfAsPartner = true; // try to avoid selecting as a mating partner the individual itself
public SelectBestSingle() { public SelectBestSingle() {
@ -28,7 +23,7 @@ public class SelectBestSingle implements InterfaceSelection, java.io.Serializabl
} }
public SelectBestSingle(SelectBestSingle a) { public SelectBestSingle(SelectBestSingle a) {
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@ -69,7 +64,7 @@ public class SelectBestSingle implements InterfaceSelection, java.io.Serializabl
} // trivial } // trivial
critSize = ((AbstractEAIndividual) population.get(0)).getFitness().length; critSize = ((AbstractEAIndividual) population.get(0)).getFitness().length;
result.setTargetSize(size); result.setTargetSize(size);
if (this.m_ObeyDebsConstViolationPrinciple) { if (this.obeyDebsConstViolationPrinciple) {
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
currentCriteria = RNG.randomInt(0, critSize - 1); currentCriteria = RNG.randomInt(0, critSize - 1);
currentBestValue = Double.POSITIVE_INFINITY; currentBestValue = Double.POSITIVE_INFINITY;
@ -161,11 +156,11 @@ public class SelectBestSingle implements InterfaceSelection, java.io.Serializabl
*/ */
@Override @Override
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {

View File

@ -12,25 +12,20 @@ import java.util.ArrayList;
* for EP. * for EP.
* In case of multiple fitness values the selection * In case of multiple fitness values the selection
* critria is selected randomly for each selection event. * critria is selected randomly for each selection event.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 01.04.2003
* Time: 16:17:26
* To change this template use Options | File Templates.
*/ */
public class SelectEPTournaments implements InterfaceSelection, java.io.Serializable { public class SelectEPTournaments implements InterfaceSelection, java.io.Serializable {
private int m_TournamentSize = 4; private int tournamentSize = 4;
private int m_Tournaments = 10; private int tournaments = 10;
private boolean m_ObeyDebsConstViolationPrinciple = true; private boolean obeyDebsConstViolationPrinciple = true;
private int[][] m_Victories; private int[][] victories;
public SelectEPTournaments() { public SelectEPTournaments() {
} }
public SelectEPTournaments(SelectEPTournaments a) { public SelectEPTournaments(SelectEPTournaments a) {
this.m_TournamentSize = a.m_TournamentSize; this.tournamentSize = a.tournamentSize;
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@ -52,23 +47,23 @@ public class SelectEPTournaments implements InterfaceSelection, java.io.Serializ
int rand; int rand;
AbstractEAIndividual tmpIndy; AbstractEAIndividual tmpIndy;
this.m_Victories = new int[population.size()][population.getBestEAIndividual().getFitness().length]; this.victories = new int[population.size()][population.getBestEAIndividual().getFitness().length];
for (int i = 0; i < this.m_Victories.length; i++) { for (int i = 0; i < this.victories.length; i++) {
for (int j = 0; j < this.m_Victories[i].length; j++) { for (int j = 0; j < this.victories[i].length; j++) {
this.m_Victories[i][j] = 0; this.victories[i][j] = 0;
} }
} }
for (int i = 0; i < population.size(); i++) { for (int i = 0; i < population.size(); i++) {
for (int j = 0; j < this.m_Tournaments; j++) { for (int j = 0; j < this.tournaments; j++) {
for (int k = 0; k < best.length; k++) { for (int k = 0; k < best.length; k++) {
best[k] = i; best[k] = i;
} }
// perform tournament // perform tournament
for (int k = 0; k < this.m_TournamentSize; k++) { for (int k = 0; k < this.tournamentSize; k++) {
rand = RNG.randomInt(0, population.size() - 1); rand = RNG.randomInt(0, population.size() - 1);
tmpIndy = ((AbstractEAIndividual) population.get(rand)); tmpIndy = ((AbstractEAIndividual) population.get(rand));
for (int l = 0; l < best.length; l++) { for (int l = 0; l < best.length; l++) {
if (this.m_ObeyDebsConstViolationPrinciple) { if (this.obeyDebsConstViolationPrinciple) {
if ((!tmpIndy.violatesConstraint()) && (tmpIndy.getFitness(l) < ((AbstractEAIndividual) population.get(best[l])).getFitness(l))) { if ((!tmpIndy.violatesConstraint()) && (tmpIndy.getFitness(l) < ((AbstractEAIndividual) population.get(best[l])).getFitness(l))) {
best[l] = rand; best[l] = rand;
} }
@ -81,7 +76,7 @@ public class SelectEPTournaments implements InterfaceSelection, java.io.Serializ
} }
// assign victories // assign victories
for (int k = 0; k < best.length; k++) { for (int k = 0; k < best.length; k++) {
this.m_Victories[best[k]][k]++; this.victories[best[k]][k]++;
} }
} }
} }
@ -147,9 +142,9 @@ public class SelectEPTournaments implements InterfaceSelection, java.io.Serializ
break; break;
} }
} }
if ((!member) && (this.m_Victories[i][crit] > mostVictories)) { if ((!member) && (this.victories[i][crit] > mostVictories)) {
index = i; index = i;
mostVictories = this.m_Victories[i][crit]; mostVictories = this.victories[i][crit];
} }
} }
if (index >= 0) { if (index >= 0) {
@ -204,11 +199,11 @@ public class SelectEPTournaments implements InterfaceSelection, java.io.Serializ
} }
public int getTournamentSize() { public int getTournamentSize() {
return m_TournamentSize; return tournamentSize;
} }
public void setTournamentSize(int g) { public void setTournamentSize(int g) {
m_TournamentSize = g; tournamentSize = g;
} }
/** /**
@ -219,11 +214,11 @@ public class SelectEPTournaments implements InterfaceSelection, java.io.Serializ
} }
public int getTournaments() { public int getTournaments() {
return m_Tournaments; return tournaments;
} }
public void setTournaments(int g) { public void setTournaments(int g) {
m_Tournaments = g; tournaments = g;
} }
/** /**
@ -234,11 +229,11 @@ public class SelectEPTournaments implements InterfaceSelection, java.io.Serializ
*/ */
@Override @Override
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {

View File

@ -8,23 +8,18 @@ import eva2.optimization.population.Population;
/** /**
* An experimental implementation for mating restriction. * An experimental implementation for mating restriction.
* Possibly defunct. * Possibly defunct.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 06.08.2003
* Time: 19:05:24
* To change this template use Options | File Templates.
*/ */
public class SelectHomologousMate extends SelectTournament implements java.io.Serializable { public class SelectHomologousMate extends SelectTournament implements java.io.Serializable {
private double m_MatingRadius = 0.1; private double matingRadius = 0.1;
private InterfaceDistanceMetric m_Metric = new ObjectiveSpaceMetric(); private InterfaceDistanceMetric metric = new ObjectiveSpaceMetric();
public SelectHomologousMate() { public SelectHomologousMate() {
} }
public SelectHomologousMate(SelectHomologousMate a) { public SelectHomologousMate(SelectHomologousMate a) {
this.m_MatingRadius = a.m_MatingRadius; this.matingRadius = a.matingRadius;
this.m_Metric = (InterfaceDistanceMetric) a.m_Metric.clone(); this.metric = (InterfaceDistanceMetric) a.metric.clone();
} }
@Override @Override
@ -60,7 +55,7 @@ public class SelectHomologousMate extends SelectTournament implements java.io.Se
// first select all possible partners for daddy // first select all possible partners for daddy
// to be honest daddy himself is not omitted.... // to be honest daddy himself is not omitted....
for (int i = 0; i < availablePartners.size(); i++) { for (int i = 0; i < availablePartners.size(); i++) {
if (this.m_Metric.distance(dad, (AbstractEAIndividual) availablePartners.get(i)) < this.m_MatingRadius) { if (this.metric.distance(dad, (AbstractEAIndividual) availablePartners.get(i)) < this.matingRadius) {
possibleMates.add(availablePartners.get(i)); possibleMates.add(availablePartners.get(i));
} }
} }
@ -102,11 +97,11 @@ public class SelectHomologousMate extends SelectTournament implements java.io.Se
* @return The current optimizing method * @return The current optimizing method
*/ */
public double getMatingRadius() { public double getMatingRadius() {
return this.m_MatingRadius; return this.matingRadius;
} }
public void setMatingRadius(double b) { public void setMatingRadius(double b) {
this.m_MatingRadius = b; this.matingRadius = b;
} }
public String matingRadiusTipText() { public String matingRadiusTipText() {
@ -119,11 +114,11 @@ public class SelectHomologousMate extends SelectTournament implements java.io.Se
* @param Metric * @param Metric
*/ */
public void setMetric(InterfaceDistanceMetric Metric) { public void setMetric(InterfaceDistanceMetric Metric) {
this.m_Metric = Metric; this.metric = Metric;
} }
public InterfaceDistanceMetric getMetric() { public InterfaceDistanceMetric getMetric() {
return this.m_Metric; return this.metric;
} }
public String metricTipText() { public String metricTipText() {

View File

@ -7,23 +7,18 @@ import eva2.optimization.population.Population;
* Experimental selection mechanism for MOMA II where * Experimental selection mechanism for MOMA II where
* a single individual is a whole set of Pareto optimal * a single individual is a whole set of Pareto optimal
* solution. Currently defunct. * solution. Currently defunct.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 24.02.2005
* Time: 16:51:52
* To change this template use File | Settings | File Templates.
*/ */
public class SelectMOMAIIDominanceCounter implements InterfaceSelection, java.io.Serializable { public class SelectMOMAIIDominanceCounter implements InterfaceSelection, java.io.Serializable {
private InterfaceSelection m_Selection = new SelectBestIndividuals(); private InterfaceSelection selection = new SelectBestIndividuals();
private boolean m_ObeyDebsConstViolationPrinciple = true; private boolean obeyDebsConstViolationPrinciple = true;
public SelectMOMAIIDominanceCounter() { public SelectMOMAIIDominanceCounter() {
} }
public SelectMOMAIIDominanceCounter(SelectMOMAIIDominanceCounter a) { public SelectMOMAIIDominanceCounter(SelectMOMAIIDominanceCounter a) {
this.m_Selection = (InterfaceSelection) a.m_Selection.clone(); this.selection = (InterfaceSelection) a.selection.clone();
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@ -80,7 +75,7 @@ public class SelectMOMAIIDominanceCounter implements InterfaceSelection, java.io
domCount++; domCount++;
} }
} }
malta.m_SizeDominantSolutions = domCount; malta.sizeDominantSolutions = domCount;
double[] fitness = new double[1]; double[] fitness = new double[1];
fitness[0] = 1 / ((double) (domCount + 1)); fitness[0] = 1 / ((double) (domCount + 1));
tmpIndy1.setFitness(fitness); tmpIndy1.setFitness(fitness);
@ -103,7 +98,7 @@ public class SelectMOMAIIDominanceCounter implements InterfaceSelection, java.io
*/ */
@Override @Override
public Population selectFrom(Population population, int size) { public Population selectFrom(Population population, int size) {
return this.m_Selection.selectFrom(population, size); return this.selection.selectFrom(population, size);
} }
/** /**
@ -147,11 +142,11 @@ public class SelectMOMAIIDominanceCounter implements InterfaceSelection, java.io
* @param pop The selection method used. * @param pop The selection method used.
*/ */
public void setSelectionMethod(InterfaceSelection pop) { public void setSelectionMethod(InterfaceSelection pop) {
this.m_Selection = pop; this.selection = pop;
} }
public InterfaceSelection getSelectionMethod() { public InterfaceSelection getSelectionMethod() {
return this.m_Selection; return this.selection;
} }
public String selectionMethodTipText() { public String selectionMethodTipText() {
@ -166,11 +161,11 @@ public class SelectMOMAIIDominanceCounter implements InterfaceSelection, java.io
*/ */
@Override @Override
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {

View File

@ -7,25 +7,20 @@ import eva2.optimization.population.Population;
/** /**
* A multi-objective selection criterion based on the maximin * A multi-objective selection criterion based on the maximin
* method. * method.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 09.08.2004
* Time: 18:24:24
* To change this template use File | Settings | File Templates.
*/ */
public class SelectMOMaxiMin implements InterfaceSelection, java.io.Serializable { public class SelectMOMaxiMin implements InterfaceSelection, java.io.Serializable {
private MOSOMaxiMin m_MaxiMin = new MOSOMaxiMin(); private MOSOMaxiMin maxiMin = new MOSOMaxiMin();
private InterfaceSelection m_Selection = new SelectBestIndividuals(); private InterfaceSelection selection = new SelectBestIndividuals();
private boolean m_ObeyDebsConstViolationPrinciple = true; private boolean obeyDebsConstViolationPrinciple = true;
public SelectMOMaxiMin() { public SelectMOMaxiMin() {
} }
public SelectMOMaxiMin(SelectMOMaxiMin a) { public SelectMOMaxiMin(SelectMOMaxiMin a) {
this.m_MaxiMin = new MOSOMaxiMin(); this.maxiMin = new MOSOMaxiMin();
this.m_Selection = (InterfaceSelection) a.m_Selection.clone(); this.selection = (InterfaceSelection) a.selection.clone();
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@ -61,10 +56,10 @@ public class SelectMOMaxiMin implements InterfaceSelection, java.io.Serializable
double[] tmpD; double[] tmpD;
// Now calculate the MaxiMin Criterium // Now calculate the MaxiMin Criterium
this.m_MaxiMin.convertMultiObjective2SingleObjective(tmpPop); this.maxiMin.convertMultiObjective2SingleObjective(tmpPop);
this.m_Selection.setObeyDebsConstViolationPrinciple(this.m_ObeyDebsConstViolationPrinciple); this.selection.setObeyDebsConstViolationPrinciple(this.obeyDebsConstViolationPrinciple);
this.m_Selection.prepareSelection(tmpPop); this.selection.prepareSelection(tmpPop);
result = this.m_Selection.selectFrom(tmpPop, size); result = this.selection.selectFrom(tmpPop, size);
// now unconvert from SO to MO // now unconvert from SO to MO
for (int i = 0; i < result.size(); i++) { for (int i = 0; i < result.size(); i++) {
@ -115,11 +110,11 @@ public class SelectMOMaxiMin implements InterfaceSelection, java.io.Serializable
* @param pop The selection method used. * @param pop The selection method used.
*/ */
public void setSelectionMethod(InterfaceSelection pop) { public void setSelectionMethod(InterfaceSelection pop) {
this.m_Selection = pop; this.selection = pop;
} }
public InterfaceSelection getSelectionMethod() { public InterfaceSelection getSelectionMethod() {
return this.m_Selection; return this.selection;
} }
public String selectionMethodTipText() { public String selectionMethodTipText() {
@ -134,11 +129,11 @@ public class SelectMOMaxiMin implements InterfaceSelection, java.io.Serializable
*/ */
@Override @Override
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {

View File

@ -8,27 +8,22 @@ import eva2.tools.math.RNG;
/** /**
* The infamous NSGA-II selection scheme for multi-objective * The infamous NSGA-II selection scheme for multi-objective
* optimization based on Pareto ranks and hybergrids. * optimization based on Pareto ranks and hybergrids.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 04.03.2004
* Time: 17:22:40
* To change this template use File | Settings | File Templates.
*/ */
public class SelectMONSGAIICrowedTournament implements InterfaceSelection, java.io.Serializable { public class SelectMONSGAIICrowedTournament implements InterfaceSelection, java.io.Serializable {
private int m_TournamentSize = 4; private int tournamentSize = 4;
private ArchivingNSGAII m_NSGAII = new ArchivingNSGAII(); private ArchivingNSGAII NSGAII = new ArchivingNSGAII();
private Population[] m_Fronts; private Population[] fronts;
private boolean m_ObeyDebsConstViolationPrinciple = true; private boolean obeyDebsConstViolationPrinciple = true;
public SelectMONSGAIICrowedTournament() { public SelectMONSGAIICrowedTournament() {
} }
public SelectMONSGAIICrowedTournament(SelectMONSGAIICrowedTournament a) { public SelectMONSGAIICrowedTournament(SelectMONSGAIICrowedTournament a) {
this.m_TournamentSize = a.m_TournamentSize; this.tournamentSize = a.tournamentSize;
this.m_NSGAII = new ArchivingNSGAII(); this.NSGAII = new ArchivingNSGAII();
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@ -46,8 +41,8 @@ public class SelectMONSGAIICrowedTournament implements InterfaceSelection, java.
*/ */
@Override @Override
public void prepareSelection(Population population) { public void prepareSelection(Population population) {
this.m_Fronts = this.m_NSGAII.getNonDominatedSortedFronts(population); this.fronts = this.NSGAII.getNonDominatedSortedFronts(population);
this.m_NSGAII.calculateCrowdingDistance(this.m_Fronts); this.NSGAII.calculateCrowdingDistance(this.fronts);
} }
/** /**
@ -82,7 +77,7 @@ public class SelectMONSGAIICrowedTournament implements InterfaceSelection, java.
double curCrowdingDistance, tmpCrowdingDistance; double curCrowdingDistance, tmpCrowdingDistance;
try { try {
for (int i = 0; i < this.m_TournamentSize; i++) { for (int i = 0; i < this.tournamentSize; i++) {
tmpIndy = (AbstractEAIndividual) population.get(RNG.randomInt(0, population.size() - 1)); tmpIndy = (AbstractEAIndividual) population.get(RNG.randomInt(0, population.size() - 1));
tmpL = ((Integer) tmpIndy.getData("ParetoLevel")).intValue(); tmpL = ((Integer) tmpIndy.getData("ParetoLevel")).intValue();
if (tmpL < smallestLevel) { if (tmpL < smallestLevel) {
@ -187,11 +182,11 @@ public class SelectMONSGAIICrowedTournament implements InterfaceSelection, java.
} }
public int getTournamentSize() { public int getTournamentSize() {
return m_TournamentSize; return tournamentSize;
} }
public void setTournamentSize(int g) { public void setTournamentSize(int g) {
m_TournamentSize = g; tournamentSize = g;
} }
/** /**
@ -202,11 +197,11 @@ public class SelectMONSGAIICrowedTournament implements InterfaceSelection, java.
*/ */
@Override @Override
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {

View File

@ -8,21 +8,16 @@ import eva2.tools.math.RNG;
* This multi-objective selection method preferrs non-dominated * This multi-objective selection method preferrs non-dominated
* individuals over dominated ones. Actually, this fails in case * individuals over dominated ones. Actually, this fails in case
* all individuals are Pareto optimal. * all individuals are Pareto optimal.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 28.07.2003
* Time: 14:17:53
* To change this template use Options | File Templates.
*/ */
public class SelectMONonDominated implements InterfaceSelection, java.io.Serializable { public class SelectMONonDominated implements InterfaceSelection, java.io.Serializable {
private boolean m_ObeyDebsConstViolationPrinciple = true; private boolean obeyDebsConstViolationPrinciple = true;
public SelectMONonDominated() { public SelectMONonDominated() {
} }
public SelectMONonDominated(SelectMONonDominated a) { public SelectMONonDominated(SelectMONonDominated a) {
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@ -57,7 +52,7 @@ public class SelectMONonDominated implements InterfaceSelection, java.io.Seriali
Population result = new Population(); Population result = new Population();
int index = RNG.randomInt(0, population.size() - 1); int index = RNG.randomInt(0, population.size() - 1);
if (this.m_ObeyDebsConstViolationPrinciple) { if (this.obeyDebsConstViolationPrinciple) {
boolean feasible = false; boolean feasible = false;
for (int i = 0; i < population.size(); i++) { for (int i = 0; i < population.size(); i++) {
if (((AbstractEAIndividual) population.get(i)).getConstraintViolation() == 0) { if (((AbstractEAIndividual) population.get(i)).getConstraintViolation() == 0) {
@ -120,7 +115,7 @@ public class SelectMONonDominated implements InterfaceSelection, java.io.Seriali
* @return True if the individual is dominating * @return True if the individual is dominating
*/ */
public boolean isDominant(AbstractEAIndividual indy, Population pop) { public boolean isDominant(AbstractEAIndividual indy, Population pop) {
if (this.m_ObeyDebsConstViolationPrinciple) { if (this.obeyDebsConstViolationPrinciple) {
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
if (!(indy.equals(pop.get(i))) && (((AbstractEAIndividual) pop.get(i)).isDominatingDebConstraintsEqual(indy))) { if (!(indy.equals(pop.get(i))) && (((AbstractEAIndividual) pop.get(i)).isDominatingDebConstraintsEqual(indy))) {
return false; return false;
@ -165,11 +160,11 @@ public class SelectMONonDominated implements InterfaceSelection, java.io.Seriali
*/ */
@Override @Override
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {

View File

@ -7,26 +7,21 @@ import eva2.tools.math.RNG;
/** /**
* The multi-objective PESA selection method. * The multi-objective PESA selection method.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 11.08.2004
* Time: 10:56:47
* To change this template use File | Settings | File Templates.
*/ */
public class SelectMOPESA implements InterfaceSelection, java.io.Serializable { public class SelectMOPESA implements InterfaceSelection, java.io.Serializable {
ArchivingPESAII m_PESAII = new ArchivingPESAII(); ArchivingPESAII PESAII = new ArchivingPESAII();
int[] m_Squeeze; int[] squeeze;
int m_TournamentSize = 2; int tournamentSize = 2;
boolean m_ObeyDebsConstViolationPrinciple = true; boolean obeyDebsConstViolationPrinciple = true;
public SelectMOPESA() { public SelectMOPESA() {
} }
public SelectMOPESA(SelectMOPESA a) { public SelectMOPESA(SelectMOPESA a) {
this.m_PESAII = new ArchivingPESAII(); this.PESAII = new ArchivingPESAII();
this.m_TournamentSize = a.m_TournamentSize; this.tournamentSize = a.tournamentSize;
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@ -44,7 +39,7 @@ public class SelectMOPESA implements InterfaceSelection, java.io.Serializable {
*/ */
@Override @Override
public void prepareSelection(Population population) { public void prepareSelection(Population population) {
this.m_Squeeze = this.m_PESAII.calculateSqueezeFactor(population); this.squeeze = this.PESAII.calculateSqueezeFactor(population);
} }
/** /**
@ -77,9 +72,9 @@ public class SelectMOPESA implements InterfaceSelection, java.io.Serializable {
try { try {
winner = RNG.randomInt(0, population.size() - 1); winner = RNG.randomInt(0, population.size() - 1);
for (int i = 1; i < this.m_TournamentSize; i++) { for (int i = 1; i < this.tournamentSize; i++) {
tmp = RNG.randomInt(0, population.size() - 1); tmp = RNG.randomInt(0, population.size() - 1);
if (this.m_Squeeze[tmp] < this.m_Squeeze[winner]) { if (this.squeeze[tmp] < this.squeeze[winner]) {
winner = tmp; winner = tmp;
} }
} }
@ -133,11 +128,11 @@ public class SelectMOPESA implements InterfaceSelection, java.io.Serializable {
} }
public int getTournamentSize() { public int getTournamentSize() {
return m_TournamentSize; return tournamentSize;
} }
public void setTournamentSize(int g) { public void setTournamentSize(int g) {
m_TournamentSize = g; tournamentSize = g;
} }
/** /**
@ -148,11 +143,11 @@ public class SelectMOPESA implements InterfaceSelection, java.io.Serializable {
*/ */
@Override @Override
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {

View File

@ -13,27 +13,22 @@ import java.util.Hashtable;
/** /**
* The multi-objective PESA II selection criteria based on an n-dimensional * The multi-objective PESA II selection criteria based on an n-dimensional
* grid using a squeezing factor. * grid using a squeezing factor.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 11.08.2004
* Time: 10:55:24
* To change this template use File | Settings | File Templates.
*/ */
public class SelectMOPESAII implements InterfaceSelection, java.io.Serializable { public class SelectMOPESAII implements InterfaceSelection, java.io.Serializable {
ArchivingPESAII m_PESAII = new ArchivingPESAII(); ArchivingPESAII PESAII = new ArchivingPESAII();
int[] m_Squeeze; int[] squeeze;
int m_TournamentSize = 2; int tournamentSize = 2;
ArrayList m_GridBoxes; ArrayList gridBoxes;
boolean m_ObeyDebsConstViolationPrinciple = true; boolean obeyDebsConstViolationPrinciple = true;
public SelectMOPESAII() { public SelectMOPESAII() {
} }
public SelectMOPESAII(SelectMOPESAII a) { public SelectMOPESAII(SelectMOPESAII a) {
this.m_PESAII = new ArchivingPESAII(); this.PESAII = new ArchivingPESAII();
this.m_TournamentSize = a.m_TournamentSize; this.tournamentSize = a.tournamentSize;
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@ -51,7 +46,7 @@ public class SelectMOPESAII implements InterfaceSelection, java.io.Serializable
*/ */
@Override @Override
public void prepareSelection(Population population) { public void prepareSelection(Population population) {
this.m_Squeeze = this.m_PESAII.calculateSqueezeFactor(population); this.squeeze = this.PESAII.calculateSqueezeFactor(population);
Hashtable tmpGridBoxes = new Hashtable(); Hashtable tmpGridBoxes = new Hashtable();
ArrayList tmp; ArrayList tmp;
AbstractEAIndividual tmpIndy; AbstractEAIndividual tmpIndy;
@ -75,10 +70,10 @@ public class SelectMOPESAII implements InterfaceSelection, java.io.Serializable
tmp.add(tmpIndy); tmp.add(tmpIndy);
} }
// now build the arraylist from the Hashtable // now build the arraylist from the Hashtable
this.m_GridBoxes = new ArrayList(); this.gridBoxes = new ArrayList();
Enumeration myEnum = tmpGridBoxes.elements(); Enumeration myEnum = tmpGridBoxes.elements();
while (myEnum.hasMoreElements()) { while (myEnum.hasMoreElements()) {
this.m_GridBoxes.add(myEnum.nextElement()); this.gridBoxes.add(myEnum.nextElement());
} }
} }
@ -112,8 +107,8 @@ public class SelectMOPESAII implements InterfaceSelection, java.io.Serializable
int winner, tmp; int winner, tmp;
try { try {
box1 = (ArrayList) this.m_GridBoxes.get(RNG.randomInt(0, this.m_GridBoxes.size() - 1)); box1 = (ArrayList) this.gridBoxes.get(RNG.randomInt(0, this.gridBoxes.size() - 1));
box2 = (ArrayList) this.m_GridBoxes.get(RNG.randomInt(0, this.m_GridBoxes.size() - 1)); box2 = (ArrayList) this.gridBoxes.get(RNG.randomInt(0, this.gridBoxes.size() - 1));
if (((Integer) ((AbstractEAIndividual) box1.get(0)).getData("SqueezeFactor")).intValue() if (((Integer) ((AbstractEAIndividual) box1.get(0)).getData("SqueezeFactor")).intValue()
< ((Integer) ((AbstractEAIndividual) box2.get(0)).getData("SqueezeFactor")).intValue()) { < ((Integer) ((AbstractEAIndividual) box2.get(0)).getData("SqueezeFactor")).intValue()) {
resultIndy = (AbstractEAIndividual) (box1.get(RNG.randomInt(0, box1.size() - 1))); resultIndy = (AbstractEAIndividual) (box1.get(RNG.randomInt(0, box1.size() - 1)));
@ -169,11 +164,11 @@ public class SelectMOPESAII implements InterfaceSelection, java.io.Serializable
*/ */
@Override @Override
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {

View File

@ -12,26 +12,21 @@ import eva2.tools.chart2d.DPoint;
/** /**
* The SPEA II selection criteria using strength and raw fitness to determine * The SPEA II selection criteria using strength and raw fitness to determine
* good individuals. * good individuals.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 31.03.2004
* Time: 17:54:54
* To change this template use File | Settings | File Templates.
*/ */
public class SelectMOSPEAII implements InterfaceSelection, java.io.Serializable { public class SelectMOSPEAII implements InterfaceSelection, java.io.Serializable {
private InterfaceSelection m_EnvironmentSelection = new SelectTournament(); private InterfaceSelection environmentSelection = new SelectTournament();
private ArchivingSPEAII m_SPEAII = new ArchivingSPEAII(); private ArchivingSPEAII SPEAII = new ArchivingSPEAII();
private double[] m_SPEAFitness; private double[] SPEAFitness;
private boolean m_ObeyDebsConstViolationPrinciple = true; private boolean obeyDebsConstViolationPrinciple = true;
public SelectMOSPEAII() { public SelectMOSPEAII() {
} }
public SelectMOSPEAII(SelectMOSPEAII a) { public SelectMOSPEAII(SelectMOSPEAII a) {
this.m_SPEAII = new ArchivingSPEAII(); this.SPEAII = new ArchivingSPEAII();
this.m_EnvironmentSelection = (InterfaceSelection) a.m_EnvironmentSelection.clone(); this.environmentSelection = (InterfaceSelection) a.environmentSelection.clone();
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@ -49,7 +44,7 @@ public class SelectMOSPEAII implements InterfaceSelection, java.io.Serializable
*/ */
@Override @Override
public void prepareSelection(Population population) { public void prepareSelection(Population population) {
m_SPEAFitness = this.m_SPEAII.calculateSPEA(population); SPEAFitness = this.SPEAII.calculateSPEA(population);
} }
/** /**
@ -69,12 +64,12 @@ public class SelectMOSPEAII implements InterfaceSelection, java.io.Serializable
for (int i = 0; i < population.size(); i++) { for (int i = 0; i < population.size(); i++) {
orgFit[i] = ((AbstractEAIndividual) population.get(i)).getFitness(); orgFit[i] = ((AbstractEAIndividual) population.get(i)).getFitness();
newFit = new double[1]; newFit = new double[1];
newFit[0] = this.m_SPEAFitness[i]; newFit[0] = this.SPEAFitness[i];
((AbstractEAIndividual) population.get(i)).setFitness(newFit); ((AbstractEAIndividual) population.get(i)).setFitness(newFit);
} }
// then select // then select
Population result = this.m_EnvironmentSelection.selectFrom(population, size); Population result = this.environmentSelection.selectFrom(population, size);
// finally replace the fitness with the original // finally replace the fitness with the original
for (int i = 0; i < population.size(); i++) { for (int i = 0; i < population.size(); i++) {
@ -97,7 +92,7 @@ public class SelectMOSPEAII implements InterfaceSelection, java.io.Serializable
mySet.setConnectedMode(false); mySet.setConnectedMode(false);
for (int i = 0; i < orgFit.length; i++) { for (int i = 0; i < orgFit.length; i++) {
myPoint = new DPoint(orgFit[i][0], orgFit[i][1]); myPoint = new DPoint(orgFit[i][0], orgFit[i][1]);
tmp1 = Math.round(m_SPEAFitness[i] * 100) / (double) 100; tmp1 = Math.round(SPEAFitness[i] * 100) / (double) 100;
tmp = new Chart2DDPointIconText("" + tmp1); tmp = new Chart2DDPointIconText("" + tmp1);
tmp.setIcon(new Chart2DDPointIconCircle()); tmp.setIcon(new Chart2DDPointIconCircle());
myPoint.setIcon(tmp); myPoint.setIcon(tmp);
@ -155,11 +150,11 @@ public class SelectMOSPEAII implements InterfaceSelection, java.io.Serializable
* @param selection * @param selection
*/ */
public void setEnvironmentSelection(InterfaceSelection selection) { public void setEnvironmentSelection(InterfaceSelection selection) {
this.m_EnvironmentSelection = selection; this.environmentSelection = selection;
} }
public InterfaceSelection getEnvironmentSelection() { public InterfaceSelection getEnvironmentSelection() {
return this.m_EnvironmentSelection; return this.environmentSelection;
} }
public String environmentSelectionTipText() { public String environmentSelectionTipText() {
@ -174,11 +169,11 @@ public class SelectMOSPEAII implements InterfaceSelection, java.io.Serializable
*/ */
@Override @Override
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {

View File

@ -12,36 +12,31 @@ import eva2.tools.math.RNG;
* This method implements the roulette wheel selection for * This method implements the roulette wheel selection for
* a partical filter. In case of multiple fitness values the selection * a partical filter. In case of multiple fitness values the selection
* critria should be selected randomly for each selection event. * critria should be selected randomly for each selection event.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 18.03.2003
* Time: 16:36:11
* To change this template use Options | File Templates.
*/ */
public class SelectParticleWheel implements InterfaceSelection, java.io.Serializable { public class SelectParticleWheel implements InterfaceSelection, java.io.Serializable {
private boolean m_ObeyDebsConstViolationPrinciple = true; private boolean obeyDebsConstViolationPrinciple = true;
/** /**
* Comment for <code>serialVersionUID</code> * Comment for <code>serialVersionUID</code>
*/ */
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private InterfaceSelectionProbability m_SelProbCalculator = new SelProbStandard(); private InterfaceSelectionProbability selProbCalculator = new SelProbStandard();
private boolean selectFixedSteps = false; private boolean selectFixedSteps = false;
public SelectParticleWheel() { public SelectParticleWheel() {
} }
public SelectParticleWheel(double scalingProb) { public SelectParticleWheel(double scalingProb) {
m_SelProbCalculator = new SelProbStandardScaling(scalingProb); selProbCalculator = new SelProbStandardScaling(scalingProb);
} }
public SelectParticleWheel(InterfaceSelectionProbability selProb) { public SelectParticleWheel(InterfaceSelectionProbability selProb) {
m_SelProbCalculator = selProb; selProbCalculator = selProb;
} }
public SelectParticleWheel(SelectParticleWheel a) { public SelectParticleWheel(SelectParticleWheel a) {
this.m_SelProbCalculator = (InterfaceSelectionProbability) a.m_SelProbCalculator.clone(); this.selProbCalculator = (InterfaceSelectionProbability) a.selProbCalculator.clone();
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@ -51,7 +46,7 @@ public class SelectParticleWheel implements InterfaceSelection, java.io.Serializ
@Override @Override
public void prepareSelection(Population population) { public void prepareSelection(Population population) {
m_SelProbCalculator.computeSelectionProbability(population, "Fitness", m_ObeyDebsConstViolationPrinciple); selProbCalculator.computeSelectionProbability(population, "Fitness", obeyDebsConstViolationPrinciple);
} }
/** /**
@ -178,11 +173,11 @@ public class SelectParticleWheel implements InterfaceSelection, java.io.Serializ
*/ */
@Override @Override
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {
@ -208,18 +203,18 @@ public class SelectParticleWheel implements InterfaceSelection, java.io.Serializ
} }
/** /**
* @return the m_SelProbCalculator * @return the selProbCalculator
*/ */
public InterfaceSelectionProbability getSelProbCalculator() { public InterfaceSelectionProbability getSelProbCalculator() {
return m_SelProbCalculator; return selProbCalculator;
} }
/** /**
* @param selProbCalculator the m_SelProbCalculator to set * @param selProbCalculator the selProbCalculator to set
*/ */
public void setSelProbCalculator( public void setSelProbCalculator(
InterfaceSelectionProbability selProbCalculator) { InterfaceSelectionProbability selProbCalculator) {
m_SelProbCalculator = selProbCalculator; this.selProbCalculator = selProbCalculator;
} }
public String selProbCalculatorTipText() { public String selProbCalculatorTipText() {

View File

@ -7,29 +7,23 @@ import eva2.tools.math.RNG;
/** /**
* Random selection typically used for ES as mating selection. * Random selection typically used for ES as mating selection.
* <p/>
* Created by IntelliJ IDEA.
* User: streiche
* Date: 18.03.2003
* Time: 11:36:00
* To change this template use Options | File Templates.
*/ */
public class SelectRandom implements InterfaceSelection, java.io.Serializable { public class SelectRandom implements InterfaceSelection, java.io.Serializable {
private boolean m_ObeyDebsConstViolationPrinciple = false; private boolean obeyDebsConstViolationPrinciple = false;
private boolean withReplacement = true; private boolean withReplacement = true;
public SelectRandom() { public SelectRandom() {
} }
public SelectRandom(SelectRandom a) { public SelectRandom(SelectRandom a) {
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
this.withReplacement = a.withReplacement; this.withReplacement = a.withReplacement;
} }
public SelectRandom(boolean withRepl) { public SelectRandom(boolean withRepl) {
withReplacement = withRepl; withReplacement = withRepl;
if (m_ObeyDebsConstViolationPrinciple) { if (obeyDebsConstViolationPrinciple) {
System.err.println("Error, replacement selection not supported for constrained selection (SelectRandom)"); System.err.println("Error, replacement selection not supported for constrained selection (SelectRandom)");
} }
} }
@ -64,7 +58,7 @@ public class SelectRandom implements InterfaceSelection, java.io.Serializable {
public Population selectFrom(Population population, int size) { public Population selectFrom(Population population, int size) {
Population result = new Population(); Population result = new Population();
result.setTargetSize(size); result.setTargetSize(size);
if (this.m_ObeyDebsConstViolationPrinciple) { if (this.obeyDebsConstViolationPrinciple) {
int index = 0, rand; int index = 0, rand;
while (result.size() < size) { while (result.size() < size) {
rand = RNG.randomInt(0, population.size() - 1); rand = RNG.randomInt(0, population.size() - 1);
@ -141,11 +135,11 @@ public class SelectRandom implements InterfaceSelection, java.io.Serializable {
*/ */
@Override @Override
public void setObeyDebsConstViolationPrinciple(boolean b) { public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b; this.obeyDebsConstViolationPrinciple = b;
} }
public boolean getObeyDebsConstViolationPrinciple() { public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple; return this.obeyDebsConstViolationPrinciple;
} }
public String obeyDebsConstViolationPrincipleToolTip() { public String obeyDebsConstViolationPrincipleToolTip() {

View File

@ -205,47 +205,47 @@ public class SelectXProbRouletteWheel implements InterfaceSelection, java.io.Ser
class TreeElement implements java.io.Serializable { class TreeElement implements java.io.Serializable {
public double separator = 0; public double separator = 0;
public int m_Index = -1; public int index = -1;
public TreeElement m_Left = null, m_Right = null; public TreeElement leftElement = null, rightElement = null;
public TreeElement(double[][] d, int list, int low, int high) { public TreeElement(double[][] d, int list, int low, int high) {
//System.out.println("Calling Low/high: "+low+"/"+high); //System.out.println("Calling Low/high: "+low+"/"+high);
if (low == high) { if (low == high) {
// end reached // end reached
//System.out.println("This: "+low); //System.out.println("This: "+low);
this.m_Index = low; this.index = low;
} else { } else {
if (low == high - 1) { if (low == high - 1) {
//System.out.println("This: "+high); //System.out.println("This: "+high);
this.m_Index = high; this.index = high;
} else { } else {
int midPoint = (int) ((high + low) / 2); int midPoint = (int) ((high + low) / 2);
this.separator = d[midPoint - 1][list]; this.separator = d[midPoint - 1][list];
//System.out.println("Branching: "+midPoint + " : " + this.separator); //System.out.println("Branching: "+midPoint + " : " + this.separator);
this.m_Left = new TreeElement(d, list, low, midPoint); this.leftElement = new TreeElement(d, list, low, midPoint);
this.m_Right = new TreeElement(d, list, midPoint, high); this.rightElement = new TreeElement(d, list, midPoint, high);
} }
} }
} }
public int getIndexFor(double d) { public int getIndexFor(double d) {
if (this.m_Index >= 0) { if (this.index >= 0) {
return this.m_Index - 1; return this.index - 1;
} else { } else {
if (d < this.separator) { if (d < this.separator) {
return this.m_Left.getIndexFor(d); return this.leftElement.getIndexFor(d);
} else { } else {
return this.m_Right.getIndexFor(d); return this.rightElement.getIndexFor(d);
} }
} }
} }
@Override @Override
public String toString() { public String toString() {
if (this.m_Index >= 0) { if (this.index >= 0) {
return "Ind:" + this.m_Index; return "Ind:" + this.index;
} else { } else {
return "{" + this.m_Left.toString() + "} X<" + this.separator + " {" + this.m_Right.toString() + "}"; return "{" + this.leftElement.toString() + "} X<" + this.separator + " {" + this.rightElement.toString() + "}";
} }
} }
} }

View File

@ -7,25 +7,20 @@ import eva2.optimization.population.Population;
* Boltzman selection, actually it is no a selection method * Boltzman selection, actually it is no a selection method
* but a scaling method, but it is very good, because it is * but a scaling method, but it is very good, because it is
* invariant to any linear transition function. * invariant to any linear transition function.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 30.03.2004
* Time: 16:59:49
* To change this template use File | Settings | File Templates.
*/ */
public class SelProbBoltzman extends AbstractSelProb implements java.io.Serializable { public class SelProbBoltzman extends AbstractSelProb implements java.io.Serializable {
private double m_Q = 1.0; private double q = 1.0;
public SelProbBoltzman() { public SelProbBoltzman() {
} }
public SelProbBoltzman(double q) { public SelProbBoltzman(double q) {
m_Q = q; this.q = q;
} }
public SelProbBoltzman(SelProbBoltzman a) { public SelProbBoltzman(SelProbBoltzman a) {
this.m_Q = a.m_Q; this.q = a.q;
} }
@Override @Override
@ -88,9 +83,9 @@ public class SelProbBoltzman extends AbstractSelProb implements java.io.Serializ
sum = 0; sum = 0;
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
if (!((AbstractEAIndividual) population.get(i)).violatesConstraint()) { if (!((AbstractEAIndividual) population.get(i)).violatesConstraint()) {
result[i] = Math.exp((this.m_Q * -data[i][x]) / dev); result[i] = Math.exp((this.q * -data[i][x]) / dev);
} else { } else {
result[i] = Math.exp((this.m_Q * -worst) / dev); result[i] = Math.exp((this.q * -worst) / dev);
} }
sum += result[i]; sum += result[i];
} }
@ -145,7 +140,7 @@ public class SelProbBoltzman extends AbstractSelProb implements java.io.Serializ
} }
sum = 0; sum = 0;
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
result[i] = Math.exp((this.m_Q * -((AbstractEAIndividual) population.get(i)).getConstraintViolation()) / dev); result[i] = Math.exp((this.q * -((AbstractEAIndividual) population.get(i)).getConstraintViolation()) / dev);
sum += result[i]; sum += result[i];
} }
@ -196,7 +191,7 @@ public class SelProbBoltzman extends AbstractSelProb implements java.io.Serializ
} }
sum = 0; sum = 0;
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
result[i] = Math.exp((this.m_Q * -data[i][x]) / dev); result[i] = Math.exp((this.q * -data[i][x]) / dev);
sum += result[i]; sum += result[i];
} }
@ -257,11 +252,11 @@ public class SelProbBoltzman extends AbstractSelProb implements java.io.Serializ
* @return The new selection pressure q. * @return The new selection pressure q.
*/ */
public double getQ() { public double getQ() {
return this.m_Q; return this.q;
} }
public void setQ(double b) { public void setQ(double b) {
this.m_Q = Math.abs(b); this.q = Math.abs(b);
} }
public String qTipText() { public String qTipText() {

View File

@ -7,29 +7,24 @@ import eva2.optimization.population.Population;
/** /**
* Here we have the infamous fitness sharing method. * Here we have the infamous fitness sharing method.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 15.06.2005
* Time: 15:23:05
* To change this template use File | Settings | File Templates.
*/ */
public class SelProbFitnessSharing extends AbstractSelProb implements java.io.Serializable { public class SelProbFitnessSharing extends AbstractSelProb implements java.io.Serializable {
private InterfaceSelectionProbability m_BasicNormationMethod = new SelProbStandard(); private InterfaceSelectionProbability basicNormationMethod = new SelProbStandard();
private InterfaceDistanceMetric m_DistanceMetric = new PhenotypeMetric(); private InterfaceDistanceMetric distanceMetric = new PhenotypeMetric();
private double m_SharingDistance = 0.1; private double sharingDistance = 0.1;
public SelProbFitnessSharing() { public SelProbFitnessSharing() {
} }
public SelProbFitnessSharing(SelProbFitnessSharing a) { public SelProbFitnessSharing(SelProbFitnessSharing a) {
if (a.m_BasicNormationMethod != null) { if (a.basicNormationMethod != null) {
this.m_BasicNormationMethod = (InterfaceSelectionProbability) a.m_BasicNormationMethod.clone(); this.basicNormationMethod = (InterfaceSelectionProbability) a.basicNormationMethod.clone();
} }
if (a.m_DistanceMetric != null) { if (a.distanceMetric != null) {
this.m_DistanceMetric = (InterfaceDistanceMetric) a.m_DistanceMetric; this.distanceMetric = (InterfaceDistanceMetric) a.distanceMetric;
} }
this.m_SharingDistance = a.m_SharingDistance; this.sharingDistance = a.sharingDistance;
} }
@Override @Override
@ -48,7 +43,7 @@ public class SelProbFitnessSharing extends AbstractSelProb implements java.io.Se
*/ */
@Override @Override
public void computeSelectionProbability(Population population, double[][] data, boolean obeyConst) { public void computeSelectionProbability(Population population, double[][] data, boolean obeyConst) {
this.m_BasicNormationMethod.computeSelectionProbability(population, data, obeyConst); this.basicNormationMethod.computeSelectionProbability(population, data, obeyConst);
// now perform fitness sharing // now perform fitness sharing
double[] selProb = new double[population.size()]; double[] selProb = new double[population.size()];
double distance, sharing, sum = 0; double distance, sharing, sum = 0;
@ -59,9 +54,9 @@ public class SelProbFitnessSharing extends AbstractSelProb implements java.io.Se
sharing = 0; sharing = 0;
for (int j = 0; j < population.size(); j++) { for (int j = 0; j < population.size(); j++) {
if (i != j) { if (i != j) {
distance = this.m_DistanceMetric.distance(tmpIndy1, ((AbstractEAIndividual) population.get(i))); distance = this.distanceMetric.distance(tmpIndy1, ((AbstractEAIndividual) population.get(i)));
if (distance < this.m_SharingDistance) { if (distance < this.sharingDistance) {
sharing += (1 - distance / this.m_SharingDistance); sharing += (1 - distance / this.sharingDistance);
} }
} }
} }
@ -101,11 +96,11 @@ public class SelProbFitnessSharing extends AbstractSelProb implements java.io.Se
* @return The new selection pressure q. * @return The new selection pressure q.
*/ */
public InterfaceSelectionProbability getBasicNormationMethod() { public InterfaceSelectionProbability getBasicNormationMethod() {
return this.m_BasicNormationMethod; return this.basicNormationMethod;
} }
public void setBasicNormationMethod(InterfaceSelectionProbability b) { public void setBasicNormationMethod(InterfaceSelectionProbability b) {
this.m_BasicNormationMethod = b; this.basicNormationMethod = b;
} }
public String basicNormationMethodTipText() { public String basicNormationMethodTipText() {
@ -118,11 +113,11 @@ public class SelProbFitnessSharing extends AbstractSelProb implements java.io.Se
* @return The new selection pressure q. * @return The new selection pressure q.
*/ */
public InterfaceDistanceMetric getDistanceMetric() { public InterfaceDistanceMetric getDistanceMetric() {
return this.m_DistanceMetric; return this.distanceMetric;
} }
public void setDistanceMetric(InterfaceDistanceMetric b) { public void setDistanceMetric(InterfaceDistanceMetric b) {
this.m_DistanceMetric = b; this.distanceMetric = b;
} }
public String distanceMetricTipText() { public String distanceMetricTipText() {
@ -135,14 +130,14 @@ public class SelProbFitnessSharing extends AbstractSelProb implements java.io.Se
* @return The new selection pressure q. * @return The new selection pressure q.
*/ */
public double getSharingDistance() { public double getSharingDistance() {
return this.m_SharingDistance; return this.sharingDistance;
} }
public void setSharingDistance(double b) { public void setSharingDistance(double b) {
if (b < 0.000001) { if (b < 0.000001) {
b = 0.000001; b = 0.000001;
} }
this.m_SharingDistance = b; this.sharingDistance = b;
} }
public String sharingDistanceTipText() { public String sharingDistanceTipText() {

View File

@ -6,25 +6,20 @@ import eva2.optimization.population.Population;
/** /**
* A non-linear ranking, which is difficult to tune to * A non-linear ranking, which is difficult to tune to
* the given optimization problem i guess. * the given optimization problem i guess.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 11.06.2004
* Time: 11:57:55
* To change this template use File | Settings | File Templates.
*/ */
public class SelProbNonLinearRanking extends AbstractSelProb implements java.io.Serializable { public class SelProbNonLinearRanking extends AbstractSelProb implements java.io.Serializable {
private double m_C = 0.04; private double c = 0.04;
public SelProbNonLinearRanking() { public SelProbNonLinearRanking() {
} }
public SelProbNonLinearRanking(double theC) { public SelProbNonLinearRanking(double theC) {
this.m_C = theC; this.c = theC;
} }
public SelProbNonLinearRanking(SelProbNonLinearRanking a) { public SelProbNonLinearRanking(SelProbNonLinearRanking a) {
this.m_C = a.m_C; this.c = a.c;
} }
@Override @Override
@ -98,7 +93,7 @@ public class SelProbNonLinearRanking extends AbstractSelProb implements java.io.
// set the selection propability // set the selection propability
sum = 0; sum = 0;
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
result[i] = this.m_C * Math.pow(1 - this.m_C, i); result[i] = this.c * Math.pow(1 - this.c, i);
sum += result[i]; sum += result[i];
} }
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
@ -137,7 +132,7 @@ public class SelProbNonLinearRanking extends AbstractSelProb implements java.io.
// set the selection propability // set the selection propability
sum = 0; sum = 0;
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
result[i] = this.m_C * Math.pow(1 - this.m_C, i); result[i] = this.c * Math.pow(1 - this.c, i);
sum += result[i]; sum += result[i];
} }
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
@ -178,7 +173,7 @@ public class SelProbNonLinearRanking extends AbstractSelProb implements java.io.
// set the selection propability // set the selection propability
sum = 0; sum = 0;
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
result[i] = this.m_C * Math.pow(1 - this.m_C, i); result[i] = this.c * Math.pow(1 - this.c, i);
sum += result[i]; sum += result[i];
} }
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
@ -220,11 +215,11 @@ public class SelProbNonLinearRanking extends AbstractSelProb implements java.io.
if (x > 1) { if (x > 1) {
x = 1; x = 1;
} }
this.m_C = x; this.c = x;
} }
public double getC() { public double getC() {
return m_C; return c;
} }
public String cTipText() { public String cTipText() {

View File

@ -7,12 +7,6 @@ import eva2.optimization.population.Population;
* A simple sum to calculate the selection probability. * A simple sum to calculate the selection probability.
* <p/> * <p/>
* p(i is selected) = exp(-fitness(i))/sum_j(exp(-fitness(j))) * p(i is selected) = exp(-fitness(i))/sum_j(exp(-fitness(j)))
* <p/>
* Created by IntelliJ IDEA.
* User: streiche
* Date: 30.03.2004
* Time: 16:54:48
* To change this template use File | Settings | File Templates.
*/ */
public class SelProbStandard extends AbstractSelProb implements java.io.Serializable { public class SelProbStandard extends AbstractSelProb implements java.io.Serializable {

View File

@ -5,25 +5,20 @@ import eva2.optimization.population.Population;
/** /**
* A simple sum with a scaling factor. * A simple sum with a scaling factor.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 30.03.2004
* Time: 16:57:51
* To change this template use File | Settings | File Templates.
*/ */
public class SelProbStandardScaling extends AbstractSelProb implements java.io.Serializable { public class SelProbStandardScaling extends AbstractSelProb implements java.io.Serializable {
private double m_Q = 0; private double Q = 0;
public SelProbStandardScaling() { public SelProbStandardScaling() {
} }
public SelProbStandardScaling(double q) { public SelProbStandardScaling(double q) {
m_Q = q; Q = q;
} }
public SelProbStandardScaling(SelProbStandardScaling a) { public SelProbStandardScaling(SelProbStandardScaling a) {
this.m_Q = a.m_Q; this.Q = a.Q;
} }
@Override @Override
@ -89,7 +84,7 @@ public class SelProbStandardScaling extends AbstractSelProb implements java.io.S
} }
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
result[i] = ((result[i] - min) / delta) + this.m_Q; result[i] = ((result[i] - min) / delta) + this.Q;
sum += result[i]; sum += result[i];
} }
@ -119,7 +114,7 @@ public class SelProbStandardScaling extends AbstractSelProb implements java.io.S
} }
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
result[i] = ((result[i] - min) / delta) + this.m_Q; result[i] = ((result[i] - min) / delta) + this.Q;
sum += result[i]; sum += result[i];
} }
for (int i = 0; i < population.size(); i++) { for (int i = 0; i < population.size(); i++) {
@ -150,7 +145,7 @@ public class SelProbStandardScaling extends AbstractSelProb implements java.io.S
} }
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
result[i] = ((result[i] - min) / delta) + this.m_Q; result[i] = ((result[i] - min) / delta) + this.Q;
sum += result[i]; sum += result[i];
} }
@ -188,11 +183,11 @@ public class SelProbStandardScaling extends AbstractSelProb implements java.io.S
* @return The new selection pressure q. * @return The new selection pressure q.
*/ */
public double getQ() { public double getQ() {
return this.m_Q; return this.Q;
} }
public void setQ(double b) { public void setQ(double b) {
this.m_Q = Math.abs(b); this.Q = Math.abs(b);
} }
public String qTipText() { public String qTipText() {

View File

@ -7,17 +7,12 @@ import eva2.optimization.population.Population;
/** /**
* This crowding method replaces the most similar individual from a random group if better. * This crowding method replaces the most similar individual from a random group if better.
* Created by IntelliJ IDEA.
* User: streiche
* Date: 19.07.2005
* Time: 15:25:15
* To change this template use File | Settings | File Templates.
*/ */
public class ReplacementCrowding implements InterfaceReplacement, java.io.Serializable { public class ReplacementCrowding implements InterfaceReplacement, java.io.Serializable {
PhenotypeMetric metric = new PhenotypeMetric(); PhenotypeMetric metric = new PhenotypeMetric();
SelectRandom random = new SelectRandom(); SelectRandom random = new SelectRandom();
int m_C = 5; int C = 5;
public ReplacementCrowding() { public ReplacementCrowding() {
@ -26,7 +21,7 @@ public class ReplacementCrowding implements InterfaceReplacement, java.io.Serial
public ReplacementCrowding(ReplacementCrowding b) { public ReplacementCrowding(ReplacementCrowding b) {
this.metric = new PhenotypeMetric(); this.metric = new PhenotypeMetric();
this.random = new SelectRandom(); this.random = new SelectRandom();
this.m_C = b.m_C; this.C = b.C;
} }
public ReplacementCrowding(int C) { public ReplacementCrowding(int C) {
@ -54,7 +49,7 @@ public class ReplacementCrowding implements InterfaceReplacement, java.io.Serial
int index = 0; int index = 0;
double distance = Double.POSITIVE_INFINITY, tmpD; double distance = Double.POSITIVE_INFINITY, tmpD;
Population tmp = random.selectFrom(pop, this.m_C); Population tmp = random.selectFrom(pop, this.C);
for (int i = 0; i < tmp.size(); i++) { for (int i = 0; i < tmp.size(); i++) {
tmpD = this.metric.distance(indy, (AbstractEAIndividual) tmp.get(i)); tmpD = this.metric.distance(indy, (AbstractEAIndividual) tmp.get(i));
if (tmpD < distance) { if (tmpD < distance) {
@ -95,11 +90,11 @@ public class ReplacementCrowding implements InterfaceReplacement, java.io.Serial
* @param c * @param c
*/ */
public void setC(int c) { public void setC(int c) {
this.m_C = c; this.C = c;
} }
public int getC() { public int getC() {
return this.m_C; return this.C;
} }
public String cTipText() { public String cTipText() {

View File

@ -1,17 +1,4 @@
package eva2.optimization.operator.terminators; package eva2.optimization.operator.terminators;
/*
* Title: EvA2
* Description:
* Copyright: Copyright (c) 2003
* Company: University of Tuebingen, Computer Architecture
* @author Holger Ulmer, Felix Streichert, Hannes Planatscher
* @version: $Revision: 319 $
* $Date: 2007-12-05 11:29:32 +0100 (Wed, 05 Dec 2007) $
* $Author: mkron $
*/
/*==========================================================================*
* IMPORTS
*==========================================================================*/
import eva2.gui.BeanInspector; import eva2.gui.BeanInspector;
import eva2.optimization.population.InterfaceSolutionSet; import eva2.optimization.population.InterfaceSolutionSet;
@ -20,23 +7,19 @@ import eva2.optimization.problems.InterfaceOptimizationProblem;
import java.io.Serializable; import java.io.Serializable;
/*==========================================================================*
* CLASS DECLARATION
*==========================================================================*/
/** /**
* *
*/ */
public class FitnessValueTerminator implements InterfaceTerminator, public class FitnessValueTerminator implements InterfaceTerminator,
Serializable { Serializable {
protected double[] m_FitnessValue; protected double[] fitnessValue;
private String msg = ""; private String msg = "";
/** /**
* *
*/ */
public FitnessValueTerminator() { public FitnessValueTerminator() {
m_FitnessValue = new double[]{0.1}; fitnessValue = new double[]{0.1};
} }
@Override @Override
@ -55,7 +38,7 @@ public class FitnessValueTerminator implements InterfaceTerminator,
* *
*/ */
public FitnessValueTerminator(double[] v) { public FitnessValueTerminator(double[] v) {
m_FitnessValue = (double[]) v.clone(); fitnessValue = (double[]) v.clone();
} }
@Override @Override
@ -67,11 +50,11 @@ public class FitnessValueTerminator implements InterfaceTerminator,
public boolean isTerminated(PopulationInterface Pop) { public boolean isTerminated(PopulationInterface Pop) {
double[] fit = Pop.getBestFitness(); double[] fit = Pop.getBestFitness();
for (int i = 0; i < fit.length; i++) { for (int i = 0; i < fit.length; i++) {
if (m_FitnessValue[i] < fit[i]) { if (fitnessValue[i] < fit[i]) {
return false; return false;
} }
} }
msg = "Fitness value reached " + BeanInspector.toString(m_FitnessValue); msg = "Fitness value reached " + BeanInspector.toString(fitnessValue);
return true; return true;
} }
@ -85,7 +68,7 @@ public class FitnessValueTerminator implements InterfaceTerminator,
*/ */
@Override @Override
public String toString() { public String toString() {
String ret = "FitnessValueTerminator,m_FitnessValue=" + m_FitnessValue; String ret = "FitnessValueTerminator,fitnessValue=" + fitnessValue;
return ret; return ret;
} }
@ -93,14 +76,14 @@ public class FitnessValueTerminator implements InterfaceTerminator,
* *
*/ */
public void setFitnessValue(double[] x) { public void setFitnessValue(double[] x) {
m_FitnessValue = x; fitnessValue = x;
} }
/** /**
* *
*/ */
public double[] getFitnessValue() { public double[] getFitnessValue() {
return m_FitnessValue; return fitnessValue;
} }
public String fitnessValueTipText() { public String fitnessValueTipText() {

View File

@ -79,31 +79,6 @@ public abstract class PopulationMeasureTerminator implements InterfaceTerminator
// this.condImprovementOrChange.setSelectedTag(o.condImprovementOrChange.getSelectedTagID()); // this.condImprovementOrChange.setSelectedTag(o.condImprovementOrChange.getSelectedTagID());
} }
// public void hideHideable() {
// setConvergenceCondition(getConvergenceCondition());
// }
// public PopulationMeasureTerminator() {
// pMetric = new PhenotypeMetric();
// }
//
// public PopulationMeasureTerminator(double thresh, int stagnPeriod, boolean bFitCallBased, boolean bAbsolute) {
// pMetric = new PhenotypeMetric();
// convThresh = thresh;
// this.m_stagTime = stagnPeriod;
// if (bFitCallBased) stagnationMeasure.setSelectedTag("Fitness calls");
// else stagnationMeasure.setSelectedTag("Generations");
// if (bAbsolute) convergenceCondition.setSelectedTag("Absolute");
// else convergenceCondition.setSelectedTag("Relative");
// }
//
// public PopulationMeasureTerminator(PopulationMeasureTerminator other) {
// pMetric = new PhenotypeMetric();
// convThresh = other.convThresh;
// this.m_stagTime = other.m_stagTime;
// stagnationMeasure.setSelectedTag(other.getStagnationMeasure().getSelectedTagID());
// convergenceCondition.setSelectedTag(other.getConvergenceCondition().getSelectedTagID());
// }
public static String globalInfo() { public static String globalInfo() {
return "Stop if a convergence criterion has been met."; return "Stop if a convergence criterion has been met.";
@ -290,10 +265,8 @@ public abstract class PopulationMeasureTerminator implements InterfaceTerminator
*/ */
private boolean stagnationTimeHasPassed(PopulationInterface pop) { private boolean stagnationTimeHasPassed(PopulationInterface pop) {
if (stagnationMeasure == StagnationTypeEnum.fitnessCallBased) { // by fitness calls if (stagnationMeasure == StagnationTypeEnum.fitnessCallBased) { // by fitness calls
// System.out.println("stagnationTimeHasPassed returns " + ((pop.getFunctionCalls() - popFitCalls) >= m_stagTime) + " after " + (pop.getFunctionCalls() - popFitCalls));
return (pop.getFunctionCalls() - oldPopFitCalls) >= stagTime; return (pop.getFunctionCalls() - oldPopFitCalls) >= stagTime;
} else {// by generation } else {// by generation
// System.out.println("stagnationTimeHasPassed returns " + ((pop.getFunctionCalls() - popGens) >= m_stagTime) + " after " + (pop.getFunctionCalls() - popGens));
return (pop.getGeneration() - oldPopGens) >= stagTime; return (pop.getGeneration() - oldPopGens) >= stagTime;
} }
} }

View File

@ -61,7 +61,7 @@ public class OptimizationJobList extends PropertySelectableList<OptimizationJob>
newArr = new OptimizationJob[curArr.length + 1]; newArr = new OptimizationJob[curArr.length + 1];
newSelection = new boolean[newArr.length]; newSelection = new boolean[newArr.length];
System.arraycopy(curArr, 0, newArr, 0, curArr.length); System.arraycopy(curArr, 0, newArr, 0, curArr.length);
System.arraycopy(m_Selection, 0, newSelection, 0, curArr.length); System.arraycopy(selections, 0, newSelection, 0, curArr.length);
} else { } else {
newArr = new OptimizationJob[1]; newArr = new OptimizationJob[1];
newSelection = new boolean[1]; newSelection = new boolean[1];