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,425 +0,0 @@
1
- #pragma once
2
-
3
- #include <alpaqa/casadi/CasADiFunctionWrapper.hpp>
4
- #include <alpaqa/casadi/CasADiProblem.hpp>
5
- #include <alpaqa/util/io/csv.hpp>
6
- #include <alpaqa/util/not-implemented.hpp>
7
- #include "CasADiLoader-util.hpp"
8
-
9
- #include <casadi/core/external.hpp>
10
-
11
- #include <algorithm>
12
- #include <filesystem>
13
- #include <fstream>
14
- #include <memory>
15
- #include <optional>
16
- #include <stdexcept>
17
- #include <type_traits>
18
-
19
- namespace alpaqa {
20
-
21
- namespace fs = std::filesystem;
22
-
23
- namespace casadi_loader {
24
-
25
- template <Config Conf>
26
- struct CasADiFunctionsWithParam {
27
- USING_ALPAQA_CONFIG(Conf);
28
- CasADiFunctionEvaluator<Conf, 2, 1> f;
29
- CasADiFunctionEvaluator<Conf, 2, 2> f_grad_f;
30
- // CasADiFunctionEvaluator<6, 1> grad_ψ;
31
- CasADiFunctionEvaluator<Conf, 6, 2> ψ_grad_ψ;
32
- struct ConstrFun {
33
- CasADiFunctionEvaluator<Conf, 2, 1> g;
34
- CasADiFunctionEvaluator<Conf, 3, 1> grad_L;
35
- CasADiFunctionEvaluator<Conf, 6, 2> ψ;
36
- };
37
- std::optional<ConstrFun> constr = std::nullopt;
38
- std::optional<CasADiFunctionEvaluator<Conf, 5, 1>> hess_L_prod =
39
- std::nullopt;
40
- std::optional<CasADiFunctionEvaluator<Conf, 4, 1>> hess_L = std::nullopt;
41
- std::optional<CasADiFunctionEvaluator<Conf, 8, 1>> hess_ψ_prod =
42
- std::nullopt;
43
- std::optional<CasADiFunctionEvaluator<Conf, 7, 1>> hess_ψ = std::nullopt;
44
- std::optional<CasADiFunctionEvaluator<Conf, 2, 1>> jac_g = std::nullopt;
45
- indexvec inner_H{}, outer_H{};
46
- indexvec inner_J{}, outer_J{};
47
- };
48
-
49
- } // namespace casadi_loader
50
-
51
- namespace detail {
52
-
53
- template <Config Conf>
54
- auto casadi_to_index(casadi_int i) -> index_t<Conf> {
55
- return static_cast<index_t<Conf>>(i);
56
- }
57
- } // namespace detail
58
-
59
- template <Config Conf>
60
- CasADiProblem<Conf>::CasADiProblem(const std::string &so_name)
61
- : BoxConstrProblem<Conf>{0, 0} {
62
- using namespace casadi_loader;
63
- length_t n = 0, m = 0, p = 0;
64
- auto load_g_unknown_dims =
65
- [&]() -> std::optional<CasADiFunctionEvaluator<Conf, 2, 1>> {
66
- casadi::Function gfun = casadi::external("g", so_name);
67
- using namespace std::literals::string_literals;
68
- if (gfun.n_in() != 2)
69
- throw std::invalid_argument(
70
- "Invalid number of input arguments: got "s +
71
- std::to_string(gfun.n_in()) + ", should be 2.");
72
- if (gfun.n_out() > 1)
73
- throw std::invalid_argument(
74
- "Invalid number of output arguments: got "s +
75
- std::to_string(gfun.n_in()) + ", should be 0 or 1.");
76
- if (gfun.size2_in(0) != 1)
77
- throw std::invalid_argument(
78
- "First input argument should be a column vector.");
79
- if (gfun.size2_in(1) != 1)
80
- throw std::invalid_argument(
81
- "Second input argument should be a column vector.");
82
- if (gfun.n_out() == 1 && gfun.size2_out(0) != 1)
83
- throw std::invalid_argument(
84
- "First output argument should be a column vector.");
85
- n = static_cast<length_t>(gfun.size1_in(0));
86
- if (gfun.n_out() == 1)
87
- m = static_cast<length_t>(gfun.size1_out(0));
88
- p = static_cast<length_t>(gfun.size1_in(1));
89
- if (gfun.n_out() == 0) {
90
- if (m != 0)
91
- throw std::invalid_argument(
92
- "Function g has no outputs but m != 0");
93
- return std::nullopt;
94
- }
95
- CasADiFunctionEvaluator<Conf, 2, 1> g{std::move(gfun)};
96
- g.validate_dimensions({dim(n, 1), dim(p, 1)}, {dim(m, 1)});
97
- return std::make_optional(std::move(g));
98
- };
99
-
100
- auto g = wrap_load(so_name, "g", load_g_unknown_dims);
101
-
102
- this->n = n;
103
- this->m = m;
104
- this->param = vec::Constant(p, alpaqa::NaN<Conf>);
105
- this->C = Box<config_t>{n};
106
- this->D = Box<config_t>{m};
107
-
108
- impl = std::make_unique<CasADiFunctionsWithParam<Conf>>(
109
- CasADiFunctionsWithParam<Conf>{
110
- .f = wrapped_load<CasADiFunctionEvaluator<Conf, 2, 1>>( //
111
- so_name, "f", dims(n, p), dims(1)),
112
- .f_grad_f = wrapped_load<CasADiFunctionEvaluator<Conf, 2, 2>>( //
113
- so_name, "f_grad_f", dims(n, p), dims(1, n)),
114
- // .grad_ψ = wrapped_load<CasADiFunctionEvaluator<6, 1>>( //
115
- // so_name, "grad_psi", dims(n, p, m, m, m, m), dims(n)),
116
- .ψ_grad_ψ = wrapped_load<CasADiFunctionEvaluator<Conf, 6, 2>>( //
117
- so_name, "psi_grad_psi", dims(n, p, m, m, m, m), dims(1, n)),
118
- });
119
-
120
- if (g)
121
- impl->constr = {
122
- std::move(*g),
123
- wrapped_load<CasADiFunctionEvaluator<Conf, 3, 1>>( //
124
- so_name, "grad_L", dims(n, p, m), dims(n)),
125
- wrapped_load<CasADiFunctionEvaluator<Conf, 6, 2>>( //
126
- so_name, "psi", dims(n, p, m, m, m, m), dims(1, m)),
127
- };
128
-
129
- impl->hess_L_prod = try_load<CasADiFunctionEvaluator<Conf, 5, 1>>( //
130
- so_name, "hess_L_prod", dims(n, p, m, 1, n), dims(n));
131
- impl->hess_L = try_load<CasADiFunctionEvaluator<Conf, 4, 1>>( //
132
- so_name, "hess_L", dims(n, p, m, 1), dims(dim(n, n)));
133
- impl->hess_ψ_prod = try_load<CasADiFunctionEvaluator<Conf, 8, 1>>( //
134
- so_name, "hess_psi_prod", dims(n, p, m, m, 1, m, m, n), dims(n));
135
- impl->hess_ψ = try_load<CasADiFunctionEvaluator<Conf, 7, 1>>( //
136
- so_name, "hess_psi", dims(n, p, m, m, 1, m, m), dims(dim(n, n)));
137
- impl->jac_g = try_load<CasADiFunctionEvaluator<Conf, 2, 1>>( //
138
- so_name, "jacobian_g", dims(n, p), dims(dim(m, n)));
139
-
140
- auto data_filepath = fs::path{so_name}.replace_extension("csv");
141
- if (fs::exists(data_filepath))
142
- load_numerical_data(data_filepath);
143
- }
144
-
145
- template <Config Conf>
146
- void CasADiProblem<Conf>::load_numerical_data(
147
- const std::filesystem::path &filepath, char sep) {
148
- // Open data file
149
- std::ifstream data_file{filepath};
150
- if (!data_file)
151
- throw std::runtime_error("Unable to open data file \"" +
152
- filepath.string() + '"');
153
-
154
- // Helper function for reading single line of (float) data
155
- index_t line = 0;
156
- auto wrap_data_load = [&](std::string_view name, auto &v, bool fixed_size) {
157
- try {
158
- ++line;
159
- if (data_file.peek() == '\n') // Ignore empty lines
160
- return static_cast<void>(data_file.get());
161
- if (fixed_size) {
162
- csv::read_row(data_file, v, sep);
163
- } else { // Dynamic size
164
- auto s = csv::read_row_std_vector<real_t>(data_file, sep);
165
- v = cmvec{s.data(), static_cast<index_t>(s.size())};
166
- }
167
- } catch (csv::read_error &e) {
168
- // Transform any errors in something more readable
169
- throw std::runtime_error("Unable to read " + std::string(name) +
170
- " from data file \"" + filepath.string() +
171
- ':' + std::to_string(line) +
172
- "\": " + e.what());
173
- }
174
- };
175
- // Helper function for reading a single value
176
- auto read_single = [&](std::string_view name, auto &v) {
177
- data_file >> v;
178
- if (!data_file)
179
- throw std::runtime_error("Unable to read " + std::string(name) +
180
- " from data file \"" + filepath.string() +
181
- ':' + std::to_string(line) + '"');
182
- };
183
- // Read the bounds, parameter value, and regularization
184
- wrap_data_load("C.lowerbound", this->C.lowerbound, true);
185
- wrap_data_load("C.upperbound", this->C.upperbound, true);
186
- wrap_data_load("D.lowerbound", this->D.lowerbound, true);
187
- wrap_data_load("D.upperbound", this->D.upperbound, true);
188
- wrap_data_load("param", this->param, true);
189
- wrap_data_load("l1_reg", this->l1_reg, false);
190
- // Penalty/ALM split is a single integer
191
- read_single("penalty_alm_split", this->penalty_alm_split);
192
- }
193
-
194
- template <Config Conf>
195
- CasADiProblem<Conf>::CasADiProblem(const CasADiProblem &) = default;
196
- template <Config Conf>
197
- CasADiProblem<Conf> &
198
- CasADiProblem<Conf>::operator=(const CasADiProblem &) = default;
199
- template <Config Conf>
200
- CasADiProblem<Conf>::CasADiProblem(CasADiProblem &&) noexcept = default;
201
- template <Config Conf>
202
- CasADiProblem<Conf> &
203
- CasADiProblem<Conf>::operator=(CasADiProblem &&) noexcept = default;
204
-
205
- template <Config Conf>
206
- CasADiProblem<Conf>::~CasADiProblem() = default;
207
-
208
- template <Config Conf>
209
- auto CasADiProblem<Conf>::eval_f(crvec x) const -> real_t {
210
- real_t f;
211
- impl->f({x.data(), param.data()}, {&f});
212
- return f;
213
- }
214
-
215
- template <Config Conf>
216
- void CasADiProblem<Conf>::eval_grad_f(crvec x, rvec grad_fx) const {
217
- real_t f;
218
- impl->f_grad_f({x.data(), param.data()}, {&f, grad_fx.data()});
219
- }
220
-
221
- template <Config Conf>
222
- auto CasADiProblem<Conf>::eval_f_grad_f(crvec x, rvec grad_fx) const -> real_t {
223
- real_t f;
224
- impl->f_grad_f({x.data(), param.data()}, {&f, grad_fx.data()});
225
- return f;
226
- }
227
-
228
- template <Config Conf>
229
- void CasADiProblem<Conf>::eval_g(crvec x, rvec g) const {
230
- if (impl->constr)
231
- impl->constr->g({x.data(), param.data()}, {g.data()});
232
- }
233
-
234
- template <Config Conf>
235
- void CasADiProblem<Conf>::eval_grad_g_prod(crvec, crvec, rvec) const {
236
- throw not_implemented_error("CasADiProblem::eval_grad_g_prod"); // TODO
237
- }
238
-
239
- template <Config Conf>
240
- void CasADiProblem<Conf>::eval_grad_ψ(crvec x, crvec y, crvec Σ, rvec grad_ψ,
241
- rvec, rvec) const {
242
- #if 0
243
- impl->grad_ψ({x.data(), param.data(), y.data(), Σ.data(),
244
- this->D.lowerbound.data(), this->D.upperbound.data()},
245
- {grad_ψ.data()});
246
- #else
247
- // This seems to be faster than having a specialized function. Possibly
248
- // cache-related?
249
- real_t ψ;
250
- impl->ψ_grad_ψ({x.data(), param.data(), y.data(), Σ.data(),
251
- this->D.lowerbound.data(), this->D.upperbound.data()},
252
- {&ψ, grad_ψ.data()});
253
- #endif
254
- }
255
-
256
- template <Config Conf>
257
- typename CasADiProblem<Conf>::real_t
258
- CasADiProblem<Conf>::eval_ψ_grad_ψ(crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec,
259
- rvec) const {
260
- real_t ψ;
261
- impl->ψ_grad_ψ({x.data(), param.data(), y.data(), Σ.data(),
262
- this->D.lowerbound.data(), this->D.upperbound.data()},
263
- {&ψ, grad_ψ.data()});
264
- return ψ;
265
- }
266
-
267
- template <Config Conf>
268
- void CasADiProblem<Conf>::eval_grad_L(crvec x, crvec y, rvec grad_L,
269
- rvec) const {
270
- if (impl->constr)
271
- impl->constr->grad_L({x.data(), param.data(), y.data()},
272
- {grad_L.data()});
273
- else
274
- eval_f_grad_f(x, grad_L);
275
- }
276
-
277
- template <Config Conf>
278
- typename CasADiProblem<Conf>::real_t
279
- CasADiProblem<Conf>::eval_ψ(crvec x, crvec y, crvec Σ, rvec ŷ) const {
280
- real_t ψ;
281
- if (impl->constr)
282
- impl->constr->ψ({x.data(), param.data(), y.data(), Σ.data(),
283
- this->D.lowerbound.data(), this->D.upperbound.data()},
284
- {&ψ, ŷ.data()});
285
- else
286
- impl->f({x.data(), param.data()}, {&ψ});
287
- return ψ;
288
- }
289
-
290
- template <Config Conf>
291
- void CasADiProblem<Conf>::eval_grad_gi(crvec, index_t, rvec) const {
292
- throw not_implemented_error("CasADiProblem::eval_grad_gi"); // TODO
293
- }
294
-
295
- template <Config Conf>
296
- auto CasADiProblem<Conf>::get_jac_g_num_nonzeros() const -> length_t {
297
- if (!impl->jac_g.has_value())
298
- return -1;
299
- auto &&sparsity = impl->jac_g->fun.sparsity_out(0);
300
- return sparsity.is_dense() ? -1 : static_cast<length_t>(sparsity.nnz());
301
- }
302
-
303
- template <Config Conf>
304
- void CasADiProblem<Conf>::eval_jac_g(crvec x, rindexvec inner_idx,
305
- rindexvec outer_ptr, rvec J_values) const {
306
- assert(impl->jac_g.has_value());
307
- if (J_values.size() > 0) {
308
- (*impl->jac_g)({x.data(), param.data()}, {J_values.data()});
309
- } else {
310
- auto &&sparsity = impl->jac_g->fun.sparsity_out(0);
311
- using detail::casadi_to_index;
312
- if (!sparsity.is_dense()) {
313
- std::transform(sparsity.row(), sparsity.row() + sparsity.nnz(),
314
- inner_idx.begin(), casadi_to_index<config_t>);
315
- std::transform(sparsity.colind(),
316
- sparsity.colind() + this->get_n() + 1,
317
- outer_ptr.begin(), casadi_to_index<config_t>);
318
- }
319
- }
320
- }
321
-
322
- template <Config Conf>
323
- void CasADiProblem<Conf>::eval_hess_L_prod(crvec x, crvec y, real_t scale,
324
- crvec v, rvec Hv) const {
325
- assert(impl->hess_L_prod.has_value());
326
- (*impl->hess_L_prod)({x.data(), param.data(), y.data(), &scale, v.data()},
327
- {Hv.data()});
328
- }
329
-
330
- template <Config Conf>
331
- auto CasADiProblem<Conf>::get_hess_L_num_nonzeros() const -> length_t {
332
- if (!impl->hess_L.has_value())
333
- return -1;
334
- auto &&sparsity = impl->hess_L->fun.sparsity_out(0);
335
- return sparsity.is_dense() ? -1 : static_cast<length_t>(sparsity.nnz());
336
- }
337
-
338
- template <Config Conf>
339
- void CasADiProblem<Conf>::eval_hess_L(crvec x, crvec y, real_t scale,
340
- rindexvec inner_idx, rindexvec outer_ptr,
341
- rvec H_values) const {
342
- assert(impl->hess_L.has_value());
343
- if (H_values.size() > 0) {
344
- (*impl->hess_L)({x.data(), param.data(), y.data(), &scale},
345
- {H_values.data()});
346
- } else {
347
- auto &&sparsity = impl->hess_L->fun.sparsity_out(0);
348
- using detail::casadi_to_index;
349
- if (!sparsity.is_dense()) {
350
- std::transform(sparsity.row(), sparsity.row() + sparsity.nnz(),
351
- inner_idx.begin(), casadi_to_index<config_t>);
352
- std::transform(sparsity.colind(),
353
- sparsity.colind() + this->get_n() + 1,
354
- outer_ptr.begin(), casadi_to_index<config_t>);
355
- }
356
- }
357
- }
358
-
359
- template <Config Conf>
360
- void CasADiProblem<Conf>::eval_hess_ψ_prod(crvec x, crvec y, crvec Σ,
361
- real_t scale, crvec v,
362
- rvec Hv) const {
363
- assert(impl->hess_ψ_prod.has_value());
364
- (*impl->hess_ψ_prod)({x.data(), param.data(), y.data(), Σ.data(), &scale,
365
- this->D.lowerbound.data(), this->D.upperbound.data(),
366
- v.data()},
367
- {Hv.data()});
368
- }
369
-
370
- template <Config Conf>
371
- auto CasADiProblem<Conf>::get_hess_ψ_num_nonzeros() const -> length_t {
372
- if (!impl->hess_ψ.has_value())
373
- return 0;
374
- auto &&sparsity = impl->hess_ψ->fun.sparsity_out(0);
375
- return sparsity.is_dense() ? 0 : static_cast<length_t>(sparsity.nnz());
376
- }
377
-
378
- template <Config Conf>
379
- void CasADiProblem<Conf>::eval_hess_ψ(crvec x, crvec y, crvec Σ, real_t scale,
380
- rindexvec inner_idx, rindexvec outer_ptr,
381
- rvec H_values) const {
382
- assert(impl->hess_ψ.has_value());
383
- if (H_values.size() > 0) {
384
- (*impl->hess_ψ)({x.data(), param.data(), y.data(), Σ.data(), &scale,
385
- this->D.lowerbound.data(), this->D.upperbound.data()},
386
- {H_values.data()});
387
- } else {
388
- auto &&sparsity = impl->hess_ψ->fun.sparsity_out(0);
389
- using detail::casadi_to_index;
390
- if (!sparsity.is_dense()) {
391
- std::transform(sparsity.row(), sparsity.row() + sparsity.nnz(),
392
- inner_idx.begin(), casadi_to_index<config_t>);
393
- std::transform(sparsity.colind(),
394
- sparsity.colind() + this->get_n() + 1,
395
- outer_ptr.begin(), casadi_to_index<config_t>);
396
- }
397
- }
398
- }
399
-
400
- template <Config Conf>
401
- bool CasADiProblem<Conf>::provides_eval_grad_gi() const {
402
- return false; // TODO
403
- }
404
- template <Config Conf>
405
- bool CasADiProblem<Conf>::provides_eval_jac_g() const {
406
- return impl->jac_g.has_value();
407
- }
408
- template <Config Conf>
409
- bool CasADiProblem<Conf>::provides_eval_hess_L_prod() const {
410
- return impl->hess_L_prod.has_value();
411
- }
412
- template <Config Conf>
413
- bool CasADiProblem<Conf>::provides_eval_hess_L() const {
414
- return impl->hess_L.has_value();
415
- }
416
- template <Config Conf>
417
- bool CasADiProblem<Conf>::provides_eval_hess_ψ_prod() const {
418
- return impl->hess_ψ_prod.has_value();
419
- }
420
- template <Config Conf>
421
- bool CasADiProblem<Conf>::provides_eval_hess_ψ() const {
422
- return impl->hess_ψ.has_value();
423
- }
424
-
425
- } // namespace alpaqa
@@ -1,164 +0,0 @@
1
- #pragma once
2
-
3
- #include <alpaqa/implementation/inner/panoc-helpers.tpp>
4
- #include <alpaqa/inner/directions/panoc/structured-lbfgs.hpp>
5
-
6
- namespace alpaqa {
7
-
8
- template <Config Conf>
9
- void StructuredLBFGSDirection<Conf>::initialize(
10
- const Problem &problem, crvec y, crvec Σ, [[maybe_unused]] real_t γ_0,
11
- [[maybe_unused]] crvec x_0, [[maybe_unused]] crvec x̂_0,
12
- [[maybe_unused]] crvec p_0, [[maybe_unused]] crvec grad_ψx_0) {
13
- if (!problem.provides_eval_inactive_indices_res_lna())
14
- throw std::invalid_argument(
15
- "Structured L-BFGS requires eval_inactive_indices_res_lna()");
16
- if (direction_params.hessian_vec_factor != 0 &&
17
- !direction_params.hessian_vec_finite_differences &&
18
- !direction_params.full_augmented_hessian &&
19
- !problem.provides_eval_hess_L_prod())
20
- throw std::invalid_argument(
21
- "Structured L-BFGS requires eval_hess_L_prod(). Alternatively, set "
22
- "hessian_vec_factor = 0 or hessian_vec_finite_differences = true.");
23
- if (direction_params.hessian_vec_factor != 0 &&
24
- !direction_params.hessian_vec_finite_differences &&
25
- direction_params.full_augmented_hessian &&
26
- !(problem.provides_eval_hess_L_prod() ||
27
- problem.provides_eval_hess_ψ_prod()))
28
- throw std::invalid_argument(
29
- "Structured L-BFGS requires _eval_hess_ψ_prod() or "
30
- "eval_hess_L_prod(). Alternatively, set "
31
- "hessian_vec_factor = 0 or hessian_vec_finite_differences = true.");
32
- if (direction_params.hessian_vec_factor != 0 &&
33
- !direction_params.hessian_vec_finite_differences &&
34
- direction_params.full_augmented_hessian &&
35
- !problem.provides_eval_hess_ψ_prod() &&
36
- !(problem.provides_get_box_D() && problem.provides_eval_grad_gi()))
37
- throw std::invalid_argument(
38
- "Structured L-BFGS requires either eval_hess_ψ_prod() or "
39
- "get_box_D() and eval_grad_gi(). Alternatively, set "
40
- "hessian_vec_factor = 0, hessian_vec_finite_differences = true, or "
41
- "full_augmented_hessian = false.");
42
- // Store references to problem and ALM variables
43
- this->problem = &problem;
44
- this->y.emplace(y);
45
- this->Σ.emplace(Σ);
46
- // Allocate workspaces
47
- const auto n = problem.get_n();
48
- const auto m = problem.get_m();
49
- lbfgs.resize(n);
50
- J_sto.resize(n);
51
- HqK.resize(n);
52
- if (direction_params.hessian_vec_finite_differences) {
53
- work_n.resize(n);
54
- work_n2.resize(n);
55
- work_m.resize(m);
56
- } else if (direction_params.full_augmented_hessian) {
57
- work_n.resize(n);
58
- work_m.resize(m);
59
- }
60
- }
61
-
62
- template <Config Conf>
63
- bool StructuredLBFGSDirection<Conf>::apply(real_t γₖ, crvec xₖ,
64
- [[maybe_unused]] crvec x̂ₖ, crvec pₖ,
65
- crvec grad_ψxₖ, rvec qₖ) const {
66
- const auto n = problem->get_n();
67
-
68
- // Find inactive indices J
69
- auto nJ = problem->eval_inactive_indices_res_lna(γₖ, xₖ, grad_ψxₖ, J_sto);
70
- auto J = J_sto.topRows(nJ);
71
-
72
- // There are no inactive indices J
73
- if (nJ == 0) {
74
- // No free variables, no Newton step possible
75
- return false; // Simply use the projection step
76
- }
77
- // There are inactive indices J
78
- if (J.size() == n) { // There are no active indices K
79
- // If all indices are free, we can use standard L-BFGS,
80
- qₖ = (real_t(1) / γₖ) * pₖ;
81
- return lbfgs.apply(qₖ, γₖ);
82
- }
83
- // There are active indices K
84
- qₖ = pₖ;
85
- if (direction_params.hessian_vec_factor != 0) {
86
- qₖ(J).setZero();
87
- approximate_hessian_vec_term(xₖ, grad_ψxₖ, qₖ, J);
88
- // Compute right-hand side of 6.1c
89
- qₖ(J) = (real_t(1) / γₖ) * pₖ(J) -
90
- direction_params.hessian_vec_factor * HqK(J);
91
- } else {
92
- qₖ(J) = (real_t(1) / γₖ) * pₖ(J);
93
- }
94
- // If there are active indices, we need the specialized version
95
- // that only applies L-BFGS to the inactive indices
96
- bool success = lbfgs.apply_masked(qₖ, γₖ, J);
97
- if (success)
98
- return true;
99
- // If L-BFGS application failed, qₖ(J) still contains
100
- // -∇ψ(x)(J) - HqK(J) or -∇ψ(x)(J), which is not a valid step.
101
- // A good alternative is to use H₀ = γI as an L-BFGS estimate.
102
- // This seems to perform better in practice than just falling back to a
103
- // projected gradient step.
104
- switch (direction_params.failure_policy) {
105
- case DirectionParams::FallbackToProjectedGradient: return success;
106
- case DirectionParams::UseScaledLBFGSInput:
107
- if (nJ == n)
108
- qₖ *= γₖ;
109
- else
110
- qₖ(J) *= γₖ;
111
- return true;
112
- default: return false;
113
- }
114
- }
115
-
116
- template <Config Conf>
117
- void StructuredLBFGSDirection<Conf>::approximate_hessian_vec_term(
118
- crvec xₖ, crvec grad_ψxₖ, rvec qₖ, crindexvec J) const {
119
- const auto m = problem->get_m();
120
- // Either compute the Hessian-vector product using finite differences
121
- if (direction_params.hessian_vec_finite_differences) {
122
- Helpers::calc_augmented_lagrangian_hessian_prod_fd(
123
- *problem, xₖ, *y, *Σ, grad_ψxₖ, qₖ, HqK, work_n, work_n2, work_m);
124
- }
125
- // Or using an exact AD
126
- else {
127
- if (!direction_params.full_augmented_hessian) {
128
- // Compute the product with the Hessian of the Lagrangian
129
- problem->eval_hess_L_prod(xₖ, *y, 1, qₖ, HqK);
130
- } else {
131
- if (problem->provides_eval_hess_ψ_prod()) {
132
- // Compute the product with the Hessian of the augmented
133
- // Lagrangian
134
- problem->eval_hess_ψ_prod(xₖ, *y, *Σ, 1, qₖ, HqK);
135
- } else {
136
- // Compute the product with the Hessian of the Lagrangian
137
- problem->eval_hess_L_prod(xₖ, *y, 1, qₖ, HqK);
138
- // And then add the Hessian of the penalty terms, to get the
139
- // Hessian of the full augmented Lagrangian (if required)
140
- if (direction_params.full_augmented_hessian) {
141
- assert(m == 0 || problem->provides_eval_grad_gi());
142
- const auto &D = problem->get_box_D();
143
- auto &g = work_m;
144
- problem->eval_g(xₖ, g);
145
- for (index_t i = 0; i < m; ++i) {
146
- real_t ζ = g(i) + (*y)(i) / (*Σ)(i);
147
- bool inactive =
148
- D.lowerbound(i) < ζ && ζ < D.upperbound(i);
149
- if (not inactive) {
150
- problem->eval_grad_gi(xₖ, i, work_n);
151
- auto t = (*Σ)(i)*work_n.dot(qₖ);
152
- // TODO: the dot product is more work than
153
- // strictly necessary (only over K)
154
- for (auto j : J)
155
- HqK(j) += work_n(j) * t;
156
- }
157
- }
158
- }
159
- }
160
- }
161
- }
162
- }
163
-
164
- } // namespace alpaqa