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.
Files changed (585) hide show
  1. unopy-0.1.0/.github/C/CMakeLists.txt +25 -0
  2. unopy-0.1.0/.github/C/tests_hs015.c +217 -0
  3. unopy-0.1.0/.github/FUNDING.yml +3 -0
  4. unopy-0.1.0/.github/julia/.gitignore +2 -0
  5. unopy-0.1.0/.github/julia/Project.toml +14 -0
  6. unopy-0.1.0/.github/julia/build_tarballs_release.jl +170 -0
  7. unopy-0.1.0/.github/julia/build_tarballs_yggdrasil.jl +115 -0
  8. unopy-0.1.0/.github/julia/generate_binaries.jl +75 -0
  9. unopy-0.1.0/.github/julia/runtests_uno_filterslp_bqpd.jl +66 -0
  10. unopy-0.1.0/.github/julia/runtests_uno_filterslp_highs.jl +66 -0
  11. unopy-0.1.0/.github/julia/runtests_uno_filtersqp_bqpd.jl +123 -0
  12. unopy-0.1.0/.github/julia/runtests_uno_filtersqp_bqpd_charlies_instances.jl +109 -0
  13. unopy-0.1.0/.github/julia/runtests_uno_filtersqp_bqpd_identity.jl +129 -0
  14. unopy-0.1.0/.github/julia/runtests_uno_filtersqp_bqpd_regularization_ls.jl +126 -0
  15. unopy-0.1.0/.github/julia/runtests_uno_filtersqp_bqpd_regularization_tr.jl +126 -0
  16. unopy-0.1.0/.github/julia/runtests_uno_filtersqp_highs.jl +48 -0
  17. unopy-0.1.0/.github/julia/runtests_uno_ipopt_ma27.jl +120 -0
  18. unopy-0.1.0/.github/julia/runtests_uno_ipopt_ma57.jl +120 -0
  19. unopy-0.1.0/.github/julia/runtests_uno_ipopt_mumps.jl +120 -0
  20. unopy-0.1.0/.github/julia/runtests_uno_ipopt_mumps_identity.jl +128 -0
  21. unopy-0.1.0/.github/workflows/C-test-example.yml +74 -0
  22. unopy-0.1.0/.github/workflows/C-tests-linux.yml +77 -0
  23. unopy-0.1.0/.github/workflows/Fortran-tests-linux.yml +63 -0
  24. unopy-0.1.0/.github/workflows/build-cross-compiler.yml +62 -0
  25. unopy-0.1.0/.github/workflows/build-macos.yml +79 -0
  26. unopy-0.1.0/.github/workflows/build-msvc.yml +96 -0
  27. unopy-0.1.0/.github/workflows/build-python-wheels.yml +96 -0
  28. unopy-0.1.0/.github/workflows/build-windows.yml +73 -0
  29. unopy-0.1.0/.github/workflows/julia-tests-hsl.yml +104 -0
  30. unopy-0.1.0/.github/workflows/julia-tests-jll.yml +52 -0
  31. unopy-0.1.0/.github/workflows/julia-tests-ubuntu.yml +66 -0
  32. unopy-0.1.0/.github/workflows/julia-tests-uno.yml +65 -0
  33. unopy-0.1.0/.github/workflows/julia-wrappers.yml +40 -0
  34. unopy-0.1.0/.github/workflows/release.yml +239 -0
  35. unopy-0.1.0/.github/workflows/unit-tests-linux.yml +77 -0
  36. unopy-0.1.0/.github/workflows/unit-tests-macos.yml +59 -0
  37. unopy-0.1.0/.github/workflows/unit-tests-msvc.yml +92 -0
  38. unopy-0.1.0/.github/workflows/unopy-test-example.yml +52 -0
  39. unopy-0.1.0/.readthedocs.yaml +15 -0
  40. unopy-0.1.0/CITATION.cff +20 -0
  41. unopy-0.1.0/CMakeLists.txt +343 -0
  42. unopy-0.1.0/INSTALL.md +114 -0
  43. unopy-0.1.0/LICENSE +21 -0
  44. unopy-0.1.0/PKG-INFO +123 -0
  45. unopy-0.1.0/README.md +100 -0
  46. unopy-0.1.0/UNIFICATION.md +16 -0
  47. unopy-0.1.0/cmake/FindBLACS.cmake +31 -0
  48. unopy-0.1.0/cmake/FindMETIS.cmake +32 -0
  49. unopy-0.1.0/cmake/FindMUMPS.cmake +51 -0
  50. unopy-0.1.0/cmake/FindSCOTCH.cmake +41 -0
  51. unopy-0.1.0/cmake/FindScaLAPACK.cmake +28 -0
  52. unopy-0.1.0/cmake/LibFindMacros.cmake +103 -0
  53. unopy-0.1.0/docs/developers/checklists.md +40 -0
  54. unopy-0.1.0/docs/figures/combination_hypergraph.pdf +0 -0
  55. unopy-0.1.0/docs/figures/combination_hypergraph.png +0 -0
  56. unopy-0.1.0/docs/figures/hypergraph_uno.pdf +0 -0
  57. unopy-0.1.0/docs/figures/hypergraph_uno.png +0 -0
  58. unopy-0.1.0/docs/figures/logo.png +0 -0
  59. unopy-0.1.0/docs/figures/uno_performance_profile.png +0 -0
  60. unopy-0.1.0/docs/figures/wheel.png +0 -0
  61. unopy-0.1.0/docs/index.md +6 -0
  62. unopy-0.1.0/docs/options.irace +106 -0
  63. unopy-0.1.0/docs/options.json +527 -0
  64. unopy-0.1.0/docs/options.md +137 -0
  65. unopy-0.1.0/docs/options_parsed.tsv +106 -0
  66. unopy-0.1.0/interfaces/AMPL/AMPLModel.cpp +362 -0
  67. unopy-0.1.0/interfaces/AMPL/AMPLModel.hpp +129 -0
  68. unopy-0.1.0/interfaces/AMPL/README.md +14 -0
  69. unopy-0.1.0/interfaces/AMPL/examples/hs015.mod +12 -0
  70. unopy-0.1.0/interfaces/AMPL/examples/hs015.nl +54 -0
  71. unopy-0.1.0/interfaces/AMPL/examples/polak5.mod +29 -0
  72. unopy-0.1.0/interfaces/AMPL/examples/polak5.nl +71 -0
  73. unopy-0.1.0/interfaces/AMPL/uno_ampl.cpp +101 -0
  74. unopy-0.1.0/interfaces/C/README.md +177 -0
  75. unopy-0.1.0/interfaces/C/Uno_C_API.cpp +1051 -0
  76. unopy-0.1.0/interfaces/C/Uno_C_API.h +362 -0
  77. unopy-0.1.0/interfaces/C/example/CMakeLists.txt +25 -0
  78. unopy-0.1.0/interfaces/C/example/example_hs015.c +142 -0
  79. unopy-0.1.0/interfaces/C/uno_int.h +19 -0
  80. unopy-0.1.0/interfaces/Fortran/test_uno.f90 +6 -0
  81. unopy-0.1.0/interfaces/Fortran/uno.f90 +697 -0
  82. unopy-0.1.0/interfaces/Julia/LICENSE +21 -0
  83. unopy-0.1.0/interfaces/Julia/Project.toml +34 -0
  84. unopy-0.1.0/interfaces/Julia/README.md +200 -0
  85. unopy-0.1.0/interfaces/Julia/ext/UnoSolverMathOptInterfaceExt/MOI_utils.jl +691 -0
  86. unopy-0.1.0/interfaces/Julia/ext/UnoSolverMathOptInterfaceExt/MOI_wrapper.jl +1679 -0
  87. unopy-0.1.0/interfaces/Julia/ext/UnoSolverMathOptInterfaceExt/UnoSolverMathOptInterfaceExt.jl +14 -0
  88. unopy-0.1.0/interfaces/Julia/ext/UnoSolverNLPModelsExt/UnoSolverNLPModelsExt.jl +104 -0
  89. unopy-0.1.0/interfaces/Julia/gen/Project.toml +8 -0
  90. unopy-0.1.0/interfaces/Julia/gen/README.md +28 -0
  91. unopy-0.1.0/interfaces/Julia/gen/prologue.jl +44 -0
  92. unopy-0.1.0/interfaces/Julia/gen/uno.toml +11 -0
  93. unopy-0.1.0/interfaces/Julia/gen/wrapper.jl +44 -0
  94. unopy-0.1.0/interfaces/Julia/src/C_wrapper.jl +304 -0
  95. unopy-0.1.0/interfaces/Julia/src/UnoSolver.jl +26 -0
  96. unopy-0.1.0/interfaces/Julia/src/libuno.jl +304 -0
  97. unopy-0.1.0/interfaces/Julia/test/C_wrapper.jl +317 -0
  98. unopy-0.1.0/interfaces/Julia/test/MOI_wrapper.jl +1164 -0
  99. unopy-0.1.0/interfaces/Julia/test/NLP_wrapper.jl +80 -0
  100. unopy-0.1.0/interfaces/Julia/test/runtests.jl +18 -0
  101. unopy-0.1.0/interfaces/Python/README.md +112 -0
  102. unopy-0.1.0/interfaces/Python/cpp_classes/PythonModel.cpp +322 -0
  103. unopy-0.1.0/interfaces/Python/cpp_classes/PythonModel.hpp +93 -0
  104. unopy-0.1.0/interfaces/Python/cpp_classes/UnoSolverWrapper.cpp +19 -0
  105. unopy-0.1.0/interfaces/Python/cpp_classes/UnoSolverWrapper.hpp +23 -0
  106. unopy-0.1.0/interfaces/Python/dependencies/bqpd/bin/qpsolve +0 -0
  107. unopy-0.1.0/interfaces/Python/dependencies/bqpd/bin/qpsolve_dense +0 -0
  108. unopy-0.1.0/interfaces/Python/dependencies/bqpd/bqpd.tar.gz +0 -0
  109. unopy-0.1.0/interfaces/Python/dependencies/bqpd/lib/libbqpd.a +0 -0
  110. unopy-0.1.0/interfaces/Python/dependencies/bqpd/lib/libbqpd_dense.a +0 -0
  111. unopy-0.1.0/interfaces/Python/dependencies/bqpd/share/licenses/BQPD/LICENSE +32 -0
  112. unopy-0.1.0/interfaces/Python/dependencies/highs/bin/highs +0 -0
  113. unopy-0.1.0/interfaces/Python/dependencies/highs/highs.tar.gz +0 -0
  114. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/HConfig.h +20 -0
  115. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/Highs.h +1712 -0
  116. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/filereaderlp/builder.hpp +25 -0
  117. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/filereaderlp/def.hpp +19 -0
  118. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/filereaderlp/model.hpp +68 -0
  119. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/filereaderlp/reader.hpp +10 -0
  120. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/interfaces/highs_c_api.h +2519 -0
  121. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/Filereader.h +45 -0
  122. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/FilereaderEms.h +30 -0
  123. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/FilereaderLp.h +51 -0
  124. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/FilereaderMps.h +27 -0
  125. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/HMPSIO.h +78 -0
  126. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/HMpsFF.h +239 -0
  127. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/HighsIO.h +112 -0
  128. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/io/LoadOptions.h +24 -0
  129. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/IpxSolution.h +32 -0
  130. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/IpxWrapper.h +70 -0
  131. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu.h +161 -0
  132. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_factorize.h +247 -0
  133. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_get_factors.h +108 -0
  134. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_initialize.h +119 -0
  135. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_factorize.h +34 -0
  136. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_free.h +19 -0
  137. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_get_factors.h +34 -0
  138. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_initialize.h +46 -0
  139. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_solve_dense.h +29 -0
  140. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_solve_for_update.h +42 -0
  141. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_solve_sparse.h +32 -0
  142. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_obj_update.h +31 -0
  143. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_object.h +30 -0
  144. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_solve_dense.h +75 -0
  145. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_solve_for_update.h +169 -0
  146. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_solve_sparse.h +112 -0
  147. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/basiclu_update.h +125 -0
  148. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/lu_def.h +39 -0
  149. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/lu_file.h +21 -0
  150. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/lu_internal.h +220 -0
  151. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/basiclu/lu_list.h +168 -0
  152. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/basiclu_kernel.h +20 -0
  153. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/basiclu_wrapper.h +47 -0
  154. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/basis.h +351 -0
  155. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/conjugate_residuals.h +74 -0
  156. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/control.h +164 -0
  157. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/crossover.h +157 -0
  158. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/diagonal_precond.h +45 -0
  159. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/forrest_tomlin.h +102 -0
  160. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/guess_basis.h +21 -0
  161. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/indexed_vector.h +113 -0
  162. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/info.h +27 -0
  163. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipm.h +94 -0
  164. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipx_c.h +47 -0
  165. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipx_config.h +9 -0
  166. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipx_info.h +111 -0
  167. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipx_internal.h +89 -0
  168. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipx_parameters.h +76 -0
  169. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/ipx_status.h +57 -0
  170. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/iterate.h +328 -0
  171. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/kkt_solver.h +70 -0
  172. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/kkt_solver_basis.h +66 -0
  173. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/kkt_solver_diag.h +48 -0
  174. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/linear_operator.h +26 -0
  175. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/lp_solver.h +202 -0
  176. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/lu_factorization.h +79 -0
  177. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/lu_update.h +129 -0
  178. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/maxvolume.h +54 -0
  179. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/model.h +413 -0
  180. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/multistream.h +52 -0
  181. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/normal_matrix.h +44 -0
  182. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/power_method.h +44 -0
  183. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/sparse_matrix.h +195 -0
  184. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/sparse_utils.h +58 -0
  185. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/splitted_normal_matrix.h +63 -0
  186. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/starting_basis.h +39 -0
  187. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/symbolic_invert.h +29 -0
  188. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/timer.h +24 -0
  189. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/ipm/ipx/utils.h +39 -0
  190. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HConst.h +334 -0
  191. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HStruct.h +185 -0
  192. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsAnalysis.h +23 -0
  193. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsCallback.h +104 -0
  194. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsCallbackStruct.h +70 -0
  195. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsDebug.h +34 -0
  196. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsIis.h +62 -0
  197. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsInfo.h +419 -0
  198. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsInfoDebug.h +27 -0
  199. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsLp.h +101 -0
  200. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsLpSolverObject.h +45 -0
  201. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsLpUtils.h +298 -0
  202. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsModelUtils.h +112 -0
  203. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsOptions.h +1565 -0
  204. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsRanging.h +43 -0
  205. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsSolution.h +161 -0
  206. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsSolutionDebug.h +87 -0
  207. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsSolve.h +23 -0
  208. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/lp_data/HighsStatus.h +29 -0
  209. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsCliqueTable.h +318 -0
  210. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsConflictPool.h +109 -0
  211. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsCutGeneration.h +108 -0
  212. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsCutPool.h +168 -0
  213. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsDebugSol.h +132 -0
  214. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsDomain.h +653 -0
  215. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsDomainChange.h +48 -0
  216. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsDynamicRowMatrix.h +104 -0
  217. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsGFkSolve.h +438 -0
  218. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsImplications.h +170 -0
  219. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsLpAggregator.h +50 -0
  220. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsLpRelaxation.h +357 -0
  221. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsMipAnalysis.h +52 -0
  222. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsMipSolver.h +112 -0
  223. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsMipSolverData.h +304 -0
  224. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsModkSeparator.h +60 -0
  225. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsNodeQueue.h +311 -0
  226. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsObjectiveFunction.h +71 -0
  227. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsPathSeparator.h +39 -0
  228. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsPrimalHeuristics.h +74 -0
  229. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsPseudocost.h +360 -0
  230. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsRedcostFixing.h +42 -0
  231. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsSearch.h +241 -0
  232. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsSeparation.h +41 -0
  233. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsSeparator.h +52 -0
  234. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsTableauSeparator.h +34 -0
  235. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/HighsTransformedLp.h +63 -0
  236. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/MipTimer.h +486 -0
  237. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/mip/feasibilityjump.hh +785 -0
  238. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/model/HighsHessian.h +54 -0
  239. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/model/HighsHessianUtils.h +49 -0
  240. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/model/HighsModel.h +52 -0
  241. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsBinarySemaphore.h +113 -0
  242. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsCacheAlign.h +87 -0
  243. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsCombinable.h +121 -0
  244. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsMutex.h +129 -0
  245. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsParallel.h +133 -0
  246. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsRaceTimer.h +43 -0
  247. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsSchedulerConstants.h +24 -0
  248. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsSpinMutex.h +53 -0
  249. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsSplitDeque.h +611 -0
  250. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsTask.h +175 -0
  251. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/parallel/HighsTaskExecutor.h +222 -0
  252. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/CupdlpWrapper.h +110 -0
  253. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_cs.h +40 -0
  254. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_defs.h +432 -0
  255. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_linalg.h +189 -0
  256. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_proj.h +19 -0
  257. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_restart.h +31 -0
  258. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_scaling.h +26 -0
  259. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_solver.h +105 -0
  260. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_step.h +37 -0
  261. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdlp/cupdlp/cupdlp_utils.c +1783 -0
  262. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/pdqsort/pdqsort.h +532 -0
  263. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/HPresolve.h +407 -0
  264. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/HPresolveAnalysis.h +51 -0
  265. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/HighsPostsolveStack.h +943 -0
  266. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/HighsSymmetry.h +281 -0
  267. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/ICrash.h +124 -0
  268. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/ICrashUtil.h +62 -0
  269. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/ICrashX.h +23 -0
  270. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/presolve/PresolveComponent.h +90 -0
  271. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/a_asm.hpp +70 -0
  272. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/a_quass.hpp +15 -0
  273. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/basis.hpp +152 -0
  274. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/crashsolution.hpp +13 -0
  275. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/dantzigpricing.hpp +73 -0
  276. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/devexpricing.hpp +101 -0
  277. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/eventhandler.hpp +23 -0
  278. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/factor.hpp +401 -0
  279. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/feasibility_bounded.hpp +107 -0
  280. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/feasibility_highs.hpp +294 -0
  281. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/gradient.hpp +39 -0
  282. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/instance.hpp +63 -0
  283. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/matrix.hpp +335 -0
  284. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/perturbation.hpp +8 -0
  285. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/pricing.hpp +15 -0
  286. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/qpconst.hpp +27 -0
  287. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/qpvector.hpp +235 -0
  288. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/quass.hpp +20 -0
  289. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/ratiotest.hpp +19 -0
  290. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/runtime.hpp +38 -0
  291. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/scaling.hpp +8 -0
  292. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/settings.hpp +76 -0
  293. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/snippets.hpp +29 -0
  294. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/statistics.hpp +23 -0
  295. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/qpsolver/steepestedgepricing.hpp +166 -0
  296. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HApp.h +484 -0
  297. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HEkk.h +416 -0
  298. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HEkkDual.h +513 -0
  299. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HEkkDualRHS.h +134 -0
  300. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HEkkDualRow.h +201 -0
  301. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HEkkPrimal.h +191 -0
  302. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HSimplex.h +42 -0
  303. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HSimplexDebug.h +48 -0
  304. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HSimplexNla.h +158 -0
  305. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HSimplexReport.h +21 -0
  306. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/HighsSimplexAnalysis.h +500 -0
  307. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/SimplexConst.h +273 -0
  308. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/SimplexStruct.h +261 -0
  309. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/simplex/SimplexTimer.h +409 -0
  310. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/test_kkt/DevKkt.h +143 -0
  311. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/test_kkt/KktCh2.h +79 -0
  312. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/FactorTimer.h +199 -0
  313. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HFactor.h +587 -0
  314. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HFactorConst.h +81 -0
  315. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HFactorDebug.h +55 -0
  316. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HSet.h +89 -0
  317. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HVector.h +22 -0
  318. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HVectorBase.h +102 -0
  319. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsCDouble.h +323 -0
  320. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsComponent.h +53 -0
  321. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsDataStack.h +83 -0
  322. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsDisjointSets.h +107 -0
  323. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsHash.h +1274 -0
  324. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsHashTree.h +1447 -0
  325. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsInt.h +36 -0
  326. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsIntegers.h +212 -0
  327. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsLinearSumBounds.h +191 -0
  328. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsMatrixPic.h +37 -0
  329. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsMatrixSlice.h +561 -0
  330. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsMatrixUtils.h +54 -0
  331. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsMemoryAllocation.h +63 -0
  332. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsRandom.h +242 -0
  333. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsRbTree.h +452 -0
  334. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsSort.h +131 -0
  335. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsSparseMatrix.h +150 -0
  336. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsSparseVectorSum.h +95 -0
  337. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsSplay.h +135 -0
  338. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsTimer.h +383 -0
  339. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/HighsUtils.h +217 -0
  340. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/util/stringutil.h +46 -0
  341. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/zstr/strict_fstream.hpp +237 -0
  342. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs/zstr/zstr.hpp +473 -0
  343. unopy-0.1.0/interfaces/Python/dependencies/highs/include/highs_export.h +43 -0
  344. unopy-0.1.0/interfaces/Python/dependencies/highs/lib/cmake/highs/highs-config-version.cmake +65 -0
  345. unopy-0.1.0/interfaces/Python/dependencies/highs/lib/cmake/highs/highs-config.cmake +26 -0
  346. unopy-0.1.0/interfaces/Python/dependencies/highs/lib/cmake/highs/highs-targets-release.cmake +28 -0
  347. unopy-0.1.0/interfaces/Python/dependencies/highs/lib/cmake/highs/highs-targets.cmake +118 -0
  348. unopy-0.1.0/interfaces/Python/dependencies/highs/lib/libhighs.a +0 -0
  349. unopy-0.1.0/interfaces/Python/dependencies/highs/lib/pkgconfig/highs.pc +12 -0
  350. unopy-0.1.0/interfaces/Python/dependencies/highs/share/licenses/HiGHS_static/LICENSE.txt +21 -0
  351. unopy-0.1.0/interfaces/Python/dependencies/mumps/bin/cmpfillin +0 -0
  352. unopy-0.1.0/interfaces/Python/dependencies/mumps/bin/gpmetis +0 -0
  353. unopy-0.1.0/interfaces/Python/dependencies/mumps/bin/graphchk +0 -0
  354. unopy-0.1.0/interfaces/Python/dependencies/mumps/bin/m2gmetis +0 -0
  355. unopy-0.1.0/interfaces/Python/dependencies/mumps/bin/mpmetis +0 -0
  356. unopy-0.1.0/interfaces/Python/dependencies/mumps/bin/ndmetis +0 -0
  357. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/cmumps_c.h +155 -0
  358. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/cmumps_struc.h +294 -0
  359. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/dmumps_c.h +155 -0
  360. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/dmumps_struc.h +294 -0
  361. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/libseq/elapse.h +36 -0
  362. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/libseq/mpi.h +77 -0
  363. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/libseq/mpif.h +112 -0
  364. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/metis.h +351 -0
  365. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/mumps_c_types.h +73 -0
  366. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/mumps_compat.h +46 -0
  367. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/mumps_int_def.h +23 -0
  368. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/smumps_c.h +155 -0
  369. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/smumps_struc.h +294 -0
  370. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/zmumps_c.h +155 -0
  371. unopy-0.1.0/interfaces/Python/dependencies/mumps/include/zmumps_struc.h +294 -0
  372. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/cmake/lapack-3.12.0/lapack-config-version.cmake +70 -0
  373. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/cmake/lapack-3.12.0/lapack-config.cmake +19 -0
  374. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/cmake/lapack-3.12.0/lapack-targets-release.cmake +29 -0
  375. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/cmake/lapack-3.12.0/lapack-targets.cmake +101 -0
  376. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libblas.a +0 -0
  377. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libdmumps.a +0 -0
  378. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/liblapack.a +0 -0
  379. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libmetis.a +0 -0
  380. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libmpiseq.a +0 -0
  381. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libmumps_common.a +0 -0
  382. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libpord.a +0 -0
  383. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/libsmumps.a +0 -0
  384. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/pkgconfig/blas.pc +8 -0
  385. unopy-0.1.0/interfaces/Python/dependencies/mumps/lib/pkgconfig/lapack.pc +9 -0
  386. unopy-0.1.0/interfaces/Python/dependencies/mumps/mumps.tar.gz +0 -0
  387. unopy-0.1.0/interfaces/Python/example/example_hs015.py +116 -0
  388. unopy-0.1.0/interfaces/Python/python_modules/Constants.cpp +53 -0
  389. unopy-0.1.0/interfaces/Python/python_modules/Model.cpp +123 -0
  390. unopy-0.1.0/interfaces/Python/python_modules/PointerWrapper.cpp +28 -0
  391. unopy-0.1.0/interfaces/Python/python_modules/Result.cpp +48 -0
  392. unopy-0.1.0/interfaces/Python/python_modules/UnoSolver.cpp +43 -0
  393. unopy-0.1.0/interfaces/Python/python_modules/Vector.cpp +40 -0
  394. unopy-0.1.0/interfaces/Python/scripts/download_dependencies.ps1 +47 -0
  395. unopy-0.1.0/interfaces/Python/scripts/download_dependencies.sh +58 -0
  396. unopy-0.1.0/interfaces/Python/unopy.cpp +35 -0
  397. unopy-0.1.0/interfaces/Python/unopy.hpp +43 -0
  398. unopy-0.1.0/interfaces/UserModel.hpp +87 -0
  399. unopy-0.1.0/mkdocs.yml +3 -0
  400. unopy-0.1.0/pyproject.toml +46 -0
  401. unopy-0.1.0/uno/Uno.cpp +255 -0
  402. unopy-0.1.0/uno/Uno.hpp +52 -0
  403. unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/ConstraintRelaxationStrategy.cpp +115 -0
  404. unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/ConstraintRelaxationStrategy.hpp +101 -0
  405. unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/ConstraintRelaxationStrategyFactory.cpp +25 -0
  406. unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/ConstraintRelaxationStrategyFactory.hpp +26 -0
  407. unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/FeasibilityRestoration.cpp +252 -0
  408. unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/FeasibilityRestoration.hpp +77 -0
  409. unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/NoRelaxation.cpp +95 -0
  410. unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/NoRelaxation.hpp +48 -0
  411. unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/relaxed_problems/ElasticVariables.cpp +49 -0
  412. unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/relaxed_problems/ElasticVariables.hpp +33 -0
  413. unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/relaxed_problems/l1RelaxedProblem.cpp +328 -0
  414. unopy-0.1.0/uno/ingredients/constraint_relaxation_strategies/relaxed_problems/l1RelaxedProblem.hpp +83 -0
  415. unopy-0.1.0/uno/ingredients/globalization_mechanisms/BacktrackingLineSearch.cpp +143 -0
  416. unopy-0.1.0/uno/ingredients/globalization_mechanisms/BacktrackingLineSearch.hpp +36 -0
  417. unopy-0.1.0/uno/ingredients/globalization_mechanisms/GlobalizationMechanism.cpp +58 -0
  418. unopy-0.1.0/uno/ingredients/globalization_mechanisms/GlobalizationMechanism.hpp +45 -0
  419. unopy-0.1.0/uno/ingredients/globalization_mechanisms/GlobalizationMechanismFactory.cpp +23 -0
  420. unopy-0.1.0/uno/ingredients/globalization_mechanisms/GlobalizationMechanismFactory.hpp +24 -0
  421. unopy-0.1.0/uno/ingredients/globalization_mechanisms/TrustRegionStrategy.cpp +196 -0
  422. unopy-0.1.0/uno/ingredients/globalization_mechanisms/TrustRegionStrategy.hpp +44 -0
  423. unopy-0.1.0/uno/ingredients/globalization_strategies/GlobalizationStrategy.cpp +18 -0
  424. unopy-0.1.0/uno/ingredients/globalization_strategies/GlobalizationStrategy.hpp +43 -0
  425. unopy-0.1.0/uno/ingredients/globalization_strategies/GlobalizationStrategyFactory.cpp +38 -0
  426. unopy-0.1.0/uno/ingredients/globalization_strategies/GlobalizationStrategyFactory.hpp +26 -0
  427. unopy-0.1.0/uno/ingredients/globalization_strategies/ProgressMeasures.hpp +24 -0
  428. unopy-0.1.0/uno/ingredients/globalization_strategies/l1MeritFunction.cpp +81 -0
  429. unopy-0.1.0/uno/ingredients/globalization_strategies/l1MeritFunction.hpp +34 -0
  430. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/SwitchingMethod.cpp +21 -0
  431. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/SwitchingMethod.hpp +24 -0
  432. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/FilterMethod.cpp +49 -0
  433. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/FilterMethod.hpp +40 -0
  434. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/FletcherFilterMethod.cpp +74 -0
  435. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/FletcherFilterMethod.hpp +24 -0
  436. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/WaechterFilterMethod.cpp +93 -0
  437. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/WaechterFilterMethod.hpp +30 -0
  438. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/filters/Filter.cpp +192 -0
  439. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/filters/Filter.hpp +55 -0
  440. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/filters/FilterFactory.cpp +23 -0
  441. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/filters/FilterFactory.hpp +16 -0
  442. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/filters/NonmonotoneFilter.cpp +104 -0
  443. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/filter_methods/filters/NonmonotoneFilter.hpp +29 -0
  444. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/funnel_methods/Funnel.cpp +68 -0
  445. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/funnel_methods/Funnel.hpp +37 -0
  446. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/funnel_methods/FunnelMethod.cpp +142 -0
  447. unopy-0.1.0/uno/ingredients/globalization_strategies/switching_methods/funnel_methods/FunnelMethod.hpp +53 -0
  448. unopy-0.1.0/uno/ingredients/hessian_models/ExactHessian.cpp +47 -0
  449. unopy-0.1.0/uno/ingredients/hessian_models/ExactHessian.hpp +34 -0
  450. unopy-0.1.0/uno/ingredients/hessian_models/HessianModel.hpp +41 -0
  451. unopy-0.1.0/uno/ingredients/hessian_models/HessianModelFactory.cpp +36 -0
  452. unopy-0.1.0/uno/ingredients/hessian_models/HessianModelFactory.hpp +24 -0
  453. unopy-0.1.0/uno/ingredients/hessian_models/IdentityHessian.cpp +54 -0
  454. unopy-0.1.0/uno/ingredients/hessian_models/IdentityHessian.hpp +31 -0
  455. unopy-0.1.0/uno/ingredients/hessian_models/ZeroHessian.cpp +46 -0
  456. unopy-0.1.0/uno/ingredients/hessian_models/ZeroHessian.hpp +31 -0
  457. unopy-0.1.0/uno/ingredients/inequality_handling_methods/InequalityHandlingMethod.cpp +61 -0
  458. unopy-0.1.0/uno/ingredients/inequality_handling_methods/InequalityHandlingMethod.hpp +75 -0
  459. unopy-0.1.0/uno/ingredients/inequality_handling_methods/InequalityHandlingMethodFactory.cpp +46 -0
  460. unopy-0.1.0/uno/ingredients/inequality_handling_methods/InequalityHandlingMethodFactory.hpp +23 -0
  461. unopy-0.1.0/uno/ingredients/inequality_handling_methods/inequality_constrained_methods/InequalityConstrainedMethod.cpp +120 -0
  462. unopy-0.1.0/uno/ingredients/inequality_handling_methods/inequality_constrained_methods/InequalityConstrainedMethod.hpp +59 -0
  463. unopy-0.1.0/uno/ingredients/inequality_handling_methods/interior_point_methods/BarrierParameterUpdateStrategy.hpp +96 -0
  464. unopy-0.1.0/uno/ingredients/inequality_handling_methods/interior_point_methods/BarrierProblem.hpp +24 -0
  465. unopy-0.1.0/uno/ingredients/inequality_handling_methods/interior_point_methods/InteriorPointMethod.hpp +294 -0
  466. unopy-0.1.0/uno/ingredients/inequality_handling_methods/interior_point_methods/InteriorPointParameters.hpp +18 -0
  467. unopy-0.1.0/uno/ingredients/inequality_handling_methods/interior_point_methods/barrier_problems/PrimalDualInteriorPointProblem.cpp +510 -0
  468. unopy-0.1.0/uno/ingredients/inequality_handling_methods/interior_point_methods/barrier_problems/PrimalDualInteriorPointProblem.hpp +88 -0
  469. unopy-0.1.0/uno/ingredients/inertia_correction_strategies/Inertia.hpp +30 -0
  470. unopy-0.1.0/uno/ingredients/inertia_correction_strategies/InertiaCorrectionStrategy.hpp +46 -0
  471. unopy-0.1.0/uno/ingredients/inertia_correction_strategies/InertiaCorrectionStrategyFactory.cpp +26 -0
  472. unopy-0.1.0/uno/ingredients/inertia_correction_strategies/InertiaCorrectionStrategyFactory.hpp +23 -0
  473. unopy-0.1.0/uno/ingredients/inertia_correction_strategies/NoInertiaCorrection.hpp +67 -0
  474. unopy-0.1.0/uno/ingredients/inertia_correction_strategies/PrimalDualInertiaCorrection.hpp +236 -0
  475. unopy-0.1.0/uno/ingredients/inertia_correction_strategies/PrimalInertiaCorrection.hpp +171 -0
  476. unopy-0.1.0/uno/ingredients/inertia_correction_strategies/UnstableRegularization.hpp +18 -0
  477. unopy-0.1.0/uno/ingredients/subproblem/Subproblem.cpp +266 -0
  478. unopy-0.1.0/uno/ingredients/subproblem/Subproblem.hpp +133 -0
  479. unopy-0.1.0/uno/ingredients/subproblem_solvers/BQPD/BQPDEvaluationSpace.cpp +182 -0
  480. unopy-0.1.0/uno/ingredients/subproblem_solvers/BQPD/BQPDEvaluationSpace.hpp +51 -0
  481. unopy-0.1.0/uno/ingredients/subproblem_solvers/BQPD/BQPDSolver.cpp +386 -0
  482. unopy-0.1.0/uno/ingredients/subproblem_solvers/BQPD/BQPDSolver.hpp +110 -0
  483. unopy-0.1.0/uno/ingredients/subproblem_solvers/BoxLPSolver.cpp +55 -0
  484. unopy-0.1.0/uno/ingredients/subproblem_solvers/BoxLPSolver.hpp +47 -0
  485. unopy-0.1.0/uno/ingredients/subproblem_solvers/COOEvaluationSpace.cpp +126 -0
  486. unopy-0.1.0/uno/ingredients/subproblem_solvers/COOEvaluationSpace.hpp +51 -0
  487. unopy-0.1.0/uno/ingredients/subproblem_solvers/DirectSymmetricIndefiniteLinearSolver.hpp +28 -0
  488. unopy-0.1.0/uno/ingredients/subproblem_solvers/HiGHS/HiGHSEvaluationSpace.cpp +226 -0
  489. unopy-0.1.0/uno/ingredients/subproblem_solvers/HiGHS/HiGHSEvaluationSpace.hpp +54 -0
  490. unopy-0.1.0/uno/ingredients/subproblem_solvers/HiGHS/HiGHSSolver.cpp +114 -0
  491. unopy-0.1.0/uno/ingredients/subproblem_solvers/HiGHS/HiGHSSolver.hpp +38 -0
  492. unopy-0.1.0/uno/ingredients/subproblem_solvers/InequalityConstrainedSolver.hpp +31 -0
  493. unopy-0.1.0/uno/ingredients/subproblem_solvers/LPSolver.hpp +24 -0
  494. unopy-0.1.0/uno/ingredients/subproblem_solvers/LPSolverFactory.cpp +42 -0
  495. unopy-0.1.0/uno/ingredients/subproblem_solvers/LPSolverFactory.hpp +31 -0
  496. unopy-0.1.0/uno/ingredients/subproblem_solvers/MA27/MA27Solver.cpp +306 -0
  497. unopy-0.1.0/uno/ingredients/subproblem_solvers/MA27/MA27Solver.hpp +71 -0
  498. unopy-0.1.0/uno/ingredients/subproblem_solvers/MA57/MA57Solver.cpp +251 -0
  499. unopy-0.1.0/uno/ingredients/subproblem_solvers/MA57/MA57Solver.hpp +77 -0
  500. unopy-0.1.0/uno/ingredients/subproblem_solvers/MUMPS/MUMPSSolver.cpp +140 -0
  501. unopy-0.1.0/uno/ingredients/subproblem_solvers/MUMPS/MUMPSSolver.hpp +53 -0
  502. unopy-0.1.0/uno/ingredients/subproblem_solvers/QPSolver.hpp +22 -0
  503. unopy-0.1.0/uno/ingredients/subproblem_solvers/QPSolverFactory.cpp +42 -0
  504. unopy-0.1.0/uno/ingredients/subproblem_solvers/QPSolverFactory.hpp +32 -0
  505. unopy-0.1.0/uno/ingredients/subproblem_solvers/SubproblemStatus.hpp +16 -0
  506. unopy-0.1.0/uno/ingredients/subproblem_solvers/SymmetricIndefiniteLinearSolver.hpp +37 -0
  507. unopy-0.1.0/uno/ingredients/subproblem_solvers/SymmetricIndefiniteLinearSolverFactory.cpp +85 -0
  508. unopy-0.1.0/uno/ingredients/subproblem_solvers/SymmetricIndefiniteLinearSolverFactory.hpp +25 -0
  509. unopy-0.1.0/uno/linear_algebra/COOMatrix.hpp +27 -0
  510. unopy-0.1.0/uno/linear_algebra/Indexing.hpp +14 -0
  511. unopy-0.1.0/uno/linear_algebra/Matrix.hpp +21 -0
  512. unopy-0.1.0/uno/linear_algebra/MatrixOrder.hpp +14 -0
  513. unopy-0.1.0/uno/linear_algebra/Norm.hpp +147 -0
  514. unopy-0.1.0/uno/linear_algebra/SparseVector.hpp +157 -0
  515. unopy-0.1.0/uno/linear_algebra/Vector.hpp +166 -0
  516. unopy-0.1.0/uno/model/BoundRelaxedModel.cpp +25 -0
  517. unopy-0.1.0/uno/model/BoundRelaxedModel.hpp +136 -0
  518. unopy-0.1.0/uno/model/FixedBoundsConstraintsModel.cpp +244 -0
  519. unopy-0.1.0/uno/model/FixedBoundsConstraintsModel.hpp +89 -0
  520. unopy-0.1.0/uno/model/HomogeneousEqualityConstrainedModel.cpp +237 -0
  521. unopy-0.1.0/uno/model/HomogeneousEqualityConstrainedModel.hpp +87 -0
  522. unopy-0.1.0/uno/model/Model.cpp +67 -0
  523. unopy-0.1.0/uno/model/Model.hpp +124 -0
  524. unopy-0.1.0/uno/optimization/Direction.cpp +48 -0
  525. unopy-0.1.0/uno/optimization/Direction.hpp +36 -0
  526. unopy-0.1.0/uno/optimization/DualResiduals.hpp +25 -0
  527. unopy-0.1.0/uno/optimization/EvaluationErrors.hpp +31 -0
  528. unopy-0.1.0/uno/optimization/EvaluationSpace.hpp +32 -0
  529. unopy-0.1.0/uno/optimization/Evaluations.hpp +26 -0
  530. unopy-0.1.0/uno/optimization/Iterate.cpp +78 -0
  531. unopy-0.1.0/uno/optimization/Iterate.hpp +58 -0
  532. unopy-0.1.0/uno/optimization/LagrangianGradient.hpp +62 -0
  533. unopy-0.1.0/uno/optimization/Multipliers.cpp +33 -0
  534. unopy-0.1.0/uno/optimization/Multipliers.hpp +28 -0
  535. unopy-0.1.0/uno/optimization/OptimizationProblem.cpp +232 -0
  536. unopy-0.1.0/uno/optimization/OptimizationProblem.hpp +96 -0
  537. unopy-0.1.0/uno/optimization/OptimizationStatus.cpp +28 -0
  538. unopy-0.1.0/uno/optimization/OptimizationStatus.hpp +22 -0
  539. unopy-0.1.0/uno/optimization/ProblemType.hpp +11 -0
  540. unopy-0.1.0/uno/optimization/Result.cpp +40 -0
  541. unopy-0.1.0/uno/optimization/Result.hpp +40 -0
  542. unopy-0.1.0/uno/optimization/SolutionStatus.cpp +28 -0
  543. unopy-0.1.0/uno/optimization/SolutionStatus.hpp +23 -0
  544. unopy-0.1.0/uno/optimization/WarmstartInformation.cpp +45 -0
  545. unopy-0.1.0/uno/optimization/WarmstartInformation.hpp +25 -0
  546. unopy-0.1.0/uno/options/DefaultOptions.cpp +170 -0
  547. unopy-0.1.0/uno/options/DefaultOptions.hpp +19 -0
  548. unopy-0.1.0/uno/options/Options.cpp +343 -0
  549. unopy-0.1.0/uno/options/Options.hpp +57 -0
  550. unopy-0.1.0/uno/options/Presets.cpp +141 -0
  551. unopy-0.1.0/uno/options/Presets.hpp +21 -0
  552. unopy-0.1.0/uno/symbolic/Collection.hpp +53 -0
  553. unopy-0.1.0/uno/symbolic/CollectionAdapter.hpp +51 -0
  554. unopy-0.1.0/uno/symbolic/Concatenation.hpp +57 -0
  555. unopy-0.1.0/uno/symbolic/Expression.hpp +11 -0
  556. unopy-0.1.0/uno/symbolic/Range.hpp +80 -0
  557. unopy-0.1.0/uno/symbolic/ScalarMultiple.hpp +34 -0
  558. unopy-0.1.0/uno/symbolic/Sum.hpp +34 -0
  559. unopy-0.1.0/uno/symbolic/UnaryNegation.hpp +32 -0
  560. unopy-0.1.0/uno/symbolic/VectorExpression.hpp +62 -0
  561. unopy-0.1.0/uno/symbolic/VectorView.hpp +81 -0
  562. unopy-0.1.0/uno/tools/Infinity.hpp +20 -0
  563. unopy-0.1.0/uno/tools/Logger.cpp +45 -0
  564. unopy-0.1.0/uno/tools/Logger.hpp +44 -0
  565. unopy-0.1.0/uno/tools/NumberModelEvaluations.hpp +24 -0
  566. unopy-0.1.0/uno/tools/PointerWrapper.hpp +47 -0
  567. unopy-0.1.0/uno/tools/Statistics.cpp +160 -0
  568. unopy-0.1.0/uno/tools/Statistics.hpp +43 -0
  569. unopy-0.1.0/uno/tools/Timer.cpp +21 -0
  570. unopy-0.1.0/uno/tools/Timer.hpp +22 -0
  571. unopy-0.1.0/uno/tools/UserCallbacks.hpp +37 -0
  572. unopy-0.1.0/unotest/functional_tests/BQPDSolverTests.cpp +144 -0
  573. unopy-0.1.0/unotest/functional_tests/HiGHSSolverTests.cpp +75 -0
  574. unopy-0.1.0/unotest/functional_tests/MA27SolverTests.cpp +80 -0
  575. unopy-0.1.0/unotest/functional_tests/MA57SolverTests.cpp +82 -0
  576. unopy-0.1.0/unotest/functional_tests/MUMPSSolverTests.cpp +100 -0
  577. unopy-0.1.0/unotest/unit_tests/CollectionAdapterTests.cpp +24 -0
  578. unopy-0.1.0/unotest/unit_tests/ConcatenationTests.cpp +41 -0
  579. unopy-0.1.0/unotest/unit_tests/RangeTests.cpp +51 -0
  580. unopy-0.1.0/unotest/unit_tests/ScalarMultipleTests.cpp +18 -0
  581. unopy-0.1.0/unotest/unit_tests/SparseVectorTests.cpp +58 -0
  582. unopy-0.1.0/unotest/unit_tests/SumTests.cpp +19 -0
  583. unopy-0.1.0/unotest/unit_tests/VectorTests.cpp +62 -0
  584. unopy-0.1.0/unotest/unit_tests/VectorViewTests.cpp +16 -0
  585. 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,3 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: cvanaret
@@ -0,0 +1,2 @@
1
+ # Don't check Julia's Manifest.toml file into Git
2
+ Manifest.toml
@@ -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