|
@@ -414,7 +414,7 @@ public abstract class AlgorithmFrameworkFlex implements AddOn{
|
|
|
if(runThread.isAlive()) {
|
|
|
console.println("Cancel run.");
|
|
|
cancel = true;
|
|
|
- runProgressbar.stop();
|
|
|
+ runProgressbar.cancel();
|
|
|
} else {
|
|
|
console.println("Nothing to cancel.");
|
|
|
}
|
|
@@ -444,11 +444,31 @@ public abstract class AlgorithmFrameworkFlex implements AddOn{
|
|
|
|
|
|
protected double evaluatePosition(List<Boolean> positionToEvaluate) {
|
|
|
runProgressbar.step();
|
|
|
- control.getSimManager().resetFlexManagerForTimeStep(control.getModel().getCurIteration());
|
|
|
- setState(positionToEvaluate);
|
|
|
+// long startTime = System.currentTimeMillis(), endTime;
|
|
|
+ control.getSimManager().resetFlexManagerForTimeStep(control.getModel().getCurIteration()); // execution time critical
|
|
|
+// endTime = System.currentTimeMillis();
|
|
|
+// console.print(" a:" + (endTime - startTime));
|
|
|
+// startTime = endTime;
|
|
|
+ setState(positionToEvaluate); // execution time critical
|
|
|
+// endTime = System.currentTimeMillis();
|
|
|
+// console.print(" b:" + (endTime - startTime));
|
|
|
+// startTime = endTime;
|
|
|
control.calculateStateOnlyForCurrentTimeStep();
|
|
|
+// endTime = System.currentTimeMillis();
|
|
|
+// console.print(" c:" + (endTime - startTime));
|
|
|
+// startTime = endTime;
|
|
|
DecoratedState actualstate = control.getSimManager().getActualDecorState();
|
|
|
- return evaluateState(actualstate);
|
|
|
+// endTime = System.currentTimeMillis();
|
|
|
+// console.print(" d:" + (endTime - startTime));
|
|
|
+// startTime = endTime;
|
|
|
+ double result = evaluateState(actualstate);
|
|
|
+// endTime = System.currentTimeMillis();
|
|
|
+// console.print(" e:" + (endTime - startTime));
|
|
|
+// startTime = endTime;
|
|
|
+// long inUse = actualstate.getFlexManager().getAllFlexWrapperWithState(FlexState.IN_USE).size();
|
|
|
+// long all = actualstate.getFlexManager().getAllFlexWrapper().size();
|
|
|
+// console.println(" [" + inUse + "/" + all + "]");
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
protected abstract double evaluateState(DecoratedState actualstate);
|
|
@@ -471,6 +491,7 @@ public abstract class AlgorithmFrameworkFlex implements AddOn{
|
|
|
|
|
|
}
|
|
|
updateVisual();
|
|
|
+ runProgressbar.finishedCancel();
|
|
|
control.guiDisable(false);
|
|
|
runPrinter.closeStream();
|
|
|
}
|
|
@@ -518,6 +539,8 @@ public abstract class AlgorithmFrameworkFlex implements AddOn{
|
|
|
|
|
|
|
|
|
private void executeAlgoWithParameter(){
|
|
|
+ double startFitness = evaluatePosition(extractPositionAndAccess());
|
|
|
+ resetChain.removeLast();
|
|
|
runPrinter.println(algoInformationToPrint());
|
|
|
runProgressbar.start();
|
|
|
Individual runBest = new Individual();
|
|
@@ -540,9 +563,9 @@ public abstract class AlgorithmFrameworkFlex implements AddOn{
|
|
|
this.extractPositionAndAccess();
|
|
|
setState(runBest.position);
|
|
|
updateVisual();
|
|
|
- console.println("AlgoResult:" + runBest.fitness);
|
|
|
+ console.println("Start: " + startFitness);
|
|
|
+ console.println("AlgoResult: " + runBest.fitness);
|
|
|
if(this.algoUseFlexes)calculateAndPrintFlexInfos(control.getSimManager().getActualDecorState());
|
|
|
- runProgressbar.stop();
|
|
|
}
|
|
|
|
|
|
|
|
@@ -662,6 +685,10 @@ public abstract class AlgorithmFrameworkFlex implements AddOn{
|
|
|
access.add(new AccessWrapper(flex.getFlex()));
|
|
|
initialState.add(false);
|
|
|
}
|
|
|
+ for(FlexWrapper flex :control.getSimManager().getActualFlexManager().getAllFlexWrapperWithState(FlexState.IN_USE)){
|
|
|
+ access.add(new AccessWrapper(flex.getFlex()));
|
|
|
+ initialState.add(true);
|
|
|
+ }
|
|
|
}
|
|
|
//console.println(access.stream().map(Object::toString).collect(Collectors.joining(", ")));
|
|
|
return initialState;
|
|
@@ -751,14 +778,20 @@ public abstract class AlgorithmFrameworkFlex implements AddOn{
|
|
|
|
|
|
public void step() {
|
|
|
if(isActive) progressBar.setValue(count++);
|
|
|
- progressBar.setMaximum(getProgressBarMaxCount());
|
|
|
}
|
|
|
public void start() {
|
|
|
+ progressBar.setIndeterminate(false);
|
|
|
+ count = 0;
|
|
|
isActive = true;
|
|
|
progressBar.setValue(0);
|
|
|
+ progressBar.setMaximum(getProgressBarMaxCount());
|
|
|
}
|
|
|
- public void stop() {
|
|
|
+ public void cancel() {
|
|
|
isActive = false;
|
|
|
+ progressBar.setIndeterminate(true);
|
|
|
+ }
|
|
|
+ public void finishedCancel() {
|
|
|
+ progressBar.setIndeterminate(false);
|
|
|
progressBar.setValue(0);
|
|
|
}
|
|
|
public JProgressBar getJProgressBar(){
|