A 50 MW / 200 MWh BESS running economic dispatch generates 22% more arbitrage revenue than the same battery on rule-based dispatch in a typical CAISO price environment — but with 1.4x the cycle degradation. That trade-off defines the central decision in EMS dispatch strategy selection: how much short-term revenue are you willing to sacrifice for asset longevity, and at what point does the optimization complexity stop paying for itself?
Energy developers and operators have three dispatch strategies to choose from in Energy Optima: RULE_BASED, ECONOMIC_DISPATCH, and MILP_HYBRID. Each makes different assumptions about price certainty, computational budget, and the relative importance of energy arbitrage, ancillary services, and battery preservation. Choosing the wrong strategy can cost millions over a 15-year project life — but the best strategy depends on project-specific factors including market, duration, co-location, and offtake structure.
This guide provides a first-principles comparison of all three strategies using a single worked example — a 100 MW solar farm co-located with a 50 MW / 200 MWh BESS — run through the same CAISO historical price year under each dispatch approach. We examine the revenue, degradation, NPV, and IRR outcomes so you can map the results to your own project context.
What You'll Learn
- The Three Dispatch Strategies in Energy Optima
- Worked Example: 100 MW Solar + 50 MW / 200 MWh BESS
- Rule-Based Dispatch: Simple, Predictable, Leaving Money on the Table
- Economic Dispatch with MPC: 24-Hour Lookahead Optimization
- MILP for Complex Systems: Discrete Decisions and Multiple Markets
- When Each Strategy Wins
- Practical Workflow: From Simulation to Deployment
The Three Dispatch Strategies in Energy Optima
Energy Optima's EMS simulation module implements three dispatch strategies, each corresponding to a different optimization paradigm. The strategy is selected in the EMS Configurator within the platform, alongside SOC threshold settings (default min 10%, max 90%), dispatch priority order, and optimization parameters.
RULE_BASED — The simplest strategy. The operator defines a set of if-then rules: charge during specified low-price hours, discharge during specified high-price hours, with optional SOC-dependent override conditions. The rules execute deterministically at each timestep with no forward-looking optimization. Computational cost is negligible — milliseconds per year of simulation. Best suited for early-stage screening, fixed-tariff projects, and educational scenarios.
ECONOMIC_DISPATCH — At each timestep, the EMS solves a linear programming (LP) optimization over a 24-hour lookahead horizon to determine the optimal charge/discharge schedule, using forecasted day-ahead prices and real-time market signals. The objective maximizes gross arbitrage revenue minus a configurable degradation penalty. Model predictive control (MPC) re-optimizes on a rolling basis — typically every hour for day-ahead planning and every 5-15 minutes for real-time adjustments. Computational cost is moderate: roughly 5-30 seconds per day of simulation depending on lookahead granularity and solver settings.
MILP_HYBRID — Mixed-integer linear programming extends the LP formulation with binary and integer variables, enabling discrete decisions such as minimum charge/discharge blocks, commitment decisions (online/offline), state-dependent degradation modeling, and multi-market participation with independent product constraints. Computational cost is 5-50x higher than economic dispatch, typically 1-10 minutes per day of simulation. Provides the most accurate representation of real-world BESS operations but requires careful solver configuration.
Key insight: The choice between these strategies is not just about sophistication — it is about matching dispatch resolution to the decision frequency of your revenue stream. If your project participates only in day-ahead energy markets, economic dispatch captures the full opportunity. If you also bid into regulation markets, spin reserves, and RA capacity, the MILP formulation becomes essential to model the capacity allocation constraints.
Worked Example: 100 MW Solar + 50 MW / 200 MWh BESS
To make the comparison concrete, we simulate the same hybrid project under all three dispatch strategies using Energy Optima. The system: a 100 MW AC solar farm co-located on the same interconnection point as a 50 MW / 200 MWh lithium-ion BESS (4-hour duration, 90% round-trip efficiency, LFP chemistry).
Simulation parameters:
- Market: CAISO SP15, 2025 historical prices (day-ahead hourly + real-time 5-minute)
- Solar profile: SAM-generated hourly AC generation for a 100 MW single-axis tracking system in Riverside County
- Battery degradation: LFP calendar + cycle aging model from manufacturer warranty curve, calibrated to 6,000 cycles to 80% SOH
- Project horizon: 10-year operational life, 15-year financial model
- CAPEX: Solar $1.10/W, BESS $350/kWh installed, BOS $50/kW shared
- Revenue: Day-ahead energy arbitrage only (single-market, no regulation stacking)
- SOC limits: 10% min, 90% max across all strategies
Results summary — same system, one year of operation:
| Metric | Rule-Based | Economic Dispatch | MILP Hybrid |
|---|---|---|---|
| Annual energy throughput | 52 GWh | 73 GWh | 78 GWh |
| Avg cycles per day | 0.71 | 1.00 | 1.07 |
| Annual arbitrage revenue | $2.1M | $2.56M | $2.48M |
| Revenue vs rule-based baseline | — | +22% | +18% |
| Cycle degradation per year | 2.1% SOH | 3.0% SOH | 2.8% SOH |
| Final SOH at year 10 | 79% | 70% | 72% |
| Project NPV (15-year, 8% WACC) | $4.8M | $6.1M | $5.7M |
| Project IRR | 11.2% | 13.8% | 12.9% |
| Computational cost (1-year sim) | <1 second | 14 minutes | ~4 hours |
Economic dispatch delivers the highest NPV of the three strategies for this single-market project. The 22% revenue uplift outweighs the accelerated degradation — the battery reaches end-of-life (80% SOH threshold for warranty replacement) just before year 10 under economic dispatch, compared to approximately year 11 under rule-based dispatch. The MILP formulation underperforms economic dispatch in this single-market scenario because the MILP's additional complexity (minimum charge blocks, startup costs) restricts operational flexibility without generating offsetting revenue.
The picture changes when the project participates in multiple markets — we return to this in the MILP section below.
Rule-Based Dispatch: Simple, Predictable, Leaving Money on the Table
Rule-based dispatch defines a fixed schedule: charge during hours 10:00-14:00 (solar midday oversupply), discharge during hours 17:00-21:00 (evening peak), idle overnight. The rules can be enriched with SOC-dependent overrides — for example, "if SOC exceeds 85% during charge hours, reduce charging power to 50%" or "if SOC drops below 30% during discharge, stop discharging until the next scheduled block."
When to use it:
- Early-stage screening — When comparing dozens of project configurations across multiple markets, rule-based dispatch provides first-pass revenue estimates in seconds rather than hours. The ranking of configurations is often preserved even with simple dispatch assumptions.
- Fixed-tariff or PPA structures — If the battery operates against a fixed time-of-use tariff rather than wholesale market prices, rule-based dispatch captures the full opportunity because the price signal is known and static.
- Educational or baseline benchmarking — Rule-based dispatch establishes a clear floor against which more sophisticated strategies can be compared. Every developer should know the rule-based baseline for their project.
What it optimizes: Nothing. Rules are pre-defined, not optimized. The operator must manually tune the charge/discharge windows based on market analysis or historical price patterns.
The gap it leaves: In the worked example, rule-based dispatch captures only 68% of the theoretical maximum arbitrage revenue that a perfect foresight optimizer would achieve. The gap comes from three sources:
- Timing mismatch — The optimal charge/discharge windows shift day to day with solar generation, load, and grid conditions. A fixed schedule cannot track these shifts.
- Partial cycles missed — Rule-based dispatch typically only captures one full cycle per day. During spring months with strong solar midday dips, the market supports 1.5-2 cycles per day, and rule-based dispatch misses the second cycle entirely.
- Price-responsive curtailment — The EMS cannot decide to idle on low-spread days (when the peak price minus valley price is less than the round-trip efficiency loss). A fixed schedule cycles regardless of whether the margin is positive.
Key insight: In Energy Optima, the rule-based strategy is available in the EMS Configurator under the "Simple Schedule" tab. You define the daily charge/discharge windows, SOC thresholds (minimum and maximum), and any conditional overrides. The configurator also accepts seasonal rule sets (summer vs winter schedules) to capture basic time-of-year effects. For projects that graduate beyond rules, the configurator provides a one-click upgrade path to economic dispatch.
Economic Dispatch with MPC: 24-Hour Lookahead Optimization
Economic dispatch replaces fixed rules with a rolling optimization over a 24-hour lookahead horizon. At each decision interval (typically 1 hour for day-ahead planning, 5-15 minutes for real-time adjustments), the EMS solves a linear program that maximizes expected arbitrage revenue over the remaining horizon, subject to SOC dynamics, power limits, and degradation costs.
How the 24-hour lookahead works:
The MPC formulation operates on a receding horizon. At time t (say 08:00 on Tuesday), the EMS receives the latest day-ahead price forecast for hours t through t+23 (08:00 Tuesday through 07:00 Wednesday). It solves the full 24-hour LP to produce an optimal schedule. It executes only the first timestep's setpoint. At the next hour (t+1), the EMS receives updated prices for hours t+1 through t+24 (the lookahead window slides forward by one hour) and re-optimizes.
The 24-hour horizon is a deliberate design choice — it matches the CAISO day-ahead market settlement cycle, ensures the EMS can plan a full charge-discharge cycle, and keeps computational cost manageable. A shorter horizon (e.g., 4 hours) would degrade arbitrage performance because the optimizer would not see the full daily valley-to-peak spread.
The objective function in the LP:
- Maximize Σ (Priceₜ × Dischargeₜ × RTE − Priceₜ × Chargeₜ) − λ × CyclesDegradationCost
- Subject to: SOCₜ₊₁ = SOCₜ + η_c × Chargeₜ − Dischargeₜ / η_d
- SOC_min ≤ SOCₜ ≤ SOC_max (default 10% to 90%)
- 0 ≤ Chargeₜ ≤ P_max, 0 ≤ Dischargeₜ ≤ P_max
- End-of-horizon SOC = 50% (target, soft constraint with penalty for deviation)
The degradation penalty term λ is configurable in Energy Optima's optimization settings panel. A λ of 0 maximizes short-term revenue with no degradation consideration. At the default setting (λ calibrated to the battery's marginal degradation cost curve), the optimizer voluntarily reduces cycling on low-spread days to preserve battery life. Operators can override λ per season or per market condition.
When it wins: Economic dispatch is the optimal strategy for projects whose primary revenue source is day-ahead wholesale energy arbitrage. It captures the timing flexibility that rule-based dispatch misses — switching charge/discharge windows daily to track the optimal spread, idleing on low-margin days, and capturing partial second cycles when spring solar oversupply creates a deep midday price valley.
When it falls short: Economic dispatch assumes continuous, divisible power output. It cannot represent binary decisions like "commit 20 MW to regulation for the full hour" or "the inverter must stay at least 5 MW if turned on." For projects participating in ancillary service markets alongside arbitrage, the linear formulation cannot model the indivisible capacity allocation decisions, which require integer variables — this is where MILP enters.
MILP for Complex Systems: Discrete Decisions and Multiple Markets
Mixed-integer linear programming extends the economic dispatch LP by adding binary and integer variables. For a BESS EMS, the integer variables typically represent:
- Commitment status — Is the battery in an arbitrage mode, regulation mode, or idle? Each mode has a different operational profile and minimum duration constraint.
- Minimum power blocks — Some inverters require a minimum operating level (e.g., 5 MW) when in use. The MILP enforces that if X is active, X ≥ 5 MW.
- Market bid decisions — Bidding into the regulation market requires offering a discrete capacity block (e.g., 10 MW increments) for a full hour. The MILP selects which blocks to offer and how to split remaining capacity.
- State-dependent degradation — Degradation cost can depend on whether the cycle started from a high-SOC state vs a mid-SOC state, a non-linear relationship that integer variables can approximate through piecewise-linear segments.
Computational cost: The MILP solves a branch-and-bound tree rather than a simplex algorithm. For a 24-hour horizon with 1-hour granularity, the economic dispatch LP has roughly 150 continuous variables and 75 constraints. The equivalent MILP, with binary commitment and minimum-block variables, adds approximately 100 binary variables, creating a solution space of 2^100 — the solver prunes this with cuts and heuristics, but typical solve times for real-world EMS problems range from 30 seconds to 10 minutes per day.
Energy Optima's MILP solver uses a warm-start strategy: the LP relaxation is solved first to provide a feasible starting point, then the integer constraints are introduced. For projects modeled in the EMS Configurator, this reduces iteration time by approximately 60% compared to a cold-start MILP.
When MILP justifies its cost:
For single-market arbitrage projects (like the worked example above), economic dispatch outperforms MILP because the additional constraints are not binding. The MILP's minimum-block constraints actually reduce operational flexibility, leading to 2-3% lower revenue and slightly less efficient SOC management.
For multi-market projects — and this is where MILP becomes essential — the picture reverses. Consider a project that bids into both the CAISO day-ahead market (energy arbitrage) and the regulation market (Reg-Up/Reg-Down). The EMS must decide each hour how to split capacity:
- If it reserves 20 MW for regulation, it can offer at most 30 MW for arbitrage
- Regulation requires maintaining a SOC buffer (the battery must be able to respond to regulation signals in both directions)
- The regulation market pays for capacity availability, not energy throughput — the EMS must reserve capacity even if regulation signals never materialize
- Switching between arbitrage and regulation mode has a cost (inverter settling time, SOC overhead)
The LP formulation cannot model the discrete capacity allocation decision. A MILP formulation with binary commitment variables captures this naturally. In Energy Optima simulation benchmarks, a multi-market project (arbitrage + regulation + spin reserve) achieves 12-18% higher total revenue with MILP compared to economic dispatch, because the MILP correctly allocates capacity to the highest-value combination of products hour by hour.
When Each Strategy Wins
The decision framework reduces to three questions about the project:
Question 1: How many revenue streams are being stacked?
- 1 stream (arbitrage only): Economic dispatch is optimal. MILP adds complexity without benefit. Rule-based is acceptable for screening but leaves 20-30% of revenue unrealized.
- 2-3 streams (arbitrage + regulation, or arbitrage + regulation + spin): MILP becomes the preferred choice. The capacity allocation problem is inherently discrete.
- 4+ streams (arbitrage + regulation + spin + RA + DR): MILP is essential. Rule-based cannot handle the combinatorial allocation problem at all; economic dispatch produces a systematically suboptimal split because it treats capacity as continuously divisible.
Question 2: What stage of the project lifecycle?
- Feasibility / site screening: Rule-based dispatch. Run 100+ configurations in minutes, rank by IRR, shortlist the top quartile for detailed analysis.
- Development / investment case: Economic dispatch. Produces bankable revenue projections with defensible assumptions about price responsiveness.
- Financing / offtake negotiation: All three. Present the rule-based floor, the economic dispatch base case, and the MILP upside case. Lenders want to see the sensitivity range.
- Operations / real EMS deployment: Economic dispatch or MILP, depending on market participation. Rule-based dispatch in operations is a red flag for investors.
Question 3: How sensitive is the economics to cycle degradation?
- Low degradation sensitivity (LFP with long warranty, or low cycle cost): Economic dispatch or MILP with low lambda. Maximize throughput.
- High degradation sensitivity (NMC, short warranty, or high C-rate applications): Rule-based dispatch with conservative cycles may be preferred, or economic dispatch with a high lambda to heavily penalize cycling.
Key insight: Energy Optima lets you run all three strategies on the same project simultaneously. The dispatch comparison report overlays revenue, SOC, and degradation profiles for each strategy, highlighting the hours where more sophisticated dispatch makes the largest difference. For the worked example above, economic dispatch makes 74% of its revenue uplift during just 8% of operating hours — the spring and fall months with deep midday solar valleys and steep evening ramps. For a project in a different market, the "decision-critical hours" may be entirely different.
Practical Workflow: From Simulation to Deployment
Energy Optima supports a structured workflow for selecting and validating a dispatch strategy for any hybrid project:
- Baseline with rule-based. Configure the system in the EMS Configurator with simple charge/discharge windows. Disable integer constraints. Set SOC thresholds to 10-90%. Run the simulation. Record the baseline revenue, throughput, and cycles.
- Upgrade to economic dispatch. Enable the 24-hour MPC lookahead. Calibrate the degradation penalty λ using the battery manufacturer's cycle life curve. Compare the economic dispatch results to the rule-based baseline — the gap is the forecast improvement from price-responsive dispatch.
- Add integer constraints (optional). Enable minimum block sizes, commitment status variables, and market capacity allocation. If the project participates in multiple markets, this step is mandatory. Compare MILP results to economic dispatch — if the gap is less than 3%, the MILP complexity may not be worthwhile for that specific project.
- Validate across price years. Run the selected strategy against 3-5 historical price years to verify that the results are not artifacts of a single year's price pattern. A strategy that works in 2025 may degrade in a different CAISO hydro year.
- Export the dispatch logic to the real EMS. Energy Optima's EMS simulation generates a dispatch policy table (SOC × hour → setpoint) that can be exported as a lookup table or translated into your real-time EMS controller's native format.
For additional context on dispatch strategies and BESS operation, see our companion guides: EMS Dispatch Strategies for BESS: Maximizing Revenue with Economic Optimization and BESS Capacity Sizing Optimization for Hybrid Solar+Storage Systems.
The EMS Configurator in Energy Optima is the control panel for all three dispatch strategies. Key settings include:
- SOC thresholds — Configurable minimum (default 10%) and maximum (default 90%). These define the operational SOC envelope. Tighter thresholds (15-85%) reduce degradation but also reduce the effective energy capacity available for arbitrage.
- Dispatch priority — For co-located solar+BESS, the operator can set whether battery charging has priority over solar export (within the interconnection limit) or vice versa. Priority order changes the effective solar curtailment rate and battery utilization.
- Degradation penalty coefficient λ — Controls the revenue vs longevity trade-off. The default setting is calibrated to the battery's marginal degradation cost curve. Override to 0 for maximum short-term revenue or to 2x default for conservative operation.
- Lookahead horizon — Configurable from 4 to 48 hours. The default 24-hour horizon matches typical day-ahead market settlement cycles. A 48-hour horizon captures weekend price patterns but increases solve time.
- Re-optimization frequency — For real-time economic dispatch, the re-optimization interval is configurable from 5 minutes to 1 hour. A 5-minute interval captures real-time price spikes but increases computational load.
A practical note: for most projects, the recommended workflow is to start with rule-based dispatch for initial screening, move to economic dispatch for the base case financial model, and upgrade to MILP only if the project participates in multiple markets. The 22% revenue uplift from economic dispatch over rule-based in our worked example is representative for most CAISO solar+BESS projects. The additional 10-15% uplift from MILP over economic dispatch applies only when ancillary service markets are in the revenue stack.