From 84e9b99123df3655d83e816a1ba81a0398cbdc92 Mon Sep 17 00:00:00 2001 From: Tobias Meuser Date: Mon, 18 Sep 2017 15:01:29 +0200 Subject: [PATCH] Added option to block edges without failures in SUMO --- .../traci/TraciSimulationController.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/de/tud/kom/p2psim/impl/topology/movement/vehicular/sumo/simulation/controller/traci/TraciSimulationController.java b/src/de/tud/kom/p2psim/impl/topology/movement/vehicular/sumo/simulation/controller/traci/TraciSimulationController.java index b363bea2..7e39ae1c 100755 --- a/src/de/tud/kom/p2psim/impl/topology/movement/vehicular/sumo/simulation/controller/traci/TraciSimulationController.java +++ b/src/de/tud/kom/p2psim/impl/topology/movement/vehicular/sumo/simulation/controller/traci/TraciSimulationController.java @@ -44,6 +44,8 @@ import it.polito.appeal.traci.SumoTraciConnection; public class TraciSimulationController implements VehicleController, SimulationSetupExtractor, EdgeController { private static final File TEMP_FILE = new File(new File(System.getProperty("java.io.tmpdir")), "road_network.tmp"); + private List modifiedEdges = new ArrayList<>(); + private static final Map CONTROLLER = new HashMap<>(); private static final double CLUSTERING_DISTANCE = 50; @@ -182,6 +184,13 @@ public class TraciSimulationController implements VehicleController, SimulationS @Override public boolean nextStep() { try { + for (RoadNetworkEdge roadNetworkEdge : modifiedEdges) { + SumoCommand setMaxSpeedCommand = Edge.setMaxSpeed(roadNetworkEdge.getEdgeID(), roadNetworkEdge.getOriginalMaxSpeed()); + + execute(setMaxSpeedCommand); + } + + _connection.do_timestep(); try { @@ -214,6 +223,12 @@ public class TraciSimulationController implements VehicleController, SimulationS e.printStackTrace(); } + for (RoadNetworkEdge roadNetworkEdge : modifiedEdges) { + SumoCommand setMaxSpeedCommand = Edge.setMaxSpeed(roadNetworkEdge.getEdgeID(), roadNetworkEdge.getMaxSpeed()); + + execute(setMaxSpeedCommand); + } + return true; } catch (RuntimeException e) { throw e; @@ -672,6 +687,18 @@ public class TraciSimulationController implements VehicleController, SimulationS SumoCommand setMaxSpeedCommand = Edge.setMaxSpeed(pEdgeID, pMaxSpeed); execute(setMaxSpeedCommand); + + RoadNetworkEdge edge = _roadNetwork.getEdge(pEdgeID); + + edge.setMaxSpeed(pMaxSpeed); + + if (edge.getOriginalMaxSpeed() != pMaxSpeed) { + if (!modifiedEdges.contains(edge)) { + modifiedEdges.add(edge); + } + } else { + modifiedEdges.remove(edge); + } } } -- GitLab