Renamed eva2.populations package to eva2.population

This commit is contained in:
2013-07-19 15:46:52 +02:00
parent 3b3c44ffc6
commit a4c45b6295
402 changed files with 4101 additions and 4102 deletions

View File

@@ -1,12 +1,12 @@
package eva2; package eva2;
import eva2.optimization.modules.OptimizationParameters; import eva2.optimization.modules.OptimizationParameters;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.NoMutation; import eva2.optimization.operator.mutation.NoMutation;
import eva2.optimization.operators.mutation.MutateESFixedStepSize; import eva2.optimization.operator.mutation.MutateESFixedStepSize;
import eva2.optimization.operators.mutation.MutateESCovarianceMatrixAdaption; import eva2.optimization.operator.mutation.MutateESCovarianceMatrixAdaption;
import eva2.optimization.operators.mutation.MutateESGlobal; import eva2.optimization.operator.mutation.MutateESGlobal;
import eva2.optimization.operators.mutation.MutateESRankMuCMA; import eva2.optimization.operator.mutation.MutateESRankMuCMA;
import eva2.optimization.strategies.ParticleSwarmOptimization; import eva2.optimization.strategies.ParticleSwarmOptimization;
import eva2.optimization.strategies.EvolutionStrategyIPOP; import eva2.optimization.strategies.EvolutionStrategyIPOP;
import eva2.optimization.strategies.GradientDescentAlgorithm; import eva2.optimization.strategies.GradientDescentAlgorithm;
@@ -36,24 +36,24 @@ import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.InterfaceDataTypeBinary; import eva2.optimization.individuals.InterfaceDataTypeBinary;
import eva2.optimization.individuals.InterfaceDataTypeDouble; import eva2.optimization.individuals.InterfaceDataTypeDouble;
import eva2.optimization.individuals.InterfaceESIndividual; import eva2.optimization.individuals.InterfaceESIndividual;
import eva2.optimization.operators.archiving.ArchivingNSGAII; import eva2.optimization.operator.archiving.ArchivingNSGAII;
import eva2.optimization.operators.archiving.InformationRetrievalInserting; import eva2.optimization.operator.archiving.InformationRetrievalInserting;
import eva2.optimization.operators.archiving.InterfaceArchiving; import eva2.optimization.operator.archiving.InterfaceArchiving;
import eva2.optimization.operators.archiving.InterfaceInformationRetrieval; import eva2.optimization.operator.archiving.InterfaceInformationRetrieval;
import eva2.optimization.operators.cluster.ClusteringDensityBased; import eva2.optimization.operator.cluster.ClusteringDensityBased;
import eva2.optimization.operators.cluster.InterfaceClustering; import eva2.optimization.operator.cluster.InterfaceClustering;
import eva2.optimization.operators.crossover.CrossoverESDefault; import eva2.optimization.operator.crossover.CrossoverESDefault;
import eva2.optimization.operators.crossover.InterfaceCrossover; import eva2.optimization.operator.crossover.InterfaceCrossover;
import eva2.optimization.operators.crossover.NoCrossover; import eva2.optimization.operator.crossover.NoCrossover;
import eva2.optimization.operators.distancemetric.IndividualDataMetric; import eva2.optimization.operator.distancemetric.IndividualDataMetric;
import eva2.optimization.operators.postprocess.InterfacePostProcessParams; import eva2.optimization.operator.postprocess.InterfacePostProcessParams;
import eva2.optimization.operators.postprocess.PostProcessParams; import eva2.optimization.operator.postprocess.PostProcessParams;
import eva2.optimization.operators.selection.InterfaceSelection; import eva2.optimization.operator.selection.InterfaceSelection;
import eva2.optimization.operators.selection.SelectBestIndividuals; import eva2.optimization.operator.selection.SelectBestIndividuals;
import eva2.optimization.operators.terminators.CombinedTerminator; import eva2.optimization.operator.terminators.CombinedTerminator;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.PBILPopulation; import eva2.optimization.population.PBILPopulation;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.AbstractOptimizationProblem; import eva2.optimization.problems.AbstractOptimizationProblem;
import eva2.optimization.stat.InterfaceStatistics; import eva2.optimization.stat.InterfaceStatistics;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;

View File

@@ -13,10 +13,10 @@ import eva2.optimization.go.InterfaceTerminator;
import eva2.optimization.individuals.InterfaceDataTypeBinary; import eva2.optimization.individuals.InterfaceDataTypeBinary;
import eva2.optimization.individuals.InterfaceDataTypeDouble; import eva2.optimization.individuals.InterfaceDataTypeDouble;
import eva2.optimization.individuals.InterfaceDataTypeInteger; import eva2.optimization.individuals.InterfaceDataTypeInteger;
import eva2.optimization.operators.postprocess.InterfacePostProcessParams; import eva2.optimization.operator.postprocess.InterfacePostProcessParams;
import eva2.optimization.operators.postprocess.PostProcessParams; import eva2.optimization.operator.postprocess.PostProcessParams;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.populations.SolutionSet; import eva2.optimization.population.SolutionSet;
import eva2.optimization.modules.OptimizationParameters; import eva2.optimization.modules.OptimizationParameters;
import eva2.optimization.modules.Processor; import eva2.optimization.modules.Processor;
import java.io.PrintWriter; import java.io.PrintWriter;

View File

