Implement nose coupling so run-arounds work, and stop coupling wiping the district
This commit is contained in:
+37
-1
@@ -10,7 +10,43 @@ The target is 20 Revenue over 5 Days.
|
||||
|
||||
## Unreleased
|
||||
|
||||
Nothing yet.
|
||||
### Teaching the bot to use a siding
|
||||
|
||||
**Nose coupling, which the rules had and the engine did not.** §A.3: "engines also have couplers on
|
||||
the front end, so a train can pick cars up onto its nose". Coupling always appended to the back, so
|
||||
which end cars landed on did not exist — and that is precisely what a run-around is for. Cars met
|
||||
running FORWARD now couple in front, cars met BACKING couple behind, so the approach decides which
|
||||
car is next off the tail:
|
||||
|
||||
running forward -> reefer, boxcar, hopper next off: hopper
|
||||
backing up -> boxcar, hopper, reefer next off: reefer
|
||||
|
||||
The bot prefers a run-around to setting a car down, since it keeps the car — but only when the drop
|
||||
can actually follow. Without that guard it ran the loop for its own sake (8 a game, 63 Moves), which
|
||||
the shuttling regression correctly failed.
|
||||
|
||||
**A serious bug found on the way.** The `carsCoupled` reducer cleared **every card in the Office
|
||||
Area**, not the ones the crew ran over — its own comment said "every card along the path" while the
|
||||
code iterated the whole grid. One coupling anywhere deleted every standing car and every industry
|
||||
track in the district, so loads worked over several Stages vanished when a crew picked up an
|
||||
unrelated boxcar somewhere else. The event now names the cards it lifted from.
|
||||
|
||||
**A test replaced rather than relaxed.** "Under 60 Moves a game" started failing. That threshold was
|
||||
calibrated when the crew coupled ~0.4 cars a game; it now couples ~8 and drops ~11, and a run-around
|
||||
is *supposed* to cost several Moves. Counting Moves was always a proxy for aimlessness, so the test
|
||||
now measures the thing itself — Moves per drop-or-coupling — which still fails when the bot is made
|
||||
to wander.
|
||||
|
||||
| | before sidings | now |
|
||||
| --- | --- | --- |
|
||||
| revenue | 3.9 | 3.2 |
|
||||
| freight | 0.9 | 1.0 |
|
||||
| drops per game | 3.3 | **11.1** |
|
||||
| couplings per game | ~0.4 | **7.9** |
|
||||
|
||||
Switching is transformed; revenue is not. The crew now does real work — roughly 4 Moves per
|
||||
productive act, which is what running a loop costs — but that work is not yet converting into
|
||||
Revenue. Where it goes next is an open question rather than a known fix.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user