12 pages covering architecture, findings, and metrics from the rotatingMachine + machineGroupControl hardening work: - Overview: node inventory, what works/doesn't, current scale - Architecture: 3D pump curves, group optimization algorithm - Findings: BEP-Gravitation proof (0.1% of optimum), NCog behavior, curve non-convexity, pump switching stability - Metrics: test counts, power comparison table, performance numbers - Knowledge graph: structured YAML with all data points and provenance - Session log: 2026-04-07 production hardening - Tools: query.py, search.sh, lint.sh Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
39 lines
1.7 KiB
Markdown
39 lines
1.7 KiB
Markdown
---
|
|
title: BEP-Gravitation Optimality Proof
|
|
created: 2026-04-07
|
|
updated: 2026-04-07
|
|
status: proven
|
|
tags: [machineGroupControl, optimization, BEP, brute-force]
|
|
sources: [nodes/machineGroupControl/test/integration/distribution-power-table.integration.test.js]
|
|
---
|
|
|
|
# BEP-Gravitation vs Brute-Force Global Optimum
|
|
|
|
## Claim
|
|
The machineGroupControl BEP-Gravitation algorithm (with marginal-cost refinement) produces near-optimal flow distribution across a pump group.
|
|
|
|
## Method
|
|
Brute-force exhaustive search: 1000 steps per pump, all 2^n combinations, 0.05% flow tolerance. Station: 2x H05K-S03R + 1x C5-D03R-SHN1 @ ΔP=2000 mbar.
|
|
|
|
## Results
|
|
|
|
| Demand | Brute force | machineGroupControl | Gap |
|
|
|--------|------------|--------------------|----|
|
|
| 10% (71 m3/h) | 17.65 kW | 17.63 kW | -0.10% (MGC wins) |
|
|
| 25% (136 m3/h) | 34.33 kW | 34.33 kW | +0.01% |
|
|
| 50% (243 m3/h) | 61.62 kW | 61.62 kW | -0.00% |
|
|
| 75% (351 m3/h) | 96.01 kW | 96.10 kW | +0.08% |
|
|
| 90% (415 m3/h) | 122.17 kW | 122.26 kW | +0.07% |
|
|
|
|
Maximum deviation: **0.1%** from proven global optimum.
|
|
|
|
## Why the Refinement Matters
|
|
|
|
Before the marginal-cost refinement loop, the gap at 50% demand was **2.12%**. The BEP-Gravitation slope estimate pushed 14.6 m3/h to C5 (costing 5.0 kW) when the optimum was 6.5 m3/h (0.59 kW). The refinement loop corrects this by shifting flow from highest actual dP/dQ to lowest until no improvement is possible.
|
|
|
|
## Stability
|
|
Sweep 5-95% in 2% steps: 1 switch (rising), 1 switch (falling), same transition point. No hysteresis. See [[Pump Switching Stability]].
|
|
|
|
## Computational Cost
|
|
0.027-0.153ms median per optimization call (3 pumps, 6 combinations). Uses 0.015% of the 1000ms tick budget.
|