unopy 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- unopy-0.1.0/.github/C/CMakeLists.txt +25 -0
- unopy-0.1.0/.github/C/tests_hs015.c +217 -0
- unopy-0.1.0/.github/FUNDING.yml +3 -0
- unopy-0.1.0/.github/julia/.gitignore +2 -0
- unopy-0.1.0/.github/julia/Project.toml +14 -0
- unopy-0.1.0/.github/julia/build_tarballs_release.jl +170 -0
- unopy-0.1.0/.github/julia/build_tarballs_yggdrasil.jl +115 -0
- unopy-0.1.0/.github/julia/generate_binaries.jl +75 -0
- unopy-0.1.0/.github/julia/runtests_uno_filterslp_bqpd.jl +66 -0
- unopy-0.1.0/.github/julia/runtests_uno_filterslp_highs.jl +66 -0
- unopy-0.1.0/.github/julia/runtests_uno_filtersqp_bqpd.jl +123 -0
- unopy-0.1.0/.github/julia/runtests_uno_filtersqp_bqpd_charlies_instances.jl +109 -0
- unopy-0.1.0/.github/julia/runtests_uno_filtersqp_bqpd_identity.jl +129 -0
- unopy-0.1.0/.github/julia/runtests_uno_filtersqp_bqpd_regularization_ls.jl +126 -0
- unopy-0.1.0/.github/julia/runtests_uno_filtersqp_bqpd_regularization_tr.jl +126 -0
- unopy-0.1.0/.github/julia/runtests_uno_filtersqp_highs.jl +48 -0
- unopy-0.1.0/.github/julia/runtests_uno_ipopt_ma27.jl +120 -0
- unopy-0.1.0/.github/julia/runtests_uno_ipopt_ma57.jl +120 -0
- unopy-0.1.0/.github/julia/runtests_uno_ipopt_mumps.jl +120 -0
- unopy-0.1.0/.github/julia/runtests_uno_ipopt_mumps_identity.jl +128 -0
- unopy-0.1.0/.github/workflows/C-test-example.yml +74 -0
- unopy-0.1.0/.github/workflows/C-tests-linux.yml +77 -0
- unopy-0.1.0/.github/workflows/Fortran-tests-linux.yml +63 -0
- unopy-0.1.0/.github/workflows/build-cross-compiler.yml +62 -0
- unopy-0.1.0/.github/workflows/build-macos.yml +79 -0
- unopy-0.1.0/.github/workflows/build-msvc.yml +96 -0
- unopy-0.1.0/.github/workflows/build-python-wheels.yml +96 -0
- unopy-0.1.0/.github/workflows/build-windows.yml +73 -0
- unopy-0.1.0/.github/workflows/julia-tests-hsl.yml +104 -0
- unopy-0.1.0/.github/workflows/julia-tests-jll.yml +52 -0
- unopy-0.1.0/.github/workflows/julia-tests-ubuntu.yml +66 -0
- unopy-0.1.0/.github/workflows/julia-tests-uno.yml +65 -0
- unopy-0.1.0/.github/workflows/julia-wrappers.yml +40 -0
- unopy-0.1.0/.github/workflows/release.yml +239 -0
- unopy-0.1.0/.github/workflows/unit-tests-linux.yml +77 -0
- unopy-0.1.0/.github/workflows/unit-tests-macos.yml +59 -0
- unopy-0.1.0/.github/workflows/unit-tests-msvc.yml +92 -0
- unopy-0.1.0/.github/workflows/unopy-test-example.yml +52 -0
- unopy-0.1.0/.readthedocs.yaml +15 -0
- unopy-0.1.0/CITATION.cff +20 -0
- unopy-0.1.0/CMakeLists.txt +343 -0
- unopy-0.1.0/INSTALL.md +114 -0
- unopy-0.1.0/LICENSE +21 -0
- unopy-0.1.0/PKG-INFO +123 -0
- unopy-0.1.0/README.md +100 -0
- unopy-0.1.0/UNIFICATION.md +16 -0
- unopy-0.1.0/cmake/FindBLACS.cmake +31 -0
- unopy-0.1.0/cmake/FindMETIS.cmake +32 -0
- unopy-0.1.0/cmake/FindMUMPS.cmake +51 -0
- unopy-0.1.0/cmake/FindSCOTCH.cmake +41 -0
- unopy-0.1.0/cmake/FindScaLAPACK.cmake +28 -0
- unopy-0.1.0/cmake/LibFindMacros.cmake +103 -0
- unopy-0.1.0/docs/developers/checklists.md +40 -0
- unopy-0.1.0/docs/figures/combination_hypergraph.pdf +0 -0
- unopy-0.1.0/docs/figures/combination_hypergraph.png +0 -0
- unopy-0.1.0/docs/figures/hypergraph_uno.pdf +0 -0
- unopy-0.1.0/docs/figures/hypergraph_uno.png +0 -0
- unopy-0.1.0/docs/figures/logo.png +0 -0
- unopy-0.1.0/docs/figures/uno_performance_profile.png +0 -0
- unopy-0.1.0/docs/figures/wheel.png +0 -0
- unopy-0.1.0/docs/index.md +6 -0
- unopy-0.1.0/docs/options.irace +106 -0
- unopy-0.1.0/docs/options.json +527 -0
- unopy-0.1.0/docs/options.md +137 -0
- unopy-0.1.0/docs/options_parsed.tsv +106 -0
- unopy-0.1.0/interfaces/AMPL/AMPLModel.cpp +362 -0
- unopy-0.1.0/interfaces/AMPL/AMPLModel.hpp +129 -0
- unopy-0.1.0/interfaces/AMPL/README.md +14 -0
- unopy-0.1.0/interfaces/AMPL/examples/hs015.mod +12 -0
- unopy-0.1.0/interfaces/AMPL/examples/hs015.nl +54 -0
- unopy-0.1.0/interfaces/AMPL/examples/polak5.mod +29 -0
- unopy-0.1.0/interfaces/AMPL/examples/polak5.nl +71 -0
- unopy-0.1.0/interfaces/AMPL/uno_ampl.cpp +101 -0
- unopy-0.1.0/interfaces/C/README.md +177 -0
- unopy-0.1.0/interfaces/C/Uno_C_API.cpp +1051 -0
- unopy-0.1.0/interfaces/C/Uno_C_API.h +362 -0
- unopy-0.1.0/interfaces/C/example/CMakeLists.txt +25 -0
- unopy-0.1.0/interfaces/C/example/example_hs015.c +142 -0
- unopy-0.1.0/interfaces/C/uno_int.h +19 -0
- unopy-0.1.0/interfaces/Fortran/test_uno.f90 +6 -0
- unopy-0.1.0/interfaces/Fortran/uno.f90 +697 -0
- unopy-0.1.0/interfaces/Julia/LICENSE +21 -0
- unopy-0.1.0/interfaces/Julia/Project.toml +34 -0
- unopy-0.1.0/interfaces/Julia/README.md +200 -0
- unopy-0.1.0/interfaces/Julia/ext/UnoSolverMathOptInterfaceExt/MOI_utils.jl +691 -0
- unopy-0.1.0/interfaces/Julia/ext/UnoSolverMathOptInterfaceExt/MOI_wrapper.jl +1679 -0
- unopy-0.1.0/interfaces/Julia/ext/UnoSolverMathOptInterfaceExt/UnoSolverMathOptInterfaceExt.jl +14 -0
- unopy-0.1.0/interfaces/Julia/ext/UnoSolverNLPModelsExt/UnoSolverNLPModelsExt.jl +104 -0
- unopy-0.1.0/interfaces/Julia/gen/Project.toml +8 -0
- unopy-0.1.0/interfaces/Julia/gen/README.md +28 -0
- unopy-0.1.0/interfaces/Julia/gen/prologue.jl +44 -0
- unopy-0.1.0/interfaces/Julia/gen/uno.toml +11 -0
- unopy-0.1.0/interfaces/Julia/gen/wrapper.jl +44 -0
- unopy-0.1.0/interfaces/Julia/src/C_wrapper.jl +304 -0
- unopy-0.1.0/interfaces/Julia/src/UnoSolver.jl +26 -0
- unopy-0.1.0/interfaces/Julia/src/libuno.jl +304 -0
- unopy-0.1.0/interfaces/Julia/test/C_wrapper.jl +317 -0
- unopy-0.1.0/interfaces/Julia/test/MOI_wrapper.jl +1164 -0
- unopy-0.1.0/interfaces/Julia/test/NLP_wrapper.jl +80 -0
- unopy-0.1.0/interfaces/Julia/test/runtests.jl +18 -0
- unopy-0.1.0/interfaces/Python/README.md +112 -0
- unopy-0.1.0/interfaces/Python/cpp_classes/PythonModel.cpp +322 -0
- unopy-0.1.0/interfaces/Python/cpp_classes/PythonModel.hpp +93 -0
- unopy-0.1.0/interfaces/Python/cpp_classes/UnoSolverWrapper.cpp +19 -0
- unopy-0.1.0/interfaces/Python/cpp_classes/UnoSolverWrapper.hpp +23 -0
- unopy-0.1.0/interfaces/Python/dependencies/bqpd/bin/qpsolve +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/bqpd/bin/qpsolve_dense +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/bqpd/bqpd.tar.gz +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/bqpd/lib/libbqpd.a +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/bqpd/lib/libbqpd_dense.a +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/bqpd/share/licenses/BQPD/LICENSE +32 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/bin/highs +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/highs.tar.gz +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/HConfig.h +20 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/Highs.h +1712 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/filereaderlp/builder.hpp +25 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/filereaderlp/def.hpp +19 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/filereaderlp/model.hpp +68 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/filereaderlp/reader.hpp +10 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/interfaces/highs_c_api.h +2519 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/Filereader.h +45 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/FilereaderEms.h +30 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/FilereaderLp.h +51 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/FilereaderMps.h +27 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/HMPSIO.h +78 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/HMpsFF.h +239 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/HighsIO.h +112 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/LoadOptions.h +24 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/IpxSolution.h +32 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/IpxWrapper.h +70 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu.h +161 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_factorize.h +247 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_get_factors.h +108 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_initialize.h +119 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_factorize.h +34 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_free.h +19 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_get_factors.h +34 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_initialize.h +46 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_solve_dense.h +29 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_solve_for_update.h +42 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_solve_sparse.h +32 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_update.h +31 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_object.h +30 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_solve_dense.h +75 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_solve_for_update.h +169 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_solve_sparse.h +112 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_update.h +125 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/lu_def.h +39 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/lu_file.h +21 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/lu_internal.h +220 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/lu_list.h +168 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/basiclu_kernel.h +20 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/basiclu_wrapper.h +47 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/basis.h +351 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/conjugate_residuals.h +74 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/control.h +164 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/crossover.h +157 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/diagonal_precond.h +45 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/forrest_tomlin.h +102 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/guess_basis.h +21 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/indexed_vector.h +113 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/info.h +27 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipm.h +94 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipx_c.h +47 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipx_config.h +9 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipx_info.h +111 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipx_internal.h +89 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipx_parameters.h +76 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipx_status.h +57 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/iterate.h +328 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/kkt_solver.h +70 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/kkt_solver_basis.h +66 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/kkt_solver_diag.h +48 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/linear_operator.h +26 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/lp_solver.h +202 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/lu_factorization.h +79 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/lu_update.h +129 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/maxvolume.h +54 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/model.h +413 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/multistream.h +52 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/normal_matrix.h +44 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/power_method.h +44 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/sparse_matrix.h +195 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/sparse_utils.h +58 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/splitted_normal_matrix.h +63 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/starting_basis.h +39 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/symbolic_invert.h +29 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/timer.h +24 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/utils.h +39 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HConst.h +334 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HStruct.h +185 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsAnalysis.h +23 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsCallback.h +104 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsCallbackStruct.h +70 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsDebug.h +34 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsIis.h +62 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsInfo.h +419 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsInfoDebug.h +27 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsLp.h +101 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsLpSolverObject.h +45 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsLpUtils.h +298 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsModelUtils.h +112 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsOptions.h +1565 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsRanging.h +43 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsSolution.h +161 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsSolutionDebug.h +87 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsSolve.h +23 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsStatus.h +29 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsCliqueTable.h +318 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsConflictPool.h +109 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsCutGeneration.h +108 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsCutPool.h +168 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsDebugSol.h +132 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsDomain.h +653 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsDomainChange.h +48 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsDynamicRowMatrix.h +104 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsGFkSolve.h +438 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsImplications.h +170 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsLpAggregator.h +50 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsLpRelaxation.h +357 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsMipAnalysis.h +52 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsMipSolver.h +112 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsMipSolverData.h +304 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsModkSeparator.h +60 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsNodeQueue.h +311 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsObjectiveFunction.h +71 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsPathSeparator.h +39 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsPrimalHeuristics.h +74 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsPseudocost.h +360 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsRedcostFixing.h +42 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsSearch.h +241 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsSeparation.h +41 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsSeparator.h +52 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsTableauSeparator.h +34 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsTransformedLp.h +63 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/MipTimer.h +486 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/feasibilityjump.hh +785 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/model/HighsHessian.h +54 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/model/HighsHessianUtils.h +49 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/model/HighsModel.h +52 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsBinarySemaphore.h +113 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsCacheAlign.h +87 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsCombinable.h +121 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsMutex.h +129 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsParallel.h +133 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsRaceTimer.h +43 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsSchedulerConstants.h +24 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsSpinMutex.h +53 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsSplitDeque.h +611 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsTask.h +175 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsTaskExecutor.h +222 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/CupdlpWrapper.h +110 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_cs.h +40 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_defs.h +432 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_linalg.h +189 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_proj.h +19 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_restart.h +31 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_scaling.h +26 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_solver.h +105 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_step.h +37 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_utils.c +1783 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdqsort/pdqsort.h +532 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/HPresolve.h +407 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/HPresolveAnalysis.h +51 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/HighsPostsolveStack.h +943 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/HighsSymmetry.h +281 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/ICrash.h +124 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/ICrashUtil.h +62 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/ICrashX.h +23 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/PresolveComponent.h +90 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/a_asm.hpp +70 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/a_quass.hpp +15 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/basis.hpp +152 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/crashsolution.hpp +13 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/dantzigpricing.hpp +73 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/devexpricing.hpp +101 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/eventhandler.hpp +23 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/factor.hpp +401 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/feasibility_bounded.hpp +107 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/feasibility_highs.hpp +294 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/gradient.hpp +39 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/instance.hpp +63 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/matrix.hpp +335 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/perturbation.hpp +8 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/pricing.hpp +15 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/qpconst.hpp +27 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/qpvector.hpp +235 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/quass.hpp +20 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/ratiotest.hpp +19 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/runtime.hpp +38 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/scaling.hpp +8 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/settings.hpp +76 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/snippets.hpp +29 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/statistics.hpp +23 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/steepestedgepricing.hpp +166 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HApp.h +484 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HEkk.h +416 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HEkkDual.h +513 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HEkkDualRHS.h +134 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HEkkDualRow.h +201 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HEkkPrimal.h +191 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HSimplex.h +42 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HSimplexDebug.h +48 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HSimplexNla.h +158 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HSimplexReport.h +21 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HighsSimplexAnalysis.h +500 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/SimplexConst.h +273 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/SimplexStruct.h +261 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/SimplexTimer.h +409 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/test_kkt/DevKkt.h +143 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/test_kkt/KktCh2.h +79 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/FactorTimer.h +199 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HFactor.h +587 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HFactorConst.h +81 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HFactorDebug.h +55 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HSet.h +89 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HVector.h +22 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HVectorBase.h +102 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsCDouble.h +323 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsComponent.h +53 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsDataStack.h +83 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsDisjointSets.h +107 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsHash.h +1274 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsHashTree.h +1447 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsInt.h +36 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsIntegers.h +212 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsLinearSumBounds.h +191 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsMatrixPic.h +37 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsMatrixSlice.h +561 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsMatrixUtils.h +54 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsMemoryAllocation.h +63 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsRandom.h +242 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsRbTree.h +452 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsSort.h +131 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsSparseMatrix.h +150 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsSparseVectorSum.h +95 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsSplay.h +135 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsTimer.h +383 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsUtils.h +217 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/stringutil.h +46 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/zstr/strict_fstream.hpp +237 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/zstr/zstr.hpp +473 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs_export.h +43 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/lib/cmake/highs/highs-config-version.cmake +65 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/lib/cmake/highs/highs-config.cmake +26 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/lib/cmake/highs/highs-targets-release.cmake +28 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/lib/cmake/highs/highs-targets.cmake +118 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/lib/libhighs.a +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/lib/pkgconfig/highs.pc +12 -0
- unopy-0.1.0/interfaces/Python/dependencies/highs/share/licenses/HiGHS_static/LICENSE.txt +21 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/bin/cmpfillin +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/bin/gpmetis +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/bin/graphchk +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/bin/m2gmetis +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/bin/mpmetis +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/bin/ndmetis +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/cmumps_c.h +155 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/cmumps_struc.h +294 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/dmumps_c.h +155 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/dmumps_struc.h +294 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/libseq/elapse.h +36 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/libseq/mpi.h +77 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/libseq/mpif.h +112 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/metis.h +351 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/mumps_c_types.h +73 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/mumps_compat.h +46 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/mumps_int_def.h +23 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/smumps_c.h +155 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/smumps_struc.h +294 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/zmumps_c.h +155 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/include/zmumps_struc.h +294 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/cmake/lapack-3.12.0/lapack-config-version.cmake +70 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/cmake/lapack-3.12.0/lapack-config.cmake +19 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/cmake/lapack-3.12.0/lapack-targets-release.cmake +29 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/cmake/lapack-3.12.0/lapack-targets.cmake +101 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libblas.a +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libdmumps.a +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/liblapack.a +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libmetis.a +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libmpiseq.a +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libmumps_common.a +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libpord.a +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libsmumps.a +0 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/pkgconfig/blas.pc +8 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/pkgconfig/lapack.pc +9 -0
- unopy-0.1.0/interfaces/Python/dependencies/mumps/mumps.tar.gz +0 -0
- unopy-0.1.0/interfaces/Python/example/example_hs015.py +116 -0
- unopy-0.1.0/interfaces/Python/python_modules/Constants.cpp +53 -0
- unopy-0.1.0/interfaces/Python/python_modules/Model.cpp +123 -0
- unopy-0.1.0/interfaces/Python/python_modules/PointerWrapper.cpp +28 -0
- unopy-0.1.0/interfaces/Python/python_modules/Result.cpp +48 -0
- unopy-0.1.0/interfaces/Python/python_modules/UnoSolver.cpp +43 -0
- unopy-0.1.0/interfaces/Python/python_modules/Vector.cpp +40 -0
- unopy-0.1.0/interfaces/Python/scripts/download_dependencies.ps1 +47 -0
- unopy-0.1.0/interfaces/Python/scripts/download_dependencies.sh +58 -0
- unopy-0.1.0/interfaces/Python/unopy.cpp +35 -0
- unopy-0.1.0/interfaces/Python/unopy.hpp +43 -0
- unopy-0.1.0/interfaces/UserModel.hpp +87 -0
- unopy-0.1.0/mkdocs.yml +3 -0
- unopy-0.1.0/pyproject.toml +46 -0
- unopy-0.1.0/uno/Uno.cpp +255 -0
- unopy-0.1.0/uno/Uno.hpp +52 -0
- unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/ConstraintRelaxationStrategy.cpp +115 -0
- unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/ConstraintRelaxationStrategy.hpp +101 -0
- unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/ConstraintRelaxationStrategyFactory.cpp +25 -0
- unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/ConstraintRelaxationStrategyFactory.hpp +26 -0
- unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/FeasibilityRestoration.cpp +252 -0
- unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/FeasibilityRestoration.hpp +77 -0
- unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/NoRelaxation.cpp +95 -0
- unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/NoRelaxation.hpp +48 -0
- unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/relaxed_problems/ElasticVariables.cpp +49 -0
- unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/relaxed_problems/ElasticVariables.hpp +33 -0
- unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/relaxed_problems/l1RelaxedProblem.cpp +328 -0
- unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/relaxed_problems/l1RelaxedProblem.hpp +83 -0
- unopy-0.1.0/uno/ingredients/globalization_mechanisms/BacktrackingLineSearch.cpp +143 -0
- unopy-0.1.0/uno/ingredients/globalization_mechanisms/BacktrackingLineSearch.hpp +36 -0
- unopy-0.1.0/uno/ingredients/globalization_mechanisms/GlobalizationMechanism.cpp +58 -0
- unopy-0.1.0/uno/ingredients/globalization_mechanisms/GlobalizationMechanism.hpp +45 -0
- unopy-0.1.0/uno/ingredients/globalization_mechanisms/GlobalizationMechanismFactory.cpp +23 -0
- unopy-0.1.0/uno/ingredients/globalization_mechanisms/GlobalizationMechanismFactory.hpp +24 -0
- unopy-0.1.0/uno/ingredients/globalization_mechanisms/TrustRegionStrategy.cpp +196 -0
- unopy-0.1.0/uno/ingredients/globalization_mechanisms/TrustRegionStrategy.hpp +44 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/GlobalizationStrategy.cpp +18 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/GlobalizationStrategy.hpp +43 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/GlobalizationStrategyFactory.cpp +38 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/GlobalizationStrategyFactory.hpp +26 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/ProgressMeasures.hpp +24 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/l1MeritFunction.cpp +81 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/l1MeritFunction.hpp +34 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/SwitchingMethod.cpp +21 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/SwitchingMethod.hpp +24 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/FilterMethod.cpp +49 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/FilterMethod.hpp +40 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/FletcherFilterMethod.cpp +74 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/FletcherFilterMethod.hpp +24 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/WaechterFilterMethod.cpp +93 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/WaechterFilterMethod.hpp +30 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/filters/Filter.cpp +192 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/filters/Filter.hpp +55 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/filters/FilterFactory.cpp +23 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/filters/FilterFactory.hpp +16 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/filters/NonmonotoneFilter.cpp +104 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/filters/NonmonotoneFilter.hpp +29 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/funnel_methods/Funnel.cpp +68 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/funnel_methods/Funnel.hpp +37 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/funnel_methods/FunnelMethod.cpp +142 -0
- unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/funnel_methods/FunnelMethod.hpp +53 -0
- unopy-0.1.0/uno/ingredients/hessian_models/ExactHessian.cpp +47 -0
- unopy-0.1.0/uno/ingredients/hessian_models/ExactHessian.hpp +34 -0
- unopy-0.1.0/uno/ingredients/hessian_models/HessianModel.hpp +41 -0
- unopy-0.1.0/uno/ingredients/hessian_models/HessianModelFactory.cpp +36 -0
- unopy-0.1.0/uno/ingredients/hessian_models/HessianModelFactory.hpp +24 -0
- unopy-0.1.0/uno/ingredients/hessian_models/IdentityHessian.cpp +54 -0
- unopy-0.1.0/uno/ingredients/hessian_models/IdentityHessian.hpp +31 -0
- unopy-0.1.0/uno/ingredients/hessian_models/ZeroHessian.cpp +46 -0
- unopy-0.1.0/uno/ingredients/hessian_models/ZeroHessian.hpp +31 -0
- unopy-0.1.0/uno/ingredients/inequality_handling_methods/InequalityHandlingMethod.cpp +61 -0
- unopy-0.1.0/uno/ingredients/inequality_handling_methods/InequalityHandlingMethod.hpp +75 -0
- unopy-0.1.0/uno/ingredients/inequality_handling_methods/InequalityHandlingMethodFactory.cpp +46 -0
- unopy-0.1.0/uno/ingredients/inequality_handling_methods/InequalityHandlingMethodFactory.hpp +23 -0
- unopy-0.1.0/uno/ingredients/inequality_handling_methods/inequality_constrained_methods/InequalityConstrainedMethod.cpp +120 -0
- unopy-0.1.0/uno/ingredients/inequality_handling_methods/inequality_constrained_methods/InequalityConstrainedMethod.hpp +59 -0
- unopy-0.1.0/uno/ingredients/inequality_handling_methods/interior_point_methods/BarrierParameterUpdateStrategy.hpp +96 -0
- unopy-0.1.0/uno/ingredients/inequality_handling_methods/interior_point_methods/BarrierProblem.hpp +24 -0
- unopy-0.1.0/uno/ingredients/inequality_handling_methods/interior_point_methods/InteriorPointMethod.hpp +294 -0
- unopy-0.1.0/uno/ingredients/inequality_handling_methods/interior_point_methods/InteriorPointParameters.hpp +18 -0
- unopy-0.1.0/uno/ingredients/inequality_handling_methods/interior_point_methods/barrier_problems/PrimalDualInteriorPointProblem.cpp +510 -0
- unopy-0.1.0/uno/ingredients/inequality_handling_methods/interior_point_methods/barrier_problems/PrimalDualInteriorPointProblem.hpp +88 -0
- unopy-0.1.0/uno/ingredients/inertia_correction_strategies/Inertia.hpp +30 -0
- unopy-0.1.0/uno/ingredients/inertia_correction_strategies/InertiaCorrectionStrategy.hpp +46 -0
- unopy-0.1.0/uno/ingredients/inertia_correction_strategies/InertiaCorrectionStrategyFactory.cpp +26 -0
- unopy-0.1.0/uno/ingredients/inertia_correction_strategies/InertiaCorrectionStrategyFactory.hpp +23 -0
- unopy-0.1.0/uno/ingredients/inertia_correction_strategies/NoInertiaCorrection.hpp +67 -0
- unopy-0.1.0/uno/ingredients/inertia_correction_strategies/PrimalDualInertiaCorrection.hpp +236 -0
- unopy-0.1.0/uno/ingredients/inertia_correction_strategies/PrimalInertiaCorrection.hpp +171 -0
- unopy-0.1.0/uno/ingredients/inertia_correction_strategies/UnstableRegularization.hpp +18 -0
- unopy-0.1.0/uno/ingredients/subproblem/Subproblem.cpp +266 -0
- unopy-0.1.0/uno/ingredients/subproblem/Subproblem.hpp +133 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/BQPD/BQPDEvaluationSpace.cpp +182 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/BQPD/BQPDEvaluationSpace.hpp +51 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/BQPD/BQPDSolver.cpp +386 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/BQPD/BQPDSolver.hpp +110 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/BoxLPSolver.cpp +55 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/BoxLPSolver.hpp +47 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/COOEvaluationSpace.cpp +126 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/COOEvaluationSpace.hpp +51 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/DirectSymmetricIndefiniteLinearSolver.hpp +28 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/HiGHS/HiGHSEvaluationSpace.cpp +226 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/HiGHS/HiGHSEvaluationSpace.hpp +54 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/HiGHS/HiGHSSolver.cpp +114 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/HiGHS/HiGHSSolver.hpp +38 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/InequalityConstrainedSolver.hpp +31 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/LPSolver.hpp +24 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/LPSolverFactory.cpp +42 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/LPSolverFactory.hpp +31 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/MA27/MA27Solver.cpp +306 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/MA27/MA27Solver.hpp +71 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/MA57/MA57Solver.cpp +251 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/MA57/MA57Solver.hpp +77 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/MUMPS/MUMPSSolver.cpp +140 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/MUMPS/MUMPSSolver.hpp +53 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/QPSolver.hpp +22 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/QPSolverFactory.cpp +42 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/QPSolverFactory.hpp +32 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/SubproblemStatus.hpp +16 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/SymmetricIndefiniteLinearSolver.hpp +37 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/SymmetricIndefiniteLinearSolverFactory.cpp +85 -0
- unopy-0.1.0/uno/ingredients/subproblem_solvers/SymmetricIndefiniteLinearSolverFactory.hpp +25 -0
- unopy-0.1.0/uno/linear_algebra/COOMatrix.hpp +27 -0
- unopy-0.1.0/uno/linear_algebra/Indexing.hpp +14 -0
- unopy-0.1.0/uno/linear_algebra/Matrix.hpp +21 -0
- unopy-0.1.0/uno/linear_algebra/MatrixOrder.hpp +14 -0
- unopy-0.1.0/uno/linear_algebra/Norm.hpp +147 -0
- unopy-0.1.0/uno/linear_algebra/SparseVector.hpp +157 -0
- unopy-0.1.0/uno/linear_algebra/Vector.hpp +166 -0
- unopy-0.1.0/uno/model/BoundRelaxedModel.cpp +25 -0
- unopy-0.1.0/uno/model/BoundRelaxedModel.hpp +136 -0
- unopy-0.1.0/uno/model/FixedBoundsConstraintsModel.cpp +244 -0
- unopy-0.1.0/uno/model/FixedBoundsConstraintsModel.hpp +89 -0
- unopy-0.1.0/uno/model/HomogeneousEqualityConstrainedModel.cpp +237 -0
- unopy-0.1.0/uno/model/HomogeneousEqualityConstrainedModel.hpp +87 -0
- unopy-0.1.0/uno/model/Model.cpp +67 -0
- unopy-0.1.0/uno/model/Model.hpp +124 -0
- unopy-0.1.0/uno/optimization/Direction.cpp +48 -0
- unopy-0.1.0/uno/optimization/Direction.hpp +36 -0
- unopy-0.1.0/uno/optimization/DualResiduals.hpp +25 -0
- unopy-0.1.0/uno/optimization/EvaluationErrors.hpp +31 -0
- unopy-0.1.0/uno/optimization/EvaluationSpace.hpp +32 -0
- unopy-0.1.0/uno/optimization/Evaluations.hpp +26 -0
- unopy-0.1.0/uno/optimization/Iterate.cpp +78 -0
- unopy-0.1.0/uno/optimization/Iterate.hpp +58 -0
- unopy-0.1.0/uno/optimization/LagrangianGradient.hpp +62 -0
- unopy-0.1.0/uno/optimization/Multipliers.cpp +33 -0
- unopy-0.1.0/uno/optimization/Multipliers.hpp +28 -0
- unopy-0.1.0/uno/optimization/OptimizationProblem.cpp +232 -0
- unopy-0.1.0/uno/optimization/OptimizationProblem.hpp +96 -0
- unopy-0.1.0/uno/optimization/OptimizationStatus.cpp +28 -0
- unopy-0.1.0/uno/optimization/OptimizationStatus.hpp +22 -0
- unopy-0.1.0/uno/optimization/ProblemType.hpp +11 -0
- unopy-0.1.0/uno/optimization/Result.cpp +40 -0
- unopy-0.1.0/uno/optimization/Result.hpp +40 -0
- unopy-0.1.0/uno/optimization/SolutionStatus.cpp +28 -0
- unopy-0.1.0/uno/optimization/SolutionStatus.hpp +23 -0
- unopy-0.1.0/uno/optimization/WarmstartInformation.cpp +45 -0
- unopy-0.1.0/uno/optimization/WarmstartInformation.hpp +25 -0
- unopy-0.1.0/uno/options/DefaultOptions.cpp +170 -0
- unopy-0.1.0/uno/options/DefaultOptions.hpp +19 -0
- unopy-0.1.0/uno/options/Options.cpp +343 -0
- unopy-0.1.0/uno/options/Options.hpp +57 -0
- unopy-0.1.0/uno/options/Presets.cpp +141 -0
- unopy-0.1.0/uno/options/Presets.hpp +21 -0
- unopy-0.1.0/uno/symbolic/Collection.hpp +53 -0
- unopy-0.1.0/uno/symbolic/CollectionAdapter.hpp +51 -0
- unopy-0.1.0/uno/symbolic/Concatenation.hpp +57 -0
- unopy-0.1.0/uno/symbolic/Expression.hpp +11 -0
- unopy-0.1.0/uno/symbolic/Range.hpp +80 -0
- unopy-0.1.0/uno/symbolic/ScalarMultiple.hpp +34 -0
- unopy-0.1.0/uno/symbolic/Sum.hpp +34 -0
- unopy-0.1.0/uno/symbolic/UnaryNegation.hpp +32 -0
- unopy-0.1.0/uno/symbolic/VectorExpression.hpp +62 -0
- unopy-0.1.0/uno/symbolic/VectorView.hpp +81 -0
- unopy-0.1.0/uno/tools/Infinity.hpp +20 -0
- unopy-0.1.0/uno/tools/Logger.cpp +45 -0
- unopy-0.1.0/uno/tools/Logger.hpp +44 -0
- unopy-0.1.0/uno/tools/NumberModelEvaluations.hpp +24 -0
- unopy-0.1.0/uno/tools/PointerWrapper.hpp +47 -0
- unopy-0.1.0/uno/tools/Statistics.cpp +160 -0
- unopy-0.1.0/uno/tools/Statistics.hpp +43 -0
- unopy-0.1.0/uno/tools/Timer.cpp +21 -0
- unopy-0.1.0/uno/tools/Timer.hpp +22 -0
- unopy-0.1.0/uno/tools/UserCallbacks.hpp +37 -0
- unopy-0.1.0/unotest/functional_tests/BQPDSolverTests.cpp +144 -0
- unopy-0.1.0/unotest/functional_tests/HiGHSSolverTests.cpp +75 -0
- unopy-0.1.0/unotest/functional_tests/MA27SolverTests.cpp +80 -0
- unopy-0.1.0/unotest/functional_tests/MA57SolverTests.cpp +82 -0
- unopy-0.1.0/unotest/functional_tests/MUMPSSolverTests.cpp +100 -0
- unopy-0.1.0/unotest/unit_tests/CollectionAdapterTests.cpp +24 -0
- unopy-0.1.0/unotest/unit_tests/ConcatenationTests.cpp +41 -0
- unopy-0.1.0/unotest/unit_tests/RangeTests.cpp +51 -0
- unopy-0.1.0/unotest/unit_tests/ScalarMultipleTests.cpp +18 -0
- unopy-0.1.0/unotest/unit_tests/SparseVectorTests.cpp +58 -0
- unopy-0.1.0/unotest/unit_tests/SumTests.cpp +19 -0
- unopy-0.1.0/unotest/unit_tests/VectorTests.cpp +62 -0
- unopy-0.1.0/unotest/unit_tests/VectorViewTests.cpp +16 -0
- unopy-0.1.0/unotest/unotest.cpp +24 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Copyright (c) 2025 Charlie Vanaret
|
|
2
|
+
# Licensed under the MIT license. See LICENSE file in the project directory for details.
|
|
3
|
+
|
|
4
|
+
cmake_minimum_required(VERSION 3.7)
|
|
5
|
+
if(${CMAKE_VERSION} VERSION_LESS 3.12)
|
|
6
|
+
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
|
|
7
|
+
endif()
|
|
8
|
+
|
|
9
|
+
project(tests_hs015 LANGUAGES C)
|
|
10
|
+
|
|
11
|
+
# compile options
|
|
12
|
+
if (MSVC)
|
|
13
|
+
add_compile_options("$<$<COMPILE_LANGUAGE:C>:/utf-8>")
|
|
14
|
+
else()
|
|
15
|
+
set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wnon-virtual-dtor -pedantic -Wunused-value -Wconversion")
|
|
16
|
+
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") # disable asserts
|
|
17
|
+
endif()
|
|
18
|
+
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
19
|
+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wmaybe-uninitialized")
|
|
20
|
+
endif()
|
|
21
|
+
|
|
22
|
+
find_library(UNO REQUIRED)
|
|
23
|
+
add_executable(tests_hs015 tests_hs015.c)
|
|
24
|
+
# link the math library and Uno
|
|
25
|
+
target_link_libraries(tests_hs015 PUBLIC m ${UNO})
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
#include <assert.h>
|
|
2
|
+
#include <stdio.h>
|
|
3
|
+
#include <math.h>
|
|
4
|
+
#include "Uno_C_API.h"
|
|
5
|
+
|
|
6
|
+
uno_int objective_function(uno_int /*number_variables*/, const double* x, double* objective_value, void* /*user_data*/) {
|
|
7
|
+
*objective_value = 100.*pow(x[1] - pow(x[0], 2.), 2.) + pow(1. - x[0], 2.);
|
|
8
|
+
return 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
uno_int objective_function_max(uno_int /*number_variables*/, const double* x, double* objective_value, void* /*user_data*/) {
|
|
12
|
+
*objective_value = -(100.*pow(x[1] - pow(x[0], 2.), 2.) + pow(1. - x[0], 2.));
|
|
13
|
+
return 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
uno_int constraint_functions(uno_int /*number_variables*/, uno_int /*number_constraints*/, const double* x,
|
|
17
|
+
double* constraint_values, void* /*user_data*/) {
|
|
18
|
+
constraint_values[0] = x[0]*x[1];
|
|
19
|
+
constraint_values[1] = x[0] + pow(x[1], 2.);
|
|
20
|
+
return 0;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
uno_int objective_gradient(uno_int /*number_variables*/, const double* x, double* gradient, void* /*user_data*/) {
|
|
24
|
+
gradient[0] = 400.*pow(x[0], 3.) - 400.*x[0]*x[1] + 2.*x[0] - 2.;
|
|
25
|
+
gradient[1] = 200.*(x[1] - pow(x[0], 2.));
|
|
26
|
+
return 0;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
uno_int objective_gradient_max(uno_int /*number_variables*/, const double* x, double* gradient, void* /*user_data*/) {
|
|
30
|
+
gradient[0] = -(400.*pow(x[0], 3.) - 400.*x[0]*x[1] + 2.*x[0] - 2.);
|
|
31
|
+
gradient[1] = -(200.*(x[1] - pow(x[0], 2.)));
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
uno_int constraint_jacobian(uno_int /*number_variables*/, uno_int /*number_jacobian_nonzeros*/, const double* x,
|
|
36
|
+
double* jacobian, void* /*user_data*/) {
|
|
37
|
+
jacobian[0] = x[1];
|
|
38
|
+
jacobian[1] = 1.;
|
|
39
|
+
jacobian[2] = x[0];
|
|
40
|
+
jacobian[3] = 2.*x[1];
|
|
41
|
+
return 0.;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
uno_int lagrangian_hessian_negative_sign(uno_int /*number_variables*/, uno_int /*number_constraints*/, uno_int /*number_hessian_nonzeros*/,
|
|
45
|
+
const double* x, double objective_multiplier, const double* multipliers, double* hessian, void* /*user_data*/) {
|
|
46
|
+
hessian[0] = objective_multiplier*(1200*pow(x[0], 2.) - 400.*x[1] + 2.);
|
|
47
|
+
hessian[1] = -400.*objective_multiplier*x[0] - multipliers[0];
|
|
48
|
+
hessian[2] = 200.*objective_multiplier - 2.*multipliers[1];
|
|
49
|
+
return 0;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
uno_int lagrangian_hessian_positive_sign(uno_int /*number_variables*/, uno_int /*number_constraints*/, uno_int /*number_hessian_nonzeros*/,
|
|
53
|
+
const double* x, double objective_multiplier, const double* multipliers, double* hessian, void* /*user_data*/) {
|
|
54
|
+
hessian[0] = objective_multiplier*(1200*pow(x[0], 2.) - 400.*x[1] + 2.);
|
|
55
|
+
hessian[1] = -400.*objective_multiplier*x[0] + multipliers[0];
|
|
56
|
+
hessian[2] = 200.*objective_multiplier + 2.*multipliers[1];
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
uno_int lagrangian_hessian_max_negative_sign(uno_int /*number_variables*/, uno_int /*number_constraints*/, uno_int /*number_hessian_nonzeros*/,
|
|
61
|
+
const double* x, double objective_multiplier, const double* multipliers, double* hessian, void* /*user_data*/) {
|
|
62
|
+
hessian[0] = -objective_multiplier*(1200*pow(x[0], 2.) - 400.*x[1] + 2.);
|
|
63
|
+
hessian[1] = -400.*-objective_multiplier*x[0] - multipliers[0];
|
|
64
|
+
hessian[2] = 200.*-objective_multiplier - 2.*multipliers[1];
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
uno_int lagrangian_hessian_max_positive_sign(uno_int /*number_variables*/, uno_int /*number_constraints*/, uno_int /*number_hessian_nonzeros*/,
|
|
69
|
+
const double* x, double objective_multiplier, const double* multipliers, double* hessian, void* /*user_data*/) {
|
|
70
|
+
hessian[0] = -objective_multiplier*(1200*pow(x[0], 2.) - 400.*x[1] + 2.);
|
|
71
|
+
hessian[1] = -400.*-objective_multiplier*x[0] + multipliers[0];
|
|
72
|
+
hessian[2] = 200.*-objective_multiplier + 2.*multipliers[1];
|
|
73
|
+
return 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
void print_vector(const double* vector, uno_int size) {
|
|
77
|
+
for (size_t index = 0; index < size; ++index) {
|
|
78
|
+
printf("%g ", vector[index]);
|
|
79
|
+
}
|
|
80
|
+
printf("\n");
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
void solve_instance(uno_int optimization_sense, double lagrangian_sign_convention, double reference_objective,
|
|
84
|
+
const double reference_primal_solution[], const double reference_constraint_dual_solution[],
|
|
85
|
+
const double reference_lower_bound_dual_solution[], const double reference_upper_bound_dual_solution[]) {
|
|
86
|
+
// model creation
|
|
87
|
+
const uno_int base_indexing = UNO_ZERO_BASED_INDEXING;
|
|
88
|
+
// variables
|
|
89
|
+
const uno_int number_variables = 2;
|
|
90
|
+
double variables_lower_bounds[] = {-INFINITY, -INFINITY};
|
|
91
|
+
double variables_upper_bounds[] = {0.5, INFINITY};
|
|
92
|
+
// constraints
|
|
93
|
+
const uno_int number_constraints = 2;
|
|
94
|
+
double constraints_lower_bounds[] = {1., 0.};
|
|
95
|
+
double constraints_upper_bounds[] = {INFINITY, INFINITY};
|
|
96
|
+
const uno_int number_jacobian_nonzeros = 4;
|
|
97
|
+
uno_int jacobian_row_indices[] = {0, 1, 0, 1};
|
|
98
|
+
uno_int jacobian_column_indices[] = {0, 0, 1, 1};
|
|
99
|
+
// Hessian
|
|
100
|
+
const uno_int number_hessian_nonzeros = 3;
|
|
101
|
+
const char hessian_triangular_part = UNO_LOWER_TRIANGLE;
|
|
102
|
+
uno_int hessian_row_indices[] = {0, 1, 1};
|
|
103
|
+
uno_int hessian_column_indices[] = {0, 0, 1};
|
|
104
|
+
// initial point
|
|
105
|
+
double x0[] = {-2., 1.};
|
|
106
|
+
|
|
107
|
+
void* model = uno_create_model(UNO_PROBLEM_NONLINEAR, number_variables, variables_lower_bounds,
|
|
108
|
+
variables_upper_bounds, base_indexing);
|
|
109
|
+
if (optimization_sense == UNO_MINIMIZE) {
|
|
110
|
+
assert(uno_set_objective(model, optimization_sense, objective_function, objective_gradient));
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
assert(uno_set_objective(model, optimization_sense, objective_function_max, objective_gradient_max));
|
|
114
|
+
}
|
|
115
|
+
assert(uno_set_constraints(model, number_constraints, constraint_functions,
|
|
116
|
+
constraints_lower_bounds, constraints_upper_bounds, number_jacobian_nonzeros,
|
|
117
|
+
jacobian_row_indices, jacobian_column_indices, constraint_jacobian));
|
|
118
|
+
if (lagrangian_sign_convention == UNO_MULTIPLIER_NEGATIVE) {
|
|
119
|
+
if (optimization_sense == UNO_MINIMIZE) {
|
|
120
|
+
assert(uno_set_lagrangian_hessian(model, number_hessian_nonzeros, hessian_triangular_part,
|
|
121
|
+
hessian_row_indices, hessian_column_indices, lagrangian_hessian_negative_sign,
|
|
122
|
+
lagrangian_sign_convention));
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
assert(uno_set_lagrangian_hessian(model, number_hessian_nonzeros, hessian_triangular_part,
|
|
126
|
+
hessian_row_indices, hessian_column_indices, lagrangian_hessian_max_negative_sign,
|
|
127
|
+
lagrangian_sign_convention));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
if (optimization_sense == UNO_MINIMIZE) {
|
|
132
|
+
assert(uno_set_lagrangian_hessian(model, number_hessian_nonzeros, hessian_triangular_part,
|
|
133
|
+
hessian_row_indices, hessian_column_indices, lagrangian_hessian_positive_sign,
|
|
134
|
+
lagrangian_sign_convention));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
assert(uno_set_lagrangian_hessian(model, number_hessian_nonzeros, hessian_triangular_part,
|
|
138
|
+
hessian_row_indices, hessian_column_indices, lagrangian_hessian_max_positive_sign,
|
|
139
|
+
lagrangian_sign_convention));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
assert(uno_set_initial_primal_iterate(model, x0));
|
|
143
|
+
|
|
144
|
+
// solver creation
|
|
145
|
+
void* solver = uno_create_solver();
|
|
146
|
+
uno_set_solver_preset(solver, "filtersqp");
|
|
147
|
+
uno_set_solver_string_option(solver, "logger", "INFO");
|
|
148
|
+
|
|
149
|
+
// solve
|
|
150
|
+
uno_optimize(solver, model);
|
|
151
|
+
|
|
152
|
+
// tests
|
|
153
|
+
const uno_int optimization_status = uno_get_optimization_status(solver);
|
|
154
|
+
assert(optimization_status == UNO_SUCCESS);
|
|
155
|
+
const uno_int iterate_status = uno_get_solution_status(solver);
|
|
156
|
+
assert(iterate_status == UNO_FEASIBLE_KKT_POINT);
|
|
157
|
+
// objective
|
|
158
|
+
const double solution_objective = uno_get_solution_objective(solver);
|
|
159
|
+
assert(solution_objective == reference_objective);
|
|
160
|
+
// primal solution
|
|
161
|
+
double primal_solution[number_variables];
|
|
162
|
+
uno_get_primal_solution(solver, primal_solution);
|
|
163
|
+
for (size_t variable_index = 0; variable_index < number_variables; ++variable_index) {
|
|
164
|
+
assert(primal_solution[variable_index] == reference_primal_solution[variable_index]);
|
|
165
|
+
}
|
|
166
|
+
// constraint dual solution
|
|
167
|
+
double constraint_dual_solution[number_constraints];
|
|
168
|
+
uno_get_constraint_dual_solution(solver, constraint_dual_solution);
|
|
169
|
+
for (size_t constraint_index = 0; constraint_index < number_constraints; ++constraint_index) {
|
|
170
|
+
assert(constraint_dual_solution[constraint_index] == reference_constraint_dual_solution[constraint_index]);
|
|
171
|
+
}
|
|
172
|
+
// lower bound dual solution
|
|
173
|
+
double lower_bound_dual_solution[number_variables];
|
|
174
|
+
uno_get_lower_bound_dual_solution(solver, lower_bound_dual_solution);
|
|
175
|
+
for (size_t variable_index = 0; variable_index < number_variables; ++variable_index) {
|
|
176
|
+
assert(lower_bound_dual_solution[variable_index] == reference_lower_bound_dual_solution[variable_index]);
|
|
177
|
+
}
|
|
178
|
+
// upper bound dual solution
|
|
179
|
+
double upper_bound_dual_solution[number_variables];
|
|
180
|
+
uno_get_upper_bound_dual_solution(solver, upper_bound_dual_solution);
|
|
181
|
+
for (size_t variable_index = 0; variable_index < number_variables; ++variable_index) {
|
|
182
|
+
assert(upper_bound_dual_solution[variable_index] == reference_upper_bound_dual_solution[variable_index]);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// cleanup
|
|
186
|
+
uno_destroy_solver(solver);
|
|
187
|
+
uno_destroy_model(model);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
int main() {
|
|
191
|
+
const double reference_objective = 306.5;
|
|
192
|
+
const double reference_primal_solution[] = {0.5, 2};
|
|
193
|
+
const double reference_constraint_dual_solution_negative[] = {700., 0.};
|
|
194
|
+
const double reference_constraint_dual_solution_positive[] = {-700., 0.};
|
|
195
|
+
const double reference_lower_bound_dual_solution[] = {0., 0.};
|
|
196
|
+
const double reference_upper_bound_dual_solution_negative[] = {-1751., 0.};
|
|
197
|
+
const double reference_upper_bound_dual_solution_positive[] = {1751., 0.};
|
|
198
|
+
|
|
199
|
+
solve_instance(UNO_MINIMIZE, UNO_MULTIPLIER_NEGATIVE, reference_objective,
|
|
200
|
+
reference_primal_solution, reference_constraint_dual_solution_negative,
|
|
201
|
+
reference_lower_bound_dual_solution, reference_upper_bound_dual_solution_negative);
|
|
202
|
+
printf("(UNO_MINIMIZE, UNO_MULTIPLIER_NEGATIVE) passed.\n");
|
|
203
|
+
solve_instance(UNO_MINIMIZE, UNO_MULTIPLIER_POSITIVE, reference_objective,
|
|
204
|
+
reference_primal_solution, reference_constraint_dual_solution_positive,
|
|
205
|
+
reference_lower_bound_dual_solution, reference_upper_bound_dual_solution_positive);
|
|
206
|
+
printf("(UNO_MINIMIZE, UNO_MULTIPLIER_POSITIVE) passed.\n");
|
|
207
|
+
solve_instance(UNO_MAXIMIZE, UNO_MULTIPLIER_NEGATIVE, -reference_objective,
|
|
208
|
+
reference_primal_solution, reference_constraint_dual_solution_positive,
|
|
209
|
+
reference_lower_bound_dual_solution, reference_upper_bound_dual_solution_positive);
|
|
210
|
+
printf("(UNO_MAXIMIZE, UNO_MULTIPLIER_NEGATIVE) passed.\n");
|
|
211
|
+
solve_instance(UNO_MAXIMIZE, UNO_MULTIPLIER_POSITIVE, -reference_objective,
|
|
212
|
+
reference_primal_solution, reference_constraint_dual_solution_negative,
|
|
213
|
+
reference_lower_bound_dual_solution, reference_upper_bound_dual_solution_negative);
|
|
214
|
+
printf("(UNO_MAXIMIZE, UNO_MULTIPLIER_POSITIVE) passed.\n");
|
|
215
|
+
|
|
216
|
+
return 0;
|
|
217
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
[deps]
|
|
2
|
+
AmplNLWriter = "7c4d4715-977e-5154-bfe0-e096adeac482"
|
|
3
|
+
MINLPTests = "ee0a3090-8ee9-5cdb-b8cb-8eeba3165522"
|
|
4
|
+
MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee"
|
|
5
|
+
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
|
|
6
|
+
JuMP = "4076af6c-e467-56ae-b986-b466b2749572"
|
|
7
|
+
|
|
8
|
+
[compat]
|
|
9
|
+
AmplNLWriter = "1"
|
|
10
|
+
MINLPTests = "0.6.1"
|
|
11
|
+
MathOptInterface = "1.33"
|
|
12
|
+
Test = "1.10"
|
|
13
|
+
JuMP = "1.28.0"
|
|
14
|
+
julia = "1.10"
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
using BinaryBuilder, Pkg
|
|
2
|
+
|
|
3
|
+
haskey(ENV, "UNO_RELEASE") || error("The environment variable UNO_RELEASE is not defined.")
|
|
4
|
+
haskey(ENV, "UNO_COMMIT") || error("The environment variable UNO_COMMIT is not defined.")
|
|
5
|
+
haskey(ENV, "UNO_URL") || error("The environment variable UNO_URL is not defined.")
|
|
6
|
+
|
|
7
|
+
name = "Uno"
|
|
8
|
+
version = VersionNumber(ENV["UNO_RELEASE"])
|
|
9
|
+
|
|
10
|
+
# Collection of sources required to complete build
|
|
11
|
+
sources = [
|
|
12
|
+
GitSource(ENV["UNO_URL"], ENV["UNO_COMMIT"]),
|
|
13
|
+
ArchiveSource("https://mumps-solver.org/MUMPS_5.8.0.tar.gz",
|
|
14
|
+
"d762eb8b1d9843a0993b8cfc137d043d04c7c51877ad37c94560433a474340a0"),
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
# Bash recipe for building across all platforms
|
|
18
|
+
script = raw"""
|
|
19
|
+
# Export dependencies
|
|
20
|
+
mkdir ${prefix}/deps
|
|
21
|
+
cd ${libdir}
|
|
22
|
+
for file in $(ls .); do
|
|
23
|
+
if [[ -f $file ]]; then
|
|
24
|
+
if [[ -z $(ls -la $file | grep 'artifacts') ]]; then
|
|
25
|
+
cp -P ${file} ${prefix}/deps/${file}
|
|
26
|
+
else
|
|
27
|
+
cp -L ${file} ${prefix}/deps/${file}
|
|
28
|
+
fi
|
|
29
|
+
fi
|
|
30
|
+
done
|
|
31
|
+
cd ${prefix}
|
|
32
|
+
cp -rL share/licenses deps/licenses
|
|
33
|
+
mkdir deps/licenses/MUMPS
|
|
34
|
+
cp $WORKSPACE/srcdir/MUMPS_5.8.0/LICENSE deps/licenses/MUMPS/LICENSE
|
|
35
|
+
chmod -R u=rwx deps
|
|
36
|
+
tar -czvf deps.tar.gz deps
|
|
37
|
+
rm -r deps
|
|
38
|
+
|
|
39
|
+
# Compile MUMPS
|
|
40
|
+
mkdir -p ${libdir}
|
|
41
|
+
cd $WORKSPACE/srcdir/MUMPS*
|
|
42
|
+
|
|
43
|
+
makefile="Makefile.G95.SEQ"
|
|
44
|
+
cp Make.inc/${makefile} Makefile.inc
|
|
45
|
+
|
|
46
|
+
# Add `-fallow-argument-mismatch` if supported
|
|
47
|
+
: >empty.f
|
|
48
|
+
FFLAGS=()
|
|
49
|
+
if gfortran -c -fallow-argument-mismatch empty.f >/dev/null 2>&1; then
|
|
50
|
+
FFLAGS+=("-fallow-argument-mismatch")
|
|
51
|
+
fi
|
|
52
|
+
rm -f empty.*
|
|
53
|
+
|
|
54
|
+
if [[ "${target}" == *apple* ]]; then
|
|
55
|
+
SONAME="-install_name"
|
|
56
|
+
else
|
|
57
|
+
SONAME="-soname"
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
make_args+=(OPTF="-O3"
|
|
61
|
+
OPTL="-O3"
|
|
62
|
+
OPTC="-O3"
|
|
63
|
+
CDEFS=-DAdd_
|
|
64
|
+
LMETISDIR=${libdir}
|
|
65
|
+
IMETIS=-I${includedir}
|
|
66
|
+
LMETIS="-L${libdir} -lmetis"
|
|
67
|
+
ORDERINGSF="-Dpord -Dmetis"
|
|
68
|
+
LIBEXT_SHARED=".${dlext}"
|
|
69
|
+
SHARED_OPT="-shared"
|
|
70
|
+
SONAME="${SONAME}"
|
|
71
|
+
CC="$CC ${CFLAGS[@]}"
|
|
72
|
+
FC="gfortran ${FFLAGS[@]}"
|
|
73
|
+
FL="gfortran"
|
|
74
|
+
RANLIB="echo"
|
|
75
|
+
LIBBLAS="-L${libdir} -lopenblas"
|
|
76
|
+
LAPACK="-L${libdir} -lopenblas")
|
|
77
|
+
|
|
78
|
+
make -j${nproc} dshared "${make_args[@]}"
|
|
79
|
+
|
|
80
|
+
mkdir ${includedir}/libseq
|
|
81
|
+
cp include/*.h ${includedir}
|
|
82
|
+
cp libseq/*.h ${includedir}/libseq
|
|
83
|
+
cp lib/*.${dlext} ${libdir}
|
|
84
|
+
|
|
85
|
+
# Compile Uno
|
|
86
|
+
cd $WORKSPACE/srcdir/Uno
|
|
87
|
+
mkdir -p build
|
|
88
|
+
cd build
|
|
89
|
+
|
|
90
|
+
if [[ "${target}" == *mingw* ]]; then
|
|
91
|
+
HIGHS_DIR=${prefix}/lib
|
|
92
|
+
else
|
|
93
|
+
HIGHS_DIR=${libdir}
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
if [[ "${target}" == *apple* ]] || [[ "${target}" == *freebsd* ]]; then
|
|
97
|
+
OMP=omp
|
|
98
|
+
else
|
|
99
|
+
OMP=gomp
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
cmake \
|
|
103
|
+
-DCMAKE_INSTALL_PREFIX=${prefix} \
|
|
104
|
+
-DCMAKE_PREFIX_PATH=${libdir} \
|
|
105
|
+
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
|
|
106
|
+
-DCMAKE_BUILD_TYPE=Release \
|
|
107
|
+
-DAMPLSOLVER=${libdir}/libasl.${dlext} \
|
|
108
|
+
-DHIGHS_DIR=${HIGHS_DIR} \
|
|
109
|
+
-DBQPD=${prefix}/lib/libbqpd.a \
|
|
110
|
+
-DHSL=${libdir}/libhsl.${dlext} \
|
|
111
|
+
-DMUMPS_INCLUDE_DIR=${includedir} \
|
|
112
|
+
-DMETIS_INCLUDE_DIR=${includedir} \
|
|
113
|
+
-DMUMPS_LIBRARY="${libdir}/libdmumps.${dlext}" \
|
|
114
|
+
-DMUMPS_COMMON_LIBRARY="${libdir}/libmumps_common.${dlext}" \
|
|
115
|
+
-DMUMPS_PORD_LIBRARY="${libdir}/libpord.${dlext}" \
|
|
116
|
+
-DMUMPS_MPISEQ_LIBRARY="${libdir}/libmpiseq.${dlext}" \
|
|
117
|
+
-DBLAS_LIBRARIES="${libdir}/libopenblas.${dlext}" \
|
|
118
|
+
-DLAPACK_LIBRARIES="${libdir}/libopenblas.${dlext}" \
|
|
119
|
+
-DBUILD_STATIC_LIBS=ON \
|
|
120
|
+
-DBUILD_SHARED_LIBS=ON \
|
|
121
|
+
..
|
|
122
|
+
|
|
123
|
+
make uno_ampl -j${nproc}
|
|
124
|
+
make install
|
|
125
|
+
|
|
126
|
+
# Uno
|
|
127
|
+
install_license ${WORKSPACE}/srcdir/Uno/LICENSE
|
|
128
|
+
"""
|
|
129
|
+
|
|
130
|
+
# These are the platforms we will build for by default, unless further
|
|
131
|
+
# platforms are passed in on the command line
|
|
132
|
+
platforms = supported_platforms()
|
|
133
|
+
platforms = expand_gfortran_versions(platforms)
|
|
134
|
+
|
|
135
|
+
# The products that we will ensure are always built
|
|
136
|
+
products = [
|
|
137
|
+
LibraryProduct("libdmumps", :libdmumps),
|
|
138
|
+
ExecutableProduct("uno_ampl", :amplexe),
|
|
139
|
+
LibraryProduct("libuno", :libuno),
|
|
140
|
+
FileProduct("lib/libuno.a", :libuno_a),
|
|
141
|
+
]
|
|
142
|
+
|
|
143
|
+
# Dependencies that must be installed before this package can be built
|
|
144
|
+
dependencies = [
|
|
145
|
+
BuildDependency(PackageSpec(name="BQPD_jll", uuid="1325ac01-0a49-589f-8355-43321054aaab")),
|
|
146
|
+
Dependency(PackageSpec(name="HiGHS_jll", uuid="8fd58aa0-07eb-5a78-9b36-339c94fd15ea"), compat="=1.12.0"),
|
|
147
|
+
Dependency(PackageSpec(name="HSL_jll", uuid="017b0a0e-03f4-516a-9b91-836bbd1904dd")),
|
|
148
|
+
Dependency(PackageSpec(name="METIS_jll", uuid="d00139f3-1899-568f-a2f0-47f597d42d70")),
|
|
149
|
+
Dependency(PackageSpec(name="ASL_jll", uuid="ae81ac8f-d209-56e5-92de-9978fef736f9"), compat="0.1.3"),
|
|
150
|
+
Dependency(PackageSpec(name="OpenBLAS32_jll", uuid="656ef2d0-ae68-5445-9ca0-591084a874a2")),
|
|
151
|
+
# For OpenMP we use libomp from `LLVMOpenMP_jll` where we use LLVM as compiler (BSD systems),
|
|
152
|
+
# and libgomp from `CompilerSupportLibraries_jll` everywhere else.
|
|
153
|
+
Dependency(PackageSpec(name="CompilerSupportLibraries_jll", uuid="e66e0078-7015-5450-92f7-15fbd957f2ae"); platforms=filter(!Sys.isbsd, platforms)),
|
|
154
|
+
Dependency(PackageSpec(name="LLVMOpenMP_jll", uuid="1d63c593-3942-5779-bab2-d838dc0a180e"); platforms=filter(Sys.isbsd, platforms)),
|
|
155
|
+
HostBuildDependency(PackageSpec(name="CMake_jll", uuid="3f4e10e2-61f2-5801-8945-23b9d642d0e6")),
|
|
156
|
+
]
|
|
157
|
+
|
|
158
|
+
build_tarballs(
|
|
159
|
+
ARGS,
|
|
160
|
+
name,
|
|
161
|
+
version,
|
|
162
|
+
sources,
|
|
163
|
+
script,
|
|
164
|
+
platforms,
|
|
165
|
+
products,
|
|
166
|
+
dependencies;
|
|
167
|
+
julia_compat = "1.6",
|
|
168
|
+
preferred_gcc_version = v"10.2.0",
|
|
169
|
+
clang_use_lld=false,
|
|
170
|
+
)
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Note that this script can accept some limited command-line arguments, run
|
|
2
|
+
# `julia build_tarballs.jl --help` to see a usage message.
|
|
3
|
+
using BinaryBuilder, Pkg
|
|
4
|
+
|
|
5
|
+
haskey(ENV, "UNO_RELEASE") || error("The environment variable UNO_RELEASE is not defined.")
|
|
6
|
+
haskey(ENV, "UNO_COMMIT") || error("The environment variable UNO_COMMIT is not defined.")
|
|
7
|
+
haskey(ENV, "UNO_URL") || error("The environment variable UNO_URL is not defined.")
|
|
8
|
+
|
|
9
|
+
name = "Uno"
|
|
10
|
+
version = VersionNumber(ENV["UNO_RELEASE"])
|
|
11
|
+
|
|
12
|
+
# Collection of sources required to complete build
|
|
13
|
+
sources = [
|
|
14
|
+
GitSource(ENV["UNO_URL"], ENV["UNO_COMMIT"]),
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
# The remainder of the file is similar to the content found at the following link:
|
|
18
|
+
# https://raw.githubusercontent.com/JuliaPackaging/Yggdrasil/refs/heads/master/U/Uno/build_tarballs.jl
|
|
19
|
+
script = raw"""
|
|
20
|
+
cd $WORKSPACE/srcdir/Uno
|
|
21
|
+
mkdir -p build
|
|
22
|
+
cd build
|
|
23
|
+
|
|
24
|
+
if [[ "${target}" == *mingw* ]]; then
|
|
25
|
+
LBT=blastrampoline-5
|
|
26
|
+
HIGHS_DIR=${prefix}/lib
|
|
27
|
+
else
|
|
28
|
+
LBT=blastrampoline
|
|
29
|
+
HIGHS_DIR=${libdir}
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
if [[ "${target}" == *apple* ]] || [[ "${target}" == *freebsd* ]]; then
|
|
33
|
+
OMP=omp
|
|
34
|
+
else
|
|
35
|
+
OMP=gomp
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
cmake \
|
|
39
|
+
-DCMAKE_INSTALL_PREFIX=${prefix} \
|
|
40
|
+
-DCMAKE_PREFIX_PATH=${libdir} \
|
|
41
|
+
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
|
|
42
|
+
-DCMAKE_BUILD_TYPE=Debug \
|
|
43
|
+
-DAMPLSOLVER=${libdir}/libasl.${dlext} \
|
|
44
|
+
-DHIGHS_DIR=${HIGHS_DIR} \
|
|
45
|
+
-DBQPD=${prefix}/lib/libbqpd.a \
|
|
46
|
+
-DHSL=${libdir}/libhsl.${dlext} \
|
|
47
|
+
-DBLA_VENDOR="libblastrampoline" \
|
|
48
|
+
-DMUMPS_INCLUDE_DIR=${includedir} \
|
|
49
|
+
-DMETIS_INCLUDE_DIR=${includedir} \
|
|
50
|
+
-DMUMPS_LIBRARY="${libdir}/libdmumps.${dlext}" \
|
|
51
|
+
-DMUMPS_COMMON_LIBRARY="${libdir}/libmumps_common.${dlext}" \
|
|
52
|
+
-DMUMPS_PORD_LIBRARY="${libdir}/libpord.${dlext}" \
|
|
53
|
+
-DMUMPS_MPISEQ_LIBRARY="${libdir}/libmpiseq.${dlext}" \
|
|
54
|
+
-DBLAS_LIBRARIES="${libdir}/lib${LBT}.${dlext}" \
|
|
55
|
+
-DLAPACK_LIBRARIES="${libdir}/lib${LBT}.${dlext}" \
|
|
56
|
+
-DBUILD_STATIC_LIBS=ON \
|
|
57
|
+
-DBUILD_SHARED_LIBS=ON \
|
|
58
|
+
..
|
|
59
|
+
|
|
60
|
+
make uno_ampl -j${nproc}
|
|
61
|
+
make install
|
|
62
|
+
|
|
63
|
+
# Uno
|
|
64
|
+
install_license ${WORKSPACE}/srcdir/Uno/LICENSE
|
|
65
|
+
|
|
66
|
+
# BQPD
|
|
67
|
+
cp ${prefix}/share/licenses/BQPD/LICENSE ${WORKSPACE}/srcdir/Uno/LICENSE_BQPD
|
|
68
|
+
install_license ${WORKSPACE}/srcdir/Uno/LICENSE_BQPD
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
platforms = supported_platforms()
|
|
72
|
+
filter!(p -> !(Sys.isfreebsd(p) && arch(p) == "aarch64"), platforms)
|
|
73
|
+
platforms = expand_cxxstring_abis(platforms)
|
|
74
|
+
platforms = expand_gfortran_versions(platforms)
|
|
75
|
+
|
|
76
|
+
products = [
|
|
77
|
+
# This LibraryProduct may be useful once Uno provides a C API. We omit it for now.
|
|
78
|
+
# LibraryProduct("libuno", :libuno),
|
|
79
|
+
# We call this amplexe to match the convention of other JLL packages (like Ipopt_jll) that provide AMPL wrappers
|
|
80
|
+
ExecutableProduct("uno_ampl", :amplexe),
|
|
81
|
+
LibraryProduct("libuno", :libuno),
|
|
82
|
+
FileProduct("lib/libuno.a", :libuno_a),
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
dependencies = [
|
|
86
|
+
BuildDependency(PackageSpec(name="BQPD_jll", uuid="1325ac01-0a49-589f-8355-43321054aaab")),
|
|
87
|
+
Dependency(PackageSpec(name="HiGHS_jll", uuid="8fd58aa0-07eb-5a78-9b36-339c94fd15ea"), compat="1.12.0"),
|
|
88
|
+
Dependency(PackageSpec(name="HSL_jll", uuid="017b0a0e-03f4-516a-9b91-836bbd1904dd")),
|
|
89
|
+
Dependency(PackageSpec(name="METIS_jll", uuid="d00139f3-1899-568f-a2f0-47f597d42d70")),
|
|
90
|
+
Dependency(PackageSpec(name="ASL_jll", uuid="ae81ac8f-d209-56e5-92de-9978fef736f9"), compat="0.1.3"),
|
|
91
|
+
Dependency(PackageSpec(name="MUMPS_seq_jll", uuid="d7ed1dd3-d0ae-5e8e-bfb4-87a502085b8d")),
|
|
92
|
+
Dependency(PackageSpec(name="libblastrampoline_jll", uuid="8e850b90-86db-534c-a0d3-1478176c7d93"), compat="5.4.0"),
|
|
93
|
+
# For OpenMP we use libomp from `LLVMOpenMP_jll` where we use LLVM as compiler (BSD systems),
|
|
94
|
+
# and libgomp from `CompilerSupportLibraries_jll` everywhere else.
|
|
95
|
+
Dependency(PackageSpec(name="CompilerSupportLibraries_jll", uuid="e66e0078-7015-5450-92f7-15fbd957f2ae"); platforms=filter(!Sys.isbsd, platforms)),
|
|
96
|
+
Dependency(PackageSpec(name="LLVMOpenMP_jll", uuid="1d63c593-3942-5779-bab2-d838dc0a180e"); platforms=filter(Sys.isbsd, platforms)),
|
|
97
|
+
|
|
98
|
+
# We need at least 3.29 (Ygg version), or 3.30 upstream version for LBT support,
|
|
99
|
+
# so always pull the most recent CMake version.
|
|
100
|
+
HostBuildDependency(PackageSpec(name="CMake_jll", uuid="3f4e10e2-61f2-5801-8945-23b9d642d0e6")),
|
|
101
|
+
]
|
|
102
|
+
|
|
103
|
+
build_tarballs(
|
|
104
|
+
ARGS,
|
|
105
|
+
name,
|
|
106
|
+
version,
|
|
107
|
+
sources,
|
|
108
|
+
script,
|
|
109
|
+
platforms,
|
|
110
|
+
products,
|
|
111
|
+
dependencies;
|
|
112
|
+
julia_compat = "1.9",
|
|
113
|
+
preferred_gcc_version = v"10.2.0",
|
|
114
|
+
clang_use_lld=false,
|
|
115
|
+
)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Version
|
|
2
|
+
haskey(ENV, "UNO_RELEASE") || error("The environment variable UNO_RELEASE is not defined.")
|
|
3
|
+
version = VersionNumber(ENV["UNO_RELEASE"])
|
|
4
|
+
version2 = ENV["UNO_RELEASE"]
|
|
5
|
+
package = "Uno"
|
|
6
|
+
|
|
7
|
+
platforms = [
|
|
8
|
+
("aarch64-apple-darwin-cxx11" , "lib", "dylib"),
|
|
9
|
+
("aarch64-linux-gnu-cxx11" , "lib", "so" ),
|
|
10
|
+
# ("aarch64-linux-musl-cxx11" , "lib", "so" ),
|
|
11
|
+
# ("powerpc64le-linux-gnu-cxx11" , "lib", "so" ),
|
|
12
|
+
("x86_64-apple-darwin-cxx11" , "lib", "dylib"),
|
|
13
|
+
("x86_64-linux-gnu-cxx11" , "lib", "so" ),
|
|
14
|
+
# ("x86_64-linux-musl-cxx11" , "lib", "so" ),
|
|
15
|
+
# ("x86_64-unknown-freebsd-cxx11", "lib", "so" ),
|
|
16
|
+
("x86_64-w64-mingw32-cxx11" , "bin", "dll" ),
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
for (platform, libdir, ext) in platforms
|
|
20
|
+
|
|
21
|
+
tarball_name = "$package.v$version.$platform.tar.gz"
|
|
22
|
+
|
|
23
|
+
if isfile("products/$(tarball_name)")
|
|
24
|
+
# Unzip the tarball generated by BinaryBuilder.jl
|
|
25
|
+
isdir("products/$platform") && rm("products/$platform", recursive=true)
|
|
26
|
+
mkdir("products/$platform")
|
|
27
|
+
run(`tar -xzf products/$(tarball_name) -C products/$platform`)
|
|
28
|
+
|
|
29
|
+
if isfile("products/$platform/deps.tar.gz")
|
|
30
|
+
# Unzip the tarball of the dependencies
|
|
31
|
+
run(`tar -xzf products/$platform/deps.tar.gz -C products/$platform`)
|
|
32
|
+
|
|
33
|
+
# Copy the license of each dependency
|
|
34
|
+
for folder in readdir("products/$platform/deps/licenses")
|
|
35
|
+
cp("products/$platform/deps/licenses/$folder", "products/$platform/share/licenses/$folder")
|
|
36
|
+
end
|
|
37
|
+
rm("products/$platform/deps/licenses", recursive=true)
|
|
38
|
+
|
|
39
|
+
# Copy the shared library of each dependency
|
|
40
|
+
for file in readdir("products/$platform/deps")
|
|
41
|
+
cp("products/$platform/deps/$file", "products/$platform/$libdir/$file")
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Remove the folder used to unzip the tarball of the dependencies
|
|
45
|
+
rm("products/$platform/deps", recursive=true)
|
|
46
|
+
rm("products/$platform/deps.tar.gz", recursive=true)
|
|
47
|
+
|
|
48
|
+
# Create the archives *_binaries
|
|
49
|
+
isfile("$(package)_binaries.$version2.$platform.tar.gz") && rm("$(package)_binaries.$version2.$platform.tar.gz")
|
|
50
|
+
isfile("$(package)_binaries.$version2.$platform.zip") && rm("$(package)_binaries.$version2.$platform.zip")
|
|
51
|
+
cd("products/$platform")
|
|
52
|
+
|
|
53
|
+
# Create a folder with the version number of the package
|
|
54
|
+
mkdir("$(package)_binaries.$version2")
|
|
55
|
+
for folder in ("lib", "bin", "share")
|
|
56
|
+
cp(folder, "$(package)_binaries.$version2/$folder")
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
cd("$(package)_binaries.$version2")
|
|
60
|
+
if ext == "dll"
|
|
61
|
+
run(`zip -r --symlinks ../../../$(package)_binaries.$version2.$platform.zip lib bin share`)
|
|
62
|
+
else
|
|
63
|
+
run(`tar -czf ../../../$(package)_binaries.$version2.$platform.tar.gz lib bin share`)
|
|
64
|
+
end
|
|
65
|
+
cd("../../..")
|
|
66
|
+
|
|
67
|
+
# Remove the folder used to unzip the tarball generated by BinaryBuilder.jl
|
|
68
|
+
rm("products/$platform", recursive=true)
|
|
69
|
+
else
|
|
70
|
+
@warn("The tarball deps.tar.gz is missing in $(tarball_name)!")
|
|
71
|
+
end
|
|
72
|
+
# else
|
|
73
|
+
# @warn("The tarball for the platform $platform was not generated!")
|
|
74
|
+
end
|
|
75
|
+
end
|