Remove last traces of the TRACE variable.
This commit is contained in:
parent
d9cc88e60d
commit
7d6a9faf66
@ -22,7 +22,6 @@ public class EvATreeSelectionListener implements TreeSelectionListener, Property
|
||||
private PropertyEditor goe = null;
|
||||
private EvATreeNode root = null;
|
||||
private JTree jtree = null;
|
||||
public static final boolean TRACE = true;
|
||||
|
||||
/**
|
||||
* Create a tree listener and hook it up in the editor to listen to parameter changes
|
||||
@ -47,17 +46,9 @@ public class EvATreeSelectionListener implements TreeSelectionListener, Property
|
||||
|
||||
@Override
|
||||
public void valueChanged(TreeSelectionEvent e) {
|
||||
if (TRACE) {
|
||||
System.out.println("valueChanged to " + BeanInspector.toString(e.getPath()));
|
||||
}
|
||||
TreePath tp = e.getPath();
|
||||
if (TRACE) {
|
||||
for (int i = tp.getPathCount() - 1; i >= 0; i--) {
|
||||
System.out.println("* " + i + " " + tp.getPathComponent(i));
|
||||
}
|
||||
}
|
||||
|
||||
EvATreeNode leafNode = (EvATreeNode) tp.getLastPathComponent();
|
||||
// goe.setValue(leafNode.getUserObject());
|
||||
Component editComp = goe.getCustomEditor();
|
||||
if (editComp instanceof OptimizationEditorPanel) {
|
||||
// update the object in the main OptimizationEditorPanel
|
||||
@ -69,9 +60,6 @@ public class EvATreeSelectionListener implements TreeSelectionListener, Property
|
||||
|
||||
@Override
|
||||
public void propertyChange(PropertyChangeEvent evt) {
|
||||
if (TRACE) {
|
||||
System.out.println("EvATreeNode received change event " + evt);
|
||||
}
|
||||
root.setObject(evt.getNewValue(), true);
|
||||
if (jtree != null) {
|
||||
jtree.setModel(new DefaultTreeModel(root));
|
||||
|
@ -11,8 +11,6 @@ import java.io.Serializable;
|
||||
*
|
||||
*/
|
||||
public class PropertySheetPanelStat extends JPanel implements Serializable {
|
||||
|
||||
public final static boolean TRACE = false;
|
||||
private Object[] values;
|
||||
private JCheckBoxFlag[] views;
|
||||
private JLabel[] labels;
|
||||
@ -38,8 +36,6 @@ public class PropertySheetPanelStat extends JPanel implements Serializable {
|
||||
setLayout(gbLayout);
|
||||
setVisible(false);
|
||||
|
||||
int rowHeight = 12;
|
||||
|
||||
values = new Object[flag.length];
|
||||
views = new JCheckBoxFlag[flag.length];
|
||||
labels = new JLabel[names.length];
|
||||
|
@ -426,7 +426,6 @@ public class FunctionArea extends DArea implements Serializable {
|
||||
minY = Math.min(minY, pSet.getMinYVal());
|
||||
}
|
||||
}
|
||||
// if (TRACE) System.out.println("min is " + minY);
|
||||
return (minY > 0);
|
||||
}
|
||||
|
||||
|
@ -25,12 +25,10 @@ public class TopoPlot extends Plot {
|
||||
*/
|
||||
public TopoPlot(String PlotName, String xname, String yname) {
|
||||
super(PlotName, xname, yname, true);
|
||||
//if (TRACE) System.out.println("Constructor TopoPlot "+PlotName);
|
||||
}
|
||||
|
||||
public TopoPlot(String PlotName, String xname, String yname, double[] a, double[] b) {
|
||||
super(PlotName, xname, yname, a, b);
|
||||
//if (TRACE) System.out.println("Constructor TopoPlot "+PlotName);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -98,17 +96,12 @@ public class TopoPlot extends Plot {
|
||||
double deltaY = sizeXY[1] / gridy;
|
||||
double maxDeriv = 0;
|
||||
double[] pos = new double[2];
|
||||
boolean TRACEMETH = false;
|
||||
//double fitRange = java.lang.Math.abs(problem.getMinFitness()-problem.getMaxFitness() );
|
||||
double fitRange = 0, max = -Double.MAX_VALUE, min = Double.MAX_VALUE, tmp;
|
||||
for (int x = 0; x < gridx; x++) {
|
||||
for (int y = 0; y < gridy; y++) {
|
||||
pos[0] = border[0][0] + x * deltaX;
|
||||
pos[1] = border[1][0] + y * deltaY;
|
||||
tmp = (float) (problem.functionValue(pos));
|
||||
if (TRACEMETH) {
|
||||
System.out.println(pos[0] + " " + pos[1] + " " + tmp);
|
||||
}
|
||||
if (tmp < min) {
|
||||
min = tmp;
|
||||
}
|
||||
|
@ -22,7 +22,6 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
|
||||
protected AbstractGPNode parentNode;
|
||||
protected AbstractGPNode[] nodes = new AbstractGPNode[0];
|
||||
protected int depth = 0;
|
||||
private static final boolean TRACE = false;
|
||||
|
||||
/**
|
||||
* This method allows you to clone the Nodes
|
||||
@ -132,9 +131,6 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
|
||||
System.err.println("String has ambiguous prefix: " + str + " -- " + BeanInspector.toString(matchSet));
|
||||
} else { // exactly one match:
|
||||
AbstractGPNode currentNode = (AbstractGPNode) matchSet.get(0).clone();
|
||||
if (TRACE) {
|
||||
System.out.println("Found match: " + currentNode.getOpIdentifier() + "/" + currentNode.getArity());
|
||||
}
|
||||
int cutFront = currentNode.getOpIdentifier().length();
|
||||
String restStr;
|
||||
if (currentNode.getArity() == 0) {
|
||||
@ -163,9 +159,6 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("read " + currentNode.getName() + ", rest: " + restStr);
|
||||
}
|
||||
return new Pair<AbstractGPNode, String>(currentNode, restStr);
|
||||
}
|
||||
}
|
||||
|
@ -261,7 +261,7 @@ public class ParetoFrontView2D extends JPanel implements InterfaceParetoFrontVie
|
||||
InterfaceOptimizationObjective[] tmpObj = ((InterfaceMultiObjectiveDeNovoProblem) this.moccoViewer.moccoStandalone.state.currentProblem).getProblemObjectives();
|
||||
fitness = new double[tmpObj.length];
|
||||
for (int k = 0; k < tmpObj.length; k++) {
|
||||
fitness[k] = ((Double) ((AbstractEAIndividual) pf.get(i)).getData(tmpObj[k].getIdentName())).doubleValue();
|
||||
fitness[k] = (Double) ((AbstractEAIndividual) pf.get(i)).getData(tmpObj[k].getIdentName());
|
||||
}
|
||||
}
|
||||
point = new DPoint(fitness[indexX], fitness[indexY]);
|
||||
|
@ -192,8 +192,7 @@ public class Processor extends Thread implements InterfaceProcessor, InterfacePo
|
||||
LOGGER.log(Level.SEVERE, errMsg, e);
|
||||
try {
|
||||
JOptionPane.showMessageDialog(null, StringTools.wrapLine(errMsg, 60, 0.2), "Error in Optimization", JOptionPane.ERROR_MESSAGE);
|
||||
} catch (Exception ex) {
|
||||
} catch (Error error) {
|
||||
} catch (Exception | Error ex) {
|
||||
}
|
||||
//statistics.stopOptimizationPerformed(false);
|
||||
setOptimizationRunning(false); // normal finish
|
||||
|
@ -43,8 +43,6 @@ public class ClusteringNearestBetter implements InterfaceClustering, Serializabl
|
||||
private static final String initializedForKey = "initializedClustNearestBetterOnHash";
|
||||
private static final String initializedRefData = "initializedClustNearestBetterData";
|
||||
|
||||
private static boolean TRACE = false;
|
||||
|
||||
public ClusteringNearestBetter() {
|
||||
}
|
||||
|
||||
@ -216,9 +214,7 @@ public class ClusteringNearestBetter implements InterfaceClustering, Serializabl
|
||||
}
|
||||
}
|
||||
currentMeanDistance = createClusterTreeFromSortedPop(sorted);
|
||||
if (TRACE) {
|
||||
pop.putData(initializedForKey, pop.hashCode());
|
||||
}
|
||||
|
||||
pop.putData(initializedRefData, currentMeanDistance);
|
||||
return initializedRefData;
|
||||
} else {
|
||||
@ -247,10 +243,6 @@ public class ClusteringNearestBetter implements InterfaceClustering, Serializabl
|
||||
}
|
||||
}
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println("Current pop measures: " + BeanInspector.toString(pop.getPopulationMeasures(metric)[0]));
|
||||
System.out.println("Current threshold: " + currentDistThreshold());
|
||||
}
|
||||
if (isAdaptiveThreshold()) { // test if there was a valid initialization step
|
||||
if (!getRefData(referenceSet, pop)) {
|
||||
currentMeanDistance = createClusterTreeFromSortedPop(sorted);
|
||||
@ -304,13 +296,7 @@ public class ClusteringNearestBetter implements InterfaceClustering, Serializabl
|
||||
}
|
||||
Double refDat = (Double) referenceSet.getData(initializedRefData);
|
||||
if (refDat != null) {
|
||||
if (TRACE) { // check hash
|
||||
Integer hash = (Integer) referenceSet.getData(initializedForKey);
|
||||
if ((hash == null) || (hash != referenceSet.hashCode())) {
|
||||
System.err.println("Warning, missing initialization before clustering for ClusteringNearestBetter!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
currentMeanDistance = refDat.doubleValue();
|
||||
return true;
|
||||
} else {
|
||||
@ -362,14 +348,7 @@ public class ClusteringNearestBetter implements InterfaceClustering, Serializabl
|
||||
// so add it to the cluster, mark it, and proceed recursively.
|
||||
currentClust.add(sorted.get(children[current].get(i)));
|
||||
clustered[children[current].get(i)] = true;
|
||||
if (TRACE) {
|
||||
System.out.println("Assigned " + current);
|
||||
}
|
||||
addChildren(children[current].get(i), clustered, sorted, currentClust);
|
||||
} else {
|
||||
if (TRACE) {
|
||||
System.out.println("Not assigned " + current);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -18,7 +18,7 @@ public abstract class AbstractConstraint implements InterfaceDoubleConstraint, S
|
||||
// private transient GPFunctionProblem func = null;
|
||||
protected ConstraintRelationEnum relation = ConstraintRelationEnum.lessEqZero;
|
||||
protected ConstraintHandlingEnum handling = ConstraintHandlingEnum.specificTag;
|
||||
protected static boolean TRACE = false;
|
||||
|
||||
protected double equalityEpsilon = 0.0001; // threshold below which equality constraints are seen as satisfied
|
||||
private AbstractEAIndividual currentIndy = null;
|
||||
|
||||
@ -31,11 +31,9 @@ public abstract class AbstractConstraint implements InterfaceDoubleConstraint, S
|
||||
relation = ConstraintRelationEnum.lessEqZero;
|
||||
penaltyFactor = 1.;
|
||||
paramCtrl = new ParameterControlManager(new NoParamAdaption());
|
||||
// penaltyFactAdaption = new NoParamAdaption();
|
||||
}
|
||||
|
||||
public AbstractConstraint(AbstractConstraint o) {
|
||||
// penaltyFactAdaption = (ParamAdaption)o.penaltyFactAdaption.clone();
|
||||
paramCtrl = new ParameterControlManager(o.paramCtrl);
|
||||
penaltyFactor = o.penaltyFactor;
|
||||
relation = o.relation;
|
||||
|
@ -41,15 +41,10 @@ public class ConstraintCollection extends AbstractConstraint {
|
||||
@Override
|
||||
protected double getRawViolationValue(double[] indyX) {
|
||||
double v, sum = 0;
|
||||
if (TRACE) {
|
||||
System.out.println("Viol (pen " + getPenaltyFactor() + ")");
|
||||
}
|
||||
|
||||
for (AbstractConstraint constr : constraintArray) {
|
||||
v = constr.getViolation(indyX);
|
||||
sum += v;
|
||||
if (TRACE) {
|
||||
System.out.println(constr.getClass().getSimpleName() + " " + v);
|
||||
}
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
@ -62,10 +62,6 @@ public class GenericConstraint extends AbstractConstraint implements InterfaceDo
|
||||
if (constraintProgram == null) {
|
||||
System.err.println("Error: invalid expression: " + constraintString);
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("Compiled constraint " + constraintString);
|
||||
System.out.println("Program: " + constraintProgram.getStringRepresentation());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -97,8 +93,6 @@ public class GenericConstraint extends AbstractConstraint implements InterfaceDo
|
||||
} else {
|
||||
return 0.;
|
||||
}
|
||||
// case linearLessEqZero:
|
||||
// return getViolation(evalLinearConstr(indy));
|
||||
}
|
||||
EVAERROR.errorMsgOnce("Error: unknown relation for GenericConstraint!");
|
||||
return 0.;
|
||||
@ -111,9 +105,6 @@ public class GenericConstraint extends AbstractConstraint implements InterfaceDo
|
||||
public void setConstraintString(String constraintString) {
|
||||
this.constraintString = constraintString;
|
||||
constraintProgram = null;
|
||||
if (TRACE) {
|
||||
System.out.println(" NEW CONSTRAINT STRING SET! in " + this);
|
||||
}
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
|
@ -13,15 +13,14 @@ import java.util.BitSet;
|
||||
|
||||
/**
|
||||
* The famous n-point crossover operator on a binary and integer genotype. Genotypes of
|
||||
* parent individuals are recombined by exchanging subsegments within randomly
|
||||
* selected points. Therefore, far-away allels (larger GA schemas) are more likely to be split
|
||||
* parent individuals are recombined by exchanging sub-segments within randomly
|
||||
* selected points. Therefore, far-away alleles (larger GA schemas) are more likely to be split
|
||||
* between individuals.
|
||||
*
|
||||
* @author mkron, streiche
|
||||
*/
|
||||
public class CrossoverGAGINPoint implements InterfaceCrossover, java.io.Serializable {
|
||||
private int numberOfCrossovers = 3;
|
||||
private static boolean TRACE = false;
|
||||
|
||||
public CrossoverGAGINPoint() {
|
||||
|
||||
@ -71,7 +70,6 @@ public class CrossoverGAGINPoint implements InterfaceCrossover, java.io.Serializ
|
||||
|
||||
if (individual instanceof InterfaceGAIndividual || (individual instanceof InterfaceGIIndividual)) {
|
||||
int length = getGenotypeLength(individual);
|
||||
// Object[][] tmpGenotypes = new Object[2][partners.size()+1];
|
||||
Object[] origGenotypes = new Object[partners.size() + 1];
|
||||
Object[] newGenotypes = new Object[partners.size() + 1];
|
||||
|
||||
@ -83,14 +81,9 @@ public class CrossoverGAGINPoint implements InterfaceCrossover, java.io.Serializ
|
||||
newGenotypes[i + 1] = getGenotype(result[i + 1]);
|
||||
length = Math.max(length, getGenotypeLength(partners.getEAIndividual(i)));
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("Before CO: " + BeanInspector.toString(newGenotypes));
|
||||
}
|
||||
|
||||
int mixer = RNG.randomInt(0, partners.size()); // partner index with which to exchange genes
|
||||
int[] crossoverPoints = getCrossoverPoints(length, numberOfCrossovers);
|
||||
if (TRACE) {
|
||||
System.out.println("CO points: " + BeanInspector.toString(crossoverPoints));
|
||||
}
|
||||
for (int i = 0; i < length; i++) { // loop positions
|
||||
for (int j = 0; j < this.numberOfCrossovers; j++) {
|
||||
if (i == crossoverPoints[j]) {
|
||||
@ -106,9 +99,6 @@ public class CrossoverGAGINPoint implements InterfaceCrossover, java.io.Serializ
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
writeBack(result[i], newGenotypes[i]);
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("After CO: " + BeanInspector.toString(newGenotypes));
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -10,11 +10,6 @@ import eva2.problems.InterfaceOptimizationProblem;
|
||||
import eva2.tools.math.RNG;
|
||||
|
||||
/**
|
||||
* Created by IntelliJ IDEA.
|
||||
* User: streiche
|
||||
* Date: 04.04.2003
|
||||
* Time: 16:37:05
|
||||
* To change this template use Options | File Templates.
|
||||
*/
|
||||
public class CrossoverGPDefault implements InterfaceCrossover, java.io.Serializable {
|
||||
/**
|
||||
@ -23,7 +18,6 @@ public class CrossoverGPDefault implements InterfaceCrossover, java.io.Serializa
|
||||
private static final long serialVersionUID = 8900427365914281930L;
|
||||
private InterfaceOptimizationProblem optimizationProblem;
|
||||
private boolean maintainMaxDepth = true;
|
||||
private static final boolean TRACE = false;
|
||||
|
||||
public CrossoverGPDefault() {
|
||||
}
|
||||
@ -60,11 +54,6 @@ public class CrossoverGPDefault implements InterfaceCrossover, java.io.Serializa
|
||||
for (int i = 0; i < partners.size(); i++) {
|
||||
result[i + 1] = (AbstractEAIndividual) ((AbstractEAIndividual) partners.get(i)).clone();
|
||||
}
|
||||
if (TRACE) {
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
System.out.println("Before Crossover: " + result[i].getStringRepresentation());
|
||||
}
|
||||
}
|
||||
if (partners.size() == 0) {
|
||||
return result;
|
||||
}
|
||||
@ -94,10 +83,6 @@ public class CrossoverGPDefault implements InterfaceCrossover, java.io.Serializa
|
||||
selNodeOther = ((InterfaceGPIndividual) result[1]).getPGenotype()[t].getRandomLeaf();
|
||||
}
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("Selected t " + selNodeThis.getStringRepresentation());
|
||||
System.out.println("Selected o " + selNodeOther.getStringRepresentation());
|
||||
}
|
||||
|
||||
AbstractGPNode selNodeThisParent, selNodeOtherParent;
|
||||
selNodeThisParent = selNodeThis.getParent();
|
||||
@ -119,20 +104,15 @@ public class CrossoverGPDefault implements InterfaceCrossover, java.io.Serializa
|
||||
}
|
||||
}
|
||||
//in case the crossover was successfull lets give the mutation operators a chance to mate the strategy parameters
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
((GPIndividualProgramData) result[i]).checkDepth();
|
||||
result[i].getMutationOperator().crossoverOnStrategyParameters(indy1, partners);
|
||||
}
|
||||
if (TRACE) {
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
System.out.println("After Crossover: " + result[i].getStringRepresentation());
|
||||
}
|
||||
for (AbstractEAIndividual aResult : result) {
|
||||
((GPIndividualProgramData) aResult).checkDepth();
|
||||
aResult.getMutationOperator().crossoverOnStrategyParameters(indy1, partners);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method allows you to evaluate wether two crossover operators
|
||||
* This method allows you to evaluate whether two crossover operators
|
||||
* are actually the same.
|
||||
*
|
||||
* @param crossover The other crossover operator
|
||||
|
@ -116,8 +116,6 @@ class CMAParamSet implements InterfacePopulationChangedEventListener, Serializab
|
||||
params.range = range;
|
||||
|
||||
int dim = params.range.length;
|
||||
// if (TRACE_1) System.out.println("WCMA initialize " + dim);
|
||||
// if (TRACE_1) System.out.println("WCMA static initialize " + dim);
|
||||
params.eigenvalues = new double[dim];
|
||||
Arrays.fill(params.eigenvalues, 1.);
|
||||
params.meanX = new double[dim];
|
||||
@ -219,9 +217,7 @@ class CMAParamSet implements InterfacePopulationChangedEventListener, Serializab
|
||||
public void registerPopulationStateChanged(Object source, String name) {
|
||||
if (name.equals(Population.POPULATION_INITIALIZED)) {
|
||||
Population pop = (Population) source;
|
||||
if (MutateESRankMuCMA.TRACE_1) {
|
||||
System.out.println("Event " + name + " arrived in CMAParamSet!!!");
|
||||
}
|
||||
|
||||
CMAParamSet params = (CMAParamSet) (pop.getData(MutateESRankMuCMA.cmaParamsKey));
|
||||
int mu;
|
||||
if (pop.hasData(EvolutionStrategies.esMuParam)) {
|
||||
|
@ -30,7 +30,6 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
|
||||
protected double rotationDev = 15.;
|
||||
protected boolean checkConstraints = true;
|
||||
public static final String vectorKey = "MutateESCorrVectorVector";
|
||||
public static final boolean TRACE = false;
|
||||
|
||||
public MutateESCorrVector() {
|
||||
}
|
||||
@ -128,7 +127,6 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
|
||||
*/
|
||||
@Override
|
||||
public void mutate(AbstractEAIndividual individual) {
|
||||
// if (TRACE) System.out.println("Before Mutate: " + AbstractEAIndividual.getDefaultDataString(individual));
|
||||
if (individual instanceof InterfaceESIndividual) {
|
||||
double[] genes = ((InterfaceESIndividual) individual).getDGenotype();
|
||||
double[][] range = ((InterfaceESIndividual) individual).getDoubleRange();
|
||||
@ -137,9 +135,6 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
|
||||
|
||||
// mutate the velocity vector and write it back
|
||||
if ((scalingDev > 0) || (rotationDev > 0)) {
|
||||
// for (int i = 0; i < vel.length; i++) {
|
||||
// vel[i] += ((range[i][1] -range[i][0])/2)*RNG.gaussianDouble(this.mutationStepSize);
|
||||
// }
|
||||
double rotateRad = rotationDev * (Math.PI / 360.) * RNG.gaussianDouble(1.);
|
||||
// rotate with a gaussian distribution of deviation rotationDeg
|
||||
Mathematics.rotateAllAxes(vel, rotateRad, false); // rotate
|
||||
@ -158,12 +153,6 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
|
||||
Mathematics.svMult(rScale, vel, vel); // mutate speed
|
||||
|
||||
individual.putData(vectorKey, vel);
|
||||
if (TRACE) {
|
||||
System.out.println("rotated by " + rotateRad + ", scaled by " + rScale);
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("-- dir is " + BeanInspector.toString(vel));
|
||||
}
|
||||
}
|
||||
|
||||
// add velocity to the individual
|
||||
@ -178,7 +167,6 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
|
||||
((InterfaceESIndividual) individual).setDGenotype(genes);
|
||||
|
||||
}
|
||||
// if (TRACE) System.out.println("After Mutate: " + AbstractEAIndividual.getDefaultDataString(individual));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -192,21 +180,21 @@ public class MutateESCorrVector implements InterfaceMutation, java.io.Serializab
|
||||
public void crossoverOnStrategyParameters(AbstractEAIndividual indy1, Population partners) {
|
||||
ArrayList<Double> tmpList = new ArrayList<Double>();
|
||||
if (indy1.getMutationOperator() instanceof MutateESCorrVector) {
|
||||
tmpList.add(new Double(((MutateESCorrVector) indy1.getMutationOperator()).scalingDev));
|
||||
tmpList.add(((MutateESCorrVector) indy1.getMutationOperator()).scalingDev);
|
||||
}
|
||||
for (int i = 0; i < partners.size(); i++) {
|
||||
if (((AbstractEAIndividual) partners.get(i)).getMutationOperator() instanceof MutateESCorrVector) {
|
||||
tmpList.add(new Double(((MutateESCorrVector) ((AbstractEAIndividual) partners.get(i)).getMutationOperator()).scalingDev));
|
||||
for (Object partner : partners) {
|
||||
if (((AbstractEAIndividual) partner).getMutationOperator() instanceof MutateESCorrVector) {
|
||||
tmpList.add(((MutateESCorrVector) ((AbstractEAIndividual) partner).getMutationOperator()).scalingDev);
|
||||
}
|
||||
}
|
||||
double[] list = new double[tmpList.size()];
|
||||
for (int i = 0; i < tmpList.size(); i++) {
|
||||
list[i] = tmpList.get(i).doubleValue();
|
||||
list[i] = tmpList.get(i);
|
||||
}
|
||||
if (list.length <= 1) {
|
||||
return;
|
||||
}
|
||||
// discreete mutation for step size
|
||||
// discrete mutation for step size
|
||||
this.scalingDev = list[RNG.randomInt(0, list.length - 1)];
|
||||
}
|
||||
|
||||
|
@ -10,11 +10,6 @@ import eva2.tools.math.Mathematics;
|
||||
import eva2.tools.math.RNG;
|
||||
|
||||
/**
|
||||
* Created by IntelliJ IDEA.
|
||||
* User: streiche
|
||||
* Date: 27.05.2003
|
||||
* Time: 17:47:45
|
||||
* To change this template use Options | File Templates.
|
||||
*/
|
||||
|
||||
public class MutateESCovarianceMatrixAdaption implements InterfaceMutation, java.io.Serializable {
|
||||
|
@ -49,9 +49,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
private boolean checkRange = true;
|
||||
public static final String cmaParamsKey = "RankMuCMAParameters";
|
||||
|
||||
public static boolean TRACE_1 = false; // true for plotting CMA
|
||||
public static boolean TRACE_2 = false; // true for plotting CMA
|
||||
public static boolean TRACE_TEST = false;
|
||||
|
||||
public MutateESRankMuCMA() {
|
||||
}
|
||||
@ -67,7 +64,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
|
||||
@Override
|
||||
public Object clone() {
|
||||
// if (TRACE) System.out.println("WCMA clone");
|
||||
return new MutateESRankMuCMA(this);
|
||||
}
|
||||
|
||||
@ -162,26 +158,13 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
return;
|
||||
}
|
||||
|
||||
if (TRACE_1) {
|
||||
System.out.println("WCMA adaptGenerational **********");
|
||||
// System.out.println("newPop measures: " + BeanInspector.toString(newPop.getPopulationMeasures()));
|
||||
System.out.println("mu_eff: " + CMAParamSet.getMuEff(params.weights, mu));
|
||||
System.out.println(params.toString());
|
||||
System.out.println("*********************************");
|
||||
}
|
||||
|
||||
double[] newMeanX = calcMeanX(params.weights, selectedSorted);
|
||||
if (TRACE_1) {
|
||||
System.out.println("newMeanX: " + BeanInspector.toString(newMeanX));
|
||||
}
|
||||
|
||||
int dim = params.meanX.length;
|
||||
double[] BDz = new double[dim];
|
||||
for (int i = 0; i < dim; i++) { /* calculate xmean and BDz~N(0,C) */
|
||||
// Eq. 4 from HK04, most right term
|
||||
BDz[i] = Math.sqrt(CMAParamSet.getMuEff(params.weights, mu)) * (newMeanX[i] - params.meanX[i]) / getSigma(params, i);
|
||||
}
|
||||
// if (TRACE_2) System.out.println("BDz is " + BeanInspector.toString(BDz));
|
||||
|
||||
double[] newPathS = params.pathS.clone();
|
||||
double[] newPathC = params.pathC.clone();
|
||||
@ -233,16 +216,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
checkValidDouble(newPathC[i]);
|
||||
}
|
||||
|
||||
// TODO missing: "remove momentum in ps"
|
||||
|
||||
if (TRACE_1) {
|
||||
System.out.println("newPathC: " + BeanInspector.toString(newPathC));
|
||||
System.out.println("newPathS: " + BeanInspector.toString(newPathS));
|
||||
}
|
||||
|
||||
if (TRACE_1) {
|
||||
System.out.println("Bef: C is \n" + params.mC.toString());
|
||||
}
|
||||
if (params.meanX == null) {
|
||||
params.meanX = newMeanX;
|
||||
}
|
||||
@ -250,10 +223,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
updateCov(params, newPathC, newMeanX, hsig, mu, selectedSorted);
|
||||
updateBD(params);
|
||||
|
||||
if (TRACE_2) {
|
||||
System.out.println("Aft: C is " + params.mC.toString());
|
||||
}
|
||||
|
||||
/* update of sigma */
|
||||
double sigFact = Math.exp(((psNorm / expRandStepLen) - 1) * params.c_sig
|
||||
/ params.d_sig);
|
||||
@ -269,12 +238,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
params = CMAParamSet.initCMAParams(params, mu, lambda, params.meanX, ((InterfaceDataTypeDouble) oldGen.getEAIndividual(0)).getDoubleRange(), params.firstSigma);
|
||||
}
|
||||
|
||||
if (TRACE_1) {
|
||||
System.out.println("sigma=" + params.sigma);
|
||||
System.out.print("psLen=" + (psNorm) + " ");
|
||||
outputParams(params, mu);
|
||||
}
|
||||
|
||||
// take over data
|
||||
params.meanX = newMeanX;
|
||||
params.pathC = newPathC;
|
||||
@ -284,7 +247,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
lastParams = (CMAParamSet) params.clone();
|
||||
oldGen.putData(cmaParamsKey, params);
|
||||
selectedP.putData(cmaParamsKey, params);
|
||||
// if (TRACE_2) System.out.println("sampling around " + BeanInspector.toString(meanX));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -319,19 +281,13 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
if (iterations > 1 && (selected.size() > 1)) {
|
||||
// selected pop is sorted
|
||||
if (nearlySame(selected.getEAIndividual(0).getFitness(), selected.getEAIndividual(selected.size() - 1).getFitness())) {
|
||||
if (TRACE_1) {
|
||||
System.err.println("flat fitness landscape, consider reformulation of fitness, step-size increased");
|
||||
}
|
||||
params.sigma *= Math.exp(0.2 + params.c_sig / params.d_sig);
|
||||
// sigma=0.1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!checkValidDouble(params.sigma)) {
|
||||
System.err.println("Error, unstable sigma!");
|
||||
corrected = false;
|
||||
// params.sigma=params.firstSigma; // MK TODO
|
||||
// System.err.println(
|
||||
}
|
||||
|
||||
/* Align (renormalize) scale C (and consequently sigma) */
|
||||
@ -347,7 +303,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
}
|
||||
|
||||
if (fac != 1.) {
|
||||
// System.err.println("Scaling by " + fac);
|
||||
params.sigma /= fac;
|
||||
for (int i = 0; i < params.meanX.length; ++i) {
|
||||
params.pathC[i] *= fac;
|
||||
@ -571,26 +526,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
@Override
|
||||
public void init(AbstractEAIndividual individual,
|
||||
InterfaceOptimizationProblem opt) {
|
||||
// firstAdaptionDone = false;
|
||||
// range = ((InterfaceDataTypeDouble)individual).getDoubleRange();
|
||||
// dim = range.length;
|
||||
// if (TRACE_1) System.out.println("WCMA initialize " + dim);
|
||||
// c_c = (4./(dim+4));
|
||||
// c_sig = Double.NaN; // mark as not yet initialized
|
||||
//// c_u_sig = Double.NaN;
|
||||
// d_sig = Double.NaN; // initialize in first adaption step!
|
||||
// if (TRACE_1) System.out.println("WCMA static initialize " + dim);
|
||||
// eigenvalues = new double[dim];
|
||||
// Arrays.fill(eigenvalues, 1.);
|
||||
//
|
||||
// meanX = new double[dim];
|
||||
// pathC = new double[dim];
|
||||
// pathS = new double[dim];
|
||||
//// mBD = new double[dim];
|
||||
// mC = Matrix.identity(dim, dim);
|
||||
// mB = Matrix.identity(dim, dim);
|
||||
// sigma = 0.2;
|
||||
// ^^^ moved to CMAParamSet initialization
|
||||
double[][] range = ((InterfaceDataTypeDouble) individual).getDoubleRange();
|
||||
int dim = range.length;
|
||||
c_c = (4. / (dim + 4));
|
||||
@ -600,21 +535,15 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
|
||||
@Override
|
||||
public void mutate(AbstractEAIndividual individual) {
|
||||
// if (!firstAdaptionDone) {
|
||||
// if (TRACE) System.out.println("No mutation before first adaptions step");
|
||||
// return;
|
||||
// }
|
||||
if (individual instanceof InterfaceDataTypeDouble) {
|
||||
double[] x = ((InterfaceDataTypeDouble) individual).getDoubleData();
|
||||
// if (TRACE) System.out.println("WCMA mutate, bef: " + BeanInspector.toString(x));
|
||||
double[][] range = ((InterfaceDataTypeDouble) individual).getDoubleRange();
|
||||
|
||||
// this is a critical point: where do the CMA parameters for this individual's mutation come from?
|
||||
// for GA and ES we can expect that selection occured directly before the mutation cycle,
|
||||
// so we take the parameter set from the last adpation step.
|
||||
// for GA and ES we can expect that selection occurred directly before the mutation cycle,
|
||||
// so we take the parameter set from the last adaption step.
|
||||
((InterfaceDataTypeDouble) individual).setDoubleGenotype(mutate(lastParams, x, range, 0));
|
||||
|
||||
// if (TRACE) System.out.println("WCMA mutate, aft: " + BeanInspector.toString(x));
|
||||
} else {
|
||||
System.err.println("Error, expecting InterfaceDataTypeDouble");
|
||||
}
|
||||
@ -626,7 +555,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
System.err.println("Error in MutateESRankMuCMA.mutate !");
|
||||
Mathematics.projectToRange(params.meanX, range);
|
||||
}
|
||||
// System.out.println("--- In mutate!");
|
||||
if (params != null && (params.firstAdaptionDone)) {
|
||||
double[] sampl = new double[dim]; // generate scaled random vector (D * z)
|
||||
for (int i = 0; i < dim; ++i) {
|
||||
@ -677,9 +605,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
if (!Mathematics.isInRange(params.meanX, range)) {
|
||||
System.err.println("Error B in MutateESRankMuCMA.mutate !");
|
||||
}
|
||||
if (TRACE_1) {
|
||||
System.out.println("mutated indy: " + BeanInspector.toString(x));
|
||||
}
|
||||
return x;
|
||||
}
|
||||
|
||||
@ -788,7 +713,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
* @return
|
||||
*/
|
||||
public boolean testAllDistBelow(Population pop, double tolX) {
|
||||
// if all(sigma*(max(abs(pc), sqrt(diag(C)))) < stopTolX)
|
||||
boolean res = true;
|
||||
CMAParamSet params = (CMAParamSet) pop.getData(cmaParamsKey);
|
||||
int i = 0;
|
||||
@ -796,11 +720,7 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
res = res && (getSigma(params, i) * Math.max(Math.abs(params.pathC[i]), Math.sqrt(params.mC.get(i, i))) < tolX);
|
||||
i++;
|
||||
}
|
||||
if (TRACE_TEST) {
|
||||
if (res) {
|
||||
System.out.println("testAllDistBelow hit");
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -827,11 +747,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
res = res && (params.meanX[i] == (params.meanX[i] + d * getSigma(params, i) * ev_k[i]));
|
||||
i++;
|
||||
}
|
||||
if (TRACE_TEST) {
|
||||
if (res) {
|
||||
System.out.println("testNoChangeAddingDevAxis hit");
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -842,8 +757,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
* @return
|
||||
*/
|
||||
public boolean testNoEffectCoord(Population pop, double d) {
|
||||
// if any(xmean == xmean + 0.2*sigma*sqrt(diag(C)))
|
||||
// stopflag(end+1) = {'warnnoeffectcoord'};
|
||||
boolean ret = false;
|
||||
CMAParamSet params = (CMAParamSet) pop.getData(cmaParamsKey);
|
||||
int i = 0;
|
||||
@ -851,11 +764,6 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
ret = ret || (params.meanX[i] == (params.meanX[i] + d * getSigma(params, i) * Math.sqrt(params.mC.get(i, i))));
|
||||
i++;
|
||||
}
|
||||
if (TRACE_TEST) {
|
||||
if (ret) {
|
||||
System.out.println("testNoEffectCoord hit");
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -867,18 +775,9 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In
|
||||
* @return true, if a diagonal entry is <= 0 or >= d, else false
|
||||
*/
|
||||
public boolean testCCondition(Population pop, double d) {
|
||||
// if (min(diag(D)) <= 0) || (max(diag(D)) > 1e14*min(diag(D)))
|
||||
// stopflag(end+1) = {'warnconditioncov'};
|
||||
CMAParamSet params = (CMAParamSet) pop.getData(cmaParamsKey);
|
||||
Pair<Double, Double> minMax = params.mC.getMinMaxDiag();
|
||||
if ((minMax.head <= 0) || (minMax.tail >= d)) {
|
||||
if (TRACE_TEST) {
|
||||
System.out.println("testCCondition hit");
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return (minMax.head <= 0) || (minMax.tail >= d);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -16,7 +16,6 @@ import eva2.optimization.population.Population;
|
||||
*/
|
||||
public abstract class AbstractParameterControl implements InterfaceParameterControl {
|
||||
public Object[] initialValues = null;
|
||||
protected static boolean TRACE = false;
|
||||
|
||||
public AbstractParameterControl() {
|
||||
}
|
||||
@ -57,10 +56,6 @@ public abstract class AbstractParameterControl implements InterfaceParameterCont
|
||||
if (!BeanInspector.setMem(obj, params[i], vals[i])) {
|
||||
System.err.println("Error: failed to set parameter from parameter control " + this.getClass().getName());
|
||||
System.err.println(" Tried to set name/val: " + params[i] + " / " + BeanInspector.toString(vals[i]));
|
||||
} else {
|
||||
if (TRACE) {
|
||||
System.out.println("Successfully set " + params[i] + " / " + BeanInspector.toString(vals[i]) + " at " + iteration);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -30,9 +30,6 @@ public class ConstraintBasedAdaption implements ParamAdaption, Serializable {
|
||||
|
||||
LinkedList<Boolean> lastBestSatisfactionState = new LinkedList<Boolean>();
|
||||
|
||||
// private double endAct=0;
|
||||
// private double deltaInertness = 0.1;
|
||||
private static boolean TRACE = false;
|
||||
|
||||
private static String target = "penaltyFactor";
|
||||
|
||||
@ -44,8 +41,6 @@ public class ConstraintBasedAdaption implements ParamAdaption, Serializable {
|
||||
betaInc = o.betaInc;
|
||||
betaDec = o.betaDec;
|
||||
genGap = o.genGap;
|
||||
// endAct = o.endAct;
|
||||
// deltaInertness = o.deltaInertness;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -59,9 +54,6 @@ public class ConstraintBasedAdaption implements ParamAdaption, Serializable {
|
||||
if (!(obj instanceof AbstractConstraint)) {
|
||||
System.err.println(this.getClass().getSimpleName() + " cant control " + obj.getClass().getSimpleName() + " ! ");
|
||||
} else {
|
||||
if (TRACE) {
|
||||
System.out.println("calc value at it " + iteration + " of " + maxIteration);
|
||||
}
|
||||
if (lastBestSatisfactionState.size() == genGap) {
|
||||
lastBestSatisfactionState.poll();
|
||||
}
|
||||
@ -80,9 +72,6 @@ public class ConstraintBasedAdaption implements ParamAdaption, Serializable {
|
||||
currentFactor = maxPenalty / initialPenalty;
|
||||
curPen = maxPenalty;
|
||||
}
|
||||
if (TRACE && changed) {
|
||||
System.out.println("NEW penalty: " + curPen);
|
||||
}
|
||||
return curPen;
|
||||
}
|
||||
|
||||
@ -101,18 +90,10 @@ public class ConstraintBasedAdaption implements ParamAdaption, Serializable {
|
||||
if (allValid) {
|
||||
currentFactor *= betaDec;
|
||||
changed = true;
|
||||
if (TRACE) {
|
||||
System.out.println("all valid, new fact is " + currentFactor + " times " + initialPenalty);
|
||||
}
|
||||
} else if (allInvalid) {
|
||||
changed = true;
|
||||
currentFactor *= betaInc;
|
||||
if (TRACE) {
|
||||
System.out.println("all invalid, new fact is " + currentFactor + " times " + initialPenalty);
|
||||
}
|
||||
}
|
||||
} else if (TRACE) {
|
||||
System.out.println("not yet looking at " + genGap + " individuals...");
|
||||
}
|
||||
return changed;
|
||||
}
|
||||
|
@ -27,7 +27,6 @@ public class PSOActivityFeedbackControl implements ParamAdaption, Serializable {
|
||||
private double startAct = 0.17;
|
||||
private double endAct = 0.01;
|
||||
private double deltaInertness = 0.1;
|
||||
private static boolean TRACE = false;
|
||||
private boolean exponentialSchedule = true;
|
||||
|
||||
private static String target = "inertnessOrChi";
|
||||
@ -71,9 +70,7 @@ public class PSOActivityFeedbackControl implements ParamAdaption, Serializable {
|
||||
|
||||
private double calcNewInertness(double currentInertness, double currentAct,
|
||||
double desiredActivity) {
|
||||
if (TRACE) {
|
||||
System.out.println("Activity was " + currentAct + ", desired: " + desiredActivity);
|
||||
}
|
||||
|
||||
if (currentAct < desiredActivity) { // increase inertness
|
||||
return Math.min(maxInert, currentInertness + deltaInertness);
|
||||
} else if (currentAct > desiredActivity) { // too high act, so decrease inertness
|
||||
|
@ -27,7 +27,6 @@ import java.util.Vector;
|
||||
public class ParameterControlManager implements InterfaceParameterControl, Serializable {
|
||||
public Object[] initialValues = null;
|
||||
private ParamAdaption[] singleAdapters = new ParamAdaption[]{};
|
||||
protected static boolean TRACE = false;
|
||||
|
||||
public ParameterControlManager() {
|
||||
}
|
||||
@ -111,13 +110,6 @@ public class ParameterControlManager implements InterfaceParameterControl, Seria
|
||||
if (!BeanInspector.setMem(obj, params[i], vals[i])) {
|
||||
System.err.println("Error: failed to set parameter from parameter control " + this.getClass().getName());
|
||||
System.err.println(" Tried to set name/val: " + params[i] + " / " + BeanInspector.toString(vals[i]));
|
||||
} else {
|
||||
if (TRACE) {
|
||||
System.out.println("Successfully set " + params[i] + " / " + BeanInspector.toString(vals[i]) + " at " + iteration);
|
||||
}
|
||||
// if (!oldVal.equals(vals[i])) {
|
||||
// if (obj instanceof InterfaceParamControllable) ((InterfaceParamControllable)obj).notifyParamChanged(params[i], oldVal, vals[i]);
|
||||
// }
|
||||
}
|
||||
}
|
||||
Object[] args = new Object[]{null, pop, iteration, maxIteration};
|
||||
@ -140,8 +132,8 @@ public class ParameterControlManager implements InterfaceParameterControl, Seria
|
||||
public String[] getControlledParameters() {
|
||||
if (singleAdapters != null) {
|
||||
Vector<String> names = new Vector<String>(singleAdapters.length);
|
||||
for (int i = 0; i < singleAdapters.length; i++) {
|
||||
String prm = singleAdapters[i].getControlledParam();
|
||||
for (ParamAdaption singleAdapter : singleAdapters) {
|
||||
String prm = singleAdapter.getControlledParam();
|
||||
if (prm != null) {
|
||||
names.add(prm);
|
||||
}
|
||||
|
@ -13,7 +13,6 @@ import eva2.problems.AbstractMultiObjectiveOptimizationProblem;
|
||||
public class MetricS implements InterfaceParetoFrontMetric, java.io.Serializable {
|
||||
|
||||
private double[][] objectiveSpaceRange;
|
||||
private static boolean TRACE = false;
|
||||
|
||||
public MetricS() {
|
||||
|
||||
@ -57,35 +56,17 @@ public class MetricS implements InterfaceParetoFrontMetric, java.io.Serializable
|
||||
@Override
|
||||
public double calculateMetricOn(Population pop, AbstractMultiObjectiveOptimizationProblem problem) {
|
||||
this.objectiveSpaceRange = problem.getObjectiveSpaceRange();
|
||||
if (TRACE) {
|
||||
System.out.println("Border: " + BeanInspector.toString(objectiveSpaceRange));
|
||||
}
|
||||
|
||||
double smetric = this.calculateSMetric(pop, this.objectiveSpaceRange, this.objectiveSpaceRange.length);
|
||||
double reference = 1;
|
||||
for (int i = 0; i < this.objectiveSpaceRange.length; i++) {
|
||||
reference *= (this.objectiveSpaceRange[i][1] - this.objectiveSpaceRange[i][0]);
|
||||
for (double[] anObjectiveSpaceRange : this.objectiveSpaceRange) {
|
||||
reference *= (anObjectiveSpaceRange[1] - anObjectiveSpaceRange[0]);
|
||||
}
|
||||
//System.out.println("SMetric: "+smetric +" Reference: " + reference);
|
||||
double res = ((Math.abs(smetric) / Math.abs(reference)) * 100);
|
||||
if (TRACE) {
|
||||
System.out.println("Res is " + res);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
// /** This method gives a metric how to evaluate
|
||||
// * an achieved Pareto-Front
|
||||
// */
|
||||
// public double calculateMetricOn(Population pop) {
|
||||
// double smetric = this.calculateSMetric(pop, this.objectiveSpaceRange, this.objectiveSpaceRange.length);
|
||||
// double reference = 1;
|
||||
// for (int i = 0; i < this.objectiveSpaceRange.length; i++) {
|
||||
// reference *= (this.objectiveSpaceRange[i][1] - this.objectiveSpaceRange[i][0]);
|
||||
// }
|
||||
// //System.out.println("SMetric: "+smetric +" Reference: " + reference);
|
||||
// return ((Math.abs(smetric)/Math.abs(reference))*100);
|
||||
// }
|
||||
|
||||
/**
|
||||
* This method will calculate the s-metric from a double array of
|
||||
* fitness cases
|
||||
|
@ -46,7 +46,6 @@ import java.util.Vector;
|
||||
*/
|
||||
public class PostProcess {
|
||||
protected static InterfaceDistanceMetric metric = new PhenotypeMetric();
|
||||
private static final boolean TRACE = false;
|
||||
|
||||
// the default mutation step size for HC post processing
|
||||
private static double defaultMutationStepSize = 0.01;
|
||||
@ -175,17 +174,7 @@ public class PostProcess {
|
||||
result.setSameParams(pop);
|
||||
clustering.initClustering(pop);
|
||||
Population[] clusters = clustering.cluster(pop, null);
|
||||
if (TRACE) {
|
||||
System.out.println("found " + clusters.length + " clusters!");
|
||||
int sum = 0;
|
||||
for (int j = 0; j < clusters.length; j++) {
|
||||
sum += clusters[j].size();
|
||||
if (TRACE) {
|
||||
System.out.print(j + " w " + clusters[j].size() + ", ");
|
||||
}
|
||||
}
|
||||
System.out.println("\nsum was " + sum);
|
||||
}
|
||||
|
||||
for (int j = 0; j < clusters.length; j++) {
|
||||
if (j == 0) { // cluster 0 contains non-assigned individuals
|
||||
if (lonerMode == DISCARD_LONERS) {
|
||||
@ -580,9 +569,7 @@ public class PostProcess {
|
||||
case nelderMead:
|
||||
double[][] range = ((InterfaceDataTypeDouble) candidates.getEAIndividual(index)).getDoubleRange();
|
||||
double perturb = findNMSPerturb(candidates, index, relToAbsPerturb(maxRelativePerturbation, range));
|
||||
if (TRACE) {
|
||||
System.out.println("perturb " + index + " is " + perturb);
|
||||
}
|
||||
|
||||
subPop = NelderMeadSimplex.createNMSPopulation(candidates.getEAIndividual(index), absToRelPerturb(perturb, range), range, false);
|
||||
}
|
||||
return subPop;
|
||||
@ -636,9 +623,7 @@ public class PostProcess {
|
||||
return evalsDone;
|
||||
} else {
|
||||
int stepsPerCand = (steps - (candCnt * (dim - 1))) / candCnt;
|
||||
if (TRACE) {
|
||||
System.out.println("employing " + stepsPerCand + " steps per cand.");
|
||||
}
|
||||
|
||||
if (stepsPerCand < dim) {
|
||||
System.err.println("Too few steps allowed in processSingleCandidates!");
|
||||
System.err.println("Method: " + method + ", cands: " + candidates.size() + ", steps: " + steps);
|
||||
@ -689,9 +674,7 @@ public class PostProcess {
|
||||
|
||||
if (term == null) {
|
||||
int stepsPerCand = 10 * (nmPops.get(0).size() - 1); // == 10*dim for NM
|
||||
if (TRACE) {
|
||||
System.out.println("employing " + stepsPerCand + " per candidate.");
|
||||
}
|
||||
|
||||
if (stepsPerCand < 1) {
|
||||
System.err.println("Too few steps allowed!");
|
||||
return 0;
|
||||
@ -959,18 +942,11 @@ public class PostProcess {
|
||||
|
||||
double[] meanFit = clust.getMeanFitness();
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println("BEF: funcalls done: " + pop.getFunctionCalls() + ", now allowed: " + funCalls);
|
||||
}
|
||||
|
||||
int evalsDone = processSingleCandidates(method, clust, funCalls, sigmaCluster / 2., problem, mute);
|
||||
|
||||
clust.setFunctionCalls(evalsBefore + evalsDone);
|
||||
|
||||
double improvement = EuclideanMetric.euclideanDistance(meanFit, clust.getMeanFitness());
|
||||
if (TRACE) {
|
||||
System.out.println("improvement by " + improvement + " funcalls done: " + evalsDone);
|
||||
}
|
||||
return new Pair<Population, Double>(clust, improvement);
|
||||
}
|
||||
|
||||
@ -990,7 +966,6 @@ public class PostProcess {
|
||||
listener.println("max peak ratio is " + mmkProb.getMaximumPeakRatio(getFoundOptima(solutions, mmkProb.getRealOptima(), mmkProb.getDefaultAccuracy(), true)));
|
||||
if (mmkProb.fullListAvailable()) {
|
||||
for (double epsilon = 0.1; epsilon > 0.00000001; epsilon /= 10.) {
|
||||
// out.println("no optima found: " + ((InterfaceMultimodalProblemKnown)mmProb).getNumberOfFoundOptima(pop));
|
||||
listener.println("found " + getFoundOptima(solutions, mmkProb.getRealOptima(), epsilon, true).size() + " for epsilon = " + epsilon + ", maxPeakRatio: " + mmkProb.getMaximumPeakRatio(solutions));
|
||||
}
|
||||
}
|
||||
|
@ -22,15 +22,13 @@ import java.io.Serializable;
|
||||
*
|
||||
* @author mkron
|
||||
*/
|
||||
public abstract class PopulationMeasureTerminator implements InterfaceTerminator,
|
||||
Serializable {
|
||||
public abstract class PopulationMeasureTerminator implements InterfaceTerminator, Serializable {
|
||||
public enum ChangeTypeEnum {relativeChange, absoluteChange, absoluteValue}
|
||||
|
||||
public enum DirectionTypeEnum {decrease, bidirectional}
|
||||
|
||||
public enum StagnationTypeEnum {fitnessCallBased, generationBased}
|
||||
|
||||
protected static boolean TRACE = false;
|
||||
private double convThresh = 0.01; //, convThreshLower=0.02;
|
||||
private double oldMeasure = -1;
|
||||
private int stagTime = 1000;
|
||||
@ -96,9 +94,7 @@ public abstract class PopulationMeasureTerminator implements InterfaceTerminator
|
||||
@Override
|
||||
public boolean isTerminated(PopulationInterface pop) {
|
||||
if (!firstTime && isStillConverged(pop)) {
|
||||
if (TRACE) {
|
||||
System.out.println("Converged at " + pop.getGeneration() + "/" + pop.getFunctionCalls() + ", measure " + calcPopulationMeasure(pop));
|
||||
}
|
||||
|
||||
if (stagnationTimeHasPassed(pop)) {
|
||||
// population hasnt changed much for max time, criterion is met
|
||||
msg = getTerminationMessage();
|
||||
@ -226,18 +222,6 @@ public abstract class PopulationMeasureTerminator implements InterfaceTerminator
|
||||
break;
|
||||
}
|
||||
ret = (measure <= allowedUpper) && (measure >= allowedLower);
|
||||
// Old Version:
|
||||
// if (isRelativeConvergence()) {
|
||||
// double delta = oldMeasure*convThresh;
|
||||
// if (doCheckImprovement()) ret = (measure >= (oldMeasure - delta));
|
||||
// else ret = ((measure >= (oldMeasure-delta)) && (measure <= (oldMeasure+delta))); // check for rel. change which must be within +/- thresh
|
||||
// } else { // check absolute values
|
||||
// if (doCheckImprovement()) ret = (measure < oldMeasure+convThresh); // absolute improvement below fixed number
|
||||
// else ret = ((measure < oldMeasure+convThresh) && (measure > oldMeasure-convThresh)); // absolute change within fixed range
|
||||
// }
|
||||
if (TRACE) {
|
||||
System.out.println("isStillConverged returns " + ret + ", measure " + measure + ", old measure " + BeanInspector.toString(oldMeasure) + ", bounds: [" + allowedLower + " , " + allowedUpper + "]");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -277,16 +261,6 @@ public abstract class PopulationMeasureTerminator implements InterfaceTerminator
|
||||
return "Ratio of improvement/change or absolute value of improvement/change to determine convergence.";
|
||||
}
|
||||
|
||||
// public void setConvergenceThresholdLower(double x) {
|
||||
// convThreshLower = x;
|
||||
// }
|
||||
// public double getConvergenceThresholdLower() {
|
||||
// return convThreshLower;
|
||||
// }
|
||||
// public String convergenceThresholdUpperTipText() {
|
||||
// return "Lower threshold value in case of detecting absolute change, meaning the bounds [measure-convThresh,measure+convThresh] must be kept to assume convergence.";
|
||||
// }
|
||||
|
||||
public void setStagnationTime(int k) {
|
||||
stagTime = k;
|
||||
}
|
||||
|
@ -1853,24 +1853,8 @@ public class Population extends ArrayList implements PopulationInterface, Clonea
|
||||
* an array of three
|
||||
*/
|
||||
public double[] getPopulationMeasures(InterfaceDistanceMetric metric) {
|
||||
// Integer lastMeasuresModCount = (Integer)getData(lastPopMeasuresFlagKey);
|
||||
// if (lastMeasuresModCount!=null && (lastMeasuresModCount==modCount)) {
|
||||
// double[] measures = (double[])getData(lastPopMeasuresDatKey);
|
||||
// if (TRACE ) {
|
||||
// double[] verify = calcPopulationMeasures(metric);
|
||||
// if (Mathematics.dist(measures, verify, 2)>1e-10) {
|
||||
// System.out.println(getStringRepresentation());
|
||||
// System.err.println("Warning, invalid measures!!!");
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// return measures;
|
||||
// }
|
||||
|
||||
double[] res = getPopulationMeasures(this, metric);
|
||||
// putData(lastPopMeasuresFlagKey, new Integer(modCount));
|
||||
// putData(lastPopMeasuresDatKey, res);
|
||||
// System.out.println(getStringRepresentation());
|
||||
// System.out.println("0-1-dist: " + BeanInspector.toString(metric.distance((AbstractEAIndividual)this.get(0), (AbstractEAIndividual)this.get(1))));
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -19,29 +19,6 @@ public class EvAStatisticalEvaluation {
|
||||
|
||||
public static EvAStatisticalEvaluationParams statsParams = new EvAStatisticalEvaluationParams();
|
||||
|
||||
// public static void evaluate(OptimizationJob[] jobList, int[] selectedIndices) {
|
||||
// if (TRACE) System.out.println("Job list: " + BeanInspector.toString(jobList));
|
||||
// JTextoutputFrame textout = new JTextoutputFrame("Statistics");
|
||||
// textout.setShow(true);
|
||||
// ArrayList<OptimizationJob> jobsToWorkWith = new ArrayList<OptimizationJob>();
|
||||
// for (int i=0; i<jobList.length; i++) {
|
||||
// // remove jobs which are not finished or not selected
|
||||
// if (jobList[i]!=null && (Mathematics.contains(selectedIndices, i)) && (jobList[i].isFinishedAndComplete())) jobsToWorkWith.add(jobList[i]);
|
||||
// }
|
||||
// List<String> commonFields = getCommonFields(jobsToWorkWith);
|
||||
// if (commonFields!=null && !commonFields.isEmpty()) for (String field : commonFields) {
|
||||
// textout.println("Checking field " + field);
|
||||
//
|
||||
// for (int i=0; i<jobsToWorkWith.size(); i++) {
|
||||
// textout.print(jobsToWorkWith.get(i).getParams().getOptimizer().getName() + "\t");
|
||||
// for (int j=0; j<jobsToWorkWith.size(); j++) {
|
||||
//// System.out.println("Comparing " + i + " with " + j);
|
||||
// textout.print("\t" + compare(field, jobsToWorkWith.get(i), jobsToWorkWith.get(j)));
|
||||
// }
|
||||
// textout.println("");
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
public static void evaluate(InterfaceTextListener textout, OptimizationJob[] jobList, int[] selectedIndices,
|
||||
StatsOnSingleDataSetEnum[] singleStats,
|
||||
|
@ -523,12 +523,7 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
|
||||
Population tmpPop = new Population(), newMainPop = new Population();
|
||||
Vector<Population> setOfSubswarms = new Vector<Population>();
|
||||
boolean reinitSuperfl = true;
|
||||
boolean TRACEMTHD = false;
|
||||
|
||||
// ... and use the corresponding particles to create the subswarms
|
||||
if (TRACEMTHD) {
|
||||
System.out.println("---------");
|
||||
}
|
||||
for (Set<String> connSet : connectedComps) {
|
||||
if (connSet.size() > 1) {// create niche
|
||||
Population pop = new Population(connSet.size());
|
||||
@ -540,16 +535,9 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
|
||||
}
|
||||
pop.add(indy);
|
||||
}
|
||||
if (TRACEMTHD) {
|
||||
System.out.print(" subswarm size ssize " + pop.size());
|
||||
}
|
||||
if (maxInitialSubSwarmSize > 0 && (pop.size() > maxInitialSubSwarmSize)) {
|
||||
if (TRACEMTHD) {
|
||||
System.out.print(" removing " + (pop.size() - maxInitialSubSwarmSize));
|
||||
}
|
||||
tmpPop = pop.getWorstNIndividuals(pop.size() - maxInitialSubSwarmSize, -1);
|
||||
tmpPop.synchSize();
|
||||
// Population testPop=(Population)pop.clone();
|
||||
pop.removeMembers(tmpPop, true);
|
||||
if (reinitSuperfl) {
|
||||
for (int i = 0; i < tmpPop.size(); i++) {
|
||||
@ -565,9 +553,6 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
|
||||
pop.synchSize();
|
||||
}
|
||||
setOfSubswarms.add(pop);
|
||||
if (TRACEMTHD) {
|
||||
System.out.print("\nNew subswarm of size: " + pop.size());
|
||||
}
|
||||
} else { // move particles corresponding to unconnected vertices to the mainswarm
|
||||
Iterator<String> it = connSet.iterator();
|
||||
Integer index = Integer.valueOf(it.next());
|
||||
@ -575,17 +560,10 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
|
||||
newMainPop.add(indy);
|
||||
}
|
||||
}
|
||||
// for (int i=0; i<setOfSubswarms.size(); i++) {
|
||||
// if (!getMainSwarm().getPopulation().assertMembers(setOfSubswarms.get(i))) {
|
||||
// System.err.println("Wrong subswarm " + i);
|
||||
// }
|
||||
// }
|
||||
if (TRACEMTHD) {
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
newMainPop.synchSize();
|
||||
for (int i = 0; i < setOfSubswarms.size(); i++) {
|
||||
setOfSubswarms.get(i).synchSize();
|
||||
for (Population setOfSubswarm : setOfSubswarms) {
|
||||
setOfSubswarm.synchSize();
|
||||
}
|
||||
useAsSubSwarms(setOfSubswarms);
|
||||
useAsMainSwarm(newMainPop);
|
||||
@ -599,7 +577,6 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
|
||||
*/
|
||||
@Override
|
||||
public void optimize() {
|
||||
// System.out.println(BeanInspector.toString(getMainSwarm()));
|
||||
// main swarm:
|
||||
if (getMainSwarm().getPopulation().size() == 0) {// || mainSwarm.getPopulation().size() == 1){
|
||||
if (isVerbose()) {
|
||||
@ -656,27 +633,24 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
|
||||
if (isPlot()) {
|
||||
doPlot();
|
||||
}
|
||||
// System.out.println();
|
||||
/** end plotting *******************************************************************************/
|
||||
|
||||
// reset flags etc for:
|
||||
// deactivation
|
||||
deactivationOccured = false;
|
||||
deactivatedSwarm = new Vector<ParticleSubSwarmOptimization>();
|
||||
//reinitedSwarm = new Vector<ParticleSubSwarmOptimization>();
|
||||
deactivatedSwarm = new Vector<>();
|
||||
// merging
|
||||
mergingOccurd = false;
|
||||
borg = new Vector<ParticleSubSwarmOptimization>();
|
||||
others = new Vector<ParticleSubSwarmOptimization>();
|
||||
borgbest = new Vector<AbstractEAIndividual>();
|
||||
othersbest = new Vector<AbstractEAIndividual>();
|
||||
borg = new Vector<>();
|
||||
others = new Vector<>();
|
||||
borgbest = new Vector<>();
|
||||
othersbest = new Vector<>();
|
||||
// absorbtion
|
||||
absorbtionOccurd = false;
|
||||
indytoabsorb = new Vector<AbstractEAIndividual>();
|
||||
indytoabsorb = new Vector<>();
|
||||
// subswarmcreation
|
||||
creationOccurd = false;
|
||||
indyconverged = new Vector<AbstractEAIndividual>();
|
||||
convergedneighbor = new Vector<AbstractEAIndividual>();
|
||||
indyconverged = new Vector<>();
|
||||
convergedneighbor = new Vector<>();
|
||||
//clearing - deprecated
|
||||
//reinitoccurd = false;
|
||||
|
||||
@ -751,21 +725,10 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
|
||||
currentsubswarm = (Population) getSubSwarms().get(i).getPopulation().clone();
|
||||
metapop.addPopulation(currentsubswarm);
|
||||
}
|
||||
for (int i = 0; i < inactiveSubSwarms.size(); ++i) { // in the case of ANPSO
|
||||
currentsubswarm = (Population) inactiveSubSwarms.get(i).getPopulation().clone();
|
||||
for (ParticleSubSwarmOptimization inactiveSubSwarm : inactiveSubSwarms) { // in the case of ANPSO
|
||||
currentsubswarm = (Population) inactiveSubSwarm.getPopulation().clone();
|
||||
metapop.addPopulation(currentsubswarm);
|
||||
}
|
||||
// add the best pbest particle to the population
|
||||
// if (metapop.size() != 0){
|
||||
// AbstractEAIndividual hero = (AbstractEAIndividual)metapop.getEAIndividual(0).getData("PersonalBestKey");
|
||||
// for (int i = 0; i < metapop.size(); ++i){
|
||||
// AbstractEAIndividual currentPBest = (AbstractEAIndividual)metapop.getEAIndividual(i).getData("PersonalBestKey");
|
||||
// if (currentPBest.isDominating(hero)){
|
||||
// hero = currentPBest;
|
||||
// }
|
||||
// }
|
||||
// metapop.add(hero);
|
||||
// }
|
||||
|
||||
// set correct number of generations
|
||||
metapop.setGeneration(getMainSwarm().getPopulation().getGeneration());
|
||||
@ -774,9 +737,7 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
|
||||
int calls = getMainSwarm().getPopulation().getFunctionCalls();
|
||||
for (int i = 0; i < getSubSwarms().size(); ++i) {
|
||||
ParticleSubSwarmOptimization subswarm = getSubSwarms().get(i);
|
||||
// if (subswarm.isActive()){
|
||||
calls += subswarm.getPopulation().getFunctionCalls();
|
||||
// }
|
||||
}
|
||||
// calls from inactivated subswarms were transfered to the mainswarm, see useAsSubSwarms method
|
||||
|
||||
@ -795,17 +756,13 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
|
||||
int mainSize = 0;
|
||||
//if (includeMainSwarm) mainSize = getMainSwarm().getPopulation().size();
|
||||
Population elitePop = new Population(getSubSwarms().size() + inactiveSubSwarms.size() + mainSize);
|
||||
// if (includeMainSwarm){
|
||||
// for (int i = 0; i < mainSize; ++i){
|
||||
// elite[i] = getMainSwarm().getPopulation().getEAIndividual(i);
|
||||
// }
|
||||
// }
|
||||
|
||||
for (int i = 0; i < getSubSwarms().size(); ++i) {
|
||||
AbstractEAIndividual bestSS = getSubSwarms().get(i).getBestIndividual();
|
||||
elitePop.addIndividual((AbstractEAIndividual) getSubSwarms().get(i).bestIndividual.clone());
|
||||
}
|
||||
for (int i = 0; i < inactiveSubSwarms.size(); ++i) {
|
||||
elitePop.addIndividual((AbstractEAIndividual) inactiveSubSwarms.get(i).bestIndividual.clone());
|
||||
for (ParticleSubSwarmOptimization inactiveSubSwarm : inactiveSubSwarms) {
|
||||
elitePop.addIndividual((AbstractEAIndividual) inactiveSubSwarm.bestIndividual.clone());
|
||||
}
|
||||
return elitePop;
|
||||
}
|
||||
@ -821,7 +778,6 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
|
||||
for (int i = 0; i < getSubSwarms().size() + inactiveSubSwarms.size(); ++i) {
|
||||
result += elite.getEAIndividual(i).getStringRepresentation() + "\n";
|
||||
}
|
||||
//result += "\n";
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -863,15 +819,8 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
|
||||
if (!currentsubswarm.isActive()) {
|
||||
plotCircleForIndy((AbstractEAIndividual) best, "[I]");
|
||||
} else {
|
||||
if (!getSubswarmOptimizerTemplate().isGcpso()) {
|
||||
//plotCircleForIndy((AbstractEAIndividual)best,getMaxStdDevFromSwarmAsString(currentsubswarm));
|
||||
}
|
||||
if (getSubswarmOptimizerTemplate().isGcpso()) {
|
||||
String rhoAsString = String.format("%6.3f", currentsubswarm.getRho());
|
||||
//plotCircleForIndy((AbstractEAIndividual)best,rhoAsString);
|
||||
if (currentsubswarm.gbestParticle != null) {
|
||||
//plotCircleForIndy((AbstractEAIndividual)currentsubswarm.gbestParticle,"gbest");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -921,12 +870,6 @@ public class ANPSO extends NichePSO implements InterfaceOptimizer, InterfaceAddi
|
||||
return "ANPSO-" + getMainSwarmSize();
|
||||
}
|
||||
|
||||
//
|
||||
// public double getMinimalR() {
|
||||
// return minimalR;
|
||||
// }
|
||||
|
||||
|
||||
public void SetMinimalR(double minimalR) {
|
||||
this.minimalR = minimalR;
|
||||
}
|
||||
|
@ -30,8 +30,6 @@ import java.util.BitSet;
|
||||
*/
|
||||
@Description("A basic implementation of a Binary ScatterSearch")
|
||||
public class BinaryScatterSearch implements InterfaceOptimizer, java.io.Serializable, InterfacePopulationChangedEventListener {
|
||||
|
||||
private static boolean TRACE = false;
|
||||
transient private InterfacePopulationChangedEventListener populationChangedEventListener = null;
|
||||
private String identifier = "BinaryScatterSearch";
|
||||
private int MaxImpIter = 5;
|
||||
@ -236,17 +234,9 @@ public class BinaryScatterSearch implements InterfaceOptimizer, java.io.Serializ
|
||||
int numToInit = this.poolSize - pop.size();
|
||||
if (numToInit > 0) {
|
||||
pop.addAll(generateG1((int) (numToInit * this.g1)));
|
||||
if (TRACE) {
|
||||
System.out.println("s1: " + pop.size());
|
||||
}
|
||||
|
||||
generateG2(pop, (int) (numToInit * this.g2));
|
||||
if (TRACE) {
|
||||
System.out.println("s2: " + pop.size());
|
||||
}
|
||||
generateG3(pop, poolSize - pop.size());
|
||||
if (TRACE) {
|
||||
System.out.println("s3: " + pop.size());
|
||||
}
|
||||
}
|
||||
return pop;
|
||||
}
|
||||
@ -272,8 +262,9 @@ public class BinaryScatterSearch implements InterfaceOptimizer, java.io.Serializ
|
||||
* 000...000, then 010101...01, 101010...10, 001001001...001,
|
||||
* 110110110...110 and so on
|
||||
*
|
||||
* @param pop the initial Population
|
||||
* @return the new Population
|
||||
* @param targetSize The size of the new Population
|
||||
* @param template The template individual to use
|
||||
* @return a new Population
|
||||
*/
|
||||
public static Population generateG1Pop(int targetSize, AbstractEAIndividual template) {
|
||||
boolean method1 = true;
|
||||
@ -716,8 +707,7 @@ public class BinaryScatterSearch implements InterfaceOptimizer, java.io.Serializ
|
||||
// generate a new Pool
|
||||
this.pool = new Population();
|
||||
ArrayList<Population> newSubsets = generateSubsets();
|
||||
for (int i = 0; i < newSubsets.size(); i++) {
|
||||
Population s = newSubsets.get(i);
|
||||
for (Population s : newSubsets) {
|
||||
AbstractEAIndividual x = combineSolution(s);
|
||||
if (!contains((InterfaceDataTypeBinary) x, this.pool) && this.pool.size() <= this.poolSize) {
|
||||
this.pool.add(x);
|
||||
|
@ -69,7 +69,6 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
private int populationSize = 50;
|
||||
private int convergedCnt = 0;
|
||||
private int collisions = 0;
|
||||
private static boolean TRACE = false, TRACE_STATE = false, TRACE_EVTS = false;
|
||||
private int showCycle = 0;
|
||||
transient private TopoPlot topologyPlot;
|
||||
private int haltingWindow = 15;
|
||||
@ -450,88 +449,43 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
return ret;
|
||||
} else {
|
||||
return (histComparator.compare(firstIndy, secIndy) > 0);
|
||||
// return (secIndy.isDominatingDebConstraints(firstIndy));
|
||||
}
|
||||
}
|
||||
|
||||
private Population optimizeSpecies(Population species, boolean minorPlot) {
|
||||
optimizer.setPopulation(species);
|
||||
// optimizer.initializeByPopulation(species, false);
|
||||
if (optimizer instanceof EvolutionStrategies) {
|
||||
EvolutionStrategies es = (EvolutionStrategies) optimizer;
|
||||
int mu = Math.max(1, (int) (muLambdaRatio * species.size()));
|
||||
if (mu >= species.size()) {
|
||||
if (TRACE) {
|
||||
System.err.println("warning, muLambdaRatio produced mu >= lambda.. reducing to mu=lambda-1");
|
||||
}
|
||||
mu = Math.max(1, species.size() - 1);
|
||||
}
|
||||
es.setMu(mu);
|
||||
es.setLambda(species.size());
|
||||
if (TRACE) {
|
||||
System.out.println("mu: " + es.getMu() + " / lambda: " + es.getLambda());
|
||||
}
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("Bef: spec size: " + species.size() + ", target size " + species.getTargetSize());
|
||||
System.out.println("Best bef: " + BeanInspector.toString(optimizer.getPopulation().getBestFitness()));
|
||||
}
|
||||
|
||||
if (BeanInspector.hasMethod(optimizer, "getLastModelPopulation", null) != null) {
|
||||
Object pc = BeanInspector.callIfAvailable(optimizer, "getLastTrainingPatterns", null);
|
||||
// System.out.println("MAPSO train set bef optSpec: " + BeanInspector.callIfAvailable(pc, "getStringRepresentation", null));
|
||||
}
|
||||
|
||||
this.optimizer.optimize();
|
||||
Population retPop = optimizer.getPopulation();
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println("Aft: spec size: " + retPop.size() + ", target size " + retPop.getTargetSize());
|
||||
System.out.println("Best aft: " + BeanInspector.toString(retPop.getBestFitness()));
|
||||
}
|
||||
if (retPop.size() != retPop.getTargetSize()) {
|
||||
if (TRACE) {
|
||||
System.out.println("correcting popsize after opt: " + retPop.getTargetSize() + " to " + retPop.size());
|
||||
}
|
||||
retPop.synchSize();
|
||||
}
|
||||
|
||||
// if (useDistraction) { // distraction step
|
||||
// if ((distraction != null) && (!distraction.isEmpty())) {
|
||||
// System.out.println("Distraction step!!!");
|
||||
// boolean distrHappened = false;
|
||||
// for (int i=0; i<retPop.size(); i++) {
|
||||
// distrHappened |= distraction.applyDistractionTo(retPop.getEAIndividual(i));
|
||||
// }
|
||||
// if (distrHappened) {
|
||||
//// Object distrList = species.getData("distraction");
|
||||
//// if (distr)
|
||||
//// species.addData("distr", value)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
return retPop;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void optimize() {
|
||||
Population reinitPop = null;
|
||||
if (TRACE_STATE) {
|
||||
printState("---- CBN Optimizing", doomedPopulation);
|
||||
// System.out.println("-Funcalls: "+undifferentiatedPopulation.getFunctionCalls());
|
||||
}
|
||||
if (doomedPopulation.size() > 0) {
|
||||
reinitPop = this.initializeIndividuals(doomedPopulation.size()); // do not add these to undifferentiated yet, that would mess up the evaluation count
|
||||
doomedPopulation.clear();
|
||||
// if (TRACE)
|
||||
// System.out.println("At " + undifferentiatedPopulation.getFunctionCalls() + " reinited " + reinitPop.size() + " indies... ");
|
||||
}
|
||||
int countIndies = (reinitPop != null ? reinitPop.size() : 0) + undifferentiatedPopulation.size();
|
||||
for (int i = 0; i < species.size(); i++) {
|
||||
countIndies += species.get(i).size();
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("NumIndies: " + countIndies);
|
||||
for (Population specy1 : species) {
|
||||
countIndies += specy1.size();
|
||||
}
|
||||
if (this.showCycle > 0) {
|
||||
if (undifferentiatedPopulation.getGeneration() <= 1) {
|
||||
@ -550,7 +504,6 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
// optimize D_0
|
||||
this.undifferentiatedPopulation.synchSize();
|
||||
if (undifferentiatedPopulation.size() > 0) {
|
||||
// this.capMutationRate(this.undifferentiatedPopulation, 0); // MK this sets mutation rate to 0! why? possibly to guarantee contraction of the species?
|
||||
undifferentiatedPopulation.putData(InterfaceSpeciesAware.populationTagKey, InterfaceSpeciesAware.explorerPopTag);
|
||||
undifferentiatedPopulation = optimizeSpecies(undifferentiatedPopulation, false);
|
||||
} else {
|
||||
@ -560,40 +513,17 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
Population curSpecies;
|
||||
// optimize the clustered species
|
||||
for (int i = this.species.size() - 1; i >= 0; i--) {
|
||||
if (TRACE) {
|
||||
System.out.println("-Deme " + i + " size: " + this.species.get(i).size());
|
||||
}
|
||||
curSpecies = this.species.get(i);
|
||||
curSpecies.setFunctionCalls(0);
|
||||
curSpecies.synchSize();
|
||||
// if (isActive(curSpecies)) { // Lets have only active species...
|
||||
if ((haltingWindow > 0) && (this.testSpeciesForConvergence(curSpecies))) {
|
||||
///////////////////////////////////////////// Halting Window /////////////////////////////////////////////////
|
||||
// if (this.debug) {
|
||||
// System.out.println("Undiff.Size: " + this.undifferentiatedPopulation.size() +"/"+this.undifferentiatedPopulation.getPopulationSize());
|
||||
// System.out.println("Diff.Size : " + ((Population)this.species.get(i)).size() +"/"+((Population)this.species.get(i)).getPopulationSize());
|
||||
// }
|
||||
convergedCnt++;
|
||||
if (TRACE_EVTS) {
|
||||
System.out.println("!!!! Converged Spec!");
|
||||
}
|
||||
if (TRACE) {
|
||||
testSpeciesForConvergence(curSpecies);
|
||||
System.out.print("--Converged: " + convergedCnt + " - " + testSpeciesForConvergence(curSpecies));
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println(curSpecies.getBestEAIndividual());
|
||||
}
|
||||
|
||||
// memorize the best one....
|
||||
// AbstractEAIndividual best = (AbstractEAIndividual)curSpecies.getBestEAIndividual().getClone();
|
||||
AbstractEAIndividual best = curSpecies.getBestHistoric(); // usually we want the best alltogether
|
||||
if (best == null) {
|
||||
best = (AbstractEAIndividual) curSpecies.getBestEAIndividual().getClone();
|
||||
}
|
||||
int toReinit = 0;
|
||||
populationArchive.add(best);
|
||||
// System.out.println((""+ population.getFunctionCalls() + " " + (BeanInspector.toString(best.getDoublePosition())).replaceAll(";|\\[|\\]", "")));
|
||||
species.remove(i); // remove the converged Species
|
||||
toReinit = curSpecies.size();
|
||||
// those will not be optimized anymore, so we dont need to doom them, but can directly add them to undiff!
|
||||
@ -609,17 +539,13 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
// }
|
||||
// This is necessary to keep track of the function calls needed
|
||||
undifferentiatedPopulation.incrFunctionCallsBy(curSpecies.getFunctionCalls());
|
||||
if (TRACE) {
|
||||
System.out.println("### funcalls: " + undifferentiatedPopulation.getFunctionCalls());
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////
|
||||
synchronized (population) { // fill the population instance with the current individuals from undiff, spec, etc.
|
||||
this.population = (Population) this.undifferentiatedPopulation.clone();
|
||||
population.setUseHistory(true);
|
||||
for (int i = 0; i < this.species.size(); i++) {
|
||||
this.population.addPopulation(this.species.get(i));
|
||||
for (Population specy : this.species) {
|
||||
this.population.addPopulation(specy);
|
||||
}
|
||||
if (doomedPopulation.size() > 0) {
|
||||
population.addPopulation(reinitPop);
|
||||
@ -627,34 +553,15 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
population.synchSize();
|
||||
}
|
||||
|
||||
//////////////////////
|
||||
if ((this.undifferentiatedPopulation.getFunctionCalls() + (reinitPop == null ? 0 : (reinitPop.size()))) % this.populationSize != 0) {
|
||||
if (TRACE) {
|
||||
System.out.println("### mismatching number of funcalls, inactive species?");
|
||||
}// Correcting by " + (populationSize - (undifferentiatedPopulation.getFunctionCalls() % populationSize)));
|
||||
// if (TRACE) System.out.println("### undiff " + ((isActive(undifferentiatedPopulation)) ? "active!" : "inactive!"));
|
||||
// undifferentiatedPopulation.incrFunctionCallsBy(populationSize - (undifferentiatedPopulation.getFunctionCalls() % populationSize));
|
||||
} //else if (TRACE) System.out.println("### undiff active: " + isActive(undifferentiatedPopulation));
|
||||
|
||||
// possible species differentiation and convergence
|
||||
if (this.undifferentiatedPopulation.getGeneration() % this.speciesCycle == 0) {
|
||||
if (TRACE) {
|
||||
System.out.println("Species cycle:");
|
||||
}
|
||||
initClustering();
|
||||
|
||||
if (this.useSpeciesDifferentiation) {
|
||||
///////////////////////////// species differentiation phase
|
||||
if (TRACE) {
|
||||
printState("---Species Differentation", reinitPop);
|
||||
}
|
||||
Population[] clusters;
|
||||
ArrayList<Population> newSpecies = new ArrayList<Population>();
|
||||
//cluster the undifferentiated population
|
||||
clusters = this.caForSpeciesDifferentation.cluster(this.undifferentiatedPopulation, population);
|
||||
if (TRACE) {
|
||||
System.out.println("clustered undiff to " + clusters.length);
|
||||
}
|
||||
for (int j = 1; j < clusters.length; j++) { // loop new clusters
|
||||
splitFromFirst(undifferentiatedPopulation, clusters[j], false);
|
||||
newSpecies.add(clusters[j]);
|
||||
@ -662,12 +569,8 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
replaceUndifferentiated(clusters[0]);
|
||||
for (int i = 0; i < this.species.size(); i++) { // loop old species
|
||||
curSpecies = this.species.get(i);
|
||||
// if (curSpecies.size()>minGroupSize) { // only active populations are clustered
|
||||
// check if a species has differentiated any further
|
||||
clusters = this.caForSpeciesDifferentation.cluster(curSpecies, population);
|
||||
if (TRACE) {
|
||||
System.out.println("clustered " + i + " to " + clusters.length);
|
||||
}
|
||||
if (clusters[0].size() > 0) {
|
||||
mergeToFirst(undifferentiatedPopulation, clusters[0], false);
|
||||
}
|
||||
@ -683,17 +586,8 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
newSpecies.add(clusters[j]);
|
||||
|
||||
}
|
||||
// } else {
|
||||
// // small populations are kept directly
|
||||
// newSpecies.add(curSpecies);
|
||||
// }
|
||||
}
|
||||
this.species = newSpecies;
|
||||
if (TRACE) {
|
||||
printState("---After differentiation", reinitPop);
|
||||
}
|
||||
|
||||
//if (this.show) this.plot();
|
||||
} // end of species differentiation
|
||||
|
||||
// plot the populations
|
||||
@ -704,17 +598,10 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
}
|
||||
|
||||
if (this.mergeSpecies && (species.size() > 0)) {
|
||||
///////////////////////////// species merging phase
|
||||
if (TRACE) {
|
||||
System.out.println("-Species merge:");
|
||||
}
|
||||
// first test if loners belong to any species
|
||||
int[] assocSpec = caForSpeciesMerging.associateLoners(undifferentiatedPopulation, species.toArray(new Population[species.size()]), population);
|
||||
for (int i = undifferentiatedPopulation.size() - 1; i >= 0; i--) { // backwards or die!
|
||||
if (assocSpec[i] >= 0) {
|
||||
if (TRACE_EVTS) {
|
||||
System.out.println("!!! Loner merge to " + i);
|
||||
}
|
||||
// loner i should be merged to species assocSpec[i]
|
||||
AbstractEAIndividual tmpIndy = (AbstractEAIndividual) this.undifferentiatedPopulation.get(i);
|
||||
if (topologyPlot != null) {
|
||||
@ -724,9 +611,6 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
species.get(assocSpec[i]).add(tmpIndy); // TODO merge information from loners?
|
||||
}
|
||||
}
|
||||
if (TRACE) {
|
||||
printState("---After loner-merges", reinitPop);
|
||||
}
|
||||
Population spec1, spec2;
|
||||
// test if species are close to already archived solutions - deactivate them if so
|
||||
assocSpec = caForSpeciesMerging.associateLoners(populationArchive, species.toArray(new Population[species.size()]), population);
|
||||
@ -740,16 +624,6 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
// the species has not yet been deactivated
|
||||
specToRemove.add(assocSpec[i]);
|
||||
collisions++;
|
||||
if (TRACE) {
|
||||
System.out.println("Inactive merge - resetting " + spec1.size() + " surplus indies");
|
||||
}
|
||||
if (spec1.getBestEAIndividual().isDominating(aIndy)) {
|
||||
// update the archived one with the better one? No rather not - it may happen that a large species is assoctiated which is quite large and spans over several optima - in that case an earlier found may get lost
|
||||
// populationArchive.set(i, spec1.getBestEAIndividual());
|
||||
}
|
||||
if (TRACE_EVTS) {
|
||||
System.out.println("!!! Reinit Spec " + assocSpec[i] + ", fit " + spec1.getBestEAIndividual());
|
||||
}
|
||||
doomedPopulation.addPopulation(spec1);
|
||||
}
|
||||
}
|
||||
@ -760,15 +634,9 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
if (specIndex > lastRemoved) {
|
||||
System.err.println("Stupid queue!!!");
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("Removing species at index " + specIndex);
|
||||
}
|
||||
species.remove(specIndex); // warning, dont try to remove Integer object but index i!
|
||||
lastRemoved = specIndex;
|
||||
}
|
||||
if (TRACE) {
|
||||
printState("---After archive-merges", reinitPop);
|
||||
}
|
||||
// Now test if species should be merged among each other
|
||||
for (int i1 = 0; i1 < this.species.size(); i1++) {
|
||||
spec1 = this.species.get(i1);
|
||||
@ -776,39 +644,24 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
spec2 = this.species.get(i2);
|
||||
if (this.caForSpeciesMerging.mergingSpecies(spec1, spec2, population)) {
|
||||
|
||||
if (TRACE_EVTS || TRACE) {
|
||||
System.out.println("!!! -Merging species (" + i1 + ", " + i2 + ") [" + spec1.size() + "/" + spec2.size() + "]");
|
||||
}
|
||||
mergeToFirst(spec1, spec2, true);
|
||||
this.species.remove(i2);
|
||||
i2--;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (TRACE) {
|
||||
printState("---After merging", reinitPop);
|
||||
}
|
||||
} /// end of species merging
|
||||
|
||||
if (maxSpeciesSize >= minGroupSize) {
|
||||
// reinit worst n individuals from all species which are too large
|
||||
for (int i = 0; i < species.size(); i++) {
|
||||
Population curSpec = species.get(i);
|
||||
for (Population curSpec : species) {
|
||||
if (curSpec.size() > maxSpeciesSize) {
|
||||
if (TRACE_EVTS) {
|
||||
System.out.println("!!! Reinit indies " + (maxSpeciesSize - curSpec.size()));
|
||||
}
|
||||
ArrayList<AbstractEAIndividual> sorted = curSpec.getSorted(reduceSizeComparator);
|
||||
for (int k = maxSpeciesSize; k < sorted.size(); k++) {
|
||||
if (curSpec.remove(sorted.get(k))) {
|
||||
doomedPopulation.add(sorted.get(k));
|
||||
}
|
||||
}
|
||||
// reinitCount = sorted.size()-maxSpeciesSize;
|
||||
// curSpec.setPopulationSize(maxSpeciesSize);
|
||||
// if (TRACE) System.out.println("Reduced spec " + i + " to size " + curSpec.size() + ", reinit of " + reinitCount + " indies immanent...");
|
||||
// this.undifferentiatedPopulation.addPopulation(this.initializeIndividuals(reinitCount));
|
||||
// this.undifferentiatedPopulation.setPopulationSize(this.undifferentiatedPopulation.getPopulationSize()+reinitCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -821,40 +674,21 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
}
|
||||
undifferentiatedPopulation.setTargetSize(undifferentiatedPopulation.size());
|
||||
// output the result
|
||||
if (TRACE) {
|
||||
System.out.println("-Funcalls: " + this.undifferentiatedPopulation.getFunctionCalls());
|
||||
}
|
||||
|
||||
synchronized (population) { // fill the population instance with the current individuals from undiff, spec, etc.
|
||||
this.population = (Population) this.undifferentiatedPopulation.clone();
|
||||
population.setUseHistory(true);
|
||||
for (int i = 0; i < this.species.size(); i++) {
|
||||
this.population.addPopulation(this.species.get(i));
|
||||
for (Population specy : this.species) {
|
||||
this.population.addPopulation(specy);
|
||||
}
|
||||
if (doomedPopulation.size() > 0) {
|
||||
population.addPopulation(doomedPopulation);
|
||||
} // this is just so that the numbers match up...
|
||||
population.synchSize();
|
||||
if (TRACE) {
|
||||
System.out.println("Doomed size: " + doomedPopulation.size());
|
||||
System.out.println("Population size: " + this.population.size());
|
||||
}
|
||||
if (population.size() != populationSize) {
|
||||
System.err.println("Warning: Invalid population size in CBNEA! " + population.size());
|
||||
}
|
||||
if (TRACE_STATE) {
|
||||
printState("---- EoCBN", doomedPopulation);
|
||||
System.out.println("Archive: " + populationArchive.getStringRepresentation());
|
||||
}
|
||||
}
|
||||
// if (TRACE) {
|
||||
// // this is just a test adding all species centers as distractors with high strength
|
||||
// Distraction distr = new Distraction(5., 0, species);
|
||||
// if (!distr.isEmpty()) {
|
||||
// double[] distVect = distr.calcDistractionFor(undifferentiatedPopulation.getBestEAIndividual());
|
||||
// System.out.println("species distract best towards " + BeanInspector.toString(distVect));
|
||||
// }
|
||||
// }
|
||||
|
||||
this.firePropertyChangedEvent(Population.NEXT_GENERATION_PERFORMED);
|
||||
}
|
||||
@ -866,9 +700,6 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
if (getClusterDiffDist() > 0) { // assume that it should be set
|
||||
if (this.caForSpeciesDifferentation instanceof InterfaceClusteringDistanceParam) {
|
||||
((InterfaceClusteringDistanceParam) caForSpeciesDifferentation).setClustDistParam(getClusterDiffDist());
|
||||
if (TRACE) {
|
||||
System.out.println("### Clustering distance parameter set to " + getClusterDiffDist());
|
||||
}
|
||||
} else {
|
||||
EVAERROR.errorMsgOnce("Warning: cluster distance is defined in CBN but the clustering method " + caForSpeciesDifferentation.getClass() + " cant interpret it!");
|
||||
}
|
||||
@ -876,49 +707,16 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
this.caForSpeciesDifferentation.initClustering(population);
|
||||
}
|
||||
|
||||
//
|
||||
// /**
|
||||
// * Unite all current species and the undiff. pop and return
|
||||
// * the merged set. Note that data such as generation, evaluations etc
|
||||
// * are not copied!
|
||||
// *
|
||||
// * @return
|
||||
// */
|
||||
// private Population getCurrentPop() {
|
||||
// Population pop = new Population(getPopulationSize());
|
||||
// pop.addPopulation(undifferentiatedPopulation);
|
||||
// for (int i=0; i<species.size(); i++) pop.addPopulation(species.get(i));
|
||||
// pop.synchSize();
|
||||
// return pop;
|
||||
// }
|
||||
|
||||
/**
|
||||
* Replace the undifferentiated population with the given one.
|
||||
*
|
||||
* @param pop
|
||||
*/
|
||||
private void replaceUndifferentiated(Population pop) {
|
||||
// System.out.println("Adding " + pop.size() + " as undiff.");
|
||||
undifferentiatedPopulation.clear();
|
||||
undifferentiatedPopulation.addPopulation(pop);
|
||||
}
|
||||
|
||||
private void printState(String headline, Population reinit) {
|
||||
System.out.print(headline + ", Gen. " + this.undifferentiatedPopulation.getGeneration());
|
||||
System.out.print(" - Undiff.: " + specTag(undifferentiatedPopulation));
|
||||
System.out.print(", Demes: ");
|
||||
int sum = undifferentiatedPopulation.size() + (reinit == null ? 0 : reinit.size());
|
||||
if (species.size() > 0) {
|
||||
sum += species.get(0).size();
|
||||
System.out.print(specTag(species.get(0)));
|
||||
for (int i = 1; i < species.size(); i++) {
|
||||
System.out.print(", " + specTag(species.get(i)));
|
||||
sum += species.get(i).size();
|
||||
}
|
||||
}
|
||||
System.out.println(", reinit: " + (reinit == null ? 0 : reinit.size()) + ", sum: " + sum);
|
||||
}
|
||||
|
||||
private String specTag(Population spec) {
|
||||
return spec.size() + "(" + spec.getGeneration() + ((spec.hasData("MAPSOModelInformation")) ? "/" + (BeanInspector.callIfAvailable(spec.getData("MAPSOModelInformation"), "getStringRepresentation", null)) : "") + ")";
|
||||
}
|
||||
@ -927,11 +725,11 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis
|
||||
* Merge two species by adding the second to the first. Keep the longer
|
||||
* history. The second species should be deactivated after merging.
|
||||
*
|
||||
* @param pop1
|
||||
* @param pop2
|
||||
* @param spec1
|
||||
* @param spec2
|
||||
* @param plot
|
||||
*/
|
||||
protected void mergeToFirst(Population spec1, Population spec2, boolean plot) {
|
||||
// System.out.println("Merging " + spec2.size() + " to " + spec1.size());
|
||||
if (plot && (topologyPlot != null)) {
|
||||
plotLine(topologyPlot, spec1.getBestEAIndividual(), spec2.getBestEAIndividual());
|
||||
}
|
||||
|
@ -40,7 +40,6 @@ public class ClusteringHillClimbing implements InterfacePopulationChangedEventLi
|
||||
InterfaceOptimizer, Serializable, InterfaceAdditionalPopulationInformer {
|
||||
|
||||
transient private InterfacePopulationChangedEventListener populationChangedEventListener;
|
||||
public static final boolean TRACE = false;
|
||||
transient private String identifier = "";
|
||||
private Population population = new Population();
|
||||
private transient Population archive = new Population();
|
||||
@ -48,7 +47,6 @@ public class ClusteringHillClimbing implements InterfacePopulationChangedEventLi
|
||||
private int hcEvalCycle = 1000;
|
||||
private int initialPopSize = 100;
|
||||
private int loopCnt = 0;
|
||||
// private int baseEvalCnt = 0;
|
||||
private int notifyGuiEvery = 50;
|
||||
private double sigmaClust = 0.01;
|
||||
private double minImprovement = 0.000001;
|
||||
@ -198,9 +196,6 @@ public class ClusteringHillClimbing implements InterfacePopulationChangedEventLi
|
||||
evalsNow = hcEvalCycle;
|
||||
}
|
||||
do {
|
||||
if (TRACE) {
|
||||
System.out.println("evalCycle: " + hcEvalCycle + ", evals now: " + evalsNow);
|
||||
}
|
||||
popD = PostProcess.clusterLocalSearch(localSearchMethod, population, (AbstractOptimizationProblem) optimizationProblem, sigmaClust, evalsNow, 0.5, mutator);
|
||||
// (population, (AbstractOptimizationProblem)problem, sigmaClust, hcEvalCycle - (population.getFunctionCalls() % hcEvalCycle), 0.5);
|
||||
if (popD.head().getFunctionCalls() == funCallsBefore) {
|
||||
@ -210,21 +205,12 @@ public class ClusteringHillClimbing implements InterfacePopulationChangedEventLi
|
||||
} while (popD.head().getFunctionCalls() == funCallsBefore);
|
||||
improvement = popD.tail();
|
||||
population = popD.head();
|
||||
if (TRACE) {
|
||||
System.out.println("num inds after clusterLS: " + population.size());
|
||||
}
|
||||
|
||||
popD.head().setGeneration(population.getGeneration() + 1);
|
||||
|
||||
if (doReinitialization && (improvement < minImprovement)) {
|
||||
if (TRACE) {
|
||||
System.out.println("improvement below " + minImprovement);
|
||||
}
|
||||
if ((localSearchMethod != PostProcessMethod.hillClimber) || (mutator.getSigma() < stepSizeThreshold)) { // reinit!
|
||||
// is performed for nm and cma, and if hc has too low sigma
|
||||
if (TRACE) {
|
||||
System.out.println("REINIT!!");
|
||||
}
|
||||
|
||||
if (localSearchMethod == PostProcessMethod.hillClimber) {
|
||||
mutator.setSigma(initialStepSize);
|
||||
@ -252,12 +238,8 @@ public class ClusteringHillClimbing implements InterfacePopulationChangedEventLi
|
||||
System.err.println("Invalid case in ClusteringHillClimbing!");
|
||||
}
|
||||
mutator.setSigma(mutator.getSigma() * reduceFactor);
|
||||
if (TRACE) {
|
||||
System.out.println("mutation stepsize reduced to " + mutator.getSigma());
|
||||
}
|
||||
}
|
||||
}
|
||||
// System.out.println("funcalls: " + evalCnt);
|
||||
this.firePropertyChangedEvent(Population.NEXT_GENERATION_PERFORMED);
|
||||
|
||||
}
|
||||
@ -266,17 +248,10 @@ public class ClusteringHillClimbing implements InterfacePopulationChangedEventLi
|
||||
public void registerPopulationStateChanged(Object source, String name) {
|
||||
// The events of the interim hill climbing population will be caught here
|
||||
if (name.compareTo(Population.FUN_CALL_INTERVAL_REACHED) == 0) {
|
||||
// if ((((Population)source).size() % 50) > 0) {
|
||||
// System.out.println("bla");
|
||||
// }
|
||||
// set funcalls to real value
|
||||
population.setFunctionCalls(((Population) source).getFunctionCalls());
|
||||
// System.out.println("FunCallIntervalReached at " + (((Population)source).getFunctionCalls()));
|
||||
this.firePropertyChangedEvent(Population.NEXT_GENERATION_PERFORMED);
|
||||
}
|
||||
// do not react to NextGenerationPerformed
|
||||
//else System.err.println("ERROR, event was " + name);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -91,7 +91,6 @@ import java.util.Formatter;
|
||||
+ "in parallel, which are reclustered in each iteration based on the dynamic peak set.")
|
||||
public class EsDpiNiching implements InterfaceOptimizer, Serializable, InterfaceAdditionalPopulationInformer, InterfacePopulationChangedEventListener {
|
||||
|
||||
private static final boolean TRACE = false, TRACE_DEMES = false;
|
||||
private double nicheRadius = 0.3;
|
||||
private int expectedPeaks = 5;
|
||||
private int explorerPeaks = 0;
|
||||
@ -250,7 +249,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
population.incrFunctionCallsBy(peakOpts[i].getPopulation().getFunctionCalls());
|
||||
}
|
||||
// possibly reduce immigrants to produce a conforming number of initial evaluations (same number as in later iterations: numPeaks*muLambda+immigrants)
|
||||
// int initialImmigrants = (fullNumPeaks()*lambdaPerPeak+getNumRndImmigrants())-(fullNumPeaks()*muPerPeak+getNumRndImmigrants());
|
||||
if (getNumRndImmigrants() > 0) {
|
||||
generateEvalImmigrants(getNumRndImmigrants());
|
||||
}
|
||||
@ -319,7 +317,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
}
|
||||
r = 0.5 * Math.sqrt(dim);
|
||||
}
|
||||
// setNicheRadius(r*Math.pow(numExpectedPeaks, -1./(double)dim));
|
||||
return r * Math.pow(numExpectedOptima, -1. / (double) dim);
|
||||
}
|
||||
|
||||
@ -347,8 +344,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
}
|
||||
|
||||
private int increaseExpectedPeaksCriterion() {
|
||||
// if ((getPopulation().getGeneration() % 5) == 0) return 1;
|
||||
// else return 0;
|
||||
if (isDoNumPeakAdaption() && (archive.size() >= getExpectedPeaks())) {
|
||||
return (int) Math.max(((double) getExpectedPeaks()) * 1.2, 2.);
|
||||
} else {
|
||||
@ -374,9 +369,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
if (increaseExpectedPeaksCriterion() > 0) {
|
||||
addExpectedPeaks(increaseExpectedPeaksCriterion());
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("--- FULL POP SIZE: " + population.size() + " , funcalls: " + population.getFunctionCalls() + ", gen " + population.getGeneration());
|
||||
}
|
||||
ClusteringDynPeakIdent dpiClustering = new ClusteringDynPeakIdent(getExpectedPeaks(), getLambdaPerPeak(), nicheRadius, true, metric);
|
||||
// perform dynamic peak identification resulting in the dynamic peak set dps
|
||||
dpiClustering.initClustering(population);
|
||||
@ -386,20 +378,12 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
peakPopSet[i].removePopulationChangedEventListener(this);
|
||||
}
|
||||
setGeneration(population.getGeneration(), peakPopSet);
|
||||
if (TRACE_DEMES) {
|
||||
printDemes("After clustering: ", peakPopSet);
|
||||
}
|
||||
|
||||
int curNumPeaks = peakPopSet.length - 1;
|
||||
|
||||
// boolean copyHashFromParents=true;
|
||||
// transfer population hash data along the peaks -> for each peak chose the original last population
|
||||
// and transfer the data to the new cluster
|
||||
// if (copyHashFromParents) {
|
||||
copyDataFromParents(peakPopSet);
|
||||
// } else {
|
||||
// copyDataFromClosest(clusteredPeakPops);
|
||||
// }
|
||||
|
||||
int reqNewPeaks = 0;
|
||||
if (curNumPeaks < getExpectedPeaks()) {
|
||||
@ -427,10 +411,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
// add missing and explorer peaks as new random individuals (or old unclustered ones)
|
||||
peakPopSet = generateMissingSpecies(peakPopSet, getMuPerPeak(), reqNewPeaks, false);
|
||||
|
||||
if (TRACE_DEMES) {
|
||||
printDemes("After expansion: ", peakPopSet);
|
||||
}
|
||||
|
||||
if (archive != null && (archive.size() > 0) && isReinitOnCollision()) {
|
||||
double origNicheRad = dpiClustering.getNicheRadius();
|
||||
dpiClustering.setNicheRadius(collisionDetNicheRadius);
|
||||
@ -443,28 +423,12 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
// the new found species is actually better than the archived solution
|
||||
archive.set(i, peakPopSet[assoc[i]].getBestEAIndividual().clone()); // replace archived indy
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println(" Converged on archived solution.. resetting peak pop " + assoc[i]);
|
||||
}
|
||||
peakPopSet[assoc[i]] = initRandomPeakPop(getMuPerPeak());
|
||||
}
|
||||
}
|
||||
dpiClustering.setNicheRadius(origNicheRad);
|
||||
if (TRACE_DEMES) {
|
||||
printDemes("After archivie-merge: ", peakPopSet);
|
||||
}
|
||||
}
|
||||
|
||||
if (TRACE) {
|
||||
for (int k = 0; k < peakPopSet.length - 1; k++) {
|
||||
for (int j = k + 1; j < peakPopSet.length; j++) {
|
||||
Population cut = peakPopSet[k].setCut(peakPopSet[j]);
|
||||
if (cut.size() > 0) {
|
||||
System.err.println("duplicate inherited in EsDpiNiching! OK if explorer peaks exist that are not always reinited and " + j + ">" + getExpectedPeaks() + " and " + k + "==0.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
plot = null;
|
||||
// now generate the lambda offsprings
|
||||
// nextGeneration = this.generateEvalChildren(dps); // create lambda new ones from mu parents
|
||||
@ -475,9 +439,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
if (curSpecies.size() == 1 && (!isAllowSingularPeakPops())) {
|
||||
// Quoting SB05: "In case that the niche only contains one individual, the second parent will be the best indidivual of another niche."
|
||||
AbstractEAIndividual bestOther = (AbstractEAIndividual) selectBestFromOtherSpecies(clustIndex, peakPopSet).clone();
|
||||
if (TRACE) {
|
||||
System.out.println("Adding best from other species: " + bestOther);
|
||||
}
|
||||
curSpecies.add(bestOther);
|
||||
} else if (curSpecies.size() == 0) {
|
||||
System.err.println("Warning, empty niche population in EsDpiNiching!");
|
||||
@ -497,19 +458,10 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
if (doDraw(population.getGeneration())) {
|
||||
drawPeakPop("" + clustIndex, curSpecies);
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("Optimizing cluster index " + (clustIndex) + ", size " + curSpecies.size());
|
||||
}
|
||||
peakOpts[clustIndex - 1].optimize(); // !!!!!!!! Actual optimization step
|
||||
optimizedSpecies = peakOpts[clustIndex - 1].getPopulation();
|
||||
optimizedSpecies.putData(origPeakIndyKey, curPeak);
|
||||
population.incrFunctionCallsBy(optimizedSpecies.size());
|
||||
// optimizedSpecies.incrGeneration(); // is already done in the .optimize() call above
|
||||
// optimizedSpecies.incrFunctionCallsBy(optimizedSpecies.size());
|
||||
if (TRACE) {
|
||||
System.out.println(" ..." + optimizedSpecies.size() + " more funcalls... ");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// we may have a problem if, by chance, all species have been deactivated simultaneously AND there are no unclustered !
|
||||
@ -518,21 +470,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
peakOpts[0].getPopulation().addPopulation(initRandomPeakPop(getMuPerPeak()));
|
||||
}
|
||||
|
||||
if (TRACE) {
|
||||
for (int k = 0; k < peakPopSet.length - 1; k++) {
|
||||
for (int j = k + 1; j < peakPopSet.length; j++) {
|
||||
Population cut = peakPopSet[k].setCut(peakPopSet[j]);
|
||||
if (cut.size() > 1) {
|
||||
// one may happen after a cluster had a size of one, since then another leader is added
|
||||
if (cut.size() == 2 && (peakPopSet[k].size() == 2) && (peakPopSet[j].size() == 2)) {
|
||||
// two may happen since they can be added reciprocally to each other
|
||||
} else {
|
||||
System.err.println("duplicate indy in EsDpiNiching. OK if explorer peaks exist that are not always reinited and " + j + ">" + getExpectedPeaks() + " and " + k + "==0.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (doEtaPreselection) { // this basically replaces ES-environment selection
|
||||
// select the eta best from the offspring per peak population
|
||||
// fill up to muPerPeak by adding from the old peak population
|
||||
@ -545,9 +482,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
System.err.println("Warning: fewer clusters than expected peaks in EsDpiNiching!");
|
||||
offspring.clear(); // empty set to avoid duplicates!
|
||||
} else {
|
||||
if (TRACE) {
|
||||
System.out.println("EtaPresel: from " + offspring.size() + " offspring selecting " + eta);
|
||||
}
|
||||
Population selected = selBest.selectFrom(offspring, eta);
|
||||
if (!selected.isSubSet(offspring)) {
|
||||
System.err.println("fatal problem in EsDpiNiching!!!");
|
||||
@ -558,33 +492,16 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
int delta = muPerPeak - eta;
|
||||
if (delta > 0) {
|
||||
Population filterPeakPop = peakPopSet[i + 1].filter(selected);
|
||||
if (TRACE) {
|
||||
System.out.println("Adding " + Math.min(delta, filterPeakPop.size()) + " from peak population.");
|
||||
}
|
||||
// (few) duplicates may happen because parents are copied to another peak population
|
||||
// if a cluster had a size of 1 AND parents may survive due to elitism.
|
||||
selected.addPopulation(selBest.selectFrom(filterPeakPop, Math.min(delta, filterPeakPop.size())), false);
|
||||
if (selected.size() < muPerPeak && (addLonersToPeaks)) {
|
||||
delta = Math.min(muPerPeak - selected.size(), loners.size());
|
||||
if (TRACE) {
|
||||
System.out.println("filling up with lucky loners: " + delta);
|
||||
}
|
||||
// fill up with loner indies
|
||||
SelectRandom selRnd = new SelectRandom(false); // no duplicates wanted!
|
||||
Population luckyLosers = selRnd.selectFrom(loners, delta);
|
||||
selected.addPopulation(luckyLosers, true);
|
||||
loners.removeMembers(luckyLosers, true);
|
||||
// fill up with random indies
|
||||
// Population randomNewIndies = new Population(lambdaPerPeak - selected.size());
|
||||
// problem.initializePopulation(randomNewIndies); // function calls??
|
||||
// selected.addAll(randomNewIndies);
|
||||
}
|
||||
}
|
||||
if (TRACE) {
|
||||
for (int k = 0; k < i; k++) {
|
||||
if (selected.setCut(peakOpts[k].getPopulation()).size() > 2) { //one may happen after a cluster had size one (see above)
|
||||
System.err.println("Warning, nonempty set cut between " + k + " and " + i + " !");
|
||||
}
|
||||
}
|
||||
}
|
||||
peakOpts[i].population.clear();
|
||||
@ -595,7 +512,7 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
}
|
||||
}
|
||||
}
|
||||
// System.out.println("Best of second peak: " + clusteredPeakPops[2].getBestEAIndividual());
|
||||
|
||||
if (doDraw(population.getGeneration()) && archive != null) {
|
||||
for (int i = 0; i < this.archive.size(); i++) {
|
||||
ClusterBasedNichingEA.plotIndy(plot, 'x', (InterfaceDataTypeDouble) archive.get(i));
|
||||
@ -605,7 +522,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
generateEvalImmigrants(getNumRndImmigrants());
|
||||
}
|
||||
collectPopulationIncGen(population, peakOpts, randomNewIndies);
|
||||
//this.firePropertyChangedEvent(Population.NEXT_GENERATION_PERFORMED); // moved this to registerPopulationStateChanged which is called from the population
|
||||
}
|
||||
|
||||
private Population deactivateSpecies(int clustIndex, boolean resetRandomly) {
|
||||
@ -634,7 +550,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
Population origPop = peakOpts[origEsPop].getPopulation();
|
||||
clusteredPeakPops[i].copyHashData(origPop);
|
||||
clusteredPeakPops[i].SetHistory(origPop.getHistory()); // copy the history for deactivation!
|
||||
// System.out.println("Copied hash for peak " + clusteredPeakPops[i].getBestEAIndividual() + ", cluster " + i + " from " + origEsPop);
|
||||
} else { // ok in the first iteration of if the indy was a random immigrant
|
||||
if (population.getGeneration() > 1 && (getNumRndImmigrants() == 0)) {
|
||||
System.err.println("Error, empty original es pop ID!");
|
||||
@ -643,30 +558,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
}
|
||||
}
|
||||
|
||||
// /**
|
||||
// * For each new cluster copy the additional data from the closest parent population.
|
||||
// *
|
||||
// * @param clusteredPeakPops
|
||||
// */
|
||||
// private void copyDataFromClosest(Population[] clusteredPeakPops) {
|
||||
// Population centers = new Population(clusteredPeakPops.length);
|
||||
// AbstractEAIndividual indy;
|
||||
// // collect leaders
|
||||
// for (int i=0; i<peakOpts.length; i++) {
|
||||
// Population peakPop = peakOpts[i].getPopulation();
|
||||
// indy = (AbstractEAIndividual) peakPop.getData(origPeakIndyKey);
|
||||
// if (indy!=null) centers.add(indy);
|
||||
// else centers.add(peakOpts[i].getPopulation().getCenterIndy());
|
||||
// }
|
||||
// for (int i=1; i<clusteredPeakPops.length; i++) {
|
||||
// indy = clusteredPeakPops[i].getBestEAIndividual();
|
||||
// Pair<Integer,Double> closestIdDist = Population.getClosestFarthestIndy(clusteredPeakPops[i].getBestEAIndividual(), centers, metric, true);
|
||||
// Population closestPop = peakOpts[closestIdDist.head()].getPopulation();
|
||||
// System.out.println("Closest to new peak " + indy.toString() + " is old pop " + closestPop.getData(origPeakIndyKey));
|
||||
// System.out.println(" meanX was " + (MutateESRankMuCMA.getMeanXOfPop(closestPop)));
|
||||
// clusteredPeakPops[i].copyHashData(closestPop);
|
||||
// }
|
||||
// }
|
||||
private void printDemes(String prefix, Population[] peakPops) {
|
||||
System.out.print(prefix + " demes: ");
|
||||
for (int i = 0; i < peakPops.length; i++) {
|
||||
@ -743,9 +634,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
for (int i = 0; i < origClusters.length; i++) {
|
||||
newClusters[i] = origClusters[i];
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("Generated missing peak species...");
|
||||
}
|
||||
return newClusters;
|
||||
}
|
||||
}
|
||||
@ -776,9 +664,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
problem.initializePopulation(randomNewIndies);
|
||||
problem.evaluate(randomNewIndies);
|
||||
population.incrFunctionCallsBy(cnt);
|
||||
if (TRACE) {
|
||||
System.out.println("evaluated immigrants: " + randomNewIndies.size());
|
||||
}
|
||||
} else {
|
||||
randomNewIndies = null;
|
||||
}
|
||||
@ -802,9 +687,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
if (rndIndex == i) {
|
||||
rndIndex++;
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("selected spec index " + rndIndex);
|
||||
}
|
||||
return clusteredSpecies[rndIndex].getBestEAIndividual();
|
||||
}
|
||||
|
||||
@ -828,7 +710,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
}
|
||||
ClusterBasedNichingEA.plotPopConnected(plot, npop);
|
||||
plot.drawIndividual(1, 0, "", npop.getBestEAIndividual());
|
||||
// plot.drawPopulation(prefix, npop);
|
||||
} catch (Exception e) {
|
||||
plot = null;
|
||||
}
|
||||
@ -926,18 +807,13 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface
|
||||
// (few) duplicates may happen because parents are copied to another peak population
|
||||
// if a cluster had a size of 1 AND parents may survive due to elitism.
|
||||
pop.addPopulation(pi, false);
|
||||
// if (i==0) pop.setGeneration(pi.getGeneration());
|
||||
// else if (pop.getGeneration()!=pi.getGeneration()) System.err.println("Error, mismatching generation in collectPopulation");
|
||||
}
|
||||
if (immigrants != null) {
|
||||
immigrants.putDataAllIndies(originalPeakPop, new Integer(-2));
|
||||
immigrants.putDataAllIndies(originalPeakPop, -2);
|
||||
pop.addPopulation(immigrants, true);
|
||||
}
|
||||
pop.incrGeneration();
|
||||
pop.synchSize();
|
||||
if (TRACE) {
|
||||
System.out.println("Collected " + pop.size() + " indies in pop.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,6 +1,5 @@
|
||||
package eva2.optimization.strategies;
|
||||
|
||||
import eva2.gui.BeanInspector;
|
||||
import eva2.optimization.go.InterfacePopulationChangedEventListener;
|
||||
import eva2.optimization.individuals.AbstractEAIndividual;
|
||||
import eva2.optimization.individuals.InterfaceDataTypeDouble;
|
||||
@ -47,7 +46,6 @@ public class GradientDescentAlgorithm implements InterfaceOptimizer, java.io.Ser
|
||||
// These variables are necessary for the more complex LectureGUI enviroment
|
||||
transient private String identifier = "";
|
||||
private Population population;
|
||||
private static boolean TRACE = false;
|
||||
private static final String lockKey = "gdaLockDataKey";
|
||||
private static final String lastFitnessKey = "gdaLastFitDataKey";
|
||||
private static final String stepSizeKey = "gdaStepSizeDataKey";
|
||||
@ -155,10 +153,8 @@ public class GradientDescentAlgorithm implements InterfaceOptimizer, java.io.Ser
|
||||
|
||||
int[] lock = (int[]) indy.getData(lockKey);
|
||||
double indystepsize = ((Double) indy.getData(stepSizeKey)).doubleValue();
|
||||
// System.out.println("indystepsize" + indystepsize);
|
||||
|
||||
if ((this.optimizationProblem instanceof InterfaceFirstOrderDerivableProblem) && (indy instanceof InterfaceDataTypeDouble)) {
|
||||
// Hashtable history = (Hashtable) indyhash.get(indy);
|
||||
for (int iterations = 0; iterations < this.iterations; iterations++) {
|
||||
|
||||
double[] oldgradient = indy.hasData(gradientKey) ? (double[]) indy.getData(gradientKey) : null;
|
||||
@ -166,9 +162,6 @@ public class GradientDescentAlgorithm implements InterfaceOptimizer, java.io.Ser
|
||||
double[] oldchange = null;
|
||||
|
||||
double[] gradient = ((InterfaceFirstOrderDerivableProblem) optimizationProblem).getFirstOrderGradients(params);
|
||||
if (TRACE) {
|
||||
System.out.println("GDA: " + BeanInspector.toString(params) + ", grad: " + BeanInspector.toString(gradient));
|
||||
}
|
||||
if ((oldgradient != null) && (wstepsize != null)) { // LOCAL adaption
|
||||
for (int li = 0; li < wstepsize.length; li++) {
|
||||
double prod = gradient[li] * oldgradient[li];
|
||||
@ -180,7 +173,6 @@ public class GradientDescentAlgorithm implements InterfaceOptimizer, java.io.Ser
|
||||
wstepsize[li] = (wstepsize[li] < localminstepsize) ? localminstepsize : wstepsize[li];
|
||||
wstepsize[li] = (wstepsize[li] > localmaxstepsize) ? localmaxstepsize : wstepsize[li];
|
||||
|
||||
// System.out.println("wstepsize "+ li + " " + wstepsize[li]);
|
||||
}
|
||||
|
||||
}
|
||||
@ -251,11 +243,8 @@ public class GradientDescentAlgorithm implements InterfaceOptimizer, java.io.Ser
|
||||
if (this.recovery) {
|
||||
for (int i = 0; i < this.population.size(); i++) {
|
||||
indy = ((AbstractEAIndividual) this.population.get(i));
|
||||
// Hashtable history = (Hashtable) indyhash.get(indy);
|
||||
if (indy.getFitness()[0] > recoverythreshold) {
|
||||
if (TRACE) {
|
||||
System.out.println("Gradient Descent: Fitness critical:" + indy.getFitness()[0]);
|
||||
}
|
||||
|
||||
((InterfaceDataTypeDouble) indy).setDoublePhenotype((double[]) indy.getData(oldParamsKey));
|
||||
double[] changes = (double[]) indy.getData(changesKey);
|
||||
int[] lock = (int[]) indy.getData(lockKey);
|
||||
@ -282,8 +271,7 @@ public class GradientDescentAlgorithm implements InterfaceOptimizer, java.io.Ser
|
||||
//System.out.println("gsa main");
|
||||
for (int i = 0; i < this.population.size(); i++) {
|
||||
indy = ((AbstractEAIndividual) this.population.get(i));
|
||||
// Hashtable history = (Hashtable) indyhash.get(indy);
|
||||
// if (history == null) break;
|
||||
|
||||
if (indy.getData(lastFitnessKey) != null) {
|
||||
double lastfit = ((Double) indy.getData(lastFitnessKey)).doubleValue();
|
||||
double indystepsize = ((Double) indy.getData(stepSizeKey)).doubleValue();
|
||||
@ -296,7 +284,7 @@ public class GradientDescentAlgorithm implements InterfaceOptimizer, java.io.Ser
|
||||
//System.out.println("newstepsize" + indystepsize);
|
||||
indystepsize = (indystepsize > globalmaxstepsize) ? globalmaxstepsize : indystepsize;
|
||||
indystepsize = (indystepsize < globalminstepsize) ? globalminstepsize : indystepsize;
|
||||
indy.putData(stepSizeKey, new Double(indystepsize));
|
||||
indy.putData(stepSizeKey, indystepsize);
|
||||
}
|
||||
|
||||
//System.out.println("newstepsize in bounds" + indystepsize);
|
||||
|
@ -50,7 +50,6 @@ public class IslandModelEA implements InterfacePopulationChangedEventListener, I
|
||||
transient private Plot plot = null;
|
||||
transient private String identifier = "";
|
||||
transient private InterfacePopulationChangedEventListener populationChangedEventListener;
|
||||
transient private final boolean TRACE = false;
|
||||
|
||||
public IslandModelEA() {
|
||||
}
|
||||
@ -203,15 +202,9 @@ public class IslandModelEA implements InterfacePopulationChangedEventListener, I
|
||||
for (int i = 0; i < this.islands.length; i++) {
|
||||
if (this.islands[i].getPopulation().size() > 0) {
|
||||
this.islands[i].optimize();
|
||||
if (TRACE) {
|
||||
System.out.println(BeanInspector.toString(islands[i].getPopulation()));
|
||||
}
|
||||
} else {
|
||||
this.islands[i].getPopulation().incrGeneration();
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("----");
|
||||
}
|
||||
}
|
||||
this.population.incrGeneration();
|
||||
if ((this.population.getGeneration() % this.migrationRate) == 0) {
|
||||
|
@ -34,9 +34,6 @@ public class MemeticAlgorithm implements InterfaceOptimizer,
|
||||
private int subsetsize = 5;
|
||||
private int globalSearchIterations = 1;
|
||||
private boolean lamarckism = true;
|
||||
// int counter = 0; !?
|
||||
// int maxfunctioncalls = 1000; !?
|
||||
private boolean TRACE = false;
|
||||
private String identifier = "";
|
||||
private InterfaceOptimizationProblem optimizationProblem = new F1Problem();
|
||||
private InterfaceOptimizer globalOptimizer = new GeneticAlgorithm();
|
||||
@ -94,20 +91,13 @@ public class MemeticAlgorithm implements InterfaceOptimizer,
|
||||
|
||||
@Override
|
||||
public void optimize() {
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println("global search");
|
||||
}
|
||||
this.globalOptimizer.optimize();
|
||||
|
||||
if ((globalSearchIterations > 0) && (((this.globalOptimizer.getPopulation().getGeneration() % this.globalSearchIterations) == 0))
|
||||
&& (this.localSearchSteps > 0)
|
||||
&& (this.optimizationProblem instanceof InterfaceLocalSearchable)) {
|
||||
// here the local search is performed
|
||||
if (TRACE) {
|
||||
System.out.println("Performing local search on " + subsetsize
|
||||
+ " individuals.");
|
||||
}
|
||||
|
||||
Population gop = this.globalOptimizer.getPopulation();
|
||||
Population subset = selectorPlug.selectFrom(gop, subsetsize);
|
||||
Population subsetclone = new Population();
|
||||
@ -164,17 +154,9 @@ public class MemeticAlgorithm implements InterfaceOptimizer,
|
||||
gop.setFunctionCalls(gop.getFunctionCalls()
|
||||
+ (int) Math.round(localSearchSteps * cost * subset.size()));
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println("Population size after local search:" + gop.size());
|
||||
}
|
||||
|
||||
this.setPopulation(gop);
|
||||
}
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println("function calls"
|
||||
+ this.globalOptimizer.getPopulation().getFunctionCalls());
|
||||
}
|
||||
this.firePropertyChangedEvent(Population.NEXT_GENERATION_PERFORMED);
|
||||
}
|
||||
|
||||
@ -205,9 +187,6 @@ public class MemeticAlgorithm implements InterfaceOptimizer,
|
||||
*/
|
||||
protected void firePropertyChangedEvent(String name) {
|
||||
if (this.populationChangedEventListener != null) {
|
||||
if (TRACE) {
|
||||
System.out.println("firePropertyChangedEvent MA");
|
||||
}
|
||||
this.populationChangedEventListener.registerPopulationStateChanged(this, name);
|
||||
}
|
||||
}
|
||||
|
@ -47,7 +47,6 @@ public class ParticleFilterOptimization implements InterfaceOptimizer, java.io.S
|
||||
transient private int indCount = 0;
|
||||
transient private InterfacePopulationChangedEventListener populationChangedEventListener;
|
||||
transient Plot myPlot = null;
|
||||
public static final boolean TRACE = false;
|
||||
|
||||
public ParticleFilterOptimization() {
|
||||
if (withShow) {
|
||||
@ -167,9 +166,6 @@ public class ParticleFilterOptimization implements InterfaceOptimizer, java.io.S
|
||||
parents.add(immi);
|
||||
}
|
||||
parents.synchSize();
|
||||
if (TRACE) {
|
||||
System.out.println("Added " + i + " random individuals");
|
||||
}
|
||||
}
|
||||
|
||||
parents.setFunctionCalls(pop.getFunctionCalls());
|
||||
@ -249,14 +245,9 @@ public class ParticleFilterOptimization implements InterfaceOptimizer, java.io.S
|
||||
|
||||
// predict step
|
||||
predict(nextGeneration);
|
||||
if (TRACE) {
|
||||
System.out.println("Speed is " + BeanInspector.toString(ParticleSwarmOptimization.getPopulationVelSpeed(population, 3, MutateESCorrVector.vectorKey, null, null)) + " popM " + BeanInspector.toString(population.getPopulationMeasures(new EuclideanMetric())));
|
||||
}
|
||||
|
||||
population = evaluatePopulation(nextGeneration);
|
||||
|
||||
// collectStatistics(population);
|
||||
|
||||
this.firePropertyChangedEvent(Population.NEXT_GENERATION_PERFORMED);
|
||||
|
||||
}
|
||||
|
@ -103,7 +103,6 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
|
||||
// parameter for exponential moving average
|
||||
private int emaPeriods = 0;
|
||||
// for debugging only
|
||||
transient private static boolean TRACE = false;
|
||||
transient protected boolean show = false;
|
||||
transient protected Plot plot;
|
||||
private boolean externalInitialPop = false;
|
||||
@ -778,7 +777,7 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
|
||||
for (int i = 0; i < this.population.size(); i++) {
|
||||
double[] succVel = (double[]) population.getEAIndividual(i).getData(lastSuccessKey);
|
||||
if (succVel != null) {
|
||||
successes.add(new Integer(i));
|
||||
successes.add(i);
|
||||
}
|
||||
}
|
||||
if (successes.size() > 0) {
|
||||
@ -1250,15 +1249,6 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
|
||||
* Do some preparations in the beginning of the loop.
|
||||
*/
|
||||
protected void startOptimize() {
|
||||
if (TRACE) {
|
||||
for (int i = 0; i < population.size(); i++) {
|
||||
AbstractEAIndividual indy = population.getEAIndividual(i);
|
||||
System.out.println(BeanInspector.toString(indy.getData(partTypeKey)));
|
||||
System.out.println(BeanInspector.toString(indy.getData(partBestPosKey)));
|
||||
System.out.println(BeanInspector.toString(indy.getData(partBestFitKey)));
|
||||
System.out.println(BeanInspector.toString(indy.getData(partVelKey)));
|
||||
}
|
||||
}
|
||||
if (this.show) {
|
||||
this.show();
|
||||
}
|
||||
@ -1580,9 +1570,6 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se
|
||||
initIndividualMemory(indy);
|
||||
indy.putData(indexKey, i);
|
||||
indy.setIndividualIndex(i);
|
||||
if (TRACE) {
|
||||
System.err.println("initialize indy " + i + " " + AbstractEAIndividual.getDefaultDataString(indy));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -70,7 +70,6 @@ public class ScatterSearch implements InterfaceOptimizer, java.io.Serializable,
|
||||
private double nelderMeadInitPerturbation = 0.01;
|
||||
private double improvementEpsilon = 0.1; // minimal relative fitness improvement for a candidate to be taken over into the refset
|
||||
private double minDiversityEpsilon = 0.0001; // minimal phenotypic distance for a candidate to be taken over into the refset
|
||||
private static boolean TRACE = false;
|
||||
|
||||
public ScatterSearch() {
|
||||
GenericObjectEditor.setHideProperty(this.getClass(), "population", true);
|
||||
@ -137,14 +136,9 @@ public class ScatterSearch implements InterfaceOptimizer, java.io.Serializable,
|
||||
*/
|
||||
private void initRefSet(Population pop) {
|
||||
optimizationProblem.evaluate(pop);
|
||||
if (TRACE) {
|
||||
System.out.println("building ref set from pop with avg dist " + pop.getPopulationMeasures()[0]);
|
||||
}
|
||||
refSet = getRefSetFitBased(new Population(refSetSize), pop);
|
||||
refSet.incrFunctionCallsBy(pop.size());
|
||||
if (TRACE) {
|
||||
System.out.println("ref set size " + refSet.size() + " avg dist " + refSet.getPopulationMeasures()[0]);
|
||||
}
|
||||
|
||||
refSet.addPopulationChangedEventListener(this);
|
||||
refSet.setNotifyEvalInterval(generationCycle);
|
||||
}
|
||||
@ -166,9 +160,6 @@ public class ScatterSearch implements InterfaceOptimizer, java.io.Serializable,
|
||||
}
|
||||
probDim = (Integer) dim;
|
||||
range = ((InterfaceDataTypeDouble) template).getDoubleRange();
|
||||
if (TRACE) {
|
||||
System.out.println("Range is " + BeanInspector.toString(range));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -228,27 +219,15 @@ public class ScatterSearch implements InterfaceOptimizer, java.io.Serializable,
|
||||
int funCallsStart = refSet.getFunctionCalls();
|
||||
do {
|
||||
if (combinations == null || combinations.size() == 0) {
|
||||
if (TRACE) {
|
||||
System.out.println("Improvements: " + lastImprovementCount);
|
||||
System.out.println("---------- best: " + refSet.getBestEAIndividual().getFitness(0));
|
||||
}
|
||||
combinations = generateCombinations(refSet);
|
||||
oldRefSet = (Population) refSet.clone();
|
||||
lastImprovementCount = 0;
|
||||
}
|
||||
if (TRACE) {
|
||||
System.out.println("No combinations: " + combinations.size());
|
||||
}
|
||||
if (combinations.size() > 0) {
|
||||
updateRefSet(refSet, combinations, oldRefSet);
|
||||
}
|
||||
} while (refSet.getFunctionCalls() - funCallsStart < generationCycle);
|
||||
optimizationProblem.evaluatePopulationEnd(refSet);
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println("Improvements: " + lastImprovementCount);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean isDoLocalSolver(AbstractEAIndividual cand, Population refSet) {
|
||||
@ -271,15 +250,9 @@ public class ScatterSearch implements InterfaceOptimizer, java.io.Serializable,
|
||||
Population diversifiedPop = diversify();
|
||||
int keep = refSetSize / 2;
|
||||
Population newRefSet = refSet.cloneWithoutInds();
|
||||
if (TRACE) {
|
||||
System.out.println("regen after " + refSet.getFunctionCalls() + ", best is " + refSet.getBestEAIndividual().getFitness(0));
|
||||
}
|
||||
|
||||
newRefSet.addAll(refSet.getBestNIndividuals(keep, fitCrit));
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println("keeping " + keep + " indies from former ref set, best is " + newRefSet.getBestEAIndividual().getFitness(0));
|
||||
}
|
||||
|
||||
int h = newRefSet.size();
|
||||
ArrayList<double[]> distVects = new ArrayList<double[]>();
|
||||
@ -364,10 +337,6 @@ public class ScatterSearch implements InterfaceOptimizer, java.io.Serializable,
|
||||
AbstractEAIndividual bestCand = candidates.getEAIndividual(bestIndex);
|
||||
AbstractEAIndividual worstRef = refSet.getWorstEAIndividual();
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println("best cand: " + bestCand.getFitness(0));
|
||||
}
|
||||
|
||||
if (isDoLocalSolver(bestCand, refSet)) {
|
||||
Pair<AbstractEAIndividual, Integer> lsRet = localSolver(bestCand, localSearchSteps);
|
||||
if ((Math.abs(lsRet.tail() - localSearchSteps) / localSearchSteps) > 0.05) {
|
||||
@ -375,33 +344,21 @@ public class ScatterSearch implements InterfaceOptimizer, java.io.Serializable,
|
||||
}
|
||||
bestCand = lsRet.head();
|
||||
refSet.incrFunctionCallsBy(lsRet.tail());
|
||||
if (TRACE) {
|
||||
System.out.println("best cand after: " + bestCand.getFitness(0));
|
||||
}
|
||||
}
|
||||
|
||||
if (bestCand.isDominatingEqual(worstRef)) {
|
||||
if (TRACE) {
|
||||
System.out.println("cand is dominating worst ref!");
|
||||
}
|
||||
if (diversityCriterionFulfilled(bestCand, refSet, oldRefSet)) {
|
||||
// System.out.println("diversity criterion is fulfilled! replacing fit " + worstRef.getFitness(0));
|
||||
int replIndex = refSet.indexOf(worstRef);
|
||||
refSet.set(replIndex, bestCand);
|
||||
lastImprovementCount++;
|
||||
} else if (bestCand.isDominating(refSet.getBestEAIndividual())) {
|
||||
// exception: always accept best solution found so far
|
||||
int closestIndex = getClosestIndy(bestCand, refSet);
|
||||
// if (TRACE) System.out.println("replacing due to best fit");
|
||||
refSet.set(closestIndex, bestCand);
|
||||
lastImprovementCount++;
|
||||
}
|
||||
// System.out.println("Improvements: " + lastImprovementCount);
|
||||
candidates.remove(bestIndex);
|
||||
} else {
|
||||
if (TRACE) {
|
||||
System.out.println("cand is too bad!");
|
||||
}
|
||||
// if the best candidate is worse and no local search is performed, all following will be worse - at least in the uni-criterial case
|
||||
// so we can just clear the rest of the candidates
|
||||
if (!doLocalSearch && (bestCand.getFitness().length == 1)) {
|
||||
@ -422,7 +379,6 @@ public class ScatterSearch implements InterfaceOptimizer, java.io.Serializable,
|
||||
|
||||
private Pair<AbstractEAIndividual, Integer> localSolverHC(AbstractEAIndividual cand, int hcSteps) {
|
||||
// use HC for a start...
|
||||
// double[] fitBefore = cand.getFitness();
|
||||
Population hcPop = new Population(1);
|
||||
hcPop.add(cand);
|
||||
int stepsDone = PostProcess.processWithHC(hcPop, optimizationProblem, hcSteps);
|
||||
@ -481,7 +437,6 @@ public class ScatterSearch implements InterfaceOptimizer, java.io.Serializable,
|
||||
for (int i = 0; i < half - 1; i++) { // better-better
|
||||
AbstractEAIndividual indy1 = refSorted.getEAIndividual(i);
|
||||
for (int j = i + 1; j < half; j++) {
|
||||
// if (TRACE) System.out.println("combi T bb, " + i+ "/" + j);
|
||||
AbstractEAIndividual indy2 = refSorted.getEAIndividual(j);
|
||||
combs.add(combineTypeOne(indy1, indy2));
|
||||
combs.add(combineTypeTwo(indy1, indy2));
|
||||
@ -493,7 +448,6 @@ public class ScatterSearch implements InterfaceOptimizer, java.io.Serializable,
|
||||
for (int i = 0; i < half; i++) { // better-worse
|
||||
AbstractEAIndividual indy1 = refSorted.getEAIndividual(i);
|
||||
for (int j = half; j < refSet.size(); j++) {
|
||||
// if (TRACE) System.out.println("combi T bw, " + i+ "/" + j);
|
||||
AbstractEAIndividual indy2 = refSorted.getEAIndividual(j);
|
||||
combs.add(combineTypeOne(indy1, indy2));
|
||||
combs.add(combineTypeTwo(indy1, indy2));
|
||||
@ -504,7 +458,6 @@ public class ScatterSearch implements InterfaceOptimizer, java.io.Serializable,
|
||||
for (int i = half; i < refSet.size() - 1; i++) { // worse-worse
|
||||
AbstractEAIndividual indy1 = refSorted.getEAIndividual(i);
|
||||
for (int j = i + 1; j < refSet.size(); j++) {
|
||||
// if (TRACE) System.out.println("combi T ww, " + i+ "/" + j);
|
||||
AbstractEAIndividual indy2 = refSorted.getEAIndividual(j);
|
||||
combs.add(combineTypeTwo(indy1, indy2));
|
||||
if (RNG.flipCoin(0.5)) {
|
||||
@ -514,10 +467,6 @@ public class ScatterSearch implements InterfaceOptimizer, java.io.Serializable,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println("created combinations " + combs.size() + " best is " + combs.getBestEAIndividual().getFitness(0));
|
||||
}
|
||||
return combs;
|
||||
}
|
||||
|
||||
@ -649,9 +598,7 @@ public class ScatterSearch implements InterfaceOptimizer, java.io.Serializable,
|
||||
pop.add(createDiverseIndy(freq));
|
||||
}
|
||||
pop.setTargetSize(poolSize);
|
||||
if (TRACE) {
|
||||
System.out.println("created diverse pop size " + pop.size());
|
||||
}
|
||||
|
||||
return pop;
|
||||
}
|
||||
|
||||
|
@ -134,7 +134,6 @@ import java.util.List;
|
||||
@Description("TRIBES: a parameter free PSO implementation by Maurice Clerc.")
|
||||
public class Tribes implements InterfaceOptimizer, java.io.Serializable {
|
||||
|
||||
public static final boolean TRACE = false;
|
||||
protected String identifier = "TRIBES";
|
||||
transient private InterfacePopulationChangedEventListener listener = null;
|
||||
protected AbstractOptimizationProblem optimizationProblem;
|
||||
@ -322,16 +321,7 @@ public class Tribes implements InterfaceOptimizer, java.io.Serializable {
|
||||
}
|
||||
optimizationProblem.evaluatePopulationEnd(population);
|
||||
|
||||
// this.population.incrFunctionCallsby(evals);
|
||||
this.population.incrGeneration();
|
||||
//this.firePropertyChangedEvent("NextGenerationPerformed"); // This is now done implicitely, as after every evaluation, addEvals is called
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println("loop finished after " + population.getFunctionCalls() + " evaluations");
|
||||
//for (int i=0; i<population.size(); i++) System.out.println(" * "+((TribesExplorer)population.get(i)).getStringRepresentation());
|
||||
System.out.println(" best: " + population.getBestEAIndividual().getStringRepresentation() + " - " + population.getBestEAIndividual().getFitness(0));
|
||||
System.out.println("swarm contains " + swarm.numParticles() + " particles in iteration " + iter);
|
||||
}
|
||||
}
|
||||
|
||||
private void plotAll(Population pop) {
|
||||
|
@ -11,7 +11,6 @@ public class TribesPosition implements java.io.Serializable {
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
private boolean TRACE = false;
|
||||
double x[];
|
||||
int[][] maxIsoLink = null;
|
||||
double[] fitness;
|
||||
@ -23,22 +22,6 @@ public class TribesPosition implements java.io.Serializable {
|
||||
fitness = new double[1];// new double[maxFunctionNb]; // TODO
|
||||
}
|
||||
|
||||
// public TribesPosition clone(TribesPosition position, int fitnessSize) {
|
||||
// // TODO this method might better vanish
|
||||
// int n;
|
||||
// // Pour remplacer "implements Cloneable"
|
||||
// TribesPosition Clone = new TribesPosition(x.length, fitness.length);
|
||||
// Clone.Dimension = position.Dimension;
|
||||
// System.arraycopy(position.x, 0, Clone.x, 0, position.Dimension);
|
||||
// for (n = 0; n < fitnessSize; n++) {
|
||||
// Clone.fitness[n] = position.fitness[n];
|
||||
// }
|
||||
//
|
||||
// Clone.totalError = position.totalError;
|
||||
// Clone.isolation=position.isolation;
|
||||
// return Clone;
|
||||
// }
|
||||
|
||||
@Override
|
||||
public TribesPosition clone() {
|
||||
// Pour remplacer "implements Cloneable"
|
||||
@ -695,9 +678,6 @@ public class TribesPosition implements java.io.Serializable {
|
||||
No need of a very precise solution
|
||||
*/
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println("sunny start");
|
||||
}
|
||||
// INITIALISATION
|
||||
|
||||
for (n = 0; n < swarm.size; n++) {
|
||||
@ -835,9 +815,7 @@ public class TribesPosition implements java.io.Serializable {
|
||||
System.out.print(swarm.Best.position.x[d]+" ");
|
||||
*/
|
||||
swarm.bestMem.getPos().isolation = swarm.bestMem.getPos().fitness[0];
|
||||
if (TRACE) {
|
||||
System.out.println("sunny end, ret " + swarm.bestMem.getPos().toString());
|
||||
}
|
||||
|
||||
return swarm.bestMem.getPos();
|
||||
}
|
||||
|
||||
|
@ -612,14 +612,8 @@ public class TribesSwarm implements java.io.Serializable {
|
||||
TribesPosition posTemp = new TribesPosition(range.length);
|
||||
double[] rand_i;
|
||||
|
||||
if (Tribes.TRACE) {
|
||||
System.out.println("+ generateExplorer option " + option);
|
||||
}
|
||||
switch (option) {
|
||||
case 3: // around a "center"
|
||||
if (Tribes.TRACE) {
|
||||
System.out.println("+ around center ");
|
||||
}
|
||||
if (radius < 0) {
|
||||
// Choose at random a memory
|
||||
m = RNG.randomInt(this.tribes[fromTribe].memoryNb);
|
||||
@ -648,9 +642,6 @@ public class TribesSwarm implements java.io.Serializable {
|
||||
In order to do that all memorizez positions are used, including de "dead" ones
|
||||
See SunnySpell
|
||||
*/
|
||||
if (Tribes.TRACE) {
|
||||
System.out.println("+ sunny spell ");
|
||||
}
|
||||
|
||||
// if only initRange should be used for initialization, give that one to the sspell
|
||||
expl.position = expl.position.maxIsolated((initRange == null) ? range : initRange, this);
|
||||
@ -666,9 +657,7 @@ public class TribesSwarm implements java.io.Serializable {
|
||||
default:
|
||||
// For pure random (0) method, or option 1 (on the bounds)
|
||||
if (initType == 1) { // use initRange
|
||||
if (Tribes.TRACE) {
|
||||
System.out.println("+ in initRange ");
|
||||
}
|
||||
|
||||
if (initRange == null) {
|
||||
System.err.println("unexpected null initRange!");
|
||||
}
|
||||
@ -677,9 +666,6 @@ public class TribesSwarm implements java.io.Serializable {
|
||||
posTemp = expl.position.clone();
|
||||
expl.initExplorerSpace(initRange);
|
||||
} else { // use default range
|
||||
if (Tribes.TRACE) {
|
||||
System.out.println("+ in whole range ");
|
||||
}
|
||||
//default: // In the whole search space
|
||||
expl.initExplorerSpace(range);
|
||||
posTemp = expl.position.clone();
|
||||
|
@ -26,7 +26,6 @@ import java.util.concurrent.Semaphore;
|
||||
*/
|
||||
public class MatlabEvalMediator {
|
||||
volatile Boolean requesting = false;
|
||||
// final static boolean TRACE = false;
|
||||
volatile private Boolean fin = false;
|
||||
volatile Object question = null;
|
||||
volatile double[] answer = null;
|
||||
|
@ -33,7 +33,6 @@ import java.util.BitSet;
|
||||
@Description("Interface problem class for optimization in Matlab, only usable from within Matlab")
|
||||
public class MatlabProblem extends AbstractOptimizationProblem implements InterfaceHasInitRange, InterfaceTextListener, Serializable {
|
||||
private static final long serialVersionUID = 4913310869887420815L;
|
||||
public static boolean TRACE = false;
|
||||
transient OptimizerRunnable runnable = null;
|
||||
protected boolean allowSingleRunnable = true;
|
||||
private transient Population seedPopulation = null;
|
||||
@ -219,8 +218,6 @@ public class MatlabProblem extends AbstractOptimizationProblem implements Interf
|
||||
log("### Data type is " + dataType);
|
||||
|
||||
initTemplate();
|
||||
|
||||
setDebugOut(TRACE, defTestOut);
|
||||
log("Initial range is " + BeanInspector.toString(initialRange) + "\n");
|
||||
}
|
||||
|
||||
@ -233,8 +230,6 @@ public class MatlabProblem extends AbstractOptimizationProblem implements Interf
|
||||
* @param fname
|
||||
*/
|
||||
public void setDebugOut(boolean swtch, String fname) {
|
||||
TRACE = swtch;
|
||||
// System.err.println("setDebugOut: " + swtch +" " + fname);
|
||||
if (!swtch && (dos != null)) {
|
||||
dos.close();
|
||||
dos = null;
|
||||
@ -243,7 +238,6 @@ public class MatlabProblem extends AbstractOptimizationProblem implements Interf
|
||||
if (fname == null || (fname.length() == 0)) {
|
||||
fname = defTestOut;
|
||||
}
|
||||
// System.err.println("Opening "+fname);
|
||||
dos = new PrintStream(new FileOutputStream(fname));
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -8,7 +8,6 @@ import java.util.Comparator;
|
||||
*
|
||||
*/
|
||||
public class KMEANSJAVA {
|
||||
static public boolean TRACE = false;
|
||||
protected double[][] c;
|
||||
protected int[] indices;
|
||||
|
||||
@ -41,10 +40,6 @@ public class KMEANSJAVA {
|
||||
*
|
||||
*/
|
||||
public KMEANSJAVA(double[][] samples, int K, int iterations) {
|
||||
//System.out.print("in");
|
||||
if (TRACE) {
|
||||
System.out.println("K" + K);
|
||||
}
|
||||
if (K > samples.length) {
|
||||
K = samples.length;
|
||||
}
|
||||
@ -72,11 +67,11 @@ public class KMEANSJAVA {
|
||||
for (int indexofc = 0; indexofc < c.length; indexofc++) {
|
||||
double[] newcenter = new double[samples[0].length];
|
||||
int treffer = 0;
|
||||
for (int j = 0; j < indices.length; j++) { //System.out.println("j="+j);
|
||||
if (indices[j] == indexofc) {
|
||||
for (int indice : indices) { //System.out.println("j="+j);
|
||||
if (indice == indexofc) {
|
||||
treffer++;
|
||||
for (int d = 0; d < newcenter.length; d++) {
|
||||
newcenter[d] += c[indices[j]][d];
|
||||
newcenter[d] += c[indice][d];
|
||||
//newcenter[d] = newcenter[d] + samples[j][d];
|
||||
}
|
||||
}
|
||||
@ -88,7 +83,6 @@ public class KMEANSJAVA {
|
||||
}
|
||||
// determine the new centers
|
||||
}
|
||||
//System.out.println("out");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -115,9 +109,9 @@ public class KMEANSJAVA {
|
||||
System.out.println("");
|
||||
}
|
||||
System.out.println("test");
|
||||
for (int i = 0; i < test.length; i++) {
|
||||
for (int j = 0; j < test[i].length; j++) {
|
||||
System.out.print(test[i][j] + " ");
|
||||
for (double[] aTest : test) {
|
||||
for (int j = 0; j < aTest.length; j++) {
|
||||
System.out.print(aTest[j] + " ");
|
||||
}
|
||||
System.out.println("");
|
||||
}
|
||||
|
@ -25,13 +25,9 @@ import java.util.jar.JarInputStream;
|
||||
* @author mkron
|
||||
*/
|
||||
public class ReflectPackage {
|
||||
|
||||
final static boolean TRACE = false;
|
||||
static int missedJarsOnClassPath = 0;
|
||||
static boolean useFilteredClassPath = true;
|
||||
// static boolean usePathMap = true;
|
||||
static String[] dynCP = null;
|
||||
// static HashMap<String, ArrayList<String>> pathMap = new HashMap<String, ArrayList<String>>();
|
||||
|
||||
static class ClassComparator<T> implements Comparator<T> {
|
||||
@Override
|
||||
@ -59,26 +55,15 @@ public class ReflectPackage {
|
||||
}
|
||||
dir = path + "/" + pckgname.replace(".", "/");
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println(".. opening " + path);
|
||||
}
|
||||
|
||||
directory = new File(dir);
|
||||
|
||||
} catch (NullPointerException x) {
|
||||
if (TRACE) {
|
||||
System.err.println(directory.getPath() + " not found in " + path);
|
||||
System.err.println("directory " + (directory.exists() ? "exists" : "doesnt exist"));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
if (directory.exists()) {
|
||||
// Get the list of the files contained in the package
|
||||
return getClassesFromDirFltr(set, directory, pckgname, includeSubs, reqSuperCls);
|
||||
} else {
|
||||
if (TRACE) {
|
||||
System.err.println(directory.getPath() + " doesnt exist in " + path + ", dir was " + dir);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} catch (ClassNotFoundException e) {
|
||||
@ -88,21 +73,17 @@ public class ReflectPackage {
|
||||
}
|
||||
}
|
||||
|
||||
// public static ArrayList<Class> getClassesFromDir(File directory, String pckgname, boolean includeSubs) {
|
||||
// return getClassesFromDirFltr(directory, pckgname, includeSubs, null);
|
||||
// }
|
||||
|
||||
public static int getClassesFromDirFltr(HashSet<Class> set, File directory, String pckgname, boolean includeSubs, Class<?> reqSuperCls) {
|
||||
int cntAdded = 0;
|
||||
if (directory.exists()) {
|
||||
// Get the list of the files contained in the package
|
||||
String[] files = directory.list();
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
for (String file : files) {
|
||||
// we are only interested in .class files
|
||||
if (files[i].endsWith(".class")) {
|
||||
if (file.endsWith(".class")) {
|
||||
// removes the .class extension
|
||||
try {
|
||||
Class<?> cls = Class.forName(pckgname + '.' + files[i].substring(0, files[i].length() - 6));
|
||||
Class<?> cls = Class.forName(pckgname + '.' + file.substring(0, file.length() - 6));
|
||||
if (reqSuperCls != null) {
|
||||
if (reqSuperCls.isAssignableFrom(cls)) {
|
||||
cntAdded += addClass(set, cls);
|
||||
@ -111,15 +92,15 @@ public class ReflectPackage {
|
||||
cntAdded += addClass(set, cls);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println("ReflectPackage: Couldnt get Class from jar for " + pckgname + '.' + files[i] + ": " + e.getMessage());
|
||||
System.err.println("ReflectPackage: Couldnt get Class from jar for " + pckgname + '.' + file + ": " + e.getMessage());
|
||||
} catch (Error e) {
|
||||
System.err.println("ReflectPackage: Couldnt get Class from jar for " + pckgname + '.' + files[i] + ": " + e.getMessage());
|
||||
System.err.println("ReflectPackage: Couldnt get Class from jar for " + pckgname + '.' + file + ": " + e.getMessage());
|
||||
}
|
||||
} else if (includeSubs) {
|
||||
// do a recursive search over subdirs
|
||||
File subDir = new File(directory.getAbsolutePath() + File.separatorChar + files[i]);
|
||||
File subDir = new File(directory.getAbsolutePath() + File.separatorChar + file);
|
||||
if (subDir.exists() && subDir.isDirectory()) {
|
||||
cntAdded += getClassesFromDirFltr(set, subDir, pckgname + "." + files[i], includeSubs, reqSuperCls);
|
||||
cntAdded += getClassesFromDirFltr(set, subDir, pckgname + "." + file, includeSubs, reqSuperCls);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -136,9 +117,6 @@ public class ReflectPackage {
|
||||
}
|
||||
|
||||
private static int addClass(HashSet<Class> set, Class cls) {
|
||||
if (TRACE) {
|
||||
System.out.println("adding class " + cls.getName());
|
||||
}
|
||||
if (set.contains(cls)) {
|
||||
System.err.println("warning, Class " + cls.getName() + " not added twice!");
|
||||
return 0;
|
||||
@ -150,12 +128,9 @@ public class ReflectPackage {
|
||||
|
||||
public static ArrayList<Class> filterAssignableClasses(ArrayList<Class> classes, Class<?> reqSuperCls) {
|
||||
ArrayList<Class> assClasses = new ArrayList<Class>();
|
||||
for (int i = 0; i < classes.size(); i++) {
|
||||
if (reqSuperCls.isAssignableFrom(classes.get(i))) {
|
||||
if (TRACE) {
|
||||
System.out.println(" taking over " + classes.get(i));
|
||||
}
|
||||
assClasses.add(classes.get(i));
|
||||
for (Class aClass : classes) {
|
||||
if (reqSuperCls.isAssignableFrom(aClass)) {
|
||||
assClasses.add(aClass);
|
||||
}
|
||||
}
|
||||
return assClasses;
|
||||
@ -173,9 +148,6 @@ public class ReflectPackage {
|
||||
int cntAdded = 0;
|
||||
|
||||
packageName = packageName.replaceAll("\\.", "/");
|
||||
if (TRACE) {
|
||||
System.out.println("Jar " + jarName + " looking for " + packageName);
|
||||
}
|
||||
try {
|
||||
JarInputStream jarFile = new JarInputStream
|
||||
(new FileInputStream(jarName));
|
||||
@ -183,7 +155,6 @@ public class ReflectPackage {
|
||||
|
||||
while ((jarEntry = jarFile.getNextJarEntry()) != null) {
|
||||
String jarEntryName = jarEntry.getName();
|
||||
// if (TRACE) System.out.println("- " + jarEntry.getName());
|
||||
if ((jarEntryName.startsWith(packageName)) &&
|
||||
(jarEntryName.endsWith(".class"))) {
|
||||
// subpackages are hit here as well!
|
||||
@ -203,25 +174,20 @@ public class ReflectPackage {
|
||||
} else {
|
||||
cntAdded += addClass(set, cls);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println("ReflectPackage: Couldnt get Class from jar for " + clsName + ": " + e.getMessage());
|
||||
} catch (Error e) {
|
||||
System.err.println("ReflectPackage: Couldnt get Class from jar for " + clsName + ": " + e.getMessage());
|
||||
} catch (Exception | Error e) {
|
||||
System.err.println("ReflectPackage: Couldn't get Class from jar for " + clsName + ": " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// classes.add (jarEntry.getName().replaceAll("/", "\\."));
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
missedJarsOnClassPath++;
|
||||
if (missedJarsOnClassPath == 0) {
|
||||
System.err.println("Couldnt open jar from class path: " + e.getMessage());
|
||||
System.err.println("Couldn't open jar from class path: " + e.getMessage());
|
||||
System.err.println("Dirty class path?");
|
||||
} else if (missedJarsOnClassPath == 2) {
|
||||
System.err.println("Couldnt open jar from class path more than once...");
|
||||
System.err.println("Couldn't open jar from class path more than once...");
|
||||
}
|
||||
//e.printStackTrace();
|
||||
}
|
||||
return cntAdded;
|
||||
}
|
||||
@ -230,13 +196,13 @@ public class ReflectPackage {
|
||||
* Collect all classes from a given package on the classpath. If includeSubs is true,
|
||||
* the sub-packages are listed as well.
|
||||
*
|
||||
* @param pckg
|
||||
* @param includeSubs
|
||||
* @param bSort sort alphanumerically by class name
|
||||
* @param pkg Package name
|
||||
* @param includeSubs Whether to include sub packages
|
||||
* @param bSort sort alphanumerically by class name
|
||||
* @return An ArrayList of Class objects contained in the package which may be empty if an error occurs.
|
||||
*/
|
||||
public static Class[] getAllClassesInPackage(String pckg, boolean includeSubs, boolean bSort) {
|
||||
return getClassesInPackageFltr(new HashSet<Class>(), pckg, includeSubs, bSort, null);
|
||||
public static Class[] getAllClassesInPackage(String pkg, boolean includeSubs, boolean bSort) {
|
||||
return getClassesInPackageFltr(new HashSet<Class>(), pkg, includeSubs, bSort, null);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -244,14 +210,11 @@ public class ReflectPackage {
|
||||
* as superclass or superinterface. If includeSubs is true,
|
||||
* the sub-packages are listed as well.
|
||||
*
|
||||
* @param pckg
|
||||
* @param pkg
|
||||
* @return
|
||||
* @see Class.assignableFromClass(Class cls)
|
||||
*/
|
||||
public static Class[] getClassesInPackageFltr(HashSet<Class> set, String pckg, boolean includeSubs, boolean bSort, Class reqSuperCls) {
|
||||
String classPath = null;
|
||||
public static Class[] getClassesInPackageFltr(HashSet<Class> set, String pkg, boolean includeSubs, boolean bSort, Class reqSuperCls) {
|
||||
if (!useFilteredClassPath || (dynCP == null)) {
|
||||
classPath = System.getProperty("java.class.path", ".");
|
||||
if (useFilteredClassPath) {
|
||||
try {
|
||||
dynCP = getValidCPArray();
|
||||
@ -263,20 +226,11 @@ public class ReflectPackage {
|
||||
}
|
||||
}
|
||||
|
||||
if (TRACE) {
|
||||
System.out.println("classpath is " + classPath);
|
||||
}
|
||||
for (int i = 0; i < dynCP.length; i++) {
|
||||
if (TRACE) {
|
||||
System.out.println("reading element " + dynCP[i]);
|
||||
}
|
||||
if (dynCP[i].endsWith(".jar")) {
|
||||
getClassesFromJarFltr(set, dynCP[i], pckg, includeSubs, reqSuperCls);
|
||||
for (String aDynCP : dynCP) {
|
||||
if (aDynCP.endsWith(".jar")) {
|
||||
getClassesFromJarFltr(set, aDynCP, pkg, includeSubs, reqSuperCls);
|
||||
} else {
|
||||
if (TRACE) {
|
||||
System.out.println("reading from files: " + dynCP[i] + " " + pckg);
|
||||
}
|
||||
getClassesFromFilesFltr(set, dynCP[i], pckg, includeSubs, reqSuperCls);
|
||||
getClassesFromFilesFltr(set, aDynCP, pkg, includeSubs, reqSuperCls);
|
||||
}
|
||||
}
|
||||
Object[] clsArr = set.toArray();
|
||||
@ -298,9 +252,6 @@ public class ReflectPackage {
|
||||
public static String getResourcePathFromCP(String res) {
|
||||
String[] cpEntries = getClassPathElements();
|
||||
URL url = ClassLoader.getSystemResource(res);
|
||||
if (TRACE) {
|
||||
System.out.println(res + ((url == null) ? " not" : " was") + " found by classloader.");
|
||||
}
|
||||
if (url != null) {
|
||||
File f;
|
||||
try {
|
||||
@ -319,15 +270,9 @@ public class ReflectPackage {
|
||||
fNameSep = System.getProperty("file.separator") + res;
|
||||
}
|
||||
|
||||
for (int i = 0; i < cpEntries.length; i++) {
|
||||
if (!cpEntries[i].endsWith(".jar")) { // its a fs directory (hopefully)
|
||||
if (TRACE) {
|
||||
System.out.println("reading element " + cpEntries[i]);
|
||||
}
|
||||
f = new File(cpEntries[i] + fNameSep);
|
||||
if (TRACE) {
|
||||
System.out.println(res + ((!f.exists()) ? " not" : " was") + " found in " + cpEntries[i]);
|
||||
}
|
||||
for (String cpEntry : cpEntries) {
|
||||
if (!cpEntry.endsWith(".jar")) { // its a fs directory (hopefully)
|
||||
f = new File(cpEntry + fNameSep);
|
||||
if (f.exists()) {
|
||||
return f.getAbsolutePath();
|
||||
}
|
||||
@ -345,9 +290,6 @@ public class ReflectPackage {
|
||||
public static InputStream getResourceStreamFromCP(String res) {
|
||||
|
||||
InputStream in = BasicResourceLoader.instance().getStreamFromResourceLocation(res);
|
||||
if (TRACE) {
|
||||
System.out.println(res + ((in == null) ? " not" : " was") + " found by classloader.");
|
||||
}
|
||||
if (in != null) {
|
||||
return in;
|
||||
}
|
||||
@ -362,15 +304,9 @@ public class ReflectPackage {
|
||||
fNameSep = System.getProperty("file.separator") + res;
|
||||
}
|
||||
|
||||
for (int i = 0; i < cpEntries.length; i++) {
|
||||
if (!cpEntries[i].endsWith(".jar")) { // its a fs directory (hopefully)
|
||||
if (TRACE) {
|
||||
System.out.println("reading element " + cpEntries[i]);
|
||||
}
|
||||
f = new File(cpEntries[i] + fNameSep);
|
||||
if (TRACE) {
|
||||
System.out.println(res + ((!f.exists()) ? " not" : " was") + " found in " + cpEntries[i]);
|
||||
}
|
||||
for (String cpEntry : cpEntries) {
|
||||
if (!cpEntry.endsWith(".jar")) { // its a fs directory (hopefully)
|
||||
f = new File(cpEntry + fNameSep);
|
||||
if (f.exists()) {
|
||||
try {
|
||||
return new FileInputStream(f);
|
||||
@ -387,12 +323,10 @@ public class ReflectPackage {
|
||||
String[] pathElements = getClassPathElements();
|
||||
File f;
|
||||
ArrayList<String> valids = new ArrayList<String>(pathElements.length);
|
||||
for (int i = 0; i < pathElements.length; i++) {
|
||||
// System.err.println(pathElements[i]);
|
||||
f = new File(pathElements[i]);
|
||||
// if (f.canRead()) {valids.add(pathElements[i]);}
|
||||
for (String pathElement : pathElements) {
|
||||
f = new File(pathElement);
|
||||
if (f.exists() && f.canRead()) {
|
||||
valids.add(pathElements[i]);
|
||||
valids.add(pathElement);
|
||||
}
|
||||
}
|
||||
return valids;
|
||||
@ -400,7 +334,6 @@ public class ReflectPackage {
|
||||
|
||||
public static String[] getValidCPArray() {
|
||||
ArrayList<String> valids = getValidCPEntries();
|
||||
// vp = valids.toArray(dynCP); // this causes Matlab to crash meanly.
|
||||
String[] vp = new String[valids.size()];
|
||||
for (int i = 0; i < valids.size(); i++) {
|
||||
vp[i] = valids.get(i);
|
||||
@ -416,9 +349,6 @@ public class ReflectPackage {
|
||||
* @return
|
||||
*/
|
||||
public static Class<?>[] getAssignableClassesInPackage(String pckg, Class reqSuperCls, boolean includeSubs, boolean bSort) {
|
||||
if (TRACE) {
|
||||
System.out.println("requesting classes assignable from " + reqSuperCls.getName());
|
||||
}
|
||||
return getClassesInPackageFltr(new HashSet<Class>(), pckg, includeSubs, bSort, reqSuperCls);
|
||||
}
|
||||
|
||||
@ -426,8 +356,9 @@ public class ReflectPackage {
|
||||
* Retrieve assignable classes of the given package from classpath given by full class and package String,
|
||||
* such as eva2.problems.AbstractOptimizationProblem.
|
||||
*
|
||||
* @param pckg String denoting the package
|
||||
* @param reqSuperCls
|
||||
* @param pckgClassName String denoting the package
|
||||
* @param includeSubs
|
||||
* @param bSort
|
||||
* @return
|
||||
*/
|
||||
public static Class<?>[] getAssignableClasses(String pckgClassName, boolean includeSubs, boolean bSort) {
|
||||
@ -450,13 +381,8 @@ public class ReflectPackage {
|
||||
|
||||
public static void main(String[] args) {
|
||||
ClassLoader cld = Thread.currentThread().getContextClassLoader();
|
||||
System.out.println("1: " + cld.getResource("/eva2/server"));
|
||||
System.out.println("2: " + cld.getResource("eva2/server"));
|
||||
// BasicResourceLoader rld = BasicResourceLoader.instance();
|
||||
// byte[] b = rld.getBytesFromResourceLocation("images/Sub24.gif");
|
||||
// System.out.println((b == null) ? "null" : b.toString());
|
||||
// b = rld.getBytesFromResourceLocation("src/eva2/client/SplashScreen.java");
|
||||
// System.out.println((b == null) ? "null" : b.toString());
|
||||
System.out.println("1: " + cld.getResource("/eva2/optimization"));
|
||||
System.out.println("2: " + cld.getResource("eva2/optimization"));
|
||||
|
||||
HashSet<String> h = new HashSet<String>(20);
|
||||
|
||||
@ -466,27 +392,10 @@ public class ReflectPackage {
|
||||
for (String string : h) {
|
||||
System.out.println("+ " + string);
|
||||
}
|
||||
|
||||
// String[] pathElements = getClassPathElements();
|
||||
// for (int i=0; i<pathElements.length; i++) {
|
||||
// System.out.print(i+" " + pathElements[i]);
|
||||
// System.out.println(pathElements[i].endsWith(".jar") ? " is a jar" : " is a path");
|
||||
// if (pathElements[i].endsWith(".jar")) {
|
||||
// ArrayList al = getClassesFromJarFltr(pathElements[i], "eva2.server.model", false, null);
|
||||
// for (int k=0; k<al.size(); k++) {
|
||||
// //if (Class.forName("eva2.server.modules.ModuleAdapter").isAssignableFrom((Class)al.get(i)))
|
||||
// System.out.println((Class)al.get(k));
|
||||
// }
|
||||
// } else {
|
||||
//
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
public static String[] getClassPathElements() {
|
||||
String classPath = System.getProperty("java.class.path", ".");
|
||||
// System.out.println("classpath: " + classPath);
|
||||
return classPath.split(File.pathSeparator);
|
||||
}
|
||||
|
||||
@ -495,7 +404,6 @@ public class ReflectPackage {
|
||||
Object bean = null;
|
||||
try {
|
||||
bean = server.getObjectInstance(new ObjectName("com.sun.management:type=HotSpotDiagnostic"));
|
||||
//bean = server.queryMBeans(null, null);
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
@ -507,12 +415,6 @@ public class ReflectPackage {
|
||||
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
|
||||
Object ret = null;
|
||||
try {
|
||||
// void setVMOption(String name, String value)
|
||||
//-Xrunhprof:heap=dump,format=b
|
||||
// ret = server.invoke(new ObjectName("com.sun.management:type=HotSpotDiagnostic"),
|
||||
// "setVMOption", new Object[]{"agentlib", "hprof=heap=dump,format=a"},
|
||||
// new String[] {"java.lang.String","java.lang.String"});
|
||||
// ret = server.invoke(new ObjectName("com.sun.management:type=HotSpotDiagnostic"), "getDiagnosticOptions", new Object[] {}, new String[] {});
|
||||
server.invoke(new ObjectName("com.sun.management:type=HotSpotDiagnostic"), "dumpHeap", new Object[]{file, live}, new String[]{"java.lang.String", "boolean"});
|
||||
//bean = server.queryMBeans(null, null);
|
||||
} catch (Exception e) {
|
||||
@ -544,7 +446,6 @@ public class ReflectPackage {
|
||||
* @param args constructor arguments
|
||||
* @param paramValuePairs pairs of values to set using generic setter methods
|
||||
* @return
|
||||
* @see BeanInspector.setMem(Object,String,Object)
|
||||
*/
|
||||
public static Object instantiateWithParams(String clsName, Object[] args, List<Pair<String, Object>> paramValuePairs) {
|
||||
Object o = getInstance(clsName, args);
|
||||
@ -555,8 +456,6 @@ public class ReflectPackage {
|
||||
if (!succ) {
|
||||
System.err.println("Error, unable to set " + nameVal.head + " to " + nameVal.tail + " in object " + o);
|
||||
return null;
|
||||
} else if (TRACE) {
|
||||
System.out.println("Successfully set " + nameVal.head + " to " + nameVal.tail + " in object " + o);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -29,16 +29,13 @@ public class DArea extends JComponent implements DParent, Printable {
|
||||
/**
|
||||
* the default minimal rectangle which is shown
|
||||
*/
|
||||
public static final DRectangle DEFAULT_MIN_RECT = new DRectangle(-1, -1, 2,
|
||||
2);
|
||||
public static final DRectangle DEFAULT_MIN_RECT = new DRectangle(-1, -1, 2, 2);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1461387400381365146L;
|
||||
|
||||
private static final boolean TRACE = false;
|
||||
|
||||
private boolean auto_focus = false, auto_grid = false,
|
||||
grid_to_front = false;
|
||||
|
||||
@ -358,9 +355,6 @@ public class DArea extends JComponent implements DParent, Printable {
|
||||
*/
|
||||
@Override
|
||||
public void paint(Graphics g) {
|
||||
if (TRACE) {
|
||||
System.out.println("DArea.paint(Graphics)");
|
||||
}
|
||||
if (auto_focus) {
|
||||
container.restore();
|
||||
visible_rect = (DRectangle) container.getRectangle().clone();
|
||||
@ -388,9 +382,6 @@ public class DArea extends JComponent implements DParent, Printable {
|
||||
* auto_grid option
|
||||
*/
|
||||
private void paintGrid(DMeasures m) {
|
||||
if (TRACE) {
|
||||
System.out.println("DArea.paintGrid(DMeasures)");
|
||||
}
|
||||
grid.rectangle = getDRectangle();
|
||||
if (auto_grid) {
|
||||
Border b = getBorder();
|
||||
@ -417,9 +408,6 @@ public class DArea extends JComponent implements DParent, Printable {
|
||||
* @param m the measures of the area
|
||||
*/
|
||||
private void paintGrid(ScaledBorder sb, DMeasures m) {
|
||||
if (TRACE) {
|
||||
System.out.println("DArea.paintGrid(ScaledBorder, DMeasures)");
|
||||
}
|
||||
Dimension d = getSize();
|
||||
FontMetrics fm = m.getGraphics().getFontMetrics();
|
||||
grid.setDistances(sb.getSrcdX(fm, d), sb.getSrcdY(fm, d));
|
||||
@ -479,9 +467,6 @@ public class DArea extends JComponent implements DParent, Printable {
|
||||
*/
|
||||
@Override
|
||||
public int print(Graphics g, PageFormat pf, int pi) {
|
||||
if (TRACE) {
|
||||
System.out.println("DArea.print(...)");
|
||||
}
|
||||
if (pi > 0) {
|
||||
return Printable.NO_SUCH_PAGE;
|
||||
}
|
||||
@ -553,9 +538,6 @@ public class DArea extends JComponent implements DParent, Printable {
|
||||
*/
|
||||
@Override
|
||||
public void repaint(DRectangle r) {
|
||||
if (TRACE) {
|
||||
System.out.println("DArea.repaint(DRectangle)" + r);
|
||||
}
|
||||
if (r == null) {
|
||||
throw new IllegalArgumentException(
|
||||
"Cannot repaint a null DRectangle");
|
||||
@ -580,9 +562,6 @@ public class DArea extends JComponent implements DParent, Printable {
|
||||
@Override
|
||||
public void restoreBorder() {
|
||||
dborder = container.getDBorder();
|
||||
if (TRACE) {
|
||||
System.out.println("DArea.restoreBorder -> " + dborder);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -659,9 +638,7 @@ public class DArea extends JComponent implements DParent, Printable {
|
||||
* @param aFlag visible or not
|
||||
*/
|
||||
public void setGridVisible(boolean aFlag) {
|
||||
if (TRACE) {
|
||||
System.out.println("DArea.setGridVisisble: " + aFlag);
|
||||
}
|
||||
|
||||
grid.rectangle = getDRectangle();
|
||||
grid.setVisible(aFlag);
|
||||
}
|
||||
@ -784,9 +761,6 @@ public class DArea extends JComponent implements DParent, Printable {
|
||||
* @param rect the visible <code>DRectangle</code> in DArea coordinates
|
||||
*/
|
||||
public void setVisibleRectangle(DRectangle rect) {
|
||||
if (TRACE) {
|
||||
System.out.println("DArea.setVisibleRectangle(DRectangle)");
|
||||
}
|
||||
if (rect.isEmpty()) {
|
||||
throw new IllegalArgumentException(
|
||||
"You should never try to set an empty rectangle\n"
|
||||
|
Loading…
x
Reference in New Issue
Block a user