scipopt / papilo Goto Github PK
View Code? Open in Web Editor NEWParallel Presolve for Integer and Linear Optimization
License: GNU Lesser General Public License v3.0
Parallel Presolve for Integer and Linear Optimization
License: GNU Lesser General Public License v3.0
Is PaPILO able to exploit SOS1 constraints? That is, is there a difference between the presolve reduction of a problem defined with SOS1 constraints and the presolve reduction of the same problem with its SOS1 constraints removed, assuming that both original problems are equivalent mathematically?
What is the cmake flag ("-DORTOOLS_DIR=" ?) to specify the location of OR-Tools when trying to build PaPILO with OR-Tools in order to use GLOP and PDLP? Will CP-SAT also be added as a possible OR-Tools solver integrated with PaPILO? CP-SAT can solve pure integer linear programs.
mkdir build
cd build
cmake -DORTOOLS_DIR=PATH_TO_ORTOOLS_BUILD_DIR ..
make
Why isn't PaPILO v2.1.0, which is provided with SCIP v8.0.1 beta, tagged? https://www.scipopt.org/
Hello,
I'm installing PAPILO on ubuntu following the instruction. I have succeeded in building the package.
According to the README.md, the excutable binary file can be called by
bin/papilo presolve -f problem.mps -r reduced.mps -v reduced.postsolve
but I do not find any folder named "bin" or binary file named "papilo".
Looking forward to your reply.
===> Building for papilo-2.1.2
[ 9% 7/11] : && /usr/local/libexec/ccache/c++ -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -DNDEBUG -fstack-protector-strong binaries/CMakeFiles/duplicates.dir/__/src/duplicates.cpp.o -o bin/duplicates -Wl,-rpath,/usr/ports/math/papilo/work/.build:/usr/local/lib: libpapilo-core.so /usr/local/lib/libboost_iostreams.so /usr/local/lib/libboost_serialization.so /usr/local/lib/libboost_program_options.so /usr/local/lib/libboost_regex.so /usr/local/lib/libtbb.so.12.9 -lpthread /usr/local/lib/libgmp.so /usr/local/lib/libgmpxx.so && :
FAILED: bin/duplicates
: && /usr/local/libexec/ccache/c++ -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -DNDEBUG -fstack-protector-strong binaries/CMakeFiles/duplicates.dir/__/src/duplicates.cpp.o -o bin/duplicates -Wl,-rpath,/usr/ports/math/papilo/work/.build:/usr/local/lib: libpapilo-core.so /usr/local/lib/libboost_iostreams.so /usr/local/lib/libboost_serialization.so /usr/local/lib/libboost_program_options.so /usr/local/lib/libboost_regex.so /usr/local/lib/libtbb.so.12.9 -lpthread /usr/local/lib/libgmp.so /usr/local/lib/libgmpxx.so && :
ld: error: undefined symbol: papilo::SparseStorage<double>::SparseStorage(std::__1::vector<std::__1::tuple<int, int, double>, std::__1::allocator<std::__1::tuple<int, int, double>>>, int, int, bool, double, int)
>>> referenced by duplicates.cpp
>>> binaries/CMakeFiles/duplicates.dir/__/src/duplicates.cpp.o:(papilo::MpsParser<double>::loadProblem(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&))
ld: error: undefined symbol: papilo::SparseStorage<double>::getTranspose() const
>>> referenced by duplicates.cpp
>>> binaries/CMakeFiles/duplicates.dir/__/src/duplicates.cpp.o:(papilo::Problem<double>::setConstraintMatrix(papilo::SparseStorage<double>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>, bool))
ld: error: undefined symbol: papilo::ConstraintMatrix<double>::ConstraintMatrix(papilo::SparseStorage<double>, papilo::SparseStorage<double>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>)
>>> referenced by duplicates.cpp
>>> binaries/CMakeFiles/duplicates.dir/__/src/duplicates.cpp.o:(papilo::Problem<double>::setConstraintMatrix(papilo::SparseStorage<double>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>, bool))
>>> referenced by duplicates.cpp
>>> binaries/CMakeFiles/duplicates.dir/__/src/duplicates.cpp.o:(papilo::Problem<double>::setConstraintMatrix(papilo::SparseStorage<double>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>, bool))
c++: error: linker command failed with exit code 1 (use -v to see invocation)
[ 18% 7/11] : && /usr/local/libexec/ccache/c++ -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -DNDEBUG -fstack-protector-strong binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o -o bin/papilo -Wl,-rpath,/usr/ports/math/papilo/work/.build:/usr/local/lib: libpapilo-core.so /usr/local/lib/libsoplex.so.6.0.3.0 /usr/local/lib/libboost_iostreams.so /usr/local/lib/libboost_serialization.so /usr/local/lib/libboost_program_options.so /usr/local/lib/libboost_regex.so /usr/local/lib/libtbb.so.12.9 -lpthread /usr/lib/libz.so /usr/local/lib/libgmp.so /usr/local/lib/libgmpxx.so && :
FAILED: bin/papilo
: && /usr/local/libexec/ccache/c++ -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -DNDEBUG -fstack-protector-strong binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o -o bin/papilo -Wl,-rpath,/usr/ports/math/papilo/work/.build:/usr/local/lib: libpapilo-core.so /usr/local/lib/libsoplex.so.6.0.3.0 /usr/local/lib/libboost_iostreams.so /usr/local/lib/libboost_serialization.so /usr/local/lib/libboost_program_options.so /usr/local/lib/libboost_regex.so /usr/local/lib/libtbb.so.12.9 -lpthread /usr/lib/libz.so /usr/local/lib/libgmp.so /usr/local/lib/libgmpxx.so && :
ld: error: undefined symbol: papilo::Presolve<double>::addDefaultPresolvers()
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::ResultStatus papilo::presolve_and_solve<double>(papilo::OptionsInfo const&, std::__1::unique_ptr<papilo::SolverFactory<double>, std::__1::default_delete<papilo::SolverFactory<double>>>, std::__1::unique_ptr<papilo::SolverFactory<double>, std::__1::default_delete<papilo::SolverFactory<double>>>))
ld: error: undefined symbol: papilo::Presolve<double>::apply(papilo::Problem<double>&, bool)
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::ResultStatus papilo::presolve_and_solve<double>(papilo::OptionsInfo const&, std::__1::unique_ptr<papilo::SolverFactory<double>, std::__1::default_delete<papilo::SolverFactory<double>>>, std::__1::unique_ptr<papilo::SolverFactory<double>, std::__1::default_delete<papilo::SolverFactory<double>>>))
ld: error: undefined symbol: papilo::Presolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>::addDefaultPresolvers()
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::ResultStatus papilo::presolve_and_solve<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>(papilo::OptionsInfo const&, std::__1::unique_ptr<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>, std::__1::default_delete<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>>>, std::__1::unique_ptr<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>, std::__1::default_delete<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>>>))
ld: error: undefined symbol: papilo::Presolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>::apply(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>&, bool)
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::ResultStatus papilo::presolve_and_solve<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>(papilo::OptionsInfo const&, std::__1::unique_ptr<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>, std::__1::default_delete<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>>>, std::__1::unique_ptr<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>, std::__1::default_delete<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>>>))
ld: error: undefined symbol: papilo::Presolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::addDefaultPresolvers()
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::ResultStatus papilo::presolve_and_solve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>(papilo::OptionsInfo const&, std::__1::unique_ptr<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>, std::__1::default_delete<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>>>, std::__1::unique_ptr<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>, std::__1::default_delete<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>>>))
ld: error: undefined symbol: papilo::Presolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::apply(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>&, bool)
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::ResultStatus papilo::presolve_and_solve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>(papilo::OptionsInfo const&, std::__1::unique_ptr<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>, std::__1::default_delete<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>>>, std::__1::unique_ptr<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>, std::__1::default_delete<papilo::SolverFactory<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>>>))
ld: error: undefined symbol: papilo::SparseStorage<double>::SparseStorage(std::__1::vector<std::__1::tuple<int, int, double>, std::__1::allocator<std::__1::tuple<int, int, double>>>, int, int, bool, double, int)
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::MpsParser<double>::loadProblem(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&))
ld: error: undefined symbol: papilo::Postsolve<double>::undo(papilo::Solution<double> const&, papilo::Solution<double>&, papilo::PostsolveStorage<double>, bool) const
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(void papilo::postsolve<double>(papilo::PostsolveStorage<double>&, papilo::Solution<double> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&))
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::Validation<double>::can_reduced_solution_be_recalculated(papilo::Problem<double> const&, papilo::PostsolveStorage<double> const&, papilo::Solution<double> const&))
ld: error: undefined symbol: papilo::SparseStorage<double>::getTranspose() const
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::Problem<double>::setConstraintMatrix(papilo::SparseStorage<double>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>, bool))
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(void papilo::ConstraintMatrix<double>::serialize<boost::archive::binary_iarchive>(boost::archive::binary_iarchive&, unsigned int))
ld: error: undefined symbol: papilo::ConstraintMatrix<double>::ConstraintMatrix(papilo::SparseStorage<double>, papilo::SparseStorage<double>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>)
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::Problem<double>::setConstraintMatrix(papilo::SparseStorage<double>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>, bool))
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::Problem<double>::setConstraintMatrix(papilo::SparseStorage<double>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<double, std::__1::allocator<double>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>, bool))
ld: error: undefined symbol: papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>::SparseStorage(std::__1::vector<std::__1::tuple<int, int, boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>, std::__1::allocator<std::__1::tuple<int, int, boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>>>, int, int, bool, double, int)
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::MpsParser<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>::loadProblem(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&))
ld: error: undefined symbol: papilo::Postsolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>::undo(papilo::Solution<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>> const&, papilo::Solution<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>&, papilo::PostsolveStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>, bool) const
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(void papilo::postsolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>(papilo::PostsolveStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>&, papilo::Solution<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&))
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::Validation<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>::can_reduced_solution_be_recalculated(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>> const&, papilo::PostsolveStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>> const&, papilo::Solution<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>> const&))
ld: error: undefined symbol: papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>::getTranspose() const
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>::setConstraintMatrix(papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>, bool))
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(void papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>::serialize<boost::archive::binary_iarchive>(boost::archive::binary_iarchive&, unsigned int))
ld: error: undefined symbol: papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>::ConstraintMatrix(papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>, papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>)
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>::setConstraintMatrix(papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>, bool))
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>::setConstraintMatrix(papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_float<35u>, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>, bool))
ld: error: undefined symbol: papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::SparseStorage(std::__1::vector<std::__1::tuple<int, int, boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>, std::__1::allocator<std::__1::tuple<int, int, boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>>>, int, int, bool, double, int)
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::MpsParser<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::loadProblem(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&))
ld: error: undefined symbol: papilo::Postsolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::Postsolve(papilo::Message, papilo::Num<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>)
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(void papilo::postsolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>(papilo::PostsolveStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>&, papilo::Solution<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&))
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::Validation<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::can_reduced_solution_be_recalculated(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>> const&, papilo::PostsolveStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>> const&, papilo::Solution<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>> const&))
ld: error: undefined symbol: papilo::Postsolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::undo(papilo::Solution<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>> const&, papilo::Solution<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>&, papilo::PostsolveStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>, bool) const
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(void papilo::postsolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>(papilo::PostsolveStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>&, papilo::Solution<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&))
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::Validation<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::can_reduced_solution_be_recalculated(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>> const&, papilo::PostsolveStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>> const&, papilo::Solution<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>> const&))
ld: error: undefined symbol: papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::getTranspose() const
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::setConstraintMatrix(papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>, bool))
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(void papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::serialize<boost::archive::binary_iarchive>(boost::archive::binary_iarchive&, unsigned int))
ld: error: undefined symbol: papilo::ConstraintMatrix<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::ConstraintMatrix(papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>, papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>)
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::setConstraintMatrix(papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>, bool))
>>> referenced by papilo.cpp
>>> binaries/CMakeFiles/papilo-executable.dir/__/src/papilo.cpp.o:(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>::setConstraintMatrix(papilo::SparseStorage<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>, std::__1::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>>>, std::__1::vector<papilo::Flags<papilo::RowFlag>, std::__1::allocator<papilo::Flags<papilo::RowFlag>>>, bool))
c++: error: linker command failed with exit code 1 (use -v to see invocation)
Version: 2.1.2
clang-15
FreeBSD 13.2
Setting verbosity to 3 (e.g. normal level), Papilo's command line output seems to suggest e.g. the following;
round 2 is FAST
round 3 is EXHAUSTIVE
e.g. that it did not perform a search for MEDIUM; however, in fact, it did another FAST and MEDIUM round in between, which both did not find any reductions. Only the rounds where reductions are found are printed, which can be quite misleading, as there are therefore much more rounds being done than there are being printed.
Both projects have options to link with each other.
What is the default number of threads used by PaPILO? Is it 1 or the number of physical cores or the number of logical cores? I don't see the number of threads used listed in the console output.
[papilo-2.1.1] from /sage/local/var/tmp/sage/build/papilo-2.1.1/src/src/papilo/io/MpsParser.hpp:28,
[papilo-2.1.1] from /sage/local/var/tmp/sage/build/papilo-2.1.1/src/test/papilo/io/MpsParserTest.cpp:24:
[papilo-2.1.1] /usr/include/boost/multiprecision/float128.hpp: In member function 'std::string boost::multiprecision::backends::float128_backend::str(std::streamsize, std::ios_base::fmtflags) const':
[papilo-2.1.1] /usr/include/boost/multiprecision/float128.hpp:260:15: error: 'unique_ptr' is not a member of 'std'
[papilo-2.1.1] 260 | std::unique_ptr<char[]> buf2;
[papilo-2.1.1] | ^~~~~~~~~~
[papilo-2.1.1] /usr/include/boost/multiprecision/float128.hpp:12:1: note: 'std::unique_ptr' is defined in header '<memory>'; did you forget to '#include <memory>'?
https://github.com/mkoeppe/PySCIPOpt/actions/runs/3506612801/jobs/5873771362
Hi, I'm trying to use the C API found in src/papilolib.h, but this includes "papilolib_export.h" which I can't find anywhere. Without it PAPILOLIB_EXPORT is not defined.
I've build papilo using the basic build instructions
mkdir build
cd build
cmake ..
make
Is using the API in src/papilolib.h supported, and if yes how do I obtain/create papilolib_export.h?
PaPILO is killed while trying to presolve a MILP model stored in a 9.6 GB MPS file. The computer has a AMD Ryzen Threadripper 3960X 24-Core Processor, which has 48 logical cores due to hyper-threading, has 128 GB RAM, and runs Ubuntu 20.04.5 LTS. Is PaPILO running out of memory?
$ /home/muck/papilo-2.1.0/build/bin/papilo presolve -f /data/muck/gen_MPS_files/p10_fix0_MILP_binary_x.mps -r /data/muck/PaPILO_files_MILP_binary_x/p10_fix0_red.mps -v /data/muck/PaPILO_files_MILP_binary_x/p10_fix0_red.postsolve
PaPILO version 2.1.0 [mode: debug][Solvers: none][GitHash: ]
Copyright (C) 2020-2022 Zuse Institute Berlin (ZIB)
External libraries:
Boost 1.79.0 (https://www.boost.org/)
TBB Thread building block https://github.com/oneapi-src/oneTBB developed by Intel
reading took 188.0 seconds
Numerical Statistics:
Matrix range [1e+00,1e+00]
Objective range [2e+01,1e+04]
Bounds range [1e+00,1e+00]
RHS range [1e+00,1e+01]
Dynamism Variables: 1e+00
Dynamism Rows : 1e+00
starting presolve of problem /data/muck/gen_MPS_files/p10_fix0_MILP_binary_x.mps:
rows: 47261300
columns: 47251695
int. columns: 47251695
cont. columns: 0
nonzeros: 141744517
round 0 ( Trivial ): 2 del cols, 14889 del rows, 2 chg bounds, 0 chg sides, 0 chg coeffs, 0 tsx applied, 0 tsx conflicts
Killed
CMakeLists.txt says that the version is 2.0.0, but repository has no such tag.
Have you considered integrating PaPILO with COPT? COPT is competitive with Gurobi according to the benchmarks linked below. At least for now, COPT has a generous license.
Benchmarks: https://plato.asu.edu/bench.html
COPT software: https://github.com/COPT-Public/COPT-Release
COPT license: https://www.shanshu.ai/copt/
COPT user guide: https://guide.coap.online/copt/en-doc/index.html
Hi, for testing purpose I installed Arch WSL that always have latest version of libraries in linux. I installed some required packages and compiled IPOPT without any problem. Then, I moved on SCIP and started compiling from Papilo. I directly pulling github files with clone command.
log1.txt file is output of "cmake .." command.
log2.txt file is output of "make -j12" command.
I also attaching CMake log files.
CMakeError.log
CMakeOutput.log
I think these files will be helpful to identify error.
If oneTBB is installed on Ubuntu 18.04 (or another Linux distribution) in a custom directory (e.g. in my home directory or in /tmp, as is done in the example in the link below) will PaPILO find it automatically? If not, is it possible to tell PaPILO where oneTBB is installed during the build process?
Hello,
After I execute the "cmake ..." command, I was prompted that TBB was not installed and an error was reported during the installation process:
“
lto1: fatal error: bytecode stream in file ‘CMakeFiles/tbbmalloc.dir/backend.cpp.o’ generated with LTO version 8.1 instead of the expected 6.2
compilation terminated.
lto-wrapper: fatal error: /usr/bin/gcc returned 1 exit status
compilation terminated.
/usr/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
make[2]: ***
[src/tbbmalloc/CMakeFiles/tbbmalloc.dir/build.make:160:gnu_9.4_cxx11_64_relwithdebinfo/libtbbmalloc.so.2.4]
错误 1
make[1]: ***
[CMakeFiles/Makefile2:205:src/tbbmalloc/CMakeFiles/tbbmalloc.dir/all]
错误 2
make: *** [Makefile:152:all] 错误 2
“
How can I solve this problem?
I am seeing segfaults while running the papilo 2.2.0 testsuite on some architectures. The segfault is repeatable on s390x. Valgrind shows an out-of-bounds array access on all architectures, although it doesn't necessarily lead to a segfault:
$ valgrind --leak-check=no --enable-debuginfod=yes --read-inline-info=yes --read-var-info=yes --track-origins=yes bin/papilo solve -a r -f /builddir/build/BUILD/papilo-2.2.0/check/instances/MIP/gt2.mps -o 21166 -p /builddir/build/BUILD/papilo-2.2.0/settings/default.set
==145== Memcheck, a memory error detector
==145== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==145== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info
==145== Command: bin/papilo solve -a r -f /builddir/build/BUILD/papilo-2.2.0/check/instances/MIP/gt2.mps -o 21166 -p /builddir/build/BUILD/papilo-2.2.0/settings/default.set
==145==
PaPILO version 2.2.0 [mode: optimized][Solvers: SCIP,SoPlex][GitHash: ]
Copyright (C) 2020-2023 Zuse Institute Berlin (ZIB)
External libraries:
Boost 1.83.0 (https://www.boost.org/)
TBB Thread building block https://github.com/oneapi-src/oneTBB developed by Intel
GMP 6.3.0 GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org)
SCIP 9.0.0 Mixed Integer Programming Solver developed at Zuse Institute Berlin (scip.zib.de) [GitHash: NoGitInfo]
SoPlex 7.0.0 Linear Programming Solver developed at Zuse Institute Berlin (soplex.zib.de) [GitHash: NoGitInfo]
reading took 2.72 seconds
Numerical Statistics:
Matrix range [1e+00,3e+03]
Objective range [1e+03,8e+03]
Bounds range [1e+00,2e+01]
RHS range [1e+00,6e+03]
Dynamism Variables: 3e+03
Dynamism Rows : 2e+02
starting presolve of problem /builddir/build/BUILD/papilo-2.2.0/check/instances/MIP/gt2.mps:
rows: 29
columns: 188
int. columns: 188
cont. columns: 0
nonzeros: 376
round 0 ( Trivial ): 0 del cols, 1 del rows, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 tsx applied, 0 tsx conflicts
round 1 ( Fast ): 15 del cols, 1 del rows, 16 chg bounds, 0 chg sides, 10 chg coeffs, 27 tsx applied, 0 tsx conflicts
round 2 ( Fast ): 15 del cols, 1 del rows, 26 chg bounds, 1 chg sides, 11 chg coeffs, 48 tsx applied, 0 tsx conflicts
==145== Invalid read of size 8
==145== at 0x48BAFA6: boost::multiprecision::backends::gmp_rational::gmp_rational(boost::multiprecision::backends::gmp_rational const&) (gmp.hpp:2387)
==145== by 0x4A071EE: UnknownInlinedFun (number.hpp:54)
==145== by 0x4A071EE: papilo::ParallelColDetection<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >::execute(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, papilo::ProblemUpdate<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, papilo::Num<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, papilo::Reductions<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >&, papilo::Timer const&, int&)::{lambda(int, int)#1}::operator()(int, int) const (ParallelColDetection.hpp:595)
==145== by 0x4A07848: UnknownInlinedFun (pdqsort.h:152)
==145== by 0x4A07848: UnknownInlinedFun (pdqsort.h:158)
==145== by 0x4A07848: void pdqsort_detail::pdqsort_loop<int*, papilo::ParallelColDetection<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >::execute(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, papilo::ProblemUpdate<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, papilo::Num<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, papilo::Reductions<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >&, papilo::Timer const&, int&)::{lambda(int, int)#1}, false>(int*, int*, papilo::ParallelColDetection<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >::execute(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, papilo::ProblemUpdate<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, papilo::Num<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, papilo::Reductions<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >&, papilo::Timer const&, int&)::{lambda(int, int)#1}, int, bool) (pdqsort.h:420)
==145== by 0x4A0875A: UnknownInlinedFun (pdqsort.h:502)
==145== by 0x4A0875A: papilo::ParallelColDetection<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >::execute(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, papilo::ProblemUpdate<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, papilo::Num<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, papilo::Reductions<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >&, papilo::Timer const&, int&) (ParallelColDetection.hpp:575)
==145== by 0x494EC94: UnknownInlinedFun (PresolveMethod.hpp:167)
==145== by 0x494EC94: UnknownInlinedFun (Presolve.hpp:1028)
==145== by 0x494EC94: UnknownInlinedFun (_utils.h:362)
==145== by 0x494EC94: UnknownInlinedFun (parallel_for.h:117)
==145== by 0x494EC94: UnknownInlinedFun (partitioner.h:513)
==145== by 0x494EC94: tbb::detail::d1::start_for<tbb::detail::d1::blocked_range<int>, papilo::Presolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >::run_presolvers(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, std::pair<int, int> const&, papilo::ProblemUpdate<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >&, bool&, papilo::Timer const&)::{lambda(tbb::detail::d1::blocked_range<int> const&)#1}, tbb::detail::d1::simple_partitioner const>::execute(tbb::detail::d1::execution_data&) (parallel_for.h:170)
==145== by 0x6374A8A: UnknownInlinedFun (task_dispatcher.h:323)
==145== by 0x6374A8A: UnknownInlinedFun (task_dispatcher.h:459)
==145== by 0x6374A8A: tbb::detail::r1::task_dispatcher::execute_and_wait(tbb::detail::d1::task*, tbb::detail::d1::wait_context&, tbb::detail::d1::task_group_context&) (task_dispatcher.cpp:168)
==145== by 0x49371EA: papilo::Presolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >::run_presolvers(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > const&, std::pair<int, int> const&, papilo::ProblemUpdate<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >&, bool&, papilo::Timer const&) (_task.h:191)
==145== by 0x49433FD: papilo::Presolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >::apply(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >&, bool)::{lambda()#1}::operator()() const (Presolve.hpp:557)
==145== by 0x494E8D8: tbb::detail::d1::task_arena_function<papilo::Presolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >::apply(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >&, bool)::{lambda()#1}, papilo::PresolveResult<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > >::operator()() const (task_arena.h:47)
==145== by 0x636056D: tbb::detail::r1::task_arena_impl::execute(tbb::detail::d1::task_arena_base&, tbb::detail::d1::delegate_base&) (arena.cpp:796)
==145== by 0x4A780BA: papilo::PresolveResult<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > tbb::detail::d1::task_arena::execute_impl<papilo::PresolveResult<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >, papilo::Presolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >::apply(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >&, bool)::{lambda()#1}>(papilo::Presolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >::apply(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >&, bool)::{lambda()#1}&) [clone .constprop.0] (task_arena.h:251)
==145== by 0x4933DC9: UnknownInlinedFun (task_arena.h:404)
==145== by 0x4933DC9: papilo::Presolve<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >::apply(papilo::Problem<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> >&, bool) (Presolve.hpp:979)
==145== Address 0x751f758 is 8 bytes after a block of size 48,128 alloc'd
==145== at 0x4842F95: operator new(unsigned long) (vg_replace_malloc.c:483)
==145== by 0x33AEE4: UnknownInlinedFun (new_allocator.h:151)
==145== by 0x33AEE4: UnknownInlinedFun (alloc_traits.h:475)
==145== by 0x33AEE4: UnknownInlinedFun (stl_vector.h:377)
==145== by 0x33AEE4: UnknownInlinedFun (stl_vector.h:1618)
==145== by 0x33AEE4: std::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>, std::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > >::operator=(std::vector<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1>, std::allocator<boost::multiprecision::number<boost::multiprecision::backends::gmp_rational, (boost::multiprecision::expression_template_option)1> > > const&) [clone .isra.0] (vector.tcc:238)
==145== by 0x154FCA: UnknownInlinedFun (SparseStorage.hpp:67)
==145== by 0x154FCA: UnknownInlinedFun (ConstraintMatrix.hpp:139)
==145== by 0x154FCA: UnknownInlinedFun (Problem.hpp:64)
==145== by 0x154FCA: UnknownInlinedFun (Wrappers.hpp:84)
==145== by 0x154FCA: main (papilo.cpp:216)
(followed by a few more with the same stacktraces).
Is the corrected dual solution, obtained for a presolved problem, a lower bound for the original problem? If the solution to the presolved problem is y, then let r = c-A^T*y be the reduced costs, where c and A are defined for the presolved problem. The corrected dual solution is obtained by evaluating the dual objective defined here: https://developers.google.com/optimization/lp/pdlp_math#dual
I am interested in obtaining a tight lower bound of the original problem. I do not believe PaPILO is able to save off the dual solution, so I cannot evaluate the corrected dual solution from the postsolved solution.
Building SCIPOptSuite from source with this recipe, and also when that recipe is updated to use version 8.0.0
, compilation fails on my end with the following two errors:
/[…]/scipoptsuite-8.0.0/papilo/src/papilo/presolvers/SimplifyInequalities.hpp:144:21: error: ‘gcd’ is not a member of ‘boost’
144 | return boost::gcd( static_cast<int64_t>( val1 ),
/[…]/scipoptsuite-8.0.0/papilo/src/papilo/presolvers/SimplifyInequalities.hpp:164:21: error: ‘gcd’ is not a member of ‘boost’
164 | return boost::gcd( static_cast<int64_t>( val1 * multiplier ),
This is on Arch Linux (rolling, last full update today).
Replacing both occurences of boost::gcd
with boost::integer::gcd
appears to resolve this issue for me (i.e. the build of papilo-core
succeeds, though there is now a new error in a different part of SCIPOptSuite).
Using Papilo 2.2.0 with only col singleton enabled I got an issue when reducing this problem.
It should be trivally reduced to 0 but instead it is trivially reduced to -10:
Minimize
obj: 100000 x1 + 100000 x2
Subject To
c1: - 0.000555555555555556 x1 + 0.000555555555555556 x2
- 0.000555555555555556 x3 + 0.000555555555555556 x4 = 0
Bounds
0 <= x3 <= 0.0001
0 <= x4 <= 0.0001
End
ttt1.zip
Attached is a zip file containing the lp file, mps file and params for papilo cli.
I can reproduced it with older versions of papilo (2.1.0) at least
Does PaPILO presolve change the objective function value between the original and presolved space? That is, if the PaPILO presolved model is solved to optimality, is the optimal objective value in the presolved space the same as that in the original space? If not, is there a simple way to transform the objective value in the presolved space to the objective value in the original space?
/usr/ports/math/papilo/work/papilo-2.1.2/src/papilo/interfaces/HighsInterface.hpp:97:13: error: no member named 'a_index_' in 'HighsLp'
model.a_index_.resize( consMatrix.getNnz() );
~~~~~ ^
/usr/ports/math/papilo/work/papilo-2.1.2/src/papilo/interfaces/HighsInterface.hpp:98:13: error: no member named 'a_value_' in 'HighsLp'
model.a_value_.resize( consMatrix.getNnz() );
~~~~~ ^
/usr/ports/math/papilo/work/papilo-2.1.2/src/papilo/interfaces/HighsInterface.hpp:99:13: error: no member named 'a_start_' in 'HighsLp'
model.a_start_.resize( ncols + 1 );
~~~~~ ^
/usr/ports/math/papilo/work/papilo-2.1.2/src/papilo/interfaces/HighsInterface.hpp:100:13: error: no member named 'a_start_' in 'HighsLp'
model.a_start_[ncols] = consMatrix.getNnz();
~~~~~ ^
/usr/ports/math/papilo/work/papilo-2.1.2/src/papilo/interfaces/HighsInterface.hpp:130:16: error: no member named 'a_start_' in 'HighsLp'
model.a_start_[i] = start;
~~~~~ ^
/usr/ports/math/papilo/work/papilo-2.1.2/src/papilo/interfaces/HighsInterface.hpp:134:19: error: no member named 'a_value_' in 'HighsLp'
model.a_value_[start + k] = double( colvals[k] );
~~~~~ ^
/usr/ports/math/papilo/work/papilo-2.1.2/src/papilo/interfaces/HighsInterface.hpp:135:19: error: no member named 'a_index_' in 'HighsLp'
model.a_index_[start + k] = colrows[k];
~~~~~ ^
/usr/ports/math/papilo/work/papilo-2.1.2/src/papilo/interfaces/HighsInterface.hpp:193:13: error: no member named 'a_index_' in 'HighsLp'
model.a_index_.resize( component.nnonz );
~~~~~ ^
/usr/ports/math/papilo/work/papilo-2.1.2/src/papilo/interfaces/HighsInterface.hpp:194:13: error: no member named 'a_value_' in 'HighsLp'
model.a_value_.resize( component.nnonz );
~~~~~ ^
/usr/ports/math/papilo/work/papilo-2.1.2/src/papilo/interfaces/HighsInterface.hpp:195:13: error: no member named 'a_start_' in 'HighsLp'
model.a_start_.resize( numcols + 1 );
~~~~~ ^
/usr/ports/math/papilo/work/papilo-2.1.2/src/papilo/interfaces/HighsInterface.hpp:196:13: error: no member named 'a_start_' in 'HighsLp'
model.a_start_[numcols] = component.nnonz;
~~~~~ ^
Version: 2.1.2
coin-or-highs-1.5.1
clang-15
FreeBSD 13.2
I recently performed some tests for Presolving on SCIP's master branch and observed a significant performance regression for Papilo from 2.1 to 2.3. In general, the Papilo plugin seems to be anywhere between 40 to 100% slower without finding many new reductions. I checked and SCIP does indeed spend this time in Papilo, so the issue lies within Papilo.
Below is an example for the relatively large instance proteindesign121pgb11p9
, where Papilo 2.1 takes 45 seconds but Papilo 2.3 takes 125 seconds.
Papilo 2.1:
SCIP version 10.0.0 [precision: 8 byte] [memory: block] [mode: optimized] [LP solver: Soplex 8.0.0] [GitHash: 80296625c3]
Copyright (c) 2002-2024 Zuse Institute Berlin (ZIB)
External libraries:
Readline 8.1 GNU library for command line editing (gnu.org/s/readline)
Soplex 8.0.0 Linear Programming Solver developed at Zuse Institute Berlin (soplex.zib.de) [GitHash: bd56f573]
CppAD 20180000.0 Algorithmic Differentiation of C++ algorithms developed by B. Bell (github.com/coin-or/CppAD)
ZLIB 1.2.11 General purpose compression library by J. Gailly and M. Adler (zlib.net)
TinyCThread 1.2 small portable implementation of the C11 threads API (tinycthread.github.io)
GMP 6.2.1 GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org)
ZIMPL 3.5.3 Zuse Institute Mathematical Programming Language developed by T. Koch (zimpl.zib.de)
AMPL/MP 690e9e7 AMPL .nl file reader library (github.com/ampl/mp)
PaPILO 2.1.1 parallel presolve for integer and linear optimization (github.com/scipopt/papilo) (built with TBB) [GitHash: 01fada2]
Nauty 2.8.8 Computing Graph Automorphism Groups by Brendan D. McKay (users.cecs.anu.edu.au/~bdm/nauty)
sassy 1.1 Symmetry preprocessor by Markus Anders (github.com/markusa4/sassy)
Ipopt 3.14.11 Interior Point Optimizer developed by A. Waechter et.al. (github.com/coin-or/Ipopt)
original problem has 132672 variables (132594 bin, 78 int, 0 impl, 0 cont) and 254 constraints
254 constraints of type <linear>
Reading Time: 0.21
LP Solver <Soplex 8.0.0>: barrier convergence tolerance cannot be set -- tolerance of SCIP and LP solver may differ
LP Solver <Soplex 8.0.0>: fastmip setting not available -- SCIP parameter has no effect
LP Solver <Soplex 8.0.0>: number of threads settings not available -- SCIP parameter has no effect
transformed problem has 132672 variables (132594 bin, 78 int, 0 impl, 0 cont) and 254 constraints
254 constraints of type <linear>
original problem has 524690 active (1.557%) nonzeros and 524690 (1.557%) check nonzeros
presolving:
(round 1, fast) 1 del vars, 0 del conss, 98 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 187 impls, 2358 clqs
(round 2, fast) 1 del vars, 0 del conss, 98 add conss, 0 chg bounds, 90107 chg sides, 104416 chg coeffs, 0 upgd conss, 187 impls, 2358 clqs
(7.8s) running MILP presolver
(53.6s) MILP presolver (5 rounds): 2 aggregations, 50153 fixings, 64 bound changes
(round 3, medium) 50156 del vars, 254 del conss, 350 add conss, 64 chg bounds, 90107 chg sides, 104416 chg coeffs, 0 upgd conss, 187 impls, 297 clqs
(round 4, fast) 50165 del vars, 303 del conss, 445 add conss, 64 chg bounds, 90145 chg sides, 133992 chg coeffs, 0 upgd conss, 227 impls, 3085 clqs
(round 5, fast) 50165 del vars, 309 del conss, 445 add conss, 64 chg bounds, 142048 chg sides, 194622 chg coeffs, 0 upgd conss, 227 impls, 3085 clqs
(round 6, exhaustive) 50165 del vars, 387 del conss, 445 add conss, 64 chg bounds, 142116 chg sides, 194622 chg coeffs, 0 upgd conss, 227 impls, 3085 clqs
(round 7, fast) 50165 del vars, 387 del conss, 446 add conss, 64 chg bounds, 142116 chg sides, 194622 chg coeffs, 0 upgd conss, 227 impls, 3085 clqs
(round 8, fast) 50165 del vars, 387 del conss, 446 add conss, 64 chg bounds, 142117 chg sides, 194623 chg coeffs, 0 upgd conss, 227 impls, 3085 clqs
(round 9, exhaustive) 50165 del vars, 388 del conss, 446 add conss, 64 chg bounds, 142117 chg sides, 194623 chg coeffs, 0 upgd conss, 227 impls, 3085 clqs
(round 10, exhaustive) 50165 del vars, 388 del conss, 446 add conss, 64 chg bounds, 142117 chg sides, 194623 chg coeffs, 67 upgd conss, 227 impls, 3085 clqs
(56.1s) sparsify aborted: 14974/325192 (4.6%) nonzeros canceled - in total 14974 canceled nonzeros, 15682 changed coefficients, 0 added nonzeros
(round 11, exhaustive) 50165 del vars, 388 del conss, 446 add conss, 64 chg bounds, 142117 chg sides, 210305 chg coeffs, 67 upgd conss, 229 impls, 3085 clqs
(round 12, fast) 50171 del vars, 394 del conss, 450 add conss, 78 chg bounds, 142117 chg sides, 210305 chg coeffs, 67 upgd conss, 229 impls, 3085 clqs
(round 13, fast) 50171 del vars, 400 del conss, 450 add conss, 78 chg bounds, 142308 chg sides, 210496 chg coeffs, 67 upgd conss, 229 impls, 3085 clqs
(round 14, medium) 50179 del vars, 400 del conss, 450 add conss, 78 chg bounds, 142316 chg sides, 210504 chg coeffs, 67 upgd conss, 229 impls, 3085 clqs
(round 15, fast) 50179 del vars, 400 del conss, 450 add conss, 78 chg bounds, 142316 chg sides, 212261 chg coeffs, 67 upgd conss, 229 impls, 3085 clqs
(round 16, exhaustive) 50179 del vars, 401 del conss, 450 add conss, 78 chg bounds, 142317 chg sides, 212261 chg coeffs, 67 upgd conss, 229 impls, 3085 clqs
(58.5s) probing: 100/82433 (0.1%) - 0 fixings, 0 aggregations, 2314814 implications, 0 bound changes
(60.7s) probing: 200/82433 (0.2%) - 0 fixings, 0 aggregations, 4661844 implications, 0 bound changes
(62.9s) probing: 300/82433 (0.4%) - 0 fixings, 0 aggregations, 6952610 implications, 0 bound changes
(65.2s) probing: 400/82433 (0.5%) - 0 fixings, 0 aggregations, 9318092 implications, 0 bound changes
(67.4s) probing: 500/82433 (0.6%) - 0 fixings, 0 aggregations, 11665774 implications, 0 bound changes
(69.7s) probing: 600/82433 (0.7%) - 0 fixings, 0 aggregations, 14080957 implications, 0 bound changes
(72.0s) probing: 700/82433 (0.8%) - 0 fixings, 0 aggregations, 16425770 implications, 0 bound changes
(74.0s) probing: 800/82433 (1.0%) - 0 fixings, 0 aggregations, 18390246 implications, 0 bound changes
(76.0s) probing: 900/82433 (1.1%) - 0 fixings, 0 aggregations, 20195635 implications, 0 bound changes
(77.8s) probing: 1000/82433 (1.2%) - 0 fixings, 0 aggregations, 21772901 implications, 0 bound changes
(77.8s) probing: 1001/82433 (1.2%) - 0 fixings, 0 aggregations, 21783968 implications, 0 bound changes
(77.8s) probing aborted: 1000/1000 successive useless probings
(77.9s) symmetry computation started: requiring (bin +, int +, cont +), (fixed: bin -, int -, cont -)
(77.9s) no symmetry present (symcode time: 0.01)
clique table cleanup detected 0 bound changes
presolved problem has 388294 active (1.55346%) nonzeros and 310198 (1.24102%) check nonzeros
presolving (17 rounds: 17 fast, 8 medium, 6 exhaustive):
50179 deleted vars, 401 deleted constraints, 450 added constraints, 78 tightened bounds, 0 added holes, 142317 changed sides, 212261 changed coefficients
17456 implications, 3086 cliques
presolved problem has 82493 variables (82433 bin, 12 int, 48 impl, 0 cont) and 303 constraints
66 constraints of type <setppc>
237 constraints of type <linear>
transformed objective value is always integral (scale: 1)
Presolving Time: 77.88
SCIP Status : problem is presolved
Total Time : 78.18
solving : 77.97
presolving : 77.88 (included in solving)
reading : 0.21
copying : 0.00 (0 times copied the problem)
Original Problem :
Problem name : proteindesign121pgb11p9
Variables : 132672 (132594 binary, 78 integer, 0 implicit integer, 0 continuous)
Constraints : 254 initial, 254 maximal
Objective : minimize, 1 non-zeros (abs.min = 1, abs.max = 1)
Presolved Problem :
Problem name : t_proteindesign121pgb11p9
Variables : 82493 (82433 binary, 12 integer, 48 implicit integer, 0 continuous)
Constraints : 303 initial, 303 maximal
Objective : minimize, 678 non-zeros (abs.min = 1, abs.max = 1104)
Nonzeros : 388294 constraint, 1049380 clique table
Presolvers : ExecTime SetupTime Calls FixedVars AggrVars ChgTypes ChgBounds AddHoles DelCons AddCons ChgSides ChgCoefs
boundshift : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
convertinttobin : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
domcol : 0.07 0.00 2 0 0 0 0 0 0 0 0 0
dualagg : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
dualcomp : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
dualinfer : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
dualsparsify : 0.05 0.00 1 0 0 0 0 0 0 0 0 0
gateextraction : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
implics : 0.01 0.00 8 0 0 0 0 0 0 0 0 0
inttobinary : 0.00 0.00 17 0 0 0 0 0 0 0 0 0
milp : 45.87 0.00 1 50153 2 0 64 0 254 252 0 0
qpkktref : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
redvub : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
sparsify : 0.17 0.00 2 0 0 0 0 0 0 0 0 15682
stuffing : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
trivial : 0.05 0.00 17 0 0 0 0 0 0 0 0 0
tworowbnd : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
dualfix : 0.04 0.00 17 0 0 0 0 0 0 0 0 0
genvbounds : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
probing : 21.56 0.00 1 0 0 0 0 0 0 0 0 0
pseudoobj : 0.00 0.00 1 0 0 0 0 0 0 0 0 0
symmetry : 0.06 0.00 1 0 0 0 0 0 0 0 0 0
vbounds : 0.20 0.00 2 0 0 0 0 0 0 0 0 0
varbound : 0.00 0.00 4 0 0 0 0 0 1 0 0 0
setppc : 0.06 0.00 14 0 8 0 0 0 0 0 8 8
linear : 9.67 0.02 23 1 15 0 14 0 146 198 142309 196571
benders : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
components : 0.04 0.00 1 0 0 0 0 0 0 0 0 0
root node : - - - 0 - - 0 - - - - -
Constraints : Number MaxNumber #Separate #Propagate #EnfoLP #EnfoRelax #EnfoPS #Check #ResProp Cutoffs DomReds Cuts Applied Conss Children
benderslp : 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0
integral : 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0
setppc : 66 66 0 4999 0 0 0 0 0 0 0 0 0 0 0
linear : 237 237 0 4999 0 0 0 3 0 0 0 0 0 0 0
benders : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
fixedvar : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
countsols : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
components : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Constraint Timings : TotalTime SetupTime Separate Propagate EnfoLP EnfoPS EnfoRelax Check ResProp SB-Prop
benderslp : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
integral : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
setppc : 0.44 0.00 0.00 0.44 0.00 0.00 0.00 0.00 0.00 0.00
linear : 8.39 0.02 0.00 8.37 0.00 0.00 0.00 0.00 0.00 0.00
benders : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
fixedvar : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
countsols : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
components : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Propagators : #Propagate #ResProp Cutoffs DomReds
dualfix : 0 0 0 0
genvbounds : 0 0 0 0
nlobbt : 0 0 0 0
obbt : 0 0 0 0
probing : 0 0 0 0
pseudoobj : 0 0 0 0
redcost : 0 0 0 0
rootredcost : 0 0 0 0
symmetry : 0 0 0 0
vbounds : 0 0 0 0
Propagator Timings : TotalTime SetupTime Presolve Propagate ResProp SB-Prop
dualfix : 0.04 0.00 0.04 0.00 0.00 0.00
genvbounds : 0.00 0.00 0.00 0.00 0.00 0.00
nlobbt : 0.00 0.00 0.00 0.00 0.00 0.00
obbt : 0.00 0.00 0.00 0.00 0.00 0.00
probing : 21.56 0.00 21.56 0.00 0.00 0.00
pseudoobj : 0.00 0.00 0.00 0.00 0.00 0.00
redcost : 0.00 0.00 0.00 0.00 0.00 0.00
rootredcost : 0.00 0.00 0.00 0.00 0.00 0.00
symmetry : 0.06 0.00 0.06 0.00 0.00 0.00
vbounds : 0.20 0.00 0.20 0.00 0.00 0.00
Conflict Analysis : Time Calls Success DomReds Conflicts Literals Reconvs ReconvLits Dualrays Nonzeros LP Iters (pool size: [--,--])
propagation : 0.00 0 0 - 0 0.0 0 0.0 - - -
infeasible LP : 0.00 0 0 - 0 0.0 0 0.0 0 0.0 0
bound exceed. LP : 0.00 0 0 - 0 0.0 0 0.0 0 0.0 0
strong branching : 0.00 0 0 - 0 0.0 0 0.0 - - 0
pseudo solution : 0.00 0 0 - 0 0.0 0 0.0 - - -
applied globally : 0.00 - - 0 0 0.0 - - 0 - -
applied locally : - - - 0 0 0.0 - - 0 - -
Primal Heuristics : ExecTime SetupTime Calls Found Best
LP solutions : 0.00 - - 0 0
relax solutions : 0.00 - - 0 0
pseudo solutions : 0.00 - - 0 0
strong branching : 0.00 - - 0 0
actconsdiving : 0.00 0.00 0 0 0
adaptivediving : 0.00 0.00 0 0 0
alns : 0.00 0.00 0 0 0
bound : 0.00 0.00 0 0 0
clique : 0.00 0.00 0 0 0
coefdiving : 0.00 0.00 0 0 0
completesol : 0.00 0.00 0 0 0
conflictdiving : 0.00 0.00 0 0 0
crossover : 0.00 0.00 0 0 0
dins : 0.00 0.00 0 0 0
distributiondivin: 0.00 0.00 0 0 0
dps : 0.00 0.00 0 0 0
dualval : 0.00 0.00 0 0 0
farkasdiving : 0.00 0.00 0 0 0
feaspump : 0.00 0.00 0 0 0
fixandinfer : 0.00 0.00 0 0 0
fracdiving : 0.00 0.00 0 0 0
gins : 0.00 0.00 0 0 0
guideddiving : 0.00 0.00 0 0 0
indicator : 0.00 0.00 0 0 0
indicatordiving : 0.00 0.00 0 0 0
intdiving : 0.00 0.00 0 0 0
intshifting : 0.00 0.00 0 0 0
linesearchdiving : 0.00 0.00 0 0 0
localbranching : 0.00 0.00 0 0 0
locks : 0.00 0.00 0 0 0
lpface : 0.00 0.00 0 0 0
mpec : 0.00 0.00 0 0 0
multistart : 0.00 0.00 0 0 0
mutation : 0.00 0.00 0 0 0
nlpdiving : 0.00 0.00 0 0 0
objpscostdiving : 0.00 0.00 0 0 0
octane : 0.00 0.00 0 0 0
ofins : 0.00 0.00 0 0 0
oneopt : 0.00 0.00 0 0 0
padm : 0.00 0.00 0 0 0
proximity : 0.00 0.00 0 0 0
pscostdiving : 0.00 0.00 0 0 0
randrounding : 0.00 0.00 0 0 0
rens : 0.00 0.00 0 0 0
reoptsols : 0.00 0.00 0 0 0
repair : 0.00 0.00 0 0 0
rins : 0.00 0.00 0 0 0
rootsoldiving : 0.00 0.00 0 0 0
rounding : 0.00 0.00 0 0 0
scheduler : 0.00 0.00 0 0 0
shiftandpropagate: 0.00 0.00 0 0 0
shifting : 0.00 0.00 0 0 0
simplerounding : 0.00 0.00 0 0 0
subnlp : 0.00 0.00 0 0 0
trivial : 0.01 0.00 1 0 0
trivialnegation : 0.00 0.00 0 0 0
trustregion : 0.00 0.00 0 0 0
trysol : 0.00 0.00 0 0 0
twoopt : 0.00 0.00 0 0 0
undercover : 0.00 0.00 0 0 0
vbounds : 0.00 0.00 0 0 0
veclendiving : 0.00 0.00 0 0 0
zeroobj : 0.00 0.00 0 0 0
zirounding : 0.00 0.00 0 0 0
other solutions : - - - 0 -
LNS (Scheduler) : Calls SetupTime SolveTime SolveNodes Sols Best Exp3 Exp3-IX EpsGreedy UCB TgtFixRate Opt Inf Node Stal Sol Usr Othr Actv
rens : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
rins : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
mutation : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
localbranching : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
crossover : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
proximity : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
zeroobjective : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
dins : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
trustregion : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
Solution :
Solutions found : 0 (0 improvements)
Primal Bound : -
Dual Bound : +0.00000000000000e+00
Gap : infinite
Integrals : Total Avg%
primal-dual : 7797.00 100.00
primal-ref : - - (not evaluated)
dual-ref : - - (not evaluated) SCIP, and observed a significant performance regression from Papilo 2.1 to Papilo 2.3.
Papilo 2.3:
SCIP version 10.0.0 [precision: 8 byte] [memory: block] [mode: optimized] [LP solver: Soplex 8.0.0] [GitHash: 051425989d]
Copyright (c) 2002-2024 Zuse Institute Berlin (ZIB)
External libraries:
Readline 8.1 GNU library for command line editing (gnu.org/s/readline)
Soplex 8.0.0 Linear Programming Solver developed at Zuse Institute Berlin (soplex.zib.de) [GitHash: bd56f573]
CppAD 20180000.0 Algorithmic Differentiation of C++ algorithms developed by B. Bell (github.com/coin-or/CppAD)
ZLIB 1.2.11 General purpose compression library by J. Gailly and M. Adler (zlib.net)
TinyCThread 1.2 small portable implementation of the C11 threads API (tinycthread.github.io)
GMP 6.2.1 GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org)
ZIMPL 3.5.3 Zuse Institute Mathematical Programming Language developed by T. Koch (zimpl.zib.de)
AMPL/MP 690e9e7 AMPL .nl file reader library (github.com/ampl/mp)
PaPILO 2.3.1 parallel presolve for integer and linear optimization (github.com/scipopt/papilo) (built with TBB) [GitHash: a0b3f4e1]
Nauty 2.8.8 Computing Graph Automorphism Groups by Brendan D. McKay (users.cecs.anu.edu.au/~bdm/nauty)
sassy 1.1 Symmetry preprocessor by Markus Anders (github.com/markusa4/sassy)
Ipopt 3.14.11 Interior Point Optimizer developed by A. Waechter et.al. (github.com/coin-or/Ipopt)
user parameter file <scip.set> not found - using default parameters
SCIP> read /home/rolf/phd/data/collection/proteindesign121pgb11p9.mps.gz
read problem </home/rolf/phd/data/collection/proteindesign121pgb11p9.mps.gz>
============
original problem has 132672 variables (132594 bin, 78 int, 0 impl, 0 cont) and 254 constraints
SCIP> presolve
presolving:
(round 1, fast) 1 del vars, 0 del conss, 98 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 187 impls, 2358 clqs
(round 2, fast) 1 del vars, 0 del conss, 98 add conss, 0 chg bounds, 90107 chg sides, 104416 chg coeffs, 0 upgd conss, 187 impls, 2358 clqs
(7.8s) running MILP presolver
(133.2s) MILP presolver (5 rounds): 2 aggregations, 50153 fixings, 64 bound changes
(round 3, medium) 50156 del vars, 254 del conss, 350 add conss, 64 chg bounds, 90107 chg sides, 104416 chg coeffs, 0 upgd conss, 187 impls, 297 clqs
(round 4, fast) 50165 del vars, 303 del conss, 445 add conss, 64 chg bounds, 90145 chg sides, 133992 chg coeffs, 0 upgd conss, 227 impls, 3085 clqs
(round 5, fast) 50165 del vars, 309 del conss, 445 add conss, 64 chg bounds, 142048 chg sides, 194622 chg coeffs, 0 upgd conss, 227 impls, 3085 clqs
(round 6, exhaustive) 50165 del vars, 387 del conss, 445 add conss, 64 chg bounds, 142116 chg sides, 194622 chg coeffs, 0 upgd conss, 227 impls, 3085 clqs
(round 7, fast) 50165 del vars, 387 del conss, 446 add conss, 64 chg bounds, 142116 chg sides, 194622 chg coeffs, 0 upgd conss, 227 impls, 3085 clqs
(round 8, fast) 50165 del vars, 387 del conss, 446 add conss, 64 chg bounds, 142117 chg sides, 194623 chg coeffs, 0 upgd conss, 227 impls, 3085 clqs
(round 9, exhaustive) 50165 del vars, 388 del conss, 446 add conss, 64 chg bounds, 142117 chg sides, 194623 chg coeffs, 0 upgd conss, 227 impls, 3085 clqs
(round 10, exhaustive) 50165 del vars, 388 del conss, 446 add conss, 64 chg bounds, 142117 chg sides, 194623 chg coeffs, 67 upgd conss, 227 impls, 3085 clqs
(136.0s) sparsify aborted: 14974/325192 (4.6%) nonzeros canceled - in total 14974 canceled nonzeros, 15682 changed coefficients, 0 added nonzeros
(round 11, exhaustive) 50165 del vars, 388 del conss, 446 add conss, 64 chg bounds, 142117 chg sides, 210305 chg coeffs, 67 upgd conss, 229 impls, 3085 clqs
(round 12, fast) 50171 del vars, 394 del conss, 450 add conss, 78 chg bounds, 142117 chg sides, 210305 chg coeffs, 67 upgd conss, 229 impls, 3085 clqs
(round 13, fast) 50171 del vars, 400 del conss, 450 add conss, 78 chg bounds, 142308 chg sides, 210496 chg coeffs, 67 upgd conss, 229 impls, 3085 clqs
(round 14, medium) 50179 del vars, 400 del conss, 450 add conss, 78 chg bounds, 142316 chg sides, 210504 chg coeffs, 67 upgd conss, 229 impls, 3085 clqs
(round 15, fast) 50179 del vars, 400 del conss, 450 add conss, 78 chg bounds, 142316 chg sides, 212261 chg coeffs, 67 upgd conss, 229 impls, 3085 clqs
(round 16, exhaustive) 50179 del vars, 401 del conss, 450 add conss, 78 chg bounds, 142317 chg sides, 212261 chg coeffs, 67 upgd conss, 229 impls, 3085 clqs
(166.9s) probing: 1000/82433 (1.2%) - 0 fixings, 0 aggregations, 21786924 implications, 0 bound changes
(166.9s) probing: 1001/82433 (1.2%) - 0 fixings, 0 aggregations, 21800269 implications, 0 bound changes
(166.9s) probing aborted: 1000/1000 successive useless probings
(167.0s) symmetry computation started: requiring (bin +, int +, cont +), (fixed: bin -, int -, cont -)
(167.1s) no symmetry present (symcode time: 0.01)
presolving (17 rounds: 17 fast, 8 medium, 6 exhaustive):
50179 deleted vars, 401 deleted constraints, 450 added constraints, 78 tightened bounds, 0 added holes, 142317 changed sides, 212261 changed coefficients
17473 implications, 3086 cliques
presolved problem has 82493 variables (82433 bin, 12 int, 48 impl, 0 cont) and 303 constraints
66 constraints of type <setppc>
237 constraints of type <linear>
transformed objective value is always integral (scale: 1)
Presolving Time: 166.97
SCIP> display statistics
SCIP Status : problem is presolved
Total Time : 167.40
solving : 167.14
presolving : 166.97 (included in solving)
reading : 0.26
copying : 0.00 (0 times copied the problem)
Original Problem :
Problem name : proteindesign121pgb11p9
Variables : 132672 (132594 binary, 78 integer, 0 implicit integer, 0 continuous)
Constraints : 254 initial, 254 maximal
Objective : minimize, 1 non-zeros (abs.min = 1, abs.max = 1)
Presolved Problem :
Problem name : t_proteindesign121pgb11p9
Variables : 82493 (82433 binary, 12 integer, 48 implicit integer, 0 continuous)
Constraints : 303 initial, 303 maximal
Objective : minimize, 678 non-zeros (abs.min = 1, abs.max = 1104)
Nonzeros : 388294 constraint, 1049380 clique table
Presolvers : ExecTime SetupTime Calls FixedVars AggrVars ChgTypes ChgBounds AddHoles DelCons AddCons ChgSides ChgCoefs
boundshift : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
convertinttobin : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
domcol : 0.10 0.00 2 0 0 0 0 0 0 0 0 0
dualagg : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
dualcomp : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
dualinfer : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
dualsparsify : 0.08 0.00 1 0 0 0 0 0 0 0 0 0
gateextraction : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
implics : 0.02 0.00 8 0 0 0 0 0 0 0 0 0
inttobinary : 0.00 0.00 17 0 0 0 0 0 0 0 0 0
milp : 125.55 0.00 1 50153 2 0 64 0 254 252 0 0
qpkktref : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
redvub : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
sparsify : 0.22 0.00 2 0 0 0 0 0 0 0 0 15682
stuffing : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
trivial : 0.09 0.00 17 0 0 0 0 0 0 0 0 0
tworowbnd : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
dualfix : 0.06 0.00 17 0 0 0 0 0 0 0 0 0
genvbounds : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
probing : 30.61 0.00 1 0 0 0 0 0 0 0 0 0
pseudoobj : 0.00 0.00 1 0 0 0 0 0 0 0 0 0
symmetry : 0.09 0.00 1 0 0 0 0 0 0 0 0 0
vbounds : 0.22 0.00 2 0 0 0 0 0 0 0 0 0
varbound : 0.00 0.00 4 0 0 0 0 0 1 0 0 0
setppc : 0.09 0.00 14 0 8 0 0 0 0 0 8 8
linear : 9.74 0.03 23 1 15 0 14 0 146 198 142309 196571
benders : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
components : 0.05 0.00 1 0 0 0 0 0 0 0 0 0
root node : - - - 0 - - 0 - - - - -
Constraints : Number MaxNumber #Separate #Propagate #EnfoLP #EnfoRelax #EnfoPS #Check #ResProp Cutoffs DomReds Cuts Applied Conss Children
benderslp : 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0
integral : 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0
setppc : 66 66 0 4998 0 0 0 0 0 0 0 0 0 0 0
linear : 237 237 0 4998 0 0 0 3 0 0 0 0 0 0 0
benders : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
fixedvar : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
countsols : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
components : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Constraint Timings : TotalTime SetupTime Separate Propagate EnfoLP EnfoPS EnfoRelax Check ResProp SB-Prop
benderslp : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
integral : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
setppc : 0.57 0.00 0.00 0.57 0.00 0.00 0.00 0.00 0.00 0.00
linear : 11.44 0.03 0.00 11.41 0.00 0.00 0.00 0.00 0.00 0.00
benders : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
fixedvar : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
countsols : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
components : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Propagators : #Propagate #ResProp Cutoffs DomReds
dualfix : 0 0 0 0
genvbounds : 0 0 0 0
nlobbt : 0 0 0 0
obbt : 0 0 0 0
probing : 0 0 0 0
pseudoobj : 0 0 0 0
redcost : 0 0 0 0
rootredcost : 0 0 0 0
symmetry : 0 0 0 0
vbounds : 0 0 0 0
Propagator Timings : TotalTime SetupTime Presolve Propagate ResProp SB-Prop
dualfix : 0.06 0.00 0.06 0.00 0.00 0.00
genvbounds : 0.00 0.00 0.00 0.00 0.00 0.00
nlobbt : 0.00 0.00 0.00 0.00 0.00 0.00
obbt : 0.00 0.00 0.00 0.00 0.00 0.00
probing : 30.61 0.00 30.61 0.00 0.00 0.00
pseudoobj : 0.00 0.00 0.00 0.00 0.00 0.00
redcost : 0.00 0.00 0.00 0.00 0.00 0.00
rootredcost : 0.00 0.00 0.00 0.00 0.00 0.00
symmetry : 0.09 0.00 0.09 0.00 0.00 0.00
vbounds : 0.22 0.00 0.22 0.00 0.00 0.00
Conflict Analysis : Time Calls Success DomReds Conflicts Literals Reconvs ReconvLits Dualrays Nonzeros LP Iters (pool size: [--,--])
propagation : 0.00 0 0 - 0 0.0 0 0.0 - - -
infeasible LP : 0.00 0 0 - 0 0.0 0 0.0 0 0.0 0
bound exceed. LP : 0.00 0 0 - 0 0.0 0 0.0 0 0.0 0
strong branching : 0.00 0 0 - 0 0.0 0 0.0 - - 0
pseudo solution : 0.00 0 0 - 0 0.0 0 0.0 - - -
applied globally : 0.00 - - 0 0 0.0 - - 0 - -
applied locally : - - - 0 0 0.0 - - 0 - -
Primal Heuristics : ExecTime SetupTime Calls Found Best
LP solutions : 0.00 - - 0 0
relax solutions : 0.00 - - 0 0
pseudo solutions : 0.00 - - 0 0
strong branching : 0.00 - - 0 0
actconsdiving : 0.00 0.00 0 0 0
adaptivediving : 0.00 0.00 0 0 0
alns : 0.00 0.00 0 0 0
bound : 0.00 0.00 0 0 0
clique : 0.00 0.00 0 0 0
coefdiving : 0.00 0.00 0 0 0
completesol : 0.00 0.00 0 0 0
conflictdiving : 0.00 0.00 0 0 0
crossover : 0.00 0.00 0 0 0
dins : 0.00 0.00 0 0 0
distributiondivin: 0.00 0.00 0 0 0
dps : 0.00 0.00 0 0 0
dualval : 0.00 0.00 0 0 0
farkasdiving : 0.00 0.00 0 0 0
feaspump : 0.00 0.00 0 0 0
fixandinfer : 0.00 0.00 0 0 0
fracdiving : 0.00 0.00 0 0 0
gins : 0.00 0.00 0 0 0
guideddiving : 0.00 0.00 0 0 0
indicator : 0.00 0.00 0 0 0
indicatordiving : 0.00 0.00 0 0 0
intdiving : 0.00 0.00 0 0 0
intshifting : 0.00 0.00 0 0 0
linesearchdiving : 0.00 0.00 0 0 0
localbranching : 0.00 0.00 0 0 0
locks : 0.00 0.00 0 0 0
lpface : 0.00 0.00 0 0 0
mpec : 0.00 0.00 0 0 0
multistart : 0.00 0.00 0 0 0
mutation : 0.00 0.00 0 0 0
nlpdiving : 0.00 0.00 0 0 0
objpscostdiving : 0.00 0.00 0 0 0
octane : 0.00 0.00 0 0 0
ofins : 0.00 0.00 0 0 0
oneopt : 0.00 0.00 0 0 0
padm : 0.00 0.00 0 0 0
proximity : 0.00 0.00 0 0 0
pscostdiving : 0.00 0.00 0 0 0
randrounding : 0.00 0.00 0 0 0
rens : 0.00 0.00 0 0 0
reoptsols : 0.00 0.00 0 0 0
repair : 0.00 0.00 0 0 0
rins : 0.00 0.00 0 0 0
rootsoldiving : 0.00 0.00 0 0 0
rounding : 0.00 0.00 0 0 0
scheduler : 0.00 0.00 0 0 0
shiftandpropagate: 0.00 0.00 0 0 0
shifting : 0.00 0.00 0 0 0
simplerounding : 0.00 0.00 0 0 0
subnlp : 0.00 0.00 0 0 0
trivial : 0.02 0.00 1 0 0
trivialnegation : 0.00 0.00 0 0 0
trustregion : 0.00 0.00 0 0 0
trysol : 0.00 0.00 0 0 0
twoopt : 0.00 0.00 0 0 0
undercover : 0.00 0.00 0 0 0
vbounds : 0.00 0.00 0 0 0
veclendiving : 0.00 0.00 0 0 0
zeroobj : 0.00 0.00 0 0 0
zirounding : 0.00 0.00 0 0 0
other solutions : - - - 0 -
LNS (Scheduler) : Calls SetupTime SolveTime SolveNodes Sols Best Exp3 Exp3-IX EpsGreedy UCB TgtFixRate Opt Inf Node Stal Sol Usr Othr Actv
rens : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
rins : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
mutation : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
localbranching : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
crossover : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
proximity : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
zeroobjective : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
dins : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
trustregion : 0 0.00 0.00 0 0 0 0.00000 0.00000 -1.00000 1.00000 0.900 0 0 0 0 0 0 0 1
Solution :
Solutions found : 0 (0 improvements)
Primal Bound : -
Dual Bound : +0.00000000000000e+00
Gap : infinite
Integrals : Total Avg%
primal-dual : 16713.53 100.00
primal-ref : - - (not evaluated)
dual-ref : - - (not evaluated)
SCIP> quit
While trying to presolve instances from the MIPLIB collection and found that instance supportcase21i
https://miplib.zib.de/instance_details_supportcase21i.html
with command papilo presolve -f supportcase21i.mps
returns the error unknown bound type INDICATORS
From these references it seems that this is not part of the standard mps format and I don't need the exact structure of the problem instance, so ignoring the INDICATORS section in the mps file would work for me, but I was wondering if Papilo has a better way of handling this.
https://www-eio.upc.es/lceio/manuals/cplex-11/html/reffileformatscplex/reffileformatscplex15.html
https://documentation.aimms.com/platform/solvers/cplex.html#cplex-indicator-constraints
Thanks in advance!
Full output:
PaPILO version 2.1.2 [mode: optimized][Solvers: SCIP,SoPlex][GitHash: 2fe2543]
Copyright (C) 2020-2022 Zuse Institute Berlin (ZIB)
External libraries:
Boost 1.76.0 (https://www.boost.org/)
TBB Thread building block https://github.com/oneapi-src/oneTBB developed by Intel
GMP 6.2.0 GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org)
SCIP 8.0.3 Mixed Integer Programming Solver developed at Zuse Institute Berlin (scip.zib.de) [GitHash: 62fab8a2e3]
SoPlex 6.0.3 Linear Programming Solver developed at Zuse Institute Berlin (soplex.zib.de) [GitHash: f900e3d0]
unknown bound type INDICATORS
Hi , if I wish to use Papilo simply as library, do I need to download the source and then build and make? or just include the head files directly?
Thanks :)
Perhaps the program duplicates
could be renamed to papilo_duplicates
which would make it easier to distinguish from other similarly named programs.
I am dealing with a problem on SCIP 8.0.3, but it can't get the optimal value, which turns out infeasible. I permutate constraints and variables, then get the optimal value.
What may cause it to happen? Are there any suggestions to prevent this error?
Ubuntu 20.10. Running cmake ..
all fine but I noticed boost/iostreams,serialization,program_options were not found. I installed them, reran cmake. Then ran it with -DCMAKE_BUILD_TYPE=Release
. Still successful. Then ran cmake.. -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=on
and got the below error.
Strangely, wiping out the build directory, and even re-cloning papilo and deinstalling the optional boost components did not help.
...
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake (found version "1.74.0") found components: iostreams serialization program_options
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_ZLIB
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_ZLIB - Success
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_BZIP2
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_BZIP2 - Success
-- Linking solvers: SCIP
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake (found version "1.74.0") found components: serialization program_options iostreams
-- Configuring done
CMake Error at binaries/CMakeLists.txt:53 (add_executable):
Target "papilo-executable" links to target "ZLIB::ZLIB" but the target was
not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Hi, Thank you for your great work!
I was wondering if there is any plan to support the Python interface, such that one could easily invoke your algorithms for fast prototyping.
If PaPILO is built with OR-Tools and the solve command is used to solve an LP (papilo solve -f problem.mps -l problem.sol), does PaPILO write the presolved problem to an MPS file and then call GLOP or PDLP on the presolved MPS file? From the command line, how does one select whether solve uses GLOP vs PDLP?
If I have a solution (or partial solution) to the original problem defined in a .sol file, is there a way to construct the corresponding solution (or partial solution) in the presolved reduced space?
This might be useful if a good solution (or partial solution) to the original problem is known (for example from a metaheuristic) and I want to provide this initial feasible solution (or partial solution) and the presolved reduced problem to the solver (e.g., Gurobi).
What is the correct way to account for an available dual solution when manually solving the presolved instance? I'm writing a .mps
file, calling presolve
, and then solve the resulting problem (using JuMP -> HiGHS
). I then write a .sol
file with the extracted (primal) values of all variables
x 0.3
...
z -1.2
and call postsolve
on that, which gives me
=obj= 1234.00
x ... obj(0.0)
...
I assume the obj(...)
is "only" the objective coefficient (based on an information from SCIP: (obj: <objective coefficient of variable>)
). I've provided parameters using -p lp_presolvers_with_basis.set
.
When building without GMP (-DGMP=OFF
), I get the following error:
scipoptsuite-9.0.1/papilo/src/papilo/misc/MultiPrecision.hpp:142:35: error: #if with no expression
142 | #if PAPILO_SERIALIZATION_AVAILABLE
| ^
I assume there should be an #ifdef
on the following line, at least that fixes the build for me.
papilo/src/papilo/misc/MultiPrecision.hpp
Line 142 in e9f94e4
The HighsInterface.hpp is calling outdated methods on the HighsLp model.
There was a PR for this error back in 2022 but the error remains in both branches.
#22
Could this interface be brought up to date so it can compile against the latest HiGHs?
If PaPILO does not find oneTBB and it tries to download and use v2021.4.0, does it install oneTBB in the folder external/? If not, does PaPILO need root access in order to install oneTBB?
FAILED: bin/duplicates
: && /usr/bin/c++ -O2 -pipe -fno-omit-frame-pointer -fstack-protector-strong -fno-strict-aliasing -fno-omit-frame-pointer -O2 -pipe -fno-omit-frame-pointer -fstack-protector-strong -fno-strict-aliasing -fno-omit-frame-pointer -fstack-protector-strong binaries/CMakeFiles/duplicates.dir/__/src/duplicates.cpp.o -o bin/duplicates -Wl,-rpath,/usr/local/lib libpapilo-core.a /usr/local/lib/libboost_iostreams.so /usr/local/lib/libboost_serialization.so /usr/local/lib/libboost_program_options.so /usr/local/lib/libboost_regex.so /usr/local/lib/libtbb.so /usr/local/lib/libgmp.so /usr/local/lib/libgmpxx.so && :
ld: error: undefined symbol: tbb::task_group_context::init()
>>> referenced by ConstraintMatrix.cpp
>>> ConstraintMatrix.cpp.o:(papilo::ConstraintMatrix<double>::compress(bool)) in archive libpapilo-core.a
>>> referenced by ConstraintMatrix.cpp
>>> ConstraintMatrix.cpp.o:(papilo::ConstraintMatrix<double>::compress(bool)) in archive libpapilo-core.a
>>> referenced by ConstraintMatrix.cpp
>>> ConstraintMatrix.cpp.o:(papilo::ConstraintMatrix<double>::deleteRowsAndCols(std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<papilo::RowActivity<double>, std::__1::allocator<papilo::RowActivity<double> > >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&, std::__1::vector<int, std::__1::allocator<int> >&)) in archive libpapilo-core.a
>>> referenced 12 more times
OS: FreeBSD 13
My log is as follows
I have latest tbb
& boost
cmake -DCMAKE_INSTALL_PREFIX=$PREFIX/local ..
-- The C compiler identification is Clang 14.0.6
-- The CXX compiler identification is Clang 14.0.6
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /data/data/com.termux/files/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /data/data/com.termux/files/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Boost: /data/data/com.termux/files/usr/lib/cmake/Boost-1.78.0/BoostConfig.cmake (found suitable version "1.78.0", minimum required is "1.65") found components: program_options
-- Found GMP: /data/data/com.termux/files/usr/include
-- Performing Test Quadmath_USE_DIRECTLY
-- Performing Test Quadmath_USE_DIRECTLY - Failed
-- Could NOT find Quadmath (missing: Quadmath_LIBRARY Quadmath_INCLUDE_DIR)
-- Git hash: dea16d4
-- Found TBB: /data/data/com.termux/files/usr/lib/cmake/TBB/TBBConfig.cmake (found suitable version "2021.5.0", minimum required is "2018")
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Looking for a Fortran compiler
-- Looking for a Fortran compiler - NOTFOUND
-- Looking for sgemm_
-- Looking for sgemm_ - not found
-- Looking for sgemm_
-- Looking for sgemm_ - found
-- Found BLAS: /data/data/com.termux/files/usr/lib/libopenblas.so
-- LUSOL is not built
-- Performing Test HAVE_FLAG_STD_CXX14
-- Performing Test HAVE_FLAG_STD_CXX14 - Success
-- Performing Test PAPILO_BYTELL_HASHMAP_WORKS
-- Performing Test PAPILO_BYTELL_HASHMAP_WORKS - Success
-- Found Boost: /data/data/com.termux/files/usr/lib/cmake/Boost-1.78.0/BoostConfig.cmake (found version "1.78.0") found components: iostreams serialization program_options
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_ZLIB
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_ZLIB - Success
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_BZIP2
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_BZIP2 - Success
-- No solvers linked
-- Found Boost: /data/data/com.termux/files/usr/lib/cmake/Boost-1.78.0/BoostConfig.cmake (found version "1.78.0") found components: serialization program_options iostreams
-- Configuring done
-- Generating done
-- Build files have been written to: /data/data/com.termux/files/home/papilo/build
~/papilo/build $ make -j4
[ 1%] Building CXX object test/CMakeFiles/unit_test.dir/TestMain.cpp.o
[ 3%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/core/VariableDomains.cpp.o
[ 5%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/core/SparseStorage.cpp.o
[ 7%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/core/MatrixBufferTest.cpp.o
[ 9%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/core/ConstraintMatrix.cpp.o
[ 11%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/core/ProblemUpdate.cpp.o
[ 12%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/core/SparseStorageTest.cpp.o
[ 14%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/core/PresolveTest.cpp.o
[ 16%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/core/Presolve.cpp.o
[ 18%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/core/ProblemUpdateTest.cpp.o
[ 20%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/core/postsolve/PostsolveStorage.cpp.o
[ 22%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/misc/VectorUtilsTest.cpp.o
[ 24%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/CoefficientStrengtheningTest.cpp.o
[ 25%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/core/postsolve/Postsolve.cpp.o
[ 27%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/core/ProbingView.cpp.o
[ 29%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/ConstraintPropagationTest.cpp.o
[ 31%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/DualFixTest.cpp.o
[ 33%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/CoefficientStrengthening.cpp.o
[ 35%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/DominatedColsTest.cpp.o
[ 37%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/ConstraintPropagation.cpp.o
[ 38%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/DominatedCols.cpp.o
[ 40%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/FixContinuousTest.cpp.o
[ 42%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/DualFix.cpp.o
[ 44%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/DualInfer.cpp.o
[ 46%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/FreeVarSubstitutionTest.cpp.o
[ 48%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/ImplIntDetectionTest.cpp.o
[ 50%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/ParallelRowDetectionTest.cpp.o
[ 51%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/FixContinuous.cpp.o
[ 53%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/ParallelColDetectionTest.cpp.o
[ 55%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/FreeVarSubstitution.cpp.o
[ 57%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/ImplIntDetection.cpp.o
[ 59%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/ProbingTest.cpp.o
[ 61%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/ParallelColDetection.cpp.o
[ 62%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/SingletonColsTest.cpp.o
[ 64%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/ParallelRowDetection.cpp.o
[ 66%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/Probing.cpp.o
[ 68%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/SingletonStuffingTest.cpp.o
[ 70%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/SimpleProbingTest.cpp.o
[ 72%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/SimpleProbing.cpp.o
[ 74%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/SimpleSubstitutionTest.cpp.o
[ 75%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/SimplifyInequalitiesTest.cpp.o
[ 77%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/SimpleSubstitution.cpp.o
[ 79%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/SingletonCols.cpp.o
[ 81%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/presolve/SparsifyTest.cpp.o
[ 83%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/SingletonStuffing.cpp.o
[ 85%] Building CXX object test/CMakeFiles/unit_test.dir/papilo/io/MpsParserTest.cpp.o
[ 87%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/Sparsify.cpp.o
[ 88%] Building CXX object CMakeFiles/papilo-core.dir/src/papilo/presolvers/SimplifyInequalities.cpp.o
[ 90%] Linking CXX executable unit_test
ld.lld: error: undefined symbol: __android_log_write
>>> referenced by catch.hpp:10367 (/data/data/com.termux/files/home/papilo/src/papilo/external/catch/catch.hpp:10367)
>>> CMakeFiles/unit_test.dir/TestMain.cpp.o:(Catch::writeToDebugConsole(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&))
>>> referenced by catch.hpp:10367 (/data/data/com.termux/files/home/papilo/src/papilo/external/catch/catch.hpp:10367)
>>> CMakeFiles/unit_test.dir/TestMain.cpp.o:(Catch::Detail::(anonymous namespace)::StreamBufImpl<Catch::Detail::(anonymous namespace)::OutputDebugWriter, 256ul>::sync())
>>> referenced by catch.hpp:10367 (/data/data/com.termux/files/home/papilo/src/papilo/external/catch/catch.hpp:10367)
>>> CMakeFiles/unit_test.dir/TestMain.cpp.o:(Catch::Detail::(anonymous namespace)::StreamBufImpl<Catch::Detail::(anonymous namespace)::OutputDebugWriter, 256ul>::overflow(int))
clang-14: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [test/CMakeFiles/unit_test.dir/build.make:455: test/unit_test] Error 1
make[1]: *** [CMakeFiles/Makefile2:225: test/CMakeFiles/unit_test.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 92%] Linking CXX static library libpapilo-core.a
[ 92%] Built target papilo-core
make: *** [Makefile:146: all] Error 2
There is a C implementation of the LP method PDLP that runs on an Nvidia GPU. Are there plans to integrate/link this GPU LP solver into PaPILO?
https://arxiv.org/abs/2311.12180
https://github.com/jinwen-yang/cuPDLP.jl
https://github.com/COPT-Public/cuPDLP-C
Are you planning to make a release for PaPILO v2.1.3, which is provided with SCIP v8.0.4? https://scipopt.org/
papilo/src/papilo/core/Presolve.hpp
Line 1152 in 2836a3d
for( ; k != static_cast<int>( reds.size() ); ++k )
{
result = probUpdate.applyTransaction( &reds[k], &reds.data()[k + 1] );
reds.data()[k+1] is clearly out of bounds in the last iteration of this loop. If compiled with Visual C++ in debug mode, an assert will be triggered within th VC++ implementation of std::vector.
This is due to boost auto linking:
Not sure which compilers are affected. I'm using MSVC and Papilo 2.2.0.
Workaround:
removing those includes in the for files mentioned above worked for me. Not sure whether there are cases they are needed.
.opb
is a file format to specify 0-1 Integer programs. However it is already supported in the larger SCIP ecosystem. I am aware that this format also contains products of binary variables, so working with the linearization of products of binaries would be enough. I would not expect writing out .opb
s with recovered product structures, although it would be nice.
What would be required to make papilo support reading .opb
?
For reference SCIP supports the following formats:
cip, cnf, flatzinc, rlp, lp, mps, opb, pip, wbo, zimpl
I understand that supporting flatzinc
and similar constraint based formats is really complicated and recovery of those constraint structures from a an presolved MILP quiet hard. So a full support for all filetypes SCIP can support is unrealistic given the linear framework of papilo.
... to resolve the circular dependencies scip -> papilo -> scip and soplex -> papilo -> soplex.
Are you planning to tag PaPILO v2.1.4, which is provided with SCIP v8.1.0? https://scipopt.org/
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.