casadi 3.6.7__cp312-none-macosx_11_0_arm64.whl → 3.7.1__cp312-none-macosx_11_0_arm64.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 (459) hide show
  1. casadi/_casadi.so +0 -0
  2. casadi/casadi-cli +0 -0
  3. casadi/casadi.py +6531 -3039
  4. casadi/cbc +0 -0
  5. casadi/clp +0 -0
  6. casadi/cmake/casadi-config-version.cmake +1 -1
  7. casadi/cmake/casadi-config.cmake +1 -1
  8. casadi/cmake/casadi-targets-release.cmake +5 -5
  9. casadi/cmake/casadi-targets.cmake +7 -7
  10. casadi/{lib/cmake/tinyxml2/tinyxml2-config-version.cmake → cmake/ghc_filesystem/ghc_filesystem-config-version.cmake} +30 -10
  11. casadi/cmake/ghc_filesystem/ghc_filesystem-config.cmake +30 -0
  12. casadi/{lib/cmake/tinyxml2/tinyxml2-static-targets.cmake → cmake/ghc_filesystem/ghc_filesystem-targets.cmake} +10 -10
  13. casadi/cmake/highs/highs-targets-release.cmake +2 -2
  14. casadi/cmake/highs/highs-targets.cmake +3 -3
  15. casadi/cmake/libzip/libzip-config-version.cmake +43 -0
  16. casadi/cmake/libzip/libzip-config.cmake +69 -0
  17. casadi/cmake/libzip/libzip-targets-release.cmake +19 -0
  18. casadi/cmake/libzip/libzip-targets.cmake +107 -0
  19. casadi/cmake/libzip/modules/FindMbedTLS.cmake +141 -0
  20. casadi/cmake/libzip/modules/FindNettle.cmake +141 -0
  21. casadi/cmake/libzip/modules/Findzstd.cmake +186 -0
  22. casadi/cmake/osqp/osqp-targets.cmake +2 -2
  23. casadi/cmake/proxsuite/proxsuiteTargets.cmake +2 -2
  24. casadi/cmake/qdldl/qdldl-targets.cmake +2 -2
  25. casadi/cmake/sleqp/sleqp-targets.cmake +2 -2
  26. casadi/cmake/trlib/trlib-config.cmake +2 -2
  27. casadi/highs +0 -0
  28. casadi/include/casadi/casadi.i +276 -47
  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/callback.hpp +9 -0
  34. casadi/include/casadi/core/casadi_common.hpp +37 -0
  35. casadi/include/casadi/core/casadi_meta.hpp +15 -0
  36. casadi/include/casadi/core/casadi_misc.hpp +21 -0
  37. casadi/include/casadi/core/code_generator.hpp +115 -19
  38. casadi/include/casadi/core/core.hpp +5 -0
  39. casadi/include/casadi/core/dae_builder.hpp +303 -141
  40. casadi/include/casadi/core/dm.hpp +3 -0
  41. casadi/include/casadi/core/filesystem.hpp +58 -0
  42. casadi/include/casadi/core/fmu.hpp +62 -16
  43. casadi/include/casadi/core/function.hpp +24 -0
  44. casadi/include/casadi/core/generic_matrix.hpp +214 -7
  45. casadi/include/casadi/core/generic_shared.hpp +395 -0
  46. casadi/include/casadi/core/generic_shared_impl.hpp +218 -0
  47. casadi/include/casadi/core/generic_shared_internal.hpp +215 -0
  48. casadi/include/casadi/core/generic_type.hpp +3 -0
  49. casadi/include/casadi/core/global_options.hpp +10 -0
  50. casadi/include/casadi/core/integrator.hpp +41 -7
  51. casadi/include/casadi/core/matrix_decl.hpp +71 -0
  52. casadi/include/casadi/core/mx.hpp +63 -2
  53. casadi/include/casadi/core/nlp_builder.hpp +2 -1
  54. casadi/include/casadi/core/options.hpp +6 -3
  55. casadi/include/casadi/core/optistack.hpp +43 -9
  56. casadi/include/casadi/core/printable.hpp +8 -0
  57. casadi/include/casadi/core/resource.hpp +107 -0
  58. casadi/include/casadi/core/runtime/casadi_blazing_1d_boor_eval.hpp +112 -0
  59. casadi/include/casadi/core/runtime/casadi_blazing_2d_boor_eval.hpp +311 -0
  60. casadi/include/casadi/core/runtime/casadi_blazing_3d_boor_eval.hpp +645 -0
  61. casadi/include/casadi/core/runtime/casadi_blazing_de_boor.hpp +101 -0
  62. casadi/include/casadi/core/runtime/casadi_finite_diff.hpp +1 -1
  63. casadi/include/casadi/core/runtime/casadi_nlp.hpp +8 -2
  64. casadi/include/casadi/core/runtime/casadi_print_canonical.hpp +55 -0
  65. casadi/include/casadi/core/runtime/casadi_print_scalar.hpp +25 -0
  66. casadi/include/casadi/core/runtime/casadi_print_vector.hpp +32 -0
  67. casadi/include/casadi/core/runtime/casadi_printme.hpp +26 -0
  68. casadi/include/casadi/core/serializer.hpp +13 -5
  69. casadi/include/casadi/core/serializing_stream.hpp +9 -2
  70. casadi/include/casadi/core/shared_object.hpp +73 -161
  71. casadi/include/casadi/core/sparsity.hpp +13 -1
  72. casadi/include/casadi/core/sparsity_interface.hpp +19 -1
  73. casadi/include/casadi/core/sx.hpp +41 -0
  74. casadi/include/casadi/core/sx_elem.hpp +25 -0
  75. casadi/include/casadi/core/xml_node.hpp +5 -0
  76. casadi/include/casadi/doc.i +10026 -6513
  77. casadi/include/casadi/doc_merged.i +6744 -4449
  78. casadi/include/casadi/valgrind-casadi.supp +138 -0
  79. casadi/include/casadi/valgrind-python.supp +2470 -0
  80. casadi/include/fatrop/blasfeo_wrapper/LinearAlgebraBlasfeo.hpp +4 -1
  81. casadi/include/ghc/filesystem.hpp +6083 -0
  82. casadi/include/ghc/fs_fwd.hpp +38 -0
  83. casadi/include/ghc/fs_impl.hpp +35 -0
  84. casadi/include/ghc/fs_std.hpp +60 -0
  85. casadi/include/ghc/fs_std_fwd.hpp +63 -0
  86. casadi/include/ghc/fs_std_impl.hpp +46 -0
  87. casadi/include/highs/HConfig.h +6 -4
  88. casadi/include/highs/Highs.h +260 -86
  89. casadi/include/highs/filereaderlp/reader.hpp +10 -10
  90. casadi/include/highs/interfaces/highs_c_api.h +195 -22
  91. casadi/include/highs/io/Filereader.h +4 -6
  92. casadi/include/highs/io/FilereaderEms.h +0 -3
  93. casadi/include/highs/io/FilereaderLp.h +0 -3
  94. casadi/include/highs/io/FilereaderMps.h +0 -3
  95. casadi/include/highs/io/HMPSIO.h +1 -4
  96. casadi/include/highs/io/HMpsFF.h +8 -5
  97. casadi/include/highs/io/HighsIO.h +10 -5
  98. casadi/include/highs/io/LoadOptions.h +0 -3
  99. casadi/include/highs/ipm/IpxSolution.h +0 -3
  100. casadi/include/highs/ipm/IpxWrapper.h +4 -7
  101. casadi/include/highs/ipm/ipx/control.h +1 -0
  102. casadi/include/highs/ipm/ipx/ipx_parameters.h +1 -0
  103. casadi/include/highs/ipm/ipx/lp_solver.h +3 -2
  104. casadi/include/highs/ipm/ipx/model.h +7 -3
  105. casadi/include/highs/lp_data/HConst.h +21 -6
  106. casadi/include/highs/lp_data/HStruct.h +40 -4
  107. casadi/include/highs/lp_data/HighsAnalysis.h +0 -3
  108. casadi/include/highs/lp_data/HighsCallback.h +10 -3
  109. casadi/include/highs/lp_data/HighsCallbackStruct.h +3 -3
  110. casadi/include/highs/lp_data/HighsDebug.h +0 -3
  111. casadi/include/highs/lp_data/HighsIis.h +62 -0
  112. casadi/include/highs/lp_data/HighsInfo.h +50 -43
  113. casadi/include/highs/lp_data/HighsInfoDebug.h +0 -3
  114. casadi/include/highs/lp_data/HighsLp.h +2 -3
  115. casadi/include/highs/lp_data/HighsLpSolverObject.h +0 -3
  116. casadi/include/highs/lp_data/HighsLpUtils.h +38 -6
  117. casadi/include/highs/lp_data/HighsModelUtils.h +21 -18
  118. casadi/include/highs/lp_data/HighsOptions.h +134 -22
  119. casadi/include/highs/lp_data/HighsRanging.h +0 -3
  120. casadi/include/highs/lp_data/HighsSolution.h +10 -3
  121. casadi/include/highs/lp_data/HighsSolutionDebug.h +0 -3
  122. casadi/include/highs/lp_data/HighsSolve.h +0 -3
  123. casadi/include/highs/lp_data/HighsStatus.h +0 -3
  124. casadi/include/highs/mip/HighsCliqueTable.h +3 -3
  125. casadi/include/highs/mip/HighsConflictPool.h +0 -3
  126. casadi/include/highs/mip/HighsCutGeneration.h +13 -3
  127. casadi/include/highs/mip/HighsCutPool.h +0 -3
  128. casadi/include/highs/mip/HighsDebugSol.h +0 -3
  129. casadi/include/highs/mip/HighsDomain.h +16 -4
  130. casadi/include/highs/mip/HighsDomainChange.h +0 -3
  131. casadi/include/highs/mip/HighsDynamicRowMatrix.h +0 -3
  132. casadi/include/highs/mip/HighsGFkSolve.h +3 -6
  133. casadi/include/highs/mip/HighsImplications.h +29 -5
  134. casadi/include/highs/mip/HighsLpAggregator.h +0 -3
  135. casadi/include/highs/mip/HighsLpRelaxation.h +0 -3
  136. casadi/include/highs/mip/HighsMipAnalysis.h +52 -0
  137. casadi/include/highs/mip/HighsMipSolver.h +11 -4
  138. casadi/include/highs/mip/HighsMipSolverData.h +67 -6
  139. casadi/include/highs/mip/HighsModkSeparator.h +1 -4
  140. casadi/include/highs/mip/HighsNodeQueue.h +0 -3
  141. casadi/include/highs/mip/HighsObjectiveFunction.h +0 -3
  142. casadi/include/highs/mip/HighsPathSeparator.h +1 -4
  143. casadi/include/highs/mip/HighsPrimalHeuristics.h +7 -5
  144. casadi/include/highs/mip/HighsPseudocost.h +0 -3
  145. casadi/include/highs/mip/HighsRedcostFixing.h +0 -3
  146. casadi/include/highs/mip/HighsSearch.h +0 -3
  147. casadi/include/highs/mip/HighsSeparation.h +0 -3
  148. casadi/include/highs/mip/HighsSeparator.h +1 -5
  149. casadi/include/highs/mip/HighsTableauSeparator.h +1 -4
  150. casadi/include/highs/mip/HighsTransformedLp.h +0 -3
  151. casadi/include/highs/mip/MipTimer.h +471 -0
  152. casadi/include/highs/parallel/HighsBinarySemaphore.h +1 -1
  153. casadi/include/highs/parallel/HighsCacheAlign.h +1 -1
  154. casadi/include/highs/parallel/HighsCombinable.h +1 -1
  155. casadi/include/highs/parallel/HighsMutex.h +1 -1
  156. casadi/include/highs/parallel/HighsRaceTimer.h +1 -1
  157. casadi/include/highs/parallel/HighsSchedulerConstants.h +1 -1
  158. casadi/include/highs/parallel/HighsSplitDeque.h +1 -1
  159. casadi/include/highs/parallel/HighsTaskExecutor.h +68 -55
  160. casadi/include/highs/pdlp/CupdlpWrapper.h +18 -7
  161. casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +2 -3
  162. casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +16 -6
  163. casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +10 -4
  164. casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +3 -3
  165. casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +6 -6
  166. casadi/include/highs/pdlp/cupdlp/cupdlp_scaling.h +26 -0
  167. casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +11 -11
  168. casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +8 -4
  169. casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +253 -172
  170. casadi/include/highs/presolve/HPresolve.h +50 -10
  171. casadi/include/highs/presolve/HPresolveAnalysis.h +0 -3
  172. casadi/include/highs/presolve/HighsPostsolveStack.h +39 -6
  173. casadi/include/highs/presolve/HighsSymmetry.h +0 -3
  174. casadi/include/highs/presolve/ICrash.h +0 -3
  175. casadi/include/highs/presolve/ICrashUtil.h +1 -4
  176. casadi/include/highs/presolve/ICrashX.h +0 -3
  177. casadi/include/highs/presolve/PresolveComponent.h +0 -3
  178. casadi/include/highs/qpsolver/a_asm.hpp +20 -17
  179. casadi/include/highs/qpsolver/a_quass.hpp +5 -9
  180. casadi/include/highs/qpsolver/basis.hpp +12 -10
  181. casadi/include/highs/qpsolver/crashsolution.hpp +4 -3
  182. casadi/include/highs/qpsolver/dantzigpricing.hpp +3 -2
  183. casadi/include/highs/qpsolver/devexpricing.hpp +3 -1
  184. casadi/include/highs/qpsolver/factor.hpp +6 -5
  185. casadi/include/highs/qpsolver/feasibility_bounded.hpp +31 -29
  186. casadi/include/highs/qpsolver/feasibility_highs.hpp +94 -70
  187. casadi/include/highs/qpsolver/gradient.hpp +1 -1
  188. casadi/include/highs/qpsolver/instance.hpp +1 -1
  189. casadi/include/highs/qpsolver/pricing.hpp +2 -2
  190. casadi/include/highs/qpsolver/qpconst.hpp +2 -2
  191. casadi/include/highs/qpsolver/quass.hpp +2 -2
  192. casadi/include/highs/qpsolver/runtime.hpp +2 -2
  193. casadi/include/highs/qpsolver/settings.hpp +20 -8
  194. casadi/include/highs/qpsolver/steepestedgepricing.hpp +38 -39
  195. casadi/include/highs/simplex/HApp.h +88 -34
  196. casadi/include/highs/simplex/HEkk.h +24 -11
  197. casadi/include/highs/simplex/HEkkDual.h +2 -4
  198. casadi/include/highs/simplex/HEkkDualRHS.h +0 -3
  199. casadi/include/highs/simplex/HEkkDualRow.h +0 -3
  200. casadi/include/highs/simplex/HEkkPrimal.h +1 -5
  201. casadi/include/highs/simplex/HSimplex.h +0 -3
  202. casadi/include/highs/simplex/HSimplexDebug.h +0 -3
  203. casadi/include/highs/simplex/HSimplexNla.h +0 -26
  204. casadi/include/highs/simplex/HSimplexReport.h +0 -3
  205. casadi/include/highs/simplex/HighsSimplexAnalysis.h +5 -8
  206. casadi/include/highs/simplex/SimplexConst.h +10 -11
  207. casadi/include/highs/simplex/SimplexStruct.h +9 -12
  208. casadi/include/highs/simplex/SimplexTimer.h +83 -101
  209. casadi/include/highs/test/DevKkt.h +0 -3
  210. casadi/include/highs/test/KktCh2.h +0 -3
  211. casadi/include/highs/util/FactorTimer.h +39 -64
  212. casadi/include/highs/util/HFactor.h +4 -4
  213. casadi/include/highs/util/HFactorConst.h +0 -3
  214. casadi/include/highs/util/HFactorDebug.h +0 -3
  215. casadi/include/highs/util/HSet.h +0 -3
  216. casadi/include/highs/util/HVector.h +0 -3
  217. casadi/include/highs/util/HVectorBase.h +1 -4
  218. casadi/include/highs/util/HighsCDouble.h +12 -3
  219. casadi/include/highs/util/HighsComponent.h +0 -3
  220. casadi/include/highs/util/HighsDataStack.h +0 -3
  221. casadi/include/highs/util/HighsDisjointSets.h +0 -3
  222. casadi/include/highs/util/HighsHash.h +9 -12
  223. casadi/include/highs/util/HighsHashTree.h +15 -11
  224. casadi/include/highs/util/HighsInt.h +0 -3
  225. casadi/include/highs/util/HighsIntegers.h +0 -3
  226. casadi/include/highs/util/HighsLinearSumBounds.h +0 -3
  227. casadi/include/highs/util/HighsMatrixPic.h +0 -3
  228. casadi/include/highs/util/HighsMatrixSlice.h +3 -6
  229. casadi/include/highs/util/HighsMatrixUtils.h +0 -3
  230. casadi/include/highs/util/HighsMemoryAllocation.h +11 -3
  231. casadi/include/highs/util/HighsRandom.h +3 -6
  232. casadi/include/highs/util/HighsRbTree.h +0 -3
  233. casadi/include/highs/util/HighsSort.h +0 -3
  234. casadi/include/highs/util/HighsSparseMatrix.h +6 -3
  235. casadi/include/highs/util/HighsSparseVectorSum.h +0 -3
  236. casadi/include/highs/util/HighsSplay.h +0 -3
  237. casadi/include/highs/util/HighsTimer.h +94 -56
  238. casadi/include/highs/util/HighsUtils.h +10 -3
  239. casadi/include/highs/util/stringutil.h +14 -12
  240. casadi/include/licenses/LICENSE.bzip2.txt +42 -0
  241. casadi/include/licenses/ghc-external/LICENSE +19 -0
  242. casadi/include/licenses/libz-external/LICENSE +22 -0
  243. casadi/include/licenses/libz-external/contrib/dotzlib/LICENSE_1_0.txt +23 -0
  244. casadi/include/licenses/libzip-external/LICENSE +31 -0
  245. casadi/include/zconf.h +545 -0
  246. casadi/include/zip.h +528 -0
  247. casadi/include/zipconf.h +48 -0
  248. casadi/include/zlib.h +1938 -0
  249. casadi/libCbc.3.10.11.dylib +0 -0
  250. casadi/libCbc.3.dylib +0 -0
  251. casadi/libCbc.dylib +0 -0
  252. casadi/libCbc.la +1 -1
  253. casadi/libCbcSolver.3.10.11.dylib +0 -0
  254. casadi/libCbcSolver.3.dylib +0 -0
  255. casadi/libCbcSolver.dylib +0 -0
  256. casadi/libCbcSolver.la +1 -1
  257. casadi/libCgl.1.10.8.dylib +0 -0
  258. casadi/libCgl.1.dylib +0 -0
  259. casadi/libCgl.dylib +0 -0
  260. casadi/libCgl.la +1 -1
  261. casadi/libClp.1.14.9.dylib +0 -0
  262. casadi/libClp.1.dylib +0 -0
  263. casadi/libClp.dylib +0 -0
  264. casadi/libClp.la +1 -1
  265. casadi/libClpSolver.1.14.9.dylib +0 -0
  266. casadi/libClpSolver.1.dylib +0 -0
  267. casadi/libClpSolver.dylib +0 -0
  268. casadi/libClpSolver.la +1 -1
  269. casadi/libCoinUtils.3.11.10.dylib +0 -0
  270. casadi/libCoinUtils.3.dylib +0 -0
  271. casadi/libCoinUtils.dylib +0 -0
  272. casadi/libOsi.1.13.9.dylib +0 -0
  273. casadi/libOsi.1.dylib +0 -0
  274. casadi/libOsi.dylib +0 -0
  275. casadi/libOsiCbc.3.10.11.dylib +0 -0
  276. casadi/libOsiCbc.3.dylib +0 -0
  277. casadi/libOsiCbc.dylib +0 -0
  278. casadi/libOsiCbc.la +1 -1
  279. casadi/libOsiClp.1.14.9.dylib +0 -0
  280. casadi/libOsiClp.1.dylib +0 -0
  281. casadi/libOsiClp.dylib +0 -0
  282. casadi/libOsiClp.la +1 -1
  283. casadi/libOsiCommonTests.1.13.9.dylib +0 -0
  284. casadi/libOsiCommonTests.1.dylib +0 -0
  285. casadi/libOsiCommonTests.dylib +0 -0
  286. casadi/libblasfeo.dylib +0 -0
  287. casadi/libbonmin.4.8.9.dylib +0 -0
  288. casadi/libbonmin.4.dylib +0 -0
  289. casadi/libbonmin.dylib +0 -0
  290. casadi/libbonmin.la +1 -1
  291. casadi/libbz2.1.0.8.dylib +0 -0
  292. casadi/libc++.1.0.dylib +0 -0
  293. casadi/libcasadi.3.7.dylib +0 -0
  294. casadi/libcasadi.dylib +0 -0
  295. casadi/libcasadi_archiver_libzip.3.7.dylib +0 -0
  296. casadi/libcasadi_archiver_libzip.dylib +0 -0
  297. casadi/libcasadi_conic_cbc.3.7.dylib +0 -0
  298. casadi/libcasadi_conic_cbc.dylib +0 -0
  299. casadi/libcasadi_conic_clp.3.7.dylib +0 -0
  300. casadi/libcasadi_conic_clp.dylib +0 -0
  301. casadi/libcasadi_conic_cplex.3.7.dylib +0 -0
  302. casadi/libcasadi_conic_cplex.dylib +0 -0
  303. casadi/libcasadi_conic_daqp.3.7.dylib +0 -0
  304. casadi/libcasadi_conic_daqp.dylib +0 -0
  305. casadi/libcasadi_conic_fatrop.3.7.dylib +0 -0
  306. casadi/libcasadi_conic_fatrop.dylib +0 -0
  307. casadi/libcasadi_conic_gurobi.3.7.dylib +0 -0
  308. casadi/libcasadi_conic_gurobi.dylib +0 -0
  309. casadi/libcasadi_conic_highs.3.7.dylib +0 -0
  310. casadi/libcasadi_conic_highs.dylib +0 -0
  311. casadi/libcasadi_conic_ipqp.3.7.dylib +0 -0
  312. casadi/libcasadi_conic_ipqp.dylib +0 -0
  313. casadi/libcasadi_conic_nlpsol.3.7.dylib +0 -0
  314. casadi/libcasadi_conic_nlpsol.dylib +0 -0
  315. casadi/libcasadi_conic_osqp.3.7.dylib +0 -0
  316. casadi/libcasadi_conic_osqp.dylib +0 -0
  317. casadi/libcasadi_conic_proxqp.3.7.dylib +0 -0
  318. casadi/libcasadi_conic_proxqp.dylib +0 -0
  319. casadi/libcasadi_conic_qpoases.3.7.dylib +0 -0
  320. casadi/libcasadi_conic_qpoases.dylib +0 -0
  321. casadi/libcasadi_conic_qrqp.3.7.dylib +0 -0
  322. casadi/libcasadi_conic_qrqp.dylib +0 -0
  323. casadi/libcasadi_conic_superscs.3.7.dylib +0 -0
  324. casadi/libcasadi_conic_superscs.dylib +0 -0
  325. casadi/libcasadi_filesystem_ghc.3.7.dylib +0 -0
  326. casadi/libcasadi_filesystem_ghc.dylib +0 -0
  327. casadi/libcasadi_importer_shell.3.7.dylib +0 -0
  328. casadi/libcasadi_importer_shell.dylib +0 -0
  329. casadi/libcasadi_integrator_collocation.3.7.dylib +0 -0
  330. casadi/libcasadi_integrator_collocation.dylib +0 -0
  331. casadi/libcasadi_integrator_cvodes.3.7.dylib +0 -0
  332. casadi/libcasadi_integrator_cvodes.dylib +0 -0
  333. casadi/libcasadi_integrator_idas.3.7.dylib +0 -0
  334. casadi/libcasadi_integrator_idas.dylib +0 -0
  335. casadi/libcasadi_integrator_rk.3.7.dylib +0 -0
  336. casadi/libcasadi_integrator_rk.dylib +0 -0
  337. casadi/libcasadi_interpolant_bspline.3.7.dylib +0 -0
  338. casadi/libcasadi_interpolant_bspline.dylib +0 -0
  339. casadi/libcasadi_interpolant_linear.3.7.dylib +0 -0
  340. casadi/libcasadi_interpolant_linear.dylib +0 -0
  341. casadi/libcasadi_linsol_csparse.3.7.dylib +0 -0
  342. casadi/libcasadi_linsol_csparse.dylib +0 -0
  343. casadi/libcasadi_linsol_csparsecholesky.3.7.dylib +0 -0
  344. casadi/libcasadi_linsol_csparsecholesky.dylib +0 -0
  345. casadi/libcasadi_linsol_lapacklu.3.7.dylib +0 -0
  346. casadi/libcasadi_linsol_lapacklu.dylib +0 -0
  347. casadi/libcasadi_linsol_lapackqr.3.7.dylib +0 -0
  348. casadi/libcasadi_linsol_lapackqr.dylib +0 -0
  349. casadi/libcasadi_linsol_ldl.3.7.dylib +0 -0
  350. casadi/libcasadi_linsol_ldl.dylib +0 -0
  351. casadi/libcasadi_linsol_lsqr.3.7.dylib +0 -0
  352. casadi/libcasadi_linsol_lsqr.dylib +0 -0
  353. casadi/libcasadi_linsol_ma27.3.7.dylib +0 -0
  354. casadi/libcasadi_linsol_ma27.dylib +0 -0
  355. casadi/libcasadi_linsol_mumps.3.7.dylib +0 -0
  356. casadi/libcasadi_linsol_mumps.dylib +0 -0
  357. casadi/libcasadi_linsol_qr.3.7.dylib +0 -0
  358. casadi/libcasadi_linsol_qr.dylib +0 -0
  359. casadi/libcasadi_linsol_symbolicqr.3.7.dylib +0 -0
  360. casadi/libcasadi_linsol_symbolicqr.dylib +0 -0
  361. casadi/libcasadi_linsol_tridiag.3.7.dylib +0 -0
  362. casadi/libcasadi_linsol_tridiag.dylib +0 -0
  363. casadi/libcasadi_nlpsol_ampl.3.7.dylib +0 -0
  364. casadi/libcasadi_nlpsol_ampl.dylib +0 -0
  365. casadi/libcasadi_nlpsol_blocksqp.3.7.dylib +0 -0
  366. casadi/libcasadi_nlpsol_blocksqp.dylib +0 -0
  367. casadi/libcasadi_nlpsol_bonmin.3.7.dylib +0 -0
  368. casadi/libcasadi_nlpsol_bonmin.dylib +0 -0
  369. casadi/libcasadi_nlpsol_fatrop.3.7.dylib +0 -0
  370. casadi/libcasadi_nlpsol_fatrop.dylib +0 -0
  371. casadi/libcasadi_nlpsol_feasiblesqpmethod.3.7.dylib +0 -0
  372. casadi/libcasadi_nlpsol_feasiblesqpmethod.dylib +0 -0
  373. casadi/libcasadi_nlpsol_ipopt.3.7.dylib +0 -0
  374. casadi/libcasadi_nlpsol_ipopt.dylib +0 -0
  375. casadi/libcasadi_nlpsol_knitro.3.7.dylib +0 -0
  376. casadi/libcasadi_nlpsol_knitro.dylib +0 -0
  377. casadi/libcasadi_nlpsol_madnlp.3.7.dylib +0 -0
  378. casadi/libcasadi_nlpsol_madnlp.dylib +0 -0
  379. casadi/libcasadi_nlpsol_qrsqp.3.7.dylib +0 -0
  380. casadi/libcasadi_nlpsol_qrsqp.dylib +0 -0
  381. casadi/libcasadi_nlpsol_scpgen.3.7.dylib +0 -0
  382. casadi/libcasadi_nlpsol_scpgen.dylib +0 -0
  383. casadi/libcasadi_nlpsol_sleqp.3.7.dylib +0 -0
  384. casadi/libcasadi_nlpsol_sleqp.dylib +0 -0
  385. casadi/libcasadi_nlpsol_snopt.3.7.dylib +0 -0
  386. casadi/libcasadi_nlpsol_snopt.dylib +0 -0
  387. casadi/libcasadi_nlpsol_sqpmethod.3.7.dylib +0 -0
  388. casadi/libcasadi_nlpsol_sqpmethod.dylib +0 -0
  389. casadi/libcasadi_rootfinder_fast_newton.3.7.dylib +0 -0
  390. casadi/libcasadi_rootfinder_fast_newton.dylib +0 -0
  391. casadi/libcasadi_rootfinder_kinsol.3.7.dylib +0 -0
  392. casadi/libcasadi_rootfinder_kinsol.dylib +0 -0
  393. casadi/libcasadi_rootfinder_newton.3.7.dylib +0 -0
  394. casadi/libcasadi_rootfinder_newton.dylib +0 -0
  395. casadi/libcasadi_rootfinder_nlpsol.3.7.dylib +0 -0
  396. casadi/libcasadi_rootfinder_nlpsol.dylib +0 -0
  397. casadi/libcasadi_sundials_common.3.7.dylib +0 -0
  398. casadi/libcasadi_sundials_common.dylib +0 -0
  399. casadi/libcasadi_xmlfile_tinyxml.3.7.dylib +0 -0
  400. casadi/libcasadi_xmlfile_tinyxml.dylib +0 -0
  401. casadi/libcoinmetis.2.dylib +0 -0
  402. casadi/libcoinmetis.dylib +0 -0
  403. casadi/libcoinmumps.3.dylib +0 -0
  404. casadi/libcoinmumps.dylib +0 -0
  405. casadi/libcoinmumps.la +1 -1
  406. casadi/libcplex_adaptor.dylib +0 -0
  407. casadi/libdaqp.dylib +0 -0
  408. casadi/libdaqpstat.a +0 -0
  409. casadi/libfatrop.dylib +0 -0
  410. casadi/libgcc_s.1.1.dylib +0 -0
  411. casadi/libgfortran.5.dylib +0 -0
  412. casadi/libgurobi_adaptor.dylib +0 -0
  413. casadi/libhighs.1.10.dylib +0 -0
  414. casadi/libhighs.1.dylib +0 -0
  415. casadi/libhighs.dylib +0 -0
  416. casadi/libindirect.a +0 -0
  417. casadi/libipopt.3.dylib +0 -0
  418. casadi/libipopt.dylib +0 -0
  419. casadi/libipopt.la +1 -1
  420. casadi/liblinsys.a +0 -0
  421. casadi/libmatlab_ipc.dylib +0 -0
  422. casadi/libosqp.a +0 -0
  423. casadi/libosqp.dylib +0 -0
  424. casadi/libqdldl.a +0 -0
  425. casadi/libqdldl.dylib +0 -0
  426. casadi/libquadmath.0.dylib +0 -0
  427. casadi/libsipopt.3.dylib +0 -0
  428. casadi/libsipopt.dylib +0 -0
  429. casadi/libsipopt.la +1 -1
  430. casadi/libsleqp.1.0.1.dylib +0 -0
  431. casadi/libsleqp.dylib +0 -0
  432. casadi/libsuperscs.a +0 -0
  433. casadi/libtrlib.0.4.dylib +0 -0
  434. casadi/libtrlib.dylib +0 -0
  435. casadi/libz.1.2.13.dylib +0 -0
  436. casadi/libz.1.3.1.dylib +0 -0
  437. casadi/libz.1.dylib +0 -0
  438. casadi/libz.a +0 -0
  439. casadi/libz.dylib +0 -0
  440. casadi/libzip.a +0 -0
  441. casadi/pkgconfig/casadi.pc +1 -1
  442. casadi/pkgconfig/coinmumps.pc +1 -1
  443. casadi/pkgconfig/highs.pc +1 -1
  444. casadi/pkgconfig/libzip.pc +14 -0
  445. casadi/tools/__init__.py +3 -1
  446. casadi/tools/graph/graph.py +1 -1
  447. casadi/tools/structure3.py +7 -7
  448. {casadi-3.6.7.dist-info → casadi-3.7.1.dist-info}/METADATA +1 -1
  449. {casadi-3.6.7.dist-info → casadi-3.7.1.dist-info}/RECORD +450 -405
  450. casadi/include/highs/lp_data/HighsRuntimeOptions.h +0 -276
  451. casadi/include/highs/pdlp/cupdlp/cupdlp_scaling_cuda.h +0 -28
  452. casadi/include/tinyxml2.h +0 -2380
  453. casadi/lib/cmake/tinyxml2/tinyxml2-config.cmake +0 -57
  454. casadi/lib/cmake/tinyxml2/tinyxml2-static-targets-release.cmake +0 -19
  455. casadi/lib/libtinyxml2.a +0 -0
  456. casadi/lib/pkgconfig/tinyxml2.pc +0 -10
  457. casadi/libhighs.1.7.dylib +0 -0
  458. casadi/tools/structure.py +0 -1446
  459. {casadi-3.6.7.dist-info → casadi-3.7.1.dist-info}/WHEEL +0 -0
