Conversation
📝 WalkthroughWalkthroughThis PR adds logic in route cost computation to penalize missing required breaks when both BREAK and TIME dimensions are enabled, and adds a unit test that asserts a routing instance with an unreachable required break is infeasible. ChangesRequired Break Infeasibility Penalty
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
a146585 to
2a4500a
Compare
|
In the current form, I intentionally don't treat missing breaks as a violation as initial solutions are generated without breaks first and then breaks are inserted. Breaks should not be missed, I think there is some other bug in the code. |
|
🔔 Hi @anandhkb, this pull request has had no activity for 7 days. Please update or let us know if it can be closed. Thank you! If this is an "epic" issue, then please add the "epic" label to this issue. |
49831a5 to
424ed35
Compare
424ed35 to
378b061
Compare
Signed-off-by: Nikolai Poperechnyi <n.poperechnyi@gmail.com>
378b061 to
144041c
Compare
|
Hi @rg20 Do you have a chance to check this draft? Looks like there was a lack of squeeze_breaks in certain places. this fixes both cases. Most of the PR are the tests. |
Description
Restore required breaks after route construction, initial-solution loading, and route changes. Skip time and distance breaks when the actual route finishes at or before their deadline, recheck skipped dimensions when another break extends the route, and remove unnecessary breaks when routes shrink.
Fixes both cases in #1195: the unreachable required break returns
INFEASIBLE, and the late-break example returns cost 20 with no break stop. Configured break windows must still be compatible with the vehicle shift.Validation: 129 local Python routing tests and 28 C++ tests passed. The two tests that grow and shrink routes with existing breaks also passed CUDA synchronization checking with zero errors. Regression coverage includes distance breaks, generated and injected routes, exact deadlines, waiting and return travel, dependent dimensions, mixed break types, and unchanged rejection of breaks outside the configured shift.
Checklist