/*package*/ boolean createLinkStatsInIteration(final int iteration) { return ((iteration % this.linkStatsConfigGroup.getWriteLinkStatsInterval() == 0) && (this.iterationsUsed >= this.linkStatsConfigGroup.getAverageLinkStatsOverIterations())); }
@Test public void testWriteLinkStatsInterval() { LinkStatsConfigGroup cg = new LinkStatsConfigGroup(); // test initial value Assert.assertEquals(10, cg.getWriteLinkStatsInterval()); Assert.assertEquals("10", cg.getValue("writeLinkStatsInterval")); // test setting with setMobsim cg.setWriteLinkStatsInterval(4); Assert.assertEquals(4, cg.getWriteLinkStatsInterval()); Assert.assertEquals("4", cg.getValue("writeLinkStatsInterval")); // test setting with addParam cg.addParam("writeLinkStatsInterval", "2"); Assert.assertEquals(2, cg.getWriteLinkStatsInterval()); Assert.assertEquals("2", cg.getValue("writeLinkStatsInterval")); }
@Test public void testWriteAverageOverIterations() { LinkStatsConfigGroup cg = new LinkStatsConfigGroup(); // test initial value Assert.assertEquals(5, cg.getAverageLinkStatsOverIterations()); Assert.assertEquals("5", cg.getValue("averageLinkStatsOverIterations")); // test setting with setMobsim cg.setAverageLinkStatsOverIterations(4); Assert.assertEquals(4, cg.getAverageLinkStatsOverIterations()); Assert.assertEquals("4", cg.getValue("averageLinkStatsOverIterations")); // test setting with addParam cg.addParam("averageLinkStatsOverIterations", "2"); Assert.assertEquals(2, cg.getAverageLinkStatsOverIterations()); Assert.assertEquals("2", cg.getValue("averageLinkStatsOverIterations")); }
Assert.assertEquals(10, config.linkStats().getWriteLinkStatsInterval()); Assert.assertEquals(5, config.linkStats().getAverageLinkStatsOverIterations()); config.linkStats().setWriteLinkStatsInterval(8); config.linkStats().setAverageLinkStatsOverIterations(2); Assert.assertFalse(lscl.useVolumesOfIteration(0, 0)); Assert.assertFalse(lscl.useVolumesOfIteration(1, 0)); config.linkStats().setWriteLinkStatsInterval(5); config.linkStats().setAverageLinkStatsOverIterations(1); Assert.assertTrue(lscl.useVolumesOfIteration(0, 0)); Assert.assertFalse(lscl.useVolumesOfIteration(1, 0)); config.linkStats().setWriteLinkStatsInterval(5); config.linkStats().setAverageLinkStatsOverIterations(0); Assert.assertTrue(lscl.useVolumesOfIteration(0, 0)); Assert.assertFalse(lscl.useVolumesOfIteration(1, 0)); config.linkStats().setWriteLinkStatsInterval(0); config.linkStats().setAverageLinkStatsOverIterations(2); Assert.assertFalse(lscl.useVolumesOfIteration(0, 0)); Assert.assertFalse(lscl.useVolumesOfIteration(1, 0)); config.linkStats().setWriteLinkStatsInterval(5); config.linkStats().setAverageLinkStatsOverIterations(5); Assert.assertFalse(lscl.useVolumesOfIteration(0, 0)); Assert.assertTrue(lscl.useVolumesOfIteration(1, 0)); config.linkStats().setWriteLinkStatsInterval(5);
@Test public void testGetParams_writeLinkStatsInterval() { LinkStatsConfigGroup cg = new LinkStatsConfigGroup(); Assert.assertNotNull(cg.getParams().get("writeLinkStatsInterval")); }
LinkStatsConfigGroup lsConfig = config.linkStats(); lsConfig.setWriteLinkStatsInterval(3); lsConfig.setAverageLinkStatsOverIterations(1);
@Override public void install() { bind(CalcLinkStats.class).asEagerSingleton(); if (getConfig().linkStats().getWriteLinkStatsInterval() > 0) { // "Do not use this, as it may not contain values in every iteration." // says the original comment on the getter in the Controler. // I assume this is still true. /*TODO [MR] linkStats uses ttcalc and volumes, but ttcalc has 15min-steps, while volumes uses 60min-steps! It works a.t.m., but the traveltimes in linkStats are the avg. traveltimes between xx.00 and xx.15, and not between xx.00 and xx.59*/ bind(LinkStatsControlerListener.class).asEagerSingleton(); addControlerListenerBinding().to(LinkStatsControlerListener.class); } }
this.modules.put(TransitConfigGroup.GROUP_NAME, this.transit); this.linkStats = new LinkStatsConfigGroup(); this.modules.put(LinkStatsConfigGroup.GROUP_NAME, this.linkStats);
config.linkStats().setWriteLinkStatsInterval(0); config.controler().setCreateGraphs(false); config.controler().setWriteEventsInterval(0);
@Test public void testGetParams_averageLinkStatsOverIterations() { LinkStatsConfigGroup cg = new LinkStatsConfigGroup(); Assert.assertNotNull(cg.getParams().get("averageLinkStatsOverIterations")); }
LinkStatsConfigGroup lsConfig = config.linkStats(); lsConfig.setWriteLinkStatsInterval(3); lsConfig.setAverageLinkStatsOverIterations(2); Scenario scenario = ScenarioUtils.createScenario(config); Node node1 = scenario.getNetwork().getFactory().createNode(Id.create("1", Node.class), new Coord((double) 0, (double) 0));
/*package*/ boolean useVolumesOfIteration(final int iteration, final int firstIteration) { if (this.linkStatsConfigGroup.getWriteLinkStatsInterval() < 1) { return false; } int iterationMod = iteration % this.linkStatsConfigGroup.getWriteLinkStatsInterval(); int effectiveIteration = iteration - firstIteration; int averaging = Math.min(this.linkStatsConfigGroup.getAverageLinkStatsOverIterations(), this.linkStatsConfigGroup.getWriteLinkStatsInterval()); if (iterationMod == 0) { return ((this.linkStatsConfigGroup.getAverageLinkStatsOverIterations() <= 1) || (effectiveIteration >= averaging)); } return (iterationMod > (this.linkStatsConfigGroup.getWriteLinkStatsInterval() - this.linkStatsConfigGroup.getAverageLinkStatsOverIterations()) && (effectiveIteration + (this.linkStatsConfigGroup.getWriteLinkStatsInterval() - iterationMod) >= averaging)); }