JuliaIO / JLD.jl

Saving and loading julia variables while preserving native types
MIT License
278 stars 55 forks source link

Can't dump JuMP model #178

Open facq opened 7 years ago

facq commented 7 years ago

Hi !

very useful module :)

but i got a problem trying to save a "Model" data structure from JuMP package.

i use julia 0.6.0

here is my test script :

> using JuMP
> using Clp
> #using CPLEX
> 
> using JLD
> 
> m = Model(solver = ClpSolver())
> #m = Model(solver = CplexSolver())
> @variable(m, 0 <= x <= 2 )
> @variable(m, 0 <= y <= 30 )
> 
> @objective(m, Max, 5x + 3*y )
> @constraint(m, 1x + 5y <= 3.0 )
> 
> print(m)
> 
> save("/tmp/dump.jld", "model", m)
> 
> status = solve(m)
> 
> println("Objective value: ", getobjectivevalue(m))
> println("x = ", getvalue(x))
> println("y = ", getvalue(y))
> 
> ##########
> 
> n= load("/tmp/dump.jld", "model")
> 
> status = solve(n)
> 
> println("Objective value: ", getobjectivevalue(n))
> println("x = ", getvalue(x))
> println("y = ", getvalue(y))
> 

and here what i get :

Max 5 x + 3 y
Subject to
 x + 5 y ≤ 3
 0 ≤ x ≤ 2
 0 ≤ y ≤ 30
WARNING: Compat.ASCIIString is deprecated, use String instead.
  likely near Julia/jumptest.jl:21
WARNING: Compat.UTF8String is deprecated, use String instead.
  likely near Julia/jumptest.jl:21
WARNING: Compat.UTF8String is deprecated, use String instead.
  likely near Julia/jumptest.jl:21
WARNING: Compat.UTF8String is deprecated, use String instead.
  likely near Julia/jumptest.jl:21
