matsim-org / matsim-libs

Multi-Agent Transport Simulation
www.matsim.org
478 stars 441 forks source link

Road pricing and public transport vehicles #1401

Closed gac55 closed 3 years ago

gac55 commented 3 years ago

Context - We are running some simulations with differential road pricing dependent on agent attribute (using the fantastic tollFactor implementation).

In some scenarios we unintentionally did not exclude PT vehicles and in our events we saw:

<event time="41401.0" type="personMoney" person="pt_bus6_bus" amount="-20.0" purpose="toll"  />

We see that for the personMoney constructor, the person is defined as the mode + vehicleId + vehicleType when identifying this event.

Although this is undesirable for our use case it raised an interesting question - in this case, is a price applied to a PT vehicle handed on to the onboard agents? If so, how? Is it distributed evenly across all agents or all agents pay the same cost? If the cost is not, I presume the cost has no impact on the PT vehicle or agents.

I will investigate the agent plans further and assess the impact on scoring but thought the community may have some experience to share.

As I say, practically not something of relevance but the event raised our curiosity.

JWJoubert commented 3 years ago

While I do, unfortunately, not have an answer for you @gac55, I'm curious as to look into this. Especially because we have a use case where we want to include the pt (well, minibus vehicles) to get the moneyEvent

gac55 commented 3 years ago

Thanks @JWJoubert.

Investigating the plans I do not see any impact on agent scores where this PT vehicle is used by an agent. I ran a scenario with a 1000x tollFactor for PT vehicles and one with a 0x tollFactor.

How else may a toll influence the vehicle? For a "normal" vehicle we would expect it to influence the score and thus perhaps result in route choice, but in the case of a PT vehicle this is defined in the schedule and not something with an innovation strategy.

I think, this suggests that the toll is not passed on and that it therefore has no effect.

JWJoubert commented 3 years ago

I agree, @gac55 , that it has (should have) little effect on (formal) public transport services. But in the informal sector (paratransit), which is what the minibus contrib caters for, the toll should hit the vehicle's "owner", i.e. the association to which the vehicle belongs, making them less profitable. Or if the vehicles reroute and use restricted lanes, then they should be fined (another use case for the roadpricing module).

JWJoubert commented 3 years ago

But yes, the paratransit is a messy-middle between private car and public transit.

gac55 commented 3 years ago

Thanks @JWJoubert, got it. From a scan of the minibus contrib I can see how those costs can be passed on.

A related question - are you aware of any functionality for shared personal vehicles (cars)?

In another application we are considering attempting to simulate a form of HOV road pricing, where occupancy is considered in the tollFactor. I.e. a discount for additional passengers. Of course this requires personal car occupancy to be modelled and we have reviewed the different taxi and MAAS implementations which may be simplified to try and capture this. A further question being how and who picks up the toll, the driver solely or distributed across all agents in the car?

Our belief is that HOV lanes aren't particularly effective, but we are curious about explicitly modelling them.

gac55 commented 3 years ago

Please forgive my direct tagging @mrieser, but I suspect you will know the answer to my question regarding occupancy and personal vehicles! Any insights would be much appreciated, thanks.

JWJoubert commented 3 years ago

I do not have a quick answer, @gac55 , and yes, @mrieser is sure to have good insight here.

What I can say is that I recently merged a branch into master, which is now in the 13.0-2021w08-SNAPSHOT where Vehicles are now also Attributable. So, while VehicleTypes had it for a while, vehicles too now have Attributes where you can put any arbitrary attribute, like the number of occupants.

mrieser commented 3 years ago

I haven't worked with RoadPricing or DRT/taxi/MAAS for a while, but I think the following still holds true:

To my knowledge, the tolls are issued as PersonMoneyEvents on the driver. This explains why public transport (non-minibus) is unaffected of the tolls: PT just drives their routes, and although MATSim creates driver-agents for all PT vehicles, their score never gets evaluated, and thus any toll will just be ignored.

I would be surprised if drt/taxi/maas has any special code to distribute the money-event among the passengers. I strongly suspect that the toll will just be paid by the driver, i.e. it will only influence the driver's score.

One could think about having a custom PersonMoneyEventHandler that distributes the toll among the passengers by creating additional PersonMoneyEvents for each passenger, as well as a "reimbursement" for the driver. Such an event handler could be limited to only perform this action for certain vehicles (e.g. excluding PT vehicles), or only on certain links (e.g. only on HOV lanes).

Does this answer your question(s)?

gac55 commented 3 years ago

It does, thank you @mrieser and @JWJoubert.