ChargeWise Fits the Fleet to the Grid
Updated 26 October 2026 with the forecasting follow-up
Why this mattersA feasible charging schedule can reveal how much grid capacity a depot actually needs before more hardware or a larger connection is considered.
Two 11 kW chargers do not necessarily require a 22 kW grid connection. The answer depends on which vehicles are plugged in, how much energy they need, and when they leave.
For the Nebius × NVIDIA hackathon, I built ChargeWise AI with Muhammad Talha Toqeer and Umar Khan. A fleet manager enters the vehicles, departure times, energy requirements, and available hardware. The planner compares schedules and works out how much shared site power the configured fleet needs. [1]
The live demo runs the same application as the downloadable build: the editable React dashboard, OR-Tools planner, capacity checks and guided outage workflow. Start with Load sample and Start guided demo. It uses synthetic data and controls no physical chargers.
The plug stays occupied after charging ends
A van can finish charging at 09:00 and remain parked until noon. Unless someone moves it, that charger cannot serve another vehicle during those three hours. A scheduler that ignores occupancy can produce an attractive power curve that the depot cannot follow.
ChargeWise checks connector compatibility, physical connection and availability, charger ratings, vehicle power limits, charging efficiency, and the site's combined load. It also uses a conservative state-of-charge-dependent taper envelope. That envelope makes planning tractable; a particular vehicle's measured charging curve would describe its battery more closely.
The three greedy baselines use the same physical constraints as the optimized schedule. First-come-first-served follows arrival order; earliest-deadline-first prioritises departures; least-laxity-first prioritises the vehicles with least remaining scheduling slack.
Why 8.89 kW is enough for this fleet
The four-van example has two fixed 11 kW ports and requires 84 battery kWh over the day. All three baselines meet every energy target and reach a 22 kW peak. The optimized schedule also meets every target, at 8.89 kW. The published fixture records an optimal solver result and independent validation. [2]
The afternoon pair needs 48 battery kWh in six hours. At 90% charging efficiency, that requires 53.33 grid kWh. Even a perfectly flat schedule therefore needs at least
A lower limit cannot supply enough energy in that window. The optimizer finds a schedule attaining the bound while meeting the configured constraints. The peak is about 60% lower than the greedy schedules. Both the infeasibility argument below the bound and a feasible schedule at the bound are available in this example.
Cheap electricity can set an expensive peak
If every van follows the same low-price interval, the combined load can create a new demand peak. An energy-only objective misses that part of the bill.
Under the illustrative tariff, optimization raises the energy component from about €21.47 to €24.09. The smaller peak reduces the demand component enough that the combined scenario cost falls from €355.87 to €159.20. These are synthetic prices and a €15.20/kW/month demand tariff applied to the example's partial billing period with a zero prior peak. They are not observed fleet savings or an annual return.
A previous peak changes the decision too. Once the billing period has already reached a particular demand level, pushing today's load below that level cannot reduce the established demand charge. The planner needs that history as well as the upcoming prices.
Nemotron requests a replan; the solver builds it
NVIDIA Nemotron, accessed through Nebius Token Factory, connects an operator's questions to application tools. It can retrieve schedule facts or request an authorised simulated charger outage. The tool changes equipment availability, OR-Tools computes a new schedule, and a separate validator checks the allocations before the assistant explains the result.
In the verified CH-01 morning-outage example, the optimized peak rises from 8.89 to 10 kW and every vehicle still receives its requested energy. The architecture film below demonstrates a separate afternoon outage: CH-02 is unavailable from 16:00 to 18:00, with delivery before noon frozen. In that recorded schedule, redistributing the remaining allocations retains the 8.89 kW peak.
Freezing delivered energy is essential. A replan after noon must preserve what happened in the morning. Otherwise an optimizer could appear to recover by changing a past allocation that the depot can no longer execute.
Forecasting for the charging decision
In a follow-up run on 26 October, pretrained time-series models forecast 37 locally held-out days of historical German electricity prices from August–September 2019. Chronos-Bolt Small reduced price mean absolute error by 29.2% against ridge regression. TimesFM also improved forecast accuracy. [3]
| Forecast | Price MAE €/MWh | Energy only €/scenario-day | With demand €/scenario-day |
|---|---|---|---|
| Ridge | 7.042 | 3.3353 | 138.9116 |
| TimesFM 2.5 200M | 5.720 | 3.3377 | 138.9092 |
| Chronos-Bolt Small 48M | 4.988 | 3.3395 | 138.9095 |
| Perfect-price oracle | n/a | 3.3141 | 138.9059 |
The caveat: TimesFM's demand-inclusive improvement over ridge was only about €0.0025 per scenario-day, a quarter of a euro cent. All 518 paired scenario/model/tariff solves passed independent checks and met the energy targets; ridge remained best among the forecasts for energy-only cost.
The models can improve prices during hours when no van is connected, or distinguish between cheap hours that the timetable makes interchangeable. A demand peak can also dominate the small differences in energy cost. Lower forecasting error therefore need not yield a useful change in the charging decision.
This was an exploratory replay of old data, with unknown overlap between the evaluation period and model pretraining. Retail prices and the depot's other electrical loads were absent. Forecasts were evaluated by passing them through the physical optimizer and costing the resulting schedule against realised prices. Already published day-ahead prices should be used directly; prediction is useful only where information is still missing.
Try the planner
Open ChargeWise, load the sample and start the guided demo. The original dashboard lets you edit vehicles, chargers, prices and tariffs, compare schedules, check capacity and replan around simulated outages. Already delivered energy stays frozen when replanning.
The hosted and downloadable versions use the same Python optimizer and independent schedule checks, including the battery taper envelope. The public demo uses the application's labelled local-summary assistant; it makes no paid model calls. The forecasting study above reports the separate historical-price evaluation.
Run the full application locally
The portable build contains the same dashboard and optimizer, with uploads, taper constraints and optional assistant integration. [4] With Python 3.11+ and uv installed, extract it and run:
uv run --locked python scripts/run_demo.py
Open http://127.0.0.1:8000. Node.js is unnecessary because the frontend is prebuilt. Without a configured inference provider, the assistant shows a labelled local summary of computed results.
Code, data, and demo
- ChargeWise AI source repository. Project by Julius Störk, Muhammad Talha Toqeer, and Umar Khan for the Nebius × NVIDIA hackathon; MIT licence.
- Validated synthetic comparison results and fixture manifest and assumptions, from the 25 October portable build. The four-van example is a partial-period scenario.
- Pretrained models: measured forecasting and decision results, 26 October 2026. Models, 37-day protocol, costs, and pretraining-overlap limitations.
show all 4 referencesshow fewer references
- Hosted interactive demo and portable editable application. Includes its licence, locked dependencies, example inputs, and local run instructions.
Use your identity on another device
Save an encrypted identity file and restore it in another browser. Keep the file and its passphrase private.