PG and n5-3 MPS examples crash
pokutta opened this issue · 0 comments
pokutta commented
assigning to @mathieu -> please reassign if appropriate. See below for n5-3
; same happens for pg
. Seems like the solutions are not feasible that we get back from the lmo or there is something off with the rounding we recently introduced.
julia> include("examples/mps-examples/mip-examples.jl")
seed = 0xcdb99f13e55d59f1
Example n5-3
Boscia Algorithm.
Parameter settings.
Tree traversal strategy: Move best bound
Branching strategy: Most infeasible
Absolute dual gap tolerance: 1.000000e-06
Relative dual gap tolerance: 1.000000e-02
Frank-Wolfe subproblem tolerance: 1.000000e-01
Frank-Wolfe dual gap decay factor: 8.000000e-01
Additional kwargs:
Total number of variables: 2550
Number of integer variables: 150
Number of binary variables: 0
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Iter Open Bound Incumbent Gap (abs) Gap (rel) Time (s) Nodes/sec FW (ms) LMO (ms) LMO (calls c) FW (its) #activeset #shadow
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MPS n5-3 instance: Error During Test at /Users/x_bas/Documents/Mathematik/projects/2022_branchWolfe/BranchWolfe.jl/examples/mps-examples/mip-examples.jl:89
Got exception outside of a @test
AssertionError: is_linear_feasible(lmo, v)
Stacktrace:
[1] compute_extreme_point(lmo::Boscia.TimeTrackingLMO{FrankWolfe.MathOptLMO{SCIP.Optimizer}}, d::Vector{Float64}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Boscia ~/Documents/Mathematik/projects/2022_branchWolfe/BranchWolfe.jl/src/time_tracking_lmo.jl:38
[2] compute_extreme_point
@ ~/Documents/Mathematik/projects/2022_branchWolfe/BranchWolfe.jl/src/time_tracking_lmo.jl:31 [inlined]
[3] blended_pairwise_conditional_gradient(f::var"#f#11"{Float64, Vector{Float64}, Vector{Vector{Float64}}}, grad!::var"#grad!#12"{Float64, Vector{Float64}, Vector{Vector{Float64}}}, lmo::Boscia.TimeTrackingLMO{FrankWolfe.MathOptLMO{SCIP.Optimizer}}, active_set::FrankWolfe.ActiveSet{Vector{Float64}, Float64, Vector{Float64}}; line_search::FrankWolfe.Adaptive{Float64, Int64}, epsilon::Float64, max_iteration::Int64, print_iter::Int64, trajectory::Bool, verbose::Bool, memory_mode::FrankWolfe.InplaceEmphasis, gradient::Nothing, callback::Boscia.var"#fw_callback#16"{Bonobo.BnBTree{Boscia.FrankWolfeNode{FrankWolfe.ActiveSet{Vector{Float64}, Float64, Vector{Float64}}, FrankWolfe.DeletedVertexStorage{Vector{Float64}}, Boscia.IntegerBounds}, NamedTuple{(:problem, :current_node_id, :updated_incumbent, :global_tightening_rhs, :global_tightening_root_info, :global_tightenings, :options), Tuple{Boscia.SimpleOptimizationProblem{var"#f#11"{Float64, Vector{Float64}, Vector{Vector{Float64}}}, var"#grad!#12"{Float64, Vector{Float64}, Vector{Vector{Float64}}}, Boscia.TimeTrackingLMO{FrankWolfe.MathOptLMO{SCIP.Optimizer}}, Boscia.IntegerBounds}, Base.RefValue{Int64}, Base.RefValue{Bool}, Base.RefValue{Float64}, NamedTuple{(:lower_bounds, :upper_bounds), Tuple{Dict{Int64, Tuple{Float64, MathOptInterface.GreaterThan{Float64}}}, Dict{Int64, Tuple{Float64, MathOptInterface.LessThan{Float64}}}}}, Boscia.IntegerBounds, Dict{Symbol, Any}}}, Vector{Float64}, Boscia.FrankWolfeSolution{Boscia.FrankWolfeNode{FrankWolfe.ActiveSet{Vector{Float64}, Float64, Vector{Float64}}, FrankWolfe.DeletedVertexStorage{Vector{Float64}}, Boscia.IntegerBounds}, Vector{Float64}}}, Float64, Bool, Vector{Int64}, Int64, Vector{MathOptInterface.VariableIndex}}, traj_data::Vector{Any}, timeout::Float64, renorm_interval::Int64, lazy::Bool, linesearch_workspace::Nothing, lazy_tolerance::Float64, extra_vertex_storage::FrankWolfe.DeletedVertexStorage{Vector{Float64}}, add_dropped_vertices::Bool, use_extra_vertex_storage::Bool, recompute_last_vertex::Bool)
@ FrankWolfe ~/.julia/packages/FrankWolfe/bjdf1/src/pairwise.jl:280
[4] evaluate_node!(tree::Bonobo.BnBTree{Boscia.FrankWolfeNode{FrankWolfe.ActiveSet{Vector{Float64}, Float64, Vector{Float64}}, FrankWolfe.DeletedVertexStorage{Vector{Float64}}, Boscia.IntegerBounds}, NamedTuple{(:problem, :current_node_id, :updated_incumbent, :global_tightening_rhs, :global_tightening_root_info, :global_tightenings, :options), Tuple{Boscia.SimpleOptimizationProblem{var"#f#11"{Float64, Vector{Float64}, Vector{Vector{Float64}}}, var"#grad!#12"{Float64, Vector{Float64}, Vector{Vector{Float64}}}, Boscia.TimeTrackingLMO{FrankWolfe.MathOptLMO{SCIP.Optimizer}}, Boscia.IntegerBounds}, Base.RefValue{Int64}, Base.RefValue{Bool}, Base.RefValue{Float64}, NamedTuple{(:lower_bounds, :upper_bounds), Tuple{Dict{Int64, Tuple{Float64, MathOptInterface.GreaterThan{Float64}}}, Dict{Int64, Tuple{Float64, MathOptInterface.LessThan{Float64}}}}}, Boscia.IntegerBounds, Dict{Symbol, Any}}}, Vector{Float64}, Boscia.FrankWolfeSolution{Boscia.FrankWolfeNode{FrankWolfe.ActiveSet{Vector{Float64}, Float64, Vector{Float64}}, FrankWolfe.DeletedVertexStorage{Vector{Float64}}, Boscia.IntegerBounds}, Vector{Float64}}}, node::Boscia.FrankWolfeNode{FrankWolfe.ActiveSet{Vector{Float64}, Float64, Vector{Float64}}, FrankWolfe.DeletedVertexStorage{Vector{Float64}}, Boscia.IntegerBounds})
@ Boscia ~/Documents/Mathematik/projects/2022_branchWolfe/BranchWolfe.jl/src/node.jl:266
[5] optimize!(tree::Bonobo.BnBTree{Boscia.FrankWolfeNode{FrankWolfe.ActiveSet{Vector{Float64}, Float64, Vector{Float64}}, FrankWolfe.DeletedVertexStorage{Vector{Float64}}, Boscia.IntegerBounds}, NamedTuple{(:problem, :current_node_id, :updated_incumbent, :global_tightening_rhs, :global_tightening_root_info, :global_tightenings, :options), Tuple{Boscia.SimpleOptimizationProblem{var"#f#11"{Float64, Vector{Float64}, Vector{Vector{Float64}}}, var"#grad!#12"{Float64, Vector{Float64}, Vector{Vector{Float64}}}, Boscia.TimeTrackingLMO{FrankWolfe.MathOptLMO{SCIP.Optimizer}}, Boscia.IntegerBounds}, Base.RefValue{Int64}, Base.RefValue{Bool}, Base.RefValue{Float64}, NamedTuple{(:lower_bounds, :upper_bounds), Tuple{Dict{Int64, Tuple{Float64, MathOptInterface.GreaterThan{Float64}}}, Dict{Int64, Tuple{Float64, MathOptInterface.LessThan{Float64}}}}}, Boscia.IntegerBounds, Dict{Symbol, Any}}}, Vector{Float64}, Boscia.FrankWolfeSolution{Boscia.FrankWolfeNode{FrankWolfe.ActiveSet{Vector{Float64}, Float64, Vector{Float64}}, FrankWolfe.DeletedVertexStorage{Vector{Float64}}, Boscia.IntegerBounds}, Vector{Float64}}}; callback::Boscia.var"#callback#45"{Boscia.var"#callback#42#46"{Dates.DateTime, Vector{Float64}, Vector{Float64}, Vector{Float64}, Vector{Int64}, Vector{Int64}, Bool, Vector{Int64}, Vector{Int64}, Vector{Int64}, Dict{Symbol, Any}, Vector{Vector{Int64}}, Vector{Vector{Int64}}, Vector{Vector{Int64}}, Vector{Int64}, Nothing, Vector{Int64}, Vector{Int64}, Vector{Int64}, Int64, String, Vector{String}}})
@ Boscia ~/Documents/Mathematik/projects/2022_branchWolfe/BranchWolfe.jl/src/custom_bonobo.jl:36
[6] solve(f::var"#f#11"{Float64, Vector{Float64}, Vector{Vector{Float64}}}, grad!::var"#grad!#12"{Float64, Vector{Float64}, Vector{Vector{Float64}}}, lmo::FrankWolfe.MathOptLMO{SCIP.Optimizer}; traverse_strategy::Bonobo.BFS, branching_strategy::Bonobo.MOST_INFEASIBLE, fw_epsilon::Float64, verbose::Bool, dual_gap::Float64, rel_dual_gap::Float64, time_limit::Int64, print_iter::Int64, dual_gap_decay_factor::Float64, max_fw_iter::Int64, min_number_lower::Float64, min_node_fw_epsilon::Float64, use_postsolve::Bool, min_fw_iterations::Int64, max_iteration_post::Int64, dual_tightening::Bool, global_dual_tightening::Bool, bnb_callback::Nothing, strong_convexity::Float64, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Boscia ~/Documents/Mathematik/projects/2022_branchWolfe/BranchWolfe.jl/src/interface.jl:249
[7] macro expansion
@ ~/Documents/Mathematik/projects/2022_branchWolfe/BranchWolfe.jl/examples/mps-examples/mip-examples.jl:92 [inlined]
[8] macro expansion
@ /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Test/src/Test.jl:1363 [inlined]
[9] top-level scope
@ ~/Documents/Mathematik/projects/2022_branchWolfe/BranchWolfe.jl/examples/mps-examples/mip-examples.jl:90
[10] include(fname::String)
@ Base.MainInclude ./client.jl:476
[11] top-level scope
@ REPL[1]:1
[12] eval
@ ./boot.jl:368 [inlined]
[13] eval_user_input(ast::Any, backend::REPL.REPLBackend)
@ REPL /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/REPL/src/REPL.jl:151
[14] repl_backend_loop(backend::REPL.REPLBackend)
@ REPL /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/REPL/src/REPL.jl:247
[15] start_repl_backend(backend::REPL.REPLBackend, consumer::Any)
@ REPL /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/REPL/src/REPL.jl:232
[16] run_repl(repl::REPL.AbstractREPL, consumer::Any; backend_on_current_task::Bool)
@ REPL /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/REPL/src/REPL.jl:369
[17] run_repl(repl::REPL.AbstractREPL, consumer::Any)
@ REPL /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/REPL/src/REPL.jl:355
[18] (::Base.var"#967#969"{Bool, Bool, Bool})(REPL::Module)
@ Base ./client.jl:419
[19] #invokelatest#2
@ ./essentials.jl:729 [inlined]
[20] invokelatest
@ ./essentials.jl:726 [inlined]
[21] run_main_repl(interactive::Bool, quiet::Bool, banner::Bool, history_file::Bool, color_set::Bool)
@ Base ./client.jl:404
[22] exec_options(opts::Base.JLOptions)
@ Base ./client.jl:318
[23] _start()
@ Base ./client.jl:522
Test Summary: | Error Total Time
MPS n5-3 instance | 1 1 1m22.5s
ERROR: LoadError: Some tests did not pass: 0 passed, 0 failed, 1 errored, 0 broken.