casadi 3.6.7__cp39-none-win_amd64.whl → 3.7.0__cp39-none-win_amd64.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 (442) hide show
  1. casadi/_casadi.pyd +0 -0
  2. casadi/blasfeo.lib +0 -0
  3. casadi/casadi-cli.exe +0 -0
  4. casadi/casadi.lib +0 -0
  5. casadi/casadi.py +6070 -3038
  6. casadi/cbc.exe +0 -0
  7. casadi/clp.exe +0 -0
  8. casadi/cmake/casadi-config-version.cmake +1 -1
  9. casadi/cmake/casadi-targets-release.cmake +5 -5
  10. casadi/cmake/casadi-targets.cmake +5 -5
  11. casadi/{lib/cmake/tinyxml2/tinyxml2-config-version.cmake → cmake/ghc_filesystem/ghc_filesystem-config-version.cmake} +19 -10
  12. casadi/cmake/ghc_filesystem/ghc_filesystem-config.cmake +30 -0
  13. casadi/cmake/ghc_filesystem/ghc_filesystem-targets.cmake +99 -0
  14. casadi/cmake/highs/highs-config.cmake +1 -0
  15. casadi/cmake/highs/highs-targets.cmake +2 -2
  16. casadi/cmake/libzip/libzip-config-version.cmake +48 -0
  17. casadi/cmake/libzip/libzip-config.cmake +69 -0
  18. casadi/cmake/libzip/libzip-targets-release.cmake +19 -0
  19. casadi/{lib/cmake/tinyxml2/tinyxml2-shared-targets.cmake → cmake/libzip/libzip-targets.cmake} +11 -7
  20. casadi/cmake/libzip/modules/FindMbedTLS.cmake +141 -0
  21. casadi/cmake/libzip/modules/FindNettle.cmake +141 -0
  22. casadi/cmake/libzip/modules/Findzstd.cmake +186 -0
  23. casadi/daqp.lib +0 -0
  24. casadi/fatrop.lib +0 -0
  25. casadi/highs.exe +0 -0
  26. casadi/highs.lib +0 -0
  27. casadi/hpipm.lib +0 -0
  28. casadi/include/casadi/casadi.i +194 -44
  29. casadi/include/casadi/config.h +11 -11
  30. casadi/include/casadi/core/archiver.hpp +58 -0
  31. casadi/include/casadi/core/blazing_spline.hpp +47 -0
  32. casadi/include/casadi/core/calculus.hpp +57 -2
  33. casadi/include/casadi/core/casadi_common.hpp +37 -0
  34. casadi/include/casadi/core/casadi_meta.hpp +15 -0
  35. casadi/include/casadi/core/casadi_misc.hpp +7 -0
  36. casadi/include/casadi/core/code_generator.hpp +95 -17
  37. casadi/include/casadi/core/core.hpp +5 -0
  38. casadi/include/casadi/core/dae_builder.hpp +283 -141
  39. casadi/include/casadi/core/dm.hpp +3 -0
  40. casadi/include/casadi/core/filesystem.hpp +58 -0
  41. casadi/include/casadi/core/fmu.hpp +51 -16
  42. casadi/include/casadi/core/function.hpp +19 -0
  43. casadi/include/casadi/core/generic_matrix.hpp +214 -7
  44. casadi/include/casadi/core/generic_shared.hpp +318 -0
  45. casadi/include/casadi/core/generic_shared_impl.hpp +214 -0
  46. casadi/include/casadi/core/generic_shared_internal.hpp +215 -0
  47. casadi/include/casadi/core/generic_type.hpp +3 -0
  48. casadi/include/casadi/core/global_options.hpp +10 -0
  49. casadi/include/casadi/core/integrator.hpp +41 -7
  50. casadi/include/casadi/core/matrix_decl.hpp +67 -0
  51. casadi/include/casadi/core/mx.hpp +63 -2
  52. casadi/include/casadi/core/options.hpp +6 -3
  53. casadi/include/casadi/core/optistack.hpp +43 -9
  54. casadi/include/casadi/core/printable.hpp +8 -0
  55. casadi/include/casadi/core/resource.hpp +107 -0
  56. casadi/include/casadi/core/runtime/casadi_blazing_1d_boor_eval.hpp +112 -0
  57. casadi/include/casadi/core/runtime/casadi_blazing_2d_boor_eval.hpp +311 -0
  58. casadi/include/casadi/core/runtime/casadi_blazing_3d_boor_eval.hpp +645 -0
  59. casadi/include/casadi/core/runtime/casadi_blazing_de_boor.hpp +101 -0
  60. casadi/include/casadi/core/runtime/casadi_nlp.hpp +8 -2
  61. casadi/include/casadi/core/runtime/casadi_printme.hpp +25 -0
  62. casadi/include/casadi/core/serializer.hpp +12 -4
  63. casadi/include/casadi/core/serializing_stream.hpp +3 -0
  64. casadi/include/casadi/core/shared_object.hpp +73 -161
  65. casadi/include/casadi/core/sparsity.hpp +13 -1
  66. casadi/include/casadi/core/sparsity_interface.hpp +19 -1
  67. casadi/include/casadi/core/sx.hpp +41 -0
  68. casadi/include/casadi/core/sx_elem.hpp +25 -0
  69. casadi/include/casadi/core/xml_node.hpp +5 -0
  70. casadi/include/casadi/doc.i +9703 -6539
  71. casadi/include/casadi/doc_merged.i +6483 -4447
  72. casadi/include/casadi/valgrind-casadi.supp +138 -0
  73. casadi/include/casadi/valgrind-python.supp +2470 -0
  74. casadi/include/fatrop/blasfeo_wrapper/LinearAlgebraBlasfeo.hpp +4 -1
  75. casadi/include/ghc/filesystem.hpp +6083 -0
  76. casadi/include/ghc/fs_fwd.hpp +38 -0
  77. casadi/include/ghc/fs_impl.hpp +35 -0
  78. casadi/include/ghc/fs_std.hpp +60 -0
  79. casadi/include/ghc/fs_std_fwd.hpp +63 -0
  80. casadi/include/ghc/fs_std_impl.hpp +46 -0
  81. casadi/include/highs/HConfig.h +7 -5
  82. casadi/include/highs/Highs.h +260 -86
  83. casadi/include/highs/filereaderlp/reader.hpp +10 -10
  84. casadi/include/highs/interfaces/highs_c_api.h +195 -22
  85. casadi/include/highs/io/Filereader.h +4 -6
  86. casadi/include/highs/io/FilereaderEms.h +0 -3
  87. casadi/include/highs/io/FilereaderLp.h +0 -3
  88. casadi/include/highs/io/FilereaderMps.h +0 -3
  89. casadi/include/highs/io/HMPSIO.h +1 -4
  90. casadi/include/highs/io/HMpsFF.h +8 -5
  91. casadi/include/highs/io/HighsIO.h +10 -5
  92. casadi/include/highs/io/LoadOptions.h +0 -3
  93. casadi/include/highs/ipm/IpxSolution.h +0 -3
  94. casadi/include/highs/ipm/IpxWrapper.h +4 -7
  95. casadi/include/highs/ipm/ipx/control.h +1 -0
  96. casadi/include/highs/ipm/ipx/ipx_parameters.h +1 -0
  97. casadi/include/highs/ipm/ipx/lp_solver.h +3 -2
  98. casadi/include/highs/ipm/ipx/model.h +7 -3
  99. casadi/include/highs/lp_data/HConst.h +21 -6
  100. casadi/include/highs/lp_data/HStruct.h +40 -4
  101. casadi/include/highs/lp_data/HighsAnalysis.h +0 -3
  102. casadi/include/highs/lp_data/HighsCallback.h +10 -3
  103. casadi/include/highs/lp_data/HighsCallbackStruct.h +3 -3
  104. casadi/include/highs/lp_data/HighsDebug.h +0 -3
  105. casadi/include/highs/lp_data/HighsIis.h +62 -0
  106. casadi/include/highs/lp_data/HighsInfo.h +50 -43
  107. casadi/include/highs/lp_data/HighsInfoDebug.h +0 -3
  108. casadi/include/highs/lp_data/HighsLp.h +2 -3
  109. casadi/include/highs/lp_data/HighsLpSolverObject.h +0 -3
  110. casadi/include/highs/lp_data/HighsLpUtils.h +38 -6
  111. casadi/include/highs/lp_data/HighsModelUtils.h +21 -18
  112. casadi/include/highs/lp_data/HighsOptions.h +134 -22
  113. casadi/include/highs/lp_data/HighsRanging.h +0 -3
  114. casadi/include/highs/lp_data/HighsSolution.h +10 -3
  115. casadi/include/highs/lp_data/HighsSolutionDebug.h +0 -3
  116. casadi/include/highs/lp_data/HighsSolve.h +0 -3
  117. casadi/include/highs/lp_data/HighsStatus.h +0 -3
  118. casadi/include/highs/mip/HighsCliqueTable.h +3 -3
  119. casadi/include/highs/mip/HighsConflictPool.h +0 -3
  120. casadi/include/highs/mip/HighsCutGeneration.h +13 -3
  121. casadi/include/highs/mip/HighsCutPool.h +0 -3
  122. casadi/include/highs/mip/HighsDebugSol.h +0 -3
  123. casadi/include/highs/mip/HighsDomain.h +16 -4
  124. casadi/include/highs/mip/HighsDomainChange.h +0 -3
  125. casadi/include/highs/mip/HighsDynamicRowMatrix.h +0 -3
  126. casadi/include/highs/mip/HighsGFkSolve.h +3 -6
  127. casadi/include/highs/mip/HighsImplications.h +29 -5
  128. casadi/include/highs/mip/HighsLpAggregator.h +0 -3
  129. casadi/include/highs/mip/HighsLpRelaxation.h +0 -3
  130. casadi/include/highs/mip/HighsMipAnalysis.h +52 -0
  131. casadi/include/highs/mip/HighsMipSolver.h +11 -4
  132. casadi/include/highs/mip/HighsMipSolverData.h +67 -6
  133. casadi/include/highs/mip/HighsModkSeparator.h +1 -4
  134. casadi/include/highs/mip/HighsNodeQueue.h +0 -3
  135. casadi/include/highs/mip/HighsObjectiveFunction.h +0 -3
  136. casadi/include/highs/mip/HighsPathSeparator.h +1 -4
  137. casadi/include/highs/mip/HighsPrimalHeuristics.h +7 -5
  138. casadi/include/highs/mip/HighsPseudocost.h +0 -3
  139. casadi/include/highs/mip/HighsRedcostFixing.h +0 -3
  140. casadi/include/highs/mip/HighsSearch.h +0 -3
  141. casadi/include/highs/mip/HighsSeparation.h +0 -3
  142. casadi/include/highs/mip/HighsSeparator.h +1 -5
  143. casadi/include/highs/mip/HighsTableauSeparator.h +1 -4
  144. casadi/include/highs/mip/HighsTransformedLp.h +0 -3
  145. casadi/include/highs/mip/MipTimer.h +471 -0
  146. casadi/include/highs/parallel/HighsBinarySemaphore.h +1 -1
  147. casadi/include/highs/parallel/HighsCacheAlign.h +1 -1
  148. casadi/include/highs/parallel/HighsCombinable.h +1 -1
  149. casadi/include/highs/parallel/HighsMutex.h +1 -1
  150. casadi/include/highs/parallel/HighsRaceTimer.h +1 -1
  151. casadi/include/highs/parallel/HighsSchedulerConstants.h +1 -1
  152. casadi/include/highs/parallel/HighsSplitDeque.h +1 -1
  153. casadi/include/highs/parallel/HighsTaskExecutor.h +68 -55
  154. casadi/include/highs/pdlp/CupdlpWrapper.h +18 -7
  155. casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +2 -3
  156. casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +16 -6
  157. casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +10 -4
  158. casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +3 -3
  159. casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +6 -6
  160. casadi/include/highs/pdlp/cupdlp/cupdlp_scaling.h +26 -0
  161. casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +11 -11
  162. casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +8 -4
  163. casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +253 -172
  164. casadi/include/highs/presolve/HPresolve.h +50 -10
  165. casadi/include/highs/presolve/HPresolveAnalysis.h +0 -3
  166. casadi/include/highs/presolve/HighsPostsolveStack.h +39 -6
  167. casadi/include/highs/presolve/HighsSymmetry.h +0 -3
  168. casadi/include/highs/presolve/ICrash.h +0 -3
  169. casadi/include/highs/presolve/ICrashUtil.h +1 -4
  170. casadi/include/highs/presolve/ICrashX.h +0 -3
  171. casadi/include/highs/presolve/PresolveComponent.h +0 -3
  172. casadi/include/highs/qpsolver/a_asm.hpp +20 -17
  173. casadi/include/highs/qpsolver/a_quass.hpp +5 -9
  174. casadi/include/highs/qpsolver/basis.hpp +12 -10
  175. casadi/include/highs/qpsolver/crashsolution.hpp +4 -3
  176. casadi/include/highs/qpsolver/dantzigpricing.hpp +3 -2
  177. casadi/include/highs/qpsolver/devexpricing.hpp +3 -1
  178. casadi/include/highs/qpsolver/factor.hpp +6 -5
  179. casadi/include/highs/qpsolver/feasibility_bounded.hpp +31 -29
  180. casadi/include/highs/qpsolver/feasibility_highs.hpp +94 -70
  181. casadi/include/highs/qpsolver/gradient.hpp +1 -1
  182. casadi/include/highs/qpsolver/instance.hpp +1 -1
  183. casadi/include/highs/qpsolver/pricing.hpp +2 -2
  184. casadi/include/highs/qpsolver/qpconst.hpp +2 -2
  185. casadi/include/highs/qpsolver/quass.hpp +2 -2
  186. casadi/include/highs/qpsolver/runtime.hpp +2 -2
  187. casadi/include/highs/qpsolver/settings.hpp +20 -8
  188. casadi/include/highs/qpsolver/steepestedgepricing.hpp +38 -39
  189. casadi/include/highs/simplex/HApp.h +88 -34
  190. casadi/include/highs/simplex/HEkk.h +24 -11
  191. casadi/include/highs/simplex/HEkkDual.h +2 -4
  192. casadi/include/highs/simplex/HEkkDualRHS.h +0 -3
  193. casadi/include/highs/simplex/HEkkDualRow.h +0 -3
  194. casadi/include/highs/simplex/HEkkPrimal.h +1 -5
  195. casadi/include/highs/simplex/HSimplex.h +0 -3
  196. casadi/include/highs/simplex/HSimplexDebug.h +0 -3
  197. casadi/include/highs/simplex/HSimplexNla.h +0 -26
  198. casadi/include/highs/simplex/HSimplexReport.h +0 -3
  199. casadi/include/highs/simplex/HighsSimplexAnalysis.h +5 -8
  200. casadi/include/highs/simplex/SimplexConst.h +10 -11
  201. casadi/include/highs/simplex/SimplexStruct.h +9 -12
  202. casadi/include/highs/simplex/SimplexTimer.h +83 -101
  203. casadi/include/highs/test/DevKkt.h +0 -3
  204. casadi/include/highs/test/KktCh2.h +0 -3
  205. casadi/include/highs/util/FactorTimer.h +39 -64
  206. casadi/include/highs/util/HFactor.h +4 -4
  207. casadi/include/highs/util/HFactorConst.h +0 -3
  208. casadi/include/highs/util/HFactorDebug.h +0 -3
  209. casadi/include/highs/util/HSet.h +0 -3
  210. casadi/include/highs/util/HVector.h +0 -3
  211. casadi/include/highs/util/HVectorBase.h +1 -4
  212. casadi/include/highs/util/HighsCDouble.h +12 -3
  213. casadi/include/highs/util/HighsComponent.h +0 -3
  214. casadi/include/highs/util/HighsDataStack.h +0 -3
  215. casadi/include/highs/util/HighsDisjointSets.h +0 -3
  216. casadi/include/highs/util/HighsHash.h +9 -12
  217. casadi/include/highs/util/HighsHashTree.h +15 -11
  218. casadi/include/highs/util/HighsInt.h +0 -3
  219. casadi/include/highs/util/HighsIntegers.h +0 -3
  220. casadi/include/highs/util/HighsLinearSumBounds.h +0 -3
  221. casadi/include/highs/util/HighsMatrixPic.h +0 -3
  222. casadi/include/highs/util/HighsMatrixSlice.h +3 -6
  223. casadi/include/highs/util/HighsMatrixUtils.h +0 -3
  224. casadi/include/highs/util/HighsMemoryAllocation.h +11 -3
  225. casadi/include/highs/util/HighsRandom.h +3 -6
  226. casadi/include/highs/util/HighsRbTree.h +0 -3
  227. casadi/include/highs/util/HighsSort.h +0 -3
  228. casadi/include/highs/util/HighsSparseMatrix.h +6 -3
  229. casadi/include/highs/util/HighsSparseVectorSum.h +0 -3
  230. casadi/include/highs/util/HighsSplay.h +0 -3
  231. casadi/include/highs/util/HighsTimer.h +94 -56
  232. casadi/include/highs/util/HighsUtils.h +10 -3
  233. casadi/include/highs/util/stringutil.h +14 -12
  234. casadi/include/licenses/ghc-external/LICENSE +19 -0
  235. casadi/include/licenses/libz-external/LICENSE +22 -0
  236. casadi/include/licenses/libz-external/contrib/dotzlib/LICENSE_1_0.txt +23 -0
  237. casadi/include/licenses/libzip-external/LICENSE +31 -0
  238. casadi/include/zconf.h +545 -0
  239. casadi/include/zip.h +528 -0
  240. casadi/include/zipconf.h +48 -0
  241. casadi/include/zlib.h +1938 -0
  242. casadi/ipopt.lib +0 -0
  243. casadi/lapack.lib +0 -0
  244. casadi/libCbc-3.dll +0 -0
  245. casadi/libCbc.dll.a +0 -0
  246. casadi/libCbcSolver-3.dll +0 -0
  247. casadi/libCbcSolver.dll.a +0 -0
  248. casadi/libCgl-1.dll +0 -0
  249. casadi/libCgl.dll.a +0 -0
  250. casadi/libClp-1.dll +0 -0
  251. casadi/libClp.dll.a +0 -0
  252. casadi/libClpSolver-1.dll +0 -0
  253. casadi/libClpSolver.dll.a +0 -0
  254. casadi/libCoinUtils-3.dll +0 -0
  255. casadi/libCoinUtils.dll.a +0 -0
  256. casadi/libOsi-1.dll +0 -0
  257. casadi/libOsi.dll.a +0 -0
  258. casadi/libOsiCbc-3.dll +0 -0
  259. casadi/libOsiCbc.dll.a +0 -0
  260. casadi/libOsiClp-1.dll +0 -0
  261. casadi/libOsiClp.dll.a +0 -0
  262. casadi/libOsiCommonTests-1.dll +0 -0
  263. casadi/libOsiCommonTests.dll.a +0 -0
  264. casadi/libalpaqa.dll +0 -0
  265. casadi/libalpaqa.dll.a +0 -0
  266. casadi/libblasfeo.dll +0 -0
  267. casadi/libblasfeo.dll.a +0 -0
  268. casadi/libbonmin-4.dll +0 -0
  269. casadi/libbonmin.dll.a +0 -0
  270. casadi/libcasadi-tp-openblas.dll +0 -0
  271. casadi/libcasadi-tp-openblas.dll.a +0 -0
  272. casadi/libcasadi.dll +0 -0
  273. casadi/libcasadi.dll.a +0 -0
  274. casadi/libcasadi.lib +0 -0
  275. casadi/libcasadi_archiver_libzip.dll +0 -0
  276. casadi/libcasadi_archiver_libzip.dll.a +0 -0
  277. casadi/libcasadi_conic_cbc.dll +0 -0
  278. casadi/libcasadi_conic_cbc.dll.a +0 -0
  279. casadi/libcasadi_conic_clp.dll +0 -0
  280. casadi/libcasadi_conic_clp.dll.a +0 -0
  281. casadi/libcasadi_conic_cplex.dll +0 -0
  282. casadi/libcasadi_conic_cplex.dll.a +0 -0
  283. casadi/libcasadi_conic_daqp.dll +0 -0
  284. casadi/libcasadi_conic_daqp.dll.a +0 -0
  285. casadi/libcasadi_conic_fatrop.dll +0 -0
  286. casadi/libcasadi_conic_fatrop.dll.a +0 -0
  287. casadi/libcasadi_conic_gurobi.dll +0 -0
  288. casadi/libcasadi_conic_gurobi.dll.a +0 -0
  289. casadi/libcasadi_conic_highs.dll +0 -0
  290. casadi/libcasadi_conic_highs.dll.a +0 -0
  291. casadi/libcasadi_conic_hpipm.dll +0 -0
  292. casadi/libcasadi_conic_hpipm.dll.a +0 -0
  293. casadi/libcasadi_conic_ipqp.dll +0 -0
  294. casadi/libcasadi_conic_ipqp.dll.a +0 -0
  295. casadi/libcasadi_conic_nlpsol.dll +0 -0
  296. casadi/libcasadi_conic_nlpsol.dll.a +0 -0
  297. casadi/libcasadi_conic_osqp.dll +0 -0
  298. casadi/libcasadi_conic_osqp.dll.a +0 -0
  299. casadi/libcasadi_conic_proxqp.dll +0 -0
  300. casadi/libcasadi_conic_proxqp.dll.a +0 -0
  301. casadi/libcasadi_conic_qpoases.dll +0 -0
  302. casadi/libcasadi_conic_qpoases.dll.a +0 -0
  303. casadi/libcasadi_conic_qrqp.dll +0 -0
  304. casadi/libcasadi_conic_qrqp.dll.a +0 -0
  305. casadi/libcasadi_conic_superscs.dll +0 -0
  306. casadi/libcasadi_conic_superscs.dll.a +0 -0
  307. casadi/libcasadi_filesystem_ghc.dll +0 -0
  308. casadi/libcasadi_filesystem_ghc.dll.a +0 -0
  309. casadi/libcasadi_importer_shell.dll +0 -0
  310. casadi/libcasadi_importer_shell.dll.a +0 -0
  311. casadi/libcasadi_integrator_collocation.dll +0 -0
  312. casadi/libcasadi_integrator_collocation.dll.a +0 -0
  313. casadi/libcasadi_integrator_cvodes.dll +0 -0
  314. casadi/libcasadi_integrator_cvodes.dll.a +0 -0
  315. casadi/libcasadi_integrator_idas.dll +0 -0
  316. casadi/libcasadi_integrator_idas.dll.a +0 -0
  317. casadi/libcasadi_integrator_rk.dll +0 -0
  318. casadi/libcasadi_integrator_rk.dll.a +0 -0
  319. casadi/libcasadi_interpolant_bspline.dll +0 -0
  320. casadi/libcasadi_interpolant_bspline.dll.a +0 -0
  321. casadi/libcasadi_interpolant_linear.dll +0 -0
  322. casadi/libcasadi_interpolant_linear.dll.a +0 -0
  323. casadi/libcasadi_linsol_csparse.dll +0 -0
  324. casadi/libcasadi_linsol_csparse.dll.a +0 -0
  325. casadi/libcasadi_linsol_csparsecholesky.dll +0 -0
  326. casadi/libcasadi_linsol_csparsecholesky.dll.a +0 -0
  327. casadi/libcasadi_linsol_lapacklu.dll +0 -0
  328. casadi/libcasadi_linsol_lapacklu.dll.a +0 -0
  329. casadi/libcasadi_linsol_lapackqr.dll +0 -0
  330. casadi/libcasadi_linsol_lapackqr.dll.a +0 -0
  331. casadi/libcasadi_linsol_ldl.dll +0 -0
  332. casadi/libcasadi_linsol_ldl.dll.a +0 -0
  333. casadi/libcasadi_linsol_lsqr.dll +0 -0
  334. casadi/libcasadi_linsol_lsqr.dll.a +0 -0
  335. casadi/libcasadi_linsol_ma27.dll +0 -0
  336. casadi/libcasadi_linsol_ma27.dll.a +0 -0
  337. casadi/libcasadi_linsol_mumps.dll +0 -0
  338. casadi/libcasadi_linsol_mumps.dll.a +0 -0
  339. casadi/libcasadi_linsol_qr.dll +0 -0
  340. casadi/libcasadi_linsol_qr.dll.a +0 -0
  341. casadi/libcasadi_linsol_symbolicqr.dll +0 -0
  342. casadi/libcasadi_linsol_symbolicqr.dll.a +0 -0
  343. casadi/libcasadi_linsol_tridiag.dll +0 -0
  344. casadi/libcasadi_linsol_tridiag.dll.a +0 -0
  345. casadi/libcasadi_nlpsol_alpaqa.dll +0 -0
  346. casadi/libcasadi_nlpsol_alpaqa.dll.a +0 -0
  347. casadi/libcasadi_nlpsol_ampl.dll +0 -0
  348. casadi/libcasadi_nlpsol_ampl.dll.a +0 -0
  349. casadi/libcasadi_nlpsol_blocksqp.dll +0 -0
  350. casadi/libcasadi_nlpsol_blocksqp.dll.a +0 -0
  351. casadi/libcasadi_nlpsol_bonmin.dll +0 -0
  352. casadi/libcasadi_nlpsol_bonmin.dll.a +0 -0
  353. casadi/libcasadi_nlpsol_fatrop.dll +0 -0
  354. casadi/libcasadi_nlpsol_fatrop.dll.a +0 -0
  355. casadi/libcasadi_nlpsol_feasiblesqpmethod.dll +0 -0
  356. casadi/libcasadi_nlpsol_feasiblesqpmethod.dll.a +0 -0
  357. casadi/libcasadi_nlpsol_ipopt.dll +0 -0
  358. casadi/libcasadi_nlpsol_ipopt.dll.a +0 -0
  359. casadi/libcasadi_nlpsol_knitro.dll +0 -0
  360. casadi/libcasadi_nlpsol_knitro.dll.a +0 -0
  361. casadi/libcasadi_nlpsol_madnlp.dll +0 -0
  362. casadi/libcasadi_nlpsol_madnlp.dll.a +0 -0
  363. casadi/libcasadi_nlpsol_qrsqp.dll +0 -0
  364. casadi/libcasadi_nlpsol_qrsqp.dll.a +0 -0
  365. casadi/libcasadi_nlpsol_scpgen.dll +0 -0
  366. casadi/libcasadi_nlpsol_scpgen.dll.a +0 -0
  367. casadi/libcasadi_nlpsol_sleqp.dll +0 -0
  368. casadi/libcasadi_nlpsol_sleqp.dll.a +0 -0
  369. casadi/libcasadi_nlpsol_snopt.dll +0 -0
  370. casadi/libcasadi_nlpsol_snopt.dll.a +0 -0
  371. casadi/libcasadi_nlpsol_sqpmethod.dll +0 -0
  372. casadi/libcasadi_nlpsol_sqpmethod.dll.a +0 -0
  373. casadi/libcasadi_nlpsol_worhp.dll +0 -0
  374. casadi/libcasadi_nlpsol_worhp.dll.a +0 -0
  375. casadi/libcasadi_rootfinder_fast_newton.dll +0 -0
  376. casadi/libcasadi_rootfinder_fast_newton.dll.a +0 -0
  377. casadi/libcasadi_rootfinder_kinsol.dll +0 -0
  378. casadi/libcasadi_rootfinder_kinsol.dll.a +0 -0
  379. casadi/libcasadi_rootfinder_newton.dll +0 -0
  380. casadi/libcasadi_rootfinder_newton.dll.a +0 -0
  381. casadi/libcasadi_rootfinder_nlpsol.dll +0 -0
  382. casadi/libcasadi_rootfinder_nlpsol.dll.a +0 -0
  383. casadi/libcasadi_sundials_common.dll +0 -0
  384. casadi/libcasadi_sundials_common.dll.a +0 -0
  385. casadi/libcasadi_xmlfile_tinyxml.dll +0 -0
  386. casadi/libcasadi_xmlfile_tinyxml.dll.a +0 -0
  387. casadi/libcoinmetis-2.dll +0 -0
  388. casadi/libcoinmetis.dll.a +0 -0
  389. casadi/libcoinmumps-3.dll +0 -0
  390. casadi/libcoinmumps.dll.a +0 -0
  391. casadi/libcplex_adaptor.dll +0 -0
  392. casadi/libdaqp.dll +0 -0
  393. casadi/libdaqp.dll.a +0 -0
  394. casadi/libdl.dll +0 -0
  395. casadi/libdl.dll.a +0 -0
  396. casadi/libfatrop.dll +0 -0
  397. casadi/libfatrop.dll.a +0 -0
  398. casadi/libgurobi_adaptor.dll +0 -0
  399. casadi/libhighs.dll +0 -0
  400. casadi/libhighs.dll.a +0 -0
  401. casadi/libhpipm.dll +0 -0
  402. casadi/libhpipm.dll.a +0 -0
  403. casadi/libipopt-3.dll +0 -0
  404. casadi/libipopt.dll.a +0 -0
  405. casadi/libmatlab_ipc.dll +0 -0
  406. casadi/libmatlab_ipc.dll.a +0 -0
  407. casadi/libosqp.dll +0 -0
  408. casadi/libosqp.dll.a +0 -0
  409. casadi/libqdldl.dll +0 -0
  410. casadi/libqdldl.dll.a +0 -0
  411. casadi/libsipopt-3.dll +0 -0
  412. casadi/libsipopt.dll.a +0 -0
  413. casadi/libsleqp.dll +0 -0
  414. casadi/libsleqp.dll.a +0 -0
  415. casadi/libtrlib.dll +0 -0
  416. casadi/libtrlib.dll.a +0 -0
  417. casadi/libzip.a +0 -0
  418. casadi/libzlib.dll +0 -0
  419. casadi/libzlib.dll.a +0 -0
  420. casadi/libzlibstatic.a +0 -0
  421. casadi/matlab_ipc.lib +0 -0
  422. casadi/osqp.lib +0 -0
  423. casadi/pkgconfig/casadi.pc +1 -1
  424. casadi/pkgconfig/highs.pc +1 -1
  425. casadi/pkgconfig/libzip.pc +14 -0
  426. casadi/sleqp.lib +0 -0
  427. casadi/spral_ssids.exe +0 -0
  428. casadi/std-e414687e404555e5.dll +0 -0
  429. casadi/tools/__init__.py +3 -1
  430. casadi/tools/graph/graph.py +1 -1
  431. casadi/tools/structure3.py +2 -2
  432. {casadi-3.6.7.dist-info → casadi-3.7.0.dist-info}/METADATA +1 -1
  433. {casadi-3.6.7.dist-info → casadi-3.7.0.dist-info}/RECORD +434 -393
  434. casadi/bin/libtinyxml2.dll +0 -0
  435. casadi/include/tinyxml2.h +0 -2380
  436. casadi/lib/cmake/tinyxml2/tinyxml2-config.cmake +0 -57
  437. casadi/lib/cmake/tinyxml2/tinyxml2-shared-targets-release.cmake +0 -19
  438. casadi/lib/libtinyxml2.dll.a +0 -0
  439. casadi/lib/pkgconfig/tinyxml2.pc +0 -10
  440. casadi/libtinyxml2.dll +0 -0
  441. casadi/tools/structure.py +0 -1446
  442. {casadi-3.6.7.dist-info → casadi-3.7.0.dist-info}/WHEEL +0 -0
