Skip to content

Commit

Permalink
BuMP to JuMP v0.22 (#489)
Browse files Browse the repository at this point in the history
  • Loading branch information
odow authored Nov 16, 2021
1 parent 23fcaa9 commit 182820d
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 11 deletions.
10 changes: 5 additions & 5 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "SDDP"
uuid = "f4570300-c277-11e8-125c-4912f86ce65d"
authors = ["Oscar Dowson <[email protected]"]
version = "0.4.3"
version = "0.4.4"

[deps]
Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b"
Expand All @@ -19,12 +19,12 @@ Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"

[compat]
GLPK = "0.14"
GLPK = "0.15"
HTTP = "0.8.1, 0.9"
JSON = "0.21"
JSONSchema = "0.3"
JuMP = "0.21"
MutableArithmetics = "0.2"
JSONSchema = "1.0"
JuMP = "0.22"
MutableArithmetics = "0.3"
RecipesBase = "1"
Reexport = "0.2, 1"
TimerOutputs = "0.5"
Expand Down
1 change: 0 additions & 1 deletion docs/src/guides/debug_a_model.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,6 @@ CachingOptimizer state: EMPTY_OPTIMIZER
Solver name: GLPK
julia> set_silent(det_equiv)
true
julia> optimize!(det_equiv)
Expand Down
5 changes: 3 additions & 2 deletions docs/src/tutorial/theory/21_theory_intro.jl
Original file line number Diff line number Diff line change
Expand Up @@ -116,11 +116,12 @@ function kelleys_cutting_plane(
JuMP.@variable(model, θ >= lower_bound)
JuMP.@variable(model, x[1:input_dimension])
JuMP.@objective(model, Min, θ)
x_k = fill(NaN, input_dimension)
lower_bound, upper_bound = -Inf, Inf
while true
## Step (2):
JuMP.optimize!(model)
x_k = JuMP.value.(x)
x_k .= JuMP.value.(x)
## Step (3):
lower_bound = JuMP.objective_value(model)
upper_bound = min(upper_bound, f(x_k))
Expand All @@ -138,7 +139,7 @@ function kelleys_cutting_plane(
break
end
end
println("Found solution: x_K = ", JuMP.value.(x))
println("Found solution: x_K = ", x_k)
return
end

Expand Down
2 changes: 0 additions & 2 deletions src/JuMP.jl
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,6 @@ function JuMP.add_variable(
return state
end

JuMP.variable_type(model::JuMP.Model, ::Type{State}) = State

function JuMP.value(state::State{JuMP.VariableRef})
return State(JuMP.value(state.in), JuMP.value(state.out))
end
Expand Down
2 changes: 1 addition & 1 deletion test/electric.sof.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"nodes":{"1":{"subproblem":{"name":"MathOptFormat Model","variables":[{"name":"x[1]"},{"name":"x[2]"},{"name":"x[3]"},{"name":"x[4]"},{"name":"x[5]"},{"name":"x[6]"},{"name":"x′[1]"},{"name":"x′[2]"},{"name":"x′[3]"},{"name":"x′[4]"},{"name":"x′[5]"},{"name":"x′[6]"}],"constraints":[{"name":"c1","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":1.0,"variable":"x′[1]"},{"coefficient":1.0,"variable":"x′[2]"},{"coefficient":1.0,"variable":"x′[3]"},{"coefficient":1.0,"variable":"x′[4]"},{"coefficient":-1.0,"variable":"x′[5]"}]},"set":{"head":"EqualTo","value":12.0}},{"name":"c2","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":10.0,"variable":"x′[1]"},{"coefficient":7.0,"variable":"x′[2]"},{"coefficient":16.0,"variable":"x′[3]"},{"coefficient":6.0,"variable":"x′[4]"},{"coefficient":1.0,"variable":"x′[6]"}]},"set":{"head":"EqualTo","value":120.0}},{"name":"c7","function":{"head":"SingleVariable","variable":"x′[1]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c8","function":{"head":"SingleVariable","variable":"x′[2]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c9","function":{"head":"SingleVariable","variable":"x′[3]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c10","function":{"head":"SingleVariable","variable":"x′[4]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c11","function":{"head":"SingleVariable","variable":"x′[5]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c12","function":{"head":"SingleVariable","variable":"x′[6]"},"set":{"head":"GreaterThan","lower":0.0}}],"objective":{"function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":10.0,"variable":"x′[1]"},{"coefficient":7.0,"variable":"x′[2]"},{"coefficient":16.0,"variable":"x′[3]"},{"coefficient":6.0,"variable":"x′[4]"},{"coefficient":0.0,"variable":"x′[5]"},{"coefficient":0.0,"variable":"x′[6]"}]},"sense":"min"},"version":{"major":0,"minor":4}},"realizations":[],"state_variables":{"4":{"out":"x′[4]","in":"x[4]"},"1":{"out":"x′[1]","in":"x[1]"},"5":{"out":"x′[5]","in":"x[5]"},"2":{"out":"x′[2]","in":"x[2]"},"6":{"out":"x′[6]","in":"x[6]"},"3":{"out":"x′[3]","in":"x[3]"}},"random_variables":[]},"2":{"subproblem":{"name":"MathOptFormat Model","variables":[{"name":"x[1]"},{"name":"x[2]"},{"name":"x[3]"},{"name":"x[4]"},{"name":"x[5]"},{"name":"x[6]"},{"name":"y[1]"},{"name":"y[2]"},{"name":"y[3]"},{"name":"y[4]"},{"name":"y[5]"},{"name":"y[6]"},{"name":"y[7]"},{"name":"y[8]"},{"name":"y[9]"},{"name":"y[10]"},{"name":"y[11]"},{"name":"y[12]"},{"name":"y[13]"},{"name":"y[14]"},{"name":"y[15]"},{"name":"y[16]"},{"name":"δh[5]"}],"constraints":[{"name":"c1","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":-1.0,"variable":"x[1]"},{"coefficient":1.0,"variable":"y[1]"},{"coefficient":1.0,"variable":"y[2]"},{"coefficient":1.0,"variable":"y[3]"},{"coefficient":1.0,"variable":"y[13]"}]},"set":{"head":"EqualTo","value":0.0}},{"name":"c2","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":-1.0,"variable":"x[2]"},{"coefficient":1.0,"variable":"y[4]"},{"coefficient":1.0,"variable":"y[5]"},{"coefficient":1.0,"variable":"y[6]"},{"coefficient":1.0,"variable":"y[14]"}]},"set":{"head":"EqualTo","value":0.0}},{"name":"c3","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":-1.0,"variable":"x[3]"},{"coefficient":1.0,"variable":"y[7]"},{"coefficient":1.0,"variable":"y[8]"},{"coefficient":1.0,"variable":"y[9]"},{"coefficient":1.0,"variable":"y[15]"}]},"set":{"head":"EqualTo","value":0.0}},{"name":"c4","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":-1.0,"variable":"x[4]"},{"coefficient":1.0,"variable":"y[10]"},{"coefficient":1.0,"variable":"y[11]"},{"coefficient":1.0,"variable":"y[12]"},{"coefficient":1.0,"variable":"y[16]"}]},"set":{"head":"EqualTo","value":0.0}},{"name":"c5","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":1.0,"variable":"y[1]"},{"coefficient":1.0,"variable":"y[4]"},{"coefficient":1.0,"variable":"y[7]"},{"coefficient":1.0,"variable":"y[10]"},{"coefficient":-1.0,"variable":"δh[5]"}]},"set":{"head":"EqualTo","value":1.0}},{"name":"c6","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":1.0,"variable":"y[2]"},{"coefficient":1.0,"variable":"y[5]"},{"coefficient":1.0,"variable":"y[8]"},{"coefficient":1.0,"variable":"y[11]"}]},"set":{"head":"EqualTo","value":3.0}},{"name":"c7","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":1.0,"variable":"y[3]"},{"coefficient":1.0,"variable":"y[6]"},{"coefficient":1.0,"variable":"y[9]"},{"coefficient":1.0,"variable":"y[12]"}]},"set":{"head":"EqualTo","value":2.0}},{"name":"c7_1","function":{"head":"SingleVariable","variable":"y[1]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c8","function":{"head":"SingleVariable","variable":"y[2]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c9","function":{"head":"SingleVariable","variable":"y[3]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c10","function":{"head":"SingleVariable","variable":"y[4]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c11","function":{"head":"SingleVariable","variable":"y[5]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c12","function":{"head":"SingleVariable","variable":"y[6]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c13","function":{"head":"SingleVariable","variable":"y[7]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c14","function":{"head":"SingleVariable","variable":"y[8]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c15","function":{"head":"SingleVariable","variable":"y[9]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c16","function":{"head":"SingleVariable","variable":"y[10]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c17","function":{"head":"SingleVariable","variable":"y[11]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c18","function":{"head":"SingleVariable","variable":"y[12]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c19","function":{"head":"SingleVariable","variable":"y[13]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c20","function":{"head":"SingleVariable","variable":"y[14]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c21","function":{"head":"SingleVariable","variable":"y[15]"},"set":{"head":"GreaterThan","lower":0.0}},{"name":"c22","function":{"head":"SingleVariable","variable":"y[16]"},"set":{"head":"GreaterThan","lower":0.0}}],"objective":{"function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":40.0,"variable":"y[1]"},{"coefficient":24.0,"variable":"y[2]"},{"coefficient":4.0,"variable":"y[3]"},{"coefficient":45.0,"variable":"y[4]"},{"coefficient":27.0,"variable":"y[5]"},{"coefficient":4.5,"variable":"y[6]"},{"coefficient":32.0,"variable":"y[7]"},{"coefficient":19.2,"variable":"y[8]"},{"coefficient":3.2,"variable":"y[9]"},{"coefficient":55.0,"variable":"y[10]"},{"coefficient":33.0,"variable":"y[11]"},{"coefficient":5.5,"variable":"y[12]"},{"coefficient":0.0,"variable":"y[13]"},{"coefficient":0.0,"variable":"y[14]"},{"coefficient":0.0,"variable":"y[15]"},{"coefficient":0.0,"variable":"y[16]"}]},"sense":"min"},"version":{"major":0,"minor":4}},"realizations":[{"support":{"δh[5]":2.0},"probability":0.3},{"support":{"δh[5]":4.0},"probability":0.4},{"support":{"δh[5]":6.0},"probability":0.3}],"state_variables":{"4":{"out":"y[4]","in":"x[4]"},"1":{"out":"y[1]","in":"x[1]"},"5":{"out":"y[5]","in":"x[5]"},"2":{"out":"y[2]","in":"x[2]"},"6":{"out":"y[6]","in":"x[6]"},"3":{"out":"y[3]","in":"x[3]"}},"random_variables":["δh[5]"]}},"root":{"name":"0","state_variables":{"4":{"initial_value":0.0},"1":{"initial_value":0.0},"5":{"initial_value":0.0},"2":{"initial_value":0.0},"6":{"initial_value":0.0},"3":{"initial_value":0.0}}},"test_scenarios":[{"scenario":[{"support":{},"node":"1"},{"support":{"δh[5]":2.0},"node":"2"}],"probability":0.3},{"scenario":[{"support":{},"node":"1"},{"support":{"δh[5]":4.0},"node":"2"}],"probability":0.4},{"scenario":[{"support":{},"node":"1"},{"support":{"δh[5]":6.0},"node":"2"}],"probability":0.3}],"version":{"major":0,"minor":1},"edges":[{"probability":1.0,"to":"1","from":"0"},{"probability":1.0,"to":"2","from":"1"}]}
{"nodes":{"1":{"subproblem":{"name":"MathOptFormat Model","variables":[{"name":"x[1]"},{"name":"x[2]"},{"name":"x[3]"},{"name":"x[4]"},{"name":"x[5]"},{"name":"x[6]"},{"name":"x′[1]"},{"name":"x′[2]"},{"name":"x′[3]"},{"name":"x′[4]"},{"name":"x′[5]"},{"name":"x′[6]"}],"constraints":[{"name":"c1","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":1.0,"variable":"x′[1]"},{"coefficient":1.0,"variable":"x′[2]"},{"coefficient":1.0,"variable":"x′[3]"},{"coefficient":1.0,"variable":"x′[4]"},{"coefficient":-1.0,"variable":"x′[5]"}]},"set":{"head":"EqualTo","value":12.0}},{"name":"c2","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":10.0,"variable":"x′[1]"},{"coefficient":7.0,"variable":"x′[2]"},{"coefficient":16.0,"variable":"x′[3]"},{"coefficient":6.0,"variable":"x′[4]"},{"coefficient":1.0,"variable":"x′[6]"}]},"set":{"head":"EqualTo","value":120.0}},{"function":{"head":"SingleVariable","variable":"x′[1]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"x′[2]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"x′[3]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"x′[4]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"x′[5]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"x′[6]"},"set":{"head":"GreaterThan","lower":0.0}}],"objective":{"function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":10.0,"variable":"x′[1]"},{"coefficient":7.0,"variable":"x′[2]"},{"coefficient":16.0,"variable":"x′[3]"},{"coefficient":6.0,"variable":"x′[4]"},{"coefficient":0.0,"variable":"x′[5]"},{"coefficient":0.0,"variable":"x′[6]"}]},"sense":"min"},"version":{"major":0,"minor":4}},"realizations":[],"state_variables":{"4":{"out":"x′[4]","in":"x[4]"},"1":{"out":"x′[1]","in":"x[1]"},"5":{"out":"x′[5]","in":"x[5]"},"2":{"out":"x′[2]","in":"x[2]"},"6":{"out":"x′[6]","in":"x[6]"},"3":{"out":"x′[3]","in":"x[3]"}},"random_variables":[]},"2":{"subproblem":{"name":"MathOptFormat Model","variables":[{"name":"x[1]"},{"name":"x[2]"},{"name":"x[3]"},{"name":"x[4]"},{"name":"x[5]"},{"name":"x[6]"},{"name":"y[1]"},{"name":"y[2]"},{"name":"y[3]"},{"name":"y[4]"},{"name":"y[5]"},{"name":"y[6]"},{"name":"y[7]"},{"name":"y[8]"},{"name":"y[9]"},{"name":"y[10]"},{"name":"y[11]"},{"name":"y[12]"},{"name":"y[13]"},{"name":"y[14]"},{"name":"y[15]"},{"name":"y[16]"},{"name":"δh[5]"}],"constraints":[{"name":"c1","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":-1.0,"variable":"x[1]"},{"coefficient":1.0,"variable":"y[1]"},{"coefficient":1.0,"variable":"y[2]"},{"coefficient":1.0,"variable":"y[3]"},{"coefficient":1.0,"variable":"y[13]"}]},"set":{"head":"EqualTo","value":0.0}},{"name":"c2","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":-1.0,"variable":"x[2]"},{"coefficient":1.0,"variable":"y[4]"},{"coefficient":1.0,"variable":"y[5]"},{"coefficient":1.0,"variable":"y[6]"},{"coefficient":1.0,"variable":"y[14]"}]},"set":{"head":"EqualTo","value":0.0}},{"name":"c3","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":-1.0,"variable":"x[3]"},{"coefficient":1.0,"variable":"y[7]"},{"coefficient":1.0,"variable":"y[8]"},{"coefficient":1.0,"variable":"y[9]"},{"coefficient":1.0,"variable":"y[15]"}]},"set":{"head":"EqualTo","value":0.0}},{"name":"c4","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":-1.0,"variable":"x[4]"},{"coefficient":1.0,"variable":"y[10]"},{"coefficient":1.0,"variable":"y[11]"},{"coefficient":1.0,"variable":"y[12]"},{"coefficient":1.0,"variable":"y[16]"}]},"set":{"head":"EqualTo","value":0.0}},{"name":"c5","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":1.0,"variable":"y[1]"},{"coefficient":1.0,"variable":"y[4]"},{"coefficient":1.0,"variable":"y[7]"},{"coefficient":1.0,"variable":"y[10]"},{"coefficient":-1.0,"variable":"δh[5]"}]},"set":{"head":"EqualTo","value":1.0}},{"name":"c6","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":1.0,"variable":"y[2]"},{"coefficient":1.0,"variable":"y[5]"},{"coefficient":1.0,"variable":"y[8]"},{"coefficient":1.0,"variable":"y[11]"}]},"set":{"head":"EqualTo","value":3.0}},{"name":"c7","function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":1.0,"variable":"y[3]"},{"coefficient":1.0,"variable":"y[6]"},{"coefficient":1.0,"variable":"y[9]"},{"coefficient":1.0,"variable":"y[12]"}]},"set":{"head":"EqualTo","value":2.0}},{"function":{"head":"SingleVariable","variable":"y[1]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[2]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[3]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[4]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[5]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[6]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[7]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[8]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[9]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[10]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[11]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[12]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[13]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[14]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[15]"},"set":{"head":"GreaterThan","lower":0.0}},{"function":{"head":"SingleVariable","variable":"y[16]"},"set":{"head":"GreaterThan","lower":0.0}}],"objective":{"function":{"constant":0.0,"head":"ScalarAffineFunction","terms":[{"coefficient":40.0,"variable":"y[1]"},{"coefficient":24.0,"variable":"y[2]"},{"coefficient":4.0,"variable":"y[3]"},{"coefficient":45.0,"variable":"y[4]"},{"coefficient":27.0,"variable":"y[5]"},{"coefficient":4.5,"variable":"y[6]"},{"coefficient":32.0,"variable":"y[7]"},{"coefficient":19.2,"variable":"y[8]"},{"coefficient":3.2,"variable":"y[9]"},{"coefficient":55.0,"variable":"y[10]"},{"coefficient":33.0,"variable":"y[11]"},{"coefficient":5.5,"variable":"y[12]"},{"coefficient":0.0,"variable":"y[13]"},{"coefficient":0.0,"variable":"y[14]"},{"coefficient":0.0,"variable":"y[15]"},{"coefficient":0.0,"variable":"y[16]"}]},"sense":"min"},"version":{"major":0,"minor":4}},"realizations":[{"support":{"δh[5]":2.0},"probability":0.3},{"support":{"δh[5]":4.0},"probability":0.4},{"support":{"δh[5]":6.0},"probability":0.3}],"state_variables":{"4":{"out":"y[4]","in":"x[4]"},"1":{"out":"y[1]","in":"x[1]"},"5":{"out":"y[5]","in":"x[5]"},"2":{"out":"y[2]","in":"x[2]"},"6":{"out":"y[6]","in":"x[6]"},"3":{"out":"y[3]","in":"x[3]"}},"random_variables":["δh[5]"]}},"root":{"name":"0","state_variables":{"4":{"initial_value":0.0},"1":{"initial_value":0.0},"5":{"initial_value":0.0},"2":{"initial_value":0.0},"6":{"initial_value":0.0},"3":{"initial_value":0.0}}},"test_scenarios":[{"scenario":[{"support":{},"node":"1"},{"support":{"δh[5]":2.0},"node":"2"}],"probability":0.3},{"scenario":[{"support":{},"node":"1"},{"support":{"δh[5]":4.0},"node":"2"}],"probability":0.4},{"scenario":[{"support":{},"node":"1"},{"support":{"δh[5]":6.0},"node":"2"}],"probability":0.3}],"version":{"major":0,"minor":1},"edges":[{"probability":1.0,"to":"1","from":"0"},{"probability":1.0,"to":"2","from":"1"}]}

0 comments on commit 182820d

Please sign in to comment.