Divisible: we model total installed capacity, not number of individual generator units
Certainty: no uncertainty about renewables.
Real problems can get much more complex, particularly if we try to model making decisions under renewable or load uncertainty.
Implementation in JUMP.jl
# define setsG =1:nrow(gens[1:end-2, :])T =1:nrow(demand)NSECost =9000gencap =Model(HiGHS.Optimizer)# define variables@variables(gencap, begin x[g in G] >=0 y[g in G, t in T] >=0 NSE[t in T] >=0end)@objective(gencap, Min, sum(gens[G, :FixedCost] .* x) +sum(gens[G, :VarCost] .*sum(y[:, t] for t in T)) + NSECost *sum(NSE))@constraint(gencap, load[t in T], sum(y[:, t]) + NSE[t] >= demand.Demand[t])@constraint(gencap, availability[g in G, t in T], y[g, t] <= x[g])optimize!(gencap)
Key Takeaways
Key Takeaways
Shadow prices (dual variables) of the constraints are the rate by which the solution would improve if the constraints were relaxed.
Capacity Expansion is a foundational power systems decision problem.
We looked at a “greenfield” example: no existing plants.
Decision problem becomes more complex with renewables (HW4) or “brownfield” (expanding existing fleet, possibly with retirements).