@@ -2,9 +2,6 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
- /* Leona Gottwald and Michael Feldmeier */
7
- /* */
8
5
  /* Available as open-source under the MIT License */
9
6
  /* */
10
7
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -70,6 +67,10 @@ inline HighsStatus returnFromSolveLpSimplex(HighsLpSolverObject& solver_object,
70
67
  "Error in basis matrix inverse after solving the LP\n");
71
68
  return_status = HighsStatus::kError;
72
69
  }
70
+ if (solver_object.model_status_ == HighsModelStatus::kOptimal) {
71
+ solver_object.highs_info_.max_complementarity_violation = 0;
72
+ solver_object.highs_info_.sum_complementarity_violations = 0;
73
+ }
73
74
  return return_status;
74
75
  }
75
76
 
@@ -108,6 +109,9 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
108
109
  // return
109
110
  resetModelStatusAndHighsInfo(solver_object);
110
111
 
112
+ // Initialise the simplex stats
113
+ ekk_instance.initialiseSimplexStats();
114
+
111
115
  // Assumes that the LP has a positive number of rows, since
112
116
  // unconstrained LPs should be solved in solveLp
113
117
  bool positive_num_row = solver_object.lp_.num_row_ > 0;
@@ -128,10 +132,23 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
128
132
  // Consider scaling the LP - either with any existing scaling, or by
