/** Reads fundamental diagram parameters from AIMSUN generated xml */ public void readFundamentalDiagramsFromXML_AIMSUN() { for (int key : detectors.keySet()) { Detector d = detectors.get(key); // find the corresponding FD profile int i; for (i = 0; i < this.mainScenario .getFundamentalDiagramProfileSet() .getFundamentalDiagramProfile() .size(); i++) { if (Integer.parseInt( this.mainScenario .getFundamentalDiagramProfileSet() .getFundamentalDiagramProfile() .get(i) .getLinkId()) == d.getLinkAssoc()) { break; } } BigDecimal vf = this.mainScenario .getFundamentalDiagramProfileSet() .getFundamentalDiagramProfile() .get(i) .getFundamentalDiagram() .get(0) .getFreeFlowSpeed(); BigDecimal q_max = this.mainScenario .getFundamentalDiagramProfileSet() .getFundamentalDiagramProfile() .get(i) .getFundamentalDiagram() .get(0) .getCapacity(); BigDecimal rhojam = this.mainScenario .getFundamentalDiagramProfileSet() .getFundamentalDiagramProfile() .get(i) .getFundamentalDiagram() .get(0) .getJamDensity(); double w = q_max.doubleValue() / (rhojam.doubleValue() - q_max.doubleValue() / vf.doubleValue()); d.getFdParams().setFD(vf.doubleValue(), w, q_max.doubleValue() / d.getNumberOfLanes()); detectors.put(key, d); } }
/** Reads the SensorList from mainScenario and populates the detectors hashmap */ public void createDetectorListFromMainScenario() { String sensorIDString; for (int i = 0; i < this.mainScenario.getSensorList().getSensor().size(); i++) { Detector d = new Detector(); sensorIDString = this.mainScenario .getSensorList() .getSensor() .get(i) .getParameters() .getParameter() .get(7) .getValue(); d.setSensorID(Integer.parseInt(sensorIDString)); d.setSensorType(this.mainScenario.getSensorList().getSensor().get(i).getType()); d.setSourceAddress("n/a"); d.setLinkAssoc( Integer.parseInt( this.mainScenario.getSensorList().getSensor().get(i).getLinkReference().getId())); detectors.put(d.getSensorID(), d); } }
/** Calibrates fundamental diagram parameters for detectors */ public void calibrateFundamentalDiagrams() { for (int key : detectors.keySet()) { FDCalibrator fdCalib = new FDCalibrator(); detectors.put(key, fdCalib.calibrateParameters(detectors.get(key))); } }
/** Reads the network geometry from mainScenario and populates the links hashmap */ public void createLinkStructureFromMainScenario() { for (int i = 0; i < this.mainScenario.getNetworkList().getNetwork().get(0).getLinkList().getLink().size(); i++) { Link l = new Link(); boolean hasDetector = false; Detector detectorML = new Detector(); l.setLinkType( this.mainScenario .getNetworkList() .getNetwork() .get(0) .getLinkList() .getLink() .get(i) .getType()); l.setLinkID( Integer.parseInt( this.mainScenario .getNetworkList() .getNetwork() .get(0) .getLinkList() .getLink() .get(i) .getId())); l.setUpNode( nodes.get( Integer.parseInt( this.mainScenario .getNetworkList() .getNetwork() .get(0) .getLinkList() .getLink() .get(i) .getBegin() .getNodeId()))); l.setDownNode( nodes.get( Integer.parseInt( this.mainScenario .getNetworkList() .getNetwork() .get(0) .getLinkList() .getLink() .get(i) .getEnd() .getNodeId()))); l.setUpLinks(l.getUpNode().getInLinks()); l.setDownLinks(l.getDownNode().getOutLinks()); l.setLength( this.mainScenario .getNetworkList() .getNetwork() .get(0) .getLinkList() .getLink() .get(i) .getLength() .doubleValue()); l.setLanesML( this.mainScenario .getNetworkList() .getNetwork() .get(0) .getLinkList() .getLink() .get(i) .getLanes() .intValue()); for (int key : detectors.keySet()) { if (detectors.get(key).getLinkAssoc() == l.getLinkID()) { hasDetector = true; // Detector dummyDetector = detectors.get(key); // if (dummyDetector.getSensorType().toString().equals(arg0) //REVISIT detectorML = detectors.get(key); } } l.setHasDetector(hasDetector); l.setDetectorML(detectorML); links.put(l.getLinkID(), l); } }
/** Reads the network geometry from mainScenario and populates the nodes hashmap */ public void createNodeStructureFromMainScenario() { for (int i = 0; i < this.mainScenario.getNetworkList().getNetwork().get(0).getNodeList().getNode().size(); i++) { ArrayList<Integer> inputs = new ArrayList<Integer>(); ArrayList<Integer> outputs = new ArrayList<Integer>(); Node n = new Node(); n.setNodeID( Integer.parseInt( this.mainScenario .getNetworkList() .getNetwork() .get(0) .getNodeList() .getNode() .get(i) .getId())); n.setNodeType( this.mainScenario .getNetworkList() .getNetwork() .get(0) .getNodeList() .getNode() .get(i) .getType()); for (int j = 0; j < this.mainScenario .getNetworkList() .getNetwork() .get(0) .getNodeList() .getNode() .get(i) .getInputs() .getInput() .size(); j++) { inputs.add( Integer.parseInt( this.mainScenario .getNetworkList() .getNetwork() .get(0) .getNodeList() .getNode() .get(i) .getInputs() .getInput() .get(j) .getLinkId())); } for (int j = 0; j < this.mainScenario .getNetworkList() .getNetwork() .get(0) .getNodeList() .getNode() .get(i) .getOutputs() .getOutput() .size(); j++) { outputs.add( Integer.parseInt( this.mainScenario .getNetworkList() .getNetwork() .get(0) .getNodeList() .getNode() .get(i) .getOutputs() .getOutput() .get(j) .getLinkId())); } n.setInLinks(inputs); n.setOutLinks(outputs); nodes.put(n.getNodeID(), n); } }