@Provides @Singleton public JDEQSimEngine provideJDEQSimulation(QSim qsim) { SteppableScheduler scheduler = new SteppableScheduler(new MessageQueue()); return new JDEQSimEngine( ConfigUtils.addOrGetModule(qsim.getScenario().getConfig(), JDEQSimConfigGroup.NAME, JDEQSimConfigGroup.class), qsim.getScenario(), qsim.getEventsManager(), qsim.getAgentCounter(), scheduler); } }
@Override public void run() { events.initProcessing(); Timer t = new Timer(); t.startTimer(); Scheduler scheduler = new Scheduler(new MessageQueue(), config.getSimulationEndTime()); Road.setAllRoads(new HashMap<Id<Link>, Road>()); // initialize network Road road; for (Link link : this.scenario.getNetwork().getLinks().values()) { road = new Road(scheduler, link); Road.getAllRoads().put(link.getId(), road); } for (Person person : this.scenario.getPopulation().getPersons().values()) { new Vehicle(scheduler, person, activityDurationInterpretation); // the vehicle registers itself to the scheduler } scheduler.startSimulation(); t.endTimer(); log.info("Time needed for one iteration (only JDEQSimulation part): " + t.getMeasuredTime() + "[ms]"); events.finishProcessing(); } }
@Test public void testSchedule1(){ Scheduler scheduler=new Scheduler(new MessageQueue()); SimUnit sm1=new DummySimUnit(scheduler); Message m1=new DummyMessage(); sm1.sendMessage(m1, sm1, 9000); scheduler.startSimulation(); Assert.assertEquals(9000.0, scheduler.getSimTime(), 0.0); }
@Test public void testUnschedule(){ Scheduler scheduler=new Scheduler(new MessageQueue()); SimUnit sm1=new DummySimUnit(scheduler); Message m1=new DummyMessage(); sm1.sendMessage(m1, sm1, 1); scheduler.unschedule(m1); scheduler.startSimulation(); Assert.assertEquals(0.0, scheduler.getSimTime(), 0.0); }
@Test public void testUnschedule2(){ Scheduler scheduler=new Scheduler(new MessageQueue()); SimUnit sm1=new DummySimUnit(scheduler); Message m1=new DummyMessage(); sm1.sendMessage(m1, sm1, 10); DummyMessage1 m2=new DummyMessage1(); m2.messageToUnschedule=m1; sm1.sendMessage(m2, sm1, 1); scheduler.startSimulation(); Assert.assertEquals(1.0, scheduler.getSimTime(), 0.0); }
public void testPutMessage1(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(1); Message m2=new DummyMessage(); m2.setMessageArrivalTime(2); mq.putMessage(m1); mq.putMessage(m2); assertEquals(2, mq.getQueueSize()); assertEquals(true, mq.getNextMessage()==m1); }
public void testPutMessage2(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(2); Message m2=new DummyMessage(); m2.setMessageArrivalTime(1); mq.putMessage(m1); mq.putMessage(m2); assertEquals(2, mq.getQueueSize()); assertEquals(true, mq.getNextMessage()==m2); }
public void testRemoveMessage2(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(1); Message m2=new DummyMessage(); m2.setMessageArrivalTime(2); mq.putMessage(m1); mq.putMessage(m2); mq.removeMessage(m2); assertEquals(1, mq.getQueueSize()); assertEquals(true, mq.getNextMessage()==m1); assertEquals(0, mq.getQueueSize()); }
public void testRemoveMessage1(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(1); Message m2=new DummyMessage(); m2.setMessageArrivalTime(2); mq.putMessage(m1); mq.putMessage(m2); mq.removeMessage(m1); assertEquals(1, mq.getQueueSize()); assertEquals(true, mq.getNextMessage()==m2); assertEquals(0, mq.getQueueSize()); }
public void testPutMessage3(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(2); Message m2=new DummyMessage(); m2.setMessageArrivalTime(1); Message m3=new DummyMessage(); m3.setMessageArrivalTime(1); mq.putMessage(m1); mq.putMessage(m2); mq.putMessage(m3); assertEquals(3, mq.getQueueSize()); assertEquals(true, mq.getNextMessage().getMessageArrivalTime()==1); }
public void testRemoveMessage3(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(1); Message m2=new DummyMessage(); m2.setMessageArrivalTime(1); mq.putMessage(m1); mq.putMessage(m2); mq.removeMessage(m1); assertEquals(1, mq.getQueueSize()); assertEquals(false, mq.isEmpty()); assertEquals(true, mq.getNextMessage()==m2); assertEquals(0, mq.getQueueSize()); assertEquals(true, mq.isEmpty()); }
public void testMessageFactory6(){ MessageFactory.GC_ALL_MESSAGES(); JDEQSimConfigGroup.setGC_MESSAGES(false); Scheduler scheduler=new Scheduler(new MessageQueue()); Person person= PopulationUtils.getFactory().createPerson(Id.create("abc", Person.class)); Vehicle vehicle=new Vehicle(scheduler, person, PlansConfigGroup.ActivityDurationInterpretation.minOfDurationAndEndTime ); assertEquals(true,MessageFactory.getEndLegMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getEnterRoadMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getStartingLegMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getLeaveRoadMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getEndRoadMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getDeadlockPreventionMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getEndLegMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getEnterRoadMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getStartingLegMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getLeaveRoadMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getEndRoadMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getDeadlockPreventionMessage(scheduler, vehicle).vehicle==vehicle); }
public void testMessageFactory5(){ MessageFactory.GC_ALL_MESSAGES(); JDEQSimConfigGroup.setGC_MESSAGES(true); Scheduler scheduler=new Scheduler(new MessageQueue()); Person person= PopulationUtils.getFactory().createPerson(Id.create("abc", Person.class)); Vehicle vehicle=new Vehicle(scheduler, person, PlansConfigGroup.ActivityDurationInterpretation.minOfDurationAndEndTime ); assertEquals(true,MessageFactory.getEndLegMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getEnterRoadMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getStartingLegMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getLeaveRoadMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getEndRoadMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getDeadlockPreventionMessage(scheduler, vehicle).scheduler==scheduler); assertEquals(true,MessageFactory.getEndLegMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getEnterRoadMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getStartingLegMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getLeaveRoadMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getEndRoadMessage(scheduler, vehicle).vehicle==vehicle); assertEquals(true,MessageFactory.getDeadlockPreventionMessage(scheduler, vehicle).vehicle==vehicle); }
@Test public void testActivation_inactive() { Config config = ConfigUtils.createConfig(); Scenario scenario = ScenarioUtils.createScenario(config); NetworkFactory nf = scenario.getNetwork().getFactory(); Node node1 = nf.createNode(Id.create(1, Node.class), new Coord(0, 0)); Node node2 = nf.createNode(Id.create(2, Node.class), new Coord(100, 100)); Link link1 = scenario.getNetwork().getFactory().createLink(Id.create(1, Link.class), node1, node2); link1.setFreespeed(20); scenario.getNetwork().addNode(node1); scenario.getNetwork().addNode(node2); scenario.getNetwork().addLink(link1); EventsManager eventsManager = EventsUtils.createEventsManager(); QSim qsim = new QSimBuilder(config).useDefaults().build(scenario, eventsManager); NetworkChangeEventsEngine engine = new NetworkChangeEventsEngine(scenario.getNetwork(), new MessageQueue()); qsim.addMobsimEngine(engine); engine.onPrepareSim(); for (int i = 0; i < 30; i++) { engine.doSimStep(i); } NetworkChangeEvent changeEvent = new NetworkChangeEvent(37); changeEvent.addLink(link1); changeEvent.setFreespeedChange(new NetworkChangeEvent.ChangeValue(NetworkChangeEvent.ChangeType.ABSOLUTE_IN_SI_UNITS, 50)); try { engine.addNetworkChangeEvent(changeEvent); Assert.fail("Expected exception due to links not being time dependent, but got none."); } catch (Exception expected) { } }
public void testMessagePriority(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(1); m1.setPriority(10); Message m2=new DummyMessage(); m2.setMessageArrivalTime(1); m2.setPriority(5); Message m3=new DummyMessage(); m3.setMessageArrivalTime(1); m3.setPriority(20); mq.putMessage(m1); mq.putMessage(m2); mq.putMessage(m3); assertEquals(true, mq.getNextMessage()==m3); assertEquals(true, mq.getNextMessage()==m1); assertEquals(true, mq.getNextMessage()==m2); assertEquals(0, mq.getQueueSize()); assertEquals(true, mq.isEmpty()); }
QSim qsim = new QSimBuilder(config).useDefaults().build(scenario, eventsManager); NetworkChangeEventsEngine engine = new NetworkChangeEventsEngine(scenario.getNetwork(), new MessageQueue()); engine.setInternalInterface(new DummyInternalInterfaceImpl(qsim));
QSim qsim = new QSimBuilder(config).useDefaults().build(scenario, eventsManager); NetworkChangeEventsEngine engine = new NetworkChangeEventsEngine(scenario.getNetwork(), new MessageQueue()); engine.setInternalInterface(new DummyInternalInterfaceImpl(qsim));