Clean up statistics code

fixes #20
- Move enums from .stat to .enums
- rename .stat package to .statistics
- make strings in StringSelectionEditor human readable
This commit is contained in:
Fabian Becker 2014-10-24 10:58:44 +02:00
parent 6694465ba1
commit cb5bedd263
48 changed files with 147 additions and 236 deletions

View File

@ -1,8 +1,8 @@
package eva2;
import eva2.optimization.enums.DETypeEnum;
import eva2.optimization.enums.MutateESCrossoverTypeEnum;
import eva2.optimization.enums.PSOTopologyEnum;
import eva2.optimization.enums.DEType;
import eva2.optimization.enums.MutateESCrossoverType;
import eva2.optimization.enums.PSOTopology;
import eva2.optimization.enums.PostProcessMethod;
import eva2.optimization.go.InterfacePopulationChangedEventListener;
import eva2.optimization.individuals.*;
@ -28,7 +28,7 @@ import eva2.optimization.operator.terminators.InterfaceTerminator;
import eva2.optimization.population.PBILPopulation;
import eva2.optimization.population.Population;
import eva2.problems.AbstractOptimizationProblem;
import eva2.optimization.stat.InterfaceStatistics;
import eva2.optimization.statistics.InterfaceStatistics;
import eva2.optimization.strategies.*;
import eva2.tools.math.RNG;
@ -106,7 +106,7 @@ public class OptimizerFactory {
DifferentialEvolution de = new DifferentialEvolution();
de.setProblem(problem);
de.getPopulation().setTargetSize(popsize);
de.setDEType(DETypeEnum.DE2_CurrentToBest);
de.setDEType(DEType.DE2_CurrentToBest);
de.setDifferentialWeight(f);
de.setCrossoverRate(CR);
de.setLambda(lambda);
@ -416,7 +416,7 @@ public class OptimizerFactory {
*/
public static ParticleSwarmOptimization createParticleSwarmOptimization(
AbstractOptimizationProblem problem, int popsize, double phi1,
double phi2, double speedLim, PSOTopologyEnum selectedTopology, int topologyRange,
double phi2, double speedLim, PSOTopology selectedTopology, int topologyRange,
InterfacePopulationChangedEventListener listener) {
problem.initializeProblem();
@ -1449,7 +1449,7 @@ public class OptimizerFactory {
public static OptimizationParameters standardDE(
AbstractOptimizationProblem problem) {
DifferentialEvolution de = new DifferentialEvolution();
de.setDEType(DETypeEnum.DE2_CurrentToBest); // this sets current-to-best
de.setDEType(DEType.DE2_CurrentToBest); // this sets current-to-best
de.setDifferentialWeight(0.8);
de.setCrossoverRate(0.6);
de.setLambda(0.6);
@ -1465,7 +1465,7 @@ public class OptimizerFactory {
es.setPlusStrategy(false);
if (assertIndyType(problem, InterfaceESIndividual.class)) {
setTemplateOperators(problem, new MutateESGlobal(0.2, MutateESCrossoverTypeEnum.intermediate), 0.9, new CrossoverESDefault(), 0.2);
setTemplateOperators(problem, new MutateESGlobal(0.2, MutateESCrossoverType.intermediate), 0.9, new CrossoverESDefault(), 0.2);
} else {
System.err.println("Error, standard ES is implemented for ES individuals only (requires double data types)");
return null;
@ -1493,7 +1493,7 @@ public class OptimizerFactory {
AbstractOptimizationProblem problem) {
ParticleSwarmOptimization pso = new ParticleSwarmOptimization();
pso.setPhiValues(2.05, 2.05);
pso.setTopology(PSOTopologyEnum.grid);
pso.setTopology(PSOTopology.grid);
pso.setTopologyRange(1);
return makeParams(pso, 30, problem, randSeed, getTerminator());
}
@ -1526,7 +1526,7 @@ public class OptimizerFactory {
EsDpiNiching nes = new EsDpiNiching(nicheRadius, muPerPeak, lambdaPerPeak, expectedPeaks, rndImmigrants, explorerPeaks, resetExplInterval, etaPresel);
if (assertIndyType(prob, InterfaceESIndividual.class)) {
setTemplateOperators(prob, new MutateESGlobal(0.2, MutateESCrossoverTypeEnum.intermediate), 0.9, new CrossoverESDefault(), 0.2);
setTemplateOperators(prob, new MutateESGlobal(0.2, MutateESCrossoverType.intermediate), 0.9, new CrossoverESDefault(), 0.2);
} else {
System.err.println("Error, standard ES is implemented for ES individuals only (requires double data types)");
return null;

View File

@ -6,14 +6,13 @@ import eva2.optimization.individuals.IndividualInterface;
import eva2.optimization.individuals.InterfaceDataTypeBinary;
import eva2.optimization.individuals.InterfaceDataTypeDouble;
import eva2.optimization.individuals.InterfaceDataTypeInteger;
import eva2.optimization.modules.OptimizationParameters;
import eva2.optimization.modules.Processor;
import eva2.optimization.operator.postprocess.InterfacePostProcessParams;
import eva2.optimization.operator.postprocess.PostProcessParams;
import eva2.optimization.operator.terminators.InterfaceTerminator;
import eva2.optimization.population.Population;
import eva2.optimization.population.SolutionSet;
import eva2.optimization.stat.*;
import eva2.optimization.statistics.*;
import java.io.PrintWriter;
import java.io.StringWriter;

View File

@ -3,8 +3,8 @@ package eva2.cli;
import com.google.gson.*;
import eva2.OptimizerFactory;
import eva2.optimization.OptimizationStateListener;
import eva2.optimization.enums.DETypeEnum;
import eva2.optimization.enums.PSOTopologyEnum;
import eva2.optimization.enums.DEType;
import eva2.optimization.enums.PSOTopology;
import eva2.optimization.go.InterfacePopulationChangedEventListener;
import eva2.optimization.modules.OptimizationParameters;
import eva2.optimization.operator.crossover.CrossoverESDefault;
@ -461,7 +461,7 @@ public class Main implements OptimizationStateListener, InterfacePopulationChang
if (commandLine.hasOption("DEType")) {
((DifferentialEvolution)this.optimizer).setDEType(
DETypeEnum.getFromId(
DEType.getFromId(
Integer.parseInt(commandLine.getOptionValue("DEType"))
)
);
@ -498,7 +498,7 @@ public class Main implements OptimizationStateListener, InterfacePopulationChang
case "ParticleSwarmOptimization": {
double phi1 = 2.05, phi2 = 2.05, speedLimit = 0.1;
int topoRange = 2;
PSOTopologyEnum selectedTopology = PSOTopologyEnum.star;
PSOTopology selectedTopology = PSOTopology.star;
opt.addOption("speedLimit", true, "Speed Limit");
opt.addOption("topology", true, "Particle Swarm Topology (0-7)");
@ -524,7 +524,7 @@ public class Main implements OptimizationStateListener, InterfacePopulationChang
}
if (commandLine.hasOption("topology")) {
selectedTopology = PSOTopologyEnum.getFromId(Integer.parseInt(commandLine.getOptionValue("topology")));
selectedTopology = PSOTopology.getFromId(Integer.parseInt(commandLine.getOptionValue("topology")));
}
if (commandLine.hasOption("speedLimit")) {

View File

@ -2,7 +2,7 @@ package eva2.gui;
import eva2.optimization.OptimizationStateListener;
import eva2.optimization.modules.ModuleAdapter;
import eva2.optimization.stat.OptimizationJob;
import eva2.optimization.statistics.OptimizationJob;
import eva2.tools.ToolBoxGui;
import javax.swing.*;

View File

@ -1,7 +1,7 @@
package eva2.gui;
import eva2.gui.editor.GenericObjectEditor;
import eva2.optimization.stat.OptimizationJobList;
import eva2.optimization.statistics.OptimizationJobList;
import javax.swing.*;
import java.beans.PropertyEditor;

View File

@ -1,6 +1,6 @@
package eva2.gui;
import eva2.optimization.stat.InterfaceTextListener;
import eva2.optimization.statistics.InterfaceTextListener;
/*
*

View File

@ -6,9 +6,9 @@ import eva2.util.ClassPreloader;
import eva2.util.EvAComAdapter;
import eva2.optimization.OptimizationStateListener;
import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.stat.AbstractStatistics;
import eva2.optimization.stat.InterfaceStatisticsListener;
import eva2.optimization.stat.InterfaceStatisticsParameter;
import eva2.optimization.statistics.AbstractStatistics;
import eva2.optimization.statistics.InterfaceStatisticsListener;
import eva2.optimization.statistics.InterfaceStatisticsParameter;
import eva2.tools.BasicResourceLoader;
import eva2.tools.EVAERROR;
import eva2.tools.ReflectPackage;

View File

@ -4,11 +4,6 @@ import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
/**
* Created by IntelliJ IDEA.
* User: streiche
* Date: 23.03.2004
* Time: 15:04:05
* To change this template use File | Settings | File Templates.
*/
public class PropertySelectableList<T> implements java.io.Serializable {
@ -16,9 +11,6 @@ public class PropertySelectableList<T> implements java.io.Serializable {
protected boolean[] selections;
private transient PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
// public PropertySelectableList() {
// }
//
public PropertySelectableList(T[] initial) {
objects = initial;
selections = new boolean[initial.length];

View File

@ -11,11 +11,6 @@ import java.beans.PropertyChangeSupport;
import java.beans.PropertyEditor;
/**
* Created by IntelliJ IDEA.
* User: streiche
* Date: 27.06.2003
* Time: 11:41:01
* To change this template use Options | File Templates.
*/
public abstract class AbstractListSelectionEditor extends JPanel implements PropertyEditor, PropertyChangeListener {

View File

@ -4,7 +4,7 @@ package eva2.gui.editor;
*/
import eva2.gui.PropertySheetPanelStat;
import eva2.optimization.stat.GenericStatistics;
import eva2.optimization.statistics.GenericStatistics;
import javax.swing.*;
import java.awt.*;

View File

@ -1,6 +1,7 @@
package eva2.gui.editor;
import eva2.tools.StringSelection;
import eva2.tools.StringTools;
public class StringSelectionEditor extends AbstractListSelectionEditor {
StringSelection strs;
@ -24,7 +25,7 @@ public class StringSelectionEditor extends AbstractListSelectionEditor {
@Override
protected String getElementName(int i) {
return strs.getElement(i);
return StringTools.humaniseCamelCase(strs.getElement(i));
}
@Override

View File

@ -1,6 +1,6 @@
package eva2.optimization.enums;
public enum DETypeEnum {
public enum DEType {
DE1_Rand_1, DE2_CurrentToBest, DE_Best_1, DE_Best_2, TrigonometricDE, DE_CurrentToRand;
//", "DE2 - DE/current-to-best/1", "DE/best/2", "Trigonometric DE"};
@ -10,7 +10,7 @@ public enum DETypeEnum {
* @param id
* @return
*/
public static DETypeEnum getFromId(int id) {
public static DEType getFromId(int id) {
switch (id) {
case 0:
return DE1_Rand_1;
@ -25,7 +25,7 @@ public enum DETypeEnum {
case 5:
return DE_CurrentToRand;
default:
System.err.println("Error: invalid old DEType ID in DETypeEnum getFromId! Using DE_Best_1.");
System.err.println("Error: invalid old DEType ID in DEType getFromId! Using DE_Best_1.");
return DE_Best_1;
}
}

View File

@ -1,5 +1,5 @@
package eva2.optimization.enums;
public enum MutateESCrossoverTypeEnum {
public enum MutateESCrossoverType {
none, intermediate, discrete
}

View File

@ -1,6 +1,6 @@
package eva2.optimization.enums;
public enum PSOTopologyEnum {
public enum PSOTopology {
/**
*
*/
@ -37,7 +37,7 @@ public enum PSOTopologyEnum {
* @param oldID
* @return
*/
public static PSOTopologyEnum getFromId(int oldID) {
public static PSOTopology getFromId(int oldID) {
switch (oldID) {
case 0:
return linear;

View File

@ -1,6 +1,6 @@
package eva2.optimization.stat;
package eva2.optimization.enums;
public enum StatsOnSingleDataSetEnum {
public enum StatisticsOnSingleDataSet {
mean, median, variance, stdDev;
public static String[] getInfoStrings() {

View File

@ -1,12 +1,14 @@
package eva2.optimization.stat;
package eva2.optimization.enums;
public enum StatsOnTwoSampledDataEnum {
public enum StatisticsOnTwoSampledData {
tTestEqLenEqVar, tTestUneqLenEqVar, tTestUneqLenUneqVar, mannWhitney;
public static String[] getInfoStrings() {
return new String[]{"Two-sampled t-Test with equal sized data sets",
return new String[]{
"Two-sampled t-Test with equal sized data sets",
"Two-sampled t-Test with unequal sized data sets",
"Two-sampled t-Test with unequal data sets and unequal variances",
"Two-sampled Mann-Whitney test"};
"Two-sampled Mann-Whitney test"
};
}
}

View File

@ -1,7 +1,7 @@
package eva2.optimization.individuals;
import eva2.optimization.enums.MutateESCrossoverTypeEnum;
import eva2.optimization.enums.MutateESCrossoverType;
import eva2.optimization.operator.crossover.CrossoverESDefault;
import eva2.optimization.operator.mutation.InterfaceMutation;
import eva2.optimization.operator.mutation.MutateESGlobal;
@ -24,7 +24,7 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte
public ESIndividualDoubleData() {
this.mutationProbability = 1.0;
this.mutationOperator = new MutateESGlobal(0.2, MutateESCrossoverTypeEnum.intermediate);
this.mutationOperator = new MutateESGlobal(0.2, MutateESCrossoverType.intermediate);
this.crossoverProbability = 0.5;
this.crossoverOperator = new CrossoverESDefault();
this.genotype = new double[1];

View File

@ -6,7 +6,7 @@ import eva2.gui.EvATabbedFrameMaker;
import eva2.gui.JParaPanel;
import eva2.gui.editor.GenericObjectEditor;
import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.stat.*;
import eva2.optimization.statistics.*;
import java.io.Serializable;

View File

@ -1,7 +1,7 @@
package eva2.optimization.modules;
import eva2.gui.EvATabbedFrameMaker;
import eva2.optimization.OptimizationStateListener;
import eva2.optimization.stat.OptimizationJob;
import eva2.optimization.statistics.OptimizationJob;
/**
*

View File

@ -15,12 +15,11 @@ import eva2.optimization.operator.terminators.InterfaceTerminator;
import eva2.optimization.population.Population;
import eva2.problems.AbstractOptimizationProblem;
import eva2.problems.InterfaceAdditionalPopulationInformer;
import eva2.optimization.stat.InterfaceStatistics;
import eva2.optimization.stat.InterfaceTextListener;
import eva2.optimization.stat.StatisticsWithGUI;
import eva2.optimization.statistics.InterfaceStatistics;
import eva2.optimization.statistics.InterfaceTextListener;
import eva2.optimization.statistics.StatisticsWithGUI;
import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.tools.EVAERROR;
import eva2.tools.EVAHELP;
import eva2.tools.StringTools;
import eva2.tools.math.RNG;

View File

@ -1,6 +1,6 @@
package eva2.optimization.operator.mutation;
import eva2.optimization.enums.MutateESCrossoverTypeEnum;
import eva2.optimization.enums.MutateESCrossoverType;
import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.InterfaceESIndividual;
import eva2.optimization.population.Population;
@ -19,7 +19,7 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
protected double mutationStepSize = 0.2;
protected double tau1 = 0.15;
protected double lowerLimitStepSize = 0.0000005;
protected MutateESCrossoverTypeEnum crossoverType = MutateESCrossoverTypeEnum.none;
protected MutateESCrossoverType crossoverType = MutateESCrossoverType.none;
public MutateESGlobal() {
}
@ -30,7 +30,7 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
* @param mutationStepSize
*/
public MutateESGlobal(double mutationStepSize) {
this(mutationStepSize, MutateESCrossoverTypeEnum.none);
this(mutationStepSize, MutateESCrossoverType.none);
}
/**
@ -38,7 +38,7 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
*
* @param mutationStepSize
*/
public MutateESGlobal(double mutationStepSize, MutateESCrossoverTypeEnum coType) {
public MutateESGlobal(double mutationStepSize, MutateESCrossoverType coType) {
setMutationStepSize(mutationStepSize);
setCrossoverType(coType);
}
@ -133,7 +133,7 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
*/
@Override
public void crossoverOnStrategyParameters(AbstractEAIndividual indy1, Population partners) {
if (crossoverType != MutateESCrossoverTypeEnum.none) {
if (crossoverType != MutateESCrossoverType.none) {
ArrayList<Double> tmpList = new ArrayList<>();
if (indy1.getMutationOperator() instanceof MutateESGlobal) {
tmpList.add(new Double(((MutateESGlobal) indy1.getMutationOperator()).mutationStepSize));
@ -266,11 +266,11 @@ public class MutateESGlobal implements InterfaceMutation, java.io.Serializable,
*
* @param d The mutation operator.
*/
public void setCrossoverType(MutateESCrossoverTypeEnum d) {
public void setCrossoverType(MutateESCrossoverType d) {
this.crossoverType = d;
}
public MutateESCrossoverTypeEnum getCrossoverType() {
public MutateESCrossoverType getCrossoverType() {
return this.crossoverType;
}

View File

@ -24,8 +24,8 @@ import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.operator.terminators.InterfaceTerminator;
import eva2.optimization.population.Population;
import eva2.problems.*;
import eva2.optimization.stat.InterfaceTextListener;
import eva2.optimization.stat.StatisticsParameter;
import eva2.optimization.statistics.InterfaceTextListener;
import eva2.optimization.statistics.StatisticsParameter;
import eva2.optimization.strategies.EvolutionStrategies;
import eva2.optimization.strategies.GradientDescentAlgorithm;
import eva2.optimization.strategies.HillClimbing;

View File

@ -1,69 +0,0 @@
package eva2.optimization.stat;
/**
*
*/
public class MovingAverage {
private int size = 0;
private int index = 0;
private double average;
private double[] array;
private boolean overflow = false;
/**
*
*/
public MovingAverage(int size) {
this.size = size;
array = new double[size];
}
/**
*
*/
private MovingAverage(MovingAverage Source) {
size = Source.size;
index = Source.index;
average = Source.average;
array = Source.array.clone();
overflow = Source.overflow;
}
/**
*
*/
public MovingAverage getClone() {
return new MovingAverage(this);
}
/**
*
*/
public void add(double value) {
array[index] = value;
index++;
if (index == size) {
index = 0;
overflow = true;
}
//
average = 0;
int tail = index;
//if (overflow=true)
if (overflow) {
tail = size;
}
for (int i = 0; i < tail; i++) {
average += array[i];
}
average /= tail;
}
/**
*
*/
public double getAverage() {
return average;
}
}

View File

@ -1 +0,0 @@
package eva2.optimization.stat;

View File

@ -1,4 +1,4 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import eva2.gui.BeanInspector;
import eva2.optimization.individuals.AbstractEAIndividual;

View File

@ -1,6 +1,8 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import eva2.gui.BeanInspector;
import eva2.optimization.enums.StatisticsOnSingleDataSet;
import eva2.optimization.enums.StatisticsOnTwoSampledData;
import eva2.tools.ReflectPackage;
import eva2.tools.math.Mathematics;
@ -19,8 +21,8 @@ public class EvAStatisticalEvaluation {
public static void evaluate(InterfaceTextListener textout, OptimizationJob[] jobList, int[] selectedIndices,
StatsOnSingleDataSetEnum[] singleStats,
StatsOnTwoSampledDataEnum[] twoSampledStats) {
StatisticsOnSingleDataSet[] singleStats,
StatisticsOnTwoSampledData[] twoSampledStats) {
ArrayList<OptimizationJob> jobsToWorkWith = new ArrayList<>();
for (int i = 0; i < jobList.length; i++) {
// remove jobs which are not finished or not selected
@ -71,22 +73,22 @@ public class EvAStatisticalEvaluation {
for (int i = 0; i < twoSampledStats.length; i++) {
switch (twoSampledStats[i]) {
case tTestEqLenEqVar:
textout.println(StatsOnTwoSampledDataEnum.getInfoStrings()[twoSampledStats[i].ordinal()]);
textout.println(StatisticsOnTwoSampledData.getInfoStrings()[twoSampledStats[i].ordinal()]);
writeTwoSampleFirstLine(textout, jobsToWorkWith);
writeTTestEqSizeEqVar(textout, jobsToWorkWith, field);
break;
case tTestUneqLenEqVar:
textout.println(StatsOnTwoSampledDataEnum.getInfoStrings()[twoSampledStats[i].ordinal()]);
textout.println(StatisticsOnTwoSampledData.getInfoStrings()[twoSampledStats[i].ordinal()]);
writeTwoSampleFirstLine(textout, jobsToWorkWith);
writeUnEqSizeEqVar(textout, jobsToWorkWith, field);
break;
case tTestUneqLenUneqVar:
textout.println(StatsOnTwoSampledDataEnum.getInfoStrings()[twoSampledStats[i].ordinal()]);
textout.println(StatisticsOnTwoSampledData.getInfoStrings()[twoSampledStats[i].ordinal()]);
writeTwoSampleFirstLine(textout, jobsToWorkWith);
writeTTestUnEqSizeUnEqVar(textout, jobsToWorkWith, field);
break;
case mannWhitney:
textout.println(StatsOnTwoSampledDataEnum.getInfoStrings()[twoSampledStats[i].ordinal()]);
textout.println(StatisticsOnTwoSampledData.getInfoStrings()[twoSampledStats[i].ordinal()]);
writeTwoSampleFirstLine(textout, jobsToWorkWith);
writeMannWhitney(textout, jobsToWorkWith, field);
default:

View File

@ -1,5 +1,7 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import eva2.optimization.enums.StatisticsOnSingleDataSet;
import eva2.optimization.enums.StatisticsOnTwoSampledData;
import eva2.tools.StringSelection;
import javax.swing.*;
@ -9,8 +11,8 @@ import java.util.List;
@eva2.util.annotation.Description(value = "Select statistical values to be calculated and tests to be performed.")
public class EvAStatisticalEvaluationParams implements Serializable {
private StringSelection singleStats = new StringSelection(StatsOnSingleDataSetEnum.mean, StatsOnSingleDataSetEnum.getInfoStrings());
private StringSelection twoSampledStats = new StringSelection(StatsOnTwoSampledDataEnum.tTestUneqLenEqVar, StatsOnTwoSampledDataEnum.getInfoStrings());
private StringSelection singleStats = new StringSelection(StatisticsOnSingleDataSet.mean, StatisticsOnSingleDataSet.getInfoStrings());
private StringSelection twoSampledStats = new StringSelection(StatisticsOnTwoSampledData.tTestUneqLenEqVar, StatisticsOnTwoSampledData.getInfoStrings());
private List<JButton> additionalButtons = null;
public void setGenericAdditionalButtons(List<JButton> buts) {

View File

@ -1,4 +1,4 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import eva2.gui.plot.DataViewer;

View File

@ -1,4 +1,4 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import eva2.tools.StringSelection;

View File

@ -1,4 +1,4 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import eva2.optimization.individuals.IndividualInterface;
import eva2.optimization.population.Population;

View File

@ -1,4 +1,4 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import java.util.List;

View File

@ -1,4 +1,4 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import eva2.tools.SelectedTag;
import eva2.tools.StringSelection;

View File

@ -1,4 +1,4 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
/**
* A very simple interface class to receive raw String data.

View File

@ -1,4 +1,4 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import eva2.gui.BeanInspector;
import eva2.optimization.go.InterfaceOptimizationParameters;

View File

@ -1,8 +1,10 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import eva2.gui.JParaPanel;
import eva2.gui.PropertySelectableList;
import eva2.gui.editor.GenericArrayEditor;
import eva2.optimization.enums.StatisticsOnSingleDataSet;
import eva2.optimization.enums.StatisticsOnTwoSampledData;
import eva2.optimization.go.InterfaceOptimizationParameters;
import eva2.optimization.modules.AbstractModuleAdapter;
import eva2.optimization.modules.AbstractOptimizationParameters;
@ -161,8 +163,8 @@ public class OptimizationJobList extends PropertySelectableList<OptimizationJob>
@Override
public void actionPerformed(ActionEvent e) {
EvAStatisticalEvaluation.evaluate(jobList, jobList.getObjects(), genericArrayEditor.getSelectedIndices(),
(StatsOnSingleDataSetEnum[]) EvAStatisticalEvaluation.statsParams.getOneSampledStats().getSelectedEnum(StatsOnSingleDataSetEnum.values()),
(StatsOnTwoSampledDataEnum[]) EvAStatisticalEvaluation.statsParams.getTwoSampledStats().getSelectedEnum(StatsOnTwoSampledDataEnum.values()));
(StatisticsOnSingleDataSet[]) EvAStatisticalEvaluation.statsParams.getOneSampledStats().getSelectedEnum(StatisticsOnSingleDataSet.values()),
(StatisticsOnTwoSampledData[]) EvAStatisticalEvaluation.statsParams.getTwoSampledStats().getSelectedEnum(StatisticsOnTwoSampledData.values()));
}
};
ActionListener sl = new ActionListener() {

View File

@ -1,4 +1,4 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.IndividualInterface;
@ -12,13 +12,11 @@ import java.util.List;
/**
* This may be given to a Processor if no further stats are required. It speeds up
* optimization especially with small populations (e.g. HC as local search operator).
*
* @author mkron
*/
public class StatisticsDummy implements InterfaceStatistics, InterfaceTextListener {
boolean consoleOut = false;
StatisticsParameter sParams = null;
AbstractEAIndividual bestCurrentIndividual, bestRunIndy, bestIndividualAllover;
private boolean consoleOut = false;
private StatisticsParameter sParams = null;
private AbstractEAIndividual bestCurrentIndividual, bestRunIndy, bestIndividualAllover;
public StatisticsDummy() {
bestIndividualAllover = null;

View File

@ -1,4 +1,4 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import eva2.gui.BeanInspector;
import eva2.gui.editor.GenericObjectEditor;
@ -42,8 +42,8 @@ public class StatisticsParameter implements InterfaceStatisticsParameter, Interf
public final static int OUTPUT_WINDOW = 1;
public final static int OUTPUT_FILE_WINDOW = 2;
SelectedTag outputTo = new SelectedTag("File (current dir.)", "Text-window", "Both file and text-window");
private int verboK = 10;
private int textoutput = 0;
private int verbosityK = 10;
private int textOutput = 0;
private int multiRuns = 1;
private String resultFilePrefix = "EvA2";
protected String name = "not defined";
@ -98,7 +98,7 @@ public class StatisticsParameter implements InterfaceStatisticsParameter, Interf
@Override
public String toString() {
String ret = "\r\nStatisticsParameter (" + super.toString() + "):\r\nmultiRuns=" + multiRuns
+ ", textoutput=" + textoutput
+ ", textOutput=" + textOutput
+ ", verbosity= " + outputVerbosity.getSelectedString()
+ "\nTo " + outputTo.getSelectedString()
+ ", " + BeanInspector.toString(graphSel.getStrings());
@ -121,13 +121,13 @@ public class StatisticsParameter implements InterfaceStatisticsParameter, Interf
/**
*
*/
private StatisticsParameter(StatisticsParameter Source) {
convergenceRateThreshold = Source.convergenceRateThreshold;
useStatPlot = Source.useStatPlot;
textoutput = Source.textoutput;
multiRuns = Source.multiRuns;
resultFilePrefix = Source.resultFilePrefix;
verboK = Source.verboK;
private StatisticsParameter(StatisticsParameter statisticsParameter) {
convergenceRateThreshold = statisticsParameter.convergenceRateThreshold;
useStatPlot = statisticsParameter.useStatPlot;
textOutput = statisticsParameter.textOutput;
multiRuns = statisticsParameter.multiRuns;
resultFilePrefix = statisticsParameter.resultFilePrefix;
verbosityK = statisticsParameter.verbosityK;
}
/**
@ -173,7 +173,7 @@ public class StatisticsParameter implements InterfaceStatisticsParameter, Interf
*
*/
public String infoStringTipText() {
return "Infostring displayed on fitness graph by prssing the right mouse button.";
return "Infostring displayed on fitness graph by pressing the right mouse button.";
}
/**
@ -232,12 +232,6 @@ public class StatisticsParameter implements InterfaceStatisticsParameter, Interf
return outputTo.getSelectedTagID() > 0;
}
// /**
// *
// */
// public String resultFileNameTipText() {
// return "File name for the result file. If empty or 'none', no output file will be created.";
// }
public String convergenceRateThresholdTipText() {
return "Provided the optimal fitness is at zero, give the threshold below which it is considered as 'reached'";
}
@ -298,12 +292,12 @@ public class StatisticsParameter implements InterfaceStatisticsParameter, Interf
@Override
public int getOutputVerbosityK() {
return verboK;
return verbosityK;
}
@Override
public void setOutputVerbosityK(int k) {
verboK = k;
verbosityK = k;
}
public String outputVerbosityKTipText() {
@ -371,16 +365,12 @@ public class StatisticsParameter implements InterfaceStatisticsParameter, Interf
infoFields.add(null);
}
}
// header += inf.getAdditionalDataHeader(null); // lets hope this works with a null
}
// create additional fields to be selectable by the user, defined by the informer headers
// StringSelection ss = new StringSelection(GraphSelectionEnum.getAndAppendArray(headerFields.toArray(new String[headerFields.size()])));
StringSelection ss = new StringSelection(GraphSelectionEnum.currentBest, GraphSelectionEnum.getInfoStrings(),
headerFields, infoFields.toArray(new String[infoFields.size()]));
ss.takeOverSelection(graphSel);
// System.out.println("In " + this + ": setting new informers: " + BeanInspector.toString(ss.getStrings()));
// This works!
setFieldSelection(ss);
// System.out.println("After: " + this);
}
}

View File

@ -1,4 +1,4 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import eva2.optimization.population.PopulationInterface;
import eva2.problems.InterfaceAdditionalPopulationInformer;
@ -80,7 +80,6 @@ public class StatisticsStandalone extends AbstractStatistics implements Interfac
double[] specificData = pop.getSpecificData();
if (specificData != null) {
for (int i = 0; i < specificData.length; i++) {
// ((ArrayList<Object[]>[]) resultFrame.get(i))[optRunsPerformed].add(new Double[] {new Double(functionCalls), specificData[i]});
resultData.get(optRunsPerformed).add(new Object[]{new Double(functionCalls), specificData});
}
}

View File

@ -1,4 +1,4 @@
package eva2.optimization.stat;
package eva2.optimization.statistics;
import eva2.gui.BeanInspector;
import eva2.gui.JTextoutputFrame;

View File

@ -0,0 +1 @@
package eva2.optimization.statistics;

View File

@ -2,7 +2,7 @@ package eva2.optimization.strategies;
import eva2.OptimizerFactory;
import eva2.gui.editor.GenericObjectEditor;
import eva2.optimization.enums.PSOTopologyEnum;
import eva2.optimization.enums.PSOTopology;
import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.InterfaceDataTypeDouble;
import eva2.optimization.modules.OptimizationParameters;
@ -126,7 +126,7 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
// setMainSwarmInertness(new NoParameterAging(0.7298437881283576));
setMainSwarmAlgoType(getMainSwarm().getAlgoType().setSelectedTag("Constriction")); // constriction
setMaxInitialSubSwarmSize(0); // deactivate early reinits
setMainSwarmTopology(PSOTopologyEnum.grid);
setMainSwarmTopology(PSOTopology.grid);
setMainSwarmTopologyRange(1);
setDeactivationStrategy(new StandardDeactivationStrategy(0.000001, 8));
setMainSwarmSize(100);
@ -154,7 +154,7 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
initMainSwarm();
}*/
public ANPSO(int mainSwarmSize, double phi1, double phi2, PSOTopologyEnum mainSwarmTopo, int mainSwarmTopoRange, int maxInitialSubSwarmSize) {
public ANPSO(int mainSwarmSize, double phi1, double phi2, PSOTopology mainSwarmTopo, int mainSwarmTopoRange, int maxInitialSubSwarmSize) {
this();
setMainSwarmSize(mainSwarmSize);
getMainSwarm().setPhi1(phi1);
@ -177,7 +177,7 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
GenericObjectEditor.setHideProperty(getClass(), "mergingStrategy", true);
GenericObjectEditor.setHideProperty(getClass(), "absorptionStrategy", true);
GenericObjectEditor.setHideProperty(getClass(), "maxAllowedSwarmRadius", true);
GenericObjectEditor.setHideProperty(getClass(), "mainSwarmTopologyRange", mainSwarmTopology == PSOTopologyEnum.multiSwarm); // "Multi-Swarm" has no topologyRange
GenericObjectEditor.setHideProperty(getClass(), "mainSwarmTopologyRange", mainSwarmTopology == PSOTopology.multiSwarm); // "Multi-Swarm" has no topologyRange
// population size is set via setMainSwarmSize
GenericObjectEditor.setHideProperty(getClass(), "population", true);
@ -614,7 +614,7 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
// createSubswarmIfPossible();
// adapt the species radius of the SPSO using similar population statistics as for the radius parameter r
if ((mainSwarm.getTopology() == PSOTopologyEnum.multiSwarm) && (mainSwarm.getMaxSubSwarmSize() > 1)) { //Multi-Swarm
if ((mainSwarm.getTopology() == PSOTopology.multiSwarm) && (mainSwarm.getMaxSubSwarmSize() > 1)) { //Multi-Swarm
double aveDistToNeighInMain = getMainSwarm().getPopulation().getAvgDistToClosestNeighbor(true, false)[0];
getMainSwarm().setSubSwarmRadius(aveDistToNeighInMain);
}
@ -907,7 +907,7 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
anpso.getMainSwarm().setInertnessOrChi(0.7298437881283576);
anpso.setMainSwarmAlgoType(anpso.getMainSwarm().getAlgoType().setSelectedTag("Constriction")); // constriction
anpso.setMaxInitialSubSwarmSize(0); // deactivate early reinits
anpso.setMainSwarmTopology(PSOTopologyEnum.grid);
anpso.setMainSwarmTopology(PSOTopology.grid);
anpso.setMainSwarmTopologyRange(1);
anpso.setDeactivationStrategy(new StandardDeactivationStrategy(0.000001, 8));

View File

@ -1,6 +1,6 @@
package eva2.optimization.strategies;
import eva2.optimization.enums.PSOTopologyEnum;
import eva2.optimization.enums.PSOTopology;
import eva2.optimization.operator.cluster.ClusteringDensityBased;
import eva2.optimization.operator.distancemetric.IndividualDataMetric;
import eva2.optimization.operator.paramcontrol.CbpsoFitnessThresholdBasedAdaption;
@ -53,7 +53,7 @@ public class CBNPSO extends ClusterBasedNichingEA implements Serializable {
setEpsilonBound(epsilonConv);
setHaltingWindow(haltingWindow);
setMaxSpeciesSize(maxSpecSize);
setOptimizer(new ParticleSwarmOptimization(popSize, 2.05, 2.05, PSOTopologyEnum.grid, 2));
setOptimizer(new ParticleSwarmOptimization(popSize, 2.05, 2.05, PSOTopology.grid, 2));
ParamAdaption[] defAdpt = new ParamAdaption[]{getDefaultSinusoidalAdaption()};
setParameterControl(defAdpt);
if (threshAdaption) {

View File

@ -2,7 +2,6 @@ package eva2.optimization.strategies;
import eva2.gui.BeanInspector;
import eva2.gui.editor.GenericObjectEditor;
import eva2.optimization.enums.DETypeEnum;
import eva2.optimization.go.InterfacePopulationChangedEventListener;
import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.InterfaceDataTypeDouble;
@ -41,7 +40,7 @@ public class DifferentialEvolution implements InterfaceOptimizer, java.io.Serial
protected AbstractOptimizationProblem optimizationProblem = new F1Problem();
@Parameter(name = "DEType", description = "Mutation type for DE")
private DETypeEnum DEType;
private eva2.optimization.enums.DEType DEType;
@Parameter(name = "F", description = "Differential Weight")
private double differentialWeight = 0.8;
@ -71,10 +70,10 @@ public class DifferentialEvolution implements InterfaceOptimizer, java.io.Serial
*/
public DifferentialEvolution() {
// sets DE2 as default
DEType = DETypeEnum.DE2_CurrentToBest;
DEType = eva2.optimization.enums.DEType.DE2_CurrentToBest;
}
public DifferentialEvolution(int popSize, DETypeEnum type, double f, double cr, double lambda, double mt) {
public DifferentialEvolution(int popSize, eva2.optimization.enums.DEType type, double f, double cr, double lambda, double mt) {
population = new Population(popSize);
DEType = type;
differentialWeight = f;
@ -865,14 +864,14 @@ public class DifferentialEvolution implements InterfaceOptimizer, java.io.Serial
*
* @param s The type.
*/
public void setDEType(DETypeEnum s) {
public void setDEType(eva2.optimization.enums.DEType s) {
this.DEType = s;
// show mt for trig. DE only
GenericObjectEditor.setShowProperty(this.getClass(), "lambda", s == DETypeEnum.DE2_CurrentToBest);
GenericObjectEditor.setShowProperty(this.getClass(), "mt", s == DETypeEnum.TrigonometricDE);
GenericObjectEditor.setShowProperty(this.getClass(), "lambda", s == eva2.optimization.enums.DEType.DE2_CurrentToBest);
GenericObjectEditor.setShowProperty(this.getClass(), "mt", s == eva2.optimization.enums.DEType.TrigonometricDE);
}
public DETypeEnum getDEType() {
public eva2.optimization.enums.DEType getDEType() {
return this.DEType;
}

View File

@ -3,7 +3,7 @@ package eva2.optimization.strategies;
import eva2.OptimizerFactory;
import eva2.gui.editor.GenericObjectEditor;
import eva2.gui.plot.TopoPlot;
import eva2.optimization.enums.PSOTopologyEnum;
import eva2.optimization.enums.PSOTopology;
import eva2.optimization.go.InterfacePopulationChangedEventListener;
import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.InterfaceDataTypeDouble;
@ -92,7 +92,7 @@ public class NichePSO implements InterfaceAdditionalPopulationInformer, Interfac
// Parameter for the mainswarm
// protected double mainSwarmPhi1 = 1.2;
// protected double mainSwarmPhi2 = 0; // by default no communication in the mainswarm
protected PSOTopologyEnum mainSwarmTopology = PSOTopologyEnum.grid; // = 1;
protected PSOTopology mainSwarmTopology = PSOTopology.grid; // = 1;
protected int mainSwarmTopologyRange = 0;
private int mainSwarmAlgoType = 0; // 0: inertness, 1: constriction
// private InterfaceParameterAging mainSwarmParamAging = new LinearParameterAging();
@ -1014,10 +1014,10 @@ public class NichePSO implements InterfaceAdditionalPopulationInformer, Interfac
// }
public void SetMainSwarmTopologyTag(int mainSwarmTopologyTag) {
// Possible topologies are: "Linear", "Grid", "Star", "Multi-Swarm", "Tree", "HPSO", "Random" in that order starting by 0.
this.mainSwarmTopology = PSOTopologyEnum.getFromId(mainSwarmTopologyTag);
this.mainSwarmTopology = PSOTopology.getFromId(mainSwarmTopologyTag);
}
public PSOTopologyEnum getMainSwarmTopology() {
public PSOTopology getMainSwarmTopology() {
return mainSwarm.topology;
}
@ -1026,10 +1026,10 @@ public class NichePSO implements InterfaceAdditionalPopulationInformer, Interfac
*
* @param t The type.
*/
public void setMainSwarmTopology(PSOTopologyEnum t) {
public void setMainSwarmTopology(PSOTopology t) {
mainSwarm.topology = t;
this.mainSwarmTopology = t;
GenericObjectEditor.setHideProperty(getClass(), "mainSwarmTopologyRange", mainSwarmTopology == PSOTopologyEnum.multiSwarm); // "Multi-Swarm" has no topologyRange
GenericObjectEditor.setHideProperty(getClass(), "mainSwarmTopologyRange", mainSwarmTopology == PSOTopology.multiSwarm); // "Multi-Swarm" has no topologyRange
}
public int getMainSwarmTopologyRange() {

View File

@ -4,7 +4,7 @@ import eva2.gui.BeanInspector;
import eva2.gui.editor.GenericObjectEditor;
import eva2.gui.plot.Plot;
import eva2.gui.plot.TopoPlot;
import eva2.optimization.enums.PSOTopologyEnum;
import eva2.optimization.enums.PSOTopology;
import eva2.optimization.go.InterfacePopulationChangedEventListener;
import eva2.optimization.individuals.AbstractEAIndividual;
import eva2.optimization.individuals.AbstractEAIndividualComparator;
@ -53,7 +53,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
protected boolean checkRange = true;
protected boolean checkSpeedLimit = false;
protected boolean useAlternative = false;
protected PSOTopologyEnum topology = PSOTopologyEnum.grid;
protected PSOTopology topology = PSOTopology.grid;
/**
* Defines which version of PSO is applied, classical inertness or
* constriction (using chi)
@ -110,7 +110,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
// private double lsCandidateRatio=0.25;
public ParticleSwarmOptimization() {
topology = PSOTopologyEnum.grid;
topology = PSOTopology.grid;
algType = new SelectedTag("Inertness", "Constriction");
algType.setSelectedTag(1);
@ -145,7 +145,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
* @param topo type of the neighbourhood topology
* @param topoRange range of the neighbourhood topology
*/
public ParticleSwarmOptimization(int popSize, double p1, double p2, PSOTopologyEnum topo, int topoRange) {
public ParticleSwarmOptimization(int popSize, double p1, double p2, PSOTopology topo, int topoRange) {
this();
algType.setSelectedTag(1); // set to constriction
population = new Population(popSize);
@ -454,7 +454,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
treeLevels = 0;
// the HPSO tree will contain layers 0...HPSOLevels, the last one is "incomplete" with only HPSOOrphans number of nodes
if (getTopology() == PSOTopologyEnum.hpso || getTopology() == PSOTopologyEnum.tree) {
if (getTopology() == PSOTopology.hpso || getTopology() == PSOTopology.tree) {
if (topologyRange < 2) {
System.err.println("Error, tree/hpso requires topology range of at least 2!");
} else {
@ -465,7 +465,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
treeLastFullLevelNodeCnt = (int) Math.pow(topologyRange, treeLevels - 1);
}
}
if (getTopology() == PSOTopologyEnum.dms) {
if (getTopology() == PSOTopology.dms) {
dmsLinks = regroupSwarm(population, getTopologyRange());
}
}
@ -1310,21 +1310,21 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
}
protected void updateTopology(Population pop) {
if (topology == PSOTopologyEnum.dms) { // Dynamic multi-swarm after Liang & Suganthan
if (topology == PSOTopology.dms) { // Dynamic multi-swarm after Liang & Suganthan
if (pop.getGeneration() % getDmsRegroupGens() == 0) {
dmsLinks = regroupSwarm(pop, getTopologyRange());
}
}
if ((topology == PSOTopologyEnum.multiSwarm) || (topology == PSOTopologyEnum.tree)) {
if ((topology == PSOTopology.multiSwarm) || (topology == PSOTopology.tree)) {
sortedPop = pop.toArray();
if ((topology == PSOTopologyEnum.multiSwarm) || (treeStruct >= 2)) {
if ((topology == PSOTopology.multiSwarm) || (treeStruct >= 2)) {
Arrays.sort(sortedPop, new AbstractEAIndividualComparator());
} else {
Arrays.sort(sortedPop, new AbstractEAIndividualComparator(partBestFitKey));
}
addSortedIndicesTo(sortedPop, pop);
}
if (topology == PSOTopologyEnum.multiSwarm) {
if (topology == PSOTopology.multiSwarm) {
// prepare multi swarm topology
PhenotypeMetric metric = new PhenotypeMetric();
Vector<AbstractEAIndividual> leaders = new Vector<>(pop.size());
@ -1378,7 +1378,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
// }
//System.out.println(" -- best " + population.indexOf(population.getBestEAIndividual()));
}
if (topology == PSOTopologyEnum.hpso) { // HPSO sorting the population
if (topology == PSOTopology.hpso) { // HPSO sorting the population
int parentIndex;
AbstractEAIndividual indy;
AbstractEAIndividualComparator comp = new AbstractEAIndividualComparator(partBestFitKey);
@ -1756,7 +1756,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
*
* @param s The type.
*/
public void setTopology(PSOTopologyEnum t) {
public void setTopology(PSOTopology t) {
this.topology = t;
setGOEShowProperties(getClass());
}
@ -1764,22 +1764,22 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
public void setGOEShowProperties(Class<?> cls) {
// linear, grid, random
GenericObjectEditor.setShowProperty(cls, "topologyRange", (topology == PSOTopologyEnum.linear) || (topology == PSOTopologyEnum.grid) || (topology == PSOTopologyEnum.random) || (topology == PSOTopologyEnum.tree) || (topology == PSOTopologyEnum.hpso) || (topology == PSOTopologyEnum.dms));
GenericObjectEditor.setShowProperty(cls, "topologyRange", (topology == PSOTopology.linear) || (topology == PSOTopology.grid) || (topology == PSOTopology.random) || (topology == PSOTopology.tree) || (topology == PSOTopology.hpso) || (topology == PSOTopology.dms));
// multi swarm
GenericObjectEditor.setShowProperty(cls, "subSwarmRadius", (topology == PSOTopologyEnum.multiSwarm));
GenericObjectEditor.setShowProperty(cls, "subSwarmRadius", (topology == PSOTopology.multiSwarm));
// multi swarm
GenericObjectEditor.setShowProperty(cls, "maxSubSwarmSize", (topology == PSOTopologyEnum.multiSwarm));
GenericObjectEditor.setShowProperty(cls, "maxSubSwarmSize", (topology == PSOTopology.multiSwarm));
// tree
GenericObjectEditor.setShowProperty(cls, "treeStruct", (topology == PSOTopologyEnum.tree));
GenericObjectEditor.setShowProperty(cls, "treeStruct", (topology == PSOTopology.tree));
// tree, hpso
// GenericObjectEditor.setShowProperty(cls, "treeBranchDegree", (topology==PSOTopologyEnum.tree) || (topology==PSOTopologyEnum.hpso));
// linear
GenericObjectEditor.setShowProperty(cls, "wrapTopology", (topology == PSOTopologyEnum.linear) || (topology == PSOTopologyEnum.grid));
GenericObjectEditor.setShowProperty(cls, "wrapTopology", (topology == PSOTopology.linear) || (topology == PSOTopology.grid));
// dms
GenericObjectEditor.setShowProperty(cls, "dmsRegroupGens", (topology == PSOTopologyEnum.dms));
GenericObjectEditor.setShowProperty(cls, "dmsRegroupGens", (topology == PSOTopology.dms));
}
public PSOTopologyEnum getTopology() {
public PSOTopology getTopology() {
return topology;
}

View File

@ -1,6 +1,6 @@
package eva2.optimization.strategies;
import eva2.optimization.enums.PSOTopologyEnum;
import eva2.optimization.enums.PSOTopology;
import eva2.optimization.operator.cluster.ClusteringDensityBased;
import eva2.optimization.operator.distancemetric.IndividualDataMetric;
import eva2.optimization.operator.paramcontrol.ParamAdaption;
@ -27,7 +27,7 @@ public class SqPSO extends ClusterBasedNichingEA {
setEpsilonBound(epsilonConv);
setHaltingWindow(haltingWindow);
setMaxSpeciesSize(popSize);
setOptimizer(new ParticleSwarmOptimization(popSize, 2.05, 2.05, PSOTopologyEnum.grid, 2));
setOptimizer(new ParticleSwarmOptimization(popSize, 2.05, 2.05, PSOTopology.grid, 2));
ParamAdaption[] defAdpt = new ParamAdaption[]{};
setParameterControl(defAdpt);
setPopulationSize(popSize);

View File

@ -14,7 +14,7 @@ import eva2.optimization.operator.selection.SelectBestIndividuals;
import eva2.optimization.operator.terminators.EvaluationTerminator;
import eva2.optimization.population.InterfaceSolutionSet;
import eva2.optimization.population.Population;
import eva2.optimization.stat.StatisticsStandalone;
import eva2.optimization.statistics.StatisticsStandalone;
import eva2.optimization.strategies.GeneticAlgorithm;
import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.tools.BasicResourceLoader;

View File

@ -13,7 +13,7 @@ import eva2.optimization.operator.terminators.PopulationMeasureTerminator.Change
import eva2.optimization.operator.terminators.PopulationMeasureTerminator.DirectionTypeEnum;
import eva2.optimization.operator.terminators.PopulationMeasureTerminator.StagnationTypeEnum;
import eva2.optimization.population.Population;
import eva2.optimization.stat.InterfaceTextListener;
import eva2.optimization.statistics.InterfaceTextListener;
import eva2.optimization.strategies.InterfaceOptimizer;
import eva2.util.annotation.Description;