Class StaticLtmLoadingBush


  • public class StaticLtmLoadingBush
    extends StaticLtmNetworkLoading
    The bush based network loading scheme for sLTM
    Author:
    markr
    • Constructor Detail

      • StaticLtmLoadingBush

        public StaticLtmLoadingBush​(IdGroupingToken idToken,
                                    long assignmentId,
                                    StaticLtmSettings settings)
        Constructor
        Parameters:
        idToken - to use
        assignmentId - to use
        settings - to use
    • Method Detail

      • networkLoadingTurnFlowUpdate

        protected Map<Integer,​Double> networkLoadingTurnFlowUpdate()
        Conduct a network loading to compute updated turn inflow rates u_ab: Eq. (3)-(4) in paper. We only consider turns on nodes that are potentially blocking to reduce computational overhead.
        Specified by:
        networkLoadingTurnFlowUpdate in class StaticLtmNetworkLoading
        Returns:
        acceptedTurnFlows (on potentially blocking nodes) where key comprises a combined hash of entry and exit edge segment ids and value is the accepted turn flow v_ab
      • networkLoadingLinkSegmentInflowUpdate

        protected void networkLoadingLinkSegmentInflowUpdate​(double[] linkSegmentFlowArrayToFill)
        Conduct a network loading to compute updated inflow rates (without tracking turn flows): Eq. (3)-(4) in paper
        Specified by:
        networkLoadingLinkSegmentInflowUpdate in class StaticLtmNetworkLoading
        Parameters:
        linkSegmentFlowArrayToFill - the inflows (u_a) to update
      • activateEligibleSplittingRateTrackedNodes

        protected void activateEligibleSplittingRateTrackedNodes()
        Initialise tracking of splitting rates and network flows on all nodes that are used by any currently active PAS. This way we are able to ascertain how much total network flow runs through each PAS which in turn is used to determine how much flow we can shift between segments.
        Specified by:
        activateEligibleSplittingRateTrackedNodes in class StaticLtmNetworkLoading
      • computeSubPathSendingFlow

        public double computeSubPathSendingFlow​(DirectedVertex startVertex,
                                                DirectedVertex endVertex,
                                                EdgeSegment[] subPathArray)
        Determine the sending flow between origin,destination vertex using the subpath given by the subPathArray in order from start to finish. We utilise the initial sending flow on the first segment as the base flow which is then followed along the subpath through the network splitting rates up to the final link segment
        Parameters:
        startVertex - to use
        endVertex - to use
        subPathArray - to extract path from
        Returns:
        sendingFlowPcuH between start and end vertex following the sub-path
      • setBushes

        public void setBushes​(Bush[] originBushes)
        The bushes to use when a loading update is requested
        Parameters:
        originBushes - to use
      • setPasManager

        public void setPasManager​(PasManager pasManager)
        The PasManager to use when we must initialise the tracked network nodes (namely all nodes that are part of a PAS, since we need to know the network flow that passes through them)
        Parameters:
        pasManager - to use
      • activateNodeTrackingFor

        public void activateNodeTrackingFor​(Pas newPas)
        For each PAS we must be able to determine the network level flows along the segments, see computeSubPathSendingFlow(DirectedVertex, DirectedVertex, EdgeSegment[]). This requires knowing the network level splitting rates on the network level as well as the sending flows and acceptance factors, otherwise we cannot determine this. Therefore, for each newly identified PAS we activate node tracking for all (eligible) nodes along the segments of this PAS, if not already done so
        Parameters:
        newPas - to activate nodes on segments for