@Override protected final void prepareForSim() { this.prepareForSim.run(); }
private static QSim createQSim(Fixture f, EventsManager events) { // vehicles are moved to prepareForSim, thus, this must be explicitly called before qsim. Amit May'17 PrepareForSimUtils.createDefaultPrepareForSim(f.scenario).run(); return new QSimBuilder(f.scenario.getConfig()) // .useDefaults() // .build(f.scenario, events); }
public static void playScenario(Scenario scenario){ EventsManager events = EventsUtils.createEventsManager(); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); QSim qSim = new QSimBuilder(scenario.getConfig()) // .useDefaults() // .build(scenario, events); OnTheFlyServer server = startServerAndRegisterWithQSim(scenario.getConfig(),scenario, events, qSim); OTFClientLive.run(scenario.getConfig(), server); qSim.run(); }
private static QSim createQSim(MutableScenario scenario, EventsManager events) { // vehicles are moved to prepareForSim, thus, this must be explicitly called before qsim. Amit May'17 PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); return new QSimBuilder(scenario.getConfig()) // .useDefaults() // .build(scenario, events); }
private void vehiclesLeavingSameTime(String travelMode, double linkCapacity){ PseudoInputs net = new PseudoInputs(travelMode); net.createNetwork(linkCapacity); net.createPopulation(); Map<Id<Vehicle>, Map<Id<Link>, double[]>> vehicleLinkTravelTimes = new HashMap<>(); EventsManager manager = EventsUtils.createEventsManager(); manager.addHandler(new VehicleLinkTravelTimeEventHandler(vehicleLinkTravelTimes)); PrepareForSimUtils.createDefaultPrepareForSim(net.scenario).run(); new QSimBuilder(net.scenario.getConfig()) // .useDefaults() // .build(net.scenario, manager) // .run(); Map<Id<Link>, double[]> times1 = vehicleLinkTravelTimes.get(Id.create("1", Vehicle.class)); Map<Id<Link>, double[]> times2 = vehicleLinkTravelTimes.get(Id.create("2", Vehicle.class)); int linkEnterTime1 = (int)times1.get(Id.create("2", Link.class))[0]; int linkEnterTime2 = (int)times2.get(Id.create("2", Link.class))[0]; int linkLeaveTime1 = (int)times1.get(Id.create("2", Link.class))[1]; int linkLeaveTime2 = (int)times2.get(Id.create("2", Link.class))[1]; Assert.assertEquals(travelMode+ " entered at different time", 0, linkEnterTime1-linkEnterTime2); Assert.assertEquals(travelMode +" entered at same time but not leaving the link at the same time.", 0, linkLeaveTime1-linkLeaveTime2); }
@Test public void testToCheckTravelTime () { // 2 cars depart on same time, central (bottleneck) link allow only 1 agent / 10 sec. PseudoInputs net = new PseudoInputs(); net.createNetwork(360); net.createPopulation(); Map<Id<Vehicle>, Double> vehicleLinkTravelTime = new HashMap<>(); EventsManager manager = EventsUtils.createEventsManager(); manager.addHandler(new VehicleLinkTravelTimeEventHandler(vehicleLinkTravelTime)); PrepareForSimUtils.createDefaultPrepareForSim(net.scenario).run(); new QSimBuilder(net.scenario.getConfig()) // .useDefaults() // .build(net.scenario, manager) // .run(); //agent 2 is departed first so will have free speed time = 1000/25 +1 = 41 sec Assert.assertEquals( "Wrong travel time for on link 2 for vehicle 2" , 41.0 , vehicleLinkTravelTime.get(Id.createVehicleId(2)) , MatsimTestUtils.EPSILON); // agent 1 should have 1000/25 +1 + 10 = 51 but, it may be 52 sec sometimes due to rounding errors in java. Rounding errors is eliminated at the moment if accumulating flow to zero instead of one. Assert.assertEquals( "Wrong travel time for on link 2 for vehicle 1" , 51.0 , vehicleLinkTravelTime.get(Id.createVehicleId(1)) , MatsimTestUtils.EPSILON); Logger.getLogger(JavaRoundingErrorInQsimTest.class).warn("Although the test is passing instead of failing for vehicle 1. This is done intentionally in order to keep this in mind for future."); }
@Test public void testEquilOneAgent() { Map<Id<Vehicle>, Map<Id<Link>, Double>> agentTravelTimes = new HashMap<>(); Config config = ConfigUtils.loadConfig("test/scenarios/equil/config.xml"); MatsimRandom.reset(config.global().getRandomSeed()); Scenario scenario = ScenarioUtils.createScenario(config); String popFileName = "plans1.xml"; config.plans().setInputFile(popFileName); ScenarioUtils.loadScenario(scenario); EventsManager events = EventsUtils.createEventsManager(); events.addHandler(new EventTestHandler(agentTravelTimes)); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); new QSimBuilder(scenario.getConfig()) // .useDefaults() // .build(scenario, events) // .run(); Map<Id<Link>, Double> travelTimes = agentTravelTimes.get(Id.create("1", Vehicle.class)); Assert.assertEquals(360.0, travelTimes.get(Id.create(6, Link.class)).intValue(), MatsimTestUtils.EPSILON); Assert.assertEquals(180.0, travelTimes.get(Id.create(15, Link.class)).intValue(), MatsimTestUtils.EPSILON); // this one is NOT a travel time (it includes two activities and a zero-length trip) Assert.assertEquals(13561.0, travelTimes.get(Id.create(20, Link.class)).intValue(), MatsimTestUtils.EPSILON); Assert.assertEquals(360.0, travelTimes.get(Id.create(21, Link.class)).intValue(), MatsimTestUtils.EPSILON); Assert.assertEquals(1260.0, travelTimes.get(Id.create(22, Link.class)).intValue(), MatsimTestUtils.EPSILON); Assert.assertEquals(360.0, travelTimes.get(Id.create(23, Link.class)).intValue(), MatsimTestUtils.EPSILON); }
PrepareForSimUtils.createDefaultPrepareForSim(inputs.scenario).run(); new QSimBuilder(inputs.scenario.getConfig()) //
public void testRunsAtAll() { Scenario scenario = ScenarioUtils.createScenario(ConfigUtils.createConfig()); EventsManager eventsManager = EventsUtils.createEventsManager(scenario.getConfig()); eventsManager.initProcessing(); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); QSim qsim = prepareQSim(scenario, eventsManager); qsim.run(); }
public void testRunsEquil() { Scenario scenario = ScenarioUtils.loadScenario(loadConfig("test/scenarios/equil/config.xml")); EventsManager eventsManager = EventsUtils.createEventsManager(scenario.getConfig()); eventsManager.initProcessing(); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); QSim qsim = prepareQSim(scenario, eventsManager); qsim.run(); }
@Test public void testIntegration_Default() { Fixture f = new Fixture(); EventsCollector collector = new EventsCollector(); f.events.addHandler(collector); f.events.addHandler(new EventsLogger()); PrepareForSimUtils.createDefaultPrepareForSim(f.scenario).run(); new QSimBuilder(f.scenario.getConfig()) // .useDefaults() // .build(f.scenario, f.events) // .run(); List<Event> events = collector.getEvents(); Assert.assertTrue(events.get(5) instanceof LinkEnterEvent); LinkEnterEvent lee = (LinkEnterEvent) events.get(5); Assert.assertEquals("1", lee.getVehicleId().toString()); Assert.assertEquals("2", lee.getLinkId().toString()); Assert.assertTrue(events.get(6) instanceof LinkLeaveEvent); LinkLeaveEvent lle = (LinkLeaveEvent) events.get(6); Assert.assertEquals("1", lle.getVehicleId().toString()); Assert.assertEquals("2", lle.getLinkId().toString()); // by default, the link takes 10 seconds to travel along, plus 1 second in the buffer, makes total of 11 seconds Assert.assertEquals(11, lle.getTime() - lee.getTime(), 1e-8); }
public void testCapacityWoLanes() { Config config = ConfigUtils.createConfig(); MutableScenario scenario = (MutableScenario) ScenarioUtils.createScenario(config); initNetwork(scenario.getNetwork()); EventsManager eventsManager = EventsUtils.createEventsManager(); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); QSim queueSim = new QSimBuilder(scenario.getConfig()) // .useDefaults() // .build(scenario, eventsManager); NetsimNetwork queueNetwork = queueSim.getNetsimNetwork(); QLinkImpl ql = (QLinkImpl) queueNetwork.getNetsimLink(Id.create(1, Link.class)); assertEquals(0.5, ql.getSimulatedFlowCapacityPerTimeStep()); assertEquals(268.0, ql.getSpaceCap()); }
@Test public void testInitializationDeparture() { Config config = ConfigUtils.createConfig(); config.transit().setUseTransit(true); Scenario scenario = ScenarioUtils.createScenario(config); EventsManager eventsManager = EventsUtils.createEventsManager(); TransitStopAgentTracker tracker = new TransitStopAgentTracker(eventsManager); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); QSim tqsim = new QSimBuilder(scenario.getConfig()) // .useDefaults() // .build(scenario, eventsManager); TransitQSimEngine trEngine = new TransitQSimEngine(tqsim) ; tqsim.addMobsimEngine(trEngine); TransitScheduleFactory builder = scenario.getTransitSchedule().getFactory(); TransitLine tLine = builder.createTransitLine(Id.create("L", TransitLine.class)); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(null, null); TransitRoute tRoute = builder.createTransitRoute(Id.create("L1", TransitRoute.class), route, Collections.<TransitRouteStop>emptyList(), "bus"); double depTime = 9876.5; Departure dep = builder.createDeparture(Id.create("L1.1", Departure.class), depTime); tRoute.addDeparture(dep); tLine.addRoute(tRoute); AbstractTransitDriverAgent driver = new TransitDriverAgentImpl(new SingletonUmlaufBuilderImpl(Collections.singleton(tLine)).build().get(0), TransportMode.car, tracker, trEngine.getInternalInterface()); assertEquals(depTime, driver.getActivityEndTime(), MatsimTestCase.EPSILON); }
public void testInitializationDeparture() { TransitScheduleFactory builder = new TransitScheduleFactoryImpl(); TransitLine tLine = builder.createTransitLine(Id.create("L", TransitLine.class)); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(null, null); TransitRoute tRoute = builder.createTransitRoute(Id.create("L", TransitRoute.class), route, Collections.<TransitRouteStop>emptyList(), "bus"); double depTime = 9876.5; Departure dep = builder.createDeparture(Id.create("L1.1", Departure.class), depTime); tRoute.addDeparture(dep); tLine.addRoute(tRoute); Umlauf umlauf = buildUmlauf(tLine); EventsManager events = EventsUtils.createEventsManager(); TransitStopAgentTracker tracker = new TransitStopAgentTracker(events); Scenario scenario = ScenarioUtils.createScenario(ConfigUtils.createConfig()); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); QSim tqsim = new QSimBuilder(scenario.getConfig()) // .useDefaults() // .build(scenario, events); TransitQSimEngine trEngine = new TransitQSimEngine(tqsim) ; tqsim.addMobsimEngine(trEngine); AbstractTransitDriverAgent driver = new TransitDriverAgentImpl(umlauf, TransportMode.car, tracker, trEngine.getInternalInterface()); assertEquals(depTime, driver.getActivityEndTime(), MatsimTestCase.EPSILON); }
PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); new QSimBuilder(scenario.getConfig()) //
eventsManager.addHandler(writer); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); QSim qSim = new QSimBuilder(scenario.getConfig()) //
/** * test simulated capacity of link 1 in case without lanes. * the capacity should correspond to the given flow capacity of the link */ public void testCapacityWoLanes() { Config config = ConfigUtils.createConfig(); ActivityParams dummyAct = new ActivityParams("dummy"); dummyAct.setTypicalDuration(12 * 3600); config.planCalcScore().addActivityParams(dummyAct); MutableScenario scenario = (MutableScenario) ScenarioUtils.createScenario(config); initNetwork(scenario.getNetwork()); initPopulation(scenario.getPopulation()); EventsManager events = EventsUtils.createEventsManager(); SimulatedCapacityHandler simulatedCapacity = new SimulatedCapacityHandler(); events.addHandler(simulatedCapacity); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); new QSimBuilder(scenario.getConfig()) // .useDefaults() // .build(scenario, events) // .run(); // check simulated capacity values assertEquals(1800, simulatedCapacity.getSimulatedLinkCapacity(), MatsimTestUtils.EPSILON); }
/** * test simulated capacities of link 1 in case of one lane representing two lanes. * the capacity of the link should correspond to the capacity of the lane, also when it is less than the link capacity given in the network. */ public void testCapacityWithOneLaneTwoLanes() { Config config = ConfigUtils.createConfig(); ActivityParams dummyAct = new ActivityParams("dummy"); dummyAct.setTypicalDuration(12 * 3600); config.planCalcScore().addActivityParams(dummyAct); MutableScenario scenario = (MutableScenario) ScenarioUtils.createScenario(config); initNetwork(scenario.getNetwork()); createOneLane(scenario, 2); initPopulation(scenario.getPopulation()); EventsManager events = EventsUtils.createEventsManager(); SimulatedCapacityHandler simulatedCapacity = new SimulatedCapacityHandler(); events.addHandler(simulatedCapacity); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); new QSimBuilder(scenario.getConfig()) // .useDefaults() // .build(scenario, events) // .run(); // check simulated capacity values assertEquals(simulatedCapacity.getSimulatedLaneCapacity(Id.create("1", Lane.class)), simulatedCapacity.getSimulatedLinkCapacity(), MatsimTestUtils.EPSILON); assertEquals(1800, simulatedCapacity.getSimulatedLaneCapacity(Id.create("1.ol", Lane.class)), MatsimTestUtils.EPSILON); assertEquals(2*900, simulatedCapacity.getSimulatedLaneCapacity(Id.create("1", Lane.class)), MatsimTestUtils.EPSILON); }
/** * test simulated capacities of link 1 in case of one lane representing one lane. * the capacity of the link should correspond to the capacity of the lane, also when it is less than the link capacity given in the network. */ public void testCapacityWithOneLaneOneLane() { Config config = ConfigUtils.createConfig(); ActivityParams dummyAct = new ActivityParams("dummy"); dummyAct.setTypicalDuration(12 * 3600); config.planCalcScore().addActivityParams(dummyAct); MutableScenario scenario = (MutableScenario) ScenarioUtils.createScenario(config); initNetwork(scenario.getNetwork()); createOneLane(scenario, 1); initPopulation(scenario.getPopulation()); EventsManager events = EventsUtils.createEventsManager(); SimulatedCapacityHandler simulatedCapacity = new SimulatedCapacityHandler(); events.addHandler(simulatedCapacity); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); new QSimBuilder(scenario.getConfig()) // .useDefaults() // .build(scenario, events) // .run(); // check simulated capacity values assertEquals(simulatedCapacity.getSimulatedLaneCapacity(Id.create("1", Lane.class)), simulatedCapacity.getSimulatedLinkCapacity(), MatsimTestUtils.EPSILON); assertEquals(1800, simulatedCapacity.getSimulatedLaneCapacity(Id.create("1.ol", Lane.class)), MatsimTestUtils.EPSILON); assertEquals(900, simulatedCapacity.getSimulatedLaneCapacity(Id.create("1", Lane.class)), MatsimTestUtils.EPSILON); }
/*package*/ Fixture(boolean usingFastCapacityUpdate) { this.scenario = (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig()); this.scenario.getConfig().qsim().setStuckTime(100); this.scenario.getConfig().qsim().setRemoveStuckVehicles(true); this.scenario.getConfig().qsim().setUsingFastCapacityUpdate(usingFastCapacityUpdate); Network network = (Network) this.scenario.getNetwork(); network.setCapacityPeriod(3600.0); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord(0, 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord(1, 0)); Node node3 = NetworkUtils.createAndAddNode(network, Id.create("3", Node.class), new Coord(1001, 0)); final Node fromNode = node1; final Node toNode = node2; this.link1 = NetworkUtils.createAndAddLink(network,Id.create("1", Link.class), fromNode, toNode, 1.0, 1.0, 3600.0, 1.0 ); final Node fromNode1 = node2; final Node toNode1 = node3; this.link2 = NetworkUtils.createAndAddLink(network,Id.create("2", Link.class), fromNode1, toNode1, 10 * 7.5, 2.0 * 7.5, 3600.0, 1.0 ); EventsManager eventsManager = EventsUtils.createEventsManager(); PrepareForSimUtils.createDefaultPrepareForSim(scenario).run(); sim = new QSimBuilder(scenario.getConfig()) // .useDefaults() // .build(scenario, eventsManager); this.queueNetwork = (QNetwork) sim.getNetsimNetwork(); this.qlink1 = (QLinkImpl) this.queueNetwork.getNetsimLink(Id.create("1", Link.class)); this.qlink2 = (QLinkImpl) this.queueNetwork.getNetsimLink(Id.create("2", Link.class)); dummify(this.queueNetwork); this.basicVehicle = new VehicleImpl(Id.create("1", Vehicle.class), new VehicleTypeImpl(Id.create("defaultVehicleType", VehicleType.class))); }