129
133
  // considering computing scaling factors if there are none - and
130
134
  // then move to EKK
131
- const bool new_scaling = considerScaling(options, incumbent_lp);
132
- // If new scaling is performed, the hot start information is
133
- // no longer valid
134
- if (new_scaling) ekk_instance.clearHotStart();
135
+ considerScaling(options, incumbent_lp);
136
+ //
137
+ if (!status.has_basis && !basis.valid && basis.useful) {
138
+ // There is no simplex basis, but there is a useful HiGHS basis
139
+ // that is not validated
140
+ assert(basis.col_status.size() ==
141
+ static_cast<size_t>(incumbent_lp.num_col_));
142
+ assert(basis.row_status.size() ==
143
+ static_cast<size_t>(incumbent_lp.num_row_));
144
+ HighsStatus return_status = formSimplexLpBasisAndFactor(solver_object);
145
+ if (return_status != HighsStatus::kOk)
146
+ return returnFromSolveLpSimplex(solver_object, HighsStatus::kError);
147
+ // formSimplexLpBasisAndFactor may introduce variables with
148
+ // HighsBasisStatus::kNonbasic, so refine it
149
+ refineBasis(incumbent_lp, solution, basis);
150
+ basis.valid = true;
151
+ }
135
152
  // Move the LP to EKK, updating other EKK pointers and any simplex