@@ -1,13 +1,13 @@
package eva2.examples; package eva2.examples;
import eva2.OptimizerFactory; import eva2.OptimizerFactory;
import eva2.optimization.operators.terminators.CombinedTerminator; import eva2.optimization.operator.terminators.CombinedTerminator;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.operators.terminators.FitnessConvergenceTerminator; import eva2.optimization.operator.terminators.FitnessConvergenceTerminator;
import eva2.optimization.operators.terminators.PhenotypeConvergenceTerminator; import eva2.optimization.operator.terminators.PhenotypeConvergenceTerminator;
import eva2.optimization.operators.terminators.PopulationMeasureTerminator.ChangeTypeEnum; import eva2.optimization.operator.terminators.PopulationMeasureTerminator.ChangeTypeEnum;
import eva2.optimization.operators.terminators.PopulationMeasureTerminator.DirectionTypeEnum; import eva2.optimization.operator.terminators.PopulationMeasureTerminator.DirectionTypeEnum;
import eva2.optimization.operators.terminators.PopulationMeasureTerminator.StagnationTypeEnum; import eva2.optimization.operator.terminators.PopulationMeasureTerminator.StagnationTypeEnum;
import eva2.optimization.problems.F1Problem; import eva2.optimization.problems.F1Problem;
public class TerminatorExample { public class TerminatorExample {

View File

@@ -1,8 +1,8 @@
package eva2.examples; package eva2.examples;
import eva2.OptimizerFactory; import eva2.OptimizerFactory;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.operators.postprocess.PostProcessParams; import eva2.optimization.operator.postprocess.PostProcessParams;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.problems.FM0Problem; import eva2.optimization.problems.FM0Problem;
import eva2.optimization.modules.OptimizationParameters; import eva2.optimization.modules.OptimizationParameters;
import java.util.List; import java.util.List;

View File

@@ -1,8 +1,8 @@
package eva2.examples; package eva2.examples;
import eva2.OptimizerFactory; import eva2.OptimizerFactory;
import eva2.optimization.operators.selection.SelectXProbRouletteWheel; import eva2.optimization.operator.selection.SelectXProbRouletteWheel;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.B1Problem; import eva2.optimization.problems.B1Problem;
import eva2.optimization.strategies.GeneticAlgorithm; import eva2.optimization.strategies.GeneticAlgorithm;
import eva2.optimization.modules.OptimizationParameters; import eva2.optimization.modules.OptimizationParameters;

View File

@@ -3,9 +3,9 @@ package eva2.examples;
import eva2.OptimizerFactory; import eva2.OptimizerFactory;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.modules.OptimizationParameters; import eva2.optimization.modules.OptimizationParameters;
import eva2.optimization.operators.crossover.CrossoverESDefault; import eva2.optimization.operator.crossover.CrossoverESDefault;
import eva2.optimization.operators.mutation.MutateESCovarianceMatrixAdaption; import eva2.optimization.operator.mutation.MutateESCovarianceMatrixAdaption;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.problems.FM0Problem; import eva2.optimization.problems.FM0Problem;
import eva2.optimization.strategies.EvolutionStrategies; import eva2.optimization.strategies.EvolutionStrategies;

View File

@@ -1,7 +1,6 @@
package eva2.gui; package eva2.gui;
import eva2.client.EvAClient; import eva2.optimization.population.Population;
import eva2.optimization.populations.Population;
import eva2.optimization.strategies.GeneticAlgorithm; import eva2.optimization.strategies.GeneticAlgorithm;
import eva2.tools.Pair; import eva2.tools.Pair;
import eva2.tools.SelectedTag; import eva2.tools.SelectedTag;

View File

@@ -8,7 +8,7 @@ package eva2.gui;
*/ */
import eva2.EvAInfo; import eva2.EvAInfo;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.tools.BasicResourceLoader; import eva2.tools.BasicResourceLoader;
import eva2.tools.chart2d.DPointSet; import eva2.tools.chart2d.DPointSet;
import java.awt.*; import java.awt.*;

View File

@@ -7,13 +7,13 @@ import eva2.optimization.individuals.ESIndividualDoubleData;
import eva2.optimization.individuals.GAIndividualDoubleData; import eva2.optimization.individuals.GAIndividualDoubleData;
import eva2.optimization.individuals.InterfaceDataTypeDouble; import eva2.optimization.individuals.InterfaceDataTypeDouble;
import eva2.optimization.modules.OptimizationParameters; import eva2.optimization.modules.OptimizationParameters;
import eva2.optimization.operators.crossover.CrossoverGAGINPoint; import eva2.optimization.operator.crossover.CrossoverGAGINPoint;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateESFixedStepSize; import eva2.optimization.operator.mutation.MutateESFixedStepSize;
import eva2.optimization.operators.mutation.MutateESLocal; import eva2.optimization.operator.mutation.MutateESLocal;
import eva2.optimization.operators.selection.SelectTournament; import eva2.optimization.operator.selection.SelectTournament;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.F1Problem; import eva2.optimization.problems.F1Problem;
import eva2.optimization.strategies.EvolutionStrategies; import eva2.optimization.strategies.EvolutionStrategies;
import eva2.optimization.strategies.GeneticAlgorithm; import eva2.optimization.strategies.GeneticAlgorithm;

View File

@@ -1,6 +1,6 @@
package eva2.optimization.go; package eva2.optimization.go;
import eva2.optimization.operators.postprocess.InterfacePostProcessParams; import eva2.optimization.operator.postprocess.InterfacePostProcessParams;
import eva2.optimization.problems.InterfaceAdditionalPopulationInformer; import eva2.optimization.problems.InterfaceAdditionalPopulationInformer;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;

View File

@@ -1,6 +1,7 @@
package eva2.optimization.go; package eva2.optimization.go;
import eva2.optimization.populations.InterfaceSolutionSet; import eva2.optimization.population.InterfaceSolutionSet;
import eva2.optimization.population.PopulationInterface;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
/** /**

View File

@@ -23,10 +23,10 @@ import eva2.gui.JParaPanel;
import eva2.gui.PropertyDoubleArray; import eva2.gui.PropertyDoubleArray;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.mocco.paretofrontviewer.MOCCOViewer; import eva2.optimization.mocco.paretofrontviewer.MOCCOViewer;
import eva2.optimization.operators.moso.InterfaceMOSOConverter; import eva2.optimization.operator.moso.InterfaceMOSOConverter;
import eva2.optimization.operators.moso.MOSOWeightedFitness; import eva2.optimization.operator.moso.MOSOWeightedFitness;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.optimization.strategies.IslandModelEA; import eva2.optimization.strategies.IslandModelEA;
import java.awt.BorderLayout; import java.awt.BorderLayout;

View File

@@ -3,14 +3,14 @@ package eva2.optimization.individuals;
import eva2.gui.BeanInspector; import eva2.gui.BeanInspector;
import eva2.optimization.go.IndividualInterface; import eva2.optimization.go.IndividualInterface;
import eva2.optimization.individuals.codings.gp.InterfaceProgram; import eva2.optimization.individuals.codings.gp.InterfaceProgram;
import eva2.optimization.operators.constraint.InterfaceConstraint; import eva2.optimization.operator.constraint.InterfaceConstraint;
import eva2.optimization.operators.crossover.InterfaceCrossover; import eva2.optimization.operator.crossover.InterfaceCrossover;
import eva2.optimization.operators.crossover.NoCrossover; import eva2.optimization.operator.crossover.NoCrossover;
import eva2.optimization.operators.initialization.DefaultInitialization; import eva2.optimization.operator.initialization.DefaultInitialization;
import eva2.optimization.operators.initialization.InterfaceInitialization; import eva2.optimization.operator.initialization.InterfaceInitialization;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.NoMutation; import eva2.optimization.operator.mutation.NoMutation;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.EVAERROR; import eva2.tools.EVAERROR;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;

View File

@@ -1,8 +1,8 @@
package eva2.optimization.individuals; package eva2.optimization.individuals;
import eva2.optimization.operators.crossover.CrossoverESDefault; import eva2.optimization.operator.crossover.CrossoverESDefault;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateESGlobal; import eva2.optimization.operator.mutation.MutateESGlobal;
import eva2.optimization.problems.InterfaceHasInitRange; import eva2.optimization.problems.InterfaceHasInitRange;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;

View File

@@ -2,9 +2,9 @@ package eva2.optimization.individuals;
import eva2.optimization.enums.MutateESCrossoverTypeEnum; import eva2.optimization.enums.MutateESCrossoverTypeEnum;
import eva2.optimization.operators.crossover.CrossoverESDefault; import eva2.optimization.operator.crossover.CrossoverESDefault;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateESGlobal; import eva2.optimization.operator.mutation.MutateESGlobal;
import eva2.optimization.problems.InterfaceHasInitRange; import eva2.optimization.problems.InterfaceHasInitRange;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.EVAERROR; import eva2.tools.EVAERROR;

View File

@@ -1,8 +1,8 @@
package eva2.optimization.individuals; package eva2.optimization.individuals;
import eva2.optimization.operators.crossover.CrossoverESDefault; import eva2.optimization.operator.crossover.CrossoverESDefault;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateESGlobal; import eva2.optimization.operator.mutation.MutateESGlobal;
import eva2.optimization.problems.InterfaceHasInitRange; import eva2.optimization.problems.InterfaceHasInitRange;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;

View File

@@ -1,8 +1,8 @@
package eva2.optimization.individuals; package eva2.optimization.individuals;
import eva2.optimization.operators.crossover.CrossoverESDefault; import eva2.optimization.operator.crossover.CrossoverESDefault;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateESGlobal; import eva2.optimization.operator.mutation.MutateESGlobal;
import eva2.optimization.problems.InterfaceHasInitRange; import eva2.optimization.problems.InterfaceHasInitRange;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;

View File

@@ -1,8 +1,8 @@
package eva2.optimization.individuals; package eva2.optimization.individuals;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
import java.util.BitSet; import java.util.BitSet;

View File

@@ -1,10 +1,10 @@
package eva2.optimization.individuals; package eva2.optimization.individuals;
import eva2.optimization.operators.crossover.CrossoverGAGINPoint; import eva2.optimization.operator.crossover.CrossoverGAGINPoint;
import eva2.optimization.operators.crossover.InterfaceCrossover; import eva2.optimization.operator.crossover.InterfaceCrossover;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateGANBit; import eva2.optimization.operator.mutation.MutateGANBit;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
import java.util.BitSet; import java.util.BitSet;

View File

@@ -3,10 +3,10 @@ package eva2.optimization.individuals;
import eva2.optimization.individuals.codings.ga.GAStandardCodingDouble; import eva2.optimization.individuals.codings.ga.GAStandardCodingDouble;
import eva2.optimization.individuals.codings.ga.InterfaceGADoubleCoding; import eva2.optimization.individuals.codings.ga.InterfaceGADoubleCoding;
import eva2.optimization.operators.crossover.CrossoverGAGINPoint; import eva2.optimization.operator.crossover.CrossoverGAGINPoint;
import eva2.optimization.operators.crossover.InterfaceCrossover; import eva2.optimization.operator.crossover.InterfaceCrossover;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateGAUniform; import eva2.optimization.operator.mutation.MutateGAUniform;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
import java.util.BitSet; import java.util.BitSet;

View File

@@ -3,9 +3,9 @@ package eva2.optimization.individuals;
import eva2.optimization.individuals.codings.ga.GAStandardCodingInteger; import eva2.optimization.individuals.codings.ga.GAStandardCodingInteger;
import eva2.optimization.individuals.codings.ga.InterfaceGAIntegerCoding; import eva2.optimization.individuals.codings.ga.InterfaceGAIntegerCoding;
import eva2.optimization.operators.crossover.CrossoverGAGINPoint; import eva2.optimization.operator.crossover.CrossoverGAGINPoint;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateGANBit; import eva2.optimization.operator.mutation.MutateGANBit;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
import java.util.BitSet; import java.util.BitSet;

View File

@@ -2,8 +2,8 @@ package eva2.optimization.individuals;
import eva2.optimization.individuals.codings.gp.InterfaceProgram; import eva2.optimization.individuals.codings.gp.InterfaceProgram;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;

View File

@@ -4,9 +4,9 @@ package eva2.optimization.individuals;
import eva2.optimization.individuals.codings.gp.AbstractGPNode; import eva2.optimization.individuals.codings.gp.AbstractGPNode;
import eva2.optimization.individuals.codings.gp.GPArea; import eva2.optimization.individuals.codings.gp.GPArea;
import eva2.optimization.individuals.codings.gp.InterfaceProgram; import eva2.optimization.individuals.codings.gp.InterfaceProgram;
import eva2.optimization.operators.crossover.CrossoverGADefault; import eva2.optimization.operator.crossover.CrossoverGADefault;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateDefault; import eva2.optimization.operator.mutation.MutateDefault;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
import java.util.ArrayList; import java.util.ArrayList;

View File

@@ -1,8 +1,8 @@
package eva2.optimization.individuals; package eva2.optimization.individuals;
import eva2.optimization.operators.crossover.CrossoverGIDefault; import eva2.optimization.operator.crossover.CrossoverGIDefault;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateDefault; import eva2.optimization.operator.mutation.MutateDefault;
import eva2.optimization.problems.InterfaceHasInitRange; import eva2.optimization.problems.InterfaceHasInitRange;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;

View File

@@ -1,7 +1,7 @@
package eva2.optimization.individuals; package eva2.optimization.individuals;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;

View File

@@ -5,9 +5,9 @@ package eva2.optimization.individuals;
import eva2.optimization.individuals.codings.gp.AbstractGPNode; import eva2.optimization.individuals.codings.gp.AbstractGPNode;
import eva2.optimization.individuals.codings.gp.GPArea; import eva2.optimization.individuals.codings.gp.GPArea;
import eva2.optimization.individuals.codings.gp.InterfaceProgram; import eva2.optimization.individuals.codings.gp.InterfaceProgram;
import eva2.optimization.operators.crossover.CrossoverGPDefault; import eva2.optimization.operator.crossover.CrossoverGPDefault;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateDefault; import eva2.optimization.operator.mutation.MutateDefault;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.EVAERROR; import eva2.tools.EVAERROR;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;

View File

@@ -1,6 +1,6 @@
package eva2.optimization.individuals; package eva2.optimization.individuals;
import eva2.optimization.operators.distancemetric.InterfaceDistanceMetric; import eva2.optimization.operator.distancemetric.InterfaceDistanceMetric;
import java.io.Serializable; import java.io.Serializable;
import java.util.Comparator; import java.util.Comparator;

View File

@@ -1,9 +1,9 @@
package eva2.optimization.individuals; package eva2.optimization.individuals;
import eva2.optimization.operators.crossover.CrossoverOBGAPMX; import eva2.optimization.operator.crossover.CrossoverOBGAPMX;
import eva2.optimization.operators.mutation.InterfaceMutation; import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateOBGAFlip; import eva2.optimization.operator.mutation.MutateOBGAFlip;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
import java.util.ArrayList; import java.util.ArrayList;

View File

@@ -4,7 +4,7 @@ package eva2.optimization.mocco;
import eva2.optimization.go.MOCCOStandalone; import eva2.optimization.go.MOCCOStandalone;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.mocco.paretofrontviewer.InterfaceRefSolutionListener; import eva2.optimization.mocco.paretofrontviewer.InterfaceRefSolutionListener;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem; import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem;
import eva2.optimization.problems.InterfaceOptimizationObjective; import eva2.optimization.problems.InterfaceOptimizationObjective;
import java.awt.*; import java.awt.*;

View File

@@ -7,7 +7,7 @@ import eva2.gui.PropertyEditorProvider;
import eva2.optimization.go.InterfaceTerminator; import eva2.optimization.go.InterfaceTerminator;
import eva2.optimization.go.MOCCOStandalone; import eva2.optimization.go.MOCCOStandalone;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.operators.moso.MOSOWeightedFitness; import eva2.optimization.operator.moso.MOSOWeightedFitness;
import eva2.optimization.problems.AbstractMultiObjectiveOptimizationProblem; import eva2.optimization.problems.AbstractMultiObjectiveOptimizationProblem;
import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem; import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem;
import eva2.optimization.problems.InterfaceOptimizationObjective; import eva2.optimization.problems.InterfaceOptimizationObjective;

View File

@@ -5,7 +5,7 @@ import eva2.gui.GenericObjectEditor;
import eva2.gui.PropertyEditorProvider; import eva2.gui.PropertyEditorProvider;
import eva2.optimization.go.InterfaceTerminator; import eva2.optimization.go.InterfaceTerminator;
import eva2.optimization.go.MOCCOStandalone; import eva2.optimization.go.MOCCOStandalone;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.strategies.GeneticAlgorithm; import eva2.optimization.strategies.GeneticAlgorithm;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.optimization.strategies.MultiObjectiveEA; import eva2.optimization.strategies.MultiObjectiveEA;

View File

@@ -5,8 +5,8 @@ import eva2.gui.GenericObjectEditor;
import eva2.gui.PropertyEditorProvider; import eva2.gui.PropertyEditorProvider;
import eva2.optimization.go.InterfaceTerminator; import eva2.optimization.go.InterfaceTerminator;
import eva2.optimization.go.MOCCOStandalone; import eva2.optimization.go.MOCCOStandalone;
import eva2.optimization.operators.migration.SOBestMigration; import eva2.optimization.operator.migration.SOBestMigration;
import eva2.optimization.operators.moso.MOSOLpMetric; import eva2.optimization.operator.moso.MOSOLpMetric;
import eva2.optimization.problems.AbstractMultiObjectiveOptimizationProblem; import eva2.optimization.problems.AbstractMultiObjectiveOptimizationProblem;
import eva2.optimization.strategies.IslandModelEA; import eva2.optimization.strategies.IslandModelEA;
import eva2.optimization.tools.AbstractObjectEditor; import eva2.optimization.tools.AbstractObjectEditor;

View File

@@ -7,7 +7,7 @@ import eva2.gui.PropertyEditorProvider;
import eva2.optimization.go.InterfaceTerminator; import eva2.optimization.go.InterfaceTerminator;
import eva2.optimization.go.MOCCOStandalone; import eva2.optimization.go.MOCCOStandalone;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.operators.moso.MOSOWeightedFitness; import eva2.optimization.operator.moso.MOSOWeightedFitness;
import eva2.optimization.problems.AbstractMultiObjectiveOptimizationProblem; import eva2.optimization.problems.AbstractMultiObjectiveOptimizationProblem;
import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem; import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem;
import eva2.optimization.problems.InterfaceOptimizationObjective; import eva2.optimization.problems.InterfaceOptimizationObjective;

View File

@@ -5,8 +5,8 @@ import eva2.gui.GenericObjectEditor;
import eva2.gui.PropertyEditorProvider; import eva2.gui.PropertyEditorProvider;
import eva2.optimization.go.InterfaceTerminator; import eva2.optimization.go.InterfaceTerminator;
import eva2.optimization.go.MOCCOStandalone; import eva2.optimization.go.MOCCOStandalone;
import eva2.optimization.operators.migration.SOBestMigration; import eva2.optimization.operator.migration.SOBestMigration;
import eva2.optimization.operators.moso.MOSOWeightedLPTchebycheff; import eva2.optimization.operator.moso.MOSOWeightedLPTchebycheff;
import eva2.optimization.problems.AbstractMultiObjectiveOptimizationProblem; import eva2.optimization.problems.AbstractMultiObjectiveOptimizationProblem;
import eva2.optimization.strategies.IslandModelEA; import eva2.optimization.strategies.IslandModelEA;
import eva2.optimization.tools.AbstractObjectEditor; import eva2.optimization.tools.AbstractObjectEditor;

View File

@@ -2,9 +2,9 @@ package eva2.optimization.mocco;
import eva2.optimization.go.InterfaceTerminator; import eva2.optimization.go.InterfaceTerminator;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.operators.archiving.ArchivingAllDominating; import eva2.optimization.operator.archiving.ArchivingAllDominating;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.AbstractMultiObjectiveOptimizationProblem; import eva2.optimization.problems.AbstractMultiObjectiveOptimizationProblem;
import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem; import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem;
import eva2.optimization.problems.InterfaceOptimizationObjective; import eva2.optimization.problems.InterfaceOptimizationObjective;

View File

@@ -6,7 +6,7 @@ import eva2.gui.GraphPointSet;
import eva2.gui.InterfaceDPointWithContent; import eva2.gui.InterfaceDPointWithContent;
import eva2.optimization.go.MOCCOStandalone; import eva2.optimization.go.MOCCOStandalone;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem; import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem;
import eva2.optimization.problems.InterfaceOptimizationObjective; import eva2.optimization.problems.InterfaceOptimizationObjective;
import eva2.tools.chart2d.Chart2DDPointContentSelectable; import eva2.tools.chart2d.Chart2DDPointContentSelectable;

View File

@@ -3,7 +3,7 @@ package eva2.optimization.mocco.paretofrontviewer;
import eva2.gui.*; import eva2.gui.*;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem; import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem;
import eva2.optimization.problems.InterfaceOptimizationObjective; import eva2.optimization.problems.InterfaceOptimizationObjective;
import eva2.tools.chart2d.Chart2DDPointContentSelectable; import eva2.tools.chart2d.Chart2DDPointContentSelectable;

View File

@@ -3,7 +3,7 @@ package eva2.optimization.mocco.paretofrontviewer;
import eva2.gui.*; import eva2.gui.*;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem; import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem;
import eva2.optimization.problems.InterfaceOptimizationObjective; import eva2.optimization.problems.InterfaceOptimizationObjective;
import eva2.tools.chart2d.Chart2DDPointContentSelectable; import eva2.tools.chart2d.Chart2DDPointContentSelectable;

View File

@@ -5,8 +5,8 @@ import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.go.InterfaceNotifyOnInformers; import eva2.optimization.go.InterfaceNotifyOnInformers;
import eva2.optimization.go.InterfacePopulationChangedEventListener; import eva2.optimization.go.InterfacePopulationChangedEventListener;
import eva2.optimization.go.InterfaceTerminator; import eva2.optimization.go.InterfaceTerminator;
import eva2.optimization.operators.postprocess.InterfacePostProcessParams; import eva2.optimization.operator.postprocess.InterfacePostProcessParams;
import eva2.optimization.operators.postprocess.PostProcessParams; import eva2.optimization.operator.postprocess.PostProcessParams;
import eva2.optimization.problems.InterfaceAdditionalPopulationInformer; import eva2.optimization.problems.InterfaceAdditionalPopulationInformer;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;

View File

@@ -3,8 +3,8 @@ package eva2.optimization.modules;
import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.enums.DETypeEnum; import eva2.optimization.enums.DETypeEnum;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.F1Problem; import eva2.optimization.problems.F1Problem;
import eva2.optimization.strategies.DifferentialEvolution; import eva2.optimization.strategies.DifferentialEvolution;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;

View File

@@ -2,9 +2,9 @@ package eva2.optimization.modules;
import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.operators.selection.InterfaceSelection; import eva2.optimization.operator.selection.InterfaceSelection;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.F1Problem; import eva2.optimization.problems.F1Problem;
import eva2.optimization.strategies.EvolutionaryProgramming; import eva2.optimization.strategies.EvolutionaryProgramming;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;

View File

@@ -1,9 +1,9 @@
package eva2.optimization.modules; package eva2.optimization.modules;
import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.operators.selection.InterfaceSelection; import eva2.optimization.operator.selection.InterfaceSelection;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.B1Problem; import eva2.optimization.problems.B1Problem;
import eva2.optimization.strategies.GeneticAlgorithm; import eva2.optimization.strategies.GeneticAlgorithm;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;

View File

@@ -1,8 +1,8 @@
package eva2.optimization.modules; package eva2.optimization.modules;
import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.B1Problem; import eva2.optimization.problems.B1Problem;
import eva2.optimization.strategies.HillClimbing; import eva2.optimization.strategies.HillClimbing;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;

View File

@@ -1,8 +1,8 @@
package eva2.optimization.modules; package eva2.optimization.modules;
import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.B1Problem; import eva2.optimization.problems.B1Problem;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.optimization.strategies.MonteCarloSearch; import eva2.optimization.strategies.MonteCarloSearch;

View File

@@ -1,10 +1,10 @@
package eva2.optimization.modules; package eva2.optimization.modules;
import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.operators.archiving.InterfaceArchiving; import eva2.optimization.operator.archiving.InterfaceArchiving;
import eva2.optimization.operators.archiving.InterfaceInformationRetrieval; import eva2.optimization.operator.archiving.InterfaceInformationRetrieval;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.TF1Problem; import eva2.optimization.problems.TF1Problem;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.optimization.strategies.MultiObjectiveEA; import eva2.optimization.strategies.MultiObjectiveEA;

View File

@@ -2,7 +2,7 @@ package eva2.optimization.modules;
import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.go.InterfaceTerminator; import eva2.optimization.go.InterfaceTerminator;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.problems.F1Problem; import eva2.optimization.problems.F1Problem;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.optimization.strategies.GeneticAlgorithm; import eva2.optimization.strategies.GeneticAlgorithm;

View File

@@ -1,9 +1,9 @@
package eva2.optimization.modules; package eva2.optimization.modules;
import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.operators.selection.InterfaceSelection; import eva2.optimization.operator.selection.InterfaceSelection;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.B1Problem; import eva2.optimization.problems.B1Problem;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.optimization.strategies.PopulationBasedIncrementalLearning; import eva2.optimization.strategies.PopulationBasedIncrementalLearning;

View File

@@ -4,8 +4,8 @@ package eva2.optimization.modules;
import eva2.gui.GenericObjectEditor; import eva2.gui.GenericObjectEditor;
import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.enums.PSOTopologyEnum; import eva2.optimization.enums.PSOTopologyEnum;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.F1Problem; import eva2.optimization.problems.F1Problem;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.optimization.strategies.ParticleSwarmOptimization; import eva2.optimization.strategies.ParticleSwarmOptimization;

View File

@@ -4,14 +4,15 @@ import eva2.optimization.go.*;
import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.gui.BeanInspector; import eva2.gui.BeanInspector;
import eva2.optimization.OptimizationStateListener; import eva2.optimization.OptimizationStateListener;
import eva2.optimization.operators.paramcontrol.ConstantParameters; import eva2.optimization.operator.paramcontrol.ConstantParameters;
import eva2.optimization.operators.paramcontrol.InterfaceParameterControl; import eva2.optimization.operator.paramcontrol.InterfaceParameterControl;
import eva2.optimization.operators.postprocess.PostProcess; import eva2.optimization.operator.postprocess.PostProcess;
import eva2.optimization.operators.postprocess.PostProcessParams; import eva2.optimization.operator.postprocess.PostProcessParams;
import eva2.optimization.operators.postprocess.SolutionHistogram; import eva2.optimization.operator.postprocess.SolutionHistogram;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.operators.terminators.GenerationTerminator; import eva2.optimization.operator.terminators.GenerationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.population.PopulationInterface;
import eva2.optimization.problems.AbstractOptimizationProblem; import eva2.optimization.problems.AbstractOptimizationProblem;
import eva2.optimization.problems.InterfaceAdditionalPopulationInformer; import eva2.optimization.problems.InterfaceAdditionalPopulationInformer;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;

View File

@@ -3,8 +3,8 @@ package eva2.optimization.modules;
import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.go.InterfacePopulationChangedEventListener; import eva2.optimization.go.InterfacePopulationChangedEventListener;
import eva2.optimization.go.InterfaceTerminator; import eva2.optimization.go.InterfaceTerminator;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.B1Problem; import eva2.optimization.problems.B1Problem;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;

View File

@@ -1,10 +1,10 @@
package eva2.optimization.modules; package eva2.optimization.modules;
import eva2.optimization.go.InterfaceOptimizationParameters; import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.operators.selection.InterfaceSelection; import eva2.optimization.operator.selection.InterfaceSelection;
import eva2.optimization.operators.selection.replacement.InterfaceReplacement; import eva2.optimization.operator.selection.replacement.InterfaceReplacement;
import eva2.optimization.operators.terminators.EvaluationTerminator; import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.B1Problem; import eva2.optimization.problems.B1Problem;
import eva2.optimization.strategies.InterfaceOptimizer; import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.optimization.strategies.SteadyStateGA; import eva2.optimization.strategies.SteadyStateGA;

View File

@@ -1,8 +1,8 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.gui.*; import eva2.gui.*;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.tools.chart2d.Chart2DDPointIconCross; import eva2.tools.chart2d.Chart2DDPointIconCross;
import eva2.tools.chart2d.DPoint; import eva2.tools.chart2d.DPoint;
import eva2.tools.chart2d.DPointIcon; import eva2.tools.chart2d.DPointIcon;
@@ -17,11 +17,9 @@ import eva2.tools.chart2d.DPointIcon;
* To change this template use Options | File Templates. * 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 {
protected boolean m_Debug = false;
transient protected eva2.gui.Plot m_Plot = null; transient protected eva2.gui.Plot m_Plot = null;
protected int p = 0; protected int p = 0;
public boolean m_ObeyDebsConstViolationPrinciple = true; public boolean obeyDebsConstViolationPrinciple = true;
/** This method allows you to make a deep clone of /** This method allows you to make a deep clone of
* the object * the object
@@ -30,14 +28,14 @@ public abstract class AbstractArchiving implements InterfaceArchiving, java.io.S
@Override @Override
public abstract Object clone(); public abstract Object clone();
/** This mehtod will test if a given individual is dominant within /** This method will test if a given individual is dominant within
* a given population * a given population
* @param indy The individual that is to be tested. * @param indy The individual that is to be tested.
* @param pop The population that the individual is to be tested against. * @param pop The population that the individual is to be tested against.
* @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)).isDominatingDebConstraints(indy))) { if (!(indy.equals(pop.get(i))) && (((AbstractEAIndividual)pop.get(i)).isDominatingDebConstraints(indy))) {
return false; return false;
@@ -180,12 +178,12 @@ public abstract class AbstractArchiving implements InterfaceArchiving, java.io.S
* @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() {
return "Toggle the use of Deb's coonstraint violation principle."; return "Toggle the use of Deb's constraint violation principle.";
} }
} }

View File

@@ -1,8 +1,8 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.operators.selection.SelectBestIndividuals; import eva2.optimization.operator.selection.SelectBestIndividuals;
import eva2.optimization.populations.Population; 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!
@@ -19,7 +19,7 @@ public class ArchivingAllDominating extends AbstractArchiving implements java.io
} }
public ArchivingAllDominating(ArchivingAllDominating a) { public ArchivingAllDominating(ArchivingAllDominating a) {
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple; this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
} }
@Override @Override
@@ -39,7 +39,7 @@ public class ArchivingAllDominating extends AbstractArchiving implements java.io
pop.SetArchive(new Population()); pop.SetArchive(new Population());
} }
// System.out.println("addElementsToArchive"); // System.out.println("addElementsToArchive");
if (this.m_ObeyDebsConstViolationPrinciple) { if (this.obeyDebsConstViolationPrinciple) {
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
//System.out.println("i:"+ i+" "+pop.size()+"_"+((AbstractEAIndividual)pop.get(0)).getFitness().length); //System.out.println("i:"+ i+" "+pop.size()+"_"+((AbstractEAIndividual)pop.get(0)).getFitness().length);
if ((((AbstractEAIndividual)pop.get(i)).getConstraintViolation() == 0) && (this.isDominant((AbstractEAIndividual)pop.get(i), pop.getArchive()))) { if ((((AbstractEAIndividual)pop.get(i)).getConstraintViolation() == 0) && (this.isDominant((AbstractEAIndividual)pop.get(i), pop.getArchive()))) {

View File

@@ -1,10 +1,10 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.operators.moso.MOSOMaxiMin; import eva2.optimization.operator.moso.MOSOMaxiMin;
import eva2.optimization.operators.selection.InterfaceSelection; import eva2.optimization.operator.selection.InterfaceSelection;
import eva2.optimization.operators.selection.SelectBestIndividuals; import eva2.optimization.operator.selection.SelectBestIndividuals;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.tools.chart2d.Chart2DDPointIconCross; import eva2.tools.chart2d.Chart2DDPointIconCross;
import eva2.tools.chart2d.DPointIcon; import eva2.tools.chart2d.DPointIcon;

View File

@@ -1,7 +1,7 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
/** The non dominated sorting GA archiving method, based on dominace sorting. /** The non dominated sorting GA archiving method, based on dominace sorting.
* Created by IntelliJ IDEA. * Created by IntelliJ IDEA.

View File

@@ -1,7 +1,7 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.tools.chart2d.Chart2DDPointIconCross; import eva2.tools.chart2d.Chart2DDPointIconCross;
import eva2.tools.chart2d.DPointIcon; import eva2.tools.chart2d.DPointIcon;
import java.util.ArrayList; import java.util.ArrayList;

View File

@@ -1,109 +1,109 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.AbstractEAIndividualComparator; import eva2.optimization.individuals.AbstractEAIndividualComparator;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import java.util.Arrays; import java.util.Arrays;
public class ArchivingNSGAIISMeasure extends ArchivingNSGAII { public class ArchivingNSGAIISMeasure extends ArchivingNSGAII {
/** This method will cacluated the NSGAII crowding distance /** This method will cacluated the NSGAII crowding distance
* for all individuals * for all individuals
* @param fronts The pareto fronts * @param fronts The pareto fronts
*/ */
@Override @Override
public void calculateCrowdingDistance(Population[] fronts) { public void calculateCrowdingDistance(Population[] fronts) {
//TODO Dimension der Zielfunktion checken //TODO Dimension der Zielfunktion checken
for (int rank = 0; rank < fronts.length; rank++) for (int rank = 0; rank < fronts.length; rank++)
{ {
calculateCrowdingDistance(fronts[rank]); calculateCrowdingDistance(fronts[rank]);
} }
} }
/** This mehtod will test if a given individual is dominant within /** This mehtod will test if a given individual is dominant within
* a given population * a given population
* @param indy The individual that is to be tested. * @param indy The individual that is to be tested.
* @param pop The population that the individual is to be tested against. * @param pop The population that the individual is to be tested against.
* @return True if the individual is dominating * @return True if the individual is dominating
*/ */
@Override @Override
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))||indy.equalFitness((AbstractEAIndividual) pop.get(i))) && (((AbstractEAIndividual)pop.get(i)).isDominatingDebConstraints(indy))) { if (!(indy.equals(pop.get(i))||indy.equalFitness((AbstractEAIndividual) pop.get(i))) && (((AbstractEAIndividual)pop.get(i)).isDominatingDebConstraints(indy))) {
return false; return false;
} }
} }
} else { } else {
for (int i = 0; i < pop.size(); i++) { for (int i = 0; i < pop.size(); i++) {
if (!(indy.equals(pop.get(i))||indy.equalFitness((AbstractEAIndividual) pop.get(i))) && (((AbstractEAIndividual)pop.get(i)).isDominating(indy))) { if (!(indy.equals(pop.get(i))||indy.equalFitness((AbstractEAIndividual) pop.get(i))) && (((AbstractEAIndividual)pop.get(i)).isDominating(indy))) {
return false; return false;
} }
} }
} }
return true; return true;
} }
public void calculateCrowdingDistance(Population front) { public void calculateCrowdingDistance(Population front) {
Object[] frontArray= front.toArray(); Object[] frontArray= front.toArray();
boolean[] assigned=new boolean[frontArray.length]; boolean[] assigned=new boolean[frontArray.length];
double[] v=new double[frontArray.length]; double[] v=new double[frontArray.length];
int i, left, right; int i, left, right;
// initialization of assignment vector // initialization of assignment vector
for (i = 0; i < frontArray.length; i++) for (i = 0; i < frontArray.length; i++)
{ {
assigned[ i ] = false; assigned[ i ] = false;
} }
Arrays.sort(frontArray,new AbstractEAIndividualComparator(0)); Arrays.sort(frontArray,new AbstractEAIndividualComparator(0));
((AbstractEAIndividual)frontArray[0]).putData("HyperCube",Double.MAX_VALUE); //die beiden aussen bekommen maximal wert als smeasure ((AbstractEAIndividual)frontArray[0]).putData("HyperCube",Double.MAX_VALUE); //die beiden aussen bekommen maximal wert als smeasure
((AbstractEAIndividual)frontArray[frontArray.length-1]).putData("HyperCube",Double.MAX_VALUE); ((AbstractEAIndividual)frontArray[frontArray.length-1]).putData("HyperCube",Double.MAX_VALUE);
v[0]=Double.MAX_VALUE; v[0]=Double.MAX_VALUE;
v[frontArray.length-1]=Double.MAX_VALUE; v[frontArray.length-1]=Double.MAX_VALUE;
for (int e = 1; e < frontArray.length - 1; e++) for (int e = 1; e < frontArray.length - 1; e++)
{ // loop over all non-border elements { // loop over all non-border elements
for (i = 1; (assigned[ i ]); i++); // determine 1st not assigned, non-border element for (i = 1; (assigned[ i ]); i++); // determine 1st not assigned, non-border element
for (left = 0; i < frontArray.length - 1;) for (left = 0; i < frontArray.length - 1;)
{ // loop over all not assigned elements { // loop over all not assigned elements
// determine right not assigned neighbor // determine right not assigned neighbor
for (right = i + 1; (assigned[ right]); right++); for (right = i + 1; (assigned[ right]); right++);
v[i] = (((AbstractEAIndividual)frontArray[right]).getFitness(0) - ((AbstractEAIndividual)frontArray[i]).getFitness(0)) * v[i] = (((AbstractEAIndividual)frontArray[right]).getFitness(0) - ((AbstractEAIndividual)frontArray[i]).getFitness(0)) *
(((AbstractEAIndividual)frontArray[left]).getFitness(1) - ((AbstractEAIndividual)frontArray[i]).getFitness(1)); (((AbstractEAIndividual)frontArray[left]).getFitness(1) - ((AbstractEAIndividual)frontArray[i]).getFitness(1));
left = i; left = i;
i = right; i = right;
} }
int minIndex = 0; int minIndex = 0;
double min=v[minIndex]; double min=v[minIndex];
for (int f = 1; f < frontArray.length - 1; f++) for (int f = 1; f < frontArray.length - 1; f++)
{ {
if (!assigned[ f ]) { if (!assigned[ f ]) {
if (v[f] < min) if (v[f] < min)
{ {
min = v[f]; min = v[f];
minIndex = f; minIndex = f;
} }
} }
} }
assigned[ minIndex ] = true; assigned[ minIndex ] = true;
((AbstractEAIndividual)frontArray[ minIndex]).putData("HyperCube",new Double(e)); ((AbstractEAIndividual)frontArray[ minIndex]).putData("HyperCube",new Double(e));
} }
} }
} }