ERROR: LoadError: StackOverflowError:
Stacktrace:
 [1] gen_h5convert(::JLD.JldFile, ::Any) at /home/.julia/v0.6/JLD/src/jld_types.jl:609
 [2] #write_compound#21(::Array{Any,1}, ::Function, ::JLD.JldGroup, ::String, ::JuMP.GenericAffExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:701
 [3] _write(::JLD.JldGroup, ::String, ::JuMP.GenericAffExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:693
 [4] write_ref(::JLD.JldFile, ::JuMP.GenericAffExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:662
 [5] macro expansion at /home/.julia/v0.6/JLD/src/jld_types.jl:669 [inlined]
 [6] h5convert!(::Ptr{UInt8}, ::JLD.JldFile, ::JuMP.GenericQuadExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/jld_types.jl:685
 [7] #write_compound#21(::Array{Any,1}, ::Function, ::JLD.JldGroup, ::String, ::JuMP.GenericQuadExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:704
 [8] _write(::JLD.JldGroup, ::String, ::JuMP.GenericQuadExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:693
 [9] write_ref(::JLD.JldFile, ::JuMP.GenericQuadExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:662
 [10] macro expansion at /home/.julia/v0.6/JLD/src/jld_types.jl:669 [inlined]
 [11] h5convert!(::Ptr{UInt8}, ::JLD.JldFile, ::JuMP.Model, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/jld_types.jl:685
 [12] #write_compound#21(::Array{Any,1}, ::Function, ::JLD.JldGroup, ::String, ::JuMP.Model, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:704
 [13] _write(::JLD.JldGroup, ::String, ::JuMP.Model, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:693
 [14] write_ref(::JLD.JldFile, ::JuMP.Model, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:662
 [15] macro expansion at /home/.julia/v0.6/JLD/src/jld_types.jl:669 [inlined]
 [16] h5convert!(::Ptr{UInt8}, ::JLD.JldFile, ::JuMP.Variable, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/jld_types.jl:685
 [17] #write_compound#21(::Array{Any,1}, ::Function, ::JLD.JldGroup, ::String, ::JuMP.Variable, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:704
 [18] _write(::JLD.JldGroup, ::String, ::JuMP.Variable, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:693
 [19] write_ref(::JLD.JldFile, ::JuMP.Variable, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:662
 [20] h5convert_array(::JLD.JldFile, ::Array{JuMP.Variable,1}, ::JLD.JldDatatype, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:607
 [21] #_write#17(::Array{Any,1}, ::Function, ::JLD.JldGroup, ::String, ::Array{JuMP.Variable,1}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:570
 [22] _write(::JLD.JldGroup, ::String, ::Array{JuMP.Variable,1}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:568
 [23] write_ref(::JLD.JldFile, ::Array{JuMP.Variable,1}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:662
 [24] macro expansion at /home/.julia/v0.6/JLD/src/jld_types.jl:669 [inlined]
 [25] h5convert!(::Ptr{UInt8}, ::JLD.JldFile, ::JuMP.GenericAffExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/jld_types.jl:685
 [26] #write_compound#21(::Array{Any,1}, ::Function, ::JLD.JldGroup, ::String, ::JuMP.GenericAffExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:704
 [27] _write(::JLD.JldGroup, ::String, ::JuMP.GenericAffExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:693
 [28] write_ref(::JLD.JldFile, ::JuMP.GenericAffExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:662
 [29] macro expansion at /home/.julia/v0.6/JLD/src/jld_types.jl:669 [inlined]
 [30] h5convert!(::Ptr{UInt8}, ::JLD.JldFile, ::JuMP.GenericQuadExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/jld_types.jl:685
 [31] #write_compound#21(::Array{Any,1}, ::Function, ::JLD.JldGroup, ::String, ::JuMP.GenericQuadExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:704
 [32] _write(::JLD.JldGroup, ::String, ::JuMP.GenericQuadExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:693
 [33] write_ref(::JLD.JldFile, ::JuMP.GenericQuadExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:662
 [34] macro expansion at /home/.julia/v0.6/JLD/src/jld_types.jl:669 [inlined]
 [35] h5convert!(::Ptr{UInt8}, ::JLD.JldFile, ::JuMP.Model, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/jld_types.jl:685
 [36] #write_compound#21(::Array{Any,1}, ::Function, ::JLD.JldGroup, ::String, ::JuMP.Model, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:704
 [37] _write(::JLD.JldGroup, ::String, ::JuMP.Model, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:693
 [38] write_ref(::JLD.JldFile, ::JuMP.Model, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:662
 [39] macro expansion at /home/.julia/v0.6/JLD/src/jld_types.jl:669 [inlined]
 [40] h5convert!(::Ptr{UInt8}, ::JLD.JldFile, ::JuMP.Variable, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/jld_types.jl:685
 [41] #write_compound#21(::Array{Any,1}, ::Function, ::JLD.JldGroup, ::String, ::JuMP.Variable, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:704
 [42] _write(::JLD.JldGroup, ::String, ::JuMP.Variable, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:693
 [43] write_ref(::JLD.JldFile, ::JuMP.Variable, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:662
 [44] h5convert_array(::JLD.JldFile, ::Array{JuMP.Variable,1}, ::JLD.JldDatatype, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:607
 [45] #_write#17(::Array{Any,1}, ::Function, ::JLD.JldGroup, ::String, ::Array{JuMP.Variable,1}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:570
 [46] _write(::JLD.JldGroup, ::String, ::Array{JuMP.Variable,1}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:568
 [47] write_ref(::JLD.JldFile, ::Array{JuMP.Variable,1}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:662
 [48] macro expansion at /home/.julia/v0.6/JLD/src/jld_types.jl:669 [inlined]
...
...
...
 [23721] write_ref(::JLD.JldFile, ::JuMP.GenericQuadExpr{Float64,JuMP.Variable}, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:662
 [23722] macro expansion at /home/.julia/v0.6/JLD/src/jld_types.jl:669 [inlined]
 [23723] h5convert!(::Ptr{UInt8}, ::JLD.JldFile, ::JuMP.Model, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/jld_types.jl:685
 [23724] #write_compound#21(::Array{Any,1}, ::Function, ::JLD.JldFile, ::String, ::JuMP.Model, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:704
 [23725] #write#14(::Array{Any,1}, ::Function, ::JLD.JldFile, ::String, ::JuMP.Model, ::JLD.JldWriteSession) at /home/.julia/v0.6/JLD/src/JLD.jl:520
 [23726] (::JLD.##34#35{String,JuMP.Model,Tuple{}})(::JLD.JldFile) at /home/.julia/v0.6/JLD/src/JLD.jl:1260
 [23727] #jldopen#11(::Array{Any,1}, ::Function, ::JLD.##34#35{String,JuMP.Model,Tuple{}}, ::String, ::Vararg{String,N} where N) at /home/.julia/v0.6/JLD/src/JLD.jl:256
 [23728] (::JLD.#kw##jldopen)(::Array{Any,1}, ::JLD.#jldopen, ::Function, ::String, ::String) at ./<missing>:0
 [23729] #save#33(::Bool, ::Bool, ::Function, ::FileIO.File{FileIO.DataFormat{:JLD}}, ::String, ::JuMP.Model) at /home/.julia/v0.6/JLD/src/JLD.jl:1258
 [23730] save(::FileIO.File{FileIO.DataFormat{:JLD}}, ::String, ::JuMP.Model) at /home/.julia/v0.6/JLD/src/JLD.jl:1255
 [23731] #save#14(::Array{Any,1}, ::Function, ::String, ::String, ::Vararg{Any,N} where N) at /home/.julia/v0.6/FileIO/src/loadsave.jl:61
 [23732] save(::String, ::String, ::JuMP.Model) at /home/.julia/v0.6/FileIO/src/loadsave.jl:61
 [23733] include_from_node1(::String) at ./loading.jl:569
 [23734] include(::String) at ./sysimg.jl:14
 [23735] process_options(::Base.JLOptions) at ./client.jl:305
 [23736] _start() at ./client.jl:371
while loading Julia/jumptest.jl, in expression starting on line 21
facq commented 7 years ago

i tried in julia 0.5.2 also, the error looks like the same :(