# Variable Penalty for a &amp;quot;vertical&amp;quot; junction

1717
6
10-22-2012 07:04 AM
New Contributor III
I am new to network analyst and I am currently creating a multi-modal network, involving the local bus system and walking along streets, for my undergraduate thesis. I am setting up the network to model transfers and have set the elevation field values for the bus routes to the bus route number. I currently have two junction features, one for accessing a bus route from the street and one for bus-to-bus transfers, the first of which connects a bus route to the street center line file and the second which connects bus lines at a given stop.
The transfer junction has a penalty of ten minutes whether an agent is transferring "up" or "down". My problem is with the Bus route "access" junction. If an agent is accessing a route from a street I want to model the wait time, in minutes, as 2 + 0.3(Bus line headway), but if the agent is going from the bus route to the street, I do not want a penalty to exist. The only solution I can currently think of is to create an edge feature between every junction at the street level and the spatially coincident route level junction.
Is there some way to set a variable penalty at a junction that is determined by direction of travel?

Thanks in advance for your ideas. Attached is a diagram exemplifying how the network should be set up in the end, pending advice I receive from those more knowledgeable.
Tags (2)
1 Solution

Accepted Solutions
Esri Regular Contributor
Is there some way to set a variable penalty at a junction that is determined by direction of travel?

A junction only has one cost for going though it. It does not/can not differentiate the travel direction. So you have to use the edges to define the from/to travel direction.

Jay Sandhu
6 Replies
by
Occasional Contributor III
Hi,

Please note that, in arcgis network analyst, when you are building a network. It is possible to define a separate penalty for each direction of travel on the same link (line segment). Therefore, for each link you can make a FT_penalty (from_node-to-to_node penalty) and a TF_penalty (to_node-to-from_node penalty). In your case you could give a penalty to direction from street to bus, but not from bus to street.

You must have two separate fields, one for each direction, in your attribute table. You can then define them into the model when you are defining 'evaluators' while building the network.

regards,
Esri Regular Contributor
Is there some way to set a variable penalty at a junction that is determined by direction of travel?

A junction only has one cost for going though it. It does not/can not differentiate the travel direction. So you have to use the edges to define the from/to travel direction.

Jay Sandhu
New Contributor III
A junction only has one cost for going though it. It does not/can not differentiate the travel direction. So you have to use the edges to define the from/to travel direction.

Jay Sandhu

Jay, I believed this might be the case. Thanks for clarifying.
by
Occasional Contributor III
Jay, I believed this might be the case. Thanks for clarifying.

You can overcome your problem if you change your node structure and have only one node point instead of two and use the simple FT/TF method.

regards,
New Contributor III
You can overcome your problem if you change your node structure and have only one node point instead of two and use the simple FT/TF method.

regards,

How would I go about changing the node structure? I have two different junctions for two different connectivity groups. One is dedicated for bus-to-bus transfer and the other is dedicated to street to bus transfer. It is only the latter that I need a FT/TF variability.
New Contributor
I am setting up the network to model transfers and have set the elevation field values for the bus routes to the bus route number. I currently have two junction features, one for accessing a bus route from the street and one for bus-to-bus transfers, the first of which connects a bus route to the street center line file and the second which connects bus lines at a given stop.
The transfer junction has a penalty of ten minutes whether an agent is transferring "up" or "down".

I'm pretty much doing the same thing as you are. I have solved your problem by splitting the wait time penalty in half: one half is applied when 'entering' a bus route, and one half is applied when 'exiting' a bus stop, with the time cost in the same field and directionality not considered. For instance, for a 5 minute wait penalty, 2.5 minutes applies when you enter, and 2.5 when you exit. You could of course define WaitTimeFromTo (entering) and WaitTimeToFrom (exiting) fields with an x minute time penalty for the FromTo, and a 0 minute time penalty for the ToFrom. The latter is a better option and I'm not sure why I'm still using the former, but the difference is minor and not applicable to what I'm using a network for.

My network is structured, though, with 'BusEntrances' coincident with the streets, and spatially offset 'BusStops' (offset by a trivial distance), with an edge between each pair: these edges contain my wait times, which you can configure to vary based on direction, as recommended above. My bus routes have end vertices at BusStops, but not BusEntrances.

However I am stuck at the point of creating a transfer penalty. I have elevation values of the same nature as yours (equal to the bus service number), but whenever I include them in my network, the bus lines lose all connectivty from the roads and from each other (as though they are in separate, non-intersecting planes, when really every route has at least one stop it shares with another route, and all routes connect to the streets). Ignoring the bus-elevation, my network conectivity is fine, but there is of course no penalty for 'hopping' between routes, causing some weird choices and travel times to arise.

What I want is what you've already achieved here: a penalty for a 'vertical turn' between bus routes (but not applied when going from buses to streets). Can you please explain to me how you achieved this?