Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add configurable policies #254

Merged
merged 14 commits into from
Nov 9, 2024
Merged

feat: add configurable policies #254

merged 14 commits into from
Nov 9, 2024

Conversation

sebhoerl
Copy link
Collaborator

In Île-de-France, it is now possible to add several policies comfortably via configuration. While these are examples, there is a flexible infrastructure behind this code to define additional and custom policies. The current basic idea is that they will modify either the utility estimation and/or the travel disutility while routing. Future iterations may add more components that are modified.

The policies can be activated through the eqasim:policies config group:

<module name="eqasim:policies" >
      <parameterset type="cityTax" >
	      <param name="perimetersPath" value="zone.gpkg" />
	      <param name="policyName" value="myCustomCityTax" />
	      <param name="tax_EUR" value="10.0" />
	      <param name="active" value="true" />
              <param name="personFilter" value="" />
      </parameterset>
      <parameterset type="limitedTrafficZone" >
	      <param name="perimetersPath" value="zone.gpkg" />
	      <param name="policyName" value="myLimitedTrafficZone" />
	      <param name="active" value="true" />
              <param name="personFilter" value="" />
      </parameterset>
      <parameterset type="transitDiscount" >
	      <param name="policyName" value="myTransitDiscount" />
	      <param name="priceFactor" value="1.0" />
	      <param name="active" value="true" />
              <param name="personFilter" value="" />
      </parameterset>
</module>
  • City tax: This policy makes agents pay an entry fee when entering a certain zone. Those zones can be defined via the perimetersPath option, which should point to a GPKG file with polygons. The fee that is paid is defined by the tax_EUR option, and it is considered (1) when routing by converting the tax when traversing an entering link into time costs via the cost-beta and the travel-time-beta of the mode parameters. After, (2) the tax is furthermore considered in mode choice by penalizing the choice utility through the cost-beta from the mode parameters. This only applied to car.
  • Limited Traffic Zone: This policy makes agents avoid the zones defined in perimetersPath if they don't have the origin or destination of their trip within that zone. Technically, a very high penalty is added to the routing costs when traversing an incoming link.
  • Transit discount: This policy allows defining a specific discount level for public transport. The priceFactor will be applied to the base price calculated by the currently selected cost model. Technically, the whole cost term is recalculated and removed from the utility, then the partial cost is added back again.

All policies can be activated or deactivate using the active option. This is especially useful when activating/deactivating policies via the command line.

Furthermore, every policy has a personFilter attribute. If set, the policy applies only to those persons whose person attribute called personFIlter is set to true. If no filter is set, the policy applies to everybody.

Multiple policies of each type can be configured.

@sebhoerl sebhoerl enabled auto-merge (squash) November 9, 2024 21:39
@sebhoerl sebhoerl merged commit b338bf8 into develop Nov 9, 2024
1 check passed
@sebhoerl sebhoerl deleted the feat/policies branch November 9, 2024 21:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant