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
@@ -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 */
@@ -16,21 +16,47 @@
16
16
 
17
17
  #include "util/HighsInt.h"
18
18
 
19
- struct HighsCallbackDataOut {
19
+ #ifdef __cplusplus
20
+ extern "C" {
21
+ #endif
22
+
23
+ /**
24
+ * Struct to handle callback output data
25
+ *
26
+ */
27
+ typedef struct {
20
28
  int log_type; // cast of HighsLogType
21
29
  double running_time;
22
30
  HighsInt simplex_iteration_count;
23
31
  HighsInt ipm_iteration_count;
32
+ HighsInt pdlp_iteration_count;
24
33
  double objective_function_value;
25
34
  int64_t mip_node_count;
26
35
  double mip_primal_bound;
27
36
  double mip_dual_bound;
28
37
  double mip_gap;
29
38
  double* mip_solution;
30
- };
39
+ HighsInt cutpool_num_col;
40
+ HighsInt cutpool_num_cut;
41
+ HighsInt cutpool_num_nz;
42
+ HighsInt* cutpool_start;
43
+ HighsInt* cutpool_index;
44
+ double* cutpool_value;
45
+ double* cutpool_lower;
46
+ double* cutpool_upper;
47
+ } HighsCallbackDataOut;
31
48
 
32
- struct HighsCallbackDataIn {
49
+ typedef struct {
33
50
  int user_interrupt;
34
- };
51
+ } HighsCallbackDataIn;
52
+
53
+ // Additional callback handling
54
+ typedef void (*HighsCCallbackType)(int, const char*,
55
+ const HighsCallbackDataOut*,
56
+ HighsCallbackDataIn*, void*);
57
+
58
+ #ifdef __cplusplus
59
+ }
60
+ #endif
35
61
 
36
62
  #endif /* LP_DATA_HIGHSCALLBACKSTRUCT_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 */
@@ -138,6 +138,7 @@ struct HighsInfoStruct {
138
138
  HighsInt simplex_iteration_count;
139
139
  HighsInt ipm_iteration_count;
140
140
  HighsInt crossover_iteration_count;
141
+ HighsInt pdlp_iteration_count;
141
142
  HighsInt qp_iteration_count;
142
143
  HighsInt primal_solution_status;
143
144
  HighsInt dual_solution_status;
@@ -152,6 +153,8 @@ struct HighsInfoStruct {
152
153
  HighsInt num_dual_infeasibilities;
153
154
  double max_dual_infeasibility;
154
155
  double sum_dual_infeasibilities;
156
+ double max_complementarity_violation;
157
+ double sum_complementarity_violations;
155
158
  };
156
159
 
157
160
  class HighsInfo : public HighsInfoStruct {
@@ -192,7 +195,7 @@ class HighsInfo : public HighsInfoStruct {
192
195
 
193
196
  private:
194
197
  void deleteRecords() {
195
- for (HighsUInt i = 0; i < records.size(); i++) delete records[i];
198
+ for (size_t i = 0; i < records.size(); i++) delete records[i];
196
199
  }
197
200
 
198
201
  void initRecords() {
@@ -216,6 +219,11 @@ class HighsInfo : public HighsInfoStruct {
216
219
  &crossover_iteration_count, 0);
217
220
  records.push_back(record_int);
218
221
 
222
+ record_int = new InfoRecordInt("pdlp_iteration_count",
223
+ "Iteration count for PDLP solver", advanced,
224
+ &pdlp_iteration_count, 0);
225
+ records.push_back(record_int);
226
+
219
227
  record_int =
220
228
  new InfoRecordInt("qp_iteration_count", "Iteration count for QP solver",
221
229
  advanced, &qp_iteration_count, 0);
@@ -295,6 +303,16 @@ class HighsInfo : public HighsInfoStruct {
295
303
  "sum_dual_infeasibilities", "Sum of dual infeasibilities", advanced,
296
304
  &sum_dual_infeasibilities, 0);
297
305
  records.push_back(record_double);
306
+
307
+ record_double = new InfoRecordDouble(
308
+ "max_complementarity_violation", "Max complementarity violation",
309
+ advanced, &max_complementarity_violation, 0);
310
+ records.push_back(record_double);
311
+
312
+ record_double = new InfoRecordDouble(
313
+ "sum_complementarity_violations", "Sum of complementarity violations",
314
+ advanced, &sum_complementarity_violations, 0);
315
+ records.push_back(record_double);
298
316
  }
299
317
 
300
318
  public:
@@ -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 */
@@ -50,6 +50,8 @@ class HighsLp {
50
50
  HighsNameHash col_hash_;
51
51
  HighsNameHash row_hash_;
52
52
 
53
+ HighsInt user_bound_scale_;
54
+ HighsInt user_cost_scale_;
53
55
  HighsScale scale_;
54
56
  bool is_scaled_;
55
57
  bool is_moved_;
@@ -63,6 +65,8 @@ class HighsLp {
63
65
  bool isMip() const;
64
66
  bool hasSemiVariables() const;
65
67
  bool hasInfiniteCost(const double infinite_cost) const;
68
+ bool hasMods() const;
69
+ bool needsMods(const double infinite_cost) const;
66
70
  double objectiveValue(const std::vector<double>& solution) const;
67
71
  HighsCDouble objectiveCDoubleValue(const std::vector<double>& solution) const;
68
72
  void setMatrixDimensions();
@@ -75,9 +79,21 @@ class HighsLp {
75
79
  void applyScale();
76
80
  void unapplyScale();
77
81
  void moveBackLpAndUnapplyScaling(HighsLp& lp);
82
+ bool userBoundScaleOk(const HighsInt user_bound_scale,
83
+ const double infinite_bound) const;
84
+ void userBoundScale(const HighsInt user_bound_scale);
85
+ bool userCostScaleOk(const HighsInt user_cost_scale,
86
+ const double infinite_cost) const;
87
+ void userCostScale(const HighsInt user_cost_scale);
78
88
  void exactResize();
79
89
  void addColNames(const std::string name, const HighsInt num_new_col = 1);
80
90
  void addRowNames(const std::string name, const HighsInt num_new_row = 1);
91
+ void deleteColsFromVectors(HighsInt& new_num_col,
92
+ const HighsIndexCollection& index_collection);
93
+ void deleteRowsFromVectors(HighsInt& new_num_row,
94
+ const HighsIndexCollection& index_collection);
95
+ void deleteCols(const HighsIndexCollection& index_collection);
96
+ void deleteRows(const HighsIndexCollection& index_collection);
81
97
  void unapplyMods();
82
98
  void clear();
83
99
  };
@@ -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 */
@@ -57,8 +57,17 @@ HighsStatus assessBounds(const HighsOptions& options, const char* type,
57
57
 
58
58
  HighsStatus cleanBounds(const HighsOptions& options, HighsLp& lp);
59
59
 
60
- HighsStatus assessIntegrality(HighsLp& lp, const HighsOptions& options);
61
- void relaxSemiVariables(HighsLp& lp);
60
+ bool boundScaleOk(const std::vector<double>& lower,
61
+ const std::vector<double>& upper, const HighsInt bound_scale,
62
+ const double infinite_bound);
63
+
64
+ bool costScaleOk(const std::vector<double>& cost, const HighsInt cost_scale,
65
+ const double infinite_cost);
66
+
67
+ HighsStatus assessSemiVariables(HighsLp& lp, const HighsOptions& options,
68
+ bool& made_semi_variable_mods);
69
+ void relaxSemiVariables(HighsLp& lp, bool& made_semi_variable_mods);
70
+
62
71
  bool activeModifiedUpperBounds(const HighsOptions& options, const HighsLp& lp,
63
72
  const std::vector<double> col_value);
64
73
 
@@ -76,6 +85,8 @@ HighsStatus applyScalingToLpCol(HighsLp& lp, const HighsInt col,
76
85
  HighsStatus applyScalingToLpRow(HighsLp& lp, const HighsInt row,
77
86
  const double rowScale);
78
87
 
88
+ void unscaleSolution(HighsSolution& solution, const HighsScale& scale);
89
+
79
90
  void appendColsToLpVectors(HighsLp& lp, const HighsInt num_new_col,
80
91
  const vector<double>& colCost,
81
92
  const vector<double>& colLower,
@@ -85,16 +96,6 @@ void appendRowsToLpVectors(HighsLp& lp, const HighsInt num_new_row,
85
96
  const vector<double>& rowLower,
86
97
  const vector<double>& rowUpper);
87
98
 
88
- void deleteLpCols(HighsLp& lp, const HighsIndexCollection& index_collection);
89
-
90
- void deleteColsFromLpVectors(HighsLp& lp, HighsInt& new_num_col,
91
- const HighsIndexCollection& index_collection);
92
-
93
- void deleteLpRows(HighsLp& lp, const HighsIndexCollection& index_collection);
94
-
95
- void deleteRowsFromLpVectors(HighsLp& lp, HighsInt& new_num_row,
96
- const HighsIndexCollection& index_collection);
97
-
98
99
  void deleteScale(vector<double>& scale,
99
100
  const HighsIndexCollection& index_collection);
100
101
 
@@ -229,15 +230,14 @@ HighsStatus assessLpPrimalSolution(const HighsOptions& options,
229
230
  const HighsSolution& solution, bool& valid,
230
231
  bool& integral, bool& feasible);
231
232
 
232
- HighsStatus calculateRowValues(const HighsLp& lp,
233
- const std::vector<double>& col_value,
234
- std::vector<double>& row_value);
235
- HighsStatus calculateRowValues(const HighsLp& lp, HighsSolution& solution);
233
+ HighsStatus calculateRowValuesQuad(const HighsLp& lp,
234
+ const std::vector<double>& col_value,
235
+ std::vector<double>& row_value,
236
+ const HighsInt report_row = -1);
236
237
  HighsStatus calculateRowValuesQuad(const HighsLp& lp, HighsSolution& solution,
237
238
  const HighsInt report_row = -1);
238
- HighsStatus calculateColDuals(const HighsLp& lp, HighsSolution& solution);
239
239
 
240
- bool isBoundInfeasible(const HighsLogOptions& log_options, const HighsLp& lp);
240
+ HighsStatus calculateColDualsQuad(const HighsLp& lp, HighsSolution& solution);
241
241
 
242
242
  bool isColDataNull(const HighsLogOptions& log_options,
243
243
  const double* usr_col_cost, const double* usr_col_lower,
@@ -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 */
@@ -257,6 +257,7 @@ void reportOption(FILE* file, const OptionRecordString& option,
257
257
 
258
258
  const string kSimplexString = "simplex";
259
259
  const string kIpmString = "ipm";
260
+ const string kPdlpString = "pdlp";
260
261
 
261
262
  const HighsInt kKeepNRowsDeleteRows = -1;
262
263
  const HighsInt kKeepNRowsDeleteEntries = 0;
@@ -303,6 +304,8 @@ struct HighsOptionsStruct {
303
304
  double objective_bound;
304
305
  double objective_target;
305
306
  HighsInt threads;
307
+ HighsInt user_bound_scale;
308
+ HighsInt user_cost_scale;
306
309
  HighsInt highs_debug_level;
307
310
  HighsInt highs_analysis_level;
308
311
  HighsInt simplex_strategy;
@@ -328,8 +331,20 @@ struct HighsOptionsStruct {
328
331
  // Options for IPM solver
329
332
  HighsInt ipm_iteration_limit;
330
333
 
334
+ // Options for PDLP solver
335
+ bool pdlp_native_termination;
336
+ bool pdlp_scaling;
337
+ HighsInt pdlp_iteration_limit;
338
+ HighsInt pdlp_e_restart_method;
339
+ double pdlp_d_gap_tol;
340
+
341
+ // Options for QP solver
342
+ HighsInt qp_iteration_limit;
343
+ HighsInt qp_nullspace_limit;
344
+
331
345
  // Advanced options
332
346
  HighsInt log_dev_level;
347
+ bool log_githash;
333
348
  bool solve_relaxation;
334
349
  bool allow_unbounded_or_infeasible;
335
350
  bool use_implied_bounds_from_presolve;
@@ -347,6 +362,7 @@ struct HighsOptionsStruct {
347
362
  HighsInt simplex_price_strategy;
348
363
  HighsInt simplex_unscaled_solution_strategy;
349
364
  HighsInt presolve_reduction_limit;
365
+ HighsInt restart_presolve_reduction_limit;
350
366
  HighsInt presolve_substitution_maxfillin;
351
367
  HighsInt presolve_rule_off;
352
368
  bool presolve_rule_logging;
@@ -366,6 +382,9 @@ struct HighsOptionsStruct {
366
382
  bool less_infeasible_DSE_check;
367
383
  bool less_infeasible_DSE_choose_row;
368
384
  bool use_original_HFactor_logic;
385
+ bool run_centring;
386
+ HighsInt max_centring_steps;
387
+ double centring_ratio_tolerance;
369
388
 
370
389
  // Options for iCrash
371
390
  bool icrash;
@@ -379,6 +398,7 @@ struct HighsOptionsStruct {
379
398
 
380
399
  // Options for MIP solver
381
400
  bool mip_detect_symmetry;
401
+ bool mip_allow_restart;
382
402
  HighsInt mip_max_nodes;
383
403
  HighsInt mip_max_stall_nodes;
384
404
  HighsInt mip_max_leaves;
@@ -404,6 +424,128 @@ struct HighsOptionsStruct {
404
424
  // Logging callback identifiers
405
425
  HighsLogOptions log_options;
406
426
  virtual ~HighsOptionsStruct() {}
427
+
428
+ HighsOptionsStruct()
429
+ : presolve(""),
430
+ solver(""),
431
+ parallel(""),
432
+ run_crossover(""),
433
+ time_limit(0.0),
434
+ solution_file(""),
435
+ write_model_file(""),
436
+ random_seed(0),
437
+ ranging(""),
438
+ infinite_cost(0.0),
439
+ infinite_bound(0.0),
440
+ small_matrix_value(0.0),
441
+ large_matrix_value(0.0),
442
+ primal_feasibility_tolerance(0.0),
443
+ dual_feasibility_tolerance(0.0),
444
+ ipm_optimality_tolerance(0.0),
445
+ objective_bound(0.0),
446
+ objective_target(0.0),
447
+ threads(0),
448
+ user_bound_scale(0),
449
+ user_cost_scale(0),
450
+ highs_debug_level(0),
451
+ highs_analysis_level(0),
452
+ simplex_strategy(0),
453
+ simplex_scale_strategy(0),
454
+ simplex_crash_strategy(0),
455
+ simplex_dual_edge_weight_strategy(0),
456
+ simplex_primal_edge_weight_strategy(0),
457
+ simplex_iteration_limit(0),
458
+ simplex_update_limit(0),
459
+ simplex_min_concurrency(0),
460
+ simplex_max_concurrency(0),
461
+ log_file(""),
462
+ write_model_to_file(false),
463
+ write_solution_to_file(false),
464
+ write_solution_style(0),
465
+ glpsol_cost_row_location(0),
466
+ output_flag(false),
467
+ log_to_console(false),
468
+ ipm_iteration_limit(0),
469
+ pdlp_native_termination(false),
470
+ pdlp_scaling(false),
471
+ pdlp_iteration_limit(0),
472
+ pdlp_e_restart_method(0),
473
+ pdlp_d_gap_tol(0.0),
474
+ qp_iteration_limit(0),
475
+ qp_nullspace_limit(0),
476
+ log_dev_level(0),
477
+ log_githash(false),
478
+ solve_relaxation(false),
479
+ allow_unbounded_or_infeasible(false),
480
+ use_implied_bounds_from_presolve(false),
481
+ lp_presolve_requires_basis_postsolve(false),
482
+ mps_parser_type_free(false),
483
+ keep_n_rows(0),
484
+ cost_scale_factor(0),
485
+ allowed_matrix_scale_factor(0),
486
+ allowed_cost_scale_factor(0),
487
+ ipx_dualize_strategy(0),
488
+ simplex_dualize_strategy(0),
489
+ simplex_permute_strategy(0),
490
+ max_dual_simplex_cleanup_level(0),
491
+ max_dual_simplex_phase1_cleanup_level(0),
492
+ simplex_price_strategy(0),
493
+ simplex_unscaled_solution_strategy(0),
494
+ presolve_reduction_limit(0),
495
+ restart_presolve_reduction_limit(0),
496
+ presolve_substitution_maxfillin(0),
497
+ presolve_rule_off(0),
498
+ presolve_rule_logging(false),
499
+ simplex_initial_condition_check(false),
500
+ no_unnecessary_rebuild_refactor(false),
501
+ simplex_initial_condition_tolerance(0.0),
502
+ rebuild_refactor_solution_error_tolerance(0.0),
503
+ dual_steepest_edge_weight_error_tolerance(0.0),
504
+ dual_steepest_edge_weight_log_error_threshold(0.0),
505
+ dual_simplex_cost_perturbation_multiplier(0.0),
506
+ primal_simplex_bound_perturbation_multiplier(0.0),
507
+ dual_simplex_pivot_growth_tolerance(0.0),
508
+ presolve_pivot_threshold(0.0),
509
+ factor_pivot_threshold(0.0),
510
+ factor_pivot_tolerance(0.0),
511
+ start_crossover_tolerance(0.0),
512
+ less_infeasible_DSE_check(false),
513
+ less_infeasible_DSE_choose_row(false),
514
+ use_original_HFactor_logic(false),
515
+ run_centring(false),
516
+ max_centring_steps(0),
517
+ centring_ratio_tolerance(0.0),
518
+ icrash(false),
519
+ icrash_dualize(false),
520
+ icrash_strategy(""),
521
+ icrash_starting_weight(0.0),
522
+ icrash_iterations(0),
523
+ icrash_approx_iter(0),
524
+ icrash_exact(false),
525
+ icrash_breakpoints(false),
526
+ mip_detect_symmetry(false),
527
+ mip_allow_restart(false),
528
+ mip_max_nodes(0),
529
+ mip_max_stall_nodes(0),
530
+ mip_max_leaves(0),
531
+ mip_max_improving_sols(0),
532
+ mip_lp_age_limit(0),
533
+ mip_pool_age_limit(0),
534
+ mip_pool_soft_limit(0),
535
+ mip_pscost_minreliable(0),
536
+ mip_min_cliquetable_entries_for_parallelism(0),
537
+ mip_report_level(0),
538
+ mip_feasibility_tolerance(0.0),
539
+ mip_rel_gap(0.0),
540
+ mip_abs_gap(0.0),
541
+ mip_heuristic_effort(0.0),
542
+ mip_min_logging_interval(0.0),
543
+ #ifdef HIGHS_DEBUGSOL
544
+ mip_debug_solution_file(""),
545
+ #endif
546
+ mip_improving_solution_save(false),
547
+ mip_improving_solution_report_sparse(false),
548
+ mip_improving_solution_file(""){};
407
549
  };
408
550
 
409
551
  // For now, but later change so HiGHS properties are string based so that new
@@ -471,8 +613,9 @@ class HighsOptions : public HighsOptionsStruct {
471
613
 
472
614
  record_string = new OptionRecordString(
473
615
  kSolverString,
474
- "Solver option: \"simplex\", \"choose\" or \"ipm\". If "
475
- "\"simplex\"/\"ipm\" is chosen then, for a MIP (QP) the integrality "
616
+ "Solver option: \"simplex\", \"choose\", \"ipm\" or \"pdlp\". If "
617
+ "\"simplex\"/\"ipm\"/\"pdlp\" is chosen then, for a MIP (QP) the "
618
+ "integrality "
476
619
  "constraint (quadratic term) will be ignored",
477
620
  advanced, &solver, kHighsChooseString);
478
621
  records.push_back(record_string);
@@ -545,13 +688,14 @@ class HighsOptions : public HighsOptionsStruct {
545
688
  records.push_back(record_double);
546
689
 
547
690
  record_double = new OptionRecordDouble(
548
- "objective_bound", "Objective bound for termination of dual simplex",
549
- advanced, &objective_bound, -kHighsInf, kHighsInf, kHighsInf);
691
+ "objective_bound",
692
+ "Objective bound for termination of the dual simplex solver", advanced,
693
+ &objective_bound, -kHighsInf, kHighsInf, kHighsInf);
550
694
  records.push_back(record_double);
551
695
 
552
696
  record_double = new OptionRecordDouble(
553
- "objective_target", "Objective target for termination of MIP solver",
554
- advanced,
697
+ "objective_target",
698
+ "Objective target for termination of the MIP solver", advanced,
555
699
  //"primal simplex and "
556
700
  &objective_target, -kHighsInf, -kHighsInf, kHighsInf);
557
701
  records.push_back(record_double);
@@ -566,6 +710,16 @@ class HighsOptions : public HighsOptionsStruct {
566
710
  &threads, 0, 0, kHighsIInf);
567
711
  records.push_back(record_int);
568
712
 
713
+ record_int = new OptionRecordInt(
714
+ "user_bound_scale", "Exponent of power-of-two bound scaling for model",
715
+ advanced, &user_bound_scale, -kHighsIInf, 0, kHighsIInf);
716
+ records.push_back(record_int);
717
+
718
+ record_int = new OptionRecordInt(
719
+ "user_cost_scale", "Exponent of power-of-two cost scaling for model",
720
+ advanced, &user_cost_scale, -kHighsIInf, 0, kHighsIInf);
721
+ records.push_back(record_int);
722
+
569
723
  record_int = new OptionRecordInt("highs_debug_level",
570
724
  "Debugging level in HiGHS", now_advanced,
571
725
  &highs_debug_level, kHighsDebugLevelMin,
@@ -747,6 +901,11 @@ class HighsOptions : public HighsOptionsStruct {
747
901
  advanced, &mip_detect_symmetry, true);
748
902
  records.push_back(record_bool);
749
903
 
904
+ record_bool = new OptionRecordBool("mip_allow_restart",
905
+ "Whether MIP restart is permitted",
906
+ advanced, &mip_allow_restart, true);
907
+ records.push_back(record_bool);
908
+
750
909
  record_int = new OptionRecordInt("mip_max_nodes",
751
910
  "MIP solver max number of nodes", advanced,
752
911
  &mip_max_nodes, 0, kHighsIInf, kHighsIInf);
@@ -780,7 +939,7 @@ class HighsOptions : public HighsOptionsStruct {
780
939
  record_string = new OptionRecordString(
781
940
  "mip_improving_solution_file",
782
941
  "File for reporting improving MIP solutions: not reported for an empty "
783
- "string \"\"",
942
+ "string \\\"\\\"",
784
943
  advanced, &mip_improving_solution_file, kHighsFilenameDefault);
785
944
  records.push_back(record_string);
786
945
 
@@ -872,8 +1031,46 @@ class HighsOptions : public HighsOptionsStruct {
872
1031
  &ipm_iteration_limit, 0, kHighsIInf, kHighsIInf);
873
1032
  records.push_back(record_int);
874
1033
 
1034
+ record_bool = new OptionRecordBool(
1035
+ "pdlp_native_termination",
1036
+ "Use native termination for PDLP solver: Default = false", advanced,
1037
+ &pdlp_native_termination, false);
1038
+ records.push_back(record_bool);
1039
+
1040
+ record_bool = new OptionRecordBool(
1041
+ "pdlp_scaling", "Scaling option for PDLP solver: Default = true",
1042
+ advanced, &pdlp_scaling, true);
1043
+ records.push_back(record_bool);
1044
+
1045
+ record_int = new OptionRecordInt(
1046
+ "pdlp_iteration_limit", "Iteration limit for PDLP solver", advanced,
1047
+ &pdlp_iteration_limit, 0, kHighsIInf, kHighsIInf);
1048
+ records.push_back(record_int);
1049
+
1050
+ record_int = new OptionRecordInt("pdlp_e_restart_method",
1051
+ "Restart mode for PDLP solver: 0 => none; "
1052
+ "1 => GPU (default); 2 => CPU ",
1053
+ advanced, &pdlp_e_restart_method, 0, 1, 2);
1054
+ records.push_back(record_int);
1055
+
1056
+ record_double = new OptionRecordDouble(
1057
+ "pdlp_d_gap_tol",
1058
+ "Duality gap tolerance for PDLP solver: Default = 1e-4", advanced,
1059
+ &pdlp_d_gap_tol, 1e-12, 1e-4, kHighsInf);
1060
+ records.push_back(record_double);
1061
+
1062
+ record_int = new OptionRecordInt(
1063
+ "qp_iteration_limit", "Iteration limit for QP solver", advanced,
1064
+ &qp_iteration_limit, 0, kHighsIInf, kHighsIInf);
1065
+ records.push_back(record_int);
1066
+
1067
+ record_int = new OptionRecordInt("qp_nullspace_limit",
1068
+ "Nullspace limit for QP solver", advanced,
1069
+ &qp_nullspace_limit, 0, 4000, kHighsIInf);
1070
+ records.push_back(record_int);
1071
+
875
1072
  // Fix the number of user settable options
876
- num_user_settable_options_ = records.size();
1073
+ num_user_settable_options_ = static_cast<HighsInt>(records.size());
877
1074
 
878
1075
  // Advanced options
879
1076
  advanced = true;
@@ -885,6 +1082,10 @@ class HighsOptions : public HighsOptionsStruct {
885
1082
  kHighsLogDevLevelMax);
886
1083
  records.push_back(record_int);
887
1084
 
1085
+ record_bool = new OptionRecordBool("log_githash", "Log the githash",
1086
+ advanced, &log_githash, true);
1087
+ records.push_back(record_bool);
1088
+
888
1089
  record_bool = new OptionRecordBool(
889
1090
  "solve_relaxation", "Solve the relaxation of discrete model components",
890
1091
  advanced, &solve_relaxation, false);
@@ -1057,6 +1258,13 @@ class HighsOptions : public HighsOptionsStruct {
1057
1258
  &presolve_reduction_limit, -1, -1, kHighsIInf);
1058
1259
  records.push_back(record_int);
1059
1260
 
1261
+ record_int = new OptionRecordInt(
1262
+ "restart_presolve_reduction_limit",
1263
+ "Limit on number of further presolve reductions on restart in MIP "
1264
+ "solver -1 => no limit, otherwise, must be positive",
1265
+ advanced, &restart_presolve_reduction_limit, -1, -1, kHighsIInf);
1266
+ records.push_back(record_int);
1267
+
1060
1268
  record_int = new OptionRecordInt(
1061
1269
  "presolve_rule_off", "Bit mask of presolve rules that are not allowed",
1062
1270
  advanced, &presolve_rule_off, 0, 0, kHighsIInf);
@@ -1108,6 +1316,25 @@ class HighsOptions : public HighsOptionsStruct {
1108
1316
  &less_infeasible_DSE_choose_row, true);
1109
1317
  records.push_back(record_bool);
1110
1318
 
1319
+ record_bool =
1320
+ new OptionRecordBool("run_centring", "Perform centring steps or not",
1321
+ advanced, &run_centring, false);
1322
+ records.push_back(record_bool);
1323
+
1324
+ record_int =
1325
+ new OptionRecordInt("max_centring_steps",
1326
+ "Maximum number of steps to use (default = 5) "
1327
+ "when computing the analytic centre",
1328
+ advanced, &max_centring_steps, 0, 5, kHighsIInf);
1329
+ records.push_back(record_int);
1330
+
1331
+ record_double = new OptionRecordDouble(
1332
+ "centring_ratio_tolerance",
1333
+ "Centring stops when the ratio max(x_j*s_j) / min(x_j*s_j) is below "
1334
+ "this tolerance (default = 100)",
1335
+ advanced, &centring_ratio_tolerance, 0, 100, kHighsInf);
1336
+ records.push_back(record_double);
1337
+
1111
1338
  // Set up the log_options aliases
1112
1339
  log_options.clear();
1113
1340
  log_options.log_stream =
@@ -1118,7 +1345,7 @@ class HighsOptions : public HighsOptionsStruct {
1118
1345
  }
1119
1346
 
1120
1347
  void deleteRecords() {
1121
- for (HighsUInt i = 0; i < records.size(); i++) delete records[i];
1348
+ for (size_t i = 0; i < records.size(); i++) delete records[i];
1122
1349
  }
1123
1350
 
1124
1351
  public:
@@ -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 */