|
@@ -71,14 +71,14 @@ public class SimulationManager {
|
|
* @param updateVisual TODO
|
|
* @param updateVisual TODO
|
|
*/
|
|
*/
|
|
public void calculateStateForTimeStep(int timestep, boolean updateVisual) {
|
|
public void calculateStateForTimeStep(int timestep, boolean updateVisual) {
|
|
- FlexManager newFlexManager = new FlexManager(model, timestep, savesFlexManger.getOrDefault(timestep-1, null));
|
|
|
|
- //Actual ordered not delete:
|
|
|
|
- FlexManager flexManagerFromActual = savesFlexManger.getOrDefault(timestep, null);
|
|
|
|
- if(flexManagerFromActual != null) {
|
|
|
|
- newFlexManager.orderFlexFromList(flexManagerFromActual.getAllFlexesOrderedThisTimeStep());
|
|
|
|
- }
|
|
|
|
- savesFlexManger.put(timestep, newFlexManager);
|
|
|
|
|
|
|
|
|
|
+// long startTime = System.currentTimeMillis(), endTime;
|
|
|
|
+ boolean doesFlexManagerExist = savesFlexManger.containsKey(timestep);
|
|
|
|
+ FlexManager newFlexManager = doesFlexManagerExist? savesFlexManger.get(timestep): new FlexManager(model, timestep, savesFlexManger.get(timestep-1));
|
|
|
|
+ if(!doesFlexManagerExist) savesFlexManger.put(timestep, newFlexManager);
|
|
|
|
+// endTime = System.currentTimeMillis();
|
|
|
|
+// System.out.print(" a:" + (endTime - startTime));
|
|
|
|
+// startTime = endTime;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -94,6 +94,13 @@ public class SimulationManager {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
timeStep = timestep;
|
|
timeStep = timestep;
|
|
|
|
+
|
|
|
|
+// endTime = System.currentTimeMillis();
|
|
|
|
+// System.out.print(" b:" + (endTime - startTime));
|
|
|
|
+// startTime = endTime;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
ArrayList<MinimumNetwork> list = new ArrayList<MinimumNetwork>();
|
|
ArrayList<MinimumNetwork> list = new ArrayList<MinimumNetwork>();
|
|
MinimumModel minimumModel = new MinimumModel(model.getObjectsOnCanvas(), model.getEdgesOnCanvas());
|
|
MinimumModel minimumModel = new MinimumModel(model.getObjectsOnCanvas(), model.getEdgesOnCanvas());
|
|
//set all BreakedManuel Cable Burned:
|
|
//set all BreakedManuel Cable Burned:
|
|
@@ -106,6 +113,14 @@ public class SimulationManager {
|
|
if(map.containsKey(cable.getModel())) cable.setState(map.get(cable.getModel()));
|
|
if(map.containsKey(cable.getModel())) cable.setState(map.get(cable.getModel()));
|
|
}
|
|
}
|
|
ArrayList<IntermediateCableWithState> leftOver = new ArrayList<IntermediateCableWithState>();
|
|
ArrayList<IntermediateCableWithState> leftOver = new ArrayList<IntermediateCableWithState>();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// endTime = System.currentTimeMillis();
|
|
|
|
+// System.out.print(" c:" + (endTime - startTime));
|
|
|
|
+// startTime = endTime;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
boolean doAnotherLoop = true;
|
|
boolean doAnotherLoop = true;
|
|
while(doAnotherLoop) {
|
|
while(doAnotherLoop) {
|
|
doAnotherLoop = false;
|
|
doAnotherLoop = false;
|
|
@@ -125,15 +140,28 @@ public class SimulationManager {
|
|
for (MinimumNetwork net : list) {
|
|
for (MinimumNetwork net : list) {
|
|
decorNetworks.add(new DecoratedNetwork(net, timestep, actualFairnessModel, newFlexManager));
|
|
decorNetworks.add(new DecoratedNetwork(net, timestep, actualFairnessModel, newFlexManager));
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// endTime = System.currentTimeMillis();
|
|
|
|
+// System.out.print(" d:" + (endTime - startTime));
|
|
|
|
+// startTime = endTime;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
ArrayList<DecoratedCable> leftOverDecoratedCables = new ArrayList<DecoratedCable>();
|
|
ArrayList<DecoratedCable> leftOverDecoratedCables = new ArrayList<DecoratedCable>();
|
|
|
|
|
|
for(IntermediateCableWithState cable: leftOver) {
|
|
for(IntermediateCableWithState cable: leftOver) {
|
|
leftOverDecoratedCables.add(new DecoratedCable(cable.getModel(), cable.getState(), 0.0f));
|
|
leftOverDecoratedCables.add(new DecoratedCable(cable.getModel(), cable.getState(), 0.0f));
|
|
}
|
|
}
|
|
ArrayList<DecoratedSwitch> listOfDecoratedSwitches = decorateSwitches(minimumModel, timestep);
|
|
ArrayList<DecoratedSwitch> listOfDecoratedSwitches = decorateSwitches(minimumModel, timestep);
|
|
- DecoratedState stateFromThisTimestep = new DecoratedState(decorNetworks, leftOverDecoratedCables, listOfDecoratedSwitches, flexManagerFromActual, timestep);
|
|
|
|
|
|
+ DecoratedState stateFromThisTimestep = new DecoratedState(decorNetworks, leftOverDecoratedCables, listOfDecoratedSwitches, newFlexManager, timestep);
|
|
saves.put(timestep, stateFromThisTimestep);
|
|
saves.put(timestep, stateFromThisTimestep);
|
|
if(updateVisual)savesVisual.put(timestep, new VisualRepresentationalState(stateFromThisTimestep, minimumModel));
|
|
if(updateVisual)savesVisual.put(timestep, new VisualRepresentationalState(stateFromThisTimestep, minimumModel));
|
|
|
|
+
|
|
|
|
+// endTime = System.currentTimeMillis();
|
|
|
|
+// System.out.println(" e:" + (endTime - startTime));
|
|
|
|
+// startTime = endTime;
|
|
|
|
+
|
|
}
|
|
}
|
|
/**
|
|
/**
|
|
* Decorate a switch
|
|
* Decorate a switch
|
|
@@ -268,12 +296,11 @@ public class SimulationManager {
|
|
savesFlexManger.clear();
|
|
savesFlexManger.clear();
|
|
}
|
|
}
|
|
public void resetFlexManagerForTimeStep(int timestep) {
|
|
public void resetFlexManagerForTimeStep(int timestep) {
|
|
- FlexManager newFlexManager = new FlexManager(model, timestep, savesFlexManger.getOrDefault(timestep-1, null));
|
|
|
|
- savesFlexManger.put(timestep, newFlexManager);
|
|
|
|
|
|
+ savesFlexManger.get(timestep).reset();
|
|
}
|
|
}
|
|
|
|
|
|
public DecoratedState getDecorState(int timestep) {
|
|
public DecoratedState getDecorState(int timestep) {
|
|
- return saves.getOrDefault(timestep, null);
|
|
|
|
|
|
+ return saves.get(timestep);
|
|
}
|
|
}
|
|
public VisualRepresentationalState getVisualRepresentationalState(int timestep) {
|
|
public VisualRepresentationalState getVisualRepresentationalState(int timestep) {
|
|
return savesVisual.getOrDefault(timestep, null);
|
|
return savesVisual.getOrDefault(timestep, null);
|