Fixes incorrect link graph edge travel times with non-unity day length

Change vehicle last_loading_tick to be relative to _scaled_tick_counter
This commit is contained in:
Jonathan G Rennison
2022-12-11 00:06:09 +00:00
parent f4d775cad3
commit 5c2d5782a4
7 changed files with 27 additions and 8 deletions

View File

@@ -229,7 +229,7 @@ void LinkGraph::Edge::Update(uint capacity, uint usage, uint32 travel_time, Edge
if (edge.travel_time_sum == 0) {
edge.travel_time_sum = (edge.capacity + capacity) * travel_time;
} else if (travel_time == 0) {
edge.travel_time_sum += edge.travel_time_sum / edge.capacity * capacity;
edge.travel_time_sum += (edge.travel_time_sum / edge.capacity) * capacity;
} else {
edge.travel_time_sum += travel_time * capacity;
}
@@ -239,7 +239,7 @@ void LinkGraph::Edge::Update(uint capacity, uint usage, uint32 travel_time, Edge
/* If travel time is not provided, we scale the stored time based on
* the capacity increase. */
if (capacity > edge.capacity && travel_time == 0) {
edge.travel_time_sum = edge.travel_time_sum / edge.capacity * capacity;
edge.travel_time_sum = (edge.travel_time_sum / edge.capacity) * capacity;
edge.capacity = capacity;
} else {
edge.capacity = std::max(edge.capacity, capacity);