diff --git a/src/eva2/examples/TerminatorExample.java b/src/eva2/examples/TerminatorExample.java index 3af6593c..2f79d80a 100644 --- a/src/eva2/examples/TerminatorExample.java +++ b/src/eva2/examples/TerminatorExample.java @@ -21,12 +21,12 @@ public class TerminatorExample { // in both direction (per dim.) or w.r.t. minimization only new FitnessConvergenceTerminator(0.0001, 1000, StagnationTypeEnum.fitnessCallBased, ChangeTypeEnum.absoluteChange, DirectionTypeEnum.decrease), new PhenotypeConvergenceTerminator(0.0001, 1000, StagnationTypeEnum.fitnessCallBased, ChangeTypeEnum.absoluteChange, DirectionTypeEnum.bidirectional), - CombinedTerminator.AND); + true); // Adding an evaluation terminator with OR to the convergence criterion OptimizerFactory.setTerminator(new CombinedTerminator( new EvaluationTerminator(20000), convT, - CombinedTerminator.OR)); + false)); sol = OptimizerFactory.optimizeToDouble(OptimizerFactory.PSO, f1, null); System.out.println(OptimizerFactory.lastEvalsPerformed() + " evals performed. " diff --git a/src/eva2/gui/PropertySheetPanel.java b/src/eva2/gui/PropertySheetPanel.java index 4a3b62bf..eabf7fca 100644 --- a/src/eva2/gui/PropertySheetPanel.java +++ b/src/eva2/gui/PropertySheetPanel.java @@ -986,7 +986,7 @@ public final class PropertySheetPanel extends JPanel implements PropertyChangeLi } } -class PropertyCellRenderer implements TableCellRenderer { +final class PropertyCellRenderer implements TableCellRenderer { private Logger LOGGER = Logger.getLogger(PropertyCellRenderer.class.getName()); JLabel empty = new JLabel(); @@ -1028,7 +1028,7 @@ class PropertyCellRenderer implements TableCellRenderer { } } -class PropertyCellEditor extends AbstractCellEditor implements TableCellEditor { +final class PropertyCellEditor extends AbstractCellEditor implements TableCellEditor { private Logger LOGGER = Logger.getLogger(PropertyCellEditor.class.getName()); private JLabel empty = new JLabel(); private Object value; diff --git a/src/eva2/optimization/operator/terminators/CombinedTerminator.java b/src/eva2/optimization/operator/terminators/CombinedTerminator.java index 0afff9ad..c2a8f315 100644 --- a/src/eva2/optimization/operator/terminators/CombinedTerminator.java +++ b/src/eva2/optimization/operator/terminators/CombinedTerminator.java @@ -3,30 +3,28 @@ package eva2.optimization.operator.terminators; import eva2.optimization.population.InterfaceSolutionSet; import eva2.optimization.population.PopulationInterface; import eva2.problems.InterfaceOptimizationProblem; -import eva2.tools.SelectedTag; import eva2.util.annotation.Description; +import eva2.util.annotation.Parameter; import java.io.Serializable; @Description("Boolean combination of two terminators.") public class CombinedTerminator implements InterfaceTerminator, Serializable { + + public enum LogicalOperator { AND, OR } /** * */ private static final long serialVersionUID = -4748749151972645021L; private InterfaceTerminator t1 = new FitnessConvergenceTerminator(); private InterfaceTerminator t2 = new EvaluationTerminator(); - private SelectedTag andOrTag = new SelectedTag("OR", "AND"); + private LogicalOperator logicalOperator = LogicalOperator.AND; private String msg = null; - public static final boolean AND = true; - public static final boolean OR = false; - /** * */ - public CombinedTerminator() { - } + public CombinedTerminator() { } /** * Convenience constructor combining the given terminators in the expected way. @@ -34,7 +32,7 @@ public class CombinedTerminator implements InterfaceTerminator, Serializable { public CombinedTerminator(InterfaceTerminator t1, InterfaceTerminator t2, boolean bAnd) { this.t1 = t1; this.t2 = t2; - andOrTag.setSelectedTag(bAnd ? "AND" : "OR"); + logicalOperator = bAnd ? LogicalOperator.AND : LogicalOperator.OR; } @Override @@ -90,7 +88,7 @@ public class CombinedTerminator implements InterfaceTerminator, Serializable { return ret; } - if (andOrTag.isSelectedString("AND")) { + if (logicalOperator == LogicalOperator.AND) { // make sure that both terminators are triggered by every call, because some judge // time-dependently and store information on the population. ret = getTermState(t1, curPopOrSols); @@ -122,21 +120,18 @@ public class CombinedTerminator implements InterfaceTerminator, Serializable { } /** - * @return the andOrTag + * @return the logicalOperator */ - public SelectedTag getAndOrTag() { - return andOrTag; + public LogicalOperator getLogicalOperator() { + return logicalOperator; } /** - * @param andOrTag the andOrTag to set + * @param logicalOperator the logicalOperator to set */ - public void setAndOrTag(SelectedTag andOrTag) { - this.andOrTag = andOrTag; - } - - public String andOrTagTipText() { - return "Set the boolean operator to be used to combine the two terminators."; + @Parameter(description = "Set the boolean operator to be used to combine the two terminators.") + public void setLogicalOperator(LogicalOperator logicalOperator) { + this.logicalOperator = logicalOperator; } /** @@ -149,14 +144,11 @@ public class CombinedTerminator implements InterfaceTerminator, Serializable { /** * @param t1 the t1 to set */ + @Parameter(description = "The first terminator to be combined.") public void setTerminatorOne(InterfaceTerminator t1) { this.t1 = t1; } - public String terminatorOneTipText() { - return "The first terminator to be combined."; - } - /** * @return the t2 */ @@ -167,12 +159,8 @@ public class CombinedTerminator implements InterfaceTerminator, Serializable { /** * @param t2 the t2 to set */ + @Parameter(description = "The second terminator to be combined.") public void setTerminatorTwo(InterfaceTerminator t2) { this.t2 = t2; } - - public String terminatorTwoTipText() { - return "The second terminator to be combined."; - } - } diff --git a/src/eva2/optimization/operator/terminators/PopulationMeasureTerminator.java b/src/eva2/optimization/operator/terminators/PopulationMeasureTerminator.java index fdb8bff6..d6590a42 100644 --- a/src/eva2/optimization/operator/terminators/PopulationMeasureTerminator.java +++ b/src/eva2/optimization/operator/terminators/PopulationMeasureTerminator.java @@ -179,7 +179,7 @@ public abstract class PopulationMeasureTerminator implements InterfaceTerminator * Return true if the population measure did not exceed the * threshold for convergence since the last saved state. * - * @param curFit + * @param pop * @return */ protected boolean isStillConverged(PopulationInterface pop) {