Skip to content

Heat router lost ground to the Factorio 2.1 terminal offsets #89

Description

@wormeyman

Follow-up from the issue #81 fix. Correcting the east and west pumpjack pipe corners changes every pipe layout, and the Aquilo heat router does measurably worse on the corpus afterward. The fix itself is right; this issue is about winning the ground back.

What was measured

The 61-blueprint small list, unchanged by that work, planned with AddHeatPipes = true and AddBeacons = false:

Before (2.0 corners) After (2.1 corners)
Fields needing zero pumpjack drops 35 of 61 34 of 61
Pumpjacks dropped in total 51 64

Both runs used the same corpus and differ only in Helpers.TerminalOffsets, so this is a like-for-like comparison.

The invariant that broke

PlannerTest.EnablingBeaconsNeverForcesMoreHeatDrops says turning beacons on must never cost more pumpjacks than heat-only would. Small-list index 35 now breaks it: heat-only keeps every pumpjack, beacons-on drops one. Index 55 moved the other way, from 3 drops to 1.

That rule is emergent, not enforced. AddPipes.SelectBestSolution ranks layouts by unheated-target count first, then drops one pumpjack and replans whenever the best layout still leaves a target uncovered. Nothing stops a beacon layout from being the one that costs a pumpjack, and the design says an unheatable beacon should be dropped instead. Worth checking whether index 35 is that case.

Where it is pinned today

  • PlannerTest.HeatOnlyFullyHeatsEveryFieldAndRarelyDrops floor lowered from 35 to 34.
  • PlannerTest.BeaconsCostAPumpjackIndex pins index 35 to the known-bad numbers rather than skipping it, so fixing the router fails the test and points here.

Reproducing

Plan each small-list blueprint twice, beacons off and on, and compare Summary.HeatDroppedPumpjacks. Flipping the two offsets in Helpers.TerminalOffsets back to (2,-1) and (-2,1) reproduces the before column.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions