Class NetworkTurnFlowUpdateData


  • public class NetworkTurnFlowUpdateData
    extends NetworkFlowUpdateData
    Base class to aid updating of the network turn flows during loading. Derived classes can apply a path or bush based approach to this update for example. This class stores the current network state information required to perform the update regardless of the chosen assignment strategy (bush, path).

    Depending on the applied solution scheme a slightly different approach is to be taken with this update where:

    POINT QUEUE BASIC: Also update the network sending flow. Only during basic point queue solution scheme, sending flows are NOT locally updated in the sending flow update step. Therefore sending flows of most links are not updated during the sending flow update because it only updates the sending flows of outgoing links of potentially blocking nodes. When an incoming link of any node is not also an outgoing link of another potentially blocking node its sending flow remains the same even if it actually changes due to further upstream changes in restrictions. In this approach this is taken care of by making sure the sending flows are updated during (this) loading on the path level. Hence, we must update sending flows here.

    ANY OTHER SOLUTION APPROACH: Here we update all used nodes and sending flows are updated iteratively and locally propagated without the need of the loading in the sending flow update. Therefore, there is no need to update the sending flows. On the other hand we now update the turn flows on all used nodes rather than only the potentially blocking ones.

    Author:
    markr
    • Field Detail

      • splittingRateData

        protected final SplittingRateData splittingRateData
        Splitting rate data to use
      • trackAllNodeTurnFlows

        protected final boolean trackAllNodeTurnFlows
        Flag indicating if we are tracking all (used) node turn flows or not
      • acceptedTurnFlows

        protected final org.apache.commons.collections4.map.MultiKeyMap<Object,​Double> acceptedTurnFlows
        The output of this update that can be collected after execution. They key of this map is forged from an entry and exit segment
    • Constructor Detail

      • NetworkTurnFlowUpdateData

        public NetworkTurnFlowUpdateData​(boolean trackAllNodeTurnFlows,
                                         SendingFlowData sendingFlowData,
                                         SplittingRateData splittingRateData,
                                         NetworkLoadingFactorData networkLoadingFactorData)
        Constructor
        Parameters:
        trackAllNodeTurnFlows - to apply
        sendingFlowData - to use
        splittingRateData - to use
        networkLoadingFactorData - to use
      • NetworkTurnFlowUpdateData

        public NetworkTurnFlowUpdateData​(boolean trackAllNodeTurnFlows,
                                         SplittingRateData splittingRateData,
                                         NetworkLoadingFactorData networkLoadingFactorData)
        constructor where sending flows are not to be updated
        Parameters:
        trackAllNodeTurnFlows - flag indicating where or not to track all node turn flows
        splittingRateData - to use
        networkLoadingFactorData - to use
    • Method Detail

      • addToAcceptedTurnFlows

        protected void addToAcceptedTurnFlows​(EdgeSegment entrySegment,
                                              EdgeSegment exitSegment,
                                              double flowToAddPcuH)
        add to accepted turn flows
        Parameters:
        entrySegment - to use
        exitSegment - to use
        flowToAddPcuH - to add
      • getAcceptedTurnFlows

        public org.apache.commons.collections4.map.MultiKeyMap<Object,​Double> getAcceptedTurnFlows()
        Access to the result, the accepted turn flows, where key comprises a combined hash of entry and exit edge segment ids and value is the accepted turn flow v_ab
        Returns:
        accepted turn flows