View File

@@ -1,8 +1,8 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.gui.GraphPointSet; import eva2.gui.GraphPointSet;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.tools.chart2d.Chart2DDPointIconCircle; import eva2.tools.chart2d.Chart2DDPointIconCircle;
import eva2.tools.chart2d.Chart2DDPointIconText; import eva2.tools.chart2d.Chart2DDPointIconText;
import eva2.tools.chart2d.DLine; import eva2.tools.chart2d.DLine;

View File

@@ -1,11 +1,11 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.gui.GraphPointSet; import eva2.gui.GraphPointSet;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.operators.distancemetric.InterfaceDistanceMetric; import eva2.optimization.operator.distancemetric.InterfaceDistanceMetric;
import eva2.optimization.operators.distancemetric.ObjectiveSpaceMetric; import eva2.optimization.operator.distancemetric.ObjectiveSpaceMetric;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.tools.chart2d.Chart2DDPointIconCircle; import eva2.tools.chart2d.Chart2DDPointIconCircle;
import eva2.tools.chart2d.Chart2DDPointIconText; import eva2.tools.chart2d.Chart2DDPointIconText;
import eva2.tools.chart2d.DPoint; import eva2.tools.chart2d.DPoint;

View File

@@ -1,6 +1,6 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.populations.Population; 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

