Class BushTurnFlowUpdateConsumer

  • All Implemented Interfaces:
    Consumer<Bush>

    public class BushTurnFlowUpdateConsumer
    extends BushFlowUpdateConsumer<NetworkTurnFlowUpdateData>
    implements Consumer<Bush>
    Consumer to apply during bush based turn flow update for each non-zero demand bush

    Depending on the applied solution scheme a slightly different approach is taken to 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 this 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 only identified when we make 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
    • Constructor Detail

      • BushTurnFlowUpdateConsumer

        public BushTurnFlowUpdateConsumer​(NetworkTurnFlowUpdateData dataConfig)
        constructor
        Parameters:
        dataConfig - to use
    • Method Detail

      • applyAcceptedTurnFlowUpdate

        protected void applyAcceptedTurnFlowUpdate​(int prevSegmentId,
                                                   EdgeSegment currentSegment,
                                                   double turnAcceptedFlowPcuH)
        track the turn accepted flows when they are classified as being tracked, otherwise do nothing
        Overrides:
        applyAcceptedTurnFlowUpdate in class BushFlowUpdateConsumer<NetworkTurnFlowUpdateData>
        Parameters:
        prevSegmentId - to use
        currentSegment - to use
        turnAcceptedFlowPcuH - to use
      • getAcceptedTurnFlows

        public Map<Integer,​Double> getAcceptedTurnFlows()
        The found accepted turn flows by the combined entry-exit segment hash code
        Returns:
        accepted turn flows