casadi 3.6.5__cp38-none-manylinux2014_x86_64.whl → 3.6.7__cp38-none-manylinux2014_x86_64.whl

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 (429) hide show
  1. casadi/_casadi.so +0 -0
  2. casadi/casadi.py +739 -308
  3. casadi/cbc +0 -0
  4. casadi/clp +0 -0
  5. casadi/cmake/casadi-config-version.cmake +1 -1
  6. casadi/cmake/highs/highs-config.cmake +6 -13
  7. casadi/cmake/highs/highs-targets-release.cmake +13 -13
  8. casadi/cmake/highs/highs-targets.cmake +13 -10
  9. casadi/highs +0 -0
  10. casadi/include/casadi/casadi.i +3 -0
  11. casadi/include/casadi/casadi_c.h +2 -0
  12. casadi/include/casadi/config.h +8 -8
  13. casadi/include/casadi/core/casadi_common.hpp +1 -0
  14. casadi/include/casadi/core/casadi_misc.hpp +52 -0
  15. casadi/include/casadi/core/casadi_types.hpp +3 -2
  16. casadi/include/casadi/core/code_generator.hpp +30 -1
  17. casadi/include/casadi/core/global_options.hpp +2 -0
  18. casadi/include/casadi/core/mx.hpp +18 -3
  19. casadi/include/casadi/core/optistack.hpp +23 -0
  20. casadi/include/casadi/core/runtime/casadi_nlp.hpp +19 -4
  21. casadi/include/casadi/core/runtime/casadi_ocp_block.hpp +55 -0
  22. casadi/include/casadi/core/runtime/casadi_oracle.hpp +44 -0
  23. casadi/include/casadi/core/runtime/casadi_oracle_callback.hpp +39 -0
  24. casadi/include/casadi/core/runtime/casadi_runtime.hpp +4 -1
  25. casadi/include/casadi/core/runtime/casadi_scaled_copy.hpp +31 -0
  26. casadi/include/casadi/core/serializing_stream.hpp +2 -2
  27. casadi/include/casadi/core/sparsity.hpp +7 -0
  28. casadi/include/casadi/doc.i +1513 -1016
  29. casadi/include/casadi/doc_merged.i +965 -719
  30. casadi/include/casadi/mem.h +1 -0
  31. casadi/include/daqp/api.h +46 -0
  32. casadi/include/daqp/auxiliary.h +29 -0
  33. casadi/include/daqp/bnb.h +32 -0
  34. casadi/include/daqp/codegen.h +18 -0
  35. casadi/include/daqp/constants.h +92 -0
  36. casadi/include/daqp/daqp.h +22 -0
  37. casadi/include/daqp/daqp_prox.h +18 -0
  38. casadi/include/daqp/factorization.h +18 -0
  39. casadi/include/daqp/types.h +161 -0
  40. casadi/include/daqp/utils.h +44 -0
  41. casadi/include/fatrop/auxiliary/Common.hpp +34 -0
  42. casadi/include/fatrop/auxiliary/DynamicLib.hpp +34 -0
  43. casadi/include/fatrop/auxiliary/FatropOptions.hpp +68 -0
  44. casadi/include/fatrop/auxiliary/FatropVector.hpp +143 -0
  45. casadi/include/fatrop/auxiliary/LinearAlgebra.hpp +88 -0
  46. casadi/include/fatrop/auxiliary/VectorUtils.hpp +54 -0
  47. casadi/include/fatrop/blasfeo_wrapper/LinearAlgebraBlasfeo.hpp +493 -0
  48. casadi/include/fatrop/fatrop.hpp +39 -0
  49. casadi/include/fatrop/function_evaluation/CasadiCodegen.hpp +104 -0
  50. casadi/include/fatrop/function_evaluation/FunctionEvaluation.hpp +60 -0
  51. casadi/include/fatrop/json/json.h +946 -0
  52. casadi/include/fatrop/ocp/CasadiCApiUserdataWrap.hpp +87 -0
  53. casadi/include/fatrop/ocp/DuInfEvaluator.hpp +38 -0
  54. casadi/include/fatrop/ocp/FatropOCP.hpp +161 -0
  55. casadi/include/fatrop/ocp/FatropOCPBuilder.hpp +52 -0
  56. casadi/include/fatrop/ocp/FatropOCPResto.hpp +299 -0
  57. casadi/include/fatrop/ocp/OCP.hpp +82 -0
  58. casadi/include/fatrop/ocp/OCPAbstract.hpp +254 -0
  59. casadi/include/fatrop/ocp/OCPAdapter.hpp +197 -0
  60. casadi/include/fatrop/ocp/OCPCInterface.h +289 -0
  61. casadi/include/fatrop/ocp/OCPDims.hpp +60 -0
  62. casadi/include/fatrop/ocp/OCPInitializer.hpp +41 -0
  63. casadi/include/fatrop/ocp/OCPKKT.hpp +69 -0
  64. casadi/include/fatrop/ocp/OCPLSRiccati.hpp +198 -0
  65. casadi/include/fatrop/ocp/OCPLSScaler.hpp +66 -0
  66. casadi/include/fatrop/ocp/OCPLinearSolver.hpp +75 -0
  67. casadi/include/fatrop/ocp/OCPNoScaling.hpp +42 -0
  68. casadi/include/fatrop/ocp/OCPScalingMethod.hpp +42 -0
  69. casadi/include/fatrop/ocp/StageOCP.hpp +592 -0
  70. casadi/include/fatrop/ocp/StageOCPApplication.hpp +242 -0
  71. casadi/include/fatrop/ocp/StageOCPExpressions.hpp +182 -0
  72. casadi/include/fatrop/ocp/UStageEvalAbstract.hpp +168 -0
  73. casadi/include/fatrop/ocp/UStageOCPImpl.hpp +152 -0
  74. casadi/include/fatrop/quasi_newton/bfgs.hpp +159 -0
  75. casadi/include/fatrop/solver/AlgBuilder.hpp +76 -0
  76. casadi/include/fatrop/solver/AlgStrategy.hpp +33 -0
  77. casadi/include/fatrop/solver/FatropAlg.hpp +121 -0
  78. casadi/include/fatrop/solver/FatropData.hpp +188 -0
  79. casadi/include/fatrop/solver/FatropOptions.hpp +95 -0
  80. casadi/include/fatrop/solver/FatropPrinter.hpp +65 -0
  81. casadi/include/fatrop/solver/FatropStats.hpp +63 -0
  82. casadi/include/fatrop/solver/Filter.hpp +54 -0
  83. casadi/include/fatrop/solver/IterationData.hpp +56 -0
  84. casadi/include/fatrop/solver/LineSearch.hpp +86 -0
  85. casadi/include/fatrop/solver/NLPL1.hpp +263 -0
  86. casadi/include/fatrop/templates/NLPAlg.hpp +104 -0
  87. casadi/include/highs/HConfig.h +6 -5
  88. casadi/include/highs/Highs.h +93 -23
  89. casadi/include/highs/filereaderlp/def.hpp +19 -0
  90. casadi/include/highs/interfaces/highs_c_api.h +200 -24
  91. casadi/include/highs/io/Filereader.h +1 -1
  92. casadi/include/highs/io/FilereaderEms.h +1 -1
  93. casadi/include/highs/io/FilereaderLp.h +1 -1
  94. casadi/include/highs/io/FilereaderMps.h +1 -1
  95. casadi/include/highs/io/HMPSIO.h +1 -1
  96. casadi/include/highs/io/HMpsFF.h +5 -3
  97. casadi/include/highs/io/HighsIO.h +18 -8
  98. casadi/include/highs/io/LoadOptions.h +1 -1
  99. casadi/include/highs/ipm/IpxSolution.h +35 -0
  100. casadi/include/highs/ipm/IpxWrapper.h +1 -1
  101. casadi/include/highs/ipm/basiclu/basiclu.h +161 -0
  102. casadi/include/highs/ipm/basiclu/basiclu_factorize.h +247 -0
  103. casadi/include/highs/ipm/basiclu/basiclu_get_factors.h +108 -0
  104. casadi/include/highs/ipm/basiclu/basiclu_initialize.h +119 -0
  105. casadi/include/highs/ipm/basiclu/basiclu_obj_factorize.h +34 -0
  106. casadi/include/highs/ipm/basiclu/basiclu_obj_free.h +19 -0
  107. casadi/include/highs/ipm/basiclu/basiclu_obj_get_factors.h +34 -0
  108. casadi/include/highs/ipm/basiclu/basiclu_obj_initialize.h +46 -0
  109. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_dense.h +29 -0
  110. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_for_update.h +42 -0
  111. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_sparse.h +32 -0
  112. casadi/include/highs/ipm/basiclu/basiclu_obj_update.h +31 -0
  113. casadi/include/highs/ipm/basiclu/basiclu_object.h +30 -0
  114. casadi/include/highs/ipm/basiclu/basiclu_solve_dense.h +75 -0
  115. casadi/include/highs/ipm/basiclu/basiclu_solve_for_update.h +169 -0
  116. casadi/include/highs/ipm/basiclu/basiclu_solve_sparse.h +112 -0
  117. casadi/include/highs/ipm/basiclu/basiclu_update.h +125 -0
  118. casadi/include/highs/ipm/basiclu/lu_def.h +39 -0
  119. casadi/include/highs/ipm/basiclu/lu_file.h +21 -0
  120. casadi/include/highs/ipm/basiclu/lu_internal.h +220 -0
  121. casadi/include/highs/ipm/basiclu/lu_list.h +168 -0
  122. casadi/include/highs/ipm/ipx/basiclu_kernel.h +20 -0
  123. casadi/include/highs/ipm/ipx/basiclu_wrapper.h +47 -0
  124. casadi/include/highs/ipm/ipx/basis.h +351 -0
  125. casadi/include/highs/ipm/ipx/conjugate_residuals.h +74 -0
  126. casadi/include/highs/ipm/ipx/control.h +163 -0
  127. casadi/include/highs/ipm/ipx/crossover.h +157 -0
  128. casadi/include/highs/ipm/ipx/diagonal_precond.h +45 -0
  129. casadi/include/highs/ipm/ipx/forrest_tomlin.h +102 -0
  130. casadi/include/highs/ipm/ipx/guess_basis.h +21 -0
  131. casadi/include/highs/ipm/ipx/indexed_vector.h +113 -0
  132. casadi/include/highs/ipm/ipx/info.h +27 -0
  133. casadi/include/highs/ipm/ipx/ipm.h +94 -0
  134. casadi/include/highs/ipm/ipx/ipx_c.h +47 -0
  135. casadi/include/highs/ipm/ipx/ipx_config.h +9 -0
  136. casadi/include/highs/ipm/ipx/ipx_info.h +111 -0
  137. casadi/include/highs/ipm/ipx/ipx_internal.h +88 -0
  138. casadi/include/highs/ipm/ipx/ipx_parameters.h +75 -0
  139. casadi/include/highs/ipm/ipx/ipx_status.h +57 -0
  140. casadi/include/highs/ipm/ipx/iterate.h +328 -0
  141. casadi/include/highs/ipm/ipx/kkt_solver.h +70 -0
  142. casadi/include/highs/ipm/ipx/kkt_solver_basis.h +66 -0
  143. casadi/include/highs/ipm/ipx/kkt_solver_diag.h +48 -0
  144. casadi/include/highs/ipm/ipx/linear_operator.h +26 -0
  145. casadi/include/highs/ipm/ipx/lp_solver.h +201 -0
  146. casadi/include/highs/ipm/ipx/lu_factorization.h +79 -0
  147. casadi/include/highs/ipm/ipx/lu_update.h +129 -0
  148. casadi/include/highs/ipm/ipx/maxvolume.h +54 -0
  149. casadi/include/highs/ipm/ipx/model.h +409 -0
  150. casadi/include/highs/ipm/ipx/multistream.h +52 -0
  151. casadi/include/highs/ipm/ipx/normal_matrix.h +44 -0
  152. casadi/include/highs/ipm/ipx/power_method.h +44 -0
  153. casadi/include/highs/ipm/ipx/sparse_matrix.h +195 -0
  154. casadi/include/highs/ipm/ipx/sparse_utils.h +58 -0
  155. casadi/include/highs/ipm/ipx/splitted_normal_matrix.h +63 -0
  156. casadi/include/highs/ipm/ipx/starting_basis.h +39 -0
  157. casadi/include/highs/ipm/ipx/symbolic_invert.h +29 -0
  158. casadi/include/highs/ipm/ipx/timer.h +24 -0
  159. casadi/include/highs/ipm/ipx/utils.h +39 -0
  160. casadi/include/highs/lp_data/HConst.h +20 -10
  161. casadi/include/highs/lp_data/HStruct.h +23 -1
  162. casadi/include/highs/lp_data/HighsAnalysis.h +1 -1
  163. casadi/include/highs/lp_data/HighsCallback.h +10 -3
  164. casadi/include/highs/lp_data/HighsCallbackStruct.h +31 -5
  165. casadi/include/highs/lp_data/HighsDebug.h +1 -1
  166. casadi/include/highs/lp_data/HighsInfo.h +20 -2
  167. casadi/include/highs/lp_data/HighsInfoDebug.h +1 -1
  168. casadi/include/highs/lp_data/HighsLp.h +17 -1
  169. casadi/include/highs/lp_data/HighsLpSolverObject.h +1 -1
  170. casadi/include/highs/lp_data/HighsLpUtils.h +19 -19
  171. casadi/include/highs/lp_data/HighsModelUtils.h +1 -1
  172. casadi/include/highs/lp_data/HighsOptions.h +237 -10
  173. casadi/include/highs/lp_data/HighsRanging.h +1 -1
  174. casadi/include/highs/lp_data/HighsRuntimeOptions.h +2 -2
  175. casadi/include/highs/lp_data/HighsSolution.h +2 -2
  176. casadi/include/highs/lp_data/HighsSolutionDebug.h +1 -1
  177. casadi/include/highs/lp_data/HighsSolve.h +3 -1
  178. casadi/include/highs/lp_data/HighsStatus.h +1 -1
  179. casadi/include/highs/mip/HighsCliqueTable.h +4 -4
  180. casadi/include/highs/mip/HighsConflictPool.h +1 -1
  181. casadi/include/highs/mip/HighsCutGeneration.h +1 -1
  182. casadi/include/highs/mip/HighsCutPool.h +2 -2
  183. casadi/include/highs/mip/HighsDebugSol.h +22 -29
  184. casadi/include/highs/mip/HighsDomain.h +10 -2
  185. casadi/include/highs/mip/HighsDomainChange.h +1 -1
  186. casadi/include/highs/mip/HighsDynamicRowMatrix.h +5 -3
  187. casadi/include/highs/mip/HighsGFkSolve.h +3 -3
  188. casadi/include/highs/mip/HighsImplications.h +3 -3
  189. casadi/include/highs/mip/HighsLpAggregator.h +1 -1
  190. casadi/include/highs/mip/HighsLpRelaxation.h +6 -1
  191. casadi/include/highs/mip/HighsMipSolver.h +4 -2
  192. casadi/include/highs/mip/HighsMipSolverData.h +47 -4
  193. casadi/include/highs/mip/HighsModkSeparator.h +2 -2
  194. casadi/include/highs/mip/HighsNodeQueue.h +5 -3
  195. casadi/include/highs/mip/HighsObjectiveFunction.h +1 -1
  196. casadi/include/highs/mip/HighsPathSeparator.h +2 -2
  197. casadi/include/highs/mip/HighsPrimalHeuristics.h +1 -1
  198. casadi/include/highs/mip/HighsPseudocost.h +35 -23
  199. casadi/include/highs/mip/HighsRedcostFixing.h +1 -1
  200. casadi/include/highs/mip/HighsSearch.h +2 -1
  201. casadi/include/highs/mip/HighsSeparation.h +1 -1
  202. casadi/include/highs/mip/HighsSeparator.h +1 -1
  203. casadi/include/highs/mip/HighsTableauSeparator.h +1 -1
  204. casadi/include/highs/mip/HighsTransformedLp.h +1 -1
  205. casadi/include/highs/model/HighsHessian.h +5 -0
  206. casadi/include/highs/model/HighsHessianUtils.h +2 -0
  207. casadi/include/highs/model/HighsModel.h +10 -1
  208. casadi/include/highs/parallel/HighsMutex.h +2 -1
  209. casadi/include/highs/parallel/HighsParallel.h +7 -2
  210. casadi/include/highs/parallel/HighsTask.h +1 -2
  211. casadi/include/highs/pdlp/CupdlpWrapper.h +93 -0
  212. casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +41 -0
  213. casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +423 -0
  214. casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +183 -0
  215. casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +19 -0
  216. casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +31 -0
  217. casadi/include/highs/pdlp/cupdlp/cupdlp_scaling_cuda.h +28 -0
  218. casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +98 -0
  219. casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +33 -0
  220. casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +1726 -0
  221. casadi/include/highs/pdqsort/pdqsort.h +532 -0
  222. casadi/include/highs/presolve/HPresolve.h +27 -14
  223. casadi/include/highs/presolve/HPresolveAnalysis.h +1 -1
  224. casadi/include/highs/presolve/HighsPostsolveStack.h +92 -68
  225. casadi/include/highs/presolve/HighsSymmetry.h +6 -5
  226. casadi/include/highs/presolve/ICrash.h +8 -2
  227. casadi/include/highs/presolve/ICrashUtil.h +1 -1
  228. casadi/include/highs/presolve/ICrashX.h +1 -1
  229. casadi/include/highs/presolve/PresolveComponent.h +1 -1
  230. casadi/include/highs/qpsolver/a_asm.hpp +23 -12
  231. casadi/include/highs/qpsolver/a_quass.hpp +8 -1
  232. casadi/include/highs/qpsolver/basis.hpp +150 -0
  233. casadi/include/highs/qpsolver/crashsolution.hpp +12 -0
  234. casadi/include/highs/qpsolver/dantzigpricing.hpp +72 -0
  235. casadi/include/highs/qpsolver/devexpricing.hpp +99 -0
  236. casadi/include/highs/qpsolver/eventhandler.hpp +23 -0
  237. casadi/include/highs/qpsolver/factor.hpp +400 -0
  238. casadi/include/highs/qpsolver/feasibility_bounded.hpp +105 -0
  239. casadi/include/highs/qpsolver/feasibility_highs.hpp +270 -0
  240. casadi/include/highs/qpsolver/gradient.hpp +39 -0
  241. casadi/include/highs/qpsolver/instance.hpp +63 -0
  242. casadi/include/highs/qpsolver/matrix.hpp +335 -0
  243. casadi/include/highs/qpsolver/pricing.hpp +15 -0
  244. casadi/include/highs/qpsolver/qpconst.hpp +27 -0
  245. casadi/include/highs/qpsolver/{vector.hpp → qpvector.hpp} +25 -25
  246. casadi/include/highs/qpsolver/quass.hpp +1 -1
  247. casadi/include/highs/qpsolver/ratiotest.hpp +19 -0
  248. casadi/include/highs/qpsolver/runtime.hpp +38 -0
  249. casadi/include/highs/qpsolver/settings.hpp +57 -0
  250. casadi/include/highs/qpsolver/snippets.hpp +29 -0
  251. casadi/include/highs/qpsolver/statistics.hpp +23 -0
  252. casadi/include/highs/qpsolver/steepestedgepricing.hpp +167 -0
  253. casadi/include/highs/simplex/HApp.h +1 -1
  254. casadi/include/highs/simplex/HEkk.h +52 -18
  255. casadi/include/highs/simplex/HEkkDual.h +1 -1
  256. casadi/include/highs/simplex/HEkkDualRHS.h +6 -7
  257. casadi/include/highs/simplex/HEkkDualRow.h +2 -2
  258. casadi/include/highs/simplex/HEkkPrimal.h +6 -1
  259. casadi/include/highs/simplex/HSimplex.h +1 -3
  260. casadi/include/highs/simplex/HSimplexDebug.h +1 -1
  261. casadi/include/highs/simplex/HSimplexNla.h +1 -1
  262. casadi/include/highs/simplex/HSimplexReport.h +1 -1
  263. casadi/include/highs/simplex/HighsSimplexAnalysis.h +228 -100
  264. casadi/include/highs/simplex/SimplexConst.h +1 -1
  265. casadi/include/highs/simplex/SimplexStruct.h +2 -2
  266. casadi/include/highs/simplex/SimplexTimer.h +1 -1
  267. casadi/include/highs/test/DevKkt.h +1 -1
  268. casadi/include/highs/test/KktCh2.h +1 -1
  269. casadi/include/highs/util/FactorTimer.h +1 -1
  270. casadi/include/highs/util/HFactor.h +35 -6
  271. casadi/include/highs/util/HFactorConst.h +1 -1
  272. casadi/include/highs/util/HFactorDebug.h +1 -1
  273. casadi/include/highs/util/HSet.h +1 -1
  274. casadi/include/highs/util/HVector.h +1 -1
  275. casadi/include/highs/util/HVectorBase.h +1 -1
  276. casadi/include/highs/util/HighsCDouble.h +3 -3
  277. casadi/include/highs/util/HighsComponent.h +1 -1
  278. casadi/include/highs/util/HighsDataStack.h +4 -4
  279. casadi/include/highs/util/HighsDisjointSets.h +1 -1
  280. casadi/include/highs/util/HighsHash.h +28 -21
  281. casadi/include/highs/util/HighsHashTree.h +63 -63
  282. casadi/include/highs/util/HighsInt.h +1 -1
  283. casadi/include/highs/util/HighsIntegers.h +8 -9
  284. casadi/include/highs/util/HighsLinearSumBounds.h +1 -1
  285. casadi/include/highs/util/HighsMatrixPic.h +1 -1
  286. casadi/include/highs/util/HighsMatrixSlice.h +9 -6
  287. casadi/include/highs/util/HighsMatrixUtils.h +1 -1
  288. casadi/include/highs/util/HighsMemoryAllocation.h +55 -0
  289. casadi/include/highs/util/HighsRandom.h +27 -15
  290. casadi/include/highs/util/HighsRbTree.h +2 -2
  291. casadi/include/highs/util/HighsSort.h +7 -7
  292. casadi/include/highs/util/HighsSparseMatrix.h +5 -2
  293. casadi/include/highs/util/HighsSparseVectorSum.h +2 -2
  294. casadi/include/highs/util/HighsSplay.h +1 -1
  295. casadi/include/highs/util/HighsTimer.h +18 -9
  296. casadi/include/highs/util/HighsUtils.h +15 -8
  297. casadi/include/highs/util/stringutil.h +9 -4
  298. casadi/include/highs/zstr/strict_fstream.hpp +237 -0
  299. casadi/include/highs/zstr/zstr.hpp +472 -0
  300. casadi/include/highs_export.h +42 -0
  301. casadi/include/licenses/daqp-external/LICENSE +21 -0
  302. casadi/include/licenses/fatrop-external/LICENSE.txt +165 -0
  303. casadi/include/licenses/fatrop-external/external/blasfeo/LICENSE.txt +26 -0
  304. casadi/include/licenses/fatrop-external/external/pybind11/LICENSE +29 -0
  305. casadi/include/licenses/highs-external/{LICENSE → LICENSE.txt} +1 -1
  306. casadi/include/osqp/constants.h +2 -3
  307. casadi/include/osqp/version.h +9 -0
  308. casadi/include/sleqp/defs.h +2 -2
  309. casadi/lib64/libtinyxml2.a +0 -0
  310. casadi/libCbcSolver.so +0 -0
  311. casadi/libCbcSolver.so.3 +0 -0
  312. casadi/libCbcSolver.so.3.10.11 +0 -0
  313. casadi/libClpSolver.so +0 -0
  314. casadi/libClpSolver.so.1 +0 -0
  315. casadi/libClpSolver.so.1.14.9 +0 -0
  316. casadi/libbonmin.so +0 -0
  317. casadi/libbonmin.so.4 +0 -0
  318. casadi/libbonmin.so.4.8.9 +0 -0
  319. casadi/libcasadi.so +0 -0
  320. casadi/libcasadi.so.3.7 +0 -0
  321. casadi/libcasadi_conic_cbc.so +0 -0
  322. casadi/libcasadi_conic_cbc.so.3.7 +0 -0
  323. casadi/libcasadi_conic_clp.so +0 -0
  324. casadi/libcasadi_conic_clp.so.3.7 +0 -0
  325. casadi/libcasadi_conic_cplex.so +0 -0
  326. casadi/libcasadi_conic_cplex.so.3.7 +0 -0
  327. casadi/libcasadi_conic_daqp.so +0 -0
  328. casadi/libcasadi_conic_daqp.so.3.7 +0 -0
  329. casadi/libcasadi_conic_fatrop.so +0 -0
  330. casadi/libcasadi_conic_fatrop.so.3.7 +0 -0
  331. casadi/libcasadi_conic_gurobi.so +0 -0
  332. casadi/libcasadi_conic_gurobi.so.3.7 +0 -0
  333. casadi/libcasadi_conic_highs.so +0 -0
  334. casadi/libcasadi_conic_highs.so.3.7 +0 -0
  335. casadi/libcasadi_conic_hpipm.so +0 -0
  336. casadi/libcasadi_conic_hpipm.so.3.7 +0 -0
  337. casadi/libcasadi_conic_ipqp.so +0 -0
  338. casadi/libcasadi_conic_ipqp.so.3.7 +0 -0
  339. casadi/libcasadi_conic_nlpsol.so +0 -0
  340. casadi/libcasadi_conic_nlpsol.so.3.7 +0 -0
  341. casadi/libcasadi_conic_osqp.so +0 -0
  342. casadi/libcasadi_conic_osqp.so.3.7 +0 -0
  343. casadi/libcasadi_conic_proxqp.so +0 -0
  344. casadi/libcasadi_conic_proxqp.so.3.7 +0 -0
  345. casadi/libcasadi_conic_qpoases.so +0 -0
  346. casadi/libcasadi_conic_qpoases.so.3.7 +0 -0
  347. casadi/libcasadi_conic_qrqp.so +0 -0
  348. casadi/libcasadi_conic_qrqp.so.3.7 +0 -0
  349. casadi/libcasadi_conic_superscs.so +0 -0
  350. casadi/libcasadi_conic_superscs.so.3.7 +0 -0
  351. casadi/libcasadi_integrator_collocation.so +0 -0
  352. casadi/libcasadi_integrator_collocation.so.3.7 +0 -0
  353. casadi/libcasadi_integrator_cvodes.so +0 -0
  354. casadi/libcasadi_integrator_cvodes.so.3.7 +0 -0
  355. casadi/libcasadi_integrator_idas.so +0 -0
  356. casadi/libcasadi_integrator_idas.so.3.7 +0 -0
  357. casadi/libcasadi_integrator_rk.so +0 -0
  358. casadi/libcasadi_integrator_rk.so.3.7 +0 -0
  359. casadi/libcasadi_nlpsol_alpaqa.so +0 -0
  360. casadi/libcasadi_nlpsol_alpaqa.so.3.7 +0 -0
  361. casadi/libcasadi_nlpsol_ampl.so +0 -0
  362. casadi/libcasadi_nlpsol_ampl.so.3.7 +0 -0
  363. casadi/libcasadi_nlpsol_blocksqp.so +0 -0
  364. casadi/libcasadi_nlpsol_blocksqp.so.3.7 +0 -0
  365. casadi/libcasadi_nlpsol_bonmin.so +0 -0
  366. casadi/libcasadi_nlpsol_bonmin.so.3.7 +0 -0
  367. casadi/libcasadi_nlpsol_fatrop.so +0 -0
  368. casadi/libcasadi_nlpsol_fatrop.so.3.7 +0 -0
  369. casadi/libcasadi_nlpsol_feasiblesqpmethod.so +0 -0
  370. casadi/libcasadi_nlpsol_feasiblesqpmethod.so.3.7 +0 -0
  371. casadi/libcasadi_nlpsol_ipopt.so +0 -0
  372. casadi/libcasadi_nlpsol_ipopt.so.3.7 +0 -0
  373. casadi/libcasadi_nlpsol_knitro.so +0 -0
  374. casadi/libcasadi_nlpsol_knitro.so.3.7 +0 -0
  375. casadi/libcasadi_nlpsol_madnlp.so +0 -0
  376. casadi/libcasadi_nlpsol_madnlp.so.3.7 +0 -0
  377. casadi/libcasadi_nlpsol_qrsqp.so +0 -0
  378. casadi/libcasadi_nlpsol_qrsqp.so.3.7 +0 -0
  379. casadi/libcasadi_nlpsol_scpgen.so +0 -0
  380. casadi/libcasadi_nlpsol_scpgen.so.3.7 +0 -0
  381. casadi/libcasadi_nlpsol_sleqp.so +0 -0
  382. casadi/libcasadi_nlpsol_sleqp.so.3.7 +0 -0
  383. casadi/libcasadi_nlpsol_snopt.so +0 -0
  384. casadi/libcasadi_nlpsol_snopt.so.3.7 +0 -0
  385. casadi/libcasadi_nlpsol_sqpmethod.so +0 -0
  386. casadi/libcasadi_nlpsol_sqpmethod.so.3.7 +0 -0
  387. casadi/libcasadi_nlpsol_worhp.so +0 -0
  388. casadi/libcasadi_nlpsol_worhp.so.3.7 +0 -0
  389. casadi/libcasadi_rootfinder_fast_newton.so +0 -0
  390. casadi/libcasadi_rootfinder_fast_newton.so.3.7 +0 -0
  391. casadi/libcasadi_rootfinder_kinsol.so +0 -0
  392. casadi/libcasadi_rootfinder_kinsol.so.3.7 +0 -0
  393. casadi/libcasadi_rootfinder_newton.so +0 -0
  394. casadi/libcasadi_rootfinder_newton.so.3.7 +0 -0
  395. casadi/libcasadi_rootfinder_nlpsol.so +0 -0
  396. casadi/libcasadi_rootfinder_nlpsol.so.3.7 +0 -0
  397. casadi/libcasadi_sundials_common.so +0 -0
  398. casadi/libcasadi_sundials_common.so.3.7 +0 -0
  399. casadi/libcoinmetis.la +1 -1
  400. casadi/libcoinmetis.so +0 -0
  401. casadi/libcoinmetis.so.2 +0 -0
  402. casadi/libcoinmetis.so.2.0.0 +0 -0
  403. casadi/libdaqp.so +0 -0
  404. casadi/libdaqpstat.a +0 -0
  405. casadi/libfatrop.so +0 -0
  406. casadi/libhighs.so +0 -0
  407. casadi/libhighs.so.1 +0 -0
  408. casadi/libhighs.so.1.7.2 +0 -0
  409. casadi/libindirect.a +0 -0
  410. casadi/liblinsys.a +0 -0
  411. casadi/libmatlab_ipc.so +0 -0
  412. casadi/libosqp.a +0 -0
  413. casadi/libosqp.so +0 -0
  414. casadi/libqdldl.a +0 -0
  415. casadi/libsleqp.so +0 -0
  416. casadi/libsleqp.so.1.0.1 +0 -0
  417. casadi/libspral.a +0 -0
  418. casadi/libsuperscs.a +0 -0
  419. casadi/pkgconfig/casadi.pc +1 -1
  420. casadi/pkgconfig/highs.pc +1 -1
  421. casadi/tools/__init__.py +4 -0
  422. casadi/tools/bounds.py +3 -3
  423. {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/METADATA +2 -2
  424. {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/RECORD +425 -255
  425. casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
  426. casadi/libFortranHighs.so +0 -0
  427. casadi/libhighs.so.1.6 +0 -0
  428. casadi/libhighs.so.1.6.0 +0 -0
  429. {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/WHEEL +0 -0
@@ -0,0 +1,195 @@
1
+ #ifndef IPX_SPARSE_MATRIX_H_
2
+ #define IPX_SPARSE_MATRIX_H_
3
+
4
+ #include <vector>
5
+ #include "ipm/ipx/ipx_internal.h"
6
+
7
+ namespace ipx {
8
+
9
+ // Sparse matrix in CSC format.
10
+
11
+ class SparseMatrix {
12
+ public:
13
+ SparseMatrix();
14
+ SparseMatrix(Int nrow, Int ncol);
15
+ SparseMatrix(Int nrow, Int ncol, Int min_capacity);
16
+
17
+ Int rows() const { return nrow_; }
18
+ Int cols() const { return colptr_.size()-1; }
19
+ Int entries() const { return colptr_.back(); }
20
+
21
+ // # entries in column j
22
+ Int entries(Int j) const { return end(j)-begin(j); }
23
+
24
+ // Maximum # entries that can be stored in the matrix.
25
+ Int capacity() const { return rowidx_.size(); }
26
+
27
+ // Increases capacity if necessary such that capacity() >= min_capacity.
28
+ // Matrix remains unchanged, pointers are invalidated.
29
+ void reserve(Int min_capacity);
30
+
31
+ // Changes matrix dimensions. Matrix becomes empty, pointers are
32
+ // invalidated.
33
+ void resize(Int nrow, Int ncol, Int min_capacity = 0);
34
+
35
+ // Identical to resize(0,0).
36
+ void clear();
37
+
38
+ // Builds matrix from data in compressed column format. The matrix data must
39
+ // be valid (no duplicates, no out of range indices, no inf/nan values);
40
+ // this is not checked. The row indices in the input matrix need not be
41
+ // sorted, but those in the output matrix will be.
42
+ void LoadFromArrays(Int nrow, Int ncol, const Int* Abegin, const Int* Aend,
43
+ const Int* Ai, const double* Ax);
44
+
45
+ Int begin(Int j) const { return colptr_[j]; }
46
+ Int end(Int j) const { return colptr_[j+1]; }
47
+
48
+ // Accesses entry at position @pos by value.
49
+ Int index(Int pos) const { return rowidx_[pos]; }
50
+ double value(Int pos) const { return values_[pos]; }
51
+
52
+ // Accesses entry at position @pos by reference.
53
+ Int& index(Int pos) { return rowidx_[pos]; }
54
+ double& value(Int pos) { return values_[pos]; }
55
+
56
+ // Accesses underlying arrays.
57
+ const Int *colptr() const { return colptr_.data(); }
58
+ const Int *rowidx() const { return rowidx_.data(); }
59
+ const double *values() const { return values_.data(); }
60
+ Int *colptr() { return colptr_.data(); }
61
+ Int *rowidx() { return rowidx_.data(); }
62
+ double *values() { return values_.data(); }
63
+
64
+ // Stores the entries in each column in increasing order of index.
65
+ void SortIndices();
66
+
67
+ // The following methods provide a queue for adding new columns to the
68
+ // matrix. Entries in the queue are not part of the matrix (so do not
69
+ // contribute to entries()).
70
+
71
+ // Appends an entry to the end of the queue.
72
+ void push_back(Int i, double x) {
73
+ rowidx_queue_.push_back(i);
74
+ values_queue_.push_back(x);
75
+ }
76
+
77
+ // Returns # entries in the queue.
78
+ Int queue_size() const { return rowidx_queue_.size(); }
79
+
80
+ // Accesses entry at position @pos in the queue by value.
81
+ Int qindex(Int pos) const { return rowidx_queue_[pos]; }
82
+ double qvalue(Int pos) const { return values_queue_[pos]; }
83
+
84
+ // Accesses entry at position @pos in the queue by reference.
85
+ Int& qindex(Int pos) { return rowidx_queue_[pos]; }
86
+ double& qvalue(Int pos) { return values_queue_[pos]; }
87
+
88
+ // Makes new column from queue. The queue becomes empty and cols()
89
+ // increases by 1.
90
+ void add_column();
91
+
92
+ // Discards queue.
93
+ void clear_queue();
94
+
95
+ private:
96
+ // Returns true if row indices are sorted.
97
+ bool IsSorted() const;
98
+
99
+ Int nrow_;
100
+ std::vector<Int> colptr_;
101
+ std::vector<Int> rowidx_;
102
+ std::vector<double> values_;
103
+ std::vector<Int> rowidx_queue_;
104
+ std::vector<double> values_queue_;
105
+ };
106
+
107
+ // Builds transpose of matrix.
108
+ SparseMatrix Transpose(const SparseMatrix& A);
109
+
110
+ // Resizes @AT as necessary and fills with the tranpose of A.
111
+ void Transpose(const SparseMatrix& A, SparseMatrix& AT);
112
+
113
+ // Returns a copy of A[:,cols].
114
+ SparseMatrix CopyColumns(const SparseMatrix& A, const std::vector<Int>& cols);
115
+
116
+ // Permutes rows in place so that row i becomes row perm[i].
117
+ void PermuteRows(SparseMatrix& A, const std::vector<Int>& perm);
118
+
119
+ // Multiplies column j by s.
120
+ inline void ScaleColumn(SparseMatrix& A, Int j, double s) {
121
+ Int p1 = A.begin(j);
122
+ Int p2 = A.end(j);
123
+ for (Int p = p1; p < p2; p++)
124
+ A.value(p) *= s;
125
+ }
126
+
127
+ // Removes diagonal entries from A. If @diag is not NULL, then it must be an
128
+ // array of dimension A.cols() that holds the diagonal of A on return. Diagonal
129
+ // entries that are not present in A are set to zero in @diag. Returns the #
130
+ // entries removed from A.
131
+ Int RemoveDiagonal(SparseMatrix& A, double* diag);
132
+
133
+ // Returns dot(A[:,j], rhs).
134
+ inline double DotColumn(const SparseMatrix& A, Int j, const Vector& rhs) {
135
+ Int p1 = A.begin(j);
136
+ Int p2 = A.end(j);
137
+ double d = 0.0;
138
+ for (Int p = p1; p < p2; p++)
139
+ d += rhs[A.index(p)] * A.value(p);
140
+ return d;
141
+ }
142
+
143
+ // Updates lhs := lhs + alpha * A[:,j].
144
+ inline void ScatterColumn(const SparseMatrix& A, Int j, double alpha,
145
+ Vector& lhs) {
146
+ Int p1 = A.begin(j);
147
+ Int p2 = A.end(j);
148
+ for (Int p = p1; p < p2; p++)
149
+ lhs[A.index(p)] += alpha * A.value(p);
150
+ }
151
+
152
+ // Updates lhs := lhs + alpha*A*rhs or lhs := lhs + alpha*A'*rhs.
153
+ // @trans: 't' or 'T' for transposed product.
154
+ void MultiplyAdd(const SparseMatrix& A, const Vector& rhs, double alpha,
155
+ Vector& lhs, char trans);
156
+
157
+ // Updates lhs := lhs + A*A'*rhs or lhs := lhs + A*D*D*A'*rhs,
158
+ // where D is diagonal matrix if @D != NULL.
159
+ void AddNormalProduct(const SparseMatrix& A, const double* D, const Vector& rhs,
160
+ Vector& lhs);
161
+
162
+ // Triangular solve with sparse matrix.
163
+ // @x: right-hand side on entry, left-hand side on return.
164
+ // @trans: 't' or 'T' for transposed system.
165
+ // @uplo: must have *uplo == 'u' or *uplo == 'U' if A is upper triangular;
166
+ // otherwise A is lower triangular.
167
+ // @unitdiag: nonzero if A has a unit diagonal that is not stored.
168
+ // Returns the # nonzeros in the solution.
169
+ Int TriangularSolve(const SparseMatrix& A, Vector& x, char trans,
170
+ const char* uplo, int unitdiag);
171
+
172
+ // Solves (L*U) x = x.
173
+ // L unit lower triangular, stored without diagonal.
174
+ // U upper triangular, diagonal element at end of column.
175
+ void ForwardSolve(const SparseMatrix& L, const SparseMatrix& U, Vector& x);
176
+
177
+ // Solves (L*U)' x = x.
178
+ // L unit lower triangular, stored without diagonal.
179
+ // U upper triangular, diagonal element at end of column.
180
+ void BackwardSolve(const SparseMatrix& L, const SparseMatrix& U, Vector& x);
181
+
182
+ // Returns the 1-norm and infinity-norm of A.
183
+ double Onenorm(const SparseMatrix& A);
184
+ double Infnorm(const SparseMatrix& A);
185
+
186
+ // Estimates the 1-norm of inverse(A).
187
+ // @A must be square and lower or upper triangular.
188
+ // @uplo: must have *uplo == 'u' or *uplo == 'U' if A is upper triangular;
189
+ // otherwise A is lower triangular.
190
+ // @unitdiag: nonzero if A has a unit diagonal that is not stored.
191
+ double NormestInverse(const SparseMatrix& A, const char* uplo, int unitdiag);
192
+
193
+ } // namespace ipx
194
+
195
+ #endif // IPX_SPARSE_MATRIX_H_
@@ -0,0 +1,58 @@
1
+ #ifndef IPX_SPARSE_UTILS_H_
2
+ #define IPX_SPARSE_UTILS_H_
3
+
4
+ #include "ipm/ipx/ipx_internal.h"
5
+
6
+ namespace ipx {
7
+
8
+ // Depth-first search in the graph of matrix A.
9
+ //
10
+ // @istart starting node, must be unmarked on entry.
11
+ // @Ap, @Ai pattern of matrix A in CSC format.
12
+ // @colmap The neighbours of node i are the entries in col j = @colmap[i] of A.
13
+ // If j is negative, node i has no neighbours. @colmap can be NULL, in
14
+ // which case the identity mapping is assumed.
15
+ // @top, @istack On return @istack[newtop..@top-1] holds the reached nodes that
16
+ // have previously been unmarked; they are marked now and newtop
17
+ // is returned.
18
+ // @marked, @marker Node i is "marked" iff @marked[i] == @marker.
19
+ // @work workspace of size # rows of A.
20
+ //
21
+ // The code has been copied and adapted from cs_dfs.c, included in the CSPARSE
22
+ // package [1].
23
+ //
24
+ // [1] T. Davis, "Direct methods for sparse linear systems" (2006)
25
+ //
26
+ Int DepthFirstSearch(Int istart, const Int* Ap, const Int* Ai,
27
+ const Int* colmap, Int top, Int* istack, Int* marked,
28
+ Int marker, Int* work);
29
+
30
+ // Alternating augmenting path for extending a matching for an m-by-n matrix A.
31
+ //
32
+ // @jstart column of matrix A that should be matched.
33
+ // @Ap, @Ai pattern of matrix A in CSC format.
34
+ // @jmatch array of size m.
35
+ // Row i is matched to column j if @jmatch[i] = j >= 0.
36
+ // Row i is yet unmatched if @jmatch[i] == -1.
37
+ // Row i is unmatched and excluded from being matched if jmatch[i] < -1.
38
+ // @cheap array of size n. On the first call, @cheap must hold @Ap[0..n-1].
39
+ // It must be unchanged between subsequent calls.
40
+ // @marked array of size n. On entry @marked[j] != @jstart for all j.
41
+ // On return some entries were set to @jstart.
42
+ // @work size m workspace.
43
+ // @work2 size m+1 workspace.
44
+ // @work3 size m+1 workspace.
45
+ //
46
+ // Returns true if the matching was extended.
47
+ //
48
+ // The code has been copied and adapted from cs_augment.c, included in the
49
+ // CSPARSE package [1].
50
+ //
51
+ // [1] T. Davis, "Direct methods for sparse linear systems" (2006)
52
+ //
53
+ bool AugmentingPath(Int jstart, const Int* Ap, const Int* Ai, Int* jmatch,
54
+ Int* cheap, Int* marked, Int* work, Int* work2, Int* work3);
55
+
56
+ } // namespace ipx
57
+
58
+ #endif // IPX_SPARSE_UTILS_H_
@@ -0,0 +1,63 @@
1
+ #ifndef IPX_SPLITTED_NORMAL_MATRIX_H_
2
+ #define IPX_SPLITTED_NORMAL_MATRIX_H_
3
+
4
+ #include <vector>
5
+ #include "ipm/ipx/basis.h"
6
+ #include "ipm/ipx/linear_operator.h"
7
+ #include "ipm/ipx/model.h"
8
+ #include "ipm/ipx/sparse_matrix.h"
9
+
10
+ namespace ipx {
11
+
12
+ // SplittedNormalMatrix provides matrix-vector products with
13
+ //
14
+ // C = inv(B)*AI*AI'*inv(B') = I + inv(B)*N*N'*inv(B'),
15
+ //
16
+ // where AI is the m-by-(n+m) matrix defined by the model and [B N] is the
17
+ // partitioning of AI into basic and nonbasic columns defined by the basis.
18
+ // The columns of B and N are scaled by the interior point scaling factors
19
+ // provided in the call to Prepare().
20
+ //
21
+ // When a variable has status BASIC_FREE, the row and column of C become a unit
22
+ // vector. When a variable has status NONBASIC_FIXED, it is dropped from N.
23
+
24
+ class SplittedNormalMatrix : public LinearOperator {
25
+ public:
26
+ // Constructor stores a reference to the model. No data is copied. The model
27
+ // must be valid as long as the object is used.
28
+ explicit SplittedNormalMatrix(const Model& model);
29
+
30
+ // Prepares object for subsequent calls to Apply(). @colscale must hold n+m
31
+ // scaling factors for the columns of AI. The scaling factors are copied.
32
+ void Prepare(const Basis& basis, const double* colscale);
33
+
34
+ // Returns the column permutation from the LU factorization of the basis
35
+ // matrix. The permutation was stored in the object by Prepare().
36
+ const Int* colperm() const;
37
+
38
+ // Returns computation times for operations since last call to reset_time().
39
+ double time_B() const;
40
+ double time_Bt() const;
41
+ double time_NNt() const;
42
+ void reset_time();
43
+
44
+ private:
45
+ void _Apply(const Vector& rhs, Vector& lhs, double* rhs_dot_lhs) override;
46
+
47
+ const Model& model_;
48
+ SparseMatrix L_; // lower triangular factor without unit diagonal
49
+ SparseMatrix U_; // upper triangular factor with scaled columns
50
+ SparseMatrix N_; // N with scaled columns and permuted row indices
51
+ std::vector<Int> free_positions_; // positions corresponding to free vars
52
+ std::vector<Int> colperm_; // column permutation from LU factor
53
+ std::vector<Int> rowperm_inv_; // inverse row permutation from LU factor
54
+ Vector work_; // size m workspace
55
+ bool prepared_{false}; // operator prepared?
56
+ double time_B_{0.0}; // time solves with B
57
+ double time_Bt_{0.0}; // time solves with B'
58
+ double time_NNt_{0.0}; // time matrix-vector products with NN'
59
+ };
60
+
61
+ } // namespace ipx
62
+
63
+ #endif // IPX_SPLITTED_NORMAL_MATRIX_H_
@@ -0,0 +1,39 @@
1
+ #ifndef IPX_STARTING_BASIS_H_
2
+ #define IPX_STARTING_BASIS_H_
3
+
4
+ #include "ipm/ipx/basis.h"
5
+ #include "ipm/ipx/iterate.h"
6
+
7
+ namespace ipx {
8
+
9
+ // Constructs a basis with the following properties:
10
+ //
11
+ // If lb[j]=-inf and ub[j]=inf, then the variable becomes either
12
+ // - basic with status BASIC_FREE, or
13
+ // - nonbasic with status NONBASIC_FIXED. (1)
14
+ //
15
+ // If lb[j]==ub[j] and j is a slack variable, then it becomes either
16
+ // - basic with status BASIC_FREE, or (2)
17
+ // - nonbasic with status NONBASIC_FIXED.
18
+ //
19
+ // If lb[j]==ub[j] and j is not a slack variable, then it becomes
20
+ // - nonbasic with status NONBASIC_FIXED.
21
+ //
22
+ // All other variables get status BASIC or NONBASIC.
23
+ //
24
+ // In case (1) the columns corresponding to free variables are linearly
25
+ // dependent. In case (2) the rows to equality constraints are linearly
26
+ // dependent. In each case the dependent variables are moved to zero without
27
+ // altering the primal or dual residual.
28
+ // TODO: we need to check for primal/dual infeasibility here.
29
+ //
30
+ // The method calls ConstructBasisFromWeights() using the interior point
31
+ // scaling factors as column weights. If a variable gets status BASIC_FREE or
32
+ // NONBASIC_FIXED, then its state in @iterate is changed accordingly to free or
33
+ // fixed. On return info->errflag is nonzero if an error occured.
34
+ //
35
+ void StartingBasis(Iterate* iterate, Basis* basis, Info* info);
36
+
37
+ } // namespace ipx
38
+
39
+ #endif // IPX_STARTING_BASIS_H_
@@ -0,0 +1,29 @@
1
+ #ifndef IPX_SYMBOLIC_INVERT_H_
2
+ #define IPX_SYMBOLIC_INVERT_H_
3
+
4
+ #include <vector>
5
+ #include "ipm/ipx/ipx_internal.h"
6
+ #include "ipm/ipx/model.h"
7
+
8
+ namespace ipx {
9
+
10
+ // Computes the # structural nonzeros per row and column of inverse(B), where
11
+ // B = AI[:,basis] is the m-by-m matrix defined by the model and basis.
12
+ //
13
+ // @basis must have size m and be such that B is structurally nonsingular.
14
+ // (Otherwise an assertion will fail.)
15
+ // @rowcounts must either be NULL or an integer array of size m.
16
+ // If not NULL, then on return rowcounts[p], 0 <= p < m, holds the
17
+ // number of nonzeros in row p of inverse(B). Notice that row p of
18
+ // inverse(B) corresponds to column p of B.
19
+ // @colcounts must either be NULL or an integer array of size m.
20
+ // If not NULL, then on return colcounts[i], 0 <= i < m, holds the
21
+ // number of nonzeros in column i of inverse(B). Notice that column
22
+ // i of inverse(B) corresponds to row p of B.
23
+ //
24
+ void SymbolicInvert(const Model& model, const std::vector<Int>& basis,
25
+ Int* rowcounts, Int* colcounts);
26
+
27
+ } // namespace ipx
28
+
29
+ #endif // IPX_SYMBOLIC_INVERT_H_
@@ -0,0 +1,24 @@
1
+ #ifndef IPX_TIMER_H_
2
+ #define IPX_TIMER_H_
3
+
4
+ #include <chrono>
5
+
6
+ namespace ipx {
7
+
8
+ class Timer {
9
+ public:
10
+ Timer();
11
+ double Elapsed() const;
12
+ void Reset();
13
+
14
+ private:
15
+ typedef std::chrono::time_point<std::chrono::high_resolution_clock>
16
+ TimePoint;
17
+ static TimePoint tic();
18
+ static double toc(TimePoint start);
19
+ TimePoint t0_;
20
+ };
21
+
22
+ } // namespace ipx
23
+
24
+ #endif // IPX_TIMER_H_
@@ -0,0 +1,39 @@
1
+ #ifndef IPX_UTILS_H_
2
+ #define IPX_UTILS_H_
3
+
4
+ #include <vector>
5
+ #include "ipm/ipx/ipx_internal.h"
6
+
7
+ const bool kTerminationLogging = false;
8
+
9
+ namespace ipx {
10
+
11
+ bool AllFinite(const Vector& x);
12
+
13
+ double Onenorm(const Vector& x);
14
+ double Twonorm(const Vector& x);
15
+ double Infnorm(const Vector& x);
16
+ double Dot(const Vector& x, const Vector& y);
17
+
18
+ // Returns the index of an entry of maximum absolute value.
19
+ Int FindMaxAbs(const Vector& x);
20
+
21
+ // lhs[permuted_index] = rhs
22
+ void Permute(const std::vector<Int>& permuted_index, const Vector& rhs,
23
+ Vector& lhs);
24
+
25
+ // lhs = rhs[permuted_index]
26
+ void PermuteBack(const std::vector<Int>& permuted_index, const Vector& rhs,
27
+ Vector& lhs);
28
+
29
+ // Returns the inverse permutation to @perm.
30
+ std::vector<Int> InversePerm(const std::vector<Int>& perm);
31
+
32
+ // Returns the permutation that puts values[0..m-1] in increasing (if reverse is
33
+ // false) or in decreasing (if reverse is true) order. If values==NULL, returns
34
+ // the identity permutation.
35
+ std::vector<Int> Sortperm(Int m, const double* values, bool reverse);
36
+
37
+ } // namespace ipx
38
+
39
+ #endif // IPX_UTILS_H_
@@ -2,7 +2,7 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
5
+ /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
6
  /* Leona Gottwald and Michael Feldmeier */
7
7
  /* */
8
8
  /* Available as open-source under the MIT License */
@@ -21,10 +21,11 @@
21
21
  #include "util/HighsInt.h"
22
22
 
23
23
  const std::string kHighsCopyrightStatement =
24
- "Copyright (c) 2023 HiGHS under MIT licence terms";
24
+ "Copyright (c) 2024 HiGHS under MIT licence terms";
25
25
 
26
26
  const size_t kHighsSize_tInf = std::numeric_limits<size_t>::max();
27
27
  const HighsInt kHighsIInf = std::numeric_limits<HighsInt>::max();
28
+ const HighsInt kHighsIInf32 = std::numeric_limits<int>::max();
28
29
  const double kHighsInf = std::numeric_limits<double>::infinity();
29
30
  const double kHighsTiny = 1e-14;
30
31
  const double kHighsMacheps = std::ldexp(1, -52);
@@ -35,6 +36,10 @@ const std::string kHighsOnString = "on";
35
36
  const HighsInt kHighsMaxStringLength = 512;
36
37
  const HighsInt kSimplexConcurrencyLimit = 8;
37
38
  const double kRunningAverageMultiplier = 0.05;
39
+ const double kExcessivelyLargeBoundValue = 1e10;
40
+ const double kExcessivelyLargeCostValue = 1e10;
41
+ const double kExcessivelySmallBoundValue = 1e-4;
42
+ const double kExcessivelySmallCostValue = 1e-4;
38
43
 
39
44
  const bool kAllowDeveloperAssert = false;
40
45
  const bool kExtendInvertWhenAddingRows = false;
@@ -168,6 +173,7 @@ enum class HighsPresolveStatus {
168
173
  kNullError, // V2.0: Delete since it's not used!
169
174
  kOptionsError, // V2.0: Delete since it's not used!
170
175
  kNotSet,
176
+ kOutOfMemory, // V2.0: Move above kNotSet
171
177
  };
172
178
 
173
179
  enum class HighsPostsolveStatus { // V2.0: Delete if not used!
@@ -202,19 +208,23 @@ enum class HighsModelStatus {
202
208
  kUnknown,
203
209
  kSolutionLimit,
204
210
  kInterrupt,
211
+ kMemoryLimit,
205
212
  kMin = kNotset,
206
- kMax = kInterrupt
213
+ kMax = kMemoryLimit
207
214
  };
208
215
 
209
216
  enum HighsCallbackType : int {
210
217
  kCallbackMin = 0,
211
- kCallbackLogging = kCallbackMin,
212
- kCallbackSimplexInterrupt,
213
- kCallbackIpmInterrupt,
214
- kCallbackMipImprovingSolution,
215
- kCallbackMipLogging,
216
- kCallbackMipInterrupt,
217
- kCallbackMax = kCallbackMipInterrupt,
218
+ kCallbackLogging = kCallbackMin, // 0
219
+ kCallbackSimplexInterrupt, // 1
220
+ kCallbackIpmInterrupt, // 2
221
+ kCallbackMipSolution, // 3
222
+ kCallbackMipImprovingSolution, // 4
223
+ kCallbackMipLogging, // 5
224
+ kCallbackMipInterrupt, // 6
225
+ kCallbackMipGetCutPool, // 7
226
+ kCallbackMipDefineLazyConstraints, // 8
227
+ kCallbackMax = kCallbackMipDefineLazyConstraints,
218
228
  kNumCallbackType
219
229
  };
220
230
 
@@ -2,7 +2,7 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
5
+ /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
6
  /* Leona Gottwald and Michael Feldmeier */
7
7
  /* */
8
8
  /* Available as open-source under the MIT License */
@@ -83,17 +83,27 @@ struct HighsScale {
83
83
  };
84
84
 
85
85
  struct HighsLpMods {
86
+ // Semi-variables with zero lower bound that are treated as non-semi
86
87
  std::vector<HighsInt> save_non_semi_variable_index;
88
+
89
+ // Semi-variables with inconsistent bounds that are fixed at zero
87
90
  std::vector<HighsInt> save_inconsistent_semi_variable_index;
88
91
  std::vector<double> save_inconsistent_semi_variable_lower_bound_value;
89
92
  std::vector<double> save_inconsistent_semi_variable_upper_bound_value;
90
93
  std::vector<HighsVarType> save_inconsistent_semi_variable_type;
91
94
 
95
+ // Semi-variables whose lower bound is ignored when solving the
96
+ // relaxation
92
97
  std::vector<HighsInt> save_relaxed_semi_variable_lower_bound_index;
93
98
  std::vector<double> save_relaxed_semi_variable_lower_bound_value;
99
+
100
+ // Semi-variables whose upper bound is too large to be used as a
101
+ // big-M when converting them to an integer variables plus an
102
+ // integer/continuous variables as appropriate
94
103
  std::vector<HighsInt> save_tightened_semi_variable_upper_bound_index;
95
104
  std::vector<double> save_tightened_semi_variable_upper_bound_value;
96
105
 
106
+ // Variables with infinite costs that are fixed during solve
97
107
  std::vector<HighsInt> save_inf_cost_variable_index;
98
108
  std::vector<double> save_inf_cost_variable_cost;
99
109
  std::vector<double> save_inf_cost_variable_lower;
@@ -107,6 +117,8 @@ struct HighsNameHash {
107
117
  std::unordered_map<std::string, int> name2index;
108
118
  void form(const std::vector<std::string>& name);
109
119
  bool hasDuplicate(const std::vector<std::string>& name);
120
+ void update(int index, const std::string& old_name,
121
+ const std::string& new_name);
110
122
  void clear();
111
123
  };
112
124
 
@@ -121,4 +133,14 @@ struct HighsPresolveLog {
121
133
  void clear();
122
134
  };
123
135
 
136
+ struct HighsIllConditioningRecord {
137
+ HighsInt index;
138
+ double multiplier;
139
+ };
140
+
141
+ struct HighsIllConditioning {
142
+ std::vector<HighsIllConditioningRecord> record;
143
+ void clear();
144
+ };
145
+
124
146
  #endif /* LP_DATA_HSTRUCT_H_ */
@@ -2,7 +2,7 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
5
+ /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
6
  /* Leona Gottwald and Michael Feldmeier */
7
7
  /* */
8
8
  /* Available as open-source under the MIT License */
@@ -2,7 +2,7 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
5
+ /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
6
  /* Leona Gottwald and Michael Feldmeier */
7
7
  /* */
8
8
  /* Available as open-source under the MIT License */
@@ -14,12 +14,19 @@
14
14
  #ifndef LP_DATA_HIGHSCALLBACK_H_
15
15
  #define LP_DATA_HIGHSCALLBACK_H_
16
16
 
17
+ #include <functional>
18
+
17
19
  #include "lp_data/HStruct.h"
18
20
  #include "lp_data/HighsCallbackStruct.h"
19
21
 
22
+ using HighsCallbackFunctionType =
23
+ std::function<void(int, const std::string&, const HighsCallbackDataOut*,
24
+ HighsCallbackDataIn*, void*)>;
25
+
20
26
  struct HighsCallback {
21
- void (*user_callback)(const int, const char*, const HighsCallbackDataOut*,
22
- HighsCallbackDataIn*, void*) = nullptr;
27
+ // Function pointers cannot be used for Pybind11, so use std::function
28
+ HighsCallbackFunctionType user_callback = nullptr;
29
+ HighsCCallbackType c_callback = nullptr;
23
30
  void* user_callback_data = nullptr;
24
31
  std::vector<bool> active;
25
32
  HighsCallbackDataOut data_out;