fix T-ALNS-RRD reproduction fidelity

This commit is contained in:
皇甫其逊
2026-06-02 21:58:34 +08:00
parent d803a5bec0
commit 6d829fe7d9
12 changed files with 450 additions and 109 deletions

View File

@@ -50,6 +50,7 @@ class CostCalculator:
departures = [0.0] * n
delays = [0.0] * n
waits = [0.0] * n
arc_travel_time = 0.0
congestion_exposure = 0.0
# First node (depot)
@@ -61,10 +62,12 @@ class CostCalculator:
i = route_nodes[idx - 1]
j = route_nodes[idx]
# Arrival at j (Eq.5)
arrivals[idx] = departures[idx - 1] + problem_ctx.get_travel_time(
i, j, departures[idx - 1]
)
# Arrival at j (Eq.5). Eq.1's travel term is the sum of arc
# traversal times only; waiting and service duration are temporal
# propagation state, not travel cost.
travel_time = problem_ctx.get_travel_time(i, j, departures[idx - 1])
arc_travel_time += travel_time
arrivals[idx] = departures[idx - 1] + travel_time
# Accumulate congestion exposure
congestion_exposure += problem_ctx.get_congestion_penalty(
@@ -103,7 +106,8 @@ class CostCalculator:
"departures": departures,
"delays": delays,
"waits": waits,
"total_travel_time": arrivals[-1] - depot_start_time,
"total_travel_time": arc_travel_time,
"route_duration": departures[-1] - depot_start_time,
"total_delay": sum(delays),
"total_wait": sum(waits),
"congestion_exposure": congestion_exposure,
@@ -381,9 +385,7 @@ class CostCalculator:
total_travel += result["total_travel_time"]
total_delay += result["total_delay"]
total_congestion += result["congestion_exposure"]
avg_route_duration += (
result["departures"][-1] - result["departures"][0]
)
avg_route_duration += result["route_duration"]
# Count on-time deliveries
for idx, node in enumerate(route.nodes):