Skip to content

Commit

Permalink
Merge pull request #90 from ZhengLiu1119/fix_storage
Browse files Browse the repository at this point in the history
- added coefficient factors for multi-objective
- added try gurobi
- improved per-unit
  • Loading branch information
ZhengLiu1119 committed Sep 20, 2022
2 parents 4025567 + a0901d5 commit 95881f4
Show file tree
Hide file tree
Showing 10 changed files with 78 additions and 2,659 deletions.
3 changes: 2 additions & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "PandaModels"
uuid = "2dbab86a-7cbf-476f-9afe-75ffd3079e7c"
authors = ["e2nIEE"]
version = "0.6.0"
version = "0.7.0"

[deps]
Cbc = "9961bab8-2fa3-5c5a-9d89-47fab24efd76"
Expand All @@ -12,6 +12,7 @@ JuMP = "4076af6c-e467-56ae-b986-b466b2749572"
Juniper = "2ddba703-00a4-53a7-87a5-e8b9971dde84"
Memento = "f28f55f0-a522-5efc-85c2-fe41dfb9b2d9"
PowerModels = "c36e90e8-916a-50a6-bd94-075b64ef4655"
#Gurobi = "2e9cd046-0924-5485-92f1-d5272153d98b"

[compat]
Cbc = "0.8, 0.9"
Expand Down
2 changes: 1 addition & 1 deletion docs/src/develop.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ Pkg.add([
Pkg.PackageSpec(;name="JSON"),
Pkg.PackageSpec(;name="Ipopt"),
Pkg.PackageSpec(;name="Juniper"),
Pkg.PackageSpec(;name="Cbc"),
Pkg.PackageSpec(;name="Cbc")
])
Pkg.build()
Pkg.resolve()
Expand Down
7 changes: 7 additions & 0 deletions src/PandaModels.jl
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@ import JSON
import Cbc
import Ipopt
import Juniper
try
import Gurobi
catch e
if isa(e, LoadError)
println("Cannot import Gurobi. That's fine if you do not plan to use it")
end
end
const _IM = InfrastructureModels
const _PM = PowerModels
const _PdM = PandaModels
Expand Down
15 changes: 7 additions & 8 deletions src/input/tools.jl
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ function set_pq_values_from_timeseries(pm)
# This function iterates over multinetwork entries and sets p, q values
# of loads and "sgens" (which are loads with negative P and Q values)
steps = pm["time_series"]["to_time_step"]-pm["time_series"]["from_time_step"]
baseMVA = pm["baseMVA"]
mn = _PM.replicate(pm, steps)

for (step, network) in mn["nw"]
Expand All @@ -63,26 +62,26 @@ function set_pq_values_from_timeseries(pm)
network = delete!(network, "user_defined_params")
for (idx, load) in network["load"]
if haskey(load_ts, idx)
load["pd"] = load_ts[idx]["p_mw"][step_1] / baseMVA
load["pd"] = load_ts[idx]["p_mw"][step_1]
if haskey(load_ts[idx], "q_mvar")
load["qd"] = load_ts[idx]["q_mvar"][step_1] / baseMVA
load["qd"] = load_ts[idx]["q_mvar"][step_1]
end
end
end

gen_ts = pm["time_series"]["gen"]
for (idx, gen) in network["gen"]
if haskey(gen_ts, idx)
gen["pg"] = gen_ts[idx]["p_mw"][step_1] / baseMVA
gen["pg"] = gen_ts[idx]["p_mw"][step_1]
if haskey(gen_ts[idx], "max_p_mw")
gen["pmax"] = gen_ts[idx]["max_p_mw"][step_1] / baseMVA
gen["pmax"] = gen_ts[idx]["max_p_mw"][step_1]
else
gen["pmax"] = gen_ts[idx]["p_mw"][step_1] / baseMVA
gen["pmax"] = gen_ts[idx]["p_mw"][step_1]
end
if haskey(gen_ts[idx], "min_p_mw")
gen["pmin"] = gen_ts[idx]["min_p_mw"][step_1] / baseMVA
gen["pmin"] = gen_ts[idx]["min_p_mw"][step_1]
else
gen["pmin"] = gen_ts[idx]["p_mw"][step_1] / baseMVA
gen["pmin"] = gen_ts[idx]["p_mw"][step_1]
end

if haskey(gen_ts[idx], "max_q_mvar")
Expand Down
16 changes: 14 additions & 2 deletions src/models/qflex.jl
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,21 @@ end

function objective_qflex(pm::_PM.AbstractPowerModel)

if haskey(pm.ext, :obj_factors)
if length(pm.ext[:obj_factors]) == 2
fac1 = pm.ext[:obj_factors]["fac_1"]
fac2 = pm.ext[:obj_factors]["fac_2"]
end
else
fac1 = 1.0
fac2 = 0
end

return JuMP.@objective(pm.model, Min,
sum((var(pm, :q, (content["element_index"], content["f_bus"], content["t_bus"])) - content["value"])^2
for (i, content) in pm.ext[:setpoint_q]))
fac1 * sum((var(pm, :q, (content["element_index"], content["f_bus"], content["t_bus"])) - content["value"])^2
for (i, content) in pm.ext[:setpoint_q])
+
fac2 * sum((var(pm, :qg, content)-0)^2 for (i, content) in pm.ext[:gen_and_controllable_sgen]))
end


Expand Down
15 changes: 14 additions & 1 deletion src/models/vstab.jl
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,21 @@ function _build_vstab(pm::_PM.AbstractPowerModel)
end

function objective_vstab(pm::_PM.AbstractPowerModel)

if haskey(pm.ext, :obj_factors)
if length(pm.ext[:obj_factors]) == 2
fac1 = pm.ext[:obj_factors]["fac_1"]
fac2 = pm.ext[:obj_factors]["fac_2"]
end
else
fac1 = 1.0
fac2 = 1-fac1
end

return JuMP.@objective(pm.model, Min,
sum((var(pm, :vm, content["element_index"]) - content["value"])^2 for (i, content) in pm.ext[:setpoint_v]))
fac1 * sum((var(pm, :vm, content["element_index"]) - content["value"])^2 for (i, content) in pm.ext[:setpoint_v])
+
fac2 * sum((var(pm, :qg, content)-0)^2 for (i, content) in pm.ext[:gen_and_controllable_sgen]))
end


Expand Down
Loading

0 comments on commit 95881f4

Please sign in to comment.