136
153
  // NLA pointers, since they may have moved if the LP has been
137
154
  // modified
@@ -250,12 +267,27 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
250
267
  scaled_model_status == HighsModelStatus::kOptimal &&
251
268
  (num_unscaled_primal_infeasibilities ||
252
269
  num_unscaled_dual_infeasibilities);
253
- if (scaled_optimality_but_unscaled_infeasibilities)
270
+ // Determine whether the unscaled solution has primal
271
+ // infeasibilities after the scaled LP has been solved to the
272
+ // objective target
273
+ const bool scaled_objective_target_but_unscaled_primal_infeasibilities =
274
+ scaled_model_status == HighsModelStatus::kObjectiveTarget &&
275
+ highs_info.num_primal_infeasibilities > 0;
276
+ // Determine whether the unscaled solution has dual
277
+ // infeasibilities after the scaled LP has been solved to the
278
+ // objective bound
279
+ const bool scaled_objective_bound_but_unscaled_dual_infeasibilities =
280
+ scaled_model_status == HighsModelStatus::kObjectiveBound &&
281
+ highs_info.num_dual_infeasibilities > 0;
282
+ if (scaled_optimality_but_unscaled_infeasibilities ||
283
+ scaled_objective_target_but_unscaled_primal_infeasibilities ||
284
+ scaled_objective_bound_but_unscaled_dual_infeasibilities)
254
285
  highsLogDev(options.log_options, HighsLogType::kInfo,
255
- "Have num/max/sum primal (%" HIGHSINT_FORMAT
256
- "/%g/%g) and dual (%" HIGHSINT_FORMAT
286
+ "After unscaling with status %s, have num/max/sum primal "
287
+ "(%" HIGHSINT_FORMAT "/%g/%g) and dual (%" HIGHSINT_FORMAT
257
288
  "/%g/%g) "
258
289
  "unscaled infeasibilities\n",
290
+ utilModelStatusToString(scaled_model_status).c_str(),
259
291
  highs_info.num_primal_infeasibilities,
260
292
  highs_info.max_primal_infeasibility,
261
293
  highs_info.sum_primal_infeasibilities,
@@ -270,8 +302,8 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
270
302
  scaled_model_status == HighsModelStatus::kInfeasible ||
271
303
  scaled_model_status == HighsModelStatus::kUnboundedOrInfeasible ||
272
304
  scaled_model_status == HighsModelStatus::kUnbounded ||
273
- scaled_model_status == HighsModelStatus::kObjectiveBound ||
274
- scaled_model_status == HighsModelStatus::kObjectiveTarget ||
305
+ scaled_objective_bound_but_unscaled_dual_infeasibilities ||
306
+ scaled_objective_target_but_unscaled_primal_infeasibilities ||
275
307
  scaled_model_status == HighsModelStatus::kUnknown);
