Currently, the only resource constraint on the network is flow capacity.
Storage Capacity should also be respected. This requires sending the available capacity for each split link to neighbor partitions.
This also makes it necessary to think about how to serve incoming links on Node::move_vehicles. Currently, all available vehicles are taken from one link before the next one is served. Other methods could be round-robin, or probability depending on in link capacities (default in MATSim)
Step 1: Storage Capacity on local links
[x] links need a storage capacity. We are going to use the standard metric from MATSim, by using the cell size from the network in combination with the PCE of a vehicle type
[x] links require a storage capacity method, i.e., how many vehicles can be accepted within the next time step.
[x] On move_node it must be tested, whether the next links can accept vehicles
Step 2: Storage Capacity over Process Boundaries
[x] Available storage capacity must be collected from SplitInLinks and passed to the MessageBroker.
[x] The MessageBroker must communicate the available storage capacities to the respective processes. This involves extending the VehicleMessage so that it also carries the storage capacity information. Probably the message should be renamed to TimeStepMessage or SyncMessage for example
[x] MessageBrokers must collect storage capacities from neighbor partitions, then the SplitOutLinks of the local network must be updated with the available storage capacity.
Currently, the only resource constraint on the network is flow capacity.
Storage Capacity should also be respected. This requires sending the available capacity for each split link to neighbor partitions.
This also makes it necessary to think about how to serve incoming links on
Node::move_vehicles
. Currently, all available vehicles are taken from one link before the next one is served. Other methods could be round-robin, or probability depending on in link capacities (default in MATSim)Step 1: Storage Capacity on local links
move_node
it must be tested, whether the next links can accept vehiclesStep 2: Storage Capacity over Process Boundaries
SplitInLinks
and passed to theMessageBroker
.MessageBroker
must communicate the available storage capacities to the respective processes. This involves extending theVehicleMessage
so that it also carries the storage capacity information. Probably the message should be renamed toTimeStepMessage
orSyncMessage
for exampleMessageBroker
s must collect storage capacities from neighbor partitions, then theSplitOutLinks
of the local network must be updated with the available storage capacity.