batterymhm / docs /METHOD.md
williamTLmiller's picture
Make it a full tech repo: packaging, CI, docs, examples, community files
4671c68 verified
|
Raw
History Blame Contribute Delete
6 kB
# The Miller Harmonic Method (MHM) — Technical Overview
This document explains the method implemented in `batterymhm/`. The method is
**patent pending**; this description is provided for understanding and
reproduction under the repository's CC BY-NC 4.0 license.
---
## 1. The harmonic digit space and the fold map
MHM works in a finite digit space **D = {1, 2, …, 9}**. Any integer is projected
into D by the **fold map**:
```
HIN(k) = 1 + ((k − 1) mod 9)
```
`HIN` stands for *Harmonic Identity Number*. In code this is `f9` (general) and
`hin` (applied to an atomic number Z). Two integers that differ by a multiple of
9 share a harmonic class. Real-valued measurements (capacity, voltage,
temperature) are first quantised into 9 bins (`seq_to_harmonics`) so they, too,
live in D.
## 2. The binary operations
Two complementary operations act on D, each folded back into D:
| Operation | Symbol | Definition | Role |
|---|---|---|---|
| Creative addition | `⊕` | `f9(a + b + 1)` | recombination / creative synthesis |
| Growth product | `⊗` | `f9(a·b + 1)` | growth / energy exchange |
| Energy addition | `⊕_E` | `f9(a + b + 1 + tier)` | shell-tiered energy coupling |
| Miller subtraction | `⊖` | `f9(a − b + 9)` | directed harmonic difference |
These are the building blocks for the histograms and the calculus below. (Note:
`⊕` and `⊖` are *not* exact inverses — the `+1` in creative addition is
deliberate and gives the algebra its asymmetry.)
## 3. The Chi compatibility matrix
The heart of the method is a fixed **9×9 Chi matrix** `Χ[i, j] ∈ (0, 1]`
(`batterymhm/atomic.py`). `Χ[i, j]` is the harmonic *compatibility* (resonance)
between classes `i` and `j`. It is symmetric with a unit diagonal.
The nine classes split into two physical channels:
- **Matter** — classes 1–8, scored on the 8×8 sub-matrix `CHI_MATTER_8x8`.
- **Energy** — class 9, the "energy pole," scored on a separate 9-vector
`CHI_ENERGY_9`.
- **Tesla nodes** — classes {3, 6, 9} are energy-focusing; they get their own
network features.
This matter/energy split lets crystal-structure models score matter–matter
bonding and the energy-pole contribution on distinct geometries.
## 4. The Miller sequence and shell levels
The **Miller sequence** is a Fibonacci-like sequence with seed `[1, 1, 3]`:
```
1, 1, 3, 4, 7, 11, 18, 29, 47, 76, …
```
Its positions group into **shell levels** (level 1 = positions 1–3, level 2 =
4–12, level 3 = 13–39, …), each level three times larger than the last. These
levels provide a *physically meaningful sampling grid*: for a battery, level-1
positions correspond to the first few cycles (the "initialization signature"),
and later levels to the long-term aging trajectory. The sequence and its
class trajectory (via **CMR**, repeated creative-addition reduction) are turned
into features.
## 5. Embeddings
Two embeddings bridge the discrete digit space to continuous math:
- **χ-embedding**: `χ(a) = (a + 1) mod 9` → an index in ℤ₉ (bridge to calculus).
- **φ-embedding**: `φ(d) = sin(πd / 9)` → a real number (bridge to geometry).
## 6. Miller calculus
Operating on a harmonic sequence, MHM defines discrete differential operators
(`batterymhm/calculus.py`):
- **velocity** — mean first-order Miller difference,
- **acceleration** — mean second-order difference,
- **integral** — cumulative creative addition,
- **curvature** — curvature `κ = |y''| / (1 + y'²)^{3/2}` of the φ-embedded
curve, which spikes at the onset of capacity-fade degradation (the aging
"knee").
Evaluated at multiple window scales, these capture multi-scale degradation
dynamics.
## 7. The descriptor (557 features)
`mhm_full_features(hins)` returns a fixed **557-dimensional** vector
(`batterymhm/features.py`):
| Group | # | What it encodes |
|---|---:|---|
| Chi9 full histogram | 81 | distance-weighted 9×9 compatibility |
| Chi9 count histogram | 81 | unweighted pair counts |
| HIN transition matrix | 81 | Markov ordering of the sequence |
| Growth-product histogram | 81 | `⊗` energy-exchange character |
| Energy-addition histograms (2 tiers) | 162 | `⊕_E` shell-coupled resonance |
| Miller-level breakdown | 27 | class occupancy per shell level |
| Tesla-network features | 9 | {3,6,9} focusing nodes and bridges |
| Multi-scale Miller calculus | 12 | velocity/accel/curvature/integral × 3 scales |
| Creative-addition chains | 15 | cumulative `⊕` chain statistics |
| CMR multi-point | 5 | reductions at 5 truncations |
| HIN / GP / EA entropy | 3 | diversity of harmonic interactions |
For crystals, `mhm_matter8_neighbor_histograms` and `mhm_neighbor_histograms`
build the descriptor from the actual neighbour-pair list `(HIN_a, HIN_b, dist)`,
so every feature is physically grounded.
## 8. The model
The descriptor feeds `MHMEnsemble` (`batterymhm/ensemble.py`):
- **ExtraTrees** (600 trees) + **XGBoost** (400 trees), blended 0.75 / 0.25,
- with an optional **Ridge** out-of-fold stacking meta-learner,
- all seeds fixed at 42 for reproducibility.
The ensemble is deliberately light and CPU-only; the harmonic descriptor does
the heavy lifting.
## 9. Two battery applications
**Cell state-of-health.** Quantise an early-cycle capacity curve into HINs →
compute the 557-feature descriptor → predict SOH / remaining useful life. On the
MIT–Stanford–TRI dataset this reaches MAE 0.0114 (5-fold CV, 30% window), #1 on
that benchmark.
**Crystal formation energy.** Fold each crystallographic site to a HIN by atomic
number → score neighbour pairs through the 8×8 matter matrix + HIN-9 energy
channel → predict formation energy. On Matbench `mp_e_form` this reaches MAE
0.1513 eV/atom — better than the classic RF baseline, below modern GNNs (an
honest, documented limitation).
---
*The fold map, the operations, the Chi matrix, the Miller sequence, and the
multi-scale aggregation are the subject of pending patent applications by
William T. L. Miller.*