Skip to content

Commit

Permalink
general fixes and make power grid examples run
Browse files Browse the repository at this point in the history
  • Loading branch information
michel2323 committed Mar 23, 2019
1 parent 705c021 commit d140648
Show file tree
Hide file tree
Showing 9 changed files with 99 additions and 91 deletions.
6 changes: 3 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

language: julia
julia:
- 0.6.4
- 1.0.0
sudo: required
dist: trusty

Expand Down Expand Up @@ -34,9 +34,9 @@ install:
- cd PIPS ; ./build_3rdparty.sh $TEST_WITH_MA27 ; cd ..
- cd PIPS ; ./build_pips.sh ; cd ..
- julia -e 'Pkg.clone("https://github.com/michel2323/StructJuMP.jl")'
- julia -e 'Pkg.checkout("StructJuMP","julia0.6")'
- julia -e 'Pkg.checkout("StructJuMP","julia0.7")'
- julia -e 'Pkg.clone("https://github.com/michel2323/StructJuMPSolverInterface.jl")'
- julia -e 'Pkg.checkout("StructJuMPSolverInterface","julia0.6")'
- julia -e 'Pkg.checkout("StructJuMPSolverInterface","julia0.7")'

script:
- export PIPS_NLP_SHARED_LIB=$PWD/PIPS/build/PIPS-NLP/libpipsnlp.so
Expand Down
9 changes: 6 additions & 3 deletions examples/PowerGrid/acopf.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
include("opfdata.jl")
using JuMP
using Ipopt
using Printf
using DelimitedFiles
using MathProgBase

function acopf_solve(opfmodel, opf_data)

Expand Down Expand Up @@ -165,7 +168,7 @@ function acopf_outputAll(opfmodel, opf_data)
for i in 1:nbus
@printf("%4d | %6.2f %6.2f | %s | \n",
buses[i].bus_i, VM[i], VA[i]*180/pi,
length(BusGeners[i])==0?" -- -- ":@sprintf("%7.2f %7.2f", baseMVA*PG[BusGeners[i][1]], baseMVA*QG[BusGeners[i][1]]))
length(BusGeners[i])==0 ? " -- -- " : @sprintf("%7.2f %7.2f", baseMVA*PG[BusGeners[i][1]], baseMVA*QG[BusGeners[i][1]]))
end
println("\n")

Expand Down Expand Up @@ -197,7 +200,7 @@ function acopf_outputAll(opfmodel, opf_data)

#println(consRhs)

@printf("================ Lines within %d %s of flow capacity ===================\n", within, "\%")
@printf("================ Lines within %d %s of flow capacity ===================\n", within, "%")
println("Line From Bus To Bus At capacity")

nlim=1
Expand All @@ -207,7 +210,7 @@ function acopf_outputAll(opfmodel, opf_data)
idx = 2*nbus+nlim

if( (consRhs[idx]+flowmax) >= (1-within/100)^2*flowmax )
@printf("%3d %3d %3d %5.3f%s\n", l, lines[l].from, lines[l].to, 100*sqrt((consRhs[idx]+flowmax)/flowmax), "\%" )
@printf("%3d %3d %3d %5.3f%s\n", l, lines[l].from, lines[l].to, 100*sqrt((consRhs[idx]+flowmax)/flowmax), "%" )
#@printf("%7.4f %7.4f %7.4f \n", consRhs[idx], consRhs[idx]+flowmax, flowmax)
end
nlim += 1
Expand Down
66 changes: 33 additions & 33 deletions examples/PowerGrid/opfdata.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
type Bus
mutable struct Bus
bus_i::Int
bustype::Int
Pd::Float64
Expand All @@ -14,7 +14,7 @@ type Bus
Vmin::Float64
end

type Line
mutable struct Line
from::Int
to::Int
r::Float64
Expand All @@ -31,7 +31,7 @@ type Line
end
Line() = Line(0,0,0.,0.,0.,0.,0.,0.,0.,0.,0,0.,0.)

type Gener
mutable struct Gener
# .gen fields
bus::Int
Pg::Float64
Expand All @@ -58,7 +58,7 @@ type Gener
coeff::Array
end

type OPFData
mutable struct OPFData
buses::Array{Bus}
lines::Array{Line}
generators::Array{Gener}
Expand All @@ -78,7 +78,7 @@ function opf_loaddata(case_name, lineOff=Line())
# bus_arr = readdlm("data/" * case_name * ".bus")
bus_arr = readdlm(case_name * ".bus")
num_buses = size(bus_arr,1)
buses = Array{Bus}(num_buses)
buses = Array{Bus}(undef, num_buses)
bus_ref=-1
for i in 1:num_buses
@assert bus_arr[i,1]>0 #don't support nonpositive bus ids
Expand All @@ -100,20 +100,20 @@ function opf_loaddata(case_name, lineOff=Line())
# branch_arr = readdlm("data/" * case_name * ".branch")
branch_arr = readdlm(case_name * ".branch")
num_lines = size(branch_arr,1)
lines_on = find((branch_arr[:,11].>0) .& ((branch_arr[:,1].!=lineOff.from) .| (branch_arr[:,2].!=lineOff.to)) )
lines_on = findall((branch_arr[:,11].>0) .& ((branch_arr[:,1].!=lineOff.from) .| (branch_arr[:,2].!=lineOff.to)) )
num_on = length(lines_on)

if lineOff.from>0 && lineOff.to>0
println("opf_loaddata: was asked to remove line from,to=", lineOff.from, ",", lineOff.to)
#println(lines_on, branch_arr[:,1].!=lineOff.from, branch_arr[:,2].!=lineOff.to)
end
if length(find(branch_arr[:,11].==0))>0
println("opf_loaddata: ", num_lines-length(find(branch_arr[:,11].>0)), " lines are off and will be discarded (out of ", num_lines, ")")
if length(findall(branch_arr[:,11].==0))>0
println("opf_loaddata: ", num_lines-length(findall(branch_arr[:,11].>0)), " lines are off and will be discarded (out of ", num_lines, ")")
end



lines = Array{Line}(num_on)
lines = Array{Line}(undef, num_on)

lit=0
for i in lines_on
Expand All @@ -140,16 +140,16 @@ function opf_loaddata(case_name, lineOff=Line())

@assert num_gens == size(costgen_arr,1)

gens_on=find(gen_arr[:,8]); num_on=length(gens_on)
gens_on=findall(x->x!=0, gen_arr[:,8]); num_on=length(gens_on)
if num_gens-num_on>0
println("loaddata: ", num_gens-num_on, " generators are off and will be discarded (out of ", num_gens, ")")
end

generators = Array{Gener}(num_on)
generators = Array{Gener}(undef, num_on)
i=0
for git in gens_on
i += 1
generators[i] = Gener(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, Array{Int}(0)) #gen_arr[i,1:end]...)
generators[i] = Gener(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, Array{Int}(undef, 0)) #gen_arr[i,1:end]...)

generators[i].bus = gen_arr[git,1]
generators[i].Pg = gen_arr[git,2] / baseMVA
Expand Down Expand Up @@ -201,20 +201,20 @@ end

function computeAdmitances(lines, buses, baseMVA)
nlines = length(lines)
YffR=Array{Float64}(nlines)
YffI=Array{Float64}(nlines)
YttR=Array{Float64}(nlines)
YttI=Array{Float64}(nlines)
YftR=Array{Float64}(nlines)
YftI=Array{Float64}(nlines)
YtfR=Array{Float64}(nlines)
YtfI=Array{Float64}(nlines)
YffR=Array{Float64}(undef, nlines)
YffI=Array{Float64}(undef, nlines)
YttR=Array{Float64}(undef, nlines)
YttI=Array{Float64}(undef, nlines)
YftR=Array{Float64}(undef, nlines)
YftI=Array{Float64}(undef, nlines)
YtfR=Array{Float64}(undef, nlines)
YtfI=Array{Float64}(undef, nlines)

for i in 1:nlines
@assert lines[i].status == 1
Ys = 1/(lines[i].r + lines[i].x*im)
#assign nonzero tap ratio
tap = lines[i].ratio==0?1.0:lines[i].ratio
tap = lines[i].ratio==0 ? 1.0 : lines[i].ratio

#add phase shifters
tap *= exp(lines[i].angle * pi/180 * im)
Expand All @@ -233,24 +233,24 @@ function computeAdmitances(lines, buses, baseMVA)
end

nbuses = length(buses)
YshR = Array{Float64}(nbuses)
YshI = Array{Float64}(nbuses)
YshR = Array{Float64}(undef, nbuses)
YshI = Array{Float64}(undef, nbuses)
for i in 1:nbuses
YshR[i] = buses[i].Gs / baseMVA
YshI[i] = buses[i].Bs / baseMVA
#@printf("[%4d] Ysh %15.12f + %15.12f i \n", i, YshR[i], YshI[i])
end

@assert 0==length(find(isnan.(YffR)))+length(find(isinf.(YffR)))
@assert 0==length(find(isnan.(YffI)))+length(find(isinf.(YffI)))
@assert 0==length(find(isnan.(YttR)))+length(find(isinf.(YttR)))
@assert 0==length(find(isnan.(YttI)))+length(find(isinf.(YttI)))
@assert 0==length(find(isnan.(YftR)))+length(find(isinf.(YftR)))
@assert 0==length(find(isnan.(YftI)))+length(find(isinf.(YftI)))
@assert 0==length(find(isnan.(YtfR)))+length(find(isinf.(YtfR)))
@assert 0==length(find(isnan.(YtfI)))+length(find(isinf.(YtfI)))
@assert 0==length(find(isnan.(YshR)))+length(find(isinf.(YshR)))
@assert 0==length(find(isnan.(YshI)))+length(find(isinf.(YshI)))
@assert 0==length(findall(isnan.(YffR)))+length(findall(isinf.(YffR)))
@assert 0==length(findall(isnan.(YffI)))+length(findall(isinf.(YffI)))
@assert 0==length(findall(isnan.(YttR)))+length(findall(isinf.(YttR)))
@assert 0==length(findall(isnan.(YttI)))+length(findall(isinf.(YttI)))
@assert 0==length(findall(isnan.(YftR)))+length(findall(isinf.(YftR)))
@assert 0==length(findall(isnan.(YftI)))+length(findall(isinf.(YftI)))
@assert 0==length(findall(isnan.(YtfR)))+length(findall(isinf.(YtfR)))
@assert 0==length(findall(isnan.(YtfI)))+length(findall(isinf.(YtfI)))
@assert 0==length(findall(isnan.(YshR)))+length(findall(isinf.(YshR)))
@assert 0==length(findall(isnan.(YshI)))+length(findall(isinf.(YshI)))

return YffR, YffI, YttR, YttI, YftR, YftI, YtfR, YtfI, YshR, YshI
end
Expand Down
66 changes: 33 additions & 33 deletions examples/PowerGrid/opfdata_structjump.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
type Bus
mutable struct Bus
bus_i::Int
bustype::Int
Pd::Float64
Expand All @@ -14,7 +14,7 @@ type Bus
Vmin::Float64
end

type Line
mutable struct Line
from::Int
to::Int
r::Float64
Expand All @@ -31,7 +31,7 @@ type Line
end
Line() = Line(0,0,0.,0.,0.,0.,0.,0.,0.,0.,0,0.,0.)

type Gener
mutable struct Gener
# .gen fields
bus::Int
Pg::Float64
Expand All @@ -58,7 +58,7 @@ type Gener
coeff::Array
end

type OPFData
mutable struct OPFData
buses::Array{Bus}
lines::Array{Line}
generators::Array{Gener}
Expand All @@ -70,7 +70,7 @@ type OPFData
BusGenerators::Array #list of generators for each bus (Array of Array)
end

type RawData
mutable struct RawData
bus_arr
branch_arr
gen_arr
Expand All @@ -91,7 +91,7 @@ function opf_loaddata(raw::RawData, lineOff=Line())
#
bus_arr = raw.bus_arr
num_buses = size(bus_arr,1)
buses = Array{Bus}(num_buses)
buses = Array{Bus}(undef, num_buses)
bus_ref=-1
for i in 1:num_buses
@assert bus_arr[i,1]>0 #don't support nonpositive bus ids
Expand All @@ -112,20 +112,20 @@ function opf_loaddata(raw::RawData, lineOff=Line())
#
branch_arr = raw.branch_arr
num_lines = size(branch_arr,1)
lines_on = find((branch_arr[:,11].>0) .& ((branch_arr[:,1].!=lineOff.from) .| (branch_arr[:,2].!=lineOff.to)) )
lines_on = findall((branch_arr[:,11].>0) .& ((branch_arr[:,1].!=lineOff.from) .| (branch_arr[:,2].!=lineOff.to)) )
num_on = length(lines_on)

if lineOff.from>0 && lineOff.to>0
println("opf_loaddata: was asked to remove line from,to=", lineOff.from, ",", lineOff.to)
#println(lines_on, branch_arr[:,1].!=lineOff.from, branch_arr[:,2].!=lineOff.to)
end
if length(find(branch_arr[:,11].==0))>0
if length(findall(branch_arr[:,11].==0))>0
println("opf_loaddata: ", num_lines-length(find(branch_arr[:,11].>0)), " lines are off and will be discarded (out of ", num_lines, ")")
end



lines = Array{Line}(num_on)
lines = Array{Line}(undef, num_on)

lit=0
for i in lines_on
Expand All @@ -150,16 +150,16 @@ function opf_loaddata(raw::RawData, lineOff=Line())

@assert num_gens == size(costgen_arr,1)

gens_on=find(gen_arr[:,8]); num_on=length(gens_on)
gens_on=findall(x->x!=0, gen_arr[:,8]); num_on=length(gens_on)
if num_gens-num_on>0
println("loaddata: ", num_gens-num_on, " generators are off and will be discarded (out of ", num_gens, ")")
end

generators = Array{Gener}(num_on)
generators = Array{Gener}(undef, num_on)
i=0
for git in gens_on
i += 1
generators[i] = Gener(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, Array{Int}(0)) #gen_arr[i,1:end]...)
generators[i] = Gener(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, Array{Int}(undef, 0)) #gen_arr[i,1:end]...)

generators[i].bus = gen_arr[git,1]
generators[i].Pg = gen_arr[git,2] / baseMVA
Expand Down Expand Up @@ -211,20 +211,20 @@ end

function computeAdmitances(lines, buses, baseMVA)
nlines = length(lines)
YffR=Array{Float64}(nlines)
YffI=Array{Float64}(nlines)
YttR=Array{Float64}(nlines)
YttI=Array{Float64}(nlines)
YftR=Array{Float64}(nlines)
YftI=Array{Float64}(nlines)
YtfR=Array{Float64}(nlines)
YtfI=Array{Float64}(nlines)
YffR=Array{Float64}(undef, nlines)
YffI=Array{Float64}(undef, nlines)
YttR=Array{Float64}(undef, nlines)
YttI=Array{Float64}(undef, nlines)
YftR=Array{Float64}(undef, nlines)
YftI=Array{Float64}(undef, nlines)
YtfR=Array{Float64}(undef, nlines)
YtfI=Array{Float64}(undef, nlines)

for i in 1:nlines
@assert lines[i].status == 1
Ys = 1/(lines[i].r + lines[i].x*im)
#assign nonzero tap ratio
tap = lines[i].ratio==0?1.0:lines[i].ratio
tap = lines[i].ratio==0 ? 1.0 : lines[i].ratio

#add phase shifters
tap *= exp(lines[i].angle * pi/180 * im)
Expand All @@ -243,24 +243,24 @@ function computeAdmitances(lines, buses, baseMVA)
end

nbuses = length(buses)
YshR = Array{Float64}(nbuses)
YshI = Array{Float64}(nbuses)
YshR = Array{Float64}(undef, nbuses)
YshI = Array{Float64}(undef, nbuses)
for i in 1:nbuses
YshR[i] = buses[i].Gs / baseMVA
YshI[i] = buses[i].Bs / baseMVA
#@printf("[%4d] Ysh %15.12f + %15.12f i \n", i, YshR[i], YshI[i])
end

@assert 0==length(find(isnan.(YffR)))+length(find(isinf.(YffR)))
@assert 0==length(find(isnan.(YffI)))+length(find(isinf.(YffI)))
@assert 0==length(find(isnan.(YttR)))+length(find(isinf.(YttR)))
@assert 0==length(find(isnan.(YttI)))+length(find(isinf.(YttI)))
@assert 0==length(find(isnan.(YftR)))+length(find(isinf.(YftR)))
@assert 0==length(find(isnan.(YftI)))+length(find(isinf.(YftI)))
@assert 0==length(find(isnan.(YtfR)))+length(find(isinf.(YtfR)))
@assert 0==length(find(isnan.(YtfI)))+length(find(isinf.(YtfI)))
@assert 0==length(find(isnan.(YshR)))+length(find(isinf.(YshR)))
@assert 0==length(find(isnan.(YshI)))+length(find(isinf.(YshI)))
@assert 0==length(findall(isnan.(YffR)))+length(findall(isinf.(YffR)))
@assert 0==length(findall(isnan.(YffI)))+length(findall(isinf.(YffI)))
@assert 0==length(findall(isnan.(YttR)))+length(findall(isinf.(YttR)))
@assert 0==length(findall(isnan.(YttI)))+length(findall(isinf.(YttI)))
@assert 0==length(findall(isnan.(YftR)))+length(findall(isinf.(YftR)))
@assert 0==length(findall(isnan.(YftI)))+length(findall(isinf.(YftI)))
@assert 0==length(findall(isnan.(YtfR)))+length(findall(isinf.(YtfR)))
@assert 0==length(findall(isnan.(YtfI)))+length(findall(isinf.(YtfI)))
@assert 0==length(findall(isnan.(YshR)))+length(findall(isinf.(YshR)))
@assert 0==length(findall(isnan.(YshI)))+length(findall(isinf.(YshI)))

return YffR, YffI, YttR, YttI, YftR, YftI, YtfR, YtfI, YshR, YshI
end
Expand Down
Loading

0 comments on commit d140648

Please sign in to comment.