View File

@@ -1,6 +1,6 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
/** This class allows no information retrieval and thus no elitism /** This class allows no information retrieval and thus no elitism
* for MOEAs. * for MOEAs.

View File

@@ -1,6 +1,6 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
/** This information retrieval method simply add the retrieved solutions /** This information retrieval method simply add the retrieved solutions

View File

@@ -1,6 +1,6 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
/** This Interface give the general methods required for a archiving method. /** This Interface give the general methods required for a archiving method.
* Created by IntelliJ IDEA. * Created by IntelliJ IDEA.

View File

@@ -1,6 +1,6 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
/** This interface gives the necessary methods for an information /** This interface gives the necessary methods for an information
* retrieval algorithm. * retrieval algorithm.

View File

@@ -1,6 +1,6 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
/** This interface gives the method necessary for an aglorithm /** This interface gives the method necessary for an aglorithm
* which is use to reduce the size of an archive. * which is use to reduce the size of an archive.

View File

@@ -1,7 +1,7 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
/** This class removes surplus individuals based on bounding /** This class removes surplus individuals based on bounding

View File

@@ -1,186 +1,186 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
/** This class removes surplus individuals based on bounding /** This class removes surplus individuals based on bounding
* hybercube, which can be calculated in objective or decision * hybercube, which can be calculated in objective or decision
* 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. * Created by IntelliJ IDEA.
* User: streiche * User: streiche
* Date: 13.05.2004 * Date: 13.05.2004
* Time: 14:36:54 * Time: 14:36:54
* To change this template use File | Settings | File Templates. * 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 {
public RemoveSurplusIndividualsSMetric() { public RemoveSurplusIndividualsSMetric() {
} }
public RemoveSurplusIndividualsSMetric(RemoveSurplusIndividualsSMetric a) { public RemoveSurplusIndividualsSMetric(RemoveSurplusIndividualsSMetric a) {
} }
@Override @Override
public Object clone() { public Object clone() {
return (Object) new RemoveSurplusIndividualsSMetric(this); return (Object) new RemoveSurplusIndividualsSMetric(this);
} }
/** This method will remove surplus individuals /** This method will remove surplus individuals
* from a given archive. Note archive will be altered! * from a given archive. Note archive will be altered!
* @param archive * @param archive
*/ */
@Override @Override
public void removeSurplusIndividuals(Population archive) { public void removeSurplusIndividuals(Population archive) {
double[][] fitness; double[][] fitness;
double[] space; double[] space;
int indexSmallHyperCube; int indexSmallHyperCube;
while(archive.targetSizeExceeded()) { while(archive.targetSizeExceeded()) {
// select the individual with the least space around him // select the individual with the least space around him
// to do this i got to find the next smaller and the next bigger one // to do this i got to find the next smaller and the next bigger one
fitness = new double[archive.size()][]; fitness = new double[archive.size()][];
space = new double[archive.size()]; space = new double[archive.size()];
for (int i = 0; i < archive.size(); i++) { for (int i = 0; i < archive.size(); i++) {
fitness[i] = ((AbstractEAIndividual)archive.get(i)).getFitness(); fitness[i] = ((AbstractEAIndividual)archive.get(i)).getFitness();
} }
space = this.calculateContributingHypervolume(fitness); space = this.calculateContributingHypervolume(fitness);
// now find the individual with the smallest hypervolume // now find the individual with the smallest hypervolume
indexSmallHyperCube = 0; indexSmallHyperCube = 0;
for (int i = 1; i < archive.size(); i++) { for (int i = 1; i < archive.size(); i++) {
if (space[i] < space[indexSmallHyperCube]) { if (space[i] < space[indexSmallHyperCube]) {
indexSmallHyperCube = i; indexSmallHyperCube = i;
} }
else { else {
// if they are equal give them a fair chance to exchange between them // if they are equal give them a fair chance to exchange between them
if ((space[i] == space[indexSmallHyperCube]) && (RNG.flipCoin(0.5))) { if ((space[i] == space[indexSmallHyperCube]) && (RNG.flipCoin(0.5))) {
indexSmallHyperCube = i; indexSmallHyperCube = i;
} }
} }
} }
archive.remove(indexSmallHyperCube); archive.remove(indexSmallHyperCube);
} }
} }
public double[] calculateContributingHypervolume(double[][] fitness) { public double[] calculateContributingHypervolume(double[][] fitness) {
int counter; int counter;
// Vector< Integer > sort=new Vector<Integer>(); // Vector< Integer > sort=new Vector<Integer>();
// Vector< Integer > global=new Vector<Integer>(); // Vector< Integer > global=new Vector<Integer>();
// Vector< Boolean > assigned=new Vector<Boolean>(); // Vector< Boolean > assigned=new Vector<Boolean>();
int size=fitness.length;//TODO size bestimmen (anzahl individuen?) int size=fitness.length;//TODO size bestimmen (anzahl individuen?)
double result[]=new double[size]; double result[]=new double[size];
int[] sort=new int[size]; int[] sort=new int[size];
int[] global=new int[size]; int[] global=new int[size];
boolean[] assigned=new boolean[size]; boolean[] assigned=new boolean[size];
double temp1; double temp1;
double temp2; double temp2;
double v; double v;
int i, left, right; int i, left, right;
// Initialize sharing values // Initialize sharing values
// setMOOShare(0.0); // setMOOShare(0.0);
// gather individuals with the same rank into a sub population // gather individuals with the same rank into a sub population
// PopulationMOO subpop( numberOfMOORank( rank ) ); // PopulationMOO subpop( numberOfMOORank( rank ) );
counter = 0; counter = 0;
for (i = 0; i < fitness.length; i++) for (i = 0; i < fitness.length; i++)
{ {
global[ counter ] = i; global[ counter ] = i;
counter++; counter++;
} }
// sort according to 1st objective // sort according to 1st objective
int obj = 0; int obj = 0;
// initialization of index vector // initialization of index vector
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
{ {
sort[ i ] = i; assigned[ i ] = false; sort[ i ] = i; assigned[ i ] = false;
} }
// sort // sort
boolean changed; boolean changed;
changed = false; changed = false;
for (i = 0; i < counter - 1; i++) for (i = 0; i < counter - 1; i++)
{ {
temp1=fitness[ global[ sort[ i ] ]][obj]; temp1=fitness[ global[ sort[ i ] ]][obj];
temp2=fitness[ global[ sort[ i+1 ] ]][obj]; temp2=fitness[ global[ sort[ i+1 ] ]][obj];
if (temp1 > temp2) if (temp1 > temp2)
{ {
int temp = sort[ i ]; int temp = sort[ i ];
sort[ i ] = sort[ i + 1 ]; sort[ i ] = sort[ i + 1 ];
sort[ i + 1 ] = temp; sort[ i + 1 ] = temp;
changed = true ; changed = true ;
} }
} }
while(changed){ while(changed){
changed = false; changed = false;
for (i = 0; i < counter - 1; i++) for (i = 0; i < counter - 1; i++)
{ {
temp1=fitness[ global[ sort[ i ] ]][obj]; temp1=fitness[ global[ sort[ i ] ]][obj];
temp2=fitness[ global[ sort[ i+1 ] ]][obj]; temp2=fitness[ global[ sort[ i+1 ] ]][obj];
if (temp1 > temp2) if (temp1 > temp2)
{ {
int temp = sort[ i ]; int temp = sort[ i ];
sort[ i ] = sort[ i + 1 ]; sort[ i ] = sort[ i + 1 ];
sort[ i + 1 ] = temp; sort[ i + 1 ] = temp;
changed = true ; changed = true ;
} }
} }
} }
result[global[ sort[ 0 ] ]]=Double.MAX_VALUE; //die beiden aussen bekommen maximal wert als smeasure result[global[ sort[ 0 ] ]]=Double.MAX_VALUE; //die beiden aussen bekommen maximal wert als smeasure
result[global[ sort[ counter - 1 ] ]]=Double.MAX_VALUE; result[global[ sort[ counter - 1 ] ]]=Double.MAX_VALUE;
for (int e = 1; e < counter - 1; e++) for (int e = 1; e < counter - 1; e++)
{ // loop over all non-border elements { // loop over all non-border elements
for (i = 1; (assigned[ sort[ i ] ]); i++); // determine 1st not assigned, non-border element for (i = 1; (assigned[ sort[ i ] ]); i++); // determine 1st not assigned, non-border element
for (left = 0; i < counter - 1;) for (left = 0; i < counter - 1;)
{ // loop over all not assigned elements { // loop over all not assigned elements
// determine right not assigned neighbor // determine right not assigned neighbor
for (right = i + 1; (assigned[ sort[ right ] ]); right++); for (right = i + 1; (assigned[ sort[ right ] ]); right++);
v = (fitness[ global[ sort[ right ] ] ][0] - v = (fitness[ global[ sort[ right ] ] ][0] -
fitness[global[ sort[ i ] ] ][0]) * fitness[global[ sort[ i ] ] ][0]) *
(fitness[global[ sort[ left ] ] ][1] - (fitness[global[ sort[ left ] ] ][1] -
fitness[global[ sort[ i ] ] ][1]); fitness[global[ sort[ i ] ] ][1]);
result[ global[ sort[ i ] ]]=v; result[ global[ sort[ i ] ]]=v;
left = i; left = i;
i = right; i = right;
} }
int minIndex = 0; int minIndex = 0;
double min = result[ global[ sort[ minIndex ] ]]; double min = result[ global[ sort[ minIndex ] ]];
for (int f = 1; f < counter - 1; f++) for (int f = 1; f < counter - 1; f++)
{ {
if (!assigned[ sort[ f ] ]) { if (!assigned[ sort[ f ] ]) {
if (result[global[ sort[ f ] ]] < min) if (result[global[ sort[ f ] ]] < min)
{ {
min = result[global[ sort[ f ] ]]; min = result[global[ sort[ f ] ]];
minIndex = f; minIndex = f;
} }
} }
} }
assigned[ sort[ minIndex ] ] = true; assigned[ sort[ minIndex ] ] = true;
result[ global[ sort[ minIndex ] ]]=e; result[ global[ sort[ minIndex ] ]]=e;
} }
return result; return result;
} }
} }