@@ -5,13 +5,13 @@
5
5
  #include "qpsolver/a_asm.hpp"
6
6
  #include "qpsolver/crashsolution.hpp"
7
7
 
8
- static void computeStartingPointBounded(Instance& instance,
9
- Settings& settings,
10
- Statistics& stats,
11
- QpModelStatus& modelstatus,
12
- QpHotstartInformation& result,
13
- HighsTimer& timer) {
14
- // compute initial feasible point for problems with bounds only (no general linear constraints)
8
+ static void computeStartingPointBounded(Instance& instance, Settings& settings,
9
+ Statistics& stats,
10
+ QpModelStatus& modelstatus,
11
+ QpHotstartInformation& result,
12
+ HighsTimer& timer) {
13
+ // compute initial feasible point for problems with bounds only (no general
14
+ // linear constraints)
15
15
 
16
16
  // compute Qx + c = 0 --> x = Q^-1c
17
17
  std::vector<double> L;
@@ -19,16 +19,18 @@ static void computeStartingPointBounded(Instance& instance,
19
19
 
20
20
  // compute cholesky factorization of Q
21
21
  for (size_t col = 0; col < (size_t)instance.num_var; col++) {
22
- for (size_t idx = instance.Q.mat.start[col]; idx < (size_t)instance.Q.mat.start[col+1]; idx++) {
22
+ for (size_t idx = instance.Q.mat.start[col];
23
+ idx < (size_t)instance.Q.mat.start[col + 1]; idx++) {
23
24
  double sum = 0;
24
- size_t row = instance.Q.mat.index[idx];
25
+ size_t row = instance.Q.mat.index[idx];
25
26
  if (row == col) {
26
27
  for (size_t k = 0; k < row; k++)
27
28
  sum += L[k * instance.num_var + row] * L[k * instance.num_var + row];
28
29
  L[row * instance.num_var + row] = sqrt(instance.Q.mat.value[idx] - sum);
29
30
  } else {
30
31
  for (size_t k = 0; k < row; k++)
31
- sum += (L[k * instance.num_var + col] * L[k * instance.num_var + row]);
32
+ sum +=
33
+ (L[k * instance.num_var + col] * L[k * instance.num_var + row]);
32
34
  L[row * instance.num_var + col] =
33
35
  (instance.Q.mat.value[idx] - sum) / L[row * instance.num_var + row];
34
36
  }
@@ -37,7 +39,7 @@ static void computeStartingPointBounded(Instance& instance,
37
39
 
38
40
  // solve for c
39
41
  QpVector res = -instance.c;
40
- for (HighsInt r = 0; r <res.dim; r++) {
42
+ for (HighsInt r = 0; r < res.dim; r++) {
41
43
  for (HighsInt j = 0; j < r; j++) {
42
44
  res.value[r] -= res.value[j] * L[j * instance.num_var + r];
43
45
  }
@@ -59,27 +61,27 @@ static void computeStartingPointBounded(Instance& instance,
59
61
  std::vector<HighsInt> initialinactive;
60
62
  std::vector<BasisStatus> atlower;
61
63
 
62
- for (int i=0; i<instance.num_var; i++) {
63
- if (res.value[i] > 0.5/settings.hessianregularizationfactor
64
- && instance.var_up[i] == std::numeric_limits<double>::infinity()
65
- && instance.c.value[i] < 0.0) {
66
- modelstatus = QpModelStatus::kUnbounded;
67
- return;
68
- } else if (res.value[i] < 0.5/settings.hessianregularizationfactor
69
- && instance.var_lo[i] == std::numeric_limits<double>::infinity()
70
- && instance.c.value[i] > 0.0) {
71
- modelstatus = QpModelStatus::kUnbounded;
72
- return;
64
+ for (int i = 0; i < instance.num_var; i++) {
65
+ if (res.value[i] > 0.5 / settings.hessianregularizationfactor &&
66
+ instance.var_up[i] == std::numeric_limits<double>::infinity() &&
67
+ instance.c.value[i] < 0.0) {
68
+ modelstatus = QpModelStatus::kUnbounded;
69
+ return;
70
+ } else if (res.value[i] < 0.5 / settings.hessianregularizationfactor &&
71
+ instance.var_lo[i] == std::numeric_limits<double>::infinity() &&
72
+ instance.c.value[i] > 0.0) {
73
+ modelstatus = QpModelStatus::kUnbounded;
74
+ return;
73
75
  } else if (res.value[i] <= instance.var_lo[i]) {
74
- res.value[i] = instance.var_lo[i];
75
- initialactive.push_back(i + instance.num_con);
76
- atlower.push_back(BasisStatus::kActiveAtLower);
76
+ res.value[i] = instance.var_lo[i];
77
+ initialactive.push_back(i + instance.num_con);
78
+ atlower.push_back(BasisStatus::kActiveAtLower);
77
79
  } else if (res.value[i] >= instance.var_up[i]) {
78
- res.value[i] = instance.var_up[i];
79
- initialactive.push_back(i + instance.num_con);
80
- atlower.push_back(BasisStatus::kActiveAtUpper);
80
+ res.value[i] = instance.var_up[i];
81
+ initialactive.push_back(i + instance.num_con);
82
+ atlower.push_back(BasisStatus::kActiveAtUpper);
81
83
  } else {
82
- initialinactive.push_back(i + instance.num_con);
84
+ initialinactive.push_back(i + instance.num_con);
83
85
  }
84
86
  if (fabs(res.value[i]) > 1e-4) {
85
87
  x0.value[i] = res.value[i];
@@ -5,15 +5,11 @@
5
5
  #include "qpsolver/a_asm.hpp"
6
6
  #include "qpsolver/crashsolution.hpp"
7
7
 
8
- static void computeStartingPointHighs(Instance& instance,
9
- Settings& settings,
10
- Statistics& stats,
11
- QpModelStatus& modelstatus,
12
- QpHotstartInformation& result,
13
- HighsModelStatus& highs_model_status,
14
- HighsBasis& highs_basis,
15
- HighsSolution& highs_solution,
16
- HighsTimer& timer) {
8
+ static void computeStartingPointHighs(
9
+ Instance& instance, Settings& settings, Statistics& stats,
10
+ QpModelStatus& modelstatus, QpHotstartInformation& result,
11
+ HighsModelStatus& highs_model_status, HighsBasis& highs_basis,
12
+ HighsSolution& highs_solution, HighsTimer& timer) {
17
13
  bool have_starting_point = false;
18
14
  const bool debug_report = false;
19
15
  if (highs_solution.value_valid) {
@@ -28,24 +24,26 @@ static void computeStartingPointHighs(Instance& instance,
28
24
  double sum_con_infeasibilities = 0;
29
25
  double max_con_residual = 0;
30
26
  double sum_con_residuals = 0;
31
-
32
- assessQpPrimalFeasibility(instance, primal_feasibility_tolerance,
33
- highs_solution.col_value, highs_solution.row_value,
34
- num_var_infeasibilities, max_var_infeasibility, sum_var_infeasibilities,
35
- num_con_infeasibilities, max_con_infeasibility, sum_con_infeasibilities,
36
- max_con_residual, sum_con_residuals);
37
27
 
38
- if (debug_report) printf("computeStartingPointHighs highs_solution has (num / max / sum) "
39
- "var (%d / %g / %g) and "
40
- "con (%d / %g / %g) infeasibilities "
41
- "with (max = %g; sum = %g) residuals\n",
42
- int(num_var_infeasibilities), max_var_infeasibility, sum_var_infeasibilities,
43
- int(num_con_infeasibilities), max_con_infeasibility, sum_con_infeasibilities,
44
- max_con_residual, sum_con_residuals);
45
- have_starting_point =
46
- num_var_infeasibilities == 0 &&
47
- num_con_infeasibilities == 0 &&
48
- highs_basis.valid;
28
+ assessQpPrimalFeasibility(
29
+ instance, primal_feasibility_tolerance, highs_solution.col_value,
30
+ highs_solution.row_value, num_var_infeasibilities,
31
+ max_var_infeasibility, sum_var_infeasibilities, num_con_infeasibilities,
32
+ max_con_infeasibility, sum_con_infeasibilities, max_con_residual,
33
+ sum_con_residuals);
34
+
35
+ if (debug_report)
36
+ printf(
37
+ "computeStartingPointHighs highs_solution has (num / max / sum) "
38
+ "var (%d / %g / %g) and "
39
+ "con (%d / %g / %g) infeasibilities "
40
+ "with (max = %g; sum = %g) residuals\n",
41
+ int(num_var_infeasibilities), max_var_infeasibility,
42
+ sum_var_infeasibilities, int(num_con_infeasibilities),
43
+ max_con_infeasibility, sum_con_infeasibilities, max_con_residual,
44
+ sum_con_residuals);
45
+ have_starting_point = num_var_infeasibilities == 0 &&
46
+ num_con_infeasibilities == 0 && highs_basis.valid;
49
47
  }
50
48
  // compute initial feasible point
51
49
  HighsBasis use_basis;
@@ -53,16 +51,18 @@ static void computeStartingPointHighs(Instance& instance,
53
51
  if (have_starting_point) {
54
52
  use_basis = highs_basis;
55
53
  use_solution = highs_solution;
54
+ // Have to assume that the supplied basis is feasible
55
+ modelstatus = QpModelStatus::kNotset;
56
56
  } else {
57
57
  Highs highs;
58
58
 
59
59
  // set HiGHS to be silent
60
60
  highs.setOptionValue("output_flag", false);
61
-
62
- highs.setOptionValue("presolve", "on");
63
-
64
- highs.setOptionValue("time_limit", settings.time_limit -
65
- timer.readRunHighsClock());
61
+ highs.setOptionValue("presolve", kHighsOnString);
62
+ // Set the residual time limit
63
+ const double use_time_limit =
64
+ std::max(settings.time_limit - timer.read(), 0.001);
65
+ highs.setOptionValue("time_limit", use_time_limit);
66
66
 
67
67
  HighsLp lp;
68
68
  lp.a_matrix_.index_ = instance.A.mat.index;
@@ -81,11 +81,11 @@ static void computeStartingPointHighs(Instance& instance,
81
81
  // create artificial bounds for free variables: false by default
82
82
  assert(!settings.phase1boundfreevars);
83
83
  if (settings.phase1boundfreevars) {
84
- for (HighsInt i=0; i<instance.num_var; i++) {
85
- if (isfreevar(instance, i)) {
86
- lp.col_lower_[i] = -1E5;
87
- lp.col_upper_[i] = 1E5;
88
- }
84
+ for (HighsInt i = 0; i < instance.num_var; i++) {
85
+ if (isfreevar(instance, i)) {
86
+ lp.col_lower_[i] = -1E5;
87
+ lp.col_upper_[i] = 1E5;
88
+ }
89
89
  }
90
90
  }
91
91
 
@@ -96,18 +96,18 @@ static void computeStartingPointHighs(Instance& instance,
96
96
  HighsBasis basis;
97
97
  basis.alien = true; // Set true when basis is instantiated
98
98
  for (HighsInt i = 0; i < instance.num_con; i++) {
99
- basis.row_status.push_back(HighsBasisStatus::kNonbasic);
99
+ basis.row_status.push_back(HighsBasisStatus::kNonbasic);
100
100
  }
101
101
 
102
102
  for (HighsInt i = 0; i < instance.num_var; i++) {
103
- // make free variables basic
104
- if (instance.var_lo[i] == -kHighsInf &&
105
- instance.var_up[i] == kHighsInf) {
106
- // free variable
107
- basis.col_status.push_back(HighsBasisStatus::kBasic);
108
- } else {
109
- basis.col_status.push_back(HighsBasisStatus::kNonbasic);
110
- }
103
+ // make free variables basic
104
+ if (instance.var_lo[i] == -kHighsInf &&
105
+ instance.var_up[i] == kHighsInf) {
106
+ // free variable
107
+ basis.col_status.push_back(HighsBasisStatus::kBasic);
108
+ } else {
109
+ basis.col_status.push_back(HighsBasisStatus::kNonbasic);
110
+ }
111
111
  }
112
112
 
113
113
  highs.setBasis(basis);
@@ -116,19 +116,37 @@ static void computeStartingPointHighs(Instance& instance,
116
116
  }
117
117
 
118
118
  HighsStatus status = highs.run();
119
- if (status != HighsStatus::kOk) {
119
+ if (status == HighsStatus::kError) {
120
120
  modelstatus = QpModelStatus::kError;
121
121
  return;
122
122
  }
123
123
 
124
- stats.phase1_iterations = highs.getInfo().simplex_iteration_count;
125
-
126
124
  HighsModelStatus phase1stat = highs.getModelStatus();
127
- if (phase1stat == HighsModelStatus::kInfeasible) {
128
- modelstatus = QpModelStatus::kInfeasible;
129
- return;
125
+ switch (phase1stat) {
126
+ case HighsModelStatus::kOptimal:
127
+ modelstatus = QpModelStatus::kNotset;
128
+ break;
129
+ case HighsModelStatus::kInfeasible:
130
+ modelstatus = QpModelStatus::kInfeasible;
131
+ break;
132
+ case HighsModelStatus::kTimeLimit:
133
+ modelstatus = QpModelStatus::kTimeLimit;
134
+ break;
135
+ case HighsModelStatus::kInterrupt:
136
+ modelstatus = QpModelStatus::kInterrupt;
137
+ break;
138
+ default:
139
+ modelstatus = QpModelStatus::kError;
130
140
  }
131
141
 
142
+ stats.phase1_iterations = highs.getInfo().simplex_iteration_count;
143
+
144
+ if (modelstatus != QpModelStatus::kNotset) return;
145
+
146
+ // Should only get here if feasibility problem is solved to
147
+ // optimality - hence there is a feasible basis
148
+ assert(phase1stat == HighsModelStatus::kOptimal);
149
+
132
150
  use_basis = highs.getBasis();
133
151
  use_solution = highs.getSolution();
134
152
  }
@@ -155,14 +173,16 @@ static void computeStartingPointHighs(Instance& instance,
155
173
  num_small_ra++;
156
174
  }
157
175
  }
158
- if (debug_report && num_small_x0+num_small_ra)
159
- printf("feasibility_highs has %d small col values and %d small row values\n",
160
- int(num_small_x0), int(num_small_ra));
176
+ if (debug_report && num_small_x0 + num_small_ra)
177
+ printf(
178
+ "feasibility_highs has %d small col values and %d small row values\n",
179
+ int(num_small_x0), int(num_small_ra));
161
180
  std::vector<HighsInt> initial_active;
162
181
  std::vector<HighsInt> initial_inactive;
163
182
  std::vector<BasisStatus> initial_status;
164
183
 
165
- const HighsInt num_highs_basis_status = HighsInt(HighsBasisStatus::kNonbasic)+1;
184
+ const HighsInt num_highs_basis_status =
185
+ HighsInt(HighsBasisStatus::kNonbasic) + 1;
166
186
  std::vector<HighsInt> debug_row_status_count;
167
187
  debug_row_status_count.assign(num_highs_basis_status, 0);
168
188
  for (HighsInt i = 0; i < HighsInt(use_basis.row_status.size()); i++) {
@@ -178,7 +198,7 @@ static void computeStartingPointHighs(Instance& instance,
178
198
  // Shouldn't happen, since free rows are basic in a logical
179
199
  // basis and remain basic, or are removed by presolve and
180
200
  // restored as basic in postsolve
181
- assert(111==222);
201
+ assert(111 == 222);
182
202
  // That said, a free row that is nonbasic in the Highs basis
183
203
  // must be counted as inactive in the QP basis for accounting
184
204
  // purposes
@@ -212,7 +232,7 @@ static void computeStartingPointHighs(Instance& instance,
212
232
  initial_active.push_back(instance.num_con + i);
213
233
  initial_status.push_back(BasisStatus::kActiveAtLower);
214
234
  }
215
-
235
+
216
236
  } else if (status == HighsBasisStatus::kUpper) {
217
237
  if (isfreevar(instance, i)) {
218
238
  initial_inactive.push_back(instance.num_con + i);
@@ -220,7 +240,7 @@ static void computeStartingPointHighs(Instance& instance,
220
240
  initial_active.push_back(instance.num_con + i);
221
241
  initial_status.push_back(BasisStatus::kActiveAtUpper);
222
242
  }
223
-
243
+
224
244
  } else if (status == HighsBasisStatus::kZero) {
225
245
  initial_inactive.push_back(instance.num_con + i);
226
246
  } else if (status != HighsBasisStatus::kBasic) {
@@ -233,29 +253,33 @@ static void computeStartingPointHighs(Instance& instance,
233
253
 
234
254
  if (debug_report) {
235
255
  printf("QP solver initial basis: (Lo / Bs / Up / Ze / Nb) for cols (");
236
- for (HighsInt k = 0; k < num_highs_basis_status; k++)
237
- printf("%s%d", k==0 ? "" : " / ", int(debug_col_status_count[k]));
256
+ for (HighsInt k = 0; k < num_highs_basis_status; k++)
257
+ printf("%s%d", k == 0 ? "" : " / ", int(debug_col_status_count[k]));
238
258
  printf(") and rows (");
239
- for (HighsInt k = 0; k < num_highs_basis_status; k++)
240
- printf("%s%d", k==0 ? "" : " / ", int(debug_row_status_count[k]));
259
+ for (HighsInt k = 0; k < num_highs_basis_status; k++)
260
+ printf("%s%d", k == 0 ? "" : " / ", int(debug_row_status_count[k]));
241
261
  printf(")\n");
242
262
  }
243
263
 
244
- assert((HighsInt)(initial_active.size() + initial_inactive.size()) ==
245
- instance.num_var);
264
+ // This used to be an assert
265
+ if ((HighsInt)(initial_active.size() + initial_inactive.size()) !=
266
+ instance.num_var) {
267
+ modelstatus = QpModelStatus::kError;
268
+ return;
269
+ }
246
270
 
247
271
  if (!have_starting_point) {
248
272
  // When starting from a feasible basis, there will generally be
249
273
  // inactive variables in the basis that aren't free
250
274
  for (HighsInt ia : initial_inactive) {
251
275
  if (ia < instance.num_con) {
252
- // printf("free row %d\n", (int)ia);
253
- assert(instance.con_lo[ia] == -kHighsInf);
254
- assert(instance.con_up[ia] == kHighsInf);
276
+ // printf("free row %d\n", (int)ia);
277
+ assert(instance.con_lo[ia] == -kHighsInf);
278
+ assert(instance.con_up[ia] == kHighsInf);
255
279
  } else {
256
- // printf("free col %d\n", (int)ia);
257
- assert(instance.var_lo[ia - instance.num_con] == -kHighsInf);
258
- assert(instance.var_up[ia - instance.num_con] == kHighsInf);
280
+ // printf("free col %d\n", (int)ia);
281
+ assert(instance.var_lo[ia - instance.num_con] == -kHighsInf);
282
+ assert(instance.var_up[ia - instance.num_con] == kHighsInf);
259
283
  }
260
284
  }
261
285
  }
@@ -1,8 +1,8 @@
1
1
  #ifndef __SRC_LIB_GRADIENT_HPP__
2
2
  #define __SRC_LIB_GRADIENT_HPP__
3
3
 
4
- #include "runtime.hpp"
5
4
  #include "qpvector.hpp"
5
+ #include "runtime.hpp"
6
6
 
7
7
  class Gradient {
8
8
  Runtime& runtime;
@@ -12,7 +12,7 @@ struct SumNum {
12
12
  };
13
13
 
14
14
  struct Instance {
15
- HighsInt sense = 1; // Minimization
15
+ HighsInt sense = 1; // Minimization
16
16
  HighsInt num_var = 0;
17
17
  HighsInt num_con = 0;
18
18
  double offset = 0;
@@ -6,8 +6,8 @@
6
6
  class Pricing {
7
7
  public:
8
8
  virtual HighsInt price(const QpVector& x, const QpVector& gradient) = 0;
9
- virtual void update_weights(const QpVector& aq, const QpVector& ep, HighsInt p,
10
- HighsInt q) = 0;
9
+ virtual void update_weights(const QpVector& aq, const QpVector& ep,
10
+ HighsInt p, HighsInt q) = 0;
11
11
  virtual void recompute() = 0;
12
12
  virtual ~Pricing() {}
13
13
  };
@@ -5,7 +5,7 @@
5
5
  enum class QpSolverStatus { OK, NOTPOSITIVDEFINITE, DEGENERATE };
6
6
 
7
7
  enum class QpModelStatus {
8
- kNotset, // 0
8
+ kNotset, // 0
9
9
  kUndetermined,
10
10
  kOptimal,
11
11
  kUnbounded,
@@ -13,6 +13,7 @@ enum class QpModelStatus {
13
13
  kIterationLimit,
14
14
  kTimeLimit,
15
15
  kLargeNullspace,
16
+ kInterrupt,
16
17
  kError
17
18
  };
18
19
 
@@ -23,5 +24,4 @@ enum class BasisStatus {
23
24
  kInactiveInBasis
24
25
  };
25
26
 
26
-
27
27
  #endif
@@ -10,11 +10,11 @@
10
10
  struct Quass {
11
11
  Quass(Runtime& rt);
12
12
 
13
- void solve(const QpVector& x0, const QpVector& ra, Basis& b0, HighsTimer& timer);
13
+ void solve(const QpVector& x0, const QpVector& ra, Basis& b0,
14
+ HighsTimer& timer);
14
15
 
15
16
  private:
16
17
  Runtime& runtime;
17
-
18
18
  };
19
19
 
20
20
  #endif
@@ -1,11 +1,11 @@
1
1
  #ifndef __SRC_LIB_RUNTIME_HPP__
2
2
  #define __SRC_LIB_RUNTIME_HPP__
3
3
 
4
- #include "util/HighsTimer.h"
5
4
  #include "instance.hpp"
5
+ #include "qpsolver/qpconst.hpp"
6
6
  #include "settings.hpp"
7
7
  #include "statistics.hpp"
8
- #include "qpsolver/qpconst.hpp"
8
+ #include "util/HighsTimer.h"
9
9
 
10
10
  struct Runtime {
11
11
  Instance instance;
@@ -18,14 +18,26 @@ struct Settings {
18
18
 
19
19
  PricingStrategy pricing = PricingStrategy::Devex;
20
20
 
21
- double pnorm_zero_threshold = 1e-11; // if ||p|| < this threshold, p is determined to not be an improving search direction
22
- double improvement_zero_threshold = 1e-4; // if p^t gradient < this threshold, p is determined to not be an improving search direction
23
- double d_zero_threshold = 1e-12; // minimal value for pivot, will declare degeneracy if no larger pivot is found
24
- double lambda_zero_threshold = 1e-9; // used for pricing / optimality checking
25
- double pQp_zero_threshold = 1e-7; // if p'Qp < this, p is determined to not have curvature, a simplex-like iteration is performed.
21
+ double pnorm_zero_threshold =
22
+ 1e-11; // if ||p|| < this threshold, p is determined to not be an
23
+ // improving search direction
24
+ double improvement_zero_threshold =
25
+ 1e-4; // if p^t gradient < this threshold, p is determined to not be an
26
+ // improving search direction
27
+ double d_zero_threshold = 1e-12; // minimal value for pivot, will declare
28
+ // degeneracy if no larger pivot is found
29
+ double lambda_zero_threshold =
30
+ 1e-9; // used for pricing / optimality checking
31
+ double pQp_zero_threshold =
32
+ 1e-7; // if p'Qp < this, p is determined to not have curvature, a
33
+ // simplex-like iteration is performed.
26
34
 
27
- bool hessianregularization = false; // if true, a small multiple of the identity matrix will be added to the Hessian
28
- double hessianregularizationfactor = 1e-7; // multiple of identity matrix added to hessian in case of regularization
35
+ bool hessianregularization =
36
+ false; // if true, a small multiple of the identity matrix will be added
37
+ // to the Hessian
38
+ double hessianregularizationfactor =
39
+ 1e-7; // multiple of identity matrix added to hessian in case of
40
+ // regularization
29
41
 
30
42
  Phase1Strategy phase1strategy = Phase1Strategy::HIGHS;
31
43
  bool phase1movefreevarsbasic = false;
@@ -37,7 +49,7 @@ struct Settings {
37
49
  Eventhandler<HighsInt&> nullspace_limit_log;
38
50
 
39
51
  HighsInt nullspace_limit = 4000;
40
-
52
+
41
53
  HighsInt reinvertfrequency = 1000;
42
54
  HighsInt gradientrecomputefrequency = 100;
43
55
  HighsInt reducedgradientrecomputefrequency =
@@ -57,22 +57,21 @@ class SteepestEdgePricing : public Pricing {
57
57
  basis(bas),
58
58
  redcosts(rc),
59
59
  weights(std::vector<double>(rt.instance.num_var, 1.0)) {
60
- compute_exact_weights();
61
- };
60
+ compute_exact_weights();
61
+ };
62
62
 
63
63
  HighsInt price(const QpVector& x, const QpVector& gradient) {
64
64
  HighsInt minidx = chooseconstrainttodrop(redcosts.getReducedCosts());
65
65
  return minidx;
66
66
  }
67
67
 
68
-
69
68
  double compute_exact_weight(HighsInt i) {
70
69
  QpVector y_i = basis.btran(QpVector::unit(runtime.instance.num_var, i));
71
70
  return y_i.dot(y_i);
72
71
  }
73
72
 
74
73
  void compute_exact_weights() {
75
- for (int i=0; i<runtime.instance.num_var; i++) {
74
+ for (int i = 0; i < runtime.instance.num_var; i++) {
76
75
  weights[i] = compute_exact_weight(i);
77
76
  }
78
77
  }
@@ -80,24 +79,24 @@ class SteepestEdgePricing : public Pricing {
80
79
  bool check_weight(HighsInt i) {
81
80
  double weight_is = weights[i];
82
81
  double weight_comp = compute_exact_weight(i);
83
- if(fabs(weight_comp - weight_is) > 1e-2) {
84
- //printf("weights[%d] = %lf, should be %lf\n", i, weight_is, weight_comp);
82
+ if (fabs(weight_comp - weight_is) > 1e-2) {
83
+ // printf("weights[%d] = %lf, should be %lf\n", i, weight_is,
84
+ // weight_comp);
85
85
  return false;
86
86
  }
87
87
  return true;
88
88
  }
89
89
 
90
90
  bool check_weights() {
91
-
92
91
  std::vector<int> correct_weights;
93
92
  std::vector<int> incorrect_weights;
94
- for (int i=0; i<runtime.instance.num_var; i++) {
93
+ for (int i = 0; i < runtime.instance.num_var; i++) {
95
94
  bool correct = check_weight(i);
96
- if (correct) {
97
- correct_weights.push_back(i);
98
- } else {
99
- incorrect_weights.push_back(i);
100
- }
95
+ if (correct) {
96
+ correct_weights.push_back(i);
97
+ } else {
98
+ incorrect_weights.push_back(i);
99
+ }
101
100
  }
102
101
 
103
102
  printf("correct weights: ");
@@ -113,53 +112,53 @@ class SteepestEdgePricing : public Pricing {
113
112
  printf("\n");
114
113
 
115
114
  return incorrect_weights.size() == 0;
116
- }
117
-
118
- void recompute() {
119
- compute_exact_weights();
120
115
  }
121
116
 
117
+ void recompute() { compute_exact_weights(); }
118
+
122
119
  void update_weights(const QpVector& aq, const QpVector& ep, HighsInt p,
123
120
  HighsInt q) {
124
121
  HighsInt rowindex_p = basis.getindexinfactor()[p];
125
- //printf("Update weights, p = %d, rowindex = %d, q = %d\n", p, rowindex_p, q);
122
+ // printf("Update weights, p = %d, rowindex = %d, q = %d\n", p, rowindex_p,
123
+ // q);
126
124
 
127
- //if (!check_weights()) {
128
- // printf("weight check failed\n");
129
- // exit(1);
130
- //}
125
+ // if (!check_weights()) {
126
+ // printf("weight check failed\n");
127
+ // exit(1);
128
+ // }
131
129
 
132
130
  QpVector delta = basis.ftran(aq);
133
131
 
134
- //double old_weight_p_updated = weights[rowindex_p];
135
- // exact weight coming in needs to come in before update.
132
+ // double old_weight_p_updated = weights[rowindex_p];
133
+ // exact weight coming in needs to come in before update.
136
134
  double old_weight_p_computed = ep.dot(ep);
137
135
 
138
- //if (fabs(old_weight_p_computed - old_weight_p_updated) >= 1e-2) {
139
- // printf("old weight[p] discrepancy: updated = %lf, computed=%lf\n", old_weight_p_updated, old_weight_p_computed);
140
- //}
136
+ // if (fabs(old_weight_p_computed - old_weight_p_updated) >= 1e-2) {
137
+ // printf("old weight[p] discrepancy: updated = %lf, computed=%lf\n",
138
+ // old_weight_p_updated, old_weight_p_computed);
139
+ // }
141
140
 
142
141
  double weight_p = old_weight_p_computed;
143
142
 
144
-
145
143
  double t_p = aq.value[rowindex_p];
146
144
  for (HighsInt i = 0; i < runtime.instance.num_var; i++) {
147
145
  if (i != rowindex_p) {
148
146
  double t_i = aq.value[i];
149
- weights[i] = weights[i]
150
- - 2 * (t_i / t_p) * delta.value[i]
151
- + ((t_i * t_i) / (t_p * t_p)) * weight_p;
152
- //printf("weights[%d] = %lf\n", i, weights[i]);
147
+ weights[i] = weights[i] - 2 * (t_i / t_p) * delta.value[i] +
148
+ ((t_i * t_i) / (t_p * t_p)) * weight_p;
149
+ // printf("weights[%d] = %lf\n", i, weights[i]);
153
150
  }
154
151
  }
155
- //QpVector new_ep = basis.btran(QpVector::unit(runtime.instance.num_var, rowindex_p));
156
- //double computed_weight = new_ep.dot(new_ep);
152
+ // QpVector new_ep = basis.btran(QpVector::unit(runtime.instance.num_var,
153
+ // rowindex_p)); double computed_weight = new_ep.dot(new_ep);
157
154
  double new_weight_p_updated = weight_p / (t_p * t_p);
158
-
159
- //if (fabs(updated_weight - computed_weight) > 1e-4) {
160
- // printf("updated weight %lf vs computed weight %lf. aq[p] = %lf\n", updated_weight, computed_weight, t_p);
161
- // printf("old weight = %lf, aq[p] = %lf, ^2 = %lf, new weight = %lf\n", weight_p, t_p, t_p*t_p, updated_weight);
162
- //}
155
+
156
+ // if (fabs(updated_weight - computed_weight) > 1e-4) {
157
+ // printf("updated weight %lf vs computed weight %lf. aq[p] = %lf\n",
158
+ // updated_weight, computed_weight, t_p); printf("old weight = %lf, aq[p]
159
+ // = %lf, ^2 = %lf, new weight = %lf\n", weight_p, t_p, t_p*t_p,
160
+ // updated_weight);
161
+ // }
163
162
  weights[rowindex_p] = new_weight_p_updated;
164
163
  }
165
164
  };