Closed jkhamphousone closed 8 months ago
Describe the bug
Coluna Version 0.7.0 | https://github.com/atoptima/Coluna.jl *************************************************************************************** **** B&B tree root node **** Local DB = Inf, global bounds: [ Inf , -Inf ], time = 70.70 sec. *************************************************************************************** ERROR: TypeError: in typeassert, expected Int32, got a value of type Int64 Stacktrace: [1] setindex!(A::Vector{Int32}, x::Coluna.MathProg.VarId, i1::Int64) @ Base ./array.jl:1021 [2] _binarymap_mode_1!(f::typeof(-), mx::Int64, my::Int64, xnzind::Vector{Coluna.MathProg.VarId}, xnzval::Vector{Float64}, ynzind::Vector{Coluna.MathProg.VarId}, ynzval::Vector{Float64}, rind::Vector{Int32}, rval::Vector{Float64}) @ SparseArrays /raid/home/julien/julia-1.10.0/share/julia/stdlib/v1.10/SparseArrays/src/sparsevector.jl:1490 [3] _binarymap(f::Function, x::SparseArrays.SparseVector{Float64, Coluna.MathProg.VarId}, y::SparseArrays.SparseVector{Float64, Coluna.MathProg.VarId}, mode::Int64) @ SparseArrays /raid/home/julien/julia-1.10.0/share/julia/stdlib/v1.10/SparseArrays/src/sparsevector.jl:1427 [4] - @ /raid/home/julien/julia-1.10.0/share/julia/stdlib/v1.10/SparseArrays/src/sparsevector.jl:1562 [inlined] [5] run_colgen_iteration!(context::Coluna.Algorithm.ColGenPrinterContext, phase::Coluna.Algorithm.ColGenPhase0, stage::Coluna.Algorithm.ColGenStage, env::Coluna.Env{Coluna.MathProg.VarId}, ip_primal_sol::Coluna.Algorithm.GlobalPrimalBoundHandler, stab::Coluna.Algorithm.NoColGenStab) @ Coluna.ColGen ~/.julia/packages/Coluna/TvRgV/src/ColGen/ColGen.jl:155 [6] run_colgen_phase!(context::Coluna.Algorithm.ColGenPrinterContext, phase::Coluna.Algorithm.ColGenPhase0, stage::Coluna.Algorithm.ColGenStage, env::Coluna.Env{…}, ip_primal_sol::Coluna.Algorithm.GlobalPrimalBoundHandler, stab::Coluna.Algorithm.NoColGenStab; iter::Int64) @ Coluna.ColGen ~/.julia/packages/Coluna/TvRgV/src/ColGen/ColGen.jl:77 [7] run!(context::Coluna.Algorithm.ColGenPrinterContext, env::Coluna.Env{Coluna.MathProg.VarId}, ip_primal_sol::Coluna.Algorithm.GlobalPrimalBoundHandler; iter::Int64) @ Coluna.ColGen ~/.julia/packages/Coluna/TvRgV/src/ColGen/ColGen.jl:46 [8] run! @ ~/.julia/packages/Coluna/TvRgV/src/ColGen/ColGen.jl:35 [inlined] [9] run!(algo::Coluna.Algorithm.ColumnGeneration, env::Coluna.Env{Coluna.MathProg.VarId}, reform::Coluna.MathProg.Reformulation{Coluna.MathProg.DwMaster}, input::Coluna.Algorithm.ConquerInputFromBaB) @ Coluna.Algorithm ~/.julia/packages/Coluna/TvRgV/src/Algorithm/colgen.jl:252 [10] run_colgen! @ ~/.julia/packages/Coluna/TvRgV/src/Algorithm/conquer.jl:174 [inlined] [11] run_colcutgen!(ctx::Coluna.Algorithm.ColCutGenContext, env::Coluna.Env{…}, reform::Coluna.MathProg.Reformulation{…}, input::Coluna.Algorithm.ConquerInputFromBaB, conquer_output::Coluna.Algorithm.OptimizationState{…}) @ Coluna.Algorithm ~/.julia/packages/Coluna/TvRgV/src/Algorithm/conquer.jl:210 [12] run_colcutgen_conquer!(ctx::Coluna.Algorithm.ColCutGenContext, env::Coluna.Env{Coluna.MathProg.VarId}, reform::Coluna.MathProg.Reformulation{Coluna.MathProg.DwMaster}, input::Coluna.Algorithm.ConquerInputFromBaB) @ Coluna.Algorithm ~/.julia/packages/Coluna/TvRgV/src/Algorithm/conquer.jl:353 [13] run!(algo::Coluna.Algorithm.ColCutGenConquer, env::Coluna.Env{Coluna.MathProg.VarId}, reform::Coluna.MathProg.Reformulation{Coluna.MathProg.DwMaster}, input::Coluna.Algorithm.ConquerInputFromBaB) @ Coluna.Algorithm ~/.julia/packages/Coluna/TvRgV/src/Algorithm/conquer.jl:382 [14] children(space::Coluna.Algorithm.BaBSearchSpace, current::Coluna.Algorithm.Node, env::Coluna.Env{Coluna.MathProg.VarId}, untreated_nodes::Base.Generator{DataStructures.Stack{Coluna.Algorithm.PrintedNode{Coluna.Algorithm.Node}}, typeof(Coluna.Algorithm._inner_node)}) @ Coluna.Algorithm ~/.julia/packages/Coluna/TvRgV/src/Algorithm/treesearch.jl:173 [15] children @ ~/.julia/packages/Coluna/TvRgV/src/Algorithm/treesearch/printer.jl:88 [inlined] [16] tree_search(::Coluna.TreeSearch.DepthFirstStrategy, space::Coluna.Algorithm.PrinterSearchSpace{…}, env::Coluna.Env{…}, input::Coluna.Algorithm.OptimizationState{…}) @ Coluna.TreeSearch ~/.julia/packages/Coluna/TvRgV/src/TreeSearch/explore.jl:24 [17] run!(algo::Coluna.Algorithm.TreeSearchAlgorithm, env::Coluna.Env{Coluna.MathProg.VarId}, reform::Coluna.MathProg.Reformulation{Coluna.MathProg.DwMaster}, input::Coluna.Algorithm.OptimizationState{Coluna.MathProg.Formulation{Coluna.MathProg.DwMaster}}) @ Coluna.Algorithm ~/.julia/packages/Coluna/TvRgV/src/Algorithm/treesearch.jl:89 [18] optimize!(reform::Coluna.MathProg.Reformulation{Coluna.MathProg.DwMaster}, env::Coluna.Env{Coluna.MathProg.VarId}, initial_primal_bound::Coluna.ColunaBase.Bound, initial_dual_bound::Coluna.ColunaBase.Bound, initial_columns::Nothing) @ Coluna ~/.julia/packages/Coluna/TvRgV/src/optimize.jl:90 [19] macro expansion @ ~/.julia/packages/Coluna/TvRgV/src/optimize.jl:54 [inlined] [20] macro expansion @ ~/.julia/packages/TimerOutputs/RsWnF/src/TimerOutput.jl:237 [inlined] [21] optimize!(env::Coluna.Env{Coluna.MathProg.VarId}, prob::Coluna.MathProg.Problem, annotations::Coluna.Annotations) @ Coluna ~/.julia/packages/Coluna/TvRgV/src/optimize.jl:53 [22] optimize!(model::Coluna.Optimizer) @ Coluna ~/.julia/packages/Coluna/TvRgV/src/MOIwrapper.jl:203 [23] optimize!(model::JuMP.Model; ignore_optimize_hook::Bool, _differentiation_backend::MathOptInterface.Nonlinear.SparseReverseMode, kwargs::@Kwargs{}) @ JuMP ~/.julia/packages/JuMP/027Gt/src/optimizer_interface.jl:448 [24] optimize! @ ~/.julia/packages/JuMP/027Gt/src/optimizer_interface.jl:409 [inlined] [25] optimize!(m::JuMP.Model) @ BlockDecomposition ~/.julia/packages/BlockDecomposition/xVj1Y/src/BlockDecomposition.jl:77 [26] optimize!(model::JuMP.Model; ignore_optimize_hook::Bool, _differentiation_backend::MathOptInterface.Nonlinear.SparseReverseMode, kwargs::@Kwargs{}) @ JuMP ~/.julia/packages/JuMP/027Gt/src/optimizer_interface.jl:437 [27] optimize! @ ~/.julia/packages/JuMP/027Gt/src/optimizer_interface.jl:409 [inlined] [28] optimize_getresults(data_sites::DataFrames.DataFrame, data_SPOT::DataFrames.DataFrame, data_PME::DataFrames.DataFrame, pars::EtudeDTSI_Julien.Params) @ EtudeDTSI_Julien /raid/home/julien/post-doc/Codes/EtudeDTSI/EtudeDTSI_Julien/src/model_optimize.jl:116 [29] main(; fileSites::String, fileSPOT::String, filePME::String, NbOfCurtailments2Perform::Int64, NbOfSites2Consider::Int64, powerContractualized::Int64, NbMaxBatUses::Dict{String, Int64}, colReward2consider::Symbol, curtailmentDuration::Int64, min_autonomy::Int64, use_SPOT::Bool) @ EtudeDTSI_Julien /raid/home/julien/post-doc/Codes/EtudeDTSI/EtudeDTSI_Julien/src/EtudeDTSI_Julien.jl:32 [30] top-level scope @ REPL[5]:1 Some type information was truncated. Use `show(err)` to see complete types.
Expected behavior When lauching a BlockModel with coluna:
set_sites = 1:10000 set_curtailments = 1:170 model = BlockModel(coluna; direct_model = true) @axis(C_axis, set_curtailments) @info "Creating variables..." @variable(model, x[s in set_sites, c in C_axis],Bin) @variable(model, y[c in C_axis],Bin) @variable(model, z[s in set_sites, c in C_axis],Bin) @info "Creating objective function..." @objective(model, Max, sum(y[c]*data_PME[set_curtailments[c],column_reward]*pars.powerContractualized for c in C_axis) + sum(sum(z[s,c]*data_sites[s, 2]*(data_PME.SPOT_prices[set_curtailments[c]] - data_PME[set_curtailments[c],:spot_recharge]) for s in set_sites) for c in C_axis) ) @info "Creating Linearization constraints... [1/3]" @constraint(model, linearization_yx_1[s = set_sites, c = C_axis], z[s,c] <= x[s,c]) @info "Creating Linearization constraints... [2/3]" @constraint(model, linearization_yx_2[s = set_sites, c = C_axis], z[s,c] <= y[c]) @info "Creating Linearization constraints... [3/3]" @constraint(model, linearization_yx_3[s = set_sites, c = C_axis], z[s,c] >= x[s,c] + y[c] - 1) @show objective_function(model) @info "Starting Dantzig_Wolfe decomposition..." @dantzig_wolfe_decomposition(model, decomposition, C_axis) master = getmaster(decomposition) subproblems = getsubproblems(decomposition) specify!.(subproblems, lower_multiplicity = 0, upper_multiplicity = 1) getsubproblems(decomposition) optimize!(model)
All dataframe values, Data_PME, powerContractualized etc. can be replaced by numercal values powerContractualized = 21000 etc.
Data_PME, powerContractualized
powerContractualized = 21000
Environment (please complete the following information):
Additional context
Thank you for reporting the bug. We are aware of it, as it is related to #1118. We are working on a fix.
Describe the bug
Expected behavior When lauching a BlockModel with coluna:
All dataframe values,
Data_PME, powerContractualized
etc. can be replaced by numercal valuespowerContractualized = 21000
etc.Environment (please complete the following information):
Additional context