2828 */
2929public class OptimizerHill implements Runnable , Optimizer {
3030
31- private double sizeOfNeighborhood ;
31+ private final double sizeOfNeighborhood ;
3232 private static final OptimizerPreferences myPreferences = support .getOptimizerPreferences ();
3333
3434 private int simulationCounter = 0 ;
@@ -40,8 +40,8 @@ public class OptimizerHill implements Runnable, Optimizer {
4040 String pathToTimeNet = "" ;
4141 MainFrame parent = null ;
4242 JTabbedPane MeasureFormPane ;
43- ArrayList <MeasureType > listOfMeasures = new ArrayList <MeasureType >();//Get List of all measures from MainFrame //Empty here
44- ArrayList <SimulationType > historyOfParsers = new ArrayList <SimulationType >();//History of all simulation runs
43+ ArrayList <MeasureType > listOfMeasures = new ArrayList <>();//Get List of all measures from MainFrame //Empty here
44+ ArrayList <SimulationType > historyOfParsers = new ArrayList <>();//History of all simulation runs
4545 ArrayList <parameter > parameterBase ;//Base set of parameters, start/end-value, stepping, etc.
4646 SimulationCache mySimulationCache = new SimulationCache ();
4747 boolean optimized = false ;//False until Optimization is ended
@@ -72,6 +72,7 @@ public OptimizerHill() {
7272 * support-class and starts optimization
7373 *
7474 */
75+ @ Override
7576 public void initOptimizer () {
7677 this .pathToTimeNet = support .getPathToTimeNet ();// pathToTimeNetTMP;
7778 this .MeasureFormPane = support .getMeasureFormPane ();//MeasureFormPaneTMP;
@@ -92,6 +93,7 @@ public void initOptimizer() {
9293 /**
9394 * Main Routine for Thread. The Optimization runs here
9495 */
96+ @ Override
9597 public void run () {
9698 ArrayList <parameter > lastParameterset ;
9799 ArrayList <ArrayList <parameter >> newParameterset ;
@@ -116,7 +118,7 @@ public void run() {
116118 support .spinInLabel ();
117119
118120 newParameterset = getNextParametersetAsArrayList (lastParameterset );
119- listOfCompletedSimulations = null ;
121+ // listOfCompletedSimulations = null;
120122 //If result is already in cache, then count up corresponding counter
121123 //Else start simulation
122124
@@ -128,8 +130,8 @@ public void run() {
128130 listOfCompletedSimulations = support .shrinkArrayListToFirstMember (listOfCompletedSimulations );
129131
130132 //set all results to "cached", for statistics
131- for (int i = 0 ; i < listOfCompletedSimulations . size (); i ++ ) {
132- listOfCompletedSimulations . get ( i ) .setIsFromCache (true );
133+ for (SimulationType listOfCompletedSimulation : listOfCompletedSimulations ) {
134+ listOfCompletedSimulation .setIsFromCache (true );
133135 }
134136
135137 //If last parameterset is double, then count up eject-counter for LastInCache
@@ -150,8 +152,8 @@ public void run() {
150152 listOfCompletedSimulations = support .shrinkArrayListToFirstMember (listOfCompletedSimulations );
151153
152154 //Fit all resulting Simulation-Parameterlists
153- for (int i1 = 0 ; i1 < listOfCompletedSimulations . size (); i1 ++ ) {
154- listOfCompletedSimulations . get ( i1 ). setListOfParameters (listOfCompletedSimulations . get ( i1 ) .getListOfParametersFittedToBaseParameterset ());
155+ for (SimulationType listOfCompletedSimulation : listOfCompletedSimulations ) {
156+ listOfCompletedSimulation . setListOfParameters (listOfCompletedSimulation .getListOfParametersFittedToBaseParameterset ());
155157 }
156158
157159 //Add all Results to Cache
@@ -251,8 +253,7 @@ private ArrayList<parameter> getFirstParameterset() {
251253 support .log ("Taking Min-Values as Start for every Parameter." );
252254 //Calculate first parameterset, set every parameter to start-value
253255 //For this choosing strategy, the first element must be minimum
254- for (int i = 0 ; i < newParameterset .size (); i ++) {
255- parameter p = newParameterset .get (i );
256+ for (parameter p : newParameterset ) {
256257 if (p .isIteratableAndIntern ()) {
257258 p .setValue (p .getStartValue ());
258259 }
@@ -261,8 +262,7 @@ private ArrayList<parameter> getFirstParameterset() {
261262 case middle :
262263 support .log ("Taking Middle-Values as Start for every Parameter." );
263264 //Calulate first parameterset, the mean value of all parameters, with respect to stepping
264- for (int i = 0 ; i < newParameterset .size (); i ++) {
265- parameter p = newParameterset .get (i );
265+ for (parameter p : newParameterset ) {
266266 if (p .isIteratableAndIntern ()) {
267267 double distance = p .getEndValue () - p .getStartValue ();
268268 distance = Math .round (0.5 * distance / p .getStepping ()) * p .getStepping () + p .getStartValue ();
@@ -274,8 +274,7 @@ private ArrayList<parameter> getFirstParameterset() {
274274 support .log ("Taking Max-Values as Start for every Parameter." );
275275 //Calculate first parameterset, set every parameter to end-value
276276 //For this choosing strategy, the first element must be minimum
277- for (int i = 0 ; i < newParameterset .size (); i ++) {
278- parameter p = newParameterset .get (i );
277+ for (parameter p : newParameterset ) {
279278 if (p .isIteratableAndIntern ()) {
280279 p .setValue (p .getEndValue ());
281280 }
@@ -284,8 +283,7 @@ private ArrayList<parameter> getFirstParameterset() {
284283 case random :
285284 support .log ("Taking Random-Values as Start for every Parameter." );
286285 //Calulate first parameterset, the random value of all parameters, with respect to stepping
287- for (int i = 0 ; i < newParameterset .size (); i ++) {
288- parameter p = newParameterset .get (i );
286+ for (parameter p : newParameterset ) {
289287 if (p .isIteratableAndIntern ()) {
290288 double distance = p .getEndValue () - p .getStartValue ();
291289 double rnd = Math .random ();
@@ -297,8 +295,7 @@ private ArrayList<parameter> getFirstParameterset() {
297295 case preset :
298296 //Nothing to to, Value is already set to the preferred start-Value
299297 //But let`s make sure, set it to middle if something is wrong
300- for (int i = 0 ; i < newParameterset .size (); i ++) {
301- parameter p = newParameterset .get (i );
298+ for (parameter p : newParameterset ) {
302299 if (p .isIteratableAndIntern ()) {
303300 if ((p .getValue () < p .getStartValue ()) || (p .getValue () > p .getEndValue ())) {
304301 double distance = p .getEndValue () - p .getStartValue ();
@@ -354,7 +351,7 @@ protected ArrayList<parameter> getNextParameterset(ArrayList<parameter> actualPa
354351 support .log ("Number of Parameters in List: " + lastParameterList .size ());
355352
356353 //For every Parameter check if it is iteratable and if it was changed last time
357- int i = 0 ;
354+ int i ;
358355 numberOfLastParameter = -1 ;//Number of last parameter that was changed(in an Array of changable parameters)
359356 for (i = 0 ; i < lastParameterList .size (); i ++) {
360357 if (lastParameterList .get (i ).isIteratableAndIntern ()) {
@@ -438,9 +435,8 @@ protected ArrayList<parameter> getNextParameterset(ArrayList<parameter> actualPa
438435 incResult = support .getParameterByName (newParameterset , nameOfParameterToBeChanged ).incDecValue (this .directionOfOptimization );
439436 break ;
440437
441- case StepForwardBackRandom ://Step back and forward randomly based on stepping
442- for (int i = 0 ; i < newParameterset .size (); i ++) {
443- parameter p = newParameterset .get (i );
438+ case StepForwardBackRandom : //Step back and forward randomly based on stepping
439+ for (parameter p : newParameterset ) {
444440 if (p .isIteratableAndIntern ()) {
445441 double nextValue = 0.0 ;
446442 if (Math .random () >= 0.5 ) {
@@ -452,13 +448,11 @@ protected ArrayList<parameter> getNextParameterset(ArrayList<parameter> actualPa
452448 }
453449 }
454450 break ;
455- case RandomStepInNeighborhood ://Calculate neighborhood and choose next value randomly
456- for (int i = 0 ; i < newParameterset .size (); i ++) {
457- parameter p = newParameterset .get (i );
451+ case RandomStepInNeighborhood : //Calculate neighborhood and choose next value randomly
452+ for (parameter p : newParameterset ) {
458453 if (p .isIteratableAndIntern ()) {
459- double nextValue = 0.0 ;
460454 double stepCount = (p .getEndValue () - p .getStartValue ()) / p .getStepping ();
461- nextValue = p .getStepping () * Math .round (Math .random () * stepCount * this .sizeOfNeighborhood / 100 );
455+ double nextValue = p .getStepping () * Math .round (Math .random () * stepCount * this .sizeOfNeighborhood / 100 );
462456 if (Math .random () >= 0.5 ) {
463457 nextValue = Math .min (p .getValue () + nextValue , p .getEndValue ());
464458 } else {
@@ -469,25 +463,21 @@ protected ArrayList<parameter> getNextParameterset(ArrayList<parameter> actualPa
469463 }
470464 incResult = true ;
471465 break ;
472- case RandomStepInDesignspace ://Choose Value randomly out of complete designspace
473- for (int i = 0 ; i < newParameterset .size (); i ++) {
474- parameter p = newParameterset .get (i );
466+ case RandomStepInDesignspace : //Choose Value randomly out of complete designspace
467+ for (parameter p : newParameterset ) {
475468 if (p .isIteratableAndIntern ()) {
476- double nextValue = 0.0 ;
477469 double stepCount = (p .getEndValue () - p .getStartValue ()) / p .getStepping ();
478- nextValue = p .getStartValue () + Math .round (Math .random () * stepCount );
470+ double nextValue = p .getStartValue () + Math .round (Math .random () * stepCount );
479471 p .setValue (nextValue );
480472 }
481473 }
482474 incResult = true ;
483475 break ;
484476 case RandomSteplessInNeighborhood : //Calculate neighborhood and choose next value randomly, Ignore Stepping!
485- for (int i = 0 ; i < newParameterset .size (); i ++) {
486- parameter p = newParameterset .get (i );
477+ for (parameter p : newParameterset ) {
487478 if (p .isIteratableAndIntern ()) {
488- double nextValue = 0.0 ;
489479 double range = (p .getEndValue () - p .getStartValue ());
490- nextValue = Math .round (Math .random () * range * this .sizeOfNeighborhood / 100 );
480+ double nextValue = Math .round (Math .random () * range * this .sizeOfNeighborhood / 100 );
491481 if (Math .random () >= 0.5 ) {
492482 nextValue = Math .min (p .getValue () + nextValue , p .getEndValue ());
493483 } else {
@@ -532,7 +522,7 @@ protected ArrayList<parameter> getNextParameterset(ArrayList<parameter> actualPa
532522 * @return ArrayList of Parametersets
533523 */
534524 private ArrayList < ArrayList <parameter >> getNextParametersetAsArrayList (ArrayList <parameter > actualParameterset ) {
535- ArrayList < ArrayList <parameter >> myParametersetList = new ArrayList < ArrayList < parameter > >();
525+ ArrayList < ArrayList <parameter >> myParametersetList = new ArrayList <>();
536526 myParametersetList .add (getNextParameterset (actualParameterset ));
537527 return myParametersetList ;
538528 }
@@ -541,7 +531,7 @@ private ArrayList< ArrayList<parameter>> getNextParametersetAsArrayList(ArrayLis
541531 * Wrapper, returns ArrayList of ArrayList of Parameters
542532 */
543533 private ArrayList < ArrayList <parameter >> getParametersetAsArrayList (ArrayList <parameter > actualParameterset ) {
544- ArrayList < ArrayList <parameter >> myParametersetList = new ArrayList < ArrayList < parameter > >();
534+ ArrayList < ArrayList <parameter >> myParametersetList = new ArrayList <>();
545535 myParametersetList .add (actualParameterset );
546536 return myParametersetList ;
547537 }
@@ -556,9 +546,9 @@ private ArrayList< ArrayList<parameter>> getParametersetAsArrayList(ArrayList<pa
556546 */
557547 protected double getActualDistance (SimulationType p ) {
558548 double distance = 0 ;
559- for (int measureCount = 0 ; measureCount < listOfMeasures . size (); measureCount ++ ) {
560- MeasureType activeMeasure = p .getMeasureByName (listOfMeasures . get ( measureCount ) .getMeasureName ());
561- MeasureType activeMeasureFromInterface = listOfMeasures . get ( measureCount ); //Contains Optimization targets
549+ for (MeasureType listOfMeasure : listOfMeasures ) {
550+ MeasureType activeMeasure = p .getMeasureByName (listOfMeasure .getMeasureName ());
551+ MeasureType activeMeasureFromInterface = listOfMeasure ; //Contains Optimization targets
562552 activeMeasure .setTargetValue (activeMeasureFromInterface .getTargetValue (), activeMeasureFromInterface .getTargetTypeOf ());
563553 if (activeMeasure .getTargetTypeOf ().equals (typedef .typeOfTarget .value )) {
564554 distance = activeMeasure .getDistanceFromTarget ();
@@ -595,6 +585,7 @@ public void setSimulationCounter(int simulationCounter) {
595585 *
596586 * @return null if optimization not yet ended, else Optimum
597587 */
588+ @ Override
598589 public SimulationType getOptimum () {
599590 if (this .optimized ) {
600591 support .log ("Its optimized, so returning best solution." );
@@ -611,6 +602,7 @@ public SimulationType getOptimum() {
611602 *
612603 * @param name Name (path) of logfile
613604 */
605+ @ Override
614606 public void setLogFileName (String name ) {
615607 this .logFileName = name ;
616608 }
@@ -620,6 +612,7 @@ public void setLogFileName(String name) {
620612 *
621613 * @return name of logfile
622614 */
615+ @ Override
623616 public String getLogFileName () {
624617 return this .logFileName ;
625618 }
0 commit comments