276
308
  // Handle the case when refinement will not take place
277
309
  if (!refine_solution) {
@@ -303,11 +335,14 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
303
335
  // LP, see whether the proof still holds for the unscaled LP. If
304
336
  // it does, then there's no need to solve the unscaled LP
305
337
  solve_unscaled_lp = true;
306
- // ToDo: ekk_instance.status_.has_dual_ray should now be true if
307
- // scaled_model_status == HighsModelStatus::kInfeasible since this
308
- // model status depends on the infeasibility proof being true
338
+ // ToDo: ekk_instance.dual_ray_record_.index != kNoRayIndex should
339
+ // now be true if scaled_model_status ==
340
+ // HighsModelStatus::kInfeasible since this model status depends
341
+ // on the infeasibility proof being true
342
+ if (scaled_model_status == HighsModelStatus::kInfeasible)
343
+ assert(ekk_instance.dual_ray_record_.index != kNoRayIndex);
309
344
  if (scaled_model_status == HighsModelStatus::kInfeasible &&
310
- ekk_instance.status_.has_dual_ray) {
345
+ ekk_instance.dual_ray_record_.index != kNoRayIndex) {
311
346
  ekk_instance.setNlaPointersForLpAndScale(ekk_lp);
312
347
  if (ekk_instance.proofOfPrimalInfeasibility()) solve_unscaled_lp = false;
313
348
  }
@@ -318,21 +353,31 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
318
353
  options.dual_simplex_cost_perturbation_multiplier;
319
354
  HighsInt simplex_dual_edge_weight_strategy =
320
355
  ekk_info.dual_edge_weight_strategy;
356
+ // #1865 exposed that this should not be
357
+ // HighsModelStatus::kObjectiveBound, but
358
+ // HighsModelStatus::kObjectiveTarget, since if the latter is
359
+ // the model status for the scaled LP, any primal
360
+ // infeasibilities should be small, but must be cleaned up
361
+ // before (hopefully) a few phase 2 primal simplex iterations
362
+ // are required to attain the target for the unscaled LP
363
+ //
364
+ // In #1865, phase 2 primal simplex was forced with large primal
365
+ // infeasibilities
321
366
  if (num_unscaled_primal_infeasibilities == 0 ||
322
- scaled_model_status == HighsModelStatus::kObjectiveBound) {
323
- // Only dual infeasibilities, or primal infeasibilities do not
324
- // matter due to solution status, so use primal simplex phase
325
- // 2
367
+ scaled_model_status == HighsModelStatus::kObjectiveTarget) {
368
+ // Only dual infeasibilities, or objective target reached (in
369
+ // primal phase 2) - so primal infeasibilities should be small
370
+ // - so use primal simplex phase 2
326
371
  options.simplex_strategy = kSimplexStrategyPrimal;
327
- if (scaled_model_status == HighsModelStatus::kObjectiveBound) {
328
- highsLogDev(
329
- options.log_options, HighsLogType::kInfo,
330
- "solveLpSimplex: Calling primal simplex after "
331
- "scaled_model_status == HighsModelStatus::kObjectiveBound: solve "
332
- "= %d; tick = %d; iter = %d\n",
333
- (int)ekk_instance.debug_solve_call_num_,
334
- (int)ekk_instance.debug_initial_build_synthetic_tick_,
335
- (int)ekk_instance.iteration_count_);
372
+ if (scaled_model_status == HighsModelStatus::kObjectiveTarget) {
373
+ highsLogDev(options.log_options, HighsLogType::kInfo,
374
+ "solveLpSimplex: Calling primal simplex after "
375
+ "scaled_model_status == "
376
+ "HighsModelStatus::kObjectiveTarget: solve "
377
+ "= %d; tick = %d; iter = %d\n",
378
+ (int)ekk_instance.debug_solve_call_num_,
379
+ (int)ekk_instance.debug_initial_build_synthetic_tick_,
380
+ (int)ekk_instance.iteration_count_);
336
381
  }
337
382
  } else {
338
383
  // Using dual simplex, so force Devex if starting from an advanced
@@ -345,11 +390,21 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
345
390
  //
346
391
  // Solve the unscaled LP with scaled NLA
347
392
  //
348
- // Force the simplex solver to start in phase 2 unless solving
349
- // the LP directly as unscaled
393
+ // Force the simplex solver to start in phase 1 if solving the
394
+ // LP directly as unscaled, or using primal simplex to clean up
395
+ // small dual infeasibilities after the scaled LP yielded model
396
+ // status HighsModelStatus::kObjectiveTarget. Otherwise force
397
+ // the simplex solver to start in phase 2
350
398
  //
351
- const bool force_phase2 = options.simplex_unscaled_solution_strategy !=
352
- kSimplexUnscaledSolutionStrategyDirect;
399
+ const bool force_phase1 =
400
+ (options.simplex_unscaled_solution_strategy ==
401
+ kSimplexUnscaledSolutionStrategyDirect) ||
402
+ (scaled_model_status == HighsModelStatus::kObjectiveTarget);
403
+ const bool force_phase2 =
404
+ (options.simplex_unscaled_solution_strategy !=
405
+ kSimplexUnscaledSolutionStrategyDirect) &&
406
+ (scaled_model_status != HighsModelStatus::kObjectiveTarget);
407
+ assert(force_phase2 == !force_phase1);
353
408
  return_status = ekk_instance.solve(force_phase2);
354
409
  solved_unscaled_lp = true;
355
410
  if (scaled_model_status != HighsModelStatus::kObjectiveBound &&
@@ -358,7 +413,6 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
358
413
  // for the first time in which case we again call solve with primal
359
414
  // simplex if not dual feasible
360
415
  const bool objective_bound_refinement =
361
- ekk_instance.model_status_ == HighsModelStatus::kObjectiveBound &&
362
416
  ekk_info.num_dual_infeasibilities > 0;
363
417
  if (objective_bound_refinement) {
364
418
  options.simplex_strategy = kSimplexStrategyPrimal;
@@ -2,9 +2,6 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
- /* Leona Gottwald and Michael Feldmeier */
7
- /* */
8
5
  /* Available as open-source under the MIT License */
9
6
  /* */
10
7
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -76,6 +73,7 @@ class HEkk {
76
73
  void clearEkkDataStatus();
77
74
  void clearNlaStatus();
78
75
  void clearNlaInvertStatus();
76
+ void clearRayRecords();
79
77
 
80
78
  void invalidate();
81
79
  void invalidateBasisMatrix();
@@ -86,7 +84,6 @@ class HEkk {
86
84
  void setNlaPointersForLpAndScale(const HighsLp& lp);
87
85
  void setNlaPointersForTrans(const HighsLp& lp);
88
86
  void setNlaRefactorInfo();
89
- void clearHotStart();
90
87
  void btran(HVector& rhs, const double expected_density);
91
88
  void ftran(HVector& rhs, const double expected_density);
92
89
 
@@ -105,10 +102,6 @@ class HEkk {
105
102
  HighsStatus setBasis();
106
103
  HighsStatus setBasis(const HighsBasis& highs_basis);
107
104
 
108
- void freezeBasis(HighsInt& frozen_basis_id);
109
- HighsStatus unfreezeBasis(const HighsInt frozen_basis_id);
110
- HighsStatus frozenBasisAllDataClear();
111
-
112
105
  void putIterate();
113
106
  HighsStatus getIterate();
114
107
 
@@ -134,13 +127,18 @@ class HEkk {
134
127
  HighsBasis getHighsBasis(HighsLp& use_lp) const;
135
128
 
136
129
  const SimplexBasis& getSimplexBasis() { return basis_; }
130
+ double computeBasisCondition(const HighsLp& lp, const bool exact = false,
131
+ const bool report = false) const;
132
+ double computeBasisCondition() const {
133
+ return computeBasisCondition(this->lp_, false, false);
134
+ }
137
135
 
138
136
  HighsStatus initialiseSimplexLpBasisAndFactor(
139
137
  const bool only_from_known_basis = false);
140
138
  void handleRankDeficiency();
141
139
  void initialisePartitionedRowwiseMatrix();
142
- bool lpFactorRowCompatible();
143
- bool lpFactorRowCompatible(HighsInt expectedNumRow);
140
+ bool lpFactorRowCompatible() const;
141
+ bool lpFactorRowCompatible(const HighsInt expectedNumRow) const;
144
142
 
145
143
  // Interface methods
146
144
  void appendColsToVectors(const HighsInt num_new_col,
@@ -151,6 +149,12 @@ class HEkk {
151
149
  const vector<double>& rowLower,
152
150
  const vector<double>& rowUpper);
153
151
 
152
+ const HighsSimplexStats& getSimplexStats() const { return simplex_stats_; }
153
+ void initialiseSimplexStats() { simplex_stats_.initialise(iteration_count_); }
154
+ void reportSimplexStats(FILE* file, const std::string message = "") const {
155
+ simplex_stats_.report(file, message);
156
+ }
157
+
154
158
  // Make this private later
155
159
  void chooseSimplexStrategyThreads(const HighsOptions& options,
156
160
  HighsSimplexInfo& info);
@@ -187,6 +191,9 @@ class HEkk {
187
191
  HighsSparseMatrix ar_matrix_;
188
192
  HighsSparseMatrix scaled_a_matrix_;
189
193
  HSimplexNla simplex_nla_;
194
+
195
+ // Unused, but retained since there is a const reference to this in
196
+ // a deprecated method
190
197
  HotStart hot_start_;
191
198
 
192
199
  double cost_scale_;
@@ -208,6 +215,10 @@ class HEkk {
208
215
  vector<HighsInt> proof_index_;
209
216
  vector<double> proof_value_;
210
217
 
218
+ // Data to be retained after computing primal or dual ray
219
+ HighsRayRecord dual_ray_record_;
220
+ HighsRayRecord primal_ray_record_;
221
+
211
222
  // Data to be retained when dualizing
212
223
  HighsInt original_num_col_;
213
224
  HighsInt original_num_row_;
@@ -244,6 +255,9 @@ class HEkk {
244
255
  double debug_max_relative_dual_steepest_edge_weight_error;
245
256
 
246
257
  std::vector<HighsSimplexBadBasisChangeRecord> bad_basis_change_;
258
+ std::vector<double> primal_phase1_dual_;
259
+
260
+ HighsSimplexStats simplex_stats_;
247
261
 
248
262
  private:
249
263
  bool isUnconstrainedLp();
@@ -332,7 +346,6 @@ class HEkk {
332
346
  HighsStatus returnFromEkkSolve(const HighsStatus return_status);
333
347
  HighsStatus returnFromSolve(const HighsStatus return_status);
334
348
 
335
- double computeBasisCondition();
336
349
  void initialiseAnalysis();
337
350
  std::string rebuildReason(const HighsInt rebuild_reason);
338
351
 
@@ -2,9 +2,6 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
- /* Leona Gottwald and Michael Feldmeier */
7
- /* */
8
5
  /* Available as open-source under the MIT License */
9
6
  /* */
10
7
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -388,6 +385,7 @@ class HEkkDual {
388
385
  HighsInt solver_num_row;
389
386
  HighsInt solver_num_col;
390
387
  HighsInt solver_num_tot;
388
+ double inv_solver_num_row; // 1.0 / solver_num_row
391
389
 
392
390
  const HighsSparseMatrix* a_matrix;
393
391
  const HSimplexNla* simplex_nla;
@@ -485,7 +483,7 @@ class HEkkDual {
485
483
  * @brief Multiple minor iteration data
486
484
  */
487
485
  struct MFinish {
488
- HighsInt move_in;
486
+ int8_t move_in;
489
487
  double shiftOut;
490
488
  std::vector<HighsInt> flipList;
491
489
 
@@ -2,9 +2,6 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
- /* Leona Gottwald and Michael Feldmeier */
7
- /* */
8
5
  /* Available as open-source under the MIT License */
9
6
  /* */
10
7
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -2,9 +2,6 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
- /* Leona Gottwald and Michael Feldmeier */
7
- /* */
8
5
  /* Available as open-source under the MIT License */
9
6
  /* */
10
7
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -2,9 +2,6 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
- /* Leona Gottwald and Michael Feldmeier */
7
- /* */
8
5
  /* Available as open-source under the MIT License */
9
6
  /* */
10
7
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -104,8 +101,7 @@ class HEkkPrimal {
104
101
  void getBasicPrimalInfeasibility();
105
102
  bool correctPrimal(const bool initialise = false);
106
103
  void shiftBound(const bool lower, const HighsInt iVar, const double value,
107
- const double random_value, double& bound, double& shift,
108
- const bool report = false);
104
+ const double random_value, double& bound, double& shift);
109
105
  void savePrimalRay();
110
106
  HighsDebugStatus debugPrimalSimplex(const std::string message,
111
107
  const bool initialise = false);
@@ -2,9 +2,6 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
- /* Leona Gottwald and Michael Feldmeier */
7
- /* */
8
5
  /* Available as open-source under the MIT License */
9
6
  /* */
10
7
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -2,9 +2,6 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
- /* Leona Gottwald and Michael Feldmeier */
7
- /* */
8
5
  /* Available as open-source under the MIT License */
9
6
  /* */
10
7
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -2,9 +2,6 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
- /* Leona Gottwald and Michael Feldmeier */
7
- /* */
8
5
  /* Available as open-source under the MIT License */
9
6
  /* */
10
7
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -40,16 +37,6 @@ struct ProductFormUpdate {
40
37
  void ftran(HVector& rhs) const;
41
38
  };
42
39
 
43
- struct FrozenBasis {
44
- bool valid_ = false;
45
- HighsInt prev_;
46
- HighsInt next_;
47
- ProductFormUpdate update_;
48
- SimplexBasis basis_;
49
- std::vector<double> dual_edge_weight_;
50
- void clear();
51
- };
52
-
53
40
  struct SimplexIterate {
54
41
  bool valid_ = false;
55
42
  SimplexBasis basis_;
@@ -85,17 +72,8 @@ class HSimplexNla {
85
72
  void ftranInScaledSpace(
86
73
  HVector& rhs, const double expected_density,
87
74
  HighsTimerClock* factor_timer_clock_pointer = NULL) const;
88
- void frozenBtran(HVector& rhs) const;
89
- void frozenFtran(HVector& rhs) const;
90
75
  void update(HVector* aq, HVector* ep, HighsInt* iRow, HighsInt* hint);
91
76
 
92
- void frozenBasisClearAllData();
93
- void frozenBasisClearAllUpdate();
94
- bool frozenBasisAllDataClear();
95
- bool frozenBasisIdValid(const HighsInt frozen_basis_id) const;
96
- bool frozenBasisHasInvert(const HighsInt frozen_basis_id) const;
97
- HighsInt freeze(const SimplexBasis& basis, const double col_aq_density);
98
- void unfreeze(const HighsInt unfreeze_basis_id, SimplexBasis& basis);
99
77
  void putInvert();
100
78
  void getInvert();
101
79
 
@@ -167,10 +145,6 @@ class HSimplexNla {
167
145
  bool report_;
168
146
  double build_synthetic_tick_;
169
147
 
170
- // Frozen basis data
171
- HighsInt first_frozen_basis_id_ = kNoLink;
172
- HighsInt last_frozen_basis_id_ = kNoLink;
173
- vector<FrozenBasis> frozen_basis_;
174
148
  ProductFormUpdate update_;
175
149
 
176
150
  // Simplex iterate data
@@ -2,9 +2,6 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
- /* Leona Gottwald and Michael Feldmeier */
7
- /* */
8
5
  /* Available as open-source under the MIT License */
9
6
  /* */
10
7
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -2,9 +2,6 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
- /* Leona Gottwald and Michael Feldmeier */
7
- /* */
8
5
  /* Available as open-source under the MIT License */
9
6
  /* */
10
7
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -23,11 +20,6 @@
23
20
  #include "lp_data/HighsOptions.h"
24
21
  #include "simplex/SimplexConst.h"
25
22
  #include "util/HFactor.h"
26
- #include "util/HVector.h"
27
- #include "util/HVectorBase.h"
28
- #include "util/HighsInt.h"
29
- #include "util/HighsTimer.h"
30
- #include "util/HighsUtils.h"
31
23
 
32
24
  enum TRAN_STAGE {
33
25
  TRAN_STAGE_FTRAN_LOWER = 0,
@@ -160,8 +152,10 @@ class HighsSimplexAnalysis {
160
152
  max_sum_average_log_extreme_dual_steepest_edge_weight_error(0.0),
161
153
  num_invert_report_since_last_header(-1),
162
154
  num_iteration_report_since_last_header(-1),
155
+ highs_run_time(0.0),
163
156
  last_user_log_time(-kHighsInf),
164
157
  delta_user_log_time(1e0),
158
+ timeless_log(false),
165
159
  average_concurrency(0.0),
166
160
  average_fraction_of_possible_minor_iterations_performed(0.0),
167
161
  sum_multi_chosen(0),
@@ -256,6 +250,7 @@ class HighsSimplexAnalysis {
256
250
  void reportFactorTimer();
257
251
  void updateInvertFormData(const HFactor& factor);
258
252
  void reportInvertFormData();
253
+ HighsInt numInvert() { return num_invert; }
259
254
 
260
255
  // Control methods to be moved to HEkkControl
261
256
  void dualSteepestEdgeWeightError(const double computed_edge_weight,
@@ -435,8 +430,10 @@ class HighsSimplexAnalysis {
435
430
 
436
431
  HighsInt num_invert_report_since_last_header;
437
432
  HighsInt num_iteration_report_since_last_header;
433
+ double highs_run_time;
438
434
  double last_user_log_time;
439
435
  double delta_user_log_time;
436
+ bool timeless_log;
440
437
 
441
438
  double average_concurrency;
442
439
  double average_fraction_of_possible_minor_iterations_performed;
@@ -2,9 +2,6 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
- /* Leona Gottwald and Michael Feldmeier */
7
- /* */
8
5
  /* Available as open-source under the MIT License */
9
6
  /* */
10
7
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -146,17 +143,17 @@ const HighsInt kDualMultiMinConcurrency = 1; // 2;
146
143
  // Simplex nonbasicFlag status for columns and rows. Don't use enum
147
144
  // class since they are used as HighsInt to replace conditional
148
145
  // statements by multiplication
149
- const HighsInt kNonbasicFlagTrue = 1; // Nonbasic
150
- const HighsInt kNonbasicFlagFalse = 0; // Basic
151
- const HighsInt kIllegalFlagValue =
146
+ const int8_t kNonbasicFlagTrue = 1; // Nonbasic
147
+ const int8_t kNonbasicFlagFalse = 0; // Basic
148
+ const int8_t kIllegalFlagValue =
152
149
  -99; // Used to see whether valid flag value has been set
153
150
 
154
151
  // Simplex nonbasicMove status for columns and rows. Don't use enum
155
152
  // class since they are used in conditional statements
156
- const HighsInt kNonbasicMoveUp = 1; // Free to move (only) up
157
- const HighsInt kNonbasicMoveDn = -1; // Free to move (only) down
158
- const HighsInt kNonbasicMoveZe = 0; // Fixed or free to move up and down
159
- const HighsInt kIllegalMoveValue =
153
+ const int8_t kNonbasicMoveUp = 1; // Free to move (only) up
154
+ const int8_t kNonbasicMoveDn = -1; // Free to move (only) down
155
+ const int8_t kNonbasicMoveZe = 0; // Fixed or free to move up and down
156
+ const int8_t kIllegalMoveValue =
160
157
  -99; // Used to see whether valid move value has been set
161
158
 
162
159
  // Threshold for accepting updated DSE weight
@@ -167,6 +164,9 @@ const double kMinDualSteepestEdgeWeight = 1e-4;
167
164
  const HighsInt kNoRowSought = -2;
168
165
  const HighsInt kNoRowChosen = -1;
169
166
 
167
+ const HighsInt kNoRayIndex = -1;
168
+ const HighsInt kNoRaySign = 0;
169
+
170
170
  // Switch to use code to check that, unless the basis supplied by the
171
171
  // MIP solver was alien, the simplex solver starts from dual
172
172
  // feasibility.
@@ -185,7 +185,6 @@ enum class LpAction {
185
185
  kDelRowsBasisOk,
186
186
  kScaledCol,
187
187
  kScaledRow,
188
- kHotStart,
189
188
  kBacktracking
190
189
  };
191
190
 
@@ -2,9 +2,6 @@
2
2
  /* */
3
3
  /* This file is part of the HiGHS linear optimization suite */
4
4
  /* */
5
- /* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
6
- /* Leona Gottwald and Michael Feldmeier */
7
- /* */
8
5
  /* Available as open-source under the MIT License */
9
6
  /* */
10
7
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -57,9 +54,7 @@ struct HighsSimplexStatus {
57
54
  bool has_dual_objective_value =
58
55
  false; // The dual objective function value is known
59
56
  bool has_primal_objective_value =
60
- false; // The dual objective function value is known
61
- bool has_dual_ray = false; // A dual unbounded ray is known
62
- bool has_primal_ray = false; // A primal unbounded ray is known
57
+ false; // The dual objective function value is known
63
58
  };
64
59
 
65
60
  struct HighsSimplexInfo {
@@ -137,12 +132,6 @@ struct HighsSimplexInfo {
137
132
  std::vector<double> backtracking_basis_workUpperShift_;
138
133
  std::vector<double> backtracking_basis_edge_weight_;
139
134
 
140
- // Dual and primal ray vectors
141
- HighsInt dual_ray_row_;
142
- HighsInt dual_ray_sign_;
143
- HighsInt primal_ray_col_;
144
- HighsInt primal_ray_sign_;
145
-
146
135
  // Options from HighsOptions for the simplex solver
147
136
  HighsInt simplex_strategy;
148
137
  HighsInt dual_edge_weight_strategy;
@@ -261,4 +250,12 @@ struct HighsSimplexBadBasisChangeRecord {
261
250
  double save_value;
262
251
  };
263
252
 
253
+ struct HighsRayRecord {
254
+ HighsInt index;
255
+ HighsInt sign;
256
+ std::vector<double> value;
257
+ HighsRayRecord getRayRecord() const;
258
+ void setRayRecord(const HighsRayRecord& from_record);
259
+ void clear();
260
+ };
264
261
  #endif /* SIMPLEX_SIMPLEXSTRUCT_H_ */