| 08 12 | Check variant and prevent hard coding |
| 06 17 | OmniTRANS V6: RubyGems |
| 06 16 | Create a process bar |
| 06 08 | OmniTRANS V6: Speed improvements for assignments |
| 06 08 | OmniTRANS V6: Cordon assignment |
| 06 08 | OmniTRANS V6: Capacity restraint assignment for transit |
| 06 08 | OmniTRANS V6: Multiple Egress Routes |
| 06 08 | OmniTRANS V6: Network viewing and editing |
| 06 08 | OmniTRANS V6: Fast and flexible analysis |
| 06 08 | OmniTRANS V6: Ruby running as seperate thread |
Besides, OtTransit introduces capacity restraint assignment to take crowding into account. For situations where public transport and car system are competitive, this offers more insight in the choices that travellers make. This short article introduces the concept of capacity restraint assignment for public transport. More information can be found in the OmniTRANS manual.
The introduction of capacity restraint assignment for public transport has several advantages:
You can use this as follows. In your network, apart from specifying the frequency, you can also specify the capacity of a service by setting the 'seats' property. This can be different per time period. The crowding has effect on perceived travel time. The more travellers in a coach, the higher they perceive travel time.
The old function:

becomes:

where:

The crowding function is defined in the job and is a function of V/C ratio as shown in the graph below.
The first two points ([0.0,0.0] and [0.8,0.01]) indicate that there is almost no crowding effect. After reaching a VC-ratio of 0.8, the effect of crowding is increasing. The crowding function is defined as:
transit.crowdingFunction = [[0.0, 0.0], [0.8, 0.01], [1.0, 0.1], [2.0, 0.75], [10, 10]]
The assign method witht the belonging iterations are defined as:
transit.assignMethod = 'VolAvg' transit.iterations = 5
An entire example job is shown below:
transit = OtTransit.new transit.network = [30,10] transit.load = [1,30,10,1,4,1] transit.logitParameters = [0.26,0.13,0.13] transit.assignMethod = 'VolAvg' transit.iterations = 5 transit.crowdingFunction = [[0.0, 0.0], [0.8, 0.01], [1.0, 0.1], [2.0, 0.75], [10, 10]] transit.execute
Notice that the crowding function value is a multiplier for the travel time and not an absolute value.
To summarize the steps to take:
The movie below shows an Volume Assignment with OtTransit in combination with crowding.