An hour using less energy can demand more power
An AI plan reduces total process energy. Does that imply a lower electrical peak? Concentrating work can reduce kilowatt-hours while increasing power over a measurement window. We separate objectives using fully calculable synthetic profiles, not a real tariff or promised customer savings. The issue is defining what the system should optimise.
Energy and power have different units
Power P is energy-use rate, here kW; energy E integrates it over time, yielding kWh when time is hours. Use sixty constant-power one-minute intervals. Energy is their power sum times 1/60 hour. Over this one-hour record its numerical value equals mean power, but the units and concepts remain different.
A holds 100 kW for one hour, using 100 kWh. B uses 180 kW for ten minutes and 60 for fifty: (180·10+60·50)/60=80 kWh, less energy but a 180 versus 100 kW instantaneous peak. We have not verified equal physical output; these profiles isolate metric differences rather than establish a feasible factory optimisation.
The measured peak depends on the window
Now maximise fifteen-minute block averages aligned at 0,15,30,45. Every A block is 100 kW. B’s first is (10·180+5·60)/15=140, with other blocks 60. B therefore has a higher block peak despite lower energy. Forecasting total energy alone does not capture this timing constraint.
Compute each block mean first, then their maximum; the result remains kW, not kWh. Under a hypothetical 120 kW block limit A passes and B fails. Optimising one objective does not remove other constraints: low total consumption can coexist with an inadmissible power requirement.
Moving the peak is not reducing it
C moves B’s ten high-power minutes to [10,20), retaining 60 elsewhere. Energy and instantaneous peak do not change. Each of two fixed blocks now has five high and ten low minutes, averaging 100 kW. Fixed peak falls to 100, but a sliding fifteen-minute window captures all ten high minutes plus five low, so its peak stays 140.
| Profile | Energy (kWh) | Fixed peak (kW) | Rolling peak (kW) |
|---|---|---|---|
| A | 100.0 | 100.0 | 100.0 |
| B | 80.0 | 140.0 | 140.0 |
| C | 80.0 | 100.0 | 140.0 |

Code enumerates all 46 complete sliding windows and four fixed blocks, without inventing samples outside the hour or mixing temporal resolutions. Alignment, duration and aggregation belong in the specification. Hourly means alone cannot distinguish many possible profiles or reconstruct fifteen-minute peaks without extra assumptions.
From metric to decision, with explicit boundaries
EIA distinguishes energy, maximum demand and demand interval; our experiment does not prescribe a specific tariff. Actual costs depend on the contract and other components. We simulate neither bills nor batteries or electrical transients. Equal production, ramps, reactive power and plant constraints remain outside the model. Plot-level feasibility is not electrical validation.
AI planning needs forecasts at objective-relevant resolution: energy for totals, power profiles for peaks and separate feasibility constraints. Direct window enumeration costs window count times window length; rolling sums can reduce work without changing the metric. No hardware benchmark or EL-AI savings are claimed.
Less energy can raise peak demand, and shifting a segment can improve one metric without another. This is not an AI paradox but different questions asked of data. Specifying units, windows and constraints first reveals what is actually being reduced.
U.S. EIA — Demand and demand interval.
import json,sys
from pathlib import Path
A=[100.]*60;B=[180.]*10+[60.]*50;C=[60.]*10+[180.]*10+[60.]*40
def stats(x):
block=[sum(x[i:i+15])/15 for i in range(0,60,15)];rolling=[sum(x[i:i+15])/15 for i in range(46)]
return dict(energyKWh=sum(x)/60,meanKW=sum(x)/60,instantPeakKW=max(x),fixed15KW=block,fixedPeakKW=max(block),rollingPeakKW=max(rolling),traceKW=x)
r=dict(python=sys.version.split()[0],seed=None,scope='Constructed one-minute piecewise-constant profiles, not tariff advice or measured factory data',profiles={k:stats(v) for k,v in [('A',A),('B',B),('C',C)]})
assert r['profiles']['B']['energyKWh']<r['profiles']['A']['energyKWh'];assert r['profiles']['B']['fixedPeakKW']==140 and r['profiles']['C']['fixedPeakKW']==100 and r['profiles']['C']['rollingPeakKW']==140
Path(__file__).with_name('results.json').write_text(json.dumps(r,indent=2),encoding='utf8')
Code, data, and instructions · JSON. Educational calculations executed with Python 3.14.0; figures with Matplotlib 3.11.2. AI-assisted analysis, without claiming peer review or human review. Original illustrative ImageGen cover: it does not document EL-AI people, premises, or installations. Sources accessed 25 October 2026.

