public static void overwriteLaneCapacitiesByNetworkCapacities(Network net, Lanes lanes) { for (LanesToLinkAssignment linkLanes : lanes.getLanesToLinkAssignments().values()) { double linkCap = net.getLinks().get(linkLanes.getLinkId()).getCapacity(); for (Lane lane : linkLanes.getLanes().values()) { lane.setCapacityVehiclesPerHour(linkCap); } } } }
/** * Calculate capacity by formular from Neumann2008DA: * * Flow of a Lane is given by the flow of the link divided by the number of lanes represented by the link. * * A Lane may represent one or more lanes in reality. This is given by the attribute numberOfRepresentedLanes of * the Lane definition. The flow of a lane is scaled by this number. */ public static void calculateAndSetCapacity(Lane lane, boolean isLaneAtLinkEnd, Link link, Network network){ if (isLaneAtLinkEnd){ double noLanesLink = link.getNumberOfLanes(); double linkFlowCapPerSecondPerLane = link.getCapacity() / network.getCapacityPeriod() / noLanesLink; double laneFlowCapPerHour = lane.getNumberOfRepresentedLanes() * linkFlowCapPerSecondPerLane * 3600.0; lane.setCapacityVehiclesPerHour(laneFlowCapPerHour); } else { double capacity = link.getCapacity() / network.getCapacityPeriod() * 3600.0; lane.setCapacityVehiclesPerHour(capacity); } }
lane.setCapacityVehiclesPerHour(capacity); lane.setStartsAtMeterFromLinkEnd(startsAtMeterFromLinkEnd); lane.setNumberOfRepresentedLanes(numberOfRepresentedLanes);
laneType.setCapacity(fac.createXMLLaneTypeXMLCapacity()); lane.setCapacityVehiclesPerHour(laneType.getCapacity().getVehiclesPerHour());
link1FirstLane.setNumberOfRepresentedLanes(2.0); link1FirstLane.setStartsAtMeterFromLinkEnd(1005.0); link1FirstLane.setCapacityVehiclesPerHour(1800.0); lanesForLink1.addLane(link1FirstLane); link1lane1.addToLinkId(Id.create(2, Link.class)); link1lane1.setStartsAtMeterFromLinkEnd(105.0); link1lane1.setCapacityVehiclesPerHour(900.0); lanesForLink1.addLane(link1lane1); link1lane2.setNumberOfRepresentedLanes(2); link1lane2.setStartsAtMeterFromLinkEnd(105.0); link1lane2.setCapacityVehiclesPerHour(1800.0); lanesForLink1.addLane(link1lane2); link1lane3.setCapacityVehiclesPerHour(900.0); link1lane3.setStartsAtMeterFromLinkEnd(105.0); lanesForLink1.addLane(link1lane3);
private static void createOneLane(Scenario scenario, int numberOfRepresentedLanes) { scenario.getConfig().qsim().setUseLanes(true); Lanes lanes = scenario.getLanes(); LanesFactory builder = lanes.getFactory(); //lanes for link 1 LanesToLinkAssignment lanesForLink1 = builder.createLanesToLinkAssignment(Id.create(1, Link.class)); Lane link1FirstLane = builder.createLane(Id.create("1.ol", Lane.class)); link1FirstLane.addToLaneId(Id.create(1, Lane.class)); link1FirstLane.setNumberOfRepresentedLanes(2.0); link1FirstLane.setStartsAtMeterFromLinkEnd(1005.0); link1FirstLane.setCapacityVehiclesPerHour(1800.0); lanesForLink1.addLane(link1FirstLane); Lane link1lane1 = builder.createLane(Id.create(1, Lane.class)); link1lane1.addToLinkId(Id.create(2, Link.class)); link1lane1.setStartsAtMeterFromLinkEnd(105.0); link1lane1.setNumberOfRepresentedLanes(numberOfRepresentedLanes); link1lane1.setCapacityVehiclesPerHour(numberOfRepresentedLanes * 900.0); lanesForLink1.addLane(link1lane1); lanes.addLanesToLinkAssignment(lanesForLink1); }
/** * create a lane on link 1 representing the given number of lanes. * the lanes capacity is 900 times the number of represented lanes. * */ private static void createOneLane(Scenario scenario, int numberOfRepresentedLanes) { scenario.getConfig().qsim().setUseLanes(true); Lanes lanes = scenario.getLanes(); LanesFactory builder = lanes.getFactory(); //lanes for link 1 LanesToLinkAssignment lanesForLink1 = builder.createLanesToLinkAssignment(Id.create(1, Link.class)); Lane link1FirstLane = builder.createLane(Id.create("1.ol", Lane.class)); link1FirstLane.addToLaneId(Id.create(1, Lane.class)); link1FirstLane.setNumberOfRepresentedLanes(2.0); link1FirstLane.setStartsAtMeterFromLinkEnd(25000.0); link1FirstLane.setCapacityVehiclesPerHour(1800.0); lanesForLink1.addLane(link1FirstLane); Lane link1lane1 = builder.createLane(Id.create(1, Lane.class)); link1lane1.addToLinkId(Id.createLinkId(2)); link1lane1.setStartsAtMeterFromLinkEnd(10000.0); link1lane1.setNumberOfRepresentedLanes(numberOfRepresentedLanes); link1lane1.setCapacityVehiclesPerHour(numberOfRepresentedLanes * 900.0); lanesForLink1.addLane(link1lane1); lanes.addLanesToLinkAssignment(lanesForLink1); }
link1FirstLane.setNumberOfRepresentedLanes(2.0); link1FirstLane.setStartsAtMeterFromLinkEnd(25000.0); link1FirstLane.setCapacityVehiclesPerHour(4000.0); lanesForLink1.addLane(link1FirstLane); link1lane1.addToLinkId(Id.createLinkId(2)); link1lane1.setStartsAtMeterFromLinkEnd(10000.0); link1lane1.setCapacityVehiclesPerHour(900.0); lanesForLink1.addLane(link1lane1); link1lane2.setNumberOfRepresentedLanes(2); link1lane2.setStartsAtMeterFromLinkEnd(10000.0); link1lane2.setCapacityVehiclesPerHour(2000.0); lanesForLink1.addLane(link1lane2); link1lane3.addToLinkId(Id.createLinkId(2)); link1lane3.setStartsAtMeterFromLinkEnd(10000.0); link1lane3.setCapacityVehiclesPerHour(900.0); lanesForLink1.addLane(link1lane3);