Capacity Expansion and Time-Sequential Dispatch Learning Model v1.59.6

Public browser-only learning model for capacity expansion and hourly dispatch. Full-year 8,760-hour framing. No local Python required. Open-source under GPL-3.0-or-later, with embedded PLEXOS-World demand-shape attribution.

Ready
Save, restore and share setup

Save the complete working setup as a portable JSON file. This includes system settings, candidate assets, loaded demand and renewable profiles, load-builder components, map/resource assumptions and optional solved results. Another user can open the same HTML file, load this JSON, and rerun or inspect the case.

No saved setup loaded in this session.
Ready. Embedded Mini-grid two-node case is framed. Review demand, network and candidate assumptions, then run optimisation.
Dashboard abstraction: node-link diagramConfigured system

Conceptual nodal view. In one-node mode the existing hub-and-spoke view is retained. In multi-node mode the diagram uses node cards and directed or bidirectional link arrows, with technology candidates and storage grouped inside their assigned node. Drag node cards to arrange the diagram for readability. This is still a linear transport abstraction, not an alternating-current power-flow model.

Hover or click a hub-and-spoke box to view configured limits, optimised installed capacity and fixed system comparator framing.
This is a screening and teaching model. It excludes unit commitment, alternating-current power flow, security constraints and integer build blocks.
Publication, data provenance and license

Software license: GNU General Public License v3.0 or later (GPL-3.0-or-later). Users may use, share and modify the tool. If they distribute modified versions, the modified source should remain available under the same license.

PLEXOS-World demand data attribution: the embedded demand library is a compressed reconstruction derived from PLEXOS-World 2015, Harvard Dataverse, DOI 10.7910/DVN/CBYXBY. The specific demand-file reference used during development was doi:10.7910/DVN/CBYXBY/JCQPTE.

Recommended citation: Brinkerink, M., and Deane, P. (2020). PLEXOS-World 2015. Harvard Dataverse. Also cite the related article, Building and Calibrating a Country-Level Detailed Global Electricity Model Based on Public Data, when using the embedded demand profiles in published or shared analysis.

Netlify note: publish the generic app only. Do not publish saved setup JSON files containing confidential locations, demand traces, costs, capacities or commercial assumptions.

Status
Not run
Annual cost
-
Conditional LCOE
-
Emissions
-
Unserved energy
-
Dumped energy
-

Decision Summary

Decision framing converts the solved optimisation into plain-language conditions for success. It is generated from the current solved case and should be read before the detailed metrics.

Status
Not run
Run optimisation to generate the decision summary.

Binding and near-binding constraints

This panel explains why the solution looks the way it does using simple constraint diagnostics, not dual values.

Constraint areaIndicatorExtentInterpretation
Not run--Run optimisation to populate this panel.

Commercial reality

Reliability and firming are economic choices. This panel translates the solved technical system into board-level commercial signals.

Not run
-
Run optimisation to populate this panel.

Scenario comparison and decision dashboard

Compares solved snapshots for the optimised base, fixed system comparator, stress cases and flat-world sensitivity. The first snapshot remains the base case for deltas. Snapshots store summary metrics only, not full dispatch arrays.

Status
Not run
Run optimisation and add solved results to compare cases.
No scenario snapshots saved yet.
ScenarioTypeAnnual costLCOEUnservedDecision signal
No scenario snapshots saved yet. Run a case, then add the plotted or base result.

Stress test layer

Stress tests apply selected shocks to the current setup and report deltas versus the solved base case. They do not overwrite the base solution.

Stress tests run full-year reruns one at a time. If a stress does not return within the wall-clock timeout, that row is marked as timed out and the next selected stress continues. Default and maximum wall-clock runtime is 20 minutes per rerun. Reduce candidate count or horizon if a case still times out.

Run the base optimisation first. Stress results do not overwrite the base solution.
StressStatusPlotCost deltaConditional LCOE deltaUnserved deltaEmissions deltaInterpretation
Model boundary and limitations

This visible boundary is intentional. It reduces misuse risk and keeps the tool honest.

  • Transport bottlenecks, link losses and link build costs are represented. Voltage limits, inertia, frequency security and alternating-current power flow are not.
  • No unit commitment, minimum stable generation, starts, ramping limits, binary build decisions or complementarity constraints.
  • No market price formation, contract revenue, merchant risk, revenue sufficiency or nodal pricing.
  • No probabilistic outage modelling, extreme-weather tail risk or security-constrained dispatch.
  • Storage polish and non-commercial guide scores are diagnostics. They do not turn the model into a physical dispatch engine.
  • Outputs are screening-grade evidence, not a bankable system design or investment approval.

Installed capacity by technology

Annual energy by function

System cost bridge

This is a cost bridge, not a tariff, market price or investment answer. The conditional LCOE is annual all-in system cost divided by annual served demand for this feasible modelled system. It excludes risk, optionality, network security and revenue sufficiency.

Run the optimiser to populate the cost bridge. Denominator is served demand in MWh per year, not gross generation or Energy Storage System discharge. Treat conditional LCOE as one diagnostic, not the decision.

Cost by system function

Detailed cost components

Node operating audit linked to supply-demand stack

