MATSim API

Package org.matsim.roadpricing

This package provides functionality to simulate different road-pricing scenarios in MATSim.

See:
          Description

Interface Summary
RoadPricingSchemeI  
 

Class Summary
CalcPaidToll Calculates the toll agents pay during a simulation by analyzing events.
PlansCalcAreaTollRoute A special router for complete plans that assigns the best routes to a plan with respect to an area toll.
RoadPricingReaderXMLv1 Reads XML files containing a RoadPricingScheme according to roadpricing_v1.dtd.
RoadPricingScheme A road pricing scheme (sometimes also called toll scheme) contains the type of the toll, a list of the tolled links and the (time-dependent) toll amount agents have to pay.
RoadPricingScheme.Cost A single, time-dependent toll-amount for a roadpricing scheme.
RoadPricingWriterXMLv1 Writes a RoadPricingScheme to a file according to roadpricing_v1.dtd.
TravelDisutilityIncludingToll Calculates the travel disutility for links, including tolls.
 

Package org.matsim.roadpricing Description

This package provides functionality to simulate different road-pricing scenarios in MATSim. It provides support for different toll schemes, namely distance tolls, cordon tolls and area tolls. The MATSim Controler has support for the roadpricing package built in, so it only needs to be activated with the corresponding config-settings (see below). The toll schemes are described in special XML files (see below). All supported toll schemes can be limited upon a part of the network and can be time-dependent (that means that the amount agents have to pay for the toll can differ during the simulated day).
The specified toll amount should be in respect to the scoring function used. Best practice is that the scoring function monetizes the the utility, in that case monetary values can be used for the toll amount.

Supported Toll Schemes

Distance Toll

In the case of a distance toll, the amount agents have to pay for the toll is linear to the distance they travel in the tolled area. The roadpricing-type must be set to "distance" in the roadpricing file (see below), and all the links that should be tolled must be listed. The costs are per "link length unit": If an agents travels along a link with length set to "100" (which usually means 100 metres for us), the agent will have to pay 100 times the amount specified in the roadpricing file. The time the agent enters a link is the determining time to define the costs.
Example Road-Pricing File for a distance toll:
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE roadpricing SYSTEM "http://www.matsim.org/files/dtd/roadpricing_v1.dtd">

 <roadpricing type="distance" name="equil-net distance-toll for tests">

        <description>A simple distance toll scheme for the equil-network.</description>

        <links>
                <link id="6" />
                <link id="15" />
        </links>

        <!-- amount: [monetary unit] / [link length unit] -->
        <cost start_time="06:00" end_time="10:00" amount="0.00020" />
        <cost start_time="10:00" end_time="15:00" amount="0.00010" />
        <cost start_time="15:00" end_time="19:00" amount="0.00020" />

 </roadpricing>
 

Cordon Toll

In the case of a cordon toll, agents have to pay a fixed amount each time they enter a tolled link from a non-tolled link. The roadpricing type in the file has to be set to "cordon". The links listed in the roadpricing file are the "tolled links". There are two possibilities to specify the tolled links: Each time an agent enters a tolled link, while being on an not-tolled link before, the agent has to pay the specified amount. The time the agent enters a link is determining the costs.
Example Road-Pricing File for a cordon toll:
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE roadpricing SYSTEM "http://www.matsim.org/files/dtd/roadpricing_v1.dtd">

 <roadpricing type="cordon" name="equil-net cordon-toll">

        <description>A simple cordon toll scheme for the equil-network.</description>

        <links>
                <link id="6" />
                <link id="15" />
        </links>

        <!-- amount: [monetary unit] / [traveling across a tolled link.] -->
        <cost start_time="06:00" end_time="10:00" amount="1.00" />
        <cost start_time="10:00" end_time="15:00" amount="0.50" />
        <cost start_time="15:00" end_time="19:00" amount="1.00" />

 </roadpricing>
 

Distinct toll amounts for single links

For both presented toll schemes, i.e. distance and cordon tolls it is possible to specify a distinct amount of toll for each link. Just include a cost section for each link in the links section of the roadpricing file. In the subsequent example for link 6 the toll specified in the general cost section of the roadpricing file is used while for link 15 those defaults are overwritten by the costs specified within the link's tag.
  <links>
    <link id="6" />
    <link id="15">
      <cost start_time="06:00" end_time="10:00" amount="1.00" />
      <cost start_time="10:00" end_time="15:00" amount="0.50" />
      <cost start_time="15:00" end_time="19:00" amount="1.00" />
    </link>
  </links>
 

Area Toll

In the case of an area toll, agents have to pay a fixed amount when they drive on one of the tolled links, but they have to pay the amount at most once during the simulation. The type must be set to "area" in the roadpricing file. The links listed in the file are the tolled links. The time an agent enters a link is determining if the agent has to be or not.
If more than one time-window is used (more than one <cost>-tag), they must all have the same toll amount, as it is not clear how much an agent would need to pay if he is traveling during several the time-windows (the highest amount of them? or the sum of them?).
Example Road-Pricing File for an area toll:
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE roadpricing SYSTEM "http://matsim.org/files/dtd/roadpricing_v1.dtd">

 <roadpricing type="area" name="equil-net area-toll">

        <description>A simple area toll scheme for the equil-network.</description>

        <links>
                <link id="6" />
                <link id="15" />
        </links>

        <!-- amount: [monetary unit] / [simulations] -->
        <cost start_time="06:00" end_time="10:00" amount="2.00" />
        <cost start_time="15:00" end_time="19:00" amount="2.00" />

 </roadpricing>
 

Use RoadPricing with the Controler

To simulate road pricing with the default MATSim Controler, prepare the road pricing XML file (more details and examples can be found with the description of each supported toll scheme). Then add the following part to your configuration:
 <module name="scenario">
   <param name="useRoadpricing" value="true" />
 </module> 
 <module name="roadpricing">
   <param name="tollLinksFile" value="path/to/your/roadpricing-file.xml" />
 </module> 
As soon as road pricing is switched on in the scenario config module and the parameter tollLinksFile is set, the Controler will load the file and the required classes to simulate the road pricing scenario.

Use RoadPricing without the Controler

If you plan to use the provided road pricing functionality outside of the Controler, please carefully read the following remarks to correctly setup your road pricing scenario: The Controler takes care of all of these details, so you only have to care about this if you're not using (or are using a modified version of) the Controler.

Limitations

Currently, the package has the following limitations:

Author:
mrieser

MATSim API

Copyright © 2005-2012. All Rights Reserved.