View File

@@ -1,7 +1,7 @@
package eva2.optimization.operators.archiving; package eva2.optimization.operator.archiving;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
/** This class removes surplus individuals based on bounding /** This class removes surplus individuals based on bounding

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.classification; package eva2.optimization.operator.classification;
import eva2.tools.chart2d.*; import eva2.tools.chart2d.*;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.classification; package eva2.optimization.operator.classification;
/** An interface for classification methods, currently under construction. /** An interface for classification methods, currently under construction.
* Created by IntelliJ IDEA. * Created by IntelliJ IDEA.

View File

@@ -1,6 +1,6 @@
package eva2.optimization.operators.cluster; package eva2.optimization.operator.cluster;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import java.io.Serializable; import java.io.Serializable;
import java.util.Arrays; import java.util.Arrays;

View File

@@ -1,9 +1,9 @@
package eva2.optimization.operators.cluster; package eva2.optimization.operator.cluster;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.operators.distancemetric.InterfaceDistanceMetric; import eva2.optimization.operator.distancemetric.InterfaceDistanceMetric;
import eva2.optimization.operators.distancemetric.PhenotypeMetric; import eva2.optimization.operator.distancemetric.PhenotypeMetric;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.tools.Pair; import eva2.tools.Pair;
import java.util.ArrayList; import java.util.ArrayList;

View File

@@ -1,13 +1,13 @@
package eva2.optimization.operators.cluster; package eva2.optimization.operator.cluster;
import eva2.gui.BeanInspector; import eva2.gui.BeanInspector;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.AbstractEAIndividualComparator; import eva2.optimization.individuals.AbstractEAIndividualComparator;
import eva2.optimization.individuals.IndividualDistanceComparator; import eva2.optimization.individuals.IndividualDistanceComparator;
import eva2.optimization.operators.distancemetric.EuclideanMetric; import eva2.optimization.operator.distancemetric.EuclideanMetric;
import eva2.optimization.operators.distancemetric.InterfaceDistanceMetric; import eva2.optimization.operator.distancemetric.InterfaceDistanceMetric;
import eva2.optimization.operators.distancemetric.PhenotypeMetric; import eva2.optimization.operator.distancemetric.PhenotypeMetric;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.tools.Pair; import eva2.tools.Pair;
import java.util.ArrayList; import java.util.ArrayList;

View File

@@ -1,13 +1,13 @@
package eva2.optimization.operators.cluster; package eva2.optimization.operator.cluster;
import eva2.gui.GraphPointSet; import eva2.gui.GraphPointSet;
import eva2.gui.Plot; import eva2.gui.Plot;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.ESIndividualDoubleData; import eva2.optimization.individuals.ESIndividualDoubleData;
import eva2.optimization.individuals.InterfaceDataTypeDouble; import eva2.optimization.individuals.InterfaceDataTypeDouble;
import eva2.optimization.operators.distancemetric.EuclideanMetric; import eva2.optimization.operator.distancemetric.EuclideanMetric;
import eva2.optimization.operators.distancemetric.InterfaceDistanceMetric; import eva2.optimization.operator.distancemetric.InterfaceDistanceMetric;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.F1Problem; import eva2.optimization.problems.F1Problem;
import eva2.tools.chart2d.Chart2DDPointIconCircle; import eva2.tools.chart2d.Chart2DDPointIconCircle;
import eva2.tools.chart2d.Chart2DDPointIconText; import eva2.tools.chart2d.Chart2DDPointIconText;

View File

@@ -1,14 +1,14 @@
package eva2.optimization.operators.cluster; package eva2.optimization.operator.cluster;
import eva2.gui.BeanInspector; import eva2.gui.BeanInspector;
import eva2.gui.GenericObjectEditor; import eva2.gui.GenericObjectEditor;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.AbstractEAIndividualComparator; import eva2.optimization.individuals.AbstractEAIndividualComparator;
import eva2.optimization.operators.distancemetric.InterfaceDistanceMetric; import eva2.optimization.operator.distancemetric.InterfaceDistanceMetric;
import eva2.optimization.operators.distancemetric.PhenotypeMetric; import eva2.optimization.operator.distancemetric.PhenotypeMetric;
import eva2.optimization.operators.paramcontrol.ParamAdaption; import eva2.optimization.operator.paramcontrol.ParamAdaption;
import eva2.optimization.operators.paramcontrol.ParameterControlManager; import eva2.optimization.operator.paramcontrol.ParameterControlManager;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;

View File

@@ -1,11 +1,11 @@
package eva2.optimization.operators.cluster; package eva2.optimization.operator.cluster;
import eva2.gui.GraphPointSet; import eva2.gui.GraphPointSet;
import eva2.gui.Plot; import eva2.gui.Plot;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.ESIndividualDoubleData; import eva2.optimization.individuals.ESIndividualDoubleData;
import eva2.optimization.individuals.InterfaceDataTypeDouble; import eva2.optimization.individuals.InterfaceDataTypeDouble;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.F1Problem; import eva2.optimization.problems.F1Problem;
import eva2.tools.chart2d.Chart2DDPointIconCircle; import eva2.tools.chart2d.Chart2DDPointIconCircle;
import eva2.tools.chart2d.Chart2DDPointIconText; import eva2.tools.chart2d.Chart2DDPointIconText;

View File

@@ -1,6 +1,6 @@
package eva2.optimization.operators.cluster; package eva2.optimization.operator.cluster;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
/** /**
* This the interface to clustering algorithms, but since there * This the interface to clustering algorithms, but since there

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.cluster; package eva2.optimization.operator.cluster;
/** /**
* A clustering method which has a cluster parameter - the niche radius for example. * A clustering method which has a cluster parameter - the niche radius for example.

View File

@@ -1,6 +1,6 @@
package eva2.optimization.operators.cluster; package eva2.optimization.operator.cluster;
import eva2.optimization.operators.distancemetric.InterfaceDistanceMetric; import eva2.optimization.operator.distancemetric.InterfaceDistanceMetric;
/** /**
* A clustering method which is associated with a metric. * A clustering method which is associated with a metric.

View File

@@ -1,10 +1,10 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
import eva2.optimization.operators.paramcontrol.InterfaceParameterControl; import eva2.optimization.operator.paramcontrol.InterfaceParameterControl;
import eva2.optimization.operators.paramcontrol.ParamAdaption; import eva2.optimization.operator.paramcontrol.ParamAdaption;
import eva2.optimization.operators.paramcontrol.ParameterControlManager; import eva2.optimization.operator.paramcontrol.ParameterControlManager;
import eva2.optimization.operators.paramcontrol.GenericParamAdaption; import eva2.optimization.operator.paramcontrol.GenericParamAdaption;
import eva2.optimization.operators.paramcontrol.NoParamAdaption; import eva2.optimization.operator.paramcontrol.NoParamAdaption;
import eva2.gui.GenericObjectEditor; import eva2.gui.GenericObjectEditor;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.problems.AbstractProblemDouble; import eva2.optimization.problems.AbstractProblemDouble;

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.InterfaceDataTypeDouble; import eva2.optimization.individuals.InterfaceDataTypeDouble;

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
/** /**
* To handle a set of constraints with a single parameter adaption mechanism. * To handle a set of constraints with a single parameter adaption mechanism.

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
public enum ConstraintHandlingEnum { public enum ConstraintHandlingEnum {
specificTag, penaltyAdditive, penaltyMultiplicative; specificTag, penaltyAdditive, penaltyMultiplicative;

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
public enum ConstraintRelationEnum { public enum ConstraintRelationEnum {
lessEqZero, eqZero, greaterEqZero;//, linearLessEqZero; lessEqZero, eqZero, greaterEqZero;//, linearLessEqZero;

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
import eva2.gui.GenericObjectEditor; import eva2.gui.GenericObjectEditor;

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
import eva2.optimization.individuals.codings.gp.AbstractGPNode; import eva2.optimization.individuals.codings.gp.AbstractGPNode;
import eva2.optimization.problems.GPFunctionProblem; import eva2.optimization.problems.GPFunctionProblem;

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
/** /**
* A constraint that is already calculated by the fitness function as an * A constraint that is already calculated by the fitness function as an

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
/** /**
* A constraint delivering a double valued degree of violation. * A constraint delivering a double valued degree of violation.

View File

@@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint; package eva2.optimization.operator.constraint;
import eva2.gui.GenericObjectEditor; import eva2.gui.GenericObjectEditor;
import eva2.tools.EVAERROR; import eva2.tools.EVAERROR;

View File

@@ -1,110 +1,110 @@
package eva2.optimization.operators.crossover; package eva2.optimization.operator.crossover;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.operators.mutation.InterfaceAdaptOperatorGenerational; import eva2.optimization.operator.mutation.InterfaceAdaptOperatorGenerational;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
/** /**
* A modified version of the CrossoverEAMixer that adapts the weights with which the crossover-methods are chosen * A modified version of the CrossoverEAMixer that adapts the weights with which the crossover-methods are chosen
* *
* @author Alex * @author Alex
* *
*/ */
public class AdaptiveCrossoverEAMixer extends CrossoverEAMixer implements InterfaceAdaptOperatorGenerational { public class AdaptiveCrossoverEAMixer extends CrossoverEAMixer implements InterfaceAdaptOperatorGenerational {
private Population pop = new Population(); private Population pop = new Population();
private boolean initialized = false; private boolean initialized = false;
private double lastFitness = Double.MAX_VALUE; private double lastFitness = Double.MAX_VALUE;
private int[] used; private int[] used;
private InterfaceOptimizationProblem opt; private InterfaceOptimizationProblem opt;
public AdaptiveCrossoverEAMixer(){ public AdaptiveCrossoverEAMixer(){
super(); super();
} }
public AdaptiveCrossoverEAMixer(AdaptiveCrossoverEAMixer mutator) { public AdaptiveCrossoverEAMixer(AdaptiveCrossoverEAMixer mutator) {
super(mutator); super(mutator);
this.pop = (Population) mutator.pop.clone(); // TODO !Make a deep copy!? this.pop = (Population) mutator.pop.clone(); // TODO !Make a deep copy!?
this.initialized = mutator.initialized; this.initialized = mutator.initialized;
this.lastFitness = mutator.lastFitness; this.lastFitness = mutator.lastFitness;
this.used = mutator.used; this.used = mutator.used;
this.opt = mutator.opt; this.opt = mutator.opt;
} }
/** /**
* Create a mutation mixer with equal weights of the given mutation operators. * Create a mutation mixer with equal weights of the given mutation operators.
* @param mutators * @param mutators
*/ */
public AdaptiveCrossoverEAMixer(InterfaceCrossover ... crossovers) { public AdaptiveCrossoverEAMixer(InterfaceCrossover ... crossovers) {
this.m_Crossers = new PropertyCrossoverMixer(crossovers); this.m_Crossers = new PropertyCrossoverMixer(crossovers);
this.m_Crossers.m_SelectedTargets = m_Crossers.m_AvailableTargets.clone(); this.m_Crossers.m_SelectedTargets = m_Crossers.m_AvailableTargets.clone();
} }
@Override @Override
protected void maybeAdaptWeights(AbstractEAIndividual[] indies) { protected void maybeAdaptWeights(AbstractEAIndividual[] indies) {
if(initialized){ if(initialized){
AbstractEAIndividual indy = indies[0]; AbstractEAIndividual indy = indies[0];
this.opt.evaluate(indy); this.opt.evaluate(indy);
this.pop.incrFunctionCalls(); this.pop.incrFunctionCalls();
if(indy.getFitness(0)<this.lastFitness){ if(indy.getFitness(0)<this.lastFitness){
this.lastFitness = indy.getFitness(0); this.lastFitness = indy.getFitness(0);
this.used[lastOperatorIndex] += 1; this.used[lastOperatorIndex] += 1;
int sum = 0; int sum = 0;
for(int i=0; i<this.used.length; i++){ for(int i=0; i<this.used.length; i++){
sum += used[i]; sum += used[i];
} }
double[] weights = new double[used.length]; double[] weights = new double[used.length];
for(int i=0; i<weights.length; i++){ for(int i=0; i<weights.length; i++){
weights[i] = ((double) used[i])/sum; weights[i] = ((double) used[i])/sum;
} }
getCrossovers().setWeights(weights); getCrossovers().setWeights(weights);
} }
}else{ }else{
System.err.println("not yet initialized"); System.err.println("not yet initialized");
} }
} }
public void init(AbstractEAIndividual individual, InterfaceOptimizationProblem opt, Population pop, double fit){ public void init(AbstractEAIndividual individual, InterfaceOptimizationProblem opt, Population pop, double fit){
InterfaceCrossover[] mutators = this.m_Crossers.getSelectedCrossers(); InterfaceCrossover[] mutators = this.m_Crossers.getSelectedCrossers();
for (int i = 0; i < mutators.length; i++) { for (int i = 0; i < mutators.length; i++) {
mutators[i].init(individual, opt); mutators[i].init(individual, opt);
} }
this.pop = pop; this.pop = pop;
this.lastFitness = fit; this.lastFitness = fit;
this.used = new int[getCrossovers().getWeights().length]; this.used = new int[getCrossovers().getWeights().length];
for(int i=0; i<this.used.length; i++){ for(int i=0; i<this.used.length; i++){
this.used[i]=1; this.used[i]=1;
} }
this.opt = opt; this.opt = opt;
this.initialized = true; this.initialized = true;
} }
public void update(AbstractEAIndividual individual, InterfaceOptimizationProblem opt, Population pop, double fit){ public void update(AbstractEAIndividual individual, InterfaceOptimizationProblem opt, Population pop, double fit){
InterfaceCrossover[] mutators = this.m_Crossers.getSelectedCrossers(); InterfaceCrossover[] mutators = this.m_Crossers.getSelectedCrossers();
for (int i = 0; i < mutators.length; i++) { for (int i = 0; i < mutators.length; i++) {
mutators[i].init(individual, opt); mutators[i].init(individual, opt);
} }
this.pop = pop; this.pop = pop;
this.lastFitness = fit; this.lastFitness = fit;
this.opt = opt; this.opt = opt;
} }
public boolean isInitialized(){ public boolean isInitialized(){
return this.initialized; return this.initialized;
} }
@Override @Override
public void adaptAfterSelection(Population oldPop, Population selectedPop) { public void adaptAfterSelection(Population oldPop, Population selectedPop) {
// Nothing to to here // Nothing to to here
} }
@Override @Override
public void adaptGenerational(Population oldPop, Population selectedPop, public void adaptGenerational(Population oldPop, Population selectedPop,
Population newPop, boolean updateSelected) { Population newPop, boolean updateSelected) {
// TODO Perform adaption here by checking how often individuals in newPop have used which operator // TODO Perform adaption here by checking how often individuals in newPop have used which operator
// look at CrossoverEAMixer.CROSSOVER_EA_MIXER_OPERATOR_KEY or AbstractOptimizationProblem.OLD_FITNESS_KEY using AbstractEAIndividual.getData(KEY); // look at CrossoverEAMixer.CROSSOVER_EA_MIXER_OPERATOR_KEY or AbstractOptimizationProblem.OLD_FITNESS_KEY using AbstractEAIndividual.getData(KEY);
System.out.println("In adaptGenerational"); System.out.println("In adaptGenerational");
} }
} }

