Repository navigation
Conversation
… probe A fixed cent sits below the slack the c_min gate leaves in the LP relaxation whenever a vehicle's minimum power is a sizeable share of a slot: the relaxation charges below c_min on a fractional z, the integer schedule cannot, and CBC enumerates to prove the difference. On the request of #186 that is 9 ct and no proof in 110 minutes, where 2.5 ct proves the same schedule in 1.5 s. The gap becomes max(gap_abs, gap_share of the goal energy at the mean import price), 0.25 % by default, and the probe runs with it too instead of proving to CBC's own tolerance. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
@ekkea if this is ok to do it should dramatically improve performance and reduce "feasible" solutions without giving away much. Wdyt? |
|
Replay of the production slow-request dump, 9,691 requests dumped between July and October for exhausting the limit or leaving more than a currency unit unproven. Sample of 240: all 2 October requests with a goal plus 118 random ones with a goal, and 40 October plus 80 random ones without. Each replayed on
Money, on the requests whose cost is money and not penalty units, 102 and 99 of the two groups: 186 identical to the cent, 7 worse, worst by 0.27 ct, 8 better. The requests without a goal keep the 1 ct gap, so their change is the probe alone: 14 more joint proofs out of 120. Two of the better ones are not cents. On The one request that got slower by more than a second, and the 0.21 ct it lost, is a joint solve on both sides whose continuity stage found a different equal-cost schedule; the gap did not change its path. Nothing hit the limit on either side. Scripts and samples are in this session's scratchpad, the outputs fit a comment: 🤖 Generated with Claude Code |
fixes #186
A fixed cent sits below the slack the
c_mingate leaves in the LP relaxation whenever a vehicle's minimum power is a sizeable share of a slot. The relaxation charges belowc_minon a fractionalz, the integer schedule cannot, and CBC has to enumerate to prove the difference. On the three phase request of #186 that is 9 ct of slack and no proof in 110 minutes; a 2.5 ct gap proves the same schedule in 1.5 s. The analysis and the three options tried are on the issue.Two changes.
OPTIMIZER_GAP_SHARE, 0.25 % by default: the absolute gap becomesmax(gap_abs, gap_share × goal energy × mean import price), where goal energy is what the batteries still need for theirs_goal. A request without a goal keeps the cent. And the probe runs with that gap instead of proving to CBC's own tolerance, which alone turns the #170 request into a jointOptimalin 0.7 s where it splits today.Measured under the production limits on the requests from #186, #170 and the one phase household of the README:
A replay of the production slow-request dump, 120 requests with a goal and 120 without, before and after, follows as a comment.
🤖 Generated with Claude Code