casadi 3.6.5__cp39-none-macosx_11_0_arm64.whl → 3.6.7__cp39-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 (649) hide show
  1. casadi/_casadi.so +0 -0
  2. casadi/casadi-cli +0 -0
  3. casadi/casadi.py +739 -308
  4. casadi/cbc +0 -0
  5. casadi/clp +0 -0
  6. casadi/cmake/casadi-config-version.cmake +1 -1
  7. casadi/cmake/casadi-targets.cmake +10 -6
  8. casadi/cmake/highs/highs-config.cmake +6 -13
  9. casadi/cmake/highs/highs-targets-release.cmake +13 -13
  10. casadi/cmake/highs/highs-targets.cmake +25 -22
  11. casadi/cmake/osqp/osqp-targets.cmake +10 -6
  12. casadi/cmake/proxsuite/proxsuiteConfigVersion.cmake +0 -5
  13. casadi/cmake/proxsuite/proxsuiteTargets.cmake +12 -12
  14. casadi/cmake/qdldl/qdldl-targets.cmake +10 -6
  15. casadi/cmake/sleqp/sleqp-config-version.cmake +0 -5
  16. casadi/cmake/sleqp/sleqp-targets.cmake +10 -6
  17. casadi/cmake/trlib/trlib-config-release.cmake +1 -1
  18. casadi/cmake/trlib/trlib-config-version.cmake +0 -5
  19. casadi/cmake/trlib/trlib-config.cmake +12 -12
  20. casadi/highs +0 -0
  21. casadi/include/casadi/casadi.i +3 -0
  22. casadi/include/casadi/casadi_c.h +2 -0
  23. casadi/include/casadi/config.h +9 -9
  24. casadi/include/casadi/core/casadi_common.hpp +1 -0
  25. casadi/include/casadi/core/casadi_export.h +1 -0
  26. casadi/include/casadi/core/casadi_misc.hpp +52 -0
  27. casadi/include/casadi/core/casadi_types.hpp +3 -2
  28. casadi/include/casadi/core/code_generator.hpp +30 -1
  29. casadi/include/casadi/core/global_options.hpp +2 -0
  30. casadi/include/casadi/core/mx.hpp +18 -3
  31. casadi/include/casadi/core/optistack.hpp +23 -0
  32. casadi/include/casadi/core/runtime/casadi_nlp.hpp +19 -4
  33. casadi/include/casadi/core/runtime/casadi_ocp_block.hpp +55 -0
  34. casadi/include/casadi/core/runtime/casadi_oracle.hpp +44 -0
  35. casadi/include/casadi/core/runtime/casadi_oracle_callback.hpp +39 -0
  36. casadi/include/casadi/core/runtime/casadi_runtime.hpp +4 -1
  37. casadi/include/casadi/core/runtime/casadi_scaled_copy.hpp +31 -0
  38. casadi/include/casadi/core/serializing_stream.hpp +2 -2
  39. casadi/include/casadi/core/sparsity.hpp +7 -0
  40. casadi/include/casadi/doc.i +1513 -1016
  41. casadi/include/casadi/doc_merged.i +965 -719
  42. casadi/include/casadi/mem.h +1 -0
  43. casadi/include/daqp/api.h +46 -0
  44. casadi/include/daqp/auxiliary.h +29 -0
  45. casadi/include/daqp/bnb.h +32 -0
  46. casadi/include/daqp/codegen.h +18 -0
  47. casadi/include/daqp/constants.h +92 -0
  48. casadi/include/daqp/daqp.h +22 -0
  49. casadi/include/daqp/daqp_prox.h +18 -0
  50. casadi/include/daqp/factorization.h +18 -0
  51. casadi/include/daqp/types.h +161 -0
  52. casadi/include/daqp/utils.h +44 -0
  53. casadi/include/fatrop/auxiliary/Common.hpp +34 -0
  54. casadi/include/fatrop/auxiliary/DynamicLib.hpp +34 -0
  55. casadi/include/fatrop/auxiliary/FatropOptions.hpp +68 -0
  56. casadi/include/fatrop/auxiliary/FatropVector.hpp +143 -0
  57. casadi/include/fatrop/auxiliary/LinearAlgebra.hpp +88 -0
  58. casadi/include/fatrop/auxiliary/VectorUtils.hpp +54 -0
  59. casadi/include/fatrop/blasfeo_wrapper/LinearAlgebraBlasfeo.hpp +493 -0
  60. casadi/include/fatrop/fatrop.hpp +39 -0
  61. casadi/include/fatrop/function_evaluation/CasadiCodegen.hpp +104 -0
  62. casadi/include/fatrop/function_evaluation/FunctionEvaluation.hpp +60 -0
  63. casadi/include/fatrop/json/json.h +946 -0
  64. casadi/include/fatrop/ocp/CasadiCApiUserdataWrap.hpp +87 -0
  65. casadi/include/fatrop/ocp/DuInfEvaluator.hpp +38 -0
  66. casadi/include/fatrop/ocp/FatropOCP.hpp +161 -0
  67. casadi/include/fatrop/ocp/FatropOCPBuilder.hpp +52 -0
  68. casadi/include/fatrop/ocp/FatropOCPResto.hpp +299 -0
  69. casadi/include/fatrop/ocp/OCP.hpp +82 -0
  70. casadi/include/fatrop/ocp/OCPAbstract.hpp +254 -0
  71. casadi/include/fatrop/ocp/OCPAdapter.hpp +197 -0
  72. casadi/include/fatrop/ocp/OCPCInterface.h +289 -0
  73. casadi/include/fatrop/ocp/OCPDims.hpp +60 -0
  74. casadi/include/fatrop/ocp/OCPInitializer.hpp +41 -0
  75. casadi/include/fatrop/ocp/OCPKKT.hpp +69 -0
  76. casadi/include/fatrop/ocp/OCPLSRiccati.hpp +198 -0
  77. casadi/include/fatrop/ocp/OCPLSScaler.hpp +66 -0
  78. casadi/include/fatrop/ocp/OCPLinearSolver.hpp +75 -0
  79. casadi/include/fatrop/ocp/OCPNoScaling.hpp +42 -0
  80. casadi/include/fatrop/ocp/OCPScalingMethod.hpp +42 -0
  81. casadi/include/fatrop/ocp/StageOCP.hpp +592 -0
  82. casadi/include/fatrop/ocp/StageOCPApplication.hpp +242 -0
  83. casadi/include/fatrop/ocp/StageOCPExpressions.hpp +182 -0
  84. casadi/include/fatrop/ocp/UStageEvalAbstract.hpp +168 -0
  85. casadi/include/fatrop/ocp/UStageOCPImpl.hpp +152 -0
  86. casadi/include/fatrop/quasi_newton/bfgs.hpp +159 -0
  87. casadi/include/fatrop/solver/AlgBuilder.hpp +76 -0
  88. casadi/include/fatrop/solver/AlgStrategy.hpp +33 -0
  89. casadi/include/fatrop/solver/FatropAlg.hpp +121 -0
  90. casadi/include/fatrop/solver/FatropData.hpp +188 -0
  91. casadi/include/fatrop/solver/FatropOptions.hpp +95 -0
  92. casadi/include/fatrop/solver/FatropPrinter.hpp +65 -0
  93. casadi/include/fatrop/solver/FatropStats.hpp +63 -0
  94. casadi/include/fatrop/solver/Filter.hpp +54 -0
  95. casadi/include/fatrop/solver/IterationData.hpp +56 -0
  96. casadi/include/fatrop/solver/LineSearch.hpp +86 -0
  97. casadi/include/fatrop/solver/NLPL1.hpp +263 -0
  98. casadi/include/fatrop/templates/NLPAlg.hpp +104 -0
  99. casadi/include/highs/HConfig.h +8 -7
  100. casadi/include/highs/Highs.h +93 -23
  101. casadi/include/highs/filereaderlp/def.hpp +19 -0
  102. casadi/include/highs/interfaces/highs_c_api.h +200 -24
  103. casadi/include/highs/io/Filereader.h +1 -1
  104. casadi/include/highs/io/FilereaderEms.h +1 -1
  105. casadi/include/highs/io/FilereaderLp.h +1 -1
  106. casadi/include/highs/io/FilereaderMps.h +1 -1
  107. casadi/include/highs/io/HMPSIO.h +1 -1
  108. casadi/include/highs/io/HMpsFF.h +5 -3
  109. casadi/include/highs/io/HighsIO.h +18 -8
  110. casadi/include/highs/io/LoadOptions.h +1 -1
  111. casadi/include/highs/ipm/IpxSolution.h +35 -0
  112. casadi/include/highs/ipm/IpxWrapper.h +1 -1
  113. casadi/include/highs/ipm/basiclu/basiclu.h +161 -0
  114. casadi/include/highs/ipm/basiclu/basiclu_factorize.h +247 -0
  115. casadi/include/highs/ipm/basiclu/basiclu_get_factors.h +108 -0
  116. casadi/include/highs/ipm/basiclu/basiclu_initialize.h +119 -0
  117. casadi/include/highs/ipm/basiclu/basiclu_obj_factorize.h +34 -0
  118. casadi/include/highs/ipm/basiclu/basiclu_obj_free.h +19 -0
  119. casadi/include/highs/ipm/basiclu/basiclu_obj_get_factors.h +34 -0
  120. casadi/include/highs/ipm/basiclu/basiclu_obj_initialize.h +46 -0
  121. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_dense.h +29 -0
  122. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_for_update.h +42 -0
  123. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_sparse.h +32 -0
  124. casadi/include/highs/ipm/basiclu/basiclu_obj_update.h +31 -0
  125. casadi/include/highs/ipm/basiclu/basiclu_object.h +30 -0
  126. casadi/include/highs/ipm/basiclu/basiclu_solve_dense.h +75 -0
  127. casadi/include/highs/ipm/basiclu/basiclu_solve_for_update.h +169 -0
  128. casadi/include/highs/ipm/basiclu/basiclu_solve_sparse.h +112 -0
  129. casadi/include/highs/ipm/basiclu/basiclu_update.h +125 -0
  130. casadi/include/highs/ipm/basiclu/lu_def.h +39 -0
  131. casadi/include/highs/ipm/basiclu/lu_file.h +21 -0
  132. casadi/include/highs/ipm/basiclu/lu_internal.h +220 -0
  133. casadi/include/highs/ipm/basiclu/lu_list.h +168 -0
  134. casadi/include/highs/ipm/ipx/basiclu_kernel.h +20 -0
  135. casadi/include/highs/ipm/ipx/basiclu_wrapper.h +47 -0
  136. casadi/include/highs/ipm/ipx/basis.h +351 -0
  137. casadi/include/highs/ipm/ipx/conjugate_residuals.h +74 -0
  138. casadi/include/highs/ipm/ipx/control.h +163 -0
  139. casadi/include/highs/ipm/ipx/crossover.h +157 -0
  140. casadi/include/highs/ipm/ipx/diagonal_precond.h +45 -0
  141. casadi/include/highs/ipm/ipx/forrest_tomlin.h +102 -0
  142. casadi/include/highs/ipm/ipx/guess_basis.h +21 -0
  143. casadi/include/highs/ipm/ipx/indexed_vector.h +113 -0
  144. casadi/include/highs/ipm/ipx/info.h +27 -0
  145. casadi/include/highs/ipm/ipx/ipm.h +94 -0
  146. casadi/include/highs/ipm/ipx/ipx_c.h +47 -0
  147. casadi/include/highs/ipm/ipx/ipx_config.h +9 -0
  148. casadi/include/highs/ipm/ipx/ipx_info.h +111 -0
  149. casadi/include/highs/ipm/ipx/ipx_internal.h +88 -0
  150. casadi/include/highs/ipm/ipx/ipx_parameters.h +75 -0
  151. casadi/include/highs/ipm/ipx/ipx_status.h +57 -0
  152. casadi/include/highs/ipm/ipx/iterate.h +328 -0
  153. casadi/include/highs/ipm/ipx/kkt_solver.h +70 -0
  154. casadi/include/highs/ipm/ipx/kkt_solver_basis.h +66 -0
  155. casadi/include/highs/ipm/ipx/kkt_solver_diag.h +48 -0
  156. casadi/include/highs/ipm/ipx/linear_operator.h +26 -0
  157. casadi/include/highs/ipm/ipx/lp_solver.h +201 -0
  158. casadi/include/highs/ipm/ipx/lu_factorization.h +79 -0
  159. casadi/include/highs/ipm/ipx/lu_update.h +129 -0
  160. casadi/include/highs/ipm/ipx/maxvolume.h +54 -0
  161. casadi/include/highs/ipm/ipx/model.h +409 -0
  162. casadi/include/highs/ipm/ipx/multistream.h +52 -0
  163. casadi/include/highs/ipm/ipx/normal_matrix.h +44 -0
  164. casadi/include/highs/ipm/ipx/power_method.h +44 -0
  165. casadi/include/highs/ipm/ipx/sparse_matrix.h +195 -0
  166. casadi/include/highs/ipm/ipx/sparse_utils.h +58 -0
  167. casadi/include/highs/ipm/ipx/splitted_normal_matrix.h +63 -0
  168. casadi/include/highs/ipm/ipx/starting_basis.h +39 -0
  169. casadi/include/highs/ipm/ipx/symbolic_invert.h +29 -0
  170. casadi/include/highs/ipm/ipx/timer.h +24 -0
  171. casadi/include/highs/ipm/ipx/utils.h +39 -0
  172. casadi/include/highs/lp_data/HConst.h +20 -10
  173. casadi/include/highs/lp_data/HStruct.h +23 -1
  174. casadi/include/highs/lp_data/HighsAnalysis.h +1 -1
  175. casadi/include/highs/lp_data/HighsCallback.h +10 -3
  176. casadi/include/highs/lp_data/HighsCallbackStruct.h +31 -5
  177. casadi/include/highs/lp_data/HighsDebug.h +1 -1
  178. casadi/include/highs/lp_data/HighsInfo.h +20 -2
  179. casadi/include/highs/lp_data/HighsInfoDebug.h +1 -1
  180. casadi/include/highs/lp_data/HighsLp.h +17 -1
  181. casadi/include/highs/lp_data/HighsLpSolverObject.h +1 -1
  182. casadi/include/highs/lp_data/HighsLpUtils.h +19 -19
  183. casadi/include/highs/lp_data/HighsModelUtils.h +1 -1
  184. casadi/include/highs/lp_data/HighsOptions.h +237 -10
  185. casadi/include/highs/lp_data/HighsRanging.h +1 -1
  186. casadi/include/highs/lp_data/HighsRuntimeOptions.h +2 -2
  187. casadi/include/highs/lp_data/HighsSolution.h +2 -2
  188. casadi/include/highs/lp_data/HighsSolutionDebug.h +1 -1
  189. casadi/include/highs/lp_data/HighsSolve.h +3 -1
  190. casadi/include/highs/lp_data/HighsStatus.h +1 -1
  191. casadi/include/highs/mip/HighsCliqueTable.h +4 -4
  192. casadi/include/highs/mip/HighsConflictPool.h +1 -1
  193. casadi/include/highs/mip/HighsCutGeneration.h +1 -1
  194. casadi/include/highs/mip/HighsCutPool.h +2 -2
  195. casadi/include/highs/mip/HighsDebugSol.h +22 -29
  196. casadi/include/highs/mip/HighsDomain.h +10 -2
  197. casadi/include/highs/mip/HighsDomainChange.h +1 -1
  198. casadi/include/highs/mip/HighsDynamicRowMatrix.h +5 -3
  199. casadi/include/highs/mip/HighsGFkSolve.h +3 -3
  200. casadi/include/highs/mip/HighsImplications.h +3 -3
  201. casadi/include/highs/mip/HighsLpAggregator.h +1 -1
  202. casadi/include/highs/mip/HighsLpRelaxation.h +6 -1
  203. casadi/include/highs/mip/HighsMipSolver.h +4 -2
  204. casadi/include/highs/mip/HighsMipSolverData.h +47 -4
  205. casadi/include/highs/mip/HighsModkSeparator.h +2 -2
  206. casadi/include/highs/mip/HighsNodeQueue.h +5 -3
  207. casadi/include/highs/mip/HighsObjectiveFunction.h +1 -1
  208. casadi/include/highs/mip/HighsPathSeparator.h +2 -2
  209. casadi/include/highs/mip/HighsPrimalHeuristics.h +1 -1
  210. casadi/include/highs/mip/HighsPseudocost.h +35 -23
  211. casadi/include/highs/mip/HighsRedcostFixing.h +1 -1
  212. casadi/include/highs/mip/HighsSearch.h +2 -1
  213. casadi/include/highs/mip/HighsSeparation.h +1 -1
  214. casadi/include/highs/mip/HighsSeparator.h +1 -1
  215. casadi/include/highs/mip/HighsTableauSeparator.h +1 -1
  216. casadi/include/highs/mip/HighsTransformedLp.h +1 -1
  217. casadi/include/highs/model/HighsHessian.h +5 -0
  218. casadi/include/highs/model/HighsHessianUtils.h +2 -0
  219. casadi/include/highs/model/HighsModel.h +10 -1
  220. casadi/include/highs/parallel/HighsMutex.h +2 -1
  221. casadi/include/highs/parallel/HighsParallel.h +7 -2
  222. casadi/include/highs/parallel/HighsTask.h +1 -2
  223. casadi/include/highs/pdlp/CupdlpWrapper.h +93 -0
  224. casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +41 -0
  225. casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +423 -0
  226. casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +183 -0
  227. casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +19 -0
  228. casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +31 -0
  229. casadi/include/highs/pdlp/cupdlp/cupdlp_scaling_cuda.h +28 -0
  230. casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +98 -0
  231. casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +33 -0
  232. casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +1726 -0
  233. casadi/include/highs/pdqsort/pdqsort.h +532 -0
  234. casadi/include/highs/presolve/HPresolve.h +27 -14
  235. casadi/include/highs/presolve/HPresolveAnalysis.h +1 -1
  236. casadi/include/highs/presolve/HighsPostsolveStack.h +92 -68
  237. casadi/include/highs/presolve/HighsSymmetry.h +6 -5
  238. casadi/include/highs/presolve/ICrash.h +8 -2
  239. casadi/include/highs/presolve/ICrashUtil.h +1 -1
  240. casadi/include/highs/presolve/ICrashX.h +1 -1
  241. casadi/include/highs/presolve/PresolveComponent.h +1 -1
  242. casadi/include/highs/qpsolver/a_asm.hpp +23 -12
  243. casadi/include/highs/qpsolver/a_quass.hpp +8 -1
  244. casadi/include/highs/qpsolver/basis.hpp +150 -0
  245. casadi/include/highs/qpsolver/crashsolution.hpp +12 -0
  246. casadi/include/highs/qpsolver/dantzigpricing.hpp +72 -0
  247. casadi/include/highs/qpsolver/devexpricing.hpp +99 -0
  248. casadi/include/highs/qpsolver/eventhandler.hpp +23 -0
  249. casadi/include/highs/qpsolver/factor.hpp +400 -0
  250. casadi/include/highs/qpsolver/feasibility_bounded.hpp +105 -0
  251. casadi/include/highs/qpsolver/feasibility_highs.hpp +270 -0
  252. casadi/include/highs/qpsolver/gradient.hpp +39 -0
  253. casadi/include/highs/qpsolver/instance.hpp +63 -0
  254. casadi/include/highs/qpsolver/matrix.hpp +335 -0
  255. casadi/include/highs/qpsolver/pricing.hpp +15 -0
  256. casadi/include/highs/qpsolver/qpconst.hpp +27 -0
  257. casadi/include/highs/qpsolver/{vector.hpp → qpvector.hpp} +25 -25
  258. casadi/include/highs/qpsolver/quass.hpp +1 -1
  259. casadi/include/highs/qpsolver/ratiotest.hpp +19 -0
  260. casadi/include/highs/qpsolver/runtime.hpp +38 -0
  261. casadi/include/highs/qpsolver/settings.hpp +57 -0
  262. casadi/include/highs/qpsolver/snippets.hpp +29 -0
  263. casadi/include/highs/qpsolver/statistics.hpp +23 -0
  264. casadi/include/highs/qpsolver/steepestedgepricing.hpp +167 -0
  265. casadi/include/highs/simplex/HApp.h +1 -1
  266. casadi/include/highs/simplex/HEkk.h +52 -18
  267. casadi/include/highs/simplex/HEkkDual.h +1 -1
  268. casadi/include/highs/simplex/HEkkDualRHS.h +6 -7
  269. casadi/include/highs/simplex/HEkkDualRow.h +2 -2
  270. casadi/include/highs/simplex/HEkkPrimal.h +6 -1
  271. casadi/include/highs/simplex/HSimplex.h +1 -3
  272. casadi/include/highs/simplex/HSimplexDebug.h +1 -1
  273. casadi/include/highs/simplex/HSimplexNla.h +1 -1
  274. casadi/include/highs/simplex/HSimplexReport.h +1 -1
  275. casadi/include/highs/simplex/HighsSimplexAnalysis.h +228 -100
  276. casadi/include/highs/simplex/SimplexConst.h +1 -1
  277. casadi/include/highs/simplex/SimplexStruct.h +2 -2
  278. casadi/include/highs/simplex/SimplexTimer.h +1 -1
  279. casadi/include/highs/test/DevKkt.h +1 -1
  280. casadi/include/highs/test/KktCh2.h +1 -1
  281. casadi/include/highs/util/FactorTimer.h +1 -1
  282. casadi/include/highs/util/HFactor.h +35 -6
  283. casadi/include/highs/util/HFactorConst.h +1 -1
  284. casadi/include/highs/util/HFactorDebug.h +1 -1
  285. casadi/include/highs/util/HSet.h +1 -1
  286. casadi/include/highs/util/HVector.h +1 -1
  287. casadi/include/highs/util/HVectorBase.h +1 -1
  288. casadi/include/highs/util/HighsCDouble.h +3 -3
  289. casadi/include/highs/util/HighsComponent.h +1 -1
  290. casadi/include/highs/util/HighsDataStack.h +4 -4
  291. casadi/include/highs/util/HighsDisjointSets.h +1 -1
  292. casadi/include/highs/util/HighsHash.h +28 -21
  293. casadi/include/highs/util/HighsHashTree.h +63 -63
  294. casadi/include/highs/util/HighsInt.h +1 -1
  295. casadi/include/highs/util/HighsIntegers.h +8 -9
  296. casadi/include/highs/util/HighsLinearSumBounds.h +1 -1
  297. casadi/include/highs/util/HighsMatrixPic.h +1 -1
  298. casadi/include/highs/util/HighsMatrixSlice.h +9 -6
  299. casadi/include/highs/util/HighsMatrixUtils.h +1 -1
  300. casadi/include/highs/util/HighsMemoryAllocation.h +55 -0
  301. casadi/include/highs/util/HighsRandom.h +27 -15
  302. casadi/include/highs/util/HighsRbTree.h +2 -2
  303. casadi/include/highs/util/HighsSort.h +7 -7
  304. casadi/include/highs/util/HighsSparseMatrix.h +5 -2
  305. casadi/include/highs/util/HighsSparseVectorSum.h +2 -2
  306. casadi/include/highs/util/HighsSplay.h +1 -1
  307. casadi/include/highs/util/HighsTimer.h +18 -9
  308. casadi/include/highs/util/HighsUtils.h +15 -8
  309. casadi/include/highs/util/stringutil.h +9 -4
  310. casadi/include/highs/zstr/strict_fstream.hpp +237 -0
  311. casadi/include/highs/zstr/zstr.hpp +472 -0
  312. casadi/include/highs_export.h +43 -0
  313. casadi/include/licenses/daqp-external/LICENSE +21 -0
  314. casadi/include/licenses/{alpaqa-external/LICENSE → fatrop-external/LICENSE.txt} +2 -2
  315. casadi/include/licenses/fatrop-external/external/blasfeo/LICENSE.txt +26 -0
  316. casadi/include/licenses/fatrop-external/external/pybind11/LICENSE +29 -0
  317. casadi/include/licenses/fatrop-external/misc/license_header.txt +17 -0
  318. casadi/include/licenses/highs-external/{LICENSE → LICENSE.txt} +1 -1
  319. casadi/include/osqp/constants.h +2 -3
  320. casadi/include/osqp/version.h +9 -0
  321. casadi/include/sleqp/defs.h +4 -4
  322. casadi/include/sleqp/export.h +1 -0
  323. casadi/lib/cmake/tinyxml2/tinyxml2-config-version.cmake +0 -5
  324. casadi/lib/cmake/tinyxml2/tinyxml2-static-targets.cmake +10 -6
  325. casadi/lib/libtinyxml2.a +0 -0
  326. casadi/lib/pkgconfig/tinyxml2.pc +1 -1
  327. casadi/libCbc.3.10.11.dylib +0 -0
  328. casadi/libCbc.3.dylib +0 -0
  329. casadi/libCbc.dylib +0 -0
  330. casadi/libCbc.la +2 -2
  331. casadi/libCbcSolver.3.10.11.dylib +0 -0
  332. casadi/libCbcSolver.3.dylib +0 -0
  333. casadi/libCbcSolver.dylib +0 -0
  334. casadi/libCbcSolver.la +2 -2
  335. casadi/libCgl.1.10.8.dylib +0 -0
  336. casadi/libCgl.1.dylib +0 -0
  337. casadi/libCgl.dylib +0 -0
  338. casadi/libCgl.la +2 -2
  339. casadi/libClp.1.14.9.dylib +0 -0
  340. casadi/libClp.1.dylib +0 -0
  341. casadi/libClp.dylib +0 -0
  342. casadi/libClp.la +2 -2
  343. casadi/libClpSolver.1.14.9.dylib +0 -0
  344. casadi/libClpSolver.1.dylib +0 -0
  345. casadi/libClpSolver.dylib +0 -0
  346. casadi/libClpSolver.la +2 -2
  347. casadi/libCoinUtils.3.11.10.dylib +0 -0
  348. casadi/libCoinUtils.3.dylib +0 -0
  349. casadi/libCoinUtils.dylib +0 -0
  350. casadi/libCoinUtils.la +1 -1
  351. casadi/libOsi.1.13.9.dylib +0 -0
  352. casadi/libOsi.1.dylib +0 -0
  353. casadi/libOsi.dylib +0 -0
  354. casadi/libOsi.la +2 -2
  355. casadi/libOsiCbc.3.10.11.dylib +0 -0
  356. casadi/libOsiCbc.3.dylib +0 -0
  357. casadi/libOsiCbc.dylib +0 -0
  358. casadi/libOsiCbc.la +2 -2
  359. casadi/libOsiClp.1.14.9.dylib +0 -0
  360. casadi/libOsiClp.1.dylib +0 -0
  361. casadi/libOsiClp.dylib +0 -0
  362. casadi/libOsiClp.la +2 -2
  363. casadi/libOsiCommonTests.1.13.9.dylib +0 -0
  364. casadi/libOsiCommonTests.1.dylib +0 -0
  365. casadi/libOsiCommonTests.dylib +0 -0
  366. casadi/libOsiCommonTests.la +2 -2
  367. casadi/libblasfeo.dylib +0 -0
  368. casadi/libbonmin.4.8.9.dylib +0 -0
  369. casadi/libbonmin.4.dylib +0 -0
  370. casadi/libbonmin.dylib +0 -0
  371. casadi/libbonmin.la +2 -2
  372. casadi/libc++.1.0.dylib +0 -0
  373. casadi/libcasadi.3.7.dylib +0 -0
  374. casadi/libcasadi.dylib +0 -0
  375. casadi/libcasadi_conic_cbc.3.7.dylib +0 -0
  376. casadi/libcasadi_conic_cbc.dylib +0 -0
  377. casadi/libcasadi_conic_clp.3.7.dylib +0 -0
  378. casadi/libcasadi_conic_clp.dylib +0 -0
  379. casadi/libcasadi_conic_cplex.3.7.dylib +0 -0
  380. casadi/libcasadi_conic_cplex.dylib +0 -0
  381. casadi/libcasadi_conic_daqp.3.7.dylib +0 -0
  382. casadi/libcasadi_conic_daqp.dylib +0 -0
  383. casadi/libcasadi_conic_fatrop.3.7.dylib +0 -0
  384. casadi/libcasadi_conic_fatrop.dylib +0 -0
  385. casadi/libcasadi_conic_gurobi.3.7.dylib +0 -0
  386. casadi/libcasadi_conic_gurobi.dylib +0 -0
  387. casadi/libcasadi_conic_highs.3.7.dylib +0 -0
  388. casadi/libcasadi_conic_highs.dylib +0 -0
  389. casadi/libcasadi_conic_ipqp.3.7.dylib +0 -0
  390. casadi/libcasadi_conic_ipqp.dylib +0 -0
  391. casadi/libcasadi_conic_nlpsol.3.7.dylib +0 -0
  392. casadi/libcasadi_conic_nlpsol.dylib +0 -0
  393. casadi/libcasadi_conic_osqp.3.7.dylib +0 -0
  394. casadi/libcasadi_conic_osqp.dylib +0 -0
  395. casadi/libcasadi_conic_proxqp.3.7.dylib +0 -0
  396. casadi/libcasadi_conic_proxqp.dylib +0 -0
  397. casadi/libcasadi_conic_qpoases.3.7.dylib +0 -0
  398. casadi/libcasadi_conic_qpoases.dylib +0 -0
  399. casadi/libcasadi_conic_qrqp.3.7.dylib +0 -0
  400. casadi/libcasadi_conic_qrqp.dylib +0 -0
  401. casadi/libcasadi_conic_superscs.3.7.dylib +0 -0
  402. casadi/libcasadi_conic_superscs.dylib +0 -0
  403. casadi/libcasadi_importer_shell.3.7.dylib +0 -0
  404. casadi/libcasadi_importer_shell.dylib +0 -0
  405. casadi/libcasadi_integrator_collocation.3.7.dylib +0 -0
  406. casadi/libcasadi_integrator_collocation.dylib +0 -0
  407. casadi/libcasadi_integrator_cvodes.3.7.dylib +0 -0
  408. casadi/libcasadi_integrator_cvodes.dylib +0 -0
  409. casadi/libcasadi_integrator_idas.3.7.dylib +0 -0
  410. casadi/libcasadi_integrator_idas.dylib +0 -0
  411. casadi/libcasadi_integrator_rk.3.7.dylib +0 -0
  412. casadi/libcasadi_integrator_rk.dylib +0 -0
  413. casadi/libcasadi_interpolant_bspline.3.7.dylib +0 -0
  414. casadi/libcasadi_interpolant_bspline.dylib +0 -0
  415. casadi/libcasadi_interpolant_linear.3.7.dylib +0 -0
  416. casadi/libcasadi_interpolant_linear.dylib +0 -0
  417. casadi/libcasadi_linsol_csparse.3.7.dylib +0 -0
  418. casadi/libcasadi_linsol_csparse.dylib +0 -0
  419. casadi/libcasadi_linsol_csparsecholesky.3.7.dylib +0 -0
  420. casadi/libcasadi_linsol_csparsecholesky.dylib +0 -0
  421. casadi/libcasadi_linsol_lapacklu.3.7.dylib +0 -0
  422. casadi/libcasadi_linsol_lapacklu.dylib +0 -0
  423. casadi/libcasadi_linsol_lapackqr.3.7.dylib +0 -0
  424. casadi/libcasadi_linsol_lapackqr.dylib +0 -0
  425. casadi/libcasadi_linsol_ldl.3.7.dylib +0 -0
  426. casadi/libcasadi_linsol_ldl.dylib +0 -0
  427. casadi/libcasadi_linsol_lsqr.3.7.dylib +0 -0
  428. casadi/libcasadi_linsol_lsqr.dylib +0 -0
  429. casadi/libcasadi_linsol_ma27.3.7.dylib +0 -0
  430. casadi/libcasadi_linsol_ma27.dylib +0 -0
  431. casadi/libcasadi_linsol_mumps.3.7.dylib +0 -0
  432. casadi/libcasadi_linsol_mumps.dylib +0 -0
  433. casadi/libcasadi_linsol_qr.3.7.dylib +0 -0
  434. casadi/libcasadi_linsol_qr.dylib +0 -0
  435. casadi/libcasadi_linsol_symbolicqr.3.7.dylib +0 -0
  436. casadi/libcasadi_linsol_symbolicqr.dylib +0 -0
  437. casadi/libcasadi_linsol_tridiag.3.7.dylib +0 -0
  438. casadi/libcasadi_linsol_tridiag.dylib +0 -0
  439. casadi/libcasadi_nlpsol_ampl.3.7.dylib +0 -0
  440. casadi/libcasadi_nlpsol_ampl.dylib +0 -0
  441. casadi/libcasadi_nlpsol_blocksqp.3.7.dylib +0 -0
  442. casadi/libcasadi_nlpsol_blocksqp.dylib +0 -0
  443. casadi/libcasadi_nlpsol_bonmin.3.7.dylib +0 -0
  444. casadi/libcasadi_nlpsol_bonmin.dylib +0 -0
  445. casadi/libcasadi_nlpsol_fatrop.3.7.dylib +0 -0
  446. casadi/libcasadi_nlpsol_fatrop.dylib +0 -0
  447. casadi/libcasadi_nlpsol_feasiblesqpmethod.3.7.dylib +0 -0
  448. casadi/libcasadi_nlpsol_feasiblesqpmethod.dylib +0 -0
  449. casadi/libcasadi_nlpsol_ipopt.3.7.dylib +0 -0
  450. casadi/libcasadi_nlpsol_ipopt.dylib +0 -0
  451. casadi/libcasadi_nlpsol_knitro.3.7.dylib +0 -0
  452. casadi/libcasadi_nlpsol_knitro.dylib +0 -0
  453. casadi/libcasadi_nlpsol_madnlp.3.7.dylib +0 -0
  454. casadi/libcasadi_nlpsol_madnlp.dylib +0 -0
  455. casadi/libcasadi_nlpsol_qrsqp.3.7.dylib +0 -0
  456. casadi/libcasadi_nlpsol_qrsqp.dylib +0 -0
  457. casadi/libcasadi_nlpsol_scpgen.3.7.dylib +0 -0
  458. casadi/libcasadi_nlpsol_scpgen.dylib +0 -0
  459. casadi/libcasadi_nlpsol_sleqp.3.7.dylib +0 -0
  460. casadi/libcasadi_nlpsol_sleqp.dylib +0 -0
  461. casadi/libcasadi_nlpsol_snopt.3.7.dylib +0 -0
  462. casadi/libcasadi_nlpsol_snopt.dylib +0 -0
  463. casadi/libcasadi_nlpsol_sqpmethod.3.7.dylib +0 -0
  464. casadi/libcasadi_nlpsol_sqpmethod.dylib +0 -0
  465. casadi/libcasadi_rootfinder_fast_newton.3.7.dylib +0 -0
  466. casadi/libcasadi_rootfinder_fast_newton.dylib +0 -0
  467. casadi/libcasadi_rootfinder_kinsol.3.7.dylib +0 -0
  468. casadi/libcasadi_rootfinder_kinsol.dylib +0 -0
  469. casadi/libcasadi_rootfinder_newton.3.7.dylib +0 -0
  470. casadi/libcasadi_rootfinder_newton.dylib +0 -0
  471. casadi/libcasadi_rootfinder_nlpsol.3.7.dylib +0 -0
  472. casadi/libcasadi_rootfinder_nlpsol.dylib +0 -0
  473. casadi/libcasadi_sundials_common.3.7.dylib +0 -0
  474. casadi/libcasadi_sundials_common.dylib +0 -0
  475. casadi/libcasadi_xmlfile_tinyxml.3.7.dylib +0 -0
  476. casadi/libcasadi_xmlfile_tinyxml.dylib +0 -0
  477. casadi/libcoinmetis.2.dylib +0 -0
  478. casadi/libcoinmetis.dylib +0 -0
  479. casadi/libcoinmetis.la +1 -1
  480. casadi/libcoinmumps.3.dylib +0 -0
  481. casadi/libcoinmumps.dylib +0 -0
  482. casadi/libcoinmumps.la +2 -2
  483. casadi/libcplex_adaptor.dylib +0 -0
  484. casadi/{libamd.3.0.3.dylib → libdaqp.dylib} +0 -0
  485. casadi/libdaqpstat.a +0 -0
  486. casadi/libfatrop.dylib +0 -0
  487. casadi/libgcc_s.1.1.dylib +0 -0
  488. casadi/libgfortran.5.dylib +0 -0
  489. casadi/libgurobi_adaptor.dylib +0 -0
  490. casadi/libhighs.1.7.dylib +0 -0
  491. casadi/libhighs.1.dylib +0 -0
  492. casadi/libhighs.dylib +0 -0
  493. casadi/libindirect.a +0 -0
  494. casadi/libipopt.3.dylib +0 -0
  495. casadi/libipopt.dylib +0 -0
  496. casadi/libipopt.la +2 -2
  497. casadi/liblinsys.a +0 -0
  498. casadi/{libsuitesparseconfig.7.0.1.dylib → libmatlab_ipc.dylib} +0 -0
  499. casadi/libosqp.a +0 -0
  500. casadi/libosqp.dylib +0 -0
  501. casadi/libqdldl.a +0 -0
  502. casadi/libqdldl.dylib +0 -0
  503. casadi/libquadmath.0.dylib +0 -0
  504. casadi/libsipopt.3.dylib +0 -0
  505. casadi/libsipopt.dylib +0 -0
  506. casadi/libsipopt.la +2 -2
  507. casadi/libsleqp.1.0.1.dylib +0 -0
  508. casadi/libsleqp.dylib +0 -0
  509. casadi/libsuperscs.a +0 -0
  510. casadi/libtrlib.0.4.dylib +0 -0
  511. casadi/libtrlib.dylib +0 -0
  512. casadi/libz.1.2.13.dylib +0 -0
  513. casadi/pkgconfig/bonmin.pc +1 -1
  514. casadi/pkgconfig/casadi.pc +5 -5
  515. casadi/pkgconfig/cbc.pc +1 -1
  516. casadi/pkgconfig/cgl.pc +1 -1
  517. casadi/pkgconfig/clp.pc +1 -1
  518. casadi/pkgconfig/coinmetis.pc +1 -1
  519. casadi/pkgconfig/coinmumps.pc +2 -2
  520. casadi/pkgconfig/coinutils.pc +2 -2
  521. casadi/pkgconfig/highs.pc +4 -4
  522. casadi/pkgconfig/ipopt.pc +2 -2
  523. casadi/pkgconfig/osi-cbc.pc +1 -1
  524. casadi/pkgconfig/osi-clp.pc +1 -1
  525. casadi/pkgconfig/osi-unittests.pc +1 -1
  526. casadi/pkgconfig/osi.pc +1 -1
  527. casadi/pkgconfig/sleqp.pc +1 -1
  528. casadi/tools/__init__.py +4 -0
  529. casadi/tools/bounds.py +3 -3
  530. {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/METADATA +2 -2
  531. {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/RECORD +532 -477
  532. casadi/cmake/alpaqa/alpaqaConfig.cmake +0 -24
  533. casadi/cmake/alpaqa/alpaqaConfigVersion.cmake +0 -70
  534. casadi/cmake/alpaqa/alpaqaTargets-release.cmake +0 -19
  535. casadi/cmake/alpaqa/alpaqaTargets.cmake +0 -116
  536. casadi/include/alpaqa/accelerators/anderson.hpp +0 -133
  537. casadi/include/alpaqa/accelerators/internal/anderson-helpers.hpp +0 -92
  538. casadi/include/alpaqa/accelerators/internal/limited-memory-qr.hpp +0 -295
  539. casadi/include/alpaqa/accelerators/lbfgs.hpp +0 -244
  540. casadi/include/alpaqa/accelerators/steihaugcg.hpp +0 -143
  541. casadi/include/alpaqa/alpaqa.hpp +0 -3
  542. casadi/include/alpaqa/casadi/CasADiControlProblem.hpp +0 -185
  543. casadi/include/alpaqa/casadi/CasADiFunctionWrapper.hpp +0 -104
  544. casadi/include/alpaqa/casadi/CasADiProblem.hpp +0 -102
  545. casadi/include/alpaqa/casadi-loader-export.hpp +0 -15
  546. casadi/include/alpaqa/casadi-ocp-loader-export.hpp +0 -15
  547. casadi/include/alpaqa/config/config.hpp +0 -165
  548. casadi/include/alpaqa/dl/dl-problem.h +0 -476
  549. casadi/include/alpaqa/dl/dl-problem.hpp +0 -301
  550. casadi/include/alpaqa/export.h +0 -42
  551. casadi/include/alpaqa/export.hpp +0 -30
  552. casadi/include/alpaqa/implementation/accelerators/lbfgs.tpp +0 -240
  553. casadi/include/alpaqa/implementation/casadi/CasADiControlProblem.tpp +0 -594
  554. casadi/include/alpaqa/implementation/casadi/CasADiLoader-util.hpp +0 -50
  555. casadi/include/alpaqa/implementation/casadi/CasADiProblem.tpp +0 -425
  556. casadi/include/alpaqa/implementation/inner/directions/panoc/structured-lbfgs.tpp +0 -164
  557. casadi/include/alpaqa/implementation/inner/panoc-helpers.tpp +0 -389
  558. casadi/include/alpaqa/implementation/inner/panoc-ocp.tpp +0 -798
  559. casadi/include/alpaqa/implementation/inner/panoc.tpp +0 -448
  560. casadi/include/alpaqa/implementation/inner/pantr.tpp +0 -474
  561. casadi/include/alpaqa/implementation/inner/zerofpr.tpp +0 -482
  562. casadi/include/alpaqa/implementation/outer/alm.tpp +0 -228
  563. casadi/include/alpaqa/implementation/outer/internal/alm-helpers.tpp +0 -80
  564. casadi/include/alpaqa/implementation/params/params.tpp +0 -158
  565. casadi/include/alpaqa/implementation/problem/ocproblem.tpp +0 -56
  566. casadi/include/alpaqa/implementation/problem/type-erased-problem.tpp +0 -211
  567. casadi/include/alpaqa/implementation/util/io/csv.tpp +0 -120
  568. casadi/include/alpaqa/implementation/util/print.tpp +0 -151
  569. casadi/include/alpaqa/inner/directions/panoc/anderson.hpp +0 -98
  570. casadi/include/alpaqa/inner/directions/panoc/lbfgs.hpp +0 -94
  571. casadi/include/alpaqa/inner/directions/panoc/structured-lbfgs.hpp +0 -146
  572. casadi/include/alpaqa/inner/directions/panoc/structured-newton.hpp +0 -264
  573. casadi/include/alpaqa/inner/directions/panoc-direction-update.hpp +0 -96
  574. casadi/include/alpaqa/inner/directions/panoc-ocp/lqr.hpp +0 -181
  575. casadi/include/alpaqa/inner/directions/panoc-ocp/ocp-vars.hpp +0 -492
  576. casadi/include/alpaqa/inner/directions/pantr/newton-tr.hpp +0 -192
  577. casadi/include/alpaqa/inner/directions/pantr/pantr-direction.hpp +0 -99
  578. casadi/include/alpaqa/inner/inner-solve-options.hpp +0 -30
  579. casadi/include/alpaqa/inner/internal/lipschitz.hpp +0 -27
  580. casadi/include/alpaqa/inner/internal/panoc-helpers.hpp +0 -10
  581. casadi/include/alpaqa/inner/internal/panoc-stop-crit.hpp +0 -124
  582. casadi/include/alpaqa/inner/internal/solverstatus.hpp +0 -42
  583. casadi/include/alpaqa/inner/panoc-ocp.hpp +0 -302
  584. casadi/include/alpaqa/inner/panoc.hpp +0 -274
  585. casadi/include/alpaqa/inner/pantr.hpp +0 -284
  586. casadi/include/alpaqa/inner/zerofpr.hpp +0 -274
  587. casadi/include/alpaqa/ipopt/ipopt-adapter.hpp +0 -81
  588. casadi/include/alpaqa/ipopt/ipopt-enums.hpp +0 -35
  589. casadi/include/alpaqa/lbfgsb/lbfgsb-adapter.hpp +0 -111
  590. casadi/include/alpaqa/newton-tr-pantr-alm.hpp +0 -27
  591. casadi/include/alpaqa/outer/alm.hpp +0 -190
  592. casadi/include/alpaqa/outer/internal/alm-helpers.hpp +0 -10
  593. casadi/include/alpaqa/panoc-alm.hpp +0 -27
  594. casadi/include/alpaqa/panoc-anderson-alm.hpp +0 -27
  595. casadi/include/alpaqa/params/params.hpp +0 -60
  596. casadi/include/alpaqa/problem/box-constr-problem.hpp +0 -220
  597. casadi/include/alpaqa/problem/box.hpp +0 -82
  598. casadi/include/alpaqa/problem/functional-problem.hpp +0 -73
  599. casadi/include/alpaqa/problem/kkt-error.hpp +0 -43
  600. casadi/include/alpaqa/problem/ocproblem-counters.hpp +0 -116
  601. casadi/include/alpaqa/problem/ocproblem.hpp +0 -662
  602. casadi/include/alpaqa/problem/problem-counters.hpp +0 -116
  603. casadi/include/alpaqa/problem/problem-with-counters.hpp +0 -141
  604. casadi/include/alpaqa/problem/type-erased-problem.hpp +0 -874
  605. casadi/include/alpaqa/problem/unconstr-problem.hpp +0 -37
  606. casadi/include/alpaqa/structured-panoc-alm.hpp +0 -27
  607. casadi/include/alpaqa/structured-zerofpr-alm.hpp +0 -27
  608. casadi/include/alpaqa/util/alloc-check.hpp +0 -23
  609. casadi/include/alpaqa/util/atomic-stop-signal.hpp +0 -24
  610. casadi/include/alpaqa/util/check-dim.hpp +0 -64
  611. casadi/include/alpaqa/util/copyable_unique_ptr.hpp +0 -32
  612. casadi/include/alpaqa/util/demangled-typename.hpp +0 -9
  613. casadi/include/alpaqa/util/enumerate.hpp +0 -70
  614. casadi/include/alpaqa/util/float.hpp +0 -25
  615. casadi/include/alpaqa/util/index-set.hpp +0 -97
  616. casadi/include/alpaqa/util/io/csv.hpp +0 -43
  617. casadi/include/alpaqa/util/iter-adapter.hpp +0 -68
  618. casadi/include/alpaqa/util/max-history.hpp +0 -47
  619. casadi/include/alpaqa/util/noop-delete.hpp +0 -15
  620. casadi/include/alpaqa/util/not-implemented.hpp +0 -12
  621. casadi/include/alpaqa/util/print.hpp +0 -78
  622. casadi/include/alpaqa/util/quadmath/quadmath-print.hpp +0 -20
  623. casadi/include/alpaqa/util/quadmath/quadmath.hpp +0 -137
  624. casadi/include/alpaqa/util/required-method.hpp +0 -29
  625. casadi/include/alpaqa/util/ringbuffer.hpp +0 -212
  626. casadi/include/alpaqa/util/set-intersection.hpp +0 -129
  627. casadi/include/alpaqa/util/sparse-ops.hpp +0 -164
  628. casadi/include/alpaqa/util/timed.hpp +0 -22
  629. casadi/include/alpaqa/util/type-erasure.hpp +0 -568
  630. casadi/include/alpaqa/util/type-traits.hpp +0 -58
  631. casadi/include/alpaqa/zerofpr-alm.hpp +0 -27
  632. casadi/include/alpaqa/zerofpr-anderson-alm.hpp +0 -27
  633. casadi/include/alpaqa-version.h +0 -8
  634. casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
  635. casadi/include/licenses/alpaqa-external/src/thirdparty/lbfgsb/Lbfgsb.3.0/License.txt +0 -71
  636. casadi/libFortranHighs.dylib +0 -0
  637. casadi/libalpaqa.1.0.0.dylib +0 -0
  638. casadi/libalpaqa.dylib +0 -0
  639. casadi/libcamd.3.0.3.dylib +0 -0
  640. casadi/libcasadi_nlpsol_alpaqa.3.7.dylib +0 -0
  641. casadi/libcasadi_nlpsol_alpaqa.dylib +0 -0
  642. casadi/libccolamd.3.0.3.dylib +0 -0
  643. casadi/libcholmod.4.0.3.dylib +0 -0
  644. casadi/libcholmod_cuda.4.0.3.dylib +0 -0
  645. casadi/libcolamd.3.0.3.dylib +0 -0
  646. casadi/libhighs.1.6.0.dylib +0 -0
  647. casadi/libhighs.1.6.dylib +0 -0
  648. casadi/libumfpack.6.1.0.dylib +0 -0
  649. {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/WHEEL +0 -0
@@ -1,492 +0,0 @@
1
- #pragma once
2
-
3
- #include <alpaqa/config/config.hpp>
4
- #include <alpaqa/problem/ocproblem.hpp>
5
- #include <concepts>
6
- #include <numeric>
7
-
8
- namespace alpaqa {
9
-
10
- template <class V, class Conf>
11
- concept VectorRefLike =
12
- std::convertible_to<V, rvec<Conf>> || std::convertible_to<V, crvec<Conf>>;
13
-
14
- template <Config Conf, VectorRefLike<Conf> V>
15
- constexpr auto const_or_mut_rvec(V &&v) {
16
- if constexpr (Eigen::internal::is_lvalue<std::remove_reference_t<V>>::value)
17
- return rvec<Conf>{v};
18
- else
19
- return crvec<Conf>{v};
20
- }
21
-
22
- template <Config Conf>
23
- struct OCPVariables {
24
- USING_ALPAQA_CONFIG(Conf);
25
-
26
- OCPVariables(
27
- /// nx, nu, nh, nc
28
- const std::array<index_t, 4> &sizes,
29
- /// nx, nh, nc
30
- const std::array<index_t, 3> &sizes_N,
31
- /// Horizon length
32
- length_t N)
33
- : N{N} {
34
- std::partial_sum(sizes.begin(), sizes.end(), indices.begin());
35
- std::partial_sum(sizes_N.begin(), sizes_N.end(), indices_N.begin());
36
- }
37
- OCPVariables(const TypeErasedControlProblem<config_t> &prob)
38
- : OCPVariables{
39
- {prob.get_nx(), prob.get_nu(), prob.get_nh(), prob.get_nc()},
40
- {prob.get_nx(), prob.get_nh_N(), prob.get_nc_N()},
41
- prob.get_N(),
42
- } {}
43
-
44
- enum Indices {
45
- i_u = 0,
46
- i_h = 1,
47
- i_c = 2,
48
- i_h_N = 0,
49
- i_c_N = 1,
50
- };
51
- length_t N;
52
- std::array<index_t, 4> indices;
53
- std::array<index_t, 3> indices_N;
54
- length_t size(size_t i) const { return indices[i + 1] - indices[i]; }
55
- length_t size_N(size_t i) const { return indices_N[i + 1] - indices_N[i]; }
56
- length_t nx() const { return indices[0]; }
57
- length_t nu() const { return size(i_u); }
58
- length_t nxu() const { return nx() + nu(); }
59
- length_t nh() const { return size(i_h); }
60
- length_t nc() const { return size(i_c); }
61
- length_t nx_N() const { return indices_N[0]; }
62
- length_t nh_N() const { return size_N(i_h_N); }
63
- length_t nc_N() const { return size_N(i_c_N); }
64
-
65
- vec create() const { return vec(N * indices.back() + indices_N.back()); }
66
- auto xk(VectorRefLike<config_t> auto &&v, index_t t) const {
67
- return const_or_mut_rvec<config_t>(v.segment(t * indices.back(), nx()));
68
- }
69
- auto x(crvec v) const {
70
- return [v, this](index_t t) { return xk(v, t); };
71
- }
72
- auto xuk(VectorRefLike<config_t> auto &&v, index_t t) const {
73
- return const_or_mut_rvec<config_t>(
74
- v.segment(t * indices.back(), nxu()));
75
- }
76
- auto uk(VectorRefLike<config_t> auto &&v, index_t t) const {
77
- assert(t < N);
78
- return const_or_mut_rvec<config_t>(
79
- v.segment(t * indices.back() + indices[0], nu()));
80
- }
81
- auto u(crvec v) const {
82
- return [v, this](index_t t) { return uk(v, t); };
83
- }
84
- auto hk(VectorRefLike<config_t> auto &&v, index_t t) const {
85
- return const_or_mut_rvec<config_t>(v.segment(
86
- t * indices.back() + (t < N ? indices[i_h] : indices_N[i_h_N]),
87
- (t < N ? nh() : nh_N())));
88
- }
89
- auto ck(VectorRefLike<config_t> auto &&v, index_t t) const {
90
- return v.segment(t * indices.back() +
91
- (t < N ? indices[i_c] : indices_N[i_c_N]),
92
- (t < N ? nc() : nc_N()));
93
- }
94
-
95
- vec create_qr() const { return vec(N * nxu() + nx()); }
96
- auto qk(VectorRefLike<config_t> auto &&v, index_t t) const {
97
- assert(t <= N);
98
- return const_or_mut_rvec<config_t>(v.segment(t * nxu(), nx()));
99
- }
100
- auto q(crvec v) const {
101
- return [v, this](index_t t) { return qk(v, t); };
102
- }
103
- auto qN_mut(vec &v) const {
104
- return [&v, this]() { return qk(v, N); };
105
- }
106
- auto rk(VectorRefLike<config_t> auto &&v, index_t t) const {
107
- assert(t < N);
108
- return const_or_mut_rvec<config_t>(v.segment(t * nxu() + nx(), nu()));
109
- }
110
- auto r(crvec v) const {
111
- return [v, this](index_t t) { return rk(v, t); };
112
- }
113
- auto qrk(VectorRefLike<config_t> auto &&v, index_t t) const {
114
- assert(t < N);
115
- return const_or_mut_rvec<config_t>(v.segment(t * nxu(), nxu()));
116
- }
117
- auto qr(crvec v) const {
118
- return [v, this](index_t t) { return qrk(v, t); };
119
- }
120
- auto qr_mut(vec &v) const {
121
- return [&v, this](index_t t) { return qrk(v, t); };
122
- }
123
-
124
- mat create_AB() const { return mat(nx(), nxu() * N); }
125
- rmat ABk(rmat AB, index_t t) const {
126
- return AB.middleCols(t * nxu(), nxu());
127
- }
128
- auto ABk(mat &AB, index_t t) const {
129
- return AB.middleCols(t * nxu(), nxu());
130
- }
131
- crmat ABk(crmat AB, index_t t) const {
132
- return AB.middleCols(t * nxu(), nxu());
133
- }
134
- auto AB(crmat AB) const {
135
- return [AB, this](index_t t) { return ABk(AB, t); };
136
- }
137
- rmat Ak(rmat AB, index_t t) const { return AB.middleCols(t * nxu(), nx()); }
138
- crmat Ak(crmat AB, index_t t) const {
139
- return AB.middleCols(t * nxu(), nx());
140
- }
141
- auto Ak(mat &AB, index_t t) const { return AB.middleCols(t * nxu(), nx()); }
142
- auto A(crmat AB) const {
143
- return [AB, this](index_t t) { return Ak(AB, t); };
144
- }
145
- rmat Bk(rmat AB, index_t t) const {
146
- return AB.middleCols(t * nxu() + nx(), nu());
147
- }
148
- crmat Bk(crmat AB, index_t t) const {
149
- return AB.middleCols(t * nxu() + nx(), nu());
150
- }
151
- auto Bk(mat &AB, index_t t) const {
152
- return AB.middleCols(t * nxu() + nx(), nu());
153
- }
154
- auto B(crmat AB) const {
155
- return [AB, this](index_t t) { return Bk(AB, t); };
156
- }
157
- };
158
-
159
- template <Config Conf>
160
- struct OCPEvaluator {
161
- USING_ALPAQA_CONFIG(Conf);
162
- using OCPVars = OCPVariables<config_t>;
163
- using Problem = TypeErasedControlProblem<config_t>;
164
- using Box = alpaqa::Box<config_t>;
165
- const Problem *problem;
166
- OCPVars vars;
167
- mutable vec work_x{vars.nc() > 0 || vars.nc_N() ? vars.nx() : 0};
168
- mutable vec work_λ{vars.nx()};
169
- mutable vec work_c{std::max(vars.nc(), vars.nc_N())};
170
- mutable vec work_R{problem->get_R_work_size()};
171
- mutable vec work_S{problem->get_S_work_size()};
172
-
173
- OCPEvaluator(const Problem &problem) : problem{&problem}, vars{problem} {}
174
-
175
- length_t N() const { return vars.N; }
176
-
177
- /// @pre x0 and u initialized
178
- /// @post x, h and c updated
179
- /// @return @f$ V(u) =
180
- /// \sum_{k=0}^{N-1} \ell(h_k(x_k, u_k)) + V_f(h_N(x_N)) @f$
181
- real_t forward(rvec storage, const Box &D, const Box &D_N, crvec μ,
182
- crvec y) const {
183
- real_t V = 0;
184
- auto N = this->N();
185
- auto nc = vars.nc();
186
- auto nc_N = vars.nc_N();
187
- for (index_t t = 0; t < N; ++t) {
188
- auto xk = vars.xk(storage, t);
189
- auto uk = vars.uk(storage, t);
190
- auto ck = vars.ck(storage, t);
191
- if (vars.nh() > 0) {
192
- auto hk = vars.hk(storage, t);
193
- problem->eval_h(t, xk, uk, hk);
194
- V += problem->eval_l(t, hk);
195
- } else {
196
- auto xuk = vars.xuk(storage, t);
197
- V += problem->eval_l(t, xuk);
198
- }
199
- if (nc > 0) {
200
- problem->eval_constr(t, xk, ck);
201
- auto yk = y.segment(t * nc, nc);
202
- auto μk = μ.segment(t * nc, nc);
203
- auto ζ = ck + μk.asDiagonal().inverse() * yk;
204
- V += real_t(0.5) * dist_squared(ζ, D, μk);
205
- }
206
- problem->eval_f(t, xk, uk, vars.xk(storage, t + 1));
207
- }
208
- auto xN = vars.xk(storage, N);
209
- auto cN = vars.ck(storage, N);
210
- if (vars.nh_N() > 0) {
211
- auto hN = vars.hk(storage, N);
212
- problem->eval_h_N(xN, hN);
213
- V += problem->eval_l_N(hN);
214
- } else {
215
- V += problem->eval_l_N(xN);
216
- }
217
- if (nc_N > 0) {
218
- problem->eval_constr_N(xN, cN);
219
- auto yN = y.segment(N * nc, nc_N);
220
- auto μN = μ.segment(N * nc, nc_N);
221
- auto ζ = cN + μN.asDiagonal().inverse() * yN;
222
- V += real_t(0.5) * dist_squared(ζ, D_N, μN);
223
- }
224
- return V;
225
- }
226
-
227
- /// @pre x0 and u initialized
228
- /// @post x updated
229
- void forward_simulate(rvec storage) const {
230
- for (index_t t = 0; t < N(); ++t) {
231
- auto xk = vars.xk(storage, t);
232
- auto uk = vars.uk(storage, t);
233
- auto ck = vars.ck(storage, t);
234
- if (vars.nh() > 0) {
235
- auto hk = vars.hk(storage, t);
236
- problem->eval_h(t, xk, uk, hk);
237
- }
238
- if (vars.nc() > 0)
239
- problem->eval_constr(t, xk, ck);
240
- problem->eval_f(t, xk, uk, vars.xk(storage, t + 1));
241
- }
242
- auto xN = vars.xk(storage, N());
243
- auto cN = vars.ck(storage, N());
244
- if (vars.nh_N() > 0) {
245
- auto hN = vars.hk(storage, N());
246
- problem->eval_h_N(xN, hN);
247
- }
248
- if (vars.nc_N() > 0)
249
- problem->eval_constr_N(xN, cN);
250
- }
251
-
252
- /// @pre x0 and u initialized
253
- void forward_simulate(crvec u, rvec x) const {
254
- assert(u.size() == vars.N * vars.nu());
255
- assert(x.size() == vars.nx());
256
- for (index_t t = 0; t < N(); ++t) {
257
- auto uk = u.segment(t * vars.nu(), vars.nu());
258
- problem->eval_f(t, x, uk, x);
259
- }
260
- }
261
-
262
- /// @pre x, u, h and c initialized (i.e. forward was called)
263
- void backward(rvec storage, rvec g, const auto &qr, const auto &q_N,
264
- const Box &D, const Box &D_N, crvec μ, crvec y) const {
265
- auto N = this->N();
266
- auto nc = vars.nc();
267
- auto nc_N = vars.nc_N();
268
- auto nu = vars.nu();
269
- auto nx = vars.nx();
270
- auto &w = work_x;
271
- auto &v = work_c;
272
- auto &λ = work_λ;
273
- assert((nc <= 0 && nc_N <= 0) || w.size() == nx);
274
- assert((nc <= 0 && nc_N <= 0) || v.size() == std::max(nc, nc_N));
275
- auto qN = q_N();
276
- auto xN = vars.xk(storage, N);
277
- auto hN = vars.hk(storage, N);
278
- auto vN = v.topRows(nc_N);
279
- auto vk = v.topRows(nc);
280
- // λ ← ∇h(x)·∇l(h)
281
- problem->eval_q_N(xN, hN, λ);
282
- // λ ← ∇h(x)·∇l(h) + ∇c(x)·μ·(c(x) + μ⁻¹y - Π(c(x) + μ⁻¹y; D))
283
- if (nc_N > 0) {
284
- auto cN = vars.ck(storage, N);
285
- auto yN = y.segment(N * nc, nc_N);
286
- auto μN = μ.segment(N * nc, nc_N);
287
- auto ζ = cN + μN.asDiagonal().inverse() * yN;
288
- vN = μN.asDiagonal() * projecting_difference(ζ, D_N);
289
- problem->eval_grad_constr_prod_N(xN, vN, w);
290
- λ += w;
291
- }
292
- qN = λ;
293
- for (index_t t = N; t-- > 0;) {
294
- auto gt = g.segment(t * nu, nu);
295
- auto hk = vars.hk(storage, t);
296
- auto xuk = vars.xuk(storage, t);
297
- auto xk = vars.xk(storage, t);
298
- auto uk = vars.uk(storage, t);
299
- auto &&qrk = qr(t);
300
- auto &&qk = qrk.topRows(nx);
301
- auto &&rk = qrk.bottomRows(nu);
302
- // /q\ ← /Aᵀ\ λ
303
- // \r/ \Bᵀ/ λ
304
- problem->eval_grad_f_prod(t, xk, uk, λ, qrk);
305
- // λ ← Aᵀλ, ∇ψ ← Bᵀλ
306
- λ = qk;
307
- gt = rk;
308
- // /q\ ← ∇h(x,u)·∇l(h)
309
- // \r/
310
- problem->eval_qr(t, xuk, hk, qrk);
311
- // q ← ∇h(x)·∇l(h) + ∇c(x)·μ·(c(x) + μ⁻¹y - Π(c(x) + μ⁻¹y; D))
312
- if (nc > 0) {
313
- auto ck = vars.ck(storage, t);
314
- auto yk = y.segment(t * nc, nc);
315
- auto μk = μ.segment(t * nc, nc);
316
- auto ζ = ck + μk.asDiagonal().inverse() * yk;
317
- vk = μk.asDiagonal() * projecting_difference(ζ, D);
318
- problem->eval_grad_constr_prod(t, xk, vk, w);
319
- qk += w;
320
- }
321
- // λ ← q + Aᵀλ, ∇ψ ← r + Bᵀλ
322
- λ += qk;
323
- gt += rk;
324
- }
325
- }
326
-
327
- void Qk(crvec storage, crvec y, crvec μ, const Box &D, const Box &D_N,
328
- index_t k, rmat out) const {
329
- auto N = this->N();
330
- auto nc = vars.nc();
331
- auto nc_N = vars.nc_N();
332
- auto work_cN = work_c.topRows(nc_N);
333
- auto work_ck = work_c.topRows(nc);
334
- check_finiteness(out.reshaped(), "Qk input");
335
- auto hk = vars.hk(storage, k);
336
- auto xuk = vars.xuk(storage, k);
337
- auto xk = vars.xk(storage, k);
338
- if (k < N)
339
- problem->eval_add_Q(k, xuk, hk, out);
340
- else
341
- problem->eval_add_Q_N(xk, hk, out);
342
- if (nc > 0 || nc_N > 0) {
343
- auto ck = vars.ck(storage, k);
344
- auto yk = y.segment(k * nc, k < N ? nc : nc_N);
345
- auto μk = μ.segment(k * nc, k < N ? nc : nc_N);
346
- auto ζ = ck + μk.asDiagonal().inverse() * yk;
347
- if (k < N) {
348
- for (index_t i = 0; i < nc; ++i)
349
- work_ck(i) = μk(i) * (ζ(i) < D.lowerbound(i) ||
350
- ζ(i) > D.upperbound(i));
351
- problem->eval_add_gn_hess_constr(k, xk, work_ck, out);
352
- } else {
353
- for (index_t i = 0; i < nc_N; ++i)
354
- work_cN(i) = μk(i) * (ζ(i) < D_N.lowerbound(i) ||
355
- ζ(i) > D_N.upperbound(i));
356
- problem->eval_add_gn_hess_constr_N(xk, work_cN, out);
357
- }
358
- }
359
- check_finiteness(out.reshaped(), "Qk output");
360
- }
361
- auto Q(crvec storage, crvec y, crvec μ, const Box &D,
362
- const Box &D_N) const {
363
- return [=, this, &D, &D_N](index_t k) {
364
- return [=, this, &D, &D_N](rmat out) {
365
- return Qk(storage, y, μ, D, D_N, k, out);
366
- };
367
- };
368
- }
369
-
370
- /// @post initialize work_R
371
- void Rk(crvec storage, index_t k, crindexvec mask, rmat out) {
372
- check_finiteness(out.reshaped(), "Rk input");
373
- auto hk = vars.hk(storage, k);
374
- auto xuk = vars.xuk(storage, k);
375
- problem->eval_add_R_masked(k, xuk, hk, mask, out, work_R);
376
- check_finiteness(out.reshaped(), "Rk output");
377
- }
378
- auto R(crvec storage) {
379
- return [=, this](index_t k) {
380
- return [=, this](crindexvec mask, rmat out) {
381
- return Rk(storage, k, mask, out);
382
- };
383
- };
384
- }
385
-
386
- /// @post initialize work_S
387
- void Sk(crvec storage, index_t k, crindexvec mask, rmat out) {
388
- check_finiteness(out.reshaped(), "Sk input");
389
- auto hk = vars.hk(storage, k);
390
- auto xuk = vars.xuk(storage, k);
391
- problem->eval_add_S_masked(k, xuk, hk, mask, out, work_S);
392
- check_finiteness(out.reshaped(), "Sk output");
393
- }
394
- auto S(crvec storage) {
395
- return [=, this](index_t k) {
396
- return [=, this](crindexvec mask, rmat out) {
397
- return Sk(storage, k, mask, out);
398
- };
399
- };
400
- }
401
-
402
- /// @pre initialized work_R
403
- void Rk_prod(crvec storage, index_t k, crindexvec mask_J, crindexvec mask_K,
404
- crvec v, rvec out) const {
405
-
406
- check_finiteness(v(mask_K), "Rk_prod input v");
407
- check_finiteness(out.reshaped(), "Rk_prod input");
408
- auto hk = vars.hk(storage, k);
409
- auto xuk = vars.xuk(storage, k);
410
- problem->eval_add_R_prod_masked(k, xuk, hk, mask_J, mask_K, v, out,
411
- work_R);
412
- check_finiteness(out.reshaped(), "Rk_prod output");
413
- }
414
- auto R_prod(crvec storage) const {
415
- return [=, this](index_t k) {
416
- return [=, this](crindexvec mask_J, crindexvec mask_K, crvec v,
417
- rvec out) {
418
- return Rk_prod(storage, k, mask_J, mask_K, v, out);
419
- };
420
- };
421
- }
422
-
423
- /// @pre initialized work_S
424
- void Sk_prod(crvec storage, index_t k, crindexvec mask_K, crvec v,
425
- rvec out) const {
426
- check_finiteness(v(mask_K), "Sk_prod input v");
427
- check_finiteness(out.reshaped(), "Sk_prod input");
428
- auto hk = vars.hk(storage, k);
429
- auto xuk = vars.xuk(storage, k);
430
- problem->eval_add_S_prod_masked(k, xuk, hk, mask_K, v, out, work_S);
431
- check_finiteness(out.reshaped(), "Sk_prod output");
432
- }
433
- auto S_prod(crvec storage) const {
434
- return [=, this](index_t k) {
435
- return [=, this](crindexvec mask_K, crvec v, rvec out) {
436
- return Sk_prod(storage, k, mask_K, v, out);
437
- };
438
- };
439
- }
440
- };
441
-
442
- namespace detail {
443
-
444
- template <Config Conf>
445
- void assign_interleave_xu(const OCPVariables<Conf> &dim, crvec<Conf> u,
446
- rvec<Conf> storage) {
447
- for (index_t<Conf> t = 0; t < dim.N; ++t)
448
- dim.uk(storage, t) = u.segment(t * dim.nu(), dim.nu());
449
- }
450
- template <Config Conf>
451
- void assign_interleave_xu(const OCPVariables<Conf> &dim, crvec<Conf> x,
452
- crvec<Conf> u, rvec<Conf> storage) {
453
- for (index_t<Conf> t = 0; t < dim.N; ++t) {
454
- dim.xk(storage, t) = x.segment(t * dim.nx(), dim.nx());
455
- dim.uk(storage, t) = u.segment(t * dim.nu(), dim.nu());
456
- }
457
- dim.xk(storage, dim.N) = x.segment(dim.N * dim.nx(), dim.nx());
458
- }
459
- template <Config Conf>
460
- void assign_extract_u(const OCPVariables<Conf> &dim, crvec<Conf> storage,
461
- rvec<Conf> u) {
462
- for (index_t<Conf> t = 0; t < dim.N; ++t)
463
- u.segment(t * dim.nu(), dim.nu()) = dim.uk(storage, t);
464
- }
465
- template <Config Conf>
466
- void assign_extract_x(const OCPVariables<Conf> &dim, crvec<Conf> storage,
467
- rvec<Conf> x) {
468
- for (index_t<Conf> t = 0; t < dim.N + 1; ++t)
469
- x.segment(t * dim.nx(), dim.nx()) =
470
- storage.segment(t * (dim.nx() + dim.nu()), dim.nx());
471
- }
472
-
473
- template <Config Conf>
474
- vec<Conf> extract_u(const TypeErasedControlProblem<Conf> &problem,
475
- crvec<Conf> xu) {
476
- OCPVariables<Conf> dim{problem};
477
- vec<Conf> u(dim.N * dim.nu());
478
- assign_extract_u(dim, xu, u);
479
- return u;
480
- }
481
- template <Config Conf>
482
- vec<Conf> extract_x(const TypeErasedControlProblem<Conf> &problem,
483
- crvec<Conf> xu) {
484
- OCPVariables<Conf> dim{problem};
485
- vec<Conf> x((dim.N + 1) * dim.nx());
486
- assign_extract_x(dim, xu, x);
487
- return x;
488
- }
489
-
490
- } // namespace detail
491
-
492
- } // namespace alpaqa
@@ -1,192 +0,0 @@
1
- #pragma once
2
-
3
- #include <alpaqa/accelerators/steihaugcg.hpp>
4
- #include <alpaqa/problem/type-erased-problem.hpp>
5
- #include <alpaqa/util/alloc-check.hpp>
6
- #include <alpaqa/util/index-set.hpp>
7
- #include <cmath>
8
- #include <limits>
9
- #include <optional>
10
- #include <stdexcept>
11
-
12
- namespace alpaqa {
13
-
14
- /// Parameters for the @ref NewtonTRDirection class.
15
- template <Config Conf>
16
- struct NewtonTRDirectionParams {
17
- USING_ALPAQA_CONFIG(Conf);
18
- bool rescale_on_step_size_changes = false;
19
- real_t hessian_vec_factor = real_t(0.5);
20
- bool finite_diff = false;
21
- real_t finite_diff_stepsize =
22
- std::sqrt(std::numeric_limits<real_t>::epsilon());
23
- };
24
-
25
- /// @ingroup grp_DirectionProviders
26
- template <Config Conf>
27
- struct NewtonTRDirection {
28
- USING_ALPAQA_CONFIG(Conf);
29
-
30
- using Problem = TypeErasedProblem<config_t>;
31
- using AcceleratorParams = SteihaugCGParams<config_t>;
32
- using DirectionParams = NewtonTRDirectionParams<config_t>;
33
-
34
- struct Params {
35
- AcceleratorParams accelerator = {};
36
- DirectionParams direction = {};
37
- };
38
-
39
- NewtonTRDirection() = default;
40
- NewtonTRDirection(const Params &params)
41
- : steihaug(params.accelerator), direction_params(params.direction) {}
42
- NewtonTRDirection(const AcceleratorParams &params,
43
- const DirectionParams &directionparams = {})
44
- : steihaug(params), direction_params(directionparams) {}
45
-
46
- /// @see @ref PANTRDirection::initialize
47
- void initialize(const Problem &problem, [[maybe_unused]] crvec y,
48
- [[maybe_unused]] crvec Σ, [[maybe_unused]] real_t γ_0,
49
- [[maybe_unused]] crvec x_0, [[maybe_unused]] crvec x̂_0,
50
- [[maybe_unused]] crvec p_0,
51
- [[maybe_unused]] crvec grad_ψx_0) {
52
- if (!direction_params.finite_diff &&
53
- !problem.provides_eval_hess_ψ_prod())
54
- throw std::invalid_argument("NewtonTR without finite differences "
55
- "requires Problem::eval_hess_ψ_prod()");
56
- if (!problem.provides_eval_inactive_indices_res_lna())
57
- throw std::invalid_argument(
58
- "NewtonTR requires "
59
- "Problem::eval_inactive_indices_res_lna()");
60
- // Store references to problem and ALM variables
61
- this->problem = &problem;
62
- this->y.emplace(y);
63
- this->Σ.emplace(Σ);
64
- // Resize workspaces
65
- const auto n = problem.get_n(), m = problem.get_m();
66
- JK_sto.resize(n);
67
- rJ_sto.resize(n);
68
- qJ_sto.resize(n);
69
- work.resize(n);
70
- work_2.resize(n);
71
- steihaug.resize(n);
72
- if (direction_params.finite_diff) {
73
- work_n_fd.resize(n);
74
- work_m_fd.resize(m);
75
- }
76
- }
77
-
78
- /// @see @ref PANTRDirection::has_initial_direction
79
- bool has_initial_direction() const { return true; }
80
-
81
- /// @see @ref PANTRDirection::update
82
- bool update([[maybe_unused]] real_t γₖ, [[maybe_unused]] real_t γₙₑₓₜ,
83
- [[maybe_unused]] crvec xₖ, [[maybe_unused]] crvec xₙₑₓₜ,
84
- [[maybe_unused]] crvec pₖ, [[maybe_unused]] crvec pₙₑₓₜ,
85
- [[maybe_unused]] crvec grad_ψxₖ,
86
- [[maybe_unused]] crvec grad_ψxₙₑₓₜ) {
87
- return true;
88
- }
89
-
90
- /// @see @ref PANTRDirection::apply
91
- real_t apply([[maybe_unused]] real_t γₖ, [[maybe_unused]] crvec xₖ,
92
- [[maybe_unused]] crvec x̂ₖ, crvec pₖ,
93
- [[maybe_unused]] crvec grad_ψxₖ, real_t radius,
94
- rvec qₖ) const {
95
-
96
- if (!std::isfinite(radius))
97
- throw std::logic_error("Invalid trust radius");
98
- if (radius < std::numeric_limits<real_t>::epsilon())
99
- throw std::logic_error("Trust radius too small");
100
-
101
- // Newton with exact Hessian
102
-
103
- // Find inactive and active constraints
104
- const auto n = problem->get_n();
105
- index_t nJ =
106
- problem->eval_inactive_indices_res_lna(γₖ, xₖ, grad_ψxₖ, JK_sto);
107
- crindexvec J = JK_sto.topRows(nJ);
108
- rindexvec K = JK_sto.bottomRows(n - nJ);
109
- detail::IndexSet<config_t>::compute_complement(J, K, n);
110
- auto rJ = rJ_sto.topRows(nJ);
111
- auto qJ = qJ_sto.topRows(nJ);
112
- rJ = (-real_t(1) / γₖ) * pₖ(J);
113
- qₖ(K) = pₖ(K);
114
- qₖ(J).setZero();
115
- real_t norm_qK_sq = pₖ(K).squaredNorm();
116
-
117
- // Hessian-vector term
118
- if (direction_params.hessian_vec_factor != 0) {
119
- if (direction_params.finite_diff) {
120
- real_t ε = (1 + grad_ψxₖ.norm()) *
121
- direction_params.finite_diff_stepsize;
122
- work = xₖ + ε * qₖ;
123
- problem->eval_grad_ψ(work, *y, *Σ, work_2, work_n_fd,
124
- work_m_fd);
125
- rJ.noalias() += (work_2 - grad_ψxₖ)(J) *
126
- (direction_params.hessian_vec_factor / ε);
127
- } else {
128
- problem->eval_hess_ψ_prod(xₖ, *y, *Σ, 1, qₖ, work);
129
- rJ.noalias() += work(J) * direction_params.hessian_vec_factor;
130
- }
131
- }
132
-
133
- // Hessian-vector product on subset J
134
- auto hess_vec_mult = [&](crvec p, rvec Bp) {
135
- if (direction_params.finite_diff) {
136
- real_t ε = (1 + grad_ψxₖ.norm()) *
137
- direction_params.finite_diff_stepsize;
138
- work = xₖ;
139
- work(J) += ε * p;
140
- problem->eval_grad_ψ(work, *y, *Σ, work_2, work_n_fd,
141
- work_m_fd);
142
- Bp.topRows(nJ) = (work_2 - grad_ψxₖ)(J) / ε;
143
- } else {
144
- work.setZero();
145
- work(J) = p;
146
- problem->eval_hess_ψ_prod(xₖ, *y, *Σ, 1, work, work_2);
147
- Bp.topRows(nJ) = work_2(J);
148
- }
149
- };
150
-
151
- // Steihaug conjugate gradients
152
- real_t qJ_model = steihaug.solve(rJ, hess_vec_mult, radius, qJ);
153
- qₖ(J) = qJ;
154
- return qJ_model - norm_qK_sq / (2 * γₖ);
155
- }
156
-
157
- /// @see @ref PANTRDirection::changed_γ
158
- void changed_γ([[maybe_unused]] real_t γₖ, [[maybe_unused]] real_t old_γₖ) {
159
- if (direction_params.rescale_on_step_size_changes)
160
- throw std::invalid_argument("NewtonTRDirection does not support "
161
- "rescale_on_step_size_changes");
162
- }
163
-
164
- /// @see @ref PANTRDirection::reset
165
- void reset() {}
166
-
167
- /// @see @ref PANTRDirection::get_name
168
- std::string get_name() const {
169
- return "NewtonTRDirection<" + std::string(config_t::get_name()) + '>';
170
- }
171
-
172
- auto get_params() const {
173
- return std::tie(steihaug.params, direction_params);
174
- }
175
-
176
- SteihaugCG<config_t> steihaug;
177
- DirectionParams direction_params;
178
- const Problem *problem = nullptr;
179
- #ifndef _WIN32
180
- std::optional<crvec> y = std::nullopt;
181
- std::optional<crvec> Σ = std::nullopt;
182
- #else
183
- std::optional<vec> y = std::nullopt;
184
- std::optional<vec> Σ = std::nullopt;
185
- #endif
186
- mutable indexvec JK_sto;
187
- mutable vec rJ_sto;
188
- mutable vec qJ_sto;
189
- mutable vec work, work_2, work_n_fd, work_m_fd;
190
- };
191
-
192
- } // namespace alpaqa