View File

@@ -1,81 +1,81 @@
package eva2.optimization.operators.crossover; package eva2.optimization.operator.crossover;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.InterfaceDataTypeBinary; import eva2.optimization.individuals.InterfaceDataTypeBinary;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.optimization.strategies.BinaryScatterSearch; import eva2.optimization.strategies.BinaryScatterSearch;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
import java.util.BitSet; import java.util.BitSet;
/** /**
* This crossover-Method performs a \"union\" of the selected Individuals * This crossover-Method performs a \"union\" of the selected Individuals
* It only mates 2 Individuals, not more * It only mates 2 Individuals, not more
* *
* @author Alex * @author Alex
* *
*/ */
public class CM1 implements InterfaceCrossover, java.io.Serializable { public class CM1 implements InterfaceCrossover, java.io.Serializable {
private InterfaceOptimizationProblem m_OptimizationProblem; private InterfaceOptimizationProblem m_OptimizationProblem;
public CM1(){ public CM1(){
} }
public CM1(CM1 c){ public CM1(CM1 c){
this.m_OptimizationProblem = c.m_OptimizationProblem; this.m_OptimizationProblem = c.m_OptimizationProblem;
} }
@Override @Override
public Object clone(){ public Object clone(){
return new CM1(this); return new CM1(this);
} }
@Override @Override
public AbstractEAIndividual[] mate(AbstractEAIndividual indy1, public AbstractEAIndividual[] mate(AbstractEAIndividual indy1,
Population partners) { Population partners) {
AbstractEAIndividual[] result = null; AbstractEAIndividual[] result = null;
result = new AbstractEAIndividual[1]; result = new AbstractEAIndividual[1];
if(indy1 instanceof InterfaceDataTypeBinary && partners.getEAIndividual(0) instanceof InterfaceDataTypeBinary){ if(indy1 instanceof InterfaceDataTypeBinary && partners.getEAIndividual(0) instanceof InterfaceDataTypeBinary){
BitSet data = ((InterfaceDataTypeBinary) indy1).getBinaryData(); BitSet data = ((InterfaceDataTypeBinary) indy1).getBinaryData();
BitSet data2 = ((InterfaceDataTypeBinary) partners.getIndividual(0)).getBinaryData(); BitSet data2 = ((InterfaceDataTypeBinary) partners.getIndividual(0)).getBinaryData();
for(int j=0; j<data2.size(); j++){ for(int j=0; j<data2.size(); j++){
if(data2.get(j)){ if(data2.get(j)){
data.set(j, true); data.set(j, true);
} }
} }
partners.remove(0); partners.remove(0);
for(int i=0; i<data.size(); i++){ for(int i=0; i<data.size(); i++){
if(RNG.flipCoin(Math.max(0, 1-BinaryScatterSearch.score(i, partners)))&&data.get(i)){ if(RNG.flipCoin(Math.max(0, 1-BinaryScatterSearch.score(i, partners)))&&data.get(i)){
data.set(i, false); data.set(i, false);
} }
} }
((InterfaceDataTypeBinary) indy1).SetBinaryGenotype(data); ((InterfaceDataTypeBinary) indy1).SetBinaryGenotype(data);
} }
result[0]=indy1; result[0]=indy1;
return result; return result;
} }
@Override @Override
public void init(AbstractEAIndividual individual, public void init(AbstractEAIndividual individual,
InterfaceOptimizationProblem opt) { InterfaceOptimizationProblem opt) {
this.m_OptimizationProblem = opt; this.m_OptimizationProblem = opt;
} }
@Override @Override
public String getStringRepresentation() { public String getStringRepresentation() {
return getName(); return getName();
} }
/***************************************************** /*****************************************************
* GUI * GUI
*/ */
public String getName(){ public String getName(){
return "Combination Method 1"; return "Combination Method 1";
} }
public static String globalInfo() { public static String globalInfo() {
return "This is a Crossover Method for Binary Individuals which just forms the \"union\" of the individuals"; return "This is a Crossover Method for Binary Individuals which just forms the \"union\" of the individuals";
} }
} }

