@Override public double getTime() { return ((QSim) visMobsim).getSimTimer().getTimeOfDay(); } }
@Override public void notifyMobsimInitialized(MobsimInitializedEvent e) { Netsim mobsim = (Netsim) e.getQueueSimulation(); this.snapshotTime = Math.floor(mobsim.getSimTimer().getSimStartTime() / this.snapshotPeriod) * this.snapshotPeriod; if (this.snapshotTime < mobsim.getSimTimer().getSimStartTime()) { this.snapshotTime += this.snapshotPeriod; } }
private void initSimTimer() { QSimConfigGroup qSimConfigGroup = this.scenario.getConfig().qsim(); Double configuredStartTime = qSimConfigGroup.getStartTime(); this.stopTime = qSimConfigGroup.getEndTime(); if (configuredStartTime == Time.UNDEFINED_TIME) { configuredStartTime = 0.0; } if ((this.stopTime == Time.UNDEFINED_TIME) || (this.stopTime == 0)) { this.stopTime = Double.MAX_VALUE; } double simStartTime; if (QSimConfigGroup.StarttimeInterpretation.maxOfStarttimeAndEarliestActivityEnd.equals(qSimConfigGroup.getSimStarttimeInterpretation())) { double firstAgentStartTime = calculateFirstAgentStartTime(); simStartTime = Math.floor(Math.max(configuredStartTime, firstAgentStartTime)); } else if (QSimConfigGroup.StarttimeInterpretation.onlyUseStarttime.equals(qSimConfigGroup.getSimStarttimeInterpretation())) { simStartTime = configuredStartTime; } else { throw new RuntimeException("unkonwn starttimeInterpretation; aborting ..."); } this.simTimer.setSimStartTime(simStartTime); this.simTimer.setTime(simStartTime); }
@Override public void notifyMobsimInitialized(MobsimInitializedEvent e) { MobsimTimer mobsimTimer = ((QSim) e.getQueueSimulation()).getSimTimer(); this.simStartTime = mobsimTimer.getSimStartTime(); this.timeStepSize = mobsimTimer.getSimTimestepSize(); this.activityPerformingAgents.clear(); for (MobsimAgent mobsimAgent : this.mobsimDataProvider.getAgents().values()) { // get the agent's activity end time and mark it as currently performing an Activity double activityEndTime = mobsimAgent.getActivityEndTime(); // add the agent to the collections this.activityEndTimes.put(mobsimAgent.getId(), activityEndTime); int bin = this.getTimeBin(activityEndTime); Map<Id<Person>, MobsimAgent> map = getMapForTimeBin(bin); map.put(mobsimAgent.getId(), mobsimAgent); } }
if (analyzeRunTimes) this.startTime = System.nanoTime(); final double now = this.getSimTimer().getTimeOfDay(); this.simTimer.incrementTime();
Fixture f = new Fixture(1, true, 0, false); f.qsim.getSimTimer().setTime(100); f.simEngine.doSimStep(100); assertEquals(0, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(101); f.simEngine.doSimStep(101); assertEquals(1, f.qlink2.getAllVehicles().size()); assertEquals(f.normalVehicle, f.qlink2.getAllVehicles().toArray(new MobsimVehicle[1])[0]); // first the normal vehicle f.qsim.getSimTimer().setTime(102); f.simEngine.doSimStep(102); assertEquals(1, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(119); f.simEngine.doSimStep(119); assertEquals(1, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(120); f.simEngine.doSimStep(120); // 100 (departure) + 19 (stop delay) + 1 (buffer2node) assertEquals(2, f.qlink2.getAllVehicles().size()); assertEquals(f.transitVehicle, vehicles[1]); // second the transit vehicle f.qsim.getSimTimer().setTime(117); // yy time going backwards?? f.simEngine.doSimStep(117); // yy time going backwards?? assertEquals(2, f.qlink2.getAllVehicles().size());
/** * Constructs an instance of this simulation which does not do anything by itself, but accepts handlers for Activities and Legs. * Use this constructor if you want to plug together your very own simulation, i.e. you are writing some of the simulation * logic yourself. * * If you wish to use QSim as a product and run a simulation based on a Config file, rather use QSimFactory as your entry point. * */ @Inject private QSim( final Scenario sc, EventsManager events, Injector childInjector ) { this.scenario = sc; if ( sc.getConfig().qsim().getNumberOfThreads() > 1) { this.events = EventsUtils.getParallelFeedableInstance( events ); } else { this.events = events; } this.listenerManager = new MobsimListenerManager( this ); this.agentCounter = new org.matsim.core.mobsim.qsim.AgentCounter(); this.simTimer = new MobsimTimer( sc.getConfig().qsim().getTimeStepSize()); this.childInjector = childInjector ; // this.qVehicleFactory = qVehicleFactory; }
assertEquals(f.normalVehicle, f.qlink2.getAllVehicles().toArray(new MobsimVehicle[1])[0]); // first the normal vehicle f.qsim.getSimTimer().setTime(103); f.simEngine.doSimStep(103); assertEquals(1, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(119); f.simEngine.doSimStep(119); assertEquals(1, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(120); f.simEngine.doSimStep(120); // 100 (departure) + 19 (stop delay) + 1 (buffer2node) assertEquals(2, f.qlink2.getAllVehicles().size()); assertEquals(f.transitVehicle, vehicles[1]); // second the transit vehicle f.qsim.getSimTimer().setTime(117); // yy time going backwards?? f.simEngine.doSimStep(117); // yy time going backwards?? assertEquals(2, f.qlink2.getAllVehicles().size());
@Override public void movedOverNode(Link nextLink) { currentLinkIdx++; linkEnterTime = timer.getTimeOfDay(); onlineTrackerListener.vehicleEnteredNextLink(vehicle, nextLink); }
@Override public void onPrepareSim() { this.infoTime = Math.floor(internalInterface.getMobsim().getSimTimer().getSimStartTime() / INFO_PERIOD) * INFO_PERIOD; /* * infoTime may be < simStartTime, this ensures to print out the * info at the very first timestep already */ initQSimEngineThreads(); }
f.qsim.getSimTimer().setTime(101); f.simEngine.doSimStep(101); assertEquals(1, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(119); f.simEngine.doSimStep(119); assertEquals(1, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(120); f.normalVehicle2.getDriver().endActivityAndComputeNextState(120); f.qsim.internalInterface.arrangeNextAgentState(f.normalVehicle2.getDriver()) ; f.qsim.getSimTimer().setTime(121); f.simEngine.doSimStep(121); assertEquals(1, f.qlink1.getAllVehicles().size()); f.qsim.getSimTimer().setTime(138); f.simEngine.doSimStep(138); assertEquals(1, f.qlink1.getAllVehicles().size()); f.qsim.getSimTimer().setTime(139); f.simEngine.doSimStep(139); assertEquals(3, f.qlink2.getAllVehicles().size());
private double predictLinkExitTime() { return Math.max(timer.getTimeOfDay(), linkEnterTime + path.getLinkTravelTime(currentLinkIdx)); } }
private void printSimLog(final double time) { if (time >= this.infoTime) { // if(true){ this.infoTime += INFO_PERIOD; Date endtime = new Date(); long diffreal = (endtime.getTime() - this.realWorldStarttime .getTime()) / 1000; double diffsim = time - this.simTimer.getSimStartTime(); log.info("SIMULATION (NEW QSim) AT " + Time.writeTime(time) + " : #Veh=" + this.agentCounter.getLiving() + " lost=" + this.agentCounter.getLost() + " simT=" + diffsim + "s realT=" + (diffreal) + "s; (s/r): " + (diffsim / (diffreal + Double.MIN_VALUE))); Gbl.printMemoryUsage(); } }
f.qsim.getSimTimer().setTime(101); f.simEngine.doSimStep(101); assertEquals(1, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(102); f.simEngine.doSimStep(102); assertEquals(2, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(200); f.simEngine.doSimStep(200); assertEquals(2, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(201); f.simEngine.doSimStep(201); assertEquals(2, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(202); f.simEngine.doSimStep(202); assertEquals(2, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(203); f.simEngine.doSimStep(203); assertEquals(2, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(219); f.simEngine.doSimStep(219); assertEquals(2, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(220);
public final double getTime() { return this.qSim.getSimTimer().getTimeOfDay() ; }
@Override public void notifyMobsimInitialized(@SuppressWarnings("rawtypes") MobsimInitializedEvent e) { double startTime = ((QSim)e.getQueueSimulation()).getSimTimer().getSimStartTime(); prebookTrips(startTime - 1); }
f.qsim.getSimTimer().setTime(101); f.simEngine.doSimStep(101); assertEquals(1, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(102); f.simEngine.doSimStep(102); assertEquals(2, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(200); f.simEngine.doSimStep(200); assertEquals(2, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(201); f.simEngine.doSimStep(201); assertEquals(2, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(202); f.simEngine.doSimStep(202); assertEquals(2, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(203); f.simEngine.doSimStep(203); assertEquals(1, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(204); f.simEngine.doSimStep(204); assertEquals(1, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(219);
private final QVehicle removeFirstVehicle(){ double now = context.getSimTimer().getTimeOfDay() ; QVehicle veh = buffer.poll(); bufferLastMovedTime = now; // just in case there is another vehicle in the buffer that is now the new front-most if( context.qsimConfig.isUsingFastCapacityUpdate() ) { flowcap_accumulate.setTimeStep(now - 1); } return veh; }
/** * Prepare the simulation and get all the settings from the configuration. */ /*package*/ void prepareSim() { events.initProcessing(); createAgents(); this.initSimTimer(); this.infoTime = Math.floor(this.simTimer.getSimStartTime() / INFO_PERIOD) * INFO_PERIOD; // infoTime may be < simStartTime, this ensures // to print out the info at the very first // timestep already for (MobsimEngine mobsimEngine : this.mobsimEngines) { mobsimEngine.onPrepareSim(); } }
f.qsim.getSimTimer().setTime(101); f.simEngine.doSimStep(101); assertEquals(1, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(102); f.simEngine.doSimStep(102); assertEquals(2, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(201); f.simEngine.doSimStep(201); assertEquals(2, f.qlink2.getAllVehicles().size()); f.qsim.getSimTimer().setTime(202); f.simEngine.doSimStep(202); assertEquals(1, f.qlink3.getAllVehicles().size()); f.qsim.getSimTimer().setTime(203); f.simEngine.doSimStep(203); assertEquals(2, f.qlink3.getAllVehicles().size()); f.qsim.getSimTimer().setTime(302); f.simEngine.doSimStep(302); assertEquals(2, f.qlink3.getAllVehicles().size()); f.qsim.getSimTimer().setTime(303); f.simEngine.doSimStep(303); assertEquals(2, f.qlink3.getAllVehicles().size()); // includes parked vehicles f.qsim.getSimTimer().setTime(320);