Renamed init to initialize.
Added @Parameter annotation to EAIndividual
This commit is contained in:
		@@ -14,6 +14,7 @@ import eva2.problems.InterfaceOptimizationProblem;
 | 
				
			|||||||
import eva2.tools.EVAERROR;
 | 
					import eva2.tools.EVAERROR;
 | 
				
			||||||
import eva2.tools.math.RNG;
 | 
					import eva2.tools.math.RNG;
 | 
				
			||||||
import eva2.util.annotation.Hidden;
 | 
					import eva2.util.annotation.Hidden;
 | 
				
			||||||
 | 
					import eva2.util.annotation.Parameter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.*;
 | 
					import java.util.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -275,7 +276,7 @@ public abstract class AbstractEAIndividual implements IndividualInterface, java.
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param opt The optimization problem that is to be solved.
 | 
					     * @param opt The optimization problem that is to be solved.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void init(InterfaceOptimizationProblem opt) {
 | 
					    public void initialize(InterfaceOptimizationProblem opt) {
 | 
				
			||||||
        initializationOperator.initialize(this, opt);
 | 
					        initializationOperator.initialize(this, opt);
 | 
				
			||||||
        this.mutationOperator.initialize(this, opt);
 | 
					        this.mutationOperator.initialize(this, opt);
 | 
				
			||||||
        this.crossoverOperator.init(this, opt);
 | 
					        this.crossoverOperator.init(this, opt);
 | 
				
			||||||
@@ -814,6 +815,7 @@ public abstract class AbstractEAIndividual implements IndividualInterface, java.
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param mutator The mutation operator.
 | 
					     * @param mutator The mutation operator.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
					    @Parameter(name = "mutator", description = "The mutation operator to use.")
 | 
				
			||||||
    public void setMutationOperator(InterfaceMutation mutator) {
 | 
					    public void setMutationOperator(InterfaceMutation mutator) {
 | 
				
			||||||
        this.mutationOperator = mutator;
 | 
					        this.mutationOperator = mutator;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -822,16 +824,13 @@ public abstract class AbstractEAIndividual implements IndividualInterface, java.
 | 
				
			|||||||
        return this.mutationOperator;
 | 
					        return this.mutationOperator;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String mutationOperatorTipText() {
 | 
					 | 
				
			||||||
        return "Choose the mutation operator to use.";
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * This method allows you to set the mutation probability, e.g. the chance
 | 
					     * This method allows you to set the mutation probability, e.g. the chance
 | 
				
			||||||
     * that mutation occurs at all.
 | 
					     * that mutation occurs at all.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param mutprob The mutation probability.
 | 
					     * @param mutprob The mutation probability.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
					    @Parameter(name = "pm", description = "The chance that mutation occurs.")
 | 
				
			||||||
    public void setMutationProbability(double mutprob) {
 | 
					    public void setMutationProbability(double mutprob) {
 | 
				
			||||||
        if (mutprob < 0) {
 | 
					        if (mutprob < 0) {
 | 
				
			||||||
            mutprob = 0;
 | 
					            mutprob = 0;
 | 
				
			||||||
@@ -846,16 +845,13 @@ public abstract class AbstractEAIndividual implements IndividualInterface, java.
 | 
				
			|||||||
        return mutationProbability;
 | 
					        return mutationProbability;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String mutationProbabilityTipText() {
 | 
					 | 
				
			||||||
        return "The chance that mutation occurs.";
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * This method allows you to choose from multiple crossover operators. Note:
 | 
					     * This method allows you to choose from multiple crossover operators. Note:
 | 
				
			||||||
     * If the operator doeesn't suite the data nothing will happen.
 | 
					     * If the operator doesn't suite the data nothing will happen.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param crossover The crossover operator.
 | 
					     * @param crossover The crossover operator.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
					    @Parameter(name = "crossover", description = "The crossover operator.")
 | 
				
			||||||
    public void setCrossoverOperator(InterfaceCrossover crossover) {
 | 
					    public void setCrossoverOperator(InterfaceCrossover crossover) {
 | 
				
			||||||
        this.crossoverOperator = crossover;
 | 
					        this.crossoverOperator = crossover;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -864,15 +860,12 @@ public abstract class AbstractEAIndividual implements IndividualInterface, java.
 | 
				
			|||||||
        return this.crossoverOperator;
 | 
					        return this.crossoverOperator;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String crossoverOperatorTipText() {
 | 
					 | 
				
			||||||
        return "Choose the crossover operator to use.";
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * This method allows to set the crossover probability
 | 
					     * This method allows to set the crossover probability
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param prob
 | 
					     * @param prob
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
					    @Parameter(name = "pc", description = "The crossover rate")
 | 
				
			||||||
    public void setCrossoverProbability(double prob) {
 | 
					    public void setCrossoverProbability(double prob) {
 | 
				
			||||||
        this.crossoverProbability = prob;
 | 
					        this.crossoverProbability = prob;
 | 
				
			||||||
        if (this.crossoverProbability > 1) {
 | 
					        if (this.crossoverProbability > 1) {
 | 
				
			||||||
@@ -887,22 +880,15 @@ public abstract class AbstractEAIndividual implements IndividualInterface, java.
 | 
				
			|||||||
        return this.crossoverProbability;
 | 
					        return this.crossoverProbability;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String crossoverProbabilityTipText() {
 | 
					 | 
				
			||||||
        return "The chance that crossover occurs.";
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public InterfaceInitialization getInitOperator() {
 | 
					    public InterfaceInitialization getInitOperator() {
 | 
				
			||||||
        return initializationOperator;
 | 
					        return initializationOperator;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Parameter(name = "initop", description = "The initialization method for the individual")
 | 
				
			||||||
    public void setInitOperator(InterfaceInitialization mInitOperator) {
 | 
					    public void setInitOperator(InterfaceInitialization mInitOperator) {
 | 
				
			||||||
        initializationOperator = mInitOperator;
 | 
					        initializationOperator = mInitOperator;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String initOperatorTipText() {
 | 
					 | 
				
			||||||
        return "An initialization method for the individual";
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * This method allows you to store an arbitrary value under an arbitrary
 | 
					     * This method allows you to store an arbitrary value under an arbitrary
 | 
				
			||||||
     * name.
 | 
					     * name.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -244,8 +244,8 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte
 | 
				
			|||||||
     * @param opt The optimization problem that is to be solved.
 | 
					     * @param opt The optimization problem that is to be solved.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void init(InterfaceOptimizationProblem opt) {
 | 
					    public void initialize(InterfaceOptimizationProblem opt) {
 | 
				
			||||||
        super.init(opt);
 | 
					        super.initialize(opt);
 | 
				
			||||||
        // evil operators may not respect the range, so at least give some hint
 | 
					        // evil operators may not respect the range, so at least give some hint
 | 
				
			||||||
        if (!Mathematics.isInRange(genotype, range)) {
 | 
					        if (!Mathematics.isInRange(genotype, range)) {
 | 
				
			||||||
            EVAERROR.errorMsgOnce("Warning: Individual out of range after initialization (and potential initial crossover/mutation)!");
 | 
					            EVAERROR.errorMsgOnce("Warning: Individual out of range after initialization (and potential initial crossover/mutation)!");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -76,9 +76,9 @@ public class GAESIndividualBinaryDoubleData extends AbstractEAIndividual impleme
 | 
				
			|||||||
     * @param opt The optimization problem that is to be solved.
 | 
					     * @param opt The optimization problem that is to be solved.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void init(InterfaceOptimizationProblem opt) {
 | 
					    public void initialize(InterfaceOptimizationProblem opt) {
 | 
				
			||||||
        ((AbstractEAIndividual) this.doubleIndividual).init(opt);
 | 
					        ((AbstractEAIndividual) this.doubleIndividual).initialize(opt);
 | 
				
			||||||
        ((AbstractEAIndividual) this.binaryIndividual).init(opt);
 | 
					        ((AbstractEAIndividual) this.binaryIndividual).initialize(opt);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -105,8 +105,8 @@ public class GAESIndividualBinaryDoubleData extends AbstractEAIndividual impleme
 | 
				
			|||||||
                ((AbstractEAIndividual) this.binaryIndividual).initByValue(((Object[]) obj)[0], opt);
 | 
					                ((AbstractEAIndividual) this.binaryIndividual).initByValue(((Object[]) obj)[0], opt);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            ((AbstractEAIndividual) this.doubleIndividual).init(opt);
 | 
					            ((AbstractEAIndividual) this.doubleIndividual).initialize(opt);
 | 
				
			||||||
            ((AbstractEAIndividual) this.binaryIndividual).init(opt);
 | 
					            ((AbstractEAIndividual) this.binaryIndividual).initialize(opt);
 | 
				
			||||||
            System.out.println("Initial value for GAESIndividualDoubleData is not suitable!");
 | 
					            System.out.println("Initial value for GAESIndividualDoubleData is not suitable!");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,9 +72,9 @@ public class GAPIndividualProgramData extends AbstractEAIndividual implements In
 | 
				
			|||||||
     * @param opt The optimization problem that is to be solved.
 | 
					     * @param opt The optimization problem that is to be solved.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void init(InterfaceOptimizationProblem opt) {
 | 
					    public void initialize(InterfaceOptimizationProblem opt) {
 | 
				
			||||||
        ((AbstractEAIndividual) this.numberData).init(opt);
 | 
					        ((AbstractEAIndividual) this.numberData).initialize(opt);
 | 
				
			||||||
        ((AbstractEAIndividual) this.programData).init(opt);
 | 
					        ((AbstractEAIndividual) this.programData).initialize(opt);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -101,8 +101,8 @@ public class GAPIndividualProgramData extends AbstractEAIndividual implements In
 | 
				
			|||||||
                ((AbstractEAIndividual) this.programData).initByValue(((Object[]) obj)[0], opt);
 | 
					                ((AbstractEAIndividual) this.programData).initByValue(((Object[]) obj)[0], opt);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            ((AbstractEAIndividual) this.numberData).init(opt);
 | 
					            ((AbstractEAIndividual) this.numberData).initialize(opt);
 | 
				
			||||||
            ((AbstractEAIndividual) this.programData).init(opt);
 | 
					            ((AbstractEAIndividual) this.programData).initialize(opt);
 | 
				
			||||||
            System.out.println("Initial value for GAPIndividualDoubleData is not suitable!");
 | 
					            System.out.println("Initial value for GAPIndividualDoubleData is not suitable!");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,9 +72,9 @@ public class GIOBGAIndividualIntegerPermutationData extends AbstractEAIndividual
 | 
				
			|||||||
     * @param opt The optimization problem that is to be solved.
 | 
					     * @param opt The optimization problem that is to be solved.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void init(InterfaceOptimizationProblem opt) {
 | 
					    public void initialize(InterfaceOptimizationProblem opt) {
 | 
				
			||||||
        ((AbstractEAIndividual) this.integerData).init(opt);
 | 
					        ((AbstractEAIndividual) this.integerData).initialize(opt);
 | 
				
			||||||
        ((AbstractEAIndividual) this.permutationData).init(opt);
 | 
					        ((AbstractEAIndividual) this.permutationData).initialize(opt);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -101,8 +101,8 @@ public class GIOBGAIndividualIntegerPermutationData extends AbstractEAIndividual
 | 
				
			|||||||
                ((AbstractEAIndividual) this.permutationData).initByValue(((Object[]) obj)[0], opt);
 | 
					                ((AbstractEAIndividual) this.permutationData).initByValue(((Object[]) obj)[0], opt);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            ((AbstractEAIndividual) this.integerData).init(opt);
 | 
					            ((AbstractEAIndividual) this.integerData).initialize(opt);
 | 
				
			||||||
            ((AbstractEAIndividual) this.permutationData).init(opt);
 | 
					            ((AbstractEAIndividual) this.permutationData).initialize(opt);
 | 
				
			||||||
            System.out.println("Initial value for GIOBGAIndividualIntegerPermutationData is not suitable!");
 | 
					            System.out.println("Initial value for GIOBGAIndividualIntegerPermutationData is not suitable!");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -110,12 +110,12 @@ public class TestESCrossover implements java.io.Serializable {
 | 
				
			|||||||
            tmpIndyD.setDoubleRange(newRange);
 | 
					            tmpIndyD.setDoubleRange(newRange);
 | 
				
			||||||
            for (int i = 0; i < partners.getTargetSize(); i++) {
 | 
					            for (int i = 0; i < partners.getTargetSize(); i++) {
 | 
				
			||||||
                tmpIndyEA = (AbstractEAIndividual) ((AbstractEAIndividual) tmpIndyD).clone();
 | 
					                tmpIndyEA = (AbstractEAIndividual) ((AbstractEAIndividual) tmpIndyD).clone();
 | 
				
			||||||
                tmpIndyEA.init(optimizationProblem);
 | 
					                tmpIndyEA.initialize(optimizationProblem);
 | 
				
			||||||
                partners.add(tmpIndyEA);
 | 
					                partners.add(tmpIndyEA);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            partners.init();
 | 
					            partners.init();
 | 
				
			||||||
            daddy = (AbstractEAIndividual) ((AbstractEAIndividual) tmpIndyD).clone();
 | 
					            daddy = (AbstractEAIndividual) ((AbstractEAIndividual) tmpIndyD).clone();
 | 
				
			||||||
            daddy.init(optimizationProblem);
 | 
					            daddy.initialize(optimizationProblem);
 | 
				
			||||||
            plot.clearAll();
 | 
					            plot.clearAll();
 | 
				
			||||||
            plot.setUnconnectedPoint(-2, -2, 0);
 | 
					            plot.setUnconnectedPoint(-2, -2, 0);
 | 
				
			||||||
            plot.setUnconnectedPoint(2, 2, 0);
 | 
					            plot.setUnconnectedPoint(2, 2, 0);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -541,7 +541,7 @@ public class ANPSO extends NichePSO implements InterfaceAdditionalPopulationInfo
 | 
				
			|||||||
                    if (reinitSuperfl) {
 | 
					                    if (reinitSuperfl) {
 | 
				
			||||||
                        for (int i = 0; i < tmpPop.size(); i++) {
 | 
					                        for (int i = 0; i < tmpPop.size(); i++) {
 | 
				
			||||||
                            AbstractEAIndividual indy = tmpPop.getEAIndividual(i);
 | 
					                            AbstractEAIndividual indy = tmpPop.getEAIndividual(i);
 | 
				
			||||||
                            indy.init(optimizationProblem);
 | 
					                            indy.initialize(optimizationProblem);
 | 
				
			||||||
                            indy.resetFitness(Double.MAX_VALUE); // TODO this is not so nice... they should be collected in a reinit-list and inserted at the beginning of the next optimize step
 | 
					                            indy.resetFitness(Double.MAX_VALUE); // TODO this is not so nice... they should be collected in a reinit-list and inserted at the beginning of the next optimize step
 | 
				
			||||||
                            ParticleSwarmOptimization.initIndividualDefaults(indy, 0.2);
 | 
					                            ParticleSwarmOptimization.initIndividualDefaults(indy, 0.2);
 | 
				
			||||||
                            ParticleSwarmOptimization.initIndividualMemory(indy);
 | 
					                            ParticleSwarmOptimization.initIndividualMemory(indy);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -194,7 +194,7 @@ public class ArtificialBeeColony extends AbstractOptimizer implements Serializab
 | 
				
			|||||||
         */
 | 
					         */
 | 
				
			||||||
        AbstractEAIndividual oldestIndy = getOldestIndividual();
 | 
					        AbstractEAIndividual oldestIndy = getOldestIndividual();
 | 
				
			||||||
        if (oldestIndy.getAge() > this.maxTrials) {
 | 
					        if (oldestIndy.getAge() > this.maxTrials) {
 | 
				
			||||||
            oldestIndy.init(this.optimizationProblem);
 | 
					            oldestIndy.initialize(this.optimizationProblem);
 | 
				
			||||||
            this.optimizationProblem.evaluate(oldestIndy);
 | 
					            this.optimizationProblem.evaluate(oldestIndy);
 | 
				
			||||||
            this.population.incrFunctionCalls();
 | 
					            this.population.incrFunctionCalls();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
package eva2.optimization.strategies;
 | 
					package eva2.optimization.strategies;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import eva2.optimization.population.InterfacePopulationChangedEventListener;
 | 
					 | 
				
			||||||
import eva2.optimization.individuals.AbstractEAIndividual;
 | 
					import eva2.optimization.individuals.AbstractEAIndividual;
 | 
				
			||||||
import eva2.optimization.operator.mutation.InterfaceAdaptOperatorGenerational;
 | 
					import eva2.optimization.operator.mutation.InterfaceAdaptOperatorGenerational;
 | 
				
			||||||
import eva2.optimization.operator.selection.InterfaceSelection;
 | 
					import eva2.optimization.operator.selection.InterfaceSelection;
 | 
				
			||||||
@@ -12,8 +11,6 @@ import eva2.optimization.population.SolutionSet;
 | 
				
			|||||||
import eva2.problems.InterfaceOptimizationProblem;
 | 
					import eva2.problems.InterfaceOptimizationProblem;
 | 
				
			||||||
import eva2.util.annotation.Description;
 | 
					import eva2.util.annotation.Description;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Vector;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * The traditional genetic algorithms as devised by Holland. To only special
 | 
					 * The traditional genetic algorithms as devised by Holland. To only special
 | 
				
			||||||
 * here it the plague factor which reduces the population size to tune from a
 | 
					 * here it the plague factor which reduces the population size to tune from a
 | 
				
			||||||
@@ -28,7 +25,6 @@ public class GeneticAlgorithm extends AbstractOptimizer implements java.io.Seria
 | 
				
			|||||||
    private boolean useElitism = true;
 | 
					    private boolean useElitism = true;
 | 
				
			||||||
    private int plague = 0;
 | 
					    private int plague = 0;
 | 
				
			||||||
    private int numberOfPartners = 1;
 | 
					    private int numberOfPartners = 1;
 | 
				
			||||||
    transient private Vector<InterfacePopulationChangedEventListener> changeListener;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public GeneticAlgorithm() {
 | 
					    public GeneticAlgorithm() {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -153,38 +149,6 @@ public class GeneticAlgorithm extends AbstractOptimizer implements java.io.Seria
 | 
				
			|||||||
        this.firePropertyChangedEvent(Population.NEXT_GENERATION_PERFORMED);
 | 
					        this.firePropertyChangedEvent(Population.NEXT_GENERATION_PERFORMED);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * This method allows you to add the LectureGUI as listener to the Optimizer
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param ea
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public void addPopulationChangedEventListener(InterfacePopulationChangedEventListener ea) {
 | 
					 | 
				
			||||||
        if (this.changeListener == null) {
 | 
					 | 
				
			||||||
            this.changeListener = new Vector<>();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        this.changeListener.add(ea);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public boolean removePopulationChangedEventListener(
 | 
					 | 
				
			||||||
            InterfacePopulationChangedEventListener ea) {
 | 
					 | 
				
			||||||
        return changeListener != null && changeListener.removeElement(ea);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Something has changed
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param name
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    protected void firePropertyChangedEvent(String name) {
 | 
					 | 
				
			||||||
        if (this.changeListener != null) {
 | 
					 | 
				
			||||||
            for (int i = 0; i < this.changeListener.size(); i++) {
 | 
					 | 
				
			||||||
                this.changeListener.get(i).registerPopulationStateChanged(this, name);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public InterfaceOptimizationProblem getProblem() {
 | 
					    public InterfaceOptimizationProblem getProblem() {
 | 
				
			||||||
        return this.optimizationProblem;
 | 
					        return this.optimizationProblem;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -146,7 +146,7 @@ public class ParticleFilterOptimization extends AbstractOptimizer implements jav
 | 
				
			|||||||
            int i;
 | 
					            int i;
 | 
				
			||||||
            for (i = 0; (i + parents.getTargetSize()) < pop.getTargetSize(); i++) {
 | 
					            for (i = 0; (i + parents.getTargetSize()) < pop.getTargetSize(); i++) {
 | 
				
			||||||
                immi = (AbstractEAIndividual) pop.getEAIndividual(0).clone();
 | 
					                immi = (AbstractEAIndividual) pop.getEAIndividual(0).clone();
 | 
				
			||||||
                immi.init(getProblem());
 | 
					                immi.initialize(getProblem());
 | 
				
			||||||
                parents.add(immi);
 | 
					                parents.add(immi);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            parents.synchSize();
 | 
					            parents.synchSize();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -481,7 +481,7 @@ public class ParticleSubSwarmOptimization extends ParticleSwarmOptimizationGCPSO
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        for (int i = 0; i < tmp.getTargetSize(); i++) {
 | 
					        for (int i = 0; i < tmp.getTargetSize(); i++) {
 | 
				
			||||||
            tmpIndy = (AbstractEAIndividual) template.clone();
 | 
					            tmpIndy = (AbstractEAIndividual) template.clone();
 | 
				
			||||||
            tmpIndy.init(prob);
 | 
					            tmpIndy.initialize(prob);
 | 
				
			||||||
            tmp.add(tmpIndy);
 | 
					            tmp.add(tmpIndy);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        tmp.init();
 | 
					        tmp.init();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -954,7 +954,7 @@ v[d] = cmin * v[d];
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void init(InterfaceOptimizationProblem opt) {
 | 
					    public void initialize(InterfaceOptimizationProblem opt) {
 | 
				
			||||||
        // TODO whats this for?
 | 
					        // TODO whats this for?
 | 
				
			||||||
        for (int i = 0; i < this.position.x.length; i++) {
 | 
					        for (int i = 0; i < this.position.x.length; i++) {
 | 
				
			||||||
            this.position.x[0] = 0.;
 | 
					            this.position.x[0] = 0.;
 | 
				
			||||||
@@ -983,7 +983,7 @@ v[d] = cmin * v[d];
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            this.setDoubleGenotype(x);
 | 
					            this.setDoubleGenotype(x);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            this.init(opt);
 | 
					            this.initialize(opt);
 | 
				
			||||||
            System.err.println("Initial value for ESIndividualDoubleData is not double[]!");
 | 
					            System.err.println("Initial value for ESIndividualDoubleData is not double[]!");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -104,7 +104,7 @@ public class ImpactOfDimensionOnMOEAs {
 | 
				
			|||||||
        ((InterfaceDataTypeDouble) template).setDoubleDataLength(numberOfVariables);
 | 
					        ((InterfaceDataTypeDouble) template).setDoubleDataLength(numberOfVariables);
 | 
				
			||||||
        for (int i = 0; i < popSize; i++) {
 | 
					        for (int i = 0; i < popSize; i++) {
 | 
				
			||||||
            tmpIndy = (AbstractEAIndividual) template.clone();
 | 
					            tmpIndy = (AbstractEAIndividual) template.clone();
 | 
				
			||||||
            tmpIndy.init(null);
 | 
					            tmpIndy.initialize(null);
 | 
				
			||||||
            pop.add(tmpIndy);
 | 
					            pop.add(tmpIndy);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,7 +57,7 @@ public abstract class AbstractMultiModalProblemKnown extends AbstractProblemDoub
 | 
				
			|||||||
        ((InterfaceDataTypeDouble) this.template).setDoubleRange(makeRange());
 | 
					        ((InterfaceDataTypeDouble) this.template).setDoubleRange(makeRange());
 | 
				
			||||||
        for (int i = 0; i < population.getTargetSize(); i++) {
 | 
					        for (int i = 0; i < population.getTargetSize(); i++) {
 | 
				
			||||||
            tmpIndy = (AbstractEAIndividual) this.template.clone();
 | 
					            tmpIndy = (AbstractEAIndividual) this.template.clone();
 | 
				
			||||||
            tmpIndy.init(this);
 | 
					            tmpIndy.initialize(this);
 | 
				
			||||||
            population.add(tmpIndy);
 | 
					            population.add(tmpIndy);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // population initialize must be last
 | 
					        // population initialize must be last
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -191,7 +191,7 @@ public abstract class AbstractOptimizationProblem implements InterfaceOptimizati
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        for (int i = 0; i < population.getTargetSize(); i++) {
 | 
					        for (int i = 0; i < population.getTargetSize(); i++) {
 | 
				
			||||||
            tmpIndy = (AbstractEAIndividual) template.clone();
 | 
					            tmpIndy = (AbstractEAIndividual) template.clone();
 | 
				
			||||||
            tmpIndy.init(prob);
 | 
					            tmpIndy.initialize(prob);
 | 
				
			||||||
            population.add(tmpIndy);
 | 
					            population.add(tmpIndy);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // population initialize must be last
 | 
					        // population initialize must be last
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -160,7 +160,7 @@ public class BKnapsackProblem extends AbstractProblemBinary implements java.io.S
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected void initIndy(int k, AbstractEAIndividual indy) {
 | 
					    protected void initIndy(int k, AbstractEAIndividual indy) {
 | 
				
			||||||
        indy.init(this);
 | 
					        indy.initialize(this);
 | 
				
			||||||
        if (RNG.flipCoin(this.problemSpecificInit)) {
 | 
					        if (RNG.flipCoin(this.problemSpecificInit)) {
 | 
				
			||||||
            BitSet tmpSet = new BitSet();
 | 
					            BitSet tmpSet = new BitSet();
 | 
				
			||||||
            tmpSet.clear();
 | 
					            tmpSet.clear();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user