Browse Source

AlgoFrameWork FlexInfo Update and Flex Fix

Tom 4 years ago
parent
commit
b56601a7fe

+ 47 - 0
src/api/AlgorithmFrameworkFlex.java

@@ -371,13 +371,60 @@ public abstract class AlgorithmFrameworkFlex implements AddOn{
 		}
 		printElapsedTime();
 		control.getSimManager().resetFlexManagerForTimeStep(control.getModel().getCurIteration());
+		this.extractPositionAndAccess();
 		setState(runBest.position);
 		updateVisual();
 		console.println("AlgoResult:" + runBest.fitness);
+		if(this.algoUseFlexes)calculateAndPrintFlexInfos(control.getSimManager().getActualDecorState());
 		runProgressbar.stop();
 	}
 	
 	
+	private void calculateAndPrintFlexInfos(DecoratedState state) {
+		int amountOfUsedFlex = 0;
+		int amountOfFlex = state.getFlexManager().getAllFlexWrapper().size();
+		float cost = 0;
+		int consumingFlex = 0;
+		float consumingFlexEnergy = 0.0f;
+		int producingFlex = 0;
+		float producingFlexEnergy = 0.0f;
+		int maxCooldown = 0;
+		for(FlexWrapper flexWrapper :state.getFlexManager().getAllFlexWrapperWithState(FlexState.IN_USE)) {
+			amountOfUsedFlex++;
+			cost += flexWrapper.getFlex().cost;
+			float energy = flexWrapper.getFlex().bringtmir();
+			if(energy < 0) {
+				consumingFlex++;
+				consumingFlexEnergy += -energy;
+			}else {
+				producingFlex++;
+				producingFlexEnergy += energy;
+			}
+			if(flexWrapper.getFlex().getCooldown() > maxCooldown) maxCooldown = flexWrapper.getFlex().getCooldown();
+		}
+		
+		
+		//Total Flexibilities:
+		//Used Flexibilities:
+		console.println("Used Flex [" + amountOfUsedFlex + "/" + amountOfFlex + "]");
+		
+		//Consuming Flexibilities:
+		console.println(consumingFlex + " consuimg flexibilities that consumed " + consumingFlexEnergy + "Energy.");
+		//Producing Flexibilities
+		console.println(producingFlex + " producing flexibilities that produce " + producingFlexEnergy + "Energy.");
+		//Total cost:
+		console.println("Total Cost: "+ cost);
+		//Longest Cooldown
+		console.println("Max Cooldown: "+ maxCooldown);
+		//
+		
+	}
+
+
+
+
+
+
 	protected abstract Individual executeAlgo();
 
 

+ 3 - 0
src/classes/Constrain.java

@@ -34,6 +34,9 @@ public class Constrain {
 	public static Constrain createOffConstrain() {
 		return new Constrain( offConstrain, "offConstrain");
 	}
+	
+	
+	
 	/**
 	 * Delete me ....
 	 * @return

+ 1 - 1
src/classes/Flexibility.java

@@ -90,7 +90,7 @@ public class Flexibility {
 	
 	public float bringtmir(){
 		//System.out.println("Name:" +  element.getEleName() + "   BringtMir:" + (-element.getEnergyPerElement() * element.getAmount()));
-		return (element.isActive()?-1.f:1.f) * element.getEnergyPerElement() * element.getAmount();
+		return (constrainList.stream().map(constrain -> constrain.getName()).anyMatch(name -> name.equals("onConstrain"))?-1.0f:1.0f) * element.getEnergyPerElement() * element.getAmount();
 	}
 	
 	

+ 1 - 0
src/ui/view/FlexWindow.java

@@ -281,6 +281,7 @@ public class FlexWindow extends JFrame {
 	+ "Cooldown: " + actual.getFlex().getCooldown() + "<br>"
 	//+ "Speed: " + actual.getFlex().speed + "<br>"
 	+ "Cost: " + actual.getFlex().cost + "<br>"
+	+ "BrigtMir: " + actual.getFlex().bringtmir() + "<br>"
 	+ "Constrains: " + actual.getFlex().constrainList.stream().map(constrain -> constrain.getName()).collect(Collectors.joining( "," )) + "<br>"
 	+ "</html>";