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:
parent
6694465ba1
commit
cb5bedd263
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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")) {
|
||||
|
@ -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.*;
|
||||
|
@ -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;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package eva2.gui;
|
||||
|
||||
import eva2.optimization.stat.InterfaceTextListener;
|
||||
import eva2.optimization.statistics.InterfaceTextListener;
|
||||
|
||||
/*
|
||||
*
|
||||
|
@ -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;
|
||||
|
@ -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];
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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.*;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
package eva2.optimization.enums;
|
||||
|
||||
public enum MutateESCrossoverTypeEnum {
|
||||
public enum MutateESCrossoverType {
|
||||
none, intermediate, discrete
|
||||
}
|
@ -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;
|
@ -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() {
|
@ -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"
|
||||
};
|
||||
}
|
||||
}
|
@ -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];
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -1 +0,0 @@
|
||||
package eva2.optimization.stat;
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.stat;
|
||||
package eva2.optimization.statistics;
|
||||
|
||||
import eva2.gui.BeanInspector;
|
||||
import eva2.optimization.individuals.AbstractEAIndividual;
|
@ -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:
|
@ -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) {
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.stat;
|
||||
package eva2.optimization.statistics;
|
||||
|
||||
|
||||
import eva2.gui.plot.DataViewer;
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.stat;
|
||||
package eva2.optimization.statistics;
|
||||
|
||||
import eva2.tools.StringSelection;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.stat;
|
||||
package eva2.optimization.statistics;
|
||||
|
||||
import eva2.optimization.individuals.IndividualInterface;
|
||||
import eva2.optimization.population.Population;
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.stat;
|
||||
package eva2.optimization.statistics;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.stat;
|
||||
package eva2.optimization.statistics;
|
||||
|
||||
import eva2.tools.SelectedTag;
|
||||
import eva2.tools.StringSelection;
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.stat;
|
||||
package eva2.optimization.statistics;
|
||||
|
||||
/**
|
||||
* A very simple interface class to receive raw String data.
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.stat;
|
||||
package eva2.optimization.statistics;
|
||||
|
||||
import eva2.gui.BeanInspector;
|
||||
import eva2.optimization.go.InterfaceOptimizationParameters;
|
@ -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() {
|
@ -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;
|
@ -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);
|
||||
}
|
||||
}
|
@ -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});
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package eva2.optimization.stat;
|
||||
package eva2.optimization.statistics;
|
||||
|
||||
import eva2.gui.BeanInspector;
|
||||
import eva2.gui.JTextoutputFrame;
|
1
src/eva2/optimization/statistics/package-info.java
Normal file
1
src/eva2/optimization/statistics/package-info.java
Normal file
@ -0,0 +1 @@
|
||||
package eva2.optimization.statistics;
|
@ -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));
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user