Renamed eva2.populations package to eva2.population
This commit is contained in:
parent
3b3c44ffc6
commit
a4c45b6295
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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.*;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
/**
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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.*;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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.";
|
||||
}
|
||||
}
|
@ -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()))) {
|
@ -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;
|
||||
|
@ -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.
|
@ -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;
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -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;
|
@ -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;
|
@ -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
|
@ -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.
|
@ -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
|
@ -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.
|
@ -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.
|
@ -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.
|
@ -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
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.operators.classification;
|
||||
package eva2.optimization.operator.classification;
|
||||
|
||||
import eva2.tools.chart2d.*;
|
||||
import eva2.tools.math.RNG;
|
@ -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.
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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
|
@ -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.
|
@ -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.
|
@ -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;
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.operators.constraint;
|
||||
package eva2.optimization.operator.constraint;
|
||||
|
||||
import eva2.optimization.individuals.AbstractEAIndividual;
|
||||
import eva2.optimization.individuals.InterfaceDataTypeDouble;
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.operators.constraint;
|
||||
package eva2.optimization.operator.constraint;
|
||||
|
||||
import eva2.optimization.individuals.AbstractEAIndividual;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.operators.constraint;
|
||||
package eva2.optimization.operator.constraint;
|
||||
|
||||
import eva2.optimization.individuals.AbstractEAIndividual;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.operators.constraint;
|
||||
package eva2.optimization.operator.constraint;
|
||||
|
||||
import eva2.optimization.individuals.AbstractEAIndividual;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.operators.constraint;
|
||||
package eva2.optimization.operator.constraint;
|
||||
|
||||
import eva2.optimization.individuals.AbstractEAIndividual;
|
||||
|
@ -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.
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.operators.constraint;
|
||||
package eva2.optimization.operator.constraint;
|
||||
|
||||
public enum ConstraintHandlingEnum {
|
||||
specificTag, penaltyAdditive, penaltyMultiplicative;
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.operators.constraint;
|
||||
package eva2.optimization.operator.constraint;
|
||||
|
||||
public enum ConstraintRelationEnum {
|
||||
lessEqZero, eqZero, greaterEqZero;//, linearLessEqZero;
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.operators.constraint;
|
||||
package eva2.optimization.operator.constraint;
|
||||
|
||||
import eva2.gui.GenericObjectEditor;
|
||||
|
@ -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;
|
@ -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
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.operators.constraint;
|
||||
package eva2.optimization.operator.constraint;
|
||||
|
||||
import eva2.optimization.individuals.AbstractEAIndividual;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.operators.constraint;
|
||||
package eva2.optimization.operator.constraint;
|
||||
|
||||
/**
|
||||
* A constraint delivering a double valued degree of violation.
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.operators.constraint;
|
||||
package eva2.optimization.operator.constraint;
|
||||
|
||||
import eva2.gui.GenericObjectEditor;
|
||||
import eva2.tools.EVAERROR;
|
@ -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");
|
||||
}
|
||||
}
|
@ -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";
|
||||
}
|
||||
|
||||
}
|
@ -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";
|
||||
}
|
||||
}
|
@ -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";
|
||||
}
|
||||
|
||||
}
|
@ -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";
|
||||
}
|
||||
|
||||
}
|
@ -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
Loading…
x
Reference in New Issue
Block a user