View File

@@ -1,80 +1,80 @@
package eva2.optimization.operators.crossover; package eva2.optimization.operator.crossover;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.InterfaceDataTypeBinary; import eva2.optimization.individuals.InterfaceDataTypeBinary;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
import java.util.BitSet; import java.util.BitSet;
/** /**
* This crossover-Method performs an \"intersection\" of the selected Individuals * This crossover-Method performs an \"intersection\" of the selected Individuals
* It only mates 2 Individuals, not more * It only mates 2 Individuals, not more
* *
* @author Alex * @author Alex
* *
*/ */
public class CM2 implements InterfaceCrossover, java.io.Serializable { public class CM2 implements InterfaceCrossover, java.io.Serializable {
private InterfaceOptimizationProblem m_OptimizationProblem; private InterfaceOptimizationProblem m_OptimizationProblem;
public CM2(){ public CM2(){
} }
public CM2(CM2 c){ public CM2(CM2 c){
this.m_OptimizationProblem = c.m_OptimizationProblem; this.m_OptimizationProblem = c.m_OptimizationProblem;
} }
@Override @Override
public Object clone(){ public Object clone(){
return new CM2(this); return new CM2(this);
} }
@Override @Override
public AbstractEAIndividual[] mate(AbstractEAIndividual indy1, public AbstractEAIndividual[] mate(AbstractEAIndividual indy1,
Population partners) { Population partners) {
AbstractEAIndividual[] result = null; AbstractEAIndividual[] result = null;
result = new AbstractEAIndividual[1]; result = new AbstractEAIndividual[1];
if(indy1 instanceof InterfaceDataTypeBinary && partners.getEAIndividual(0) instanceof InterfaceDataTypeBinary){ if(indy1 instanceof InterfaceDataTypeBinary && partners.getEAIndividual(0) instanceof InterfaceDataTypeBinary){
BitSet data = ((InterfaceDataTypeBinary) indy1).getBinaryData(); BitSet data = ((InterfaceDataTypeBinary) indy1).getBinaryData();
BitSet data2 = ((InterfaceDataTypeBinary) partners.getIndividual(0)).getBinaryData(); BitSet data2 = ((InterfaceDataTypeBinary) partners.getIndividual(0)).getBinaryData();
for(int j=0; j<data2.length(); j++){ for(int j=0; j<data2.length(); j++){
if(data2.get(j)){ if(data2.get(j)){
data.set(j, true); data.set(j, true);
} }
} }
for(int i=0; i<data.size(); i++){ for(int i=0; i<data.size(); i++){
if(RNG.flipCoin(0.5)){ if(RNG.flipCoin(0.5)){
data.set(i, false); data.set(i, false);
} }
} }
((InterfaceDataTypeBinary) indy1).SetBinaryGenotype(data); ((InterfaceDataTypeBinary) indy1).SetBinaryGenotype(data);
} }
result[0]=indy1; result[0]=indy1;
return result; return result;
} }
@Override @Override
public void init(AbstractEAIndividual individual, public void init(AbstractEAIndividual individual,
InterfaceOptimizationProblem opt) { InterfaceOptimizationProblem opt) {
this.m_OptimizationProblem = opt; this.m_OptimizationProblem = opt;
} }
@Override @Override
public String getStringRepresentation() { public String getStringRepresentation() {
return getName(); return getName();
} }
/***************************************************** /*****************************************************
* GUI * GUI
*/ */
public String getName(){ public String getName(){
return "Combination Method 2"; return "Combination Method 2";
} }
public static String globalInfo() { public static String globalInfo() {
return "This is a Crossover Method for Binary Individuals which just forms the \"intersection\" of the individuals"; return "This is a Crossover Method for Binary Individuals which just forms the \"intersection\" of the individuals";
} }
} }

View File

@@ -1,92 +1,92 @@
package eva2.optimization.operators.crossover; package eva2.optimization.operator.crossover;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.InterfaceDataTypeBinary; import eva2.optimization.individuals.InterfaceDataTypeBinary;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
import java.util.BitSet; import java.util.BitSet;
/** /**
* calculates a weight based on the fitnessValues and the configuration of each bit from the two individuals and use it as a probability to set the bit * calculates a weight based on the fitnessValues and the configuration of each bit from the two individuals and use it as a probability to set the bit
* It only mates 2 Individuals, not more * It only mates 2 Individuals, not more
* *
* @author Alex * @author Alex
* *
*/ */
public class CM3 implements InterfaceCrossover, java.io.Serializable { public class CM3 implements InterfaceCrossover, java.io.Serializable {
private InterfaceOptimizationProblem m_OptimizationProblem; private InterfaceOptimizationProblem m_OptimizationProblem;
public CM3(){ public CM3(){
} }
public CM3(CM3 c){ public CM3(CM3 c){
this.m_OptimizationProblem = c.m_OptimizationProblem; this.m_OptimizationProblem = c.m_OptimizationProblem;
} }
@Override @Override
public Object clone(){ public Object clone(){
return new CM3(this); return new CM3(this);
} }
private int convertBoolean(boolean b){ private int convertBoolean(boolean b){
if(b){ if(b){
return 1; return 1;
}else{ }else{
return 0; return 0;
} }
} }
private double weight(double valX, boolean xi, double valY, boolean yi){ private double weight(double valX, boolean xi, double valY, boolean yi){
double result = valX*convertBoolean(xi)+valY*convertBoolean(yi); double result = valX*convertBoolean(xi)+valY*convertBoolean(yi);
result /= (valX + valY); result /= (valX + valY);
return result; return result;
} }
@Override @Override
public AbstractEAIndividual[] mate(AbstractEAIndividual indy1, public AbstractEAIndividual[] mate(AbstractEAIndividual indy1,
Population partners) { Population partners) {
AbstractEAIndividual[] result = null; AbstractEAIndividual[] result = null;
result = new AbstractEAIndividual[1]; result = new AbstractEAIndividual[1];
if(indy1 instanceof InterfaceDataTypeBinary && partners.getEAIndividual(0) instanceof InterfaceDataTypeBinary){ if(indy1 instanceof InterfaceDataTypeBinary && partners.getEAIndividual(0) instanceof InterfaceDataTypeBinary){
BitSet data = ((InterfaceDataTypeBinary) indy1).getBinaryData(); BitSet data = ((InterfaceDataTypeBinary) indy1).getBinaryData();
BitSet data2 = ((InterfaceDataTypeBinary) partners.getEAIndividual(0)).getBinaryData(); BitSet data2 = ((InterfaceDataTypeBinary) partners.getEAIndividual(0)).getBinaryData();
for(int j=0; j<data.size(); j++){ for(int j=0; j<data.size(); j++){
double w = weight(indy1.getFitness(0), data.get(j), partners.getEAIndividual(0).getFitness(0), data2.get(j)); double w = weight(indy1.getFitness(0), data.get(j), partners.getEAIndividual(0).getFitness(0), data2.get(j));
if(RNG.flipCoin(w)){ if(RNG.flipCoin(w)){
data.set(j, true); data.set(j, true);
}else{ }else{
data.set(j, false); data.set(j, false);
} }
} }
((InterfaceDataTypeBinary) indy1).SetBinaryGenotype(data); ((InterfaceDataTypeBinary) indy1).SetBinaryGenotype(data);
} }
result[0] = indy1; result[0] = indy1;
return result; return result;
} }
@Override @Override
public void init(AbstractEAIndividual individual, public void init(AbstractEAIndividual individual,
InterfaceOptimizationProblem opt) { InterfaceOptimizationProblem opt) {
this.m_OptimizationProblem = opt; this.m_OptimizationProblem = opt;
} }
@Override @Override
public String getStringRepresentation() { public String getStringRepresentation() {
return this.getName(); return this.getName();
} }
/***************************************************** /*****************************************************
* GUI * GUI
*/ */
public String getName(){ public String getName(){
return "Combination Method 3"; return "Combination Method 3";
} }
public static String globalInfo() { public static String globalInfo() {
return "Weight driven crossover method"; return "Weight driven crossover method";
} }
} }

View File

@@ -1,94 +1,94 @@
package eva2.optimization.operators.crossover; package eva2.optimization.operator.crossover;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.InterfaceDataTypeBinary; import eva2.optimization.individuals.InterfaceDataTypeBinary;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
import java.util.BitSet; import java.util.BitSet;
/** /**
* This crossover-Method performs an \"intersection\" of the selected Individuals and then tries to improve it through score (like in CM3) * This crossover-Method performs an \"intersection\" of the selected Individuals and then tries to improve it through score (like in CM3)
* It only mates 2 Individuals, not more * It only mates 2 Individuals, not more
* *
* @author Alex * @author Alex
* *
*/ */
public class CM4 implements InterfaceCrossover, java.io.Serializable { public class CM4 implements InterfaceCrossover, java.io.Serializable {
private InterfaceOptimizationProblem m_OptimizationProblem; private InterfaceOptimizationProblem m_OptimizationProblem;
public CM4(){ public CM4(){
} }
public CM4(CM4 c){ public CM4(CM4 c){
this.m_OptimizationProblem = c.m_OptimizationProblem; this.m_OptimizationProblem = c.m_OptimizationProblem;
} }
@Override @Override
public Object clone(){ public Object clone(){
return new CM4(this); return new CM4(this);
} }
private int convertBoolean(boolean b){ private int convertBoolean(boolean b){
if(b){ if(b){
return 1; return 1;
}else{ }else{
return 0; return 0;
} }
} }
private double weight(double valX, boolean xi, double valY, boolean yi){ private double weight(double valX, boolean xi, double valY, boolean yi){
double result = valX*convertBoolean(xi)+valY*convertBoolean(yi); double result = valX*convertBoolean(xi)+valY*convertBoolean(yi);
result /= (valX + valY); result /= (valX + valY);
return result; return result;
} }
@Override @Override
public AbstractEAIndividual[] mate(AbstractEAIndividual indy1, public AbstractEAIndividual[] mate(AbstractEAIndividual indy1,
Population partners) { Population partners) {
AbstractEAIndividual[] result = null; AbstractEAIndividual[] result = null;
result = new AbstractEAIndividual[1]; result = new AbstractEAIndividual[1];
if(indy1 instanceof InterfaceDataTypeBinary && partners.getEAIndividual(0) instanceof InterfaceDataTypeBinary){ if(indy1 instanceof InterfaceDataTypeBinary && partners.getEAIndividual(0) instanceof InterfaceDataTypeBinary){
BitSet data = ((InterfaceDataTypeBinary) indy1).getBinaryData(); BitSet data = ((InterfaceDataTypeBinary) indy1).getBinaryData();
BitSet data2 = ((InterfaceDataTypeBinary) partners.getEAIndividual(0)).getBinaryData(); BitSet data2 = ((InterfaceDataTypeBinary) partners.getEAIndividual(0)).getBinaryData();
for(int i=0; i<data.size(); i++){ for(int i=0; i<data.size(); i++){
boolean setBit = data.get(i); boolean setBit = data.get(i);
setBit = setBit && data2.get(i); setBit = setBit && data2.get(i);
double val = partners.getEAIndividual(0).getFitness(0); double val = partners.getEAIndividual(0).getFitness(0);
double w = weight(indy1.getFitness(0), data.get(i), val, setBit); double w = weight(indy1.getFitness(0), data.get(i), val, setBit);
data.set(i, setBit); data.set(i, setBit);
if(!setBit && RNG.flipCoin(w)){ if(!setBit && RNG.flipCoin(w)){
data.set(i, true); data.set(i, true);
} }
} }
((InterfaceDataTypeBinary) indy1).SetBinaryGenotype(data); ((InterfaceDataTypeBinary) indy1).SetBinaryGenotype(data);
} }
result[0] = indy1; result[0] = indy1;
return result; return result;
} }
@Override @Override
public void init(AbstractEAIndividual individual, public void init(AbstractEAIndividual individual,
InterfaceOptimizationProblem opt) { InterfaceOptimizationProblem opt) {
this.m_OptimizationProblem = opt; this.m_OptimizationProblem = opt;
} }
@Override @Override
public String getStringRepresentation() { public String getStringRepresentation() {
return this.getName(); return this.getName();
} }
/***************************************************** /*****************************************************
* GUI * GUI
*/ */
public String getName(){ public String getName(){
return "Combination Method 4"; return "Combination Method 4";
} }
public static String globalInfo() { public static String globalInfo() {
return "Intersection with weight driven improvement"; return "Intersection with weight driven improvement";
} }
} }

View File

@@ -1,77 +1,77 @@
package eva2.optimization.operators.crossover; package eva2.optimization.operator.crossover;
import eva2.optimization.individuals.AbstractEAIndividual; import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.InterfaceDataTypeBinary; import eva2.optimization.individuals.InterfaceDataTypeBinary;
import eva2.optimization.populations.Population; import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG; import eva2.tools.math.RNG;
import java.util.BitSet; import java.util.BitSet;
/** /**
* This crossover-Method performs an \"intersection\" of the selected Individuals and then tries to improve it by randomly setting Bits to 1 * This crossover-Method performs an \"intersection\" of the selected Individuals and then tries to improve it by randomly setting Bits to 1
* It only mates 2 Individuals, not more * It only mates 2 Individuals, not more
* *
* @author Alex * @author Alex
* *
*/ */
public class CM5 implements InterfaceCrossover, java.io.Serializable { public class CM5 implements InterfaceCrossover, java.io.Serializable {
private InterfaceOptimizationProblem m_OptimizationProblem; private InterfaceOptimizationProblem m_OptimizationProblem;
public CM5(){ public CM5(){
} }
public CM5(CM5 c){ public CM5(CM5 c){
this.m_OptimizationProblem = c.m_OptimizationProblem; this.m_OptimizationProblem = c.m_OptimizationProblem;
} }
@Override @Override
public Object clone(){ public Object clone(){
return new CM5(this); return new CM5(this);
} }
@Override @Override
public AbstractEAIndividual[] mate(AbstractEAIndividual indy1, public AbstractEAIndividual[] mate(AbstractEAIndividual indy1,
Population partners) { Population partners) {
AbstractEAIndividual[] result = null; AbstractEAIndividual[] result = null;
result = new AbstractEAIndividual[1]; result = new AbstractEAIndividual[1];
if(indy1 instanceof InterfaceDataTypeBinary && partners.getEAIndividual(0) instanceof InterfaceDataTypeBinary){ if(indy1 instanceof InterfaceDataTypeBinary && partners.getEAIndividual(0) instanceof InterfaceDataTypeBinary){
BitSet data = ((InterfaceDataTypeBinary) indy1).getBinaryData(); BitSet data = ((InterfaceDataTypeBinary) indy1).getBinaryData();
BitSet data2 = ((InterfaceDataTypeBinary) partners.getEAIndividual(0)).getBinaryData(); BitSet data2 = ((InterfaceDataTypeBinary) partners.getEAIndividual(0)).getBinaryData();
for(int i=0; i<data.size(); i++){ for(int i=0; i<data.size(); i++){
boolean setBit = data2.get(i); boolean setBit = data2.get(i);
data.set(i, setBit); data.set(i, setBit);
if(!setBit && RNG.flipCoin(0.5)){ if(!setBit && RNG.flipCoin(0.5)){
data.set(i, true); data.set(i, true);
} }
} }
((InterfaceDataTypeBinary) indy1).SetBinaryGenotype(data); ((InterfaceDataTypeBinary) indy1).SetBinaryGenotype(data);
} }
result[0] = indy1; result[0] = indy1;
return result; return result;
} }
@Override @Override
public void init(AbstractEAIndividual individual, public void init(AbstractEAIndividual individual,
InterfaceOptimizationProblem opt) { InterfaceOptimizationProblem opt) {
this.m_OptimizationProblem = opt; this.m_OptimizationProblem = opt;
} }
@Override @Override
public String getStringRepresentation() { public String getStringRepresentation() {
return this.getName(); return this.getName();
} }
/***************************************************** /*****************************************************
* GUI * GUI
*/ */
public String getName(){ public String getName(){
return "Combination Method 5"; return "Combination Method 5";
} }
public static String globalInfo() { public static String globalInfo() {
return "Intersection with random change"; return "Intersection with random change";
} }
} }

Some files were not shown because too many files have changed in this diff Show More