diff --git a/src/eva2/OptimizerFactory.java b/src/eva2/OptimizerFactory.java index 11755d01..7beb4517 100644 --- a/src/eva2/OptimizerFactory.java +++ b/src/eva2/OptimizerFactory.java @@ -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; diff --git a/src/eva2/OptimizerRunnable.java b/src/eva2/OptimizerRunnable.java index 41d1654e..6a575080 100644 --- a/src/eva2/OptimizerRunnable.java +++ b/src/eva2/OptimizerRunnable.java @@ -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; diff --git a/src/eva2/cli/Main.java b/src/eva2/cli/Main.java index 7680bae2..5c086fed 100644 --- a/src/eva2/cli/Main.java +++ b/src/eva2/cli/Main.java @@ -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")) { diff --git a/src/eva2/gui/EvAModuleButtonPanelMaker.java b/src/eva2/gui/EvAModuleButtonPanelMaker.java index 21e33f12..905bfbf2 100644 --- a/src/eva2/gui/EvAModuleButtonPanelMaker.java +++ b/src/eva2/gui/EvAModuleButtonPanelMaker.java @@ -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.*; diff --git a/src/eva2/gui/JParaPanel.java b/src/eva2/gui/JParaPanel.java index 587deb53..cfc136db 100644 --- a/src/eva2/gui/JParaPanel.java +++ b/src/eva2/gui/JParaPanel.java @@ -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; diff --git a/src/eva2/gui/JTextoutputFrameInterface.java b/src/eva2/gui/JTextoutputFrameInterface.java index 1142baf4..e12c8bdb 100644 --- a/src/eva2/gui/JTextoutputFrameInterface.java +++ b/src/eva2/gui/JTextoutputFrameInterface.java @@ -1,6 +1,6 @@ package eva2.gui; -import eva2.optimization.stat.InterfaceTextListener; +import eva2.optimization.statistics.InterfaceTextListener; /* * diff --git a/src/eva2/gui/Main.java b/src/eva2/gui/Main.java index d22f8ad9..4c1fddc7 100644 --- a/src/eva2/gui/Main.java +++ b/src/eva2/gui/Main.java @@ -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; diff --git a/src/eva2/gui/PropertySelectableList.java b/src/eva2/gui/PropertySelectableList.java index 4907d7d5..d24606d4 100644 --- a/src/eva2/gui/PropertySelectableList.java +++ b/src/eva2/gui/PropertySelectableList.java @@ -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 implements java.io.Serializable { @@ -16,9 +11,6 @@ public class PropertySelectableList 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]; diff --git a/src/eva2/gui/editor/AbstractListSelectionEditor.java b/src/eva2/gui/editor/AbstractListSelectionEditor.java index 02836838..1e72e9e1 100644 --- a/src/eva2/gui/editor/AbstractListSelectionEditor.java +++ b/src/eva2/gui/editor/AbstractListSelectionEditor.java @@ -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 { diff --git a/src/eva2/gui/editor/StatisticsEditor.java b/src/eva2/gui/editor/StatisticsEditor.java index 1678392f..aa98d879 100644 --- a/src/eva2/gui/editor/StatisticsEditor.java +++ b/src/eva2/gui/editor/StatisticsEditor.java @@ -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.*; diff --git a/src/eva2/gui/editor/StringSelectionEditor.java b/src/eva2/gui/editor/StringSelectionEditor.java index e0920c31..6d948498 100644 --- a/src/eva2/gui/editor/StringSelectionEditor.java +++ b/src/eva2/gui/editor/StringSelectionEditor.java @@ -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 diff --git a/src/eva2/optimization/enums/DETypeEnum.java b/src/eva2/optimization/enums/DEType.java similarity index 87% rename from src/eva2/optimization/enums/DETypeEnum.java rename to src/eva2/optimization/enums/DEType.java index bc215bd8..aed515a2 100644 --- a/src/eva2/optimization/enums/DETypeEnum.java +++ b/src/eva2/optimization/enums/DEType.java @@ -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; } } diff --git a/src/eva2/optimization/enums/MutateESCrossoverTypeEnum.java b/src/eva2/optimization/enums/MutateESCrossoverType.java similarity index 63% rename from src/eva2/optimization/enums/MutateESCrossoverTypeEnum.java rename to src/eva2/optimization/enums/MutateESCrossoverType.java index 13ada67e..630a4cb5 100644 --- a/src/eva2/optimization/enums/MutateESCrossoverTypeEnum.java +++ b/src/eva2/optimization/enums/MutateESCrossoverType.java @@ -1,5 +1,5 @@ package eva2.optimization.enums; -public enum MutateESCrossoverTypeEnum { +public enum MutateESCrossoverType { none, intermediate, discrete } diff --git a/src/eva2/optimization/enums/PSOTopologyEnum.java b/src/eva2/optimization/enums/PSOTopology.java similarity index 92% rename from src/eva2/optimization/enums/PSOTopologyEnum.java rename to src/eva2/optimization/enums/PSOTopology.java index 7cec33c6..79429191 100644 --- a/src/eva2/optimization/enums/PSOTopologyEnum.java +++ b/src/eva2/optimization/enums/PSOTopology.java @@ -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; diff --git a/src/eva2/optimization/stat/StatsOnSingleDataSetEnum.java b/src/eva2/optimization/enums/StatisticsOnSingleDataSet.java similarity index 73% rename from src/eva2/optimization/stat/StatsOnSingleDataSetEnum.java rename to src/eva2/optimization/enums/StatisticsOnSingleDataSet.java index 49940712..bd78b86f 100644 --- a/src/eva2/optimization/stat/StatsOnSingleDataSetEnum.java +++ b/src/eva2/optimization/enums/StatisticsOnSingleDataSet.java @@ -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() { diff --git a/src/eva2/optimization/stat/StatsOnTwoSampledDataEnum.java b/src/eva2/optimization/enums/StatisticsOnTwoSampledData.java similarity index 55% rename from src/eva2/optimization/stat/StatsOnTwoSampledDataEnum.java rename to src/eva2/optimization/enums/StatisticsOnTwoSampledData.java index 4cfcb3fc..97910dcc 100644 --- a/src/eva2/optimization/stat/StatsOnTwoSampledDataEnum.java +++ b/src/eva2/optimization/enums/StatisticsOnTwoSampledData.java @@ -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" + }; } } diff --git a/src/eva2/optimization/individuals/ESIndividualDoubleData.java b/src/eva2/optimization/individuals/ESIndividualDoubleData.java index 56bebf1e..ed15feb7 100644 --- a/src/eva2/optimization/individuals/ESIndividualDoubleData.java +++ b/src/eva2/optimization/individuals/ESIndividualDoubleData.java @@ -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]; diff --git a/src/eva2/optimization/modules/GenericModuleAdapter.java b/src/eva2/optimization/modules/GenericModuleAdapter.java index bd93e398..1dc4e371 100644 --- a/src/eva2/optimization/modules/GenericModuleAdapter.java +++ b/src/eva2/optimization/modules/GenericModuleAdapter.java @@ -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; diff --git a/src/eva2/optimization/modules/ModuleAdapter.java b/src/eva2/optimization/modules/ModuleAdapter.java index ce7684d2..39d30fce 100644 --- a/src/eva2/optimization/modules/ModuleAdapter.java +++ b/src/eva2/optimization/modules/ModuleAdapter.java @@ -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; /** * diff --git a/src/eva2/optimization/modules/Processor.java b/src/eva2/optimization/modules/Processor.java index 6a6d54e1..a60753c6 100644 --- a/src/eva2/optimization/modules/Processor.java +++ b/src/eva2/optimization/modules/Processor.java @@ -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; diff --git a/src/eva2/optimization/operator/mutation/MutateESGlobal.java b/src/eva2/optimization/operator/mutation/MutateESGlobal.java index c08c577d..07e958a9 100644 --- a/src/eva2/optimization/operator/mutation/MutateESGlobal.java +++ b/src/eva2/optimization/operator/mutation/MutateESGlobal.java @@ -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 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; } diff --git a/src/eva2/optimization/operator/postprocess/PostProcess.java b/src/eva2/optimization/operator/postprocess/PostProcess.java index 5e18c17b..16ef4b8c 100644 --- a/src/eva2/optimization/operator/postprocess/PostProcess.java +++ b/src/eva2/optimization/operator/postprocess/PostProcess.java @@ -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; diff --git a/src/eva2/optimization/stat/MovingAverage.java b/src/eva2/optimization/stat/MovingAverage.java deleted file mode 100644 index 75f487ce..00000000 --- a/src/eva2/optimization/stat/MovingAverage.java +++ /dev/null @@ -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; - } -} \ No newline at end of file diff --git a/src/eva2/optimization/stat/package-info.java b/src/eva2/optimization/stat/package-info.java deleted file mode 100644 index 49399410..00000000 --- a/src/eva2/optimization/stat/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package eva2.optimization.stat; \ No newline at end of file diff --git a/src/eva2/optimization/stat/AbstractStatistics.java b/src/eva2/optimization/statistics/AbstractStatistics.java similarity index 99% rename from src/eva2/optimization/stat/AbstractStatistics.java rename to src/eva2/optimization/statistics/AbstractStatistics.java index 77c04fba..c35f1b56 100644 --- a/src/eva2/optimization/stat/AbstractStatistics.java +++ b/src/eva2/optimization/statistics/AbstractStatistics.java @@ -1,4 +1,4 @@ -package eva2.optimization.stat; +package eva2.optimization.statistics; import eva2.gui.BeanInspector; import eva2.optimization.individuals.AbstractEAIndividual; diff --git a/src/eva2/optimization/stat/EvAStatisticalEvaluation.java b/src/eva2/optimization/statistics/EvAStatisticalEvaluation.java similarity index 93% rename from src/eva2/optimization/stat/EvAStatisticalEvaluation.java rename to src/eva2/optimization/statistics/EvAStatisticalEvaluation.java index 00d02d2c..453e617a 100644 --- a/src/eva2/optimization/stat/EvAStatisticalEvaluation.java +++ b/src/eva2/optimization/statistics/EvAStatisticalEvaluation.java @@ -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 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: diff --git a/src/eva2/optimization/stat/EvAStatisticalEvaluationParams.java b/src/eva2/optimization/statistics/EvAStatisticalEvaluationParams.java similarity index 82% rename from src/eva2/optimization/stat/EvAStatisticalEvaluationParams.java rename to src/eva2/optimization/statistics/EvAStatisticalEvaluationParams.java index d3522557..fbafe600 100644 --- a/src/eva2/optimization/stat/EvAStatisticalEvaluationParams.java +++ b/src/eva2/optimization/statistics/EvAStatisticalEvaluationParams.java @@ -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 additionalButtons = null; public void setGenericAdditionalButtons(List buts) { diff --git a/src/eva2/optimization/stat/GenericStatistics.java b/src/eva2/optimization/statistics/GenericStatistics.java similarity index 99% rename from src/eva2/optimization/stat/GenericStatistics.java rename to src/eva2/optimization/statistics/GenericStatistics.java index 84160f91..b617d665 100644 --- a/src/eva2/optimization/stat/GenericStatistics.java +++ b/src/eva2/optimization/statistics/GenericStatistics.java @@ -1,4 +1,4 @@ -package eva2.optimization.stat; +package eva2.optimization.statistics; import eva2.gui.plot.DataViewer; diff --git a/src/eva2/optimization/stat/GraphSelectionEnum.java b/src/eva2/optimization/statistics/GraphSelectionEnum.java similarity index 98% rename from src/eva2/optimization/stat/GraphSelectionEnum.java rename to src/eva2/optimization/statistics/GraphSelectionEnum.java index 6afac900..24cc4540 100644 --- a/src/eva2/optimization/stat/GraphSelectionEnum.java +++ b/src/eva2/optimization/statistics/GraphSelectionEnum.java @@ -1,4 +1,4 @@ -package eva2.optimization.stat; +package eva2.optimization.statistics; import eva2.tools.StringSelection; diff --git a/src/eva2/optimization/stat/InterfaceStatistics.java b/src/eva2/optimization/statistics/InterfaceStatistics.java similarity index 97% rename from src/eva2/optimization/stat/InterfaceStatistics.java rename to src/eva2/optimization/statistics/InterfaceStatistics.java index bf317b1d..ccb1356d 100644 --- a/src/eva2/optimization/stat/InterfaceStatistics.java +++ b/src/eva2/optimization/statistics/InterfaceStatistics.java @@ -1,4 +1,4 @@ -package eva2.optimization.stat; +package eva2.optimization.statistics; import eva2.optimization.individuals.IndividualInterface; import eva2.optimization.population.Population; diff --git a/src/eva2/optimization/stat/InterfaceStatisticsListener.java b/src/eva2/optimization/statistics/InterfaceStatisticsListener.java similarity index 98% rename from src/eva2/optimization/stat/InterfaceStatisticsListener.java rename to src/eva2/optimization/statistics/InterfaceStatisticsListener.java index 258ae573..a9985cd7 100644 --- a/src/eva2/optimization/stat/InterfaceStatisticsListener.java +++ b/src/eva2/optimization/statistics/InterfaceStatisticsListener.java @@ -1,4 +1,4 @@ -package eva2.optimization.stat; +package eva2.optimization.statistics; import java.util.List; diff --git a/src/eva2/optimization/stat/InterfaceStatisticsParameter.java b/src/eva2/optimization/statistics/InterfaceStatisticsParameter.java similarity index 97% rename from src/eva2/optimization/stat/InterfaceStatisticsParameter.java rename to src/eva2/optimization/statistics/InterfaceStatisticsParameter.java index 33220d51..1ff5ec78 100644 --- a/src/eva2/optimization/stat/InterfaceStatisticsParameter.java +++ b/src/eva2/optimization/statistics/InterfaceStatisticsParameter.java @@ -1,4 +1,4 @@ -package eva2.optimization.stat; +package eva2.optimization.statistics; import eva2.tools.SelectedTag; import eva2.tools.StringSelection; diff --git a/src/eva2/optimization/stat/InterfaceTextListener.java b/src/eva2/optimization/statistics/InterfaceTextListener.java similarity index 84% rename from src/eva2/optimization/stat/InterfaceTextListener.java rename to src/eva2/optimization/statistics/InterfaceTextListener.java index 00d33dc9..2871b855 100644 --- a/src/eva2/optimization/stat/InterfaceTextListener.java +++ b/src/eva2/optimization/statistics/InterfaceTextListener.java @@ -1,4 +1,4 @@ -package eva2.optimization.stat; +package eva2.optimization.statistics; /** * A very simple interface class to receive raw String data. diff --git a/src/eva2/optimization/stat/OptimizationJob.java b/src/eva2/optimization/statistics/OptimizationJob.java similarity index 99% rename from src/eva2/optimization/stat/OptimizationJob.java rename to src/eva2/optimization/statistics/OptimizationJob.java index 5df37efb..590344c1 100644 --- a/src/eva2/optimization/stat/OptimizationJob.java +++ b/src/eva2/optimization/statistics/OptimizationJob.java @@ -1,4 +1,4 @@ -package eva2.optimization.stat; +package eva2.optimization.statistics; import eva2.gui.BeanInspector; import eva2.optimization.go.InterfaceOptimizationParameters; diff --git a/src/eva2/optimization/stat/OptimizationJobList.java b/src/eva2/optimization/statistics/OptimizationJobList.java similarity index 95% rename from src/eva2/optimization/stat/OptimizationJobList.java rename to src/eva2/optimization/statistics/OptimizationJobList.java index c5bb2d16..d3c6ce6e 100644 --- a/src/eva2/optimization/stat/OptimizationJobList.java +++ b/src/eva2/optimization/statistics/OptimizationJobList.java @@ -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 @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() { diff --git a/src/eva2/optimization/stat/StatisticsDummy.java b/src/eva2/optimization/statistics/StatisticsDummy.java similarity index 94% rename from src/eva2/optimization/stat/StatisticsDummy.java rename to src/eva2/optimization/statistics/StatisticsDummy.java index 74e96ef9..6118f245 100644 --- a/src/eva2/optimization/stat/StatisticsDummy.java +++ b/src/eva2/optimization/statistics/StatisticsDummy.java @@ -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; diff --git a/src/eva2/optimization/stat/StatisticsParameter.java b/src/eva2/optimization/statistics/StatisticsParameter.java similarity index 90% rename from src/eva2/optimization/stat/StatisticsParameter.java rename to src/eva2/optimization/statistics/StatisticsParameter.java index ffc1ea6e..2724671c 100644 --- a/src/eva2/optimization/stat/StatisticsParameter.java +++ b/src/eva2/optimization/statistics/StatisticsParameter.java @@ -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); } } \ No newline at end of file diff --git a/src/eva2/optimization/stat/StatisticsStandalone.java b/src/eva2/optimization/statistics/StatisticsStandalone.java similarity index 96% rename from src/eva2/optimization/stat/StatisticsStandalone.java rename to src/eva2/optimization/statistics/StatisticsStandalone.java index 03ad1457..a69adf01 100644 --- a/src/eva2/optimization/stat/StatisticsStandalone.java +++ b/src/eva2/optimization/statistics/StatisticsStandalone.java @@ -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[]) resultFrame.get(i))[optRunsPerformed].add(new Double[] {new Double(functionCalls), specificData[i]}); resultData.get(optRunsPerformed).add(new Object[]{new Double(functionCalls), specificData}); } } diff --git a/src/eva2/optimization/stat/StatisticsWithGUI.java b/src/eva2/optimization/statistics/StatisticsWithGUI.java similarity index 99% rename from src/eva2/optimization/stat/StatisticsWithGUI.java rename to src/eva2/optimization/statistics/StatisticsWithGUI.java index 106537ac..6858eea6 100644 --- a/src/eva2/optimization/stat/StatisticsWithGUI.java +++ b/src/eva2/optimization/statistics/StatisticsWithGUI.java @@ -1,4 +1,4 @@ -package eva2.optimization.stat; +package eva2.optimization.statistics; import eva2.gui.BeanInspector; import eva2.gui.JTextoutputFrame; diff --git a/src/eva2/optimization/statistics/package-info.java b/src/eva2/optimization/statistics/package-info.java new file mode 100644 index 00000000..6de643ce --- /dev/null +++ b/src/eva2/optimization/statistics/package-info.java @@ -0,0 +1 @@ +package eva2.optimization.statistics; \ No newline at end of file diff --git a/src/eva2/optimization/strategies/ANPSO.java b/src/eva2/optimization/strategies/ANPSO.java index 9af8cc47..99fea6c9 100644 --- a/src/eva2/optimization/strategies/ANPSO.java +++ b/src/eva2/optimization/strategies/ANPSO.java @@ -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)); diff --git a/src/eva2/optimization/strategies/CBNPSO.java b/src/eva2/optimization/strategies/CBNPSO.java index 273994dc..f3d2d2c5 100644 --- a/src/eva2/optimization/strategies/CBNPSO.java +++ b/src/eva2/optimization/strategies/CBNPSO.java @@ -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) { diff --git a/src/eva2/optimization/strategies/DifferentialEvolution.java b/src/eva2/optimization/strategies/DifferentialEvolution.java index 40b595c6..35d81831 100644 --- a/src/eva2/optimization/strategies/DifferentialEvolution.java +++ b/src/eva2/optimization/strategies/DifferentialEvolution.java @@ -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; } diff --git a/src/eva2/optimization/strategies/NichePSO.java b/src/eva2/optimization/strategies/NichePSO.java index 5ab563e7..eddda9d2 100644 --- a/src/eva2/optimization/strategies/NichePSO.java +++ b/src/eva2/optimization/strategies/NichePSO.java @@ -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() { diff --git a/src/eva2/optimization/strategies/ParticleSwarmOptimization.java b/src/eva2/optimization/strategies/ParticleSwarmOptimization.java index 66b23b9c..07a5c809 100644 --- a/src/eva2/optimization/strategies/ParticleSwarmOptimization.java +++ b/src/eva2/optimization/strategies/ParticleSwarmOptimization.java @@ -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 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; } diff --git a/src/eva2/optimization/strategies/SqPSO.java b/src/eva2/optimization/strategies/SqPSO.java index 052d7675..7ca4066a 100644 --- a/src/eva2/optimization/strategies/SqPSO.java +++ b/src/eva2/optimization/strategies/SqPSO.java @@ -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); diff --git a/src/eva2/problems/ERPStarter.java b/src/eva2/problems/ERPStarter.java index a40f9343..4f4bc29b 100644 --- a/src/eva2/problems/ERPStarter.java +++ b/src/eva2/problems/ERPStarter.java @@ -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; diff --git a/src/eva2/problems/MatlabProblem.java b/src/eva2/problems/MatlabProblem.java index db20dce0..051bd1e7 100644 --- a/src/eva2/problems/MatlabProblem.java +++ b/src/eva2/problems/MatlabProblem.java @@ -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;