Updated randomize, validate and initial conditions

This commit is contained in:
Jun He
2023-04-07 16:42:03 -04:00
parent bea42d174c
commit b71a1c3d5f
4 changed files with 76 additions and 6 deletions

View File

@@ -17,24 +17,29 @@ function generate_initial_conditions!(
)::Nothing
G = sc.thermal_units
B = sc.buses
PU = sc.profiled_units
t = 1
mip = JuMP.Model(optimizer)
# Decision variables
@variable(mip, x[G], Bin)
@variable(mip, p[G] >= 0)
@variable(mip, pu[PU])
# Constraint: Minimum power
@constraint(mip, min_power[g in G], p[g] >= g.min_power[t] * x[g])
@constraint(mip, pu_min_power[k in PU], pu[k] >= k.min_power[t])
# Constraint: Maximum power
@constraint(mip, max_power[g in G], p[g] <= g.max_power[t] * x[g])
@constraint(mip, pu_max_power[k in PU], pu[k] <= k.capacity[t])
# Constraint: Production equals demand
@constraint(
mip,
power_balance,
sum(b.load[t] for b in B) == sum(p[g] for g in G)
sum(b.load[t] for b in B) ==
sum(p[g] for g in G) + sum(pu[k] for k in PU)
)
# Constraint: Must run
@@ -58,7 +63,12 @@ function generate_initial_conditions!(
return c / mw
end
end
@objective(mip, Min, sum(p[g] * cost_slope(g) for g in G))
@objective(
mip,
Min,
sum(p[g] * cost_slope(g) for g in G) +
sum(pu[k] * k.cost[t] for k in PU)
)
JuMP.optimize!(mip)

View File

@@ -133,6 +133,10 @@ function _randomize_costs(
s.cost *= α
end
end
for pu in sc.profiled_units
α = rand(rng, distribution)
pu.cost *= α
end
return
end