This audit uses the selected plotted result and the same time slicer as the hourly dispatch explorer. The Supply-demand stack remains the primary node chart; this panel quantifies net imports, gross exports, storage charge/discharge, dumping, unserved energy and balance residual for the selected node. It is an operational diagnostic over the solved transport model, not a power-flow study.

Use the main supply-demand stack for visual shape. Use this audit view for imports, exports, storage sinks, dumping, unserved energy and node balance residual.

Run or plot a solved result to populate node-level operating charts.

Selected node operating audit

MetricSelected rangeUnitInterpretation

Hourly dispatch explorer

Use the day-time slicer, or the persistent bottom slicer, to inspect full-day or custom hourly slices of the selected solved result. Demand-framing traces can show the full selected period, while dense operational charts are capped to a 30-day rendered window for browser performance. Chart X axes use timestamps from the model start date. Energy Storage System charging is shown below zero. Dumping means renewable energy available in that hour that is neither served nor stored.

Hourly balance: demand equals dispatched supply plus Energy Storage System discharge plus External Grid Interface plus unserved energy minus Energy Storage System charging. Renewable availability is also balanced: available solar equals dispatched solar plus dumped solar, and available wind equals dispatched wind plus dumped wind.

Demand being framed before optimisation

This chart is available before optimisation. It shows demand from load objects, reference CSV and PLEXOS-World sources against active model demand. Node demand is summarised below.

No demand profile has been framed yet.

This changes only the operational charts below. Stress-test rows become available here after successful stress solves. Selecting Fixed system comparator will solve fixed system comparator dispatch first if needed, then plot it. KPI tiles and the main capacity and energy tables continue to show the optimised base system.

Day-time slicerSelected period: full year
Day 1Day 183Day 365
Use full selected days for normal review. Switch to custom hourly window to start within a day and inspect a precise number of hours, for example 6:00 for 18 hours. All charts, legends, tooltips and the persistent bottom slicer follow the selected result and window.

Allowed keys: solar, wind, dis, firm, grid, unserved. In node-filtered charts, delivered imports follow the grid position. This changes only the visual stacking order, not the optimisation result.

Supply-demand stack chart

Stacked supply shows how solar, wind, firm generation, Energy Storage System discharge, External Grid Interface imports and any unserved energy meet node demand over the selected period. Energy Storage System charging is shown below zero because it is load on the system.

The chart legend is generated from active candidate-level series in the selected time window. In multi-node cases, the node filter can show the system total or a selected node. Drag the legend box to reposition it.

Dumped power and Energy Storage System charging

Positive values show dumped renewable power. Negative values show Energy Storage System charging, which absorbs surplus before dumping if it is economic and capacity is available.

Energy Storage System state of charge

Hourly marginal and average cash cost

Shows the selected plotted result: optimised system, fixed system comparator, plotted stress case or flat-world sensitivity. Marginal cost is a short-run cash-cost proxy from the highest-cost dispatched block in each hour, with unserved energy setting the Value of Lost Load when present. Average cash cost is hourly variable, import, carbon, unserved and dumping cash cost divided by served node demand. It is not a market price and it excludes capacity recovery. Summary figures below show full-year and selected-range averages. Click or tap a point on this chart to set the selected hour used by the merit-order curve and SRMC demand-crossing stack.

The merit order is a cash-cost stack for the selected hour. It uses available candidate capacity in that hour, not a network dispatch curve. Storage is shown at its direct variable cost only; its opportunity value is not calculated without solver dual prices.

Merit order cost curve for selected hour

Run or plot a solved result to populate the merit-order chart.
Export checks

Checks the Dispatch CSV header for the currently plotted solved result. It confirms that demand, node, link-flow, storage, load-object, balance-residual and finance-export columns are available where expected, then builds a column dictionary from the observed export header.

Status
Not run
Run optimisation and plot a result, then review the export schema.
Run optimisation and plot a result, then review the dispatch export columns.
AreaCheckStatusDetailAction
Export checksNot runWatchUse the review button after a solved result is plotted.Then export Dispatch CSV and Finance CSV.
Dispatch column dictionary preview

Preview shows the first dictionary rows. The download includes observed columns from the current plotted result where available, plus expected schema patterns.

Column or patternAreaRequirementDefinitionInterpretation
Not run-WatchRun the column review.The full dictionary is produced by the download button.

Detailed tables, audit and exports

Capacity table

Energy table

Energy balance audit

Optimal versus user system comparison

Finance detail: discounted cash flow and system-wide P&L

Post-processing finance view for the currently plotted result. The finance LCOE is solved so constant annual revenue from served energy produces a project IRR equal to the Cost of Capital / Target IRR, after fixed costs, variable costs, tax cash expense and straight-line depreciation over the Economic Investment Horizon. It does not change the optimisation.

System-wide P&L

Line itemValueUnitInterpretation

Annual discounted cash flow

YearRevenueFixed costVariable costDepreciationTaxNet cash flowDiscounted cash flowCumulative discounted
Persistent day-time slicerSelected period: full year
Dynamic time slicerSelected period: full yearDrag the band or handles, like a pivot-chart timeline.
JanMarMayJulSepNovDec