private void createNetwork(double departureLinkCapacity){ Node node1 = NetworkUtils.createAndAddNode(network, Id.createNodeId("1"), new Coord((double) 0, (double) 0)) ; Node node2 = NetworkUtils.createAndAddNode(network, Id.createNodeId("2"), new Coord((double) 100, (double) 10)); double y = -10; Node node3 = NetworkUtils.createAndAddNode(network, Id.createNodeId("3"), new Coord((double) 300, y)); final Node fromNode = node1; final Node toNode = node2; final double capacity = departureLinkCapacity; link1 = NetworkUtils.createAndAddLink(network,Id.createLinkId(String.valueOf("1")), fromNode, toNode, 1000.0, 20.0, capacity, (double) 1, null, "7"); final Node fromNode1 = node2; final Node toNode1 = node3; link2 = NetworkUtils.createAndAddLink(network,Id.createLinkId(String.valueOf("2")), fromNode1, toNode1, 1000.0, 20.0, (double) 3600, (double) 1, null, "7"); }
public Fixture() { this.network = NetworkUtils.createNetwork(); Node linkStartNode = NetworkUtils.createAndAddNode(this.network, Id.create(0, Node.class), new Coord((double) 0, (double) 0)); for (int i = 1; i < count; i++) { Node linkEndNode = NetworkUtils.createAndAddNode(this.network, Id.create(i, Node.class), new Coord((double) i, (double) 0)); final Node fromNode = linkStartNode; final Node toNode = linkEndNode; NetworkUtils.createAndAddLink(this.network,Id.create(i-1, Link.class), fromNode, toNode, 1000.0, 10.0, 2000.0, (double) 1 ); linkStartNode = linkEndNode; } } }
private void createNetwork(){ Network network = scenario.getNetwork(); double x = -100.0; Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord(x, 0.0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord(0.0, 0.0)); Node node3 = NetworkUtils.createAndAddNode(network, Id.create("3", Node.class), new Coord(0.0, 1000.0)); Node node4 = NetworkUtils.createAndAddNode(network, Id.create("4", Node.class), new Coord(0.0, 1100.0)); link1 = NetworkUtils.createAndAddLink(network,Id.create("1", Link.class), node1, node2, (double) 100, (double) 25, (double) 600, (double) 1, null, "22"); link2 = NetworkUtils.createAndAddLink(network,Id.create("2", Link.class), node2, node3, (double) 1000, (double) 25, (double) 600, (double) 1, null, "22"); link3 = NetworkUtils.createAndAddLink(network,Id.create("3", Link.class), node3, node4, (double) 100, (double) 25, (double) 600, (double) 1, null, "22"); }
public MultimodalFixture() { for (int i = 0; i < this.nodes.length; i++) { this.nodes[i] = NetworkUtils.createAndAddNode(this.network, Id.create(i, Node.class), new Coord((double) (1000 * i), (double) 0)); } for (int i = 0; i < this.links.length; i++) { this.links[i] = NetworkUtils.createAndAddLink(this.network,Id.create(i, Link.class), this.nodes[i], this.nodes[i+1], 1000.0, 10.0, 3600.0, (double) 1 ); } } }
private void createNetwork(double linkCapacity){ network = (Network) scenario.getNetwork(); double x = -100.0; Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord(x, 0.0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord(0.0, 0.0)); Node node3 = NetworkUtils.createAndAddNode(network, Id.create("3", Node.class), new Coord(0.0, 1000.0)); Node node4 = NetworkUtils.createAndAddNode(network, Id.create("4", Node.class), new Coord(0.0, 1100.0)); final Node fromNode = node1; final Node toNode = node2; link1 = NetworkUtils.createAndAddLink(network,Id.create("1", Link.class), fromNode, toNode, (double) 1000, (double) 25, (double) 7200, (double) 1, null, "22"); final Node fromNode1 = node2; final Node toNode1 = node3; final double capacity = linkCapacity; link2 = NetworkUtils.createAndAddLink(network,Id.create("2", Link.class), fromNode1, toNode1, (double) 1000, (double) 25, capacity, (double) 1, null, "22"); final Node fromNode2 = node3; final Node toNode2 = node4; link3 = NetworkUtils.createAndAddLink(network,Id.create("3", Link.class), fromNode2, toNode2, (double) 1000, (double) 25, (double) 7200, (double) 1, null, "22"); }
private void createNetwork(double linkCapacity){ network = (Network) scenario.getNetwork(); double x = -100.0; Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord(x, 0.0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord(0.0, 0.0)); Node node3 = NetworkUtils.createAndAddNode(network, Id.create("3", Node.class), new Coord(0.0, 1000.0)); Node node4 = NetworkUtils.createAndAddNode(network, Id.create("4", Node.class), new Coord(0.0, 1100.0)); final Node fromNode = node1; final Node toNode = node2; link1 = NetworkUtils.createAndAddLink(network,Id.create("1", Link.class), fromNode, toNode, (double) 1000, (double) 25, (double) 7200, (double) 1, null, "22"); final Node fromNode1 = node2; final Node toNode1 = node3; final double capacity = linkCapacity; link2 = NetworkUtils.createAndAddLink(network,Id.create("2", Link.class), fromNode1, toNode1, (double) 1000, (double) 25, capacity, (double) 1, null, "22"); final Node fromNode2 = node3; final Node toNode2 = node4; link3 = NetworkUtils.createAndAddLink(network,Id.create("3", Link.class), fromNode2, toNode2, (double) 1000, (double) 25, (double) 7200, (double) 1, null, "22"); }
private Network getTestNetwork() { int numOfLinks = 5; Network network = NetworkUtils.createNetwork(); Node[] nodes = new Node[numOfLinks+1]; for (int i = 0; i <= numOfLinks; i++) { nodes[i] = NetworkUtils.createAndAddNode(network, Id.create(i, Node.class), new Coord((double) (1000 * i), (double) 0)); } for (int i = 0; i < numOfLinks; i++) { NetworkUtils.createAndAddLink(network,Id.create(i, Link.class), nodes[i], nodes[i+1], 1000.0, 10.0, 3600.0, (double) 1 ); } return network; }
/** * Builds a test network like the following diagram. * * A--->B--->C===>D--->E--->F * * with each link having length 10m. Links AB, BC, DE, and EF have one * lanes each, while CD has two lanes. All free-flow speeds are 60km/h. * * @return */ private Network buildNetwork(){ Network network = NetworkUtils.createNetwork(); Node a = NetworkUtils.createAndAddNode(network, Id.createNodeId("A"), CoordUtils.createCoord(0.0, 0.0)); Node b = NetworkUtils.createAndAddNode(network, Id.createNodeId("B"), CoordUtils.createCoord(10.0, 0.0)); Node c = NetworkUtils.createAndAddNode(network, Id.createNodeId("C"), CoordUtils.createCoord(20.0, 0.0)); Node d = NetworkUtils.createAndAddNode(network, Id.createNodeId("D"), CoordUtils.createCoord(30.0, 0.0)); Node e = NetworkUtils.createAndAddNode(network, Id.createNodeId("E"), CoordUtils.createCoord(40.0, 0.0)); Node f = NetworkUtils.createAndAddNode(network, Id.createNodeId("F"), CoordUtils.createCoord(50.0, 0.0)); NetworkUtils.createAndAddLink(network, Id.createLinkId("AB"), a, b, 10.0, 60.0/3.6, 1000.0, 1); NetworkUtils.createAndAddLink(network, Id.createLinkId("BC"), b, c, 10.0, 60.0/3.6, 1000.0, 1); NetworkUtils.createAndAddLink(network, Id.createLinkId("CD"), c, d, 10.0, 60.0/3.6, 1000.0, 2); NetworkUtils.createAndAddLink(network, Id.createLinkId("DE"), d, e, 10.0, 60.0/3.6, 1000.0, 1); NetworkUtils.createAndAddLink(network, Id.createLinkId("EF"), e, f, 10.0, 60.0/3.6, 1000.0, 1); return network; }
private void doTestAllowedModes(final Set<String> modes, final String filename) { Network network1 = NetworkUtils.createNetwork(); Node n1 = NetworkUtils.createAndAddNode(network1, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node n2 = NetworkUtils.createAndAddNode(network1, Id.create("2", Node.class), new Coord((double) 1000, (double) 0)); final Node fromNode = n1; final Node toNode = n2; Link l1 = NetworkUtils.createAndAddLink(network1,Id.create("1", Link.class), fromNode, toNode, 1000.0, 10.0, 3600.0, 1.0 ); l1.setAllowedModes(modes); writeNetwork(network1, filename); File networkFile = new File(filename); assertTrue("written network file doesn't exist.", networkFile.exists()); assertTrue("written network file seems to be empty.", networkFile.length() > 0); Scenario scenario2 = ScenarioUtils.createScenario(ConfigUtils.createConfig()); Network network2 = scenario2.getNetwork(); readNetwork(scenario2, filename); Link link1 = network2.getLinks().get(Id.create("1", Link.class)); assertNotNull("link not found in read-in network.", link1); Set<String> modes2 = link1.getAllowedModes(); assertEquals("wrong number of allowed modes.", modes.size(), modes2.size()); assertTrue("wrong mode.", modes2.containsAll(modes)); }
private static Scenario createTriangularNetwork() { MutableScenario scenario = (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig()); Network network = (Network) scenario.getNetwork(); // add nodes Node node1 = NetworkUtils.createAndAddNode(network, Id.create("n1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("n2", Node.class), new Coord((double) 50, (double) 100)); Node node3 = NetworkUtils.createAndAddNode(network, Id.create("n3", Node.class), new Coord((double) 50, (double) 0)); Node node4 = NetworkUtils.createAndAddNode(network, Id.create("n4", Node.class), new Coord((double) 100, (double) 0)); final Node fromNode = node1; final Node toNode = node2; // add links NetworkUtils.createAndAddLink(network,Id.create("l1", Link.class), fromNode, toNode, 500.0, 10.0, 3600.0, (double) 1 ); final Node fromNode1 = node2; final Node toNode1 = node3; NetworkUtils.createAndAddLink(network,Id.create("l2", Link.class), fromNode1, toNode1, 500.0, 10.0, 3600.0, (double) 1 ); final Node fromNode2 = node3; final Node toNode2 = node4; NetworkUtils.createAndAddLink(network,Id.create("l3", Link.class), fromNode2, toNode2, 50.0, 0.1, 3600.0, (double) 1 ); final Node fromNode3 = node4; final Node toNode3 = node1; NetworkUtils.createAndAddLink(network,Id.create("l4", Link.class), fromNode3, toNode3, 50.0, 0.1, 3600.0, (double) 1 ); return scenario; }
@Test public void testWriteChangeEventWithSmallValueAndReadBack() { final String fileName = utils.getOutputDirectory() + "wurst.xml"; final Network network = NetworkUtils.createNetwork(); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 0, (double) 1000)); final Link link = NetworkUtils.createAndAddLink(network, Id.create("2", Link.class), node1, node2, (double) 1500, 1.667, (double) 3600, (double) 1); List<NetworkChangeEvent> outputEvents = new ArrayList<>(); final NetworkChangeEvent event = new NetworkChangeEvent(0.0); event.setFlowCapacityChange(new NetworkChangeEvent.ChangeValue(NetworkChangeEvent.ChangeType.ABSOLUTE_IN_SI_UNITS, 0.000000000004)); event.addLink(link); outputEvents.add(event); new NetworkChangeEventsWriter().write(fileName, outputEvents); List<NetworkChangeEvent> inputEvents = new ArrayList<>(); NetworkChangeEventsParser parser = new NetworkChangeEventsParser(network, inputEvents); parser.readFile(fileName); assertThat(inputEvents, hasItem(event)); }
public Fixture(boolean isUsingFastCapacityUpdate) { this.scenario = ScenarioUtils.createScenario(ConfigUtils.createConfig()); this.config = scenario.getConfig(); this.config.qsim().setFlowCapFactor(1.0); this.config.qsim().setStorageCapFactor(1.0); this.config.qsim().setUsingFastCapacityUpdate(isUsingFastCapacityUpdate); /* build network */ this.network = this.scenario.getNetwork(); this.network.setCapacityPeriod(Time.parseTime("1:00:00")); this.node1 = NetworkUtils.createAndAddNode(this.network, Id.create("1", Node.class), new Coord(0, 0)); this.node2 = NetworkUtils.createAndAddNode(this.network, Id.create("2", Node.class), new Coord(100, 0)); this.node3 = NetworkUtils.createAndAddNode(this.network, Id.create("3", Node.class), new Coord(1100, 0)); this.node4 = NetworkUtils.createAndAddNode(this.network, Id.create("4", Node.class), new Coord(1200, 0)); this.link1 = NetworkUtils.createAndAddLink(this.network,Id.create("1", Link.class), this.node1, this.node2, 100, 100, 60000, 9 ); this.link2 = NetworkUtils.createAndAddLink(this.network,Id.create("2", Link.class), this.node2, this.node3, 1000, 100, 6000, 2 ); this.link3 = NetworkUtils.createAndAddLink(this.network,Id.create("3", Link.class), this.node3, this.node4, 100, 100, 60000, 9 ); /* build plans */ this.plans = scenario.getPopulation(); this.linkIdsNone = new ArrayList<Id<Link>>(); this.linkIds2 = new ArrayList<Id<Link>>(); this.linkIds2.add(this.link2.getId()); } }
@Test public void testScaleFactorChangeEvents() { final Network network = NetworkUtils.createNetwork(); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 0, (double) 1000)); final Link link = NetworkUtils.createAndAddLink(network, Id.create("2", Link.class), node1, node2, (double) 1500, 1.667, (double) 3600, (double) 1); final String fileName = this.utils.getOutputDirectory() + "scalefactorChanges.xml"; List<NetworkChangeEvent> changeEvents = new ArrayList<>(); final NetworkChangeEvent event = new NetworkChangeEvent(200.0); event.setLanesChange(new NetworkChangeEvent.ChangeValue(NetworkChangeEvent.ChangeType.FACTOR, 2.5)); event.addLink(link); changeEvents.add(event); new NetworkChangeEventsWriter().write(fileName, changeEvents); List<NetworkChangeEvent> changeEvents2 = new ArrayList<>(); new NetworkChangeEventsParser(network, changeEvents2).readFile(fileName); Assert.assertFalse(changeEvents2.isEmpty()); Assert.assertEquals(1, changeEvents2.size()); NetworkChangeEvent event2 = changeEvents2.get(0); Assert.assertEquals(event.getStartTime(), event2.getStartTime(), 0.0); Assert.assertEquals(NetworkChangeEvent.ChangeType.FACTOR, event2.getLanesChange().getType()); Assert.assertEquals(event.getLanesChange().getValue(), event2.getLanesChange().getValue(), 1e-10); }
@Test public void testAbsoluteChangeEvents() { final Network network = NetworkUtils.createNetwork(); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 0, (double) 1000)); final Link link = NetworkUtils.createAndAddLink(network, Id.create("2", Link.class), node1, node2, (double) 1500, 1.667, (double) 3600, (double) 1); final String fileName = this.utils.getOutputDirectory() + "absoluteChanges.xml"; List<NetworkChangeEvent> changeEvents = new ArrayList<>(); final NetworkChangeEvent event = new NetworkChangeEvent(100.0); event.setFlowCapacityChange(new NetworkChangeEvent.ChangeValue(NetworkChangeEvent.ChangeType.ABSOLUTE_IN_SI_UNITS, 0.000000000005)); event.addLink(link); changeEvents.add(event); new NetworkChangeEventsWriter().write(fileName, changeEvents); List<NetworkChangeEvent> changeEvents2 = new ArrayList<>(); new NetworkChangeEventsParser(network, changeEvents2).readFile(fileName); Assert.assertFalse(changeEvents2.isEmpty()); Assert.assertEquals(1, changeEvents2.size()); NetworkChangeEvent event2 = changeEvents2.get(0); Assert.assertEquals(event.getStartTime(), event2.getStartTime(), 0.0); Assert.assertEquals(NetworkChangeEvent.ChangeType.ABSOLUTE_IN_SI_UNITS, event2.getFlowCapacityChange().getType()); Assert.assertEquals(event.getFlowCapacityChange().getValue(), event2.getFlowCapacityChange().getValue(), 1e-10); }
@Test public void testNegativeOffsetChangeEvents() { final Network network = NetworkUtils.createNetwork(); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 0, (double) 1000)); final Link link = NetworkUtils.createAndAddLink(network, Id.create("2", Link.class), node1, node2, (double) 1500, 1.667, (double) 3600, (double) 1); final String fileName = this.utils.getOutputDirectory() + "offsetChanges.xml"; List<NetworkChangeEvent> changeEvents = new ArrayList<>(); final NetworkChangeEvent event = new NetworkChangeEvent(300.0); event.setFreespeedChange(new NetworkChangeEvent.ChangeValue(NetworkChangeEvent.ChangeType.OFFSET_IN_SI_UNITS, -3.6)); event.addLink(link); changeEvents.add(event); new NetworkChangeEventsWriter().write(fileName, changeEvents); List<NetworkChangeEvent> changeEvents2 = new ArrayList<>(); new NetworkChangeEventsParser(network, changeEvents2).readFile(fileName); Assert.assertFalse(changeEvents2.isEmpty()); Assert.assertEquals(1, changeEvents2.size()); NetworkChangeEvent event2 = changeEvents2.get(0); Assert.assertEquals(event.getStartTime(), event2.getStartTime(), 0.0); Assert.assertEquals(NetworkChangeEvent.ChangeType.OFFSET_IN_SI_UNITS, event2.getFreespeedChange().getType()); Assert.assertEquals(event.getFreespeedChange().getValue(), event2.getFreespeedChange().getValue(), 1e-10); }
@Test public void testPositiveOffsetChangeEvents() { final Network network = NetworkUtils.createNetwork(); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 0, (double) 1000)); final Link link = NetworkUtils.createAndAddLink(network, Id.create("2", Link.class), node1, node2, (double) 1500, 1.667, (double) 3600, (double) 1); final String fileName = this.utils.getOutputDirectory() + "offsetChanges.xml"; List<NetworkChangeEvent> changeEvents = new ArrayList<>(); final NetworkChangeEvent event = new NetworkChangeEvent(300.0); event.setFreespeedChange(new NetworkChangeEvent.ChangeValue(NetworkChangeEvent.ChangeType.OFFSET_IN_SI_UNITS, +3.6)); event.addLink(link); changeEvents.add(event); new NetworkChangeEventsWriter().write(fileName, changeEvents); List<NetworkChangeEvent> changeEvents2 = new ArrayList<>(); new NetworkChangeEventsParser(network, changeEvents2).readFile(fileName); Assert.assertFalse(changeEvents2.isEmpty()); Assert.assertEquals(1, changeEvents2.size()); NetworkChangeEvent event2 = changeEvents2.get(0); Assert.assertEquals(event.getStartTime(), event2.getStartTime(), 0.0); Assert.assertEquals(NetworkChangeEvent.ChangeType.OFFSET_IN_SI_UNITS, event2.getFreespeedChange().getType()); Assert.assertEquals(event.getFreespeedChange().getValue(), event2.getFreespeedChange().getValue(), 1e-10); }
@Test public void testSetAttributes() { Network network = new NetworkImpl(); network.setCapacityPeriod(3600.0); Node node1 = NetworkUtils.createAndAddNode(network, Id.create(1, Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create(2, Node.class), new Coord((double) 50, (double) 50)); final Node fromNode = node1; final Node toNode = node2; Link link1 = (Link) NetworkUtils.createAndAddLink(network,Id.create(1, Link.class), fromNode, toNode, 500.0, 10.0, 1000.0, 1.0 ); Assert.assertEquals("wrong freespeed traveltime.", 50.0, NetworkUtils.getFreespeedTravelTime(link1), EPSILON); link1.setLength(1000.0); Assert.assertEquals("wrong freespeed traveltime.", 100.0, NetworkUtils.getFreespeedTravelTime(link1), EPSILON); link1.setFreespeed(20.0); Assert.assertEquals("wrong freespeed traveltime.", 50.0, NetworkUtils.getFreespeedTravelTime(link1), EPSILON); }
@Test public void testChangeEventsParserWriter() { String input = utils.getInputDirectory() + "testNetworkChangeEvents.xml"; String output = utils.getOutputDirectory() + "outputTestNetworkChangeEvents.xml"; final Network network = NetworkUtils.createNetwork(); NetworkFactory nf = network.getFactory(); nf.setLinkFactory(new VariableIntervalTimeVariantLinkFactory()); ((NetworkImpl)network).setFactory(nf); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 0, (double) 1000)); Node node3 = NetworkUtils.createAndAddNode(network, Id.create("3", Node.class), new Coord((double) 1000, (double) 2000)); NetworkUtils.createAndAddLink(network,Id.create("1", Link.class), node1, node2, (double) 1000, 1.667, (double) 3600, (double) 1 ); NetworkUtils.createAndAddLink(network,Id.create("2", Link.class), node2, node3, (double) 1500, 1.667, (double) 3600, (double) 1 ); List<NetworkChangeEvent> events = new ArrayList<>(); NetworkChangeEventsParser parser = new NetworkChangeEventsParser(network, events ); parser.readFile(input); new NetworkChangeEventsWriter().write(output, events); long checksum_ref = CRCChecksum.getCRCFromFile(input); long checksum_run = CRCChecksum.getCRCFromFile(output); assertEquals(checksum_ref, checksum_run); }
/** * Test the calculation of a vehicles position if the actual link length is * shorter than the euklidean distance. * * @author mrieser */ public void testDistanceOnLink_shortLink() { Network network = NetworkUtils.createNetwork(); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 1000, (double) 1000)); final Node fromNode = node1; final Node toNode = node2; Link link1 = NetworkUtils.createAndAddLink(network,Id.create("1", Link.class), fromNode, toNode, (double) 1000, (double) 10, (double) 9999, (double) 1 ); // place the vehicle at one quarter of the link SnapshotLinkWidthCalculator linkWidthCalculator = new SnapshotLinkWidthCalculator(); AgentSnapshotInfo posInfo = new AgentSnapshotInfoFactory(linkWidthCalculator).createAgentSnapshotInfo(Id.create(1, Person.class), link1, 250, 0); assertEquals(260.60660171779824, posInfo.getEasting(), epsilon); assertEquals(239.3933982822018, posInfo.getNorthing(), epsilon); // These numbers became a little weird when I moved vehicles away from the center of a link. Kai, Dec/08 // These numbers changed again when I mad the orthogonal offset adaptive. kai, aug/10 // Made the orthogonal offsets non-adaptive again. kai, feb'13 }
/** * Test the calculation of a vehicles position if the actual link length is * longer than the euklidean distance. * * @author mrieser */ public void testDistanceOnLink_longLink() { Network network = NetworkUtils.createNetwork(); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 1000, (double) 1000)); final Node fromNode = node1; final Node toNode = node2; Link link1 = NetworkUtils.createAndAddLink(network,Id.create("1", Link.class), fromNode, toNode, (double) 2000, (double) 10, (double) 9999, (double) 1 ); // place the vehicle at one quarter of the link SnapshotLinkWidthCalculator linkWidthCalculator = new SnapshotLinkWidthCalculator(); AgentSnapshotInfo posInfo = new AgentSnapshotInfoFactory(linkWidthCalculator).createAgentSnapshotInfo(Id.create(1, Person.class), link1, 500, 0); assertEquals(260.60660171779824, posInfo.getEasting(), epsilon); assertEquals(239.3933982822018, posInfo.getNorthing(), epsilon); // These numbers became a little weird when I moved vehicles away from the center of a link. Kai, Dec/08 // These numbers changed again when I mad the orthogonal offset adaptive. kai, aug/10 // Made the orthogonal offsets non-adaptive again. kai, feb'13 }