Renamed eva2.populations package to eva2.population

This commit is contained in:
Fabian Becker 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;
import eva2.optimization.modules.OptimizationParameters;
import eva2.optimization.operators.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.NoMutation;
import eva2.optimization.operators.mutation.MutateESFixedStepSize;
import eva2.optimization.operators.mutation.MutateESCovarianceMatrixAdaption;
import eva2.optimization.operators.mutation.MutateESGlobal;
import eva2.optimization.operators.mutation.MutateESRankMuCMA;
import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operator.mutation.NoMutation;
import eva2.optimization.operator.mutation.MutateESFixedStepSize;
import eva2.optimization.operator.mutation.MutateESCovarianceMatrixAdaption;
import eva2.optimization.operator.mutation.MutateESGlobal;
import eva2.optimization.operator.mutation.MutateESRankMuCMA;
import eva2.optimization.strategies.ParticleSwarmOptimization;
import eva2.optimization.strategies.EvolutionStrategyIPOP;
import eva2.optimization.strategies.GradientDescentAlgorithm;
@ -36,24 +36,24 @@ import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.InterfaceDataTypeBinary;
import eva2.optimization.individuals.InterfaceDataTypeDouble;
import eva2.optimization.individuals.InterfaceESIndividual;
import eva2.optimization.operators.archiving.ArchivingNSGAII;
import eva2.optimization.operators.archiving.InformationRetrievalInserting;
import eva2.optimization.operators.archiving.InterfaceArchiving;
import eva2.optimization.operators.archiving.InterfaceInformationRetrieval;
import eva2.optimization.operators.cluster.ClusteringDensityBased;
import eva2.optimization.operators.cluster.InterfaceClustering;
import eva2.optimization.operators.crossover.CrossoverESDefault;
import eva2.optimization.operators.crossover.InterfaceCrossover;
import eva2.optimization.operators.crossover.NoCrossover;
import eva2.optimization.operators.distancemetric.IndividualDataMetric;
import eva2.optimization.operators.postprocess.InterfacePostProcessParams;
import eva2.optimization.operators.postprocess.PostProcessParams;
import eva2.optimization.operators.selection.InterfaceSelection;
import eva2.optimization.operators.selection.SelectBestIndividuals;
import eva2.optimization.operators.terminators.CombinedTerminator;
import eva2.optimization.operators.terminators.EvaluationTerminator;
import eva2.optimization.populations.PBILPopulation;
import eva2.optimization.populations.Population;
import eva2.optimization.operator.archiving.ArchivingNSGAII;
import eva2.optimization.operator.archiving.InformationRetrievalInserting;
import eva2.optimization.operator.archiving.InterfaceArchiving;
import eva2.optimization.operator.archiving.InterfaceInformationRetrieval;
import eva2.optimization.operator.cluster.ClusteringDensityBased;
import eva2.optimization.operator.cluster.InterfaceClustering;
import eva2.optimization.operator.crossover.CrossoverESDefault;
import eva2.optimization.operator.crossover.InterfaceCrossover;
import eva2.optimization.operator.crossover.NoCrossover;
import eva2.optimization.operator.distancemetric.IndividualDataMetric;
import eva2.optimization.operator.postprocess.InterfacePostProcessParams;
import eva2.optimization.operator.postprocess.PostProcessParams;
import eva2.optimization.operator.selection.InterfaceSelection;
import eva2.optimization.operator.selection.SelectBestIndividuals;
import eva2.optimization.operator.terminators.CombinedTerminator;
import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.population.PBILPopulation;
import eva2.optimization.population.Population;
import eva2.optimization.problems.AbstractOptimizationProblem;
import eva2.optimization.stat.InterfaceStatistics;
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.InterfaceDataTypeDouble;
import eva2.optimization.individuals.InterfaceDataTypeInteger;
import eva2.optimization.operators.postprocess.InterfacePostProcessParams;
import eva2.optimization.operators.postprocess.PostProcessParams;
import eva2.optimization.populations.Population;
import eva2.optimization.populations.SolutionSet;
import eva2.optimization.operator.postprocess.InterfacePostProcessParams;
import eva2.optimization.operator.postprocess.PostProcessParams;
import eva2.optimization.population.Population;
import eva2.optimization.population.SolutionSet;
import eva2.optimization.modules.OptimizationParameters;
import eva2.optimization.modules.Processor;
import java.io.PrintWriter;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
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.InterfaceOptimizationProblem;
import eva2.optimization.strategies.InterfaceOptimizer;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,10 +1,10 @@
package eva2.optimization.individuals;
import eva2.optimization.operators.crossover.CrossoverGAGINPoint;
import eva2.optimization.operators.crossover.InterfaceCrossover;
import eva2.optimization.operators.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateGANBit;
import eva2.optimization.operator.crossover.CrossoverGAGINPoint;
import eva2.optimization.operator.crossover.InterfaceCrossover;
import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operator.mutation.MutateGANBit;
import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG;
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.InterfaceGADoubleCoding;
import eva2.optimization.operators.crossover.CrossoverGAGINPoint;
import eva2.optimization.operators.crossover.InterfaceCrossover;
import eva2.optimization.operators.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateGAUniform;
import eva2.optimization.operator.crossover.CrossoverGAGINPoint;
import eva2.optimization.operator.crossover.InterfaceCrossover;
import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operator.mutation.MutateGAUniform;
import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG;
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.InterfaceGAIntegerCoding;
import eva2.optimization.operators.crossover.CrossoverGAGINPoint;
import eva2.optimization.operators.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateGANBit;
import eva2.optimization.operator.crossover.CrossoverGAGINPoint;
import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operator.mutation.MutateGANBit;
import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG;
import java.util.BitSet;

View File

@ -2,8 +2,8 @@ package eva2.optimization.individuals;
import eva2.optimization.individuals.codings.gp.InterfaceProgram;
import eva2.optimization.operators.mutation.InterfaceMutation;
import eva2.optimization.populations.Population;
import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceOptimizationProblem;
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.GPArea;
import eva2.optimization.individuals.codings.gp.InterfaceProgram;
import eva2.optimization.operators.crossover.CrossoverGADefault;
import eva2.optimization.operators.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateDefault;
import eva2.optimization.operator.crossover.CrossoverGADefault;
import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operator.mutation.MutateDefault;
import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.math.RNG;
import java.util.ArrayList;

View File

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

View File

@ -1,7 +1,7 @@
package eva2.optimization.individuals;
import eva2.optimization.operators.mutation.InterfaceMutation;
import eva2.optimization.populations.Population;
import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceOptimizationProblem;
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.GPArea;
import eva2.optimization.individuals.codings.gp.InterfaceProgram;
import eva2.optimization.operators.crossover.CrossoverGPDefault;
import eva2.optimization.operators.mutation.InterfaceMutation;
import eva2.optimization.operators.mutation.MutateDefault;
import eva2.optimization.operator.crossover.CrossoverGPDefault;
import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operator.mutation.MutateDefault;
import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.tools.EVAERROR;
import eva2.tools.math.RNG;

View File

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

View File

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

View File

@ -4,7 +4,7 @@ package eva2.optimization.mocco;
import eva2.optimization.go.MOCCOStandalone;
import eva2.optimization.individuals.AbstractEAIndividual;
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.InterfaceOptimizationObjective;
import java.awt.*;

View File

@ -7,7 +7,7 @@ import eva2.gui.PropertyEditorProvider;
import eva2.optimization.go.InterfaceTerminator;
import eva2.optimization.go.MOCCOStandalone;
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.InterfaceMultiObjectiveDeNovoProblem;
import eva2.optimization.problems.InterfaceOptimizationObjective;

View File

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

View File

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

View File

@ -7,7 +7,7 @@ import eva2.gui.PropertyEditorProvider;
import eva2.optimization.go.InterfaceTerminator;
import eva2.optimization.go.MOCCOStandalone;
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.InterfaceMultiObjectiveDeNovoProblem;
import eva2.optimization.problems.InterfaceOptimizationObjective;

View File

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

View File

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

View File

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

View File

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

View File

@ -3,7 +3,7 @@ package eva2.optimization.mocco.paretofrontviewer;
import eva2.gui.*;
import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population;
import eva2.optimization.population.Population;
import eva2.optimization.problems.InterfaceMultiObjectiveDeNovoProblem;
import eva2.optimization.problems.InterfaceOptimizationObjective;
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.InterfacePopulationChangedEventListener;
import eva2.optimization.go.InterfaceTerminator;
import eva2.optimization.operators.postprocess.InterfacePostProcessParams;
import eva2.optimization.operators.postprocess.PostProcessParams;
import eva2.optimization.operator.postprocess.InterfacePostProcessParams;
import eva2.optimization.operator.postprocess.PostProcessParams;
import eva2.optimization.problems.InterfaceAdditionalPopulationInformer;
import eva2.optimization.problems.InterfaceOptimizationProblem;
import eva2.optimization.strategies.InterfaceOptimizer;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -2,7 +2,7 @@ package eva2.optimization.modules;
import eva2.optimization.go.InterfaceOptimizationParameters;
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.InterfaceOptimizationProblem;
import eva2.optimization.strategies.GeneticAlgorithm;

View File

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

View File

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

View File

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

View File

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

View File

@ -1,10 +1,10 @@
package eva2.optimization.modules;
import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.operators.selection.InterfaceSelection;
import eva2.optimization.operators.selection.replacement.InterfaceReplacement;
import eva2.optimization.operators.terminators.EvaluationTerminator;
import eva2.optimization.populations.Population;
import eva2.optimization.operator.selection.InterfaceSelection;
import eva2.optimization.operator.selection.replacement.InterfaceReplacement;
import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.population.Population;
import eva2.optimization.problems.B1Problem;
import eva2.optimization.strategies.InterfaceOptimizer;
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.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population;
import eva2.optimization.population.Population;
import eva2.tools.chart2d.Chart2DDPointIconCross;
import eva2.tools.chart2d.DPoint;
import eva2.tools.chart2d.DPointIcon;
@ -17,11 +17,9 @@ import eva2.tools.chart2d.DPointIcon;
* To change this template use Options | File Templates.
*/
public abstract class AbstractArchiving implements InterfaceArchiving, java.io.Serializable {
protected boolean m_Debug = false;
transient protected eva2.gui.Plot m_Plot = null;
protected int p = 0;
public boolean m_ObeyDebsConstViolationPrinciple = true;
public boolean obeyDebsConstViolationPrinciple = true;
/** This method allows you to make a deep clone of
* the object
@ -30,14 +28,14 @@ public abstract class AbstractArchiving implements InterfaceArchiving, java.io.S
@Override
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
* @param indy The individual that is to be tested.
* @param pop The population that the individual is to be tested against.
* @return True if the individual is dominating
*/
public boolean isDominant(AbstractEAIndividual indy, Population pop) {
if (this.m_ObeyDebsConstViolationPrinciple) {
if (this.obeyDebsConstViolationPrinciple) {
for (int i = 0; i < pop.size(); i++) {
if (!(indy.equals(pop.get(i))) && (((AbstractEAIndividual)pop.get(i)).isDominatingDebConstraints(indy))) {
return false;
@ -180,12 +178,12 @@ public abstract class AbstractArchiving implements InterfaceArchiving, java.io.S
* @param b The new state
*/
public void setObeyDebsConstViolationPrinciple(boolean b) {
this.m_ObeyDebsConstViolationPrinciple = b;
this.obeyDebsConstViolationPrinciple = b;
}
public boolean getObeyDebsConstViolationPrinciple() {
return this.m_ObeyDebsConstViolationPrinciple;
return this.obeyDebsConstViolationPrinciple;
}
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.operators.selection.SelectBestIndividuals;
import eva2.optimization.populations.Population;
import eva2.optimization.operator.selection.SelectBestIndividuals;
import eva2.optimization.population.Population;
/** This simple strategy simply archives all Pareto optimal solutions. This method is
* very prone to OutOfMemory errors!
@ -19,7 +19,7 @@ public class ArchivingAllDominating extends AbstractArchiving implements java.io
}
public ArchivingAllDominating(ArchivingAllDominating a) {
this.m_ObeyDebsConstViolationPrinciple = a.m_ObeyDebsConstViolationPrinciple;
this.obeyDebsConstViolationPrinciple = a.obeyDebsConstViolationPrinciple;
}
@Override
@ -39,7 +39,7 @@ public class ArchivingAllDominating extends AbstractArchiving implements java.io
pop.SetArchive(new Population());
}
// System.out.println("addElementsToArchive");
if (this.m_ObeyDebsConstViolationPrinciple) {
if (this.obeyDebsConstViolationPrinciple) {
for (int i = 0; i < pop.size(); i++) {
//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()))) {

View File

@ -1,10 +1,10 @@
package eva2.optimization.operators.archiving;
package eva2.optimization.operator.archiving;
import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.operators.moso.MOSOMaxiMin;
import eva2.optimization.operators.selection.InterfaceSelection;
import eva2.optimization.operators.selection.SelectBestIndividuals;
import eva2.optimization.populations.Population;
import eva2.optimization.operator.moso.MOSOMaxiMin;
import eva2.optimization.operator.selection.InterfaceSelection;
import eva2.optimization.operator.selection.SelectBestIndividuals;
import eva2.optimization.population.Population;
import eva2.tools.chart2d.Chart2DDPointIconCross;
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.populations.Population;
import eva2.optimization.population.Population;
/** The non dominated sorting GA archiving method, based on dominace sorting.
* 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.populations.Population;
import eva2.optimization.population.Population;
import eva2.tools.chart2d.Chart2DDPointIconCross;
import eva2.tools.chart2d.DPointIcon;
import java.util.ArrayList;

View File

@ -1,109 +1,109 @@
package eva2.optimization.operators.archiving;
import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.AbstractEAIndividualComparator;
import eva2.optimization.populations.Population;
import java.util.Arrays;
public class ArchivingNSGAIISMeasure extends ArchivingNSGAII {
/** This method will cacluated the NSGAII crowding distance
* for all individuals
* @param fronts The pareto fronts
*/
@Override
public void calculateCrowdingDistance(Population[] fronts) {
//TODO Dimension der Zielfunktion checken
for (int rank = 0; rank < fronts.length; rank++)
{
calculateCrowdingDistance(fronts[rank]);
}
}
/** This mehtod will test if a given individual is dominant within
* a given population
* @param indy The individual that is to be tested.
* @param pop The population that the individual is to be tested against.
* @return True if the individual is dominating
*/
@Override
public boolean isDominant(AbstractEAIndividual indy, Population pop) {
if (this.m_ObeyDebsConstViolationPrinciple) {
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))) {
return false;
}
}
} else {
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))) {
return false;
}
}
}
return true;
}
public void calculateCrowdingDistance(Population front) {
Object[] frontArray= front.toArray();
boolean[] assigned=new boolean[frontArray.length];
double[] v=new double[frontArray.length];
int i, left, right;
// initialization of assignment vector
for (i = 0; i < frontArray.length; i++)
{
assigned[ i ] = false;
}
Arrays.sort(frontArray,new AbstractEAIndividualComparator(0));
((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);
v[0]=Double.MAX_VALUE;
v[frontArray.length-1]=Double.MAX_VALUE;
for (int e = 1; e < frontArray.length - 1; e++)
{ // loop over all non-border elements
for (i = 1; (assigned[ i ]); i++); // determine 1st not assigned, non-border element
for (left = 0; i < frontArray.length - 1;)
{ // loop over all not assigned elements
// determine right not assigned neighbor
for (right = i + 1; (assigned[ right]); right++);
v[i] = (((AbstractEAIndividual)frontArray[right]).getFitness(0) - ((AbstractEAIndividual)frontArray[i]).getFitness(0)) *
(((AbstractEAIndividual)frontArray[left]).getFitness(1) - ((AbstractEAIndividual)frontArray[i]).getFitness(1));
left = i;
i = right;
}
int minIndex = 0;
double min=v[minIndex];
for (int f = 1; f < frontArray.length - 1; f++)
{
if (!assigned[ f ]) {
if (v[f] < min)
{
min = v[f];
minIndex = f;
}
}
}
assigned[ minIndex ] = true;
((AbstractEAIndividual)frontArray[ minIndex]).putData("HyperCube",new Double(e));
}
}
}
package eva2.optimization.operator.archiving;
import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.AbstractEAIndividualComparator;
import eva2.optimization.population.Population;
import java.util.Arrays;
public class ArchivingNSGAIISMeasure extends ArchivingNSGAII {
/** This method will cacluated the NSGAII crowding distance
* for all individuals
* @param fronts The pareto fronts
*/
@Override
public void calculateCrowdingDistance(Population[] fronts) {
//TODO Dimension der Zielfunktion checken
for (int rank = 0; rank < fronts.length; rank++)
{
calculateCrowdingDistance(fronts[rank]);
}
}
/** This mehtod will test if a given individual is dominant within
* a given population
* @param indy The individual that is to be tested.
* @param pop The population that the individual is to be tested against.
* @return True if the individual is dominating
*/
@Override
public boolean isDominant(AbstractEAIndividual indy, Population pop) {
if (this.obeyDebsConstViolationPrinciple) {
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))) {
return false;
}
}
} else {
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))) {
return false;
}
}
}
return true;
}
public void calculateCrowdingDistance(Population front) {
Object[] frontArray= front.toArray();
boolean[] assigned=new boolean[frontArray.length];
double[] v=new double[frontArray.length];
int i, left, right;
// initialization of assignment vector
for (i = 0; i < frontArray.length; i++)
{
assigned[ i ] = false;
}
Arrays.sort(frontArray,new AbstractEAIndividualComparator(0));
((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);
v[0]=Double.MAX_VALUE;
v[frontArray.length-1]=Double.MAX_VALUE;
for (int e = 1; e < frontArray.length - 1; e++)
{ // loop over all non-border elements
for (i = 1; (assigned[ i ]); i++); // determine 1st not assigned, non-border element
for (left = 0; i < frontArray.length - 1;)
{ // loop over all not assigned elements
// determine right not assigned neighbor
for (right = i + 1; (assigned[ right]); right++);
v[i] = (((AbstractEAIndividual)frontArray[right]).getFitness(0) - ((AbstractEAIndividual)frontArray[i]).getFitness(0)) *
(((AbstractEAIndividual)frontArray[left]).getFitness(1) - ((AbstractEAIndividual)frontArray[i]).getFitness(1));
left = i;
i = right;
}
int minIndex = 0;
double min=v[minIndex];
for (int f = 1; f < frontArray.length - 1; f++)
{
if (!assigned[ f ]) {
if (v[f] < min)
{
min = v[f];
minIndex = f;
}
}
}
assigned[ minIndex ] = true;
((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.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.populations.Population;
import eva2.optimization.population.Population;
import eva2.tools.chart2d.Chart2DDPointIconCircle;
import eva2.tools.chart2d.Chart2DDPointIconText;
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.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.operators.distancemetric.InterfaceDistanceMetric;
import eva2.optimization.operators.distancemetric.ObjectiveSpaceMetric;
import eva2.optimization.populations.Population;
import eva2.optimization.operator.distancemetric.InterfaceDistanceMetric;
import eva2.optimization.operator.distancemetric.ObjectiveSpaceMetric;
import eva2.optimization.population.Population;
import eva2.tools.chart2d.Chart2DDPointIconCircle;
import eva2.tools.chart2d.Chart2DDPointIconText;
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
* 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
* 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;
/** 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.
* 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
* 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
* 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.populations.Population;
import eva2.optimization.population.Population;
import eva2.tools.math.RNG;
/** This class removes surplus individuals based on bounding

View File

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

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.

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.

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.operators.paramcontrol.ParamAdaption;
import eva2.optimization.operators.paramcontrol.ParameterControlManager;
import eva2.optimization.operators.paramcontrol.GenericParamAdaption;
import eva2.optimization.operators.paramcontrol.NoParamAdaption;
import eva2.optimization.operator.paramcontrol.InterfaceParameterControl;
import eva2.optimization.operator.paramcontrol.ParamAdaption;
import eva2.optimization.operator.paramcontrol.ParameterControlManager;
import eva2.optimization.operator.paramcontrol.GenericParamAdaption;
import eva2.optimization.operator.paramcontrol.NoParamAdaption;
import eva2.gui.GenericObjectEditor;
import eva2.optimization.individuals.AbstractEAIndividual;
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.InterfaceDataTypeDouble;

View File

@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint;
package eva2.optimization.operator.constraint;
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;

View File

@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint;
package eva2.optimization.operator.constraint;
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;

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.

View File

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

View File

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

View File

@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint;
package eva2.optimization.operator.constraint;
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.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

View File

@ -1,4 +1,4 @@
package eva2.optimization.operators.constraint;
package eva2.optimization.operator.constraint;
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.

View File

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

View File

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

View File

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

View File

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

View File

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

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