casadi 3.6.5__cp38-none-macosx_11_0_arm64.whl → 3.6.6__cp38-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 (642) hide show
  1. casadi/_casadi.so +0 -0
  2. casadi/casadi-cli +0 -0
  3. casadi/casadi.py +663 -257
  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 +13 -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 +13 -3
  31. casadi/include/casadi/core/optistack.hpp +23 -0
  32. casadi/include/casadi/core/runtime/casadi_nlp.hpp +2 -0
  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 +1397 -955
  41. casadi/include/casadi/doc_merged.i +867 -675
  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 +33 -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 +492 -0
  60. casadi/include/fatrop/function_evaluation/CasadiCodegen.hpp +104 -0
  61. casadi/include/fatrop/function_evaluation/FunctionEvaluation.hpp +60 -0
  62. casadi/include/fatrop/json/json.h +946 -0
  63. casadi/include/fatrop/ocp/CasadiCApiUserdataWrap.hpp +87 -0
  64. casadi/include/fatrop/ocp/DuInfEvaluator.hpp +38 -0
  65. casadi/include/fatrop/ocp/FatropOCP.hpp +161 -0
  66. casadi/include/fatrop/ocp/FatropOCPBuilder.hpp +52 -0
  67. casadi/include/fatrop/ocp/OCP.hpp +82 -0
  68. casadi/include/fatrop/ocp/OCPAbstract.hpp +254 -0
  69. casadi/include/fatrop/ocp/OCPAdapter.hpp +197 -0
  70. casadi/include/fatrop/ocp/OCPCInterface.h +289 -0
  71. casadi/include/fatrop/ocp/OCPDims.hpp +60 -0
  72. casadi/include/fatrop/ocp/OCPInitializer.hpp +41 -0
  73. casadi/include/fatrop/ocp/OCPKKT.hpp +69 -0
  74. casadi/include/fatrop/ocp/OCPLSRiccati.hpp +191 -0
  75. casadi/include/fatrop/ocp/OCPLSScaler.hpp +66 -0
  76. casadi/include/fatrop/ocp/OCPLinearSolver.hpp +75 -0
  77. casadi/include/fatrop/ocp/OCPNoScaling.hpp +42 -0
  78. casadi/include/fatrop/ocp/OCPScalingMethod.hpp +42 -0
  79. casadi/include/fatrop/ocp/StageOCP.hpp +592 -0
  80. casadi/include/fatrop/ocp/StageOCPApplication.hpp +242 -0
  81. casadi/include/fatrop/ocp/StageOCPExpressions.hpp +182 -0
  82. casadi/include/fatrop/ocp/UStageEvalAbstract.hpp +168 -0
  83. casadi/include/fatrop/ocp/UStageOCPImpl.hpp +152 -0
  84. casadi/include/fatrop/quasi_newton/bfgs.hpp +159 -0
  85. casadi/include/fatrop/solver/AlgBuilder.hpp +66 -0
  86. casadi/include/fatrop/solver/AlgStrategy.hpp +33 -0
  87. casadi/include/fatrop/solver/FatropAlg.hpp +108 -0
  88. casadi/include/fatrop/solver/FatropData.hpp +188 -0
  89. casadi/include/fatrop/solver/FatropOptions.hpp +94 -0
  90. casadi/include/fatrop/solver/FatropPrinter.hpp +65 -0
  91. casadi/include/fatrop/solver/FatropStats.hpp +63 -0
  92. casadi/include/fatrop/solver/Filter.hpp +54 -0
  93. casadi/include/fatrop/solver/IterationData.hpp +55 -0
  94. casadi/include/fatrop/solver/LineSearch.hpp +86 -0
  95. casadi/include/fatrop/solver/NLPL1.hpp +263 -0
  96. casadi/include/fatrop/templates/NLPAlg.hpp +102 -0
  97. casadi/include/highs/HConfig.h +8 -7
  98. casadi/include/highs/Highs.h +93 -23
  99. casadi/include/highs/filereaderlp/def.hpp +19 -0
  100. casadi/include/highs/interfaces/highs_c_api.h +200 -24
  101. casadi/include/highs/io/Filereader.h +1 -1
  102. casadi/include/highs/io/FilereaderEms.h +1 -1
  103. casadi/include/highs/io/FilereaderLp.h +1 -1
  104. casadi/include/highs/io/FilereaderMps.h +1 -1
  105. casadi/include/highs/io/HMPSIO.h +1 -1
  106. casadi/include/highs/io/HMpsFF.h +5 -3
  107. casadi/include/highs/io/HighsIO.h +18 -8
  108. casadi/include/highs/io/LoadOptions.h +1 -1
  109. casadi/include/highs/ipm/IpxSolution.h +35 -0
  110. casadi/include/highs/ipm/IpxWrapper.h +1 -1
  111. casadi/include/highs/ipm/basiclu/basiclu.h +161 -0
  112. casadi/include/highs/ipm/basiclu/basiclu_factorize.h +247 -0
  113. casadi/include/highs/ipm/basiclu/basiclu_get_factors.h +108 -0
  114. casadi/include/highs/ipm/basiclu/basiclu_initialize.h +119 -0
  115. casadi/include/highs/ipm/basiclu/basiclu_obj_factorize.h +34 -0
  116. casadi/include/highs/ipm/basiclu/basiclu_obj_free.h +19 -0
  117. casadi/include/highs/ipm/basiclu/basiclu_obj_get_factors.h +34 -0
  118. casadi/include/highs/ipm/basiclu/basiclu_obj_initialize.h +46 -0
  119. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_dense.h +29 -0
  120. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_for_update.h +42 -0
  121. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_sparse.h +32 -0
  122. casadi/include/highs/ipm/basiclu/basiclu_obj_update.h +31 -0
  123. casadi/include/highs/ipm/basiclu/basiclu_object.h +30 -0
  124. casadi/include/highs/ipm/basiclu/basiclu_solve_dense.h +75 -0
  125. casadi/include/highs/ipm/basiclu/basiclu_solve_for_update.h +169 -0
  126. casadi/include/highs/ipm/basiclu/basiclu_solve_sparse.h +112 -0
  127. casadi/include/highs/ipm/basiclu/basiclu_update.h +125 -0
  128. casadi/include/highs/ipm/basiclu/lu_def.h +39 -0
  129. casadi/include/highs/ipm/basiclu/lu_file.h +21 -0
  130. casadi/include/highs/ipm/basiclu/lu_internal.h +220 -0
  131. casadi/include/highs/ipm/basiclu/lu_list.h +168 -0
  132. casadi/include/highs/ipm/ipx/basiclu_kernel.h +20 -0
  133. casadi/include/highs/ipm/ipx/basiclu_wrapper.h +47 -0
  134. casadi/include/highs/ipm/ipx/basis.h +351 -0
  135. casadi/include/highs/ipm/ipx/conjugate_residuals.h +74 -0
  136. casadi/include/highs/ipm/ipx/control.h +163 -0
  137. casadi/include/highs/ipm/ipx/crossover.h +157 -0
  138. casadi/include/highs/ipm/ipx/diagonal_precond.h +45 -0
  139. casadi/include/highs/ipm/ipx/forrest_tomlin.h +102 -0
  140. casadi/include/highs/ipm/ipx/guess_basis.h +21 -0
  141. casadi/include/highs/ipm/ipx/indexed_vector.h +113 -0
  142. casadi/include/highs/ipm/ipx/info.h +27 -0
  143. casadi/include/highs/ipm/ipx/ipm.h +94 -0
  144. casadi/include/highs/ipm/ipx/ipx_c.h +47 -0
  145. casadi/include/highs/ipm/ipx/ipx_config.h +9 -0
  146. casadi/include/highs/ipm/ipx/ipx_info.h +111 -0
  147. casadi/include/highs/ipm/ipx/ipx_internal.h +88 -0
  148. casadi/include/highs/ipm/ipx/ipx_parameters.h +75 -0
  149. casadi/include/highs/ipm/ipx/ipx_status.h +57 -0
  150. casadi/include/highs/ipm/ipx/iterate.h +328 -0
  151. casadi/include/highs/ipm/ipx/kkt_solver.h +70 -0
  152. casadi/include/highs/ipm/ipx/kkt_solver_basis.h +66 -0
  153. casadi/include/highs/ipm/ipx/kkt_solver_diag.h +48 -0
  154. casadi/include/highs/ipm/ipx/linear_operator.h +26 -0
  155. casadi/include/highs/ipm/ipx/lp_solver.h +201 -0
  156. casadi/include/highs/ipm/ipx/lu_factorization.h +79 -0
  157. casadi/include/highs/ipm/ipx/lu_update.h +129 -0
  158. casadi/include/highs/ipm/ipx/maxvolume.h +54 -0
  159. casadi/include/highs/ipm/ipx/model.h +409 -0
  160. casadi/include/highs/ipm/ipx/multistream.h +52 -0
  161. casadi/include/highs/ipm/ipx/normal_matrix.h +44 -0
  162. casadi/include/highs/ipm/ipx/power_method.h +44 -0
  163. casadi/include/highs/ipm/ipx/sparse_matrix.h +195 -0
  164. casadi/include/highs/ipm/ipx/sparse_utils.h +58 -0
  165. casadi/include/highs/ipm/ipx/splitted_normal_matrix.h +63 -0
  166. casadi/include/highs/ipm/ipx/starting_basis.h +39 -0
  167. casadi/include/highs/ipm/ipx/symbolic_invert.h +29 -0
  168. casadi/include/highs/ipm/ipx/timer.h +24 -0
  169. casadi/include/highs/ipm/ipx/utils.h +39 -0
  170. casadi/include/highs/lp_data/HConst.h +20 -10
  171. casadi/include/highs/lp_data/HStruct.h +23 -1
  172. casadi/include/highs/lp_data/HighsAnalysis.h +1 -1
  173. casadi/include/highs/lp_data/HighsCallback.h +10 -3
  174. casadi/include/highs/lp_data/HighsCallbackStruct.h +31 -5
  175. casadi/include/highs/lp_data/HighsDebug.h +1 -1
  176. casadi/include/highs/lp_data/HighsInfo.h +20 -2
  177. casadi/include/highs/lp_data/HighsInfoDebug.h +1 -1
  178. casadi/include/highs/lp_data/HighsLp.h +17 -1
  179. casadi/include/highs/lp_data/HighsLpSolverObject.h +1 -1
  180. casadi/include/highs/lp_data/HighsLpUtils.h +19 -19
  181. casadi/include/highs/lp_data/HighsModelUtils.h +1 -1
  182. casadi/include/highs/lp_data/HighsOptions.h +237 -10
  183. casadi/include/highs/lp_data/HighsRanging.h +1 -1
  184. casadi/include/highs/lp_data/HighsRuntimeOptions.h +2 -2
  185. casadi/include/highs/lp_data/HighsSolution.h +2 -2
  186. casadi/include/highs/lp_data/HighsSolutionDebug.h +1 -1
  187. casadi/include/highs/lp_data/HighsSolve.h +3 -1
  188. casadi/include/highs/lp_data/HighsStatus.h +1 -1
  189. casadi/include/highs/mip/HighsCliqueTable.h +4 -4
  190. casadi/include/highs/mip/HighsConflictPool.h +1 -1
  191. casadi/include/highs/mip/HighsCutGeneration.h +1 -1
  192. casadi/include/highs/mip/HighsCutPool.h +2 -2
  193. casadi/include/highs/mip/HighsDebugSol.h +22 -29
  194. casadi/include/highs/mip/HighsDomain.h +10 -2
  195. casadi/include/highs/mip/HighsDomainChange.h +1 -1
  196. casadi/include/highs/mip/HighsDynamicRowMatrix.h +5 -3
  197. casadi/include/highs/mip/HighsGFkSolve.h +3 -3
  198. casadi/include/highs/mip/HighsImplications.h +3 -3
  199. casadi/include/highs/mip/HighsLpAggregator.h +1 -1
  200. casadi/include/highs/mip/HighsLpRelaxation.h +6 -1
  201. casadi/include/highs/mip/HighsMipSolver.h +4 -2
  202. casadi/include/highs/mip/HighsMipSolverData.h +47 -4
  203. casadi/include/highs/mip/HighsModkSeparator.h +2 -2
  204. casadi/include/highs/mip/HighsNodeQueue.h +5 -3
  205. casadi/include/highs/mip/HighsObjectiveFunction.h +1 -1
  206. casadi/include/highs/mip/HighsPathSeparator.h +2 -2
  207. casadi/include/highs/mip/HighsPrimalHeuristics.h +1 -1
  208. casadi/include/highs/mip/HighsPseudocost.h +35 -23
  209. casadi/include/highs/mip/HighsRedcostFixing.h +1 -1
  210. casadi/include/highs/mip/HighsSearch.h +2 -1
  211. casadi/include/highs/mip/HighsSeparation.h +1 -1
  212. casadi/include/highs/mip/HighsSeparator.h +1 -1
  213. casadi/include/highs/mip/HighsTableauSeparator.h +1 -1
  214. casadi/include/highs/mip/HighsTransformedLp.h +1 -1
  215. casadi/include/highs/model/HighsHessian.h +5 -0
  216. casadi/include/highs/model/HighsHessianUtils.h +2 -0
  217. casadi/include/highs/model/HighsModel.h +10 -1
  218. casadi/include/highs/parallel/HighsMutex.h +2 -1
  219. casadi/include/highs/parallel/HighsParallel.h +7 -2
  220. casadi/include/highs/parallel/HighsTask.h +1 -2
  221. casadi/include/highs/pdlp/CupdlpWrapper.h +93 -0
  222. casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +41 -0
  223. casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +423 -0
  224. casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +183 -0
  225. casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +19 -0
  226. casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +31 -0
  227. casadi/include/highs/pdlp/cupdlp/cupdlp_scaling_cuda.h +28 -0
  228. casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +98 -0
  229. casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +33 -0
  230. casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +1726 -0
  231. casadi/include/highs/pdqsort/pdqsort.h +532 -0
  232. casadi/include/highs/presolve/HPresolve.h +27 -14
  233. casadi/include/highs/presolve/HPresolveAnalysis.h +1 -1
  234. casadi/include/highs/presolve/HighsPostsolveStack.h +92 -68
  235. casadi/include/highs/presolve/HighsSymmetry.h +6 -5
  236. casadi/include/highs/presolve/ICrash.h +8 -2
  237. casadi/include/highs/presolve/ICrashUtil.h +1 -1
  238. casadi/include/highs/presolve/ICrashX.h +1 -1
  239. casadi/include/highs/presolve/PresolveComponent.h +1 -1
  240. casadi/include/highs/qpsolver/a_asm.hpp +23 -12
  241. casadi/include/highs/qpsolver/a_quass.hpp +8 -1
  242. casadi/include/highs/qpsolver/basis.hpp +150 -0
  243. casadi/include/highs/qpsolver/crashsolution.hpp +12 -0
  244. casadi/include/highs/qpsolver/dantzigpricing.hpp +72 -0
  245. casadi/include/highs/qpsolver/devexpricing.hpp +99 -0
  246. casadi/include/highs/qpsolver/eventhandler.hpp +23 -0
  247. casadi/include/highs/qpsolver/factor.hpp +400 -0
  248. casadi/include/highs/qpsolver/feasibility_bounded.hpp +105 -0
  249. casadi/include/highs/qpsolver/feasibility_highs.hpp +270 -0
  250. casadi/include/highs/qpsolver/gradient.hpp +39 -0
  251. casadi/include/highs/qpsolver/instance.hpp +63 -0
  252. casadi/include/highs/qpsolver/matrix.hpp +335 -0
  253. casadi/include/highs/qpsolver/pricing.hpp +15 -0
  254. casadi/include/highs/qpsolver/qpconst.hpp +27 -0
  255. casadi/include/highs/qpsolver/{vector.hpp → qpvector.hpp} +25 -25
  256. casadi/include/highs/qpsolver/quass.hpp +1 -1
  257. casadi/include/highs/qpsolver/ratiotest.hpp +19 -0
  258. casadi/include/highs/qpsolver/runtime.hpp +38 -0
  259. casadi/include/highs/qpsolver/settings.hpp +57 -0
  260. casadi/include/highs/qpsolver/snippets.hpp +29 -0
  261. casadi/include/highs/qpsolver/statistics.hpp +23 -0
  262. casadi/include/highs/qpsolver/steepestedgepricing.hpp +167 -0
  263. casadi/include/highs/simplex/HApp.h +1 -1
  264. casadi/include/highs/simplex/HEkk.h +52 -18
  265. casadi/include/highs/simplex/HEkkDual.h +1 -1
  266. casadi/include/highs/simplex/HEkkDualRHS.h +6 -7
  267. casadi/include/highs/simplex/HEkkDualRow.h +2 -2
  268. casadi/include/highs/simplex/HEkkPrimal.h +6 -1
  269. casadi/include/highs/simplex/HSimplex.h +1 -3
  270. casadi/include/highs/simplex/HSimplexDebug.h +1 -1
  271. casadi/include/highs/simplex/HSimplexNla.h +1 -1
  272. casadi/include/highs/simplex/HSimplexReport.h +1 -1
  273. casadi/include/highs/simplex/HighsSimplexAnalysis.h +228 -100
  274. casadi/include/highs/simplex/SimplexConst.h +1 -1
  275. casadi/include/highs/simplex/SimplexStruct.h +2 -2
  276. casadi/include/highs/simplex/SimplexTimer.h +1 -1
  277. casadi/include/highs/test/DevKkt.h +1 -1
  278. casadi/include/highs/test/KktCh2.h +1 -1
  279. casadi/include/highs/util/FactorTimer.h +1 -1
  280. casadi/include/highs/util/HFactor.h +35 -6
  281. casadi/include/highs/util/HFactorConst.h +1 -1
  282. casadi/include/highs/util/HFactorDebug.h +1 -1
  283. casadi/include/highs/util/HSet.h +1 -1
  284. casadi/include/highs/util/HVector.h +1 -1
  285. casadi/include/highs/util/HVectorBase.h +1 -1
  286. casadi/include/highs/util/HighsCDouble.h +3 -3
  287. casadi/include/highs/util/HighsComponent.h +1 -1
  288. casadi/include/highs/util/HighsDataStack.h +4 -4
  289. casadi/include/highs/util/HighsDisjointSets.h +1 -1
  290. casadi/include/highs/util/HighsHash.h +28 -21
  291. casadi/include/highs/util/HighsHashTree.h +63 -63
  292. casadi/include/highs/util/HighsInt.h +1 -1
  293. casadi/include/highs/util/HighsIntegers.h +8 -9
  294. casadi/include/highs/util/HighsLinearSumBounds.h +1 -1
  295. casadi/include/highs/util/HighsMatrixPic.h +1 -1
  296. casadi/include/highs/util/HighsMatrixSlice.h +9 -6
  297. casadi/include/highs/util/HighsMatrixUtils.h +1 -1
  298. casadi/include/highs/util/HighsMemoryAllocation.h +55 -0
  299. casadi/include/highs/util/HighsRandom.h +27 -15
  300. casadi/include/highs/util/HighsRbTree.h +2 -2
  301. casadi/include/highs/util/HighsSort.h +7 -7
  302. casadi/include/highs/util/HighsSparseMatrix.h +5 -2
  303. casadi/include/highs/util/HighsSparseVectorSum.h +2 -2
  304. casadi/include/highs/util/HighsSplay.h +1 -1
  305. casadi/include/highs/util/HighsTimer.h +18 -9
  306. casadi/include/highs/util/HighsUtils.h +15 -8
  307. casadi/include/highs/util/stringutil.h +9 -4
  308. casadi/include/highs/zstr/strict_fstream.hpp +237 -0
  309. casadi/include/highs/zstr/zstr.hpp +472 -0
  310. casadi/include/highs_export.h +43 -0
  311. casadi/include/licenses/daqp-external/LICENSE +21 -0
  312. casadi/include/licenses/{alpaqa-external/LICENSE → fatrop-external/LICENSE.txt} +2 -2
  313. casadi/include/licenses/fatrop-external/external/blasfeo/LICENSE.txt +26 -0
  314. casadi/include/licenses/fatrop-external/external/pybind11/LICENSE +29 -0
  315. casadi/include/licenses/fatrop-external/misc/license_header.txt +17 -0
  316. casadi/include/licenses/highs-external/{LICENSE → LICENSE.txt} +1 -1
  317. casadi/include/osqp/constants.h +2 -3
  318. casadi/include/osqp/version.h +9 -0
  319. casadi/include/sleqp/defs.h +4 -4
  320. casadi/include/sleqp/export.h +1 -0
  321. casadi/lib/cmake/tinyxml2/tinyxml2-config-version.cmake +0 -5
  322. casadi/lib/cmake/tinyxml2/tinyxml2-static-targets.cmake +10 -6
  323. casadi/lib/libtinyxml2.a +0 -0
  324. casadi/lib/pkgconfig/tinyxml2.pc +1 -1
  325. casadi/libCbc.3.10.11.dylib +0 -0
  326. casadi/libCbc.3.dylib +0 -0
  327. casadi/libCbc.dylib +0 -0
  328. casadi/libCbc.la +2 -2
  329. casadi/libCbcSolver.3.10.11.dylib +0 -0
  330. casadi/libCbcSolver.3.dylib +0 -0
  331. casadi/libCbcSolver.dylib +0 -0
  332. casadi/libCbcSolver.la +2 -2
  333. casadi/libCgl.1.10.8.dylib +0 -0
  334. casadi/libCgl.1.dylib +0 -0
  335. casadi/libCgl.dylib +0 -0
  336. casadi/libCgl.la +2 -2
  337. casadi/libClp.1.14.9.dylib +0 -0
  338. casadi/libClp.1.dylib +0 -0
  339. casadi/libClp.dylib +0 -0
  340. casadi/libClp.la +2 -2
  341. casadi/libClpSolver.1.14.9.dylib +0 -0
  342. casadi/libClpSolver.1.dylib +0 -0
  343. casadi/libClpSolver.dylib +0 -0
  344. casadi/libClpSolver.la +2 -2
  345. casadi/libCoinUtils.3.11.10.dylib +0 -0
  346. casadi/libCoinUtils.3.dylib +0 -0
  347. casadi/libCoinUtils.dylib +0 -0
  348. casadi/libCoinUtils.la +1 -1
  349. casadi/libOsi.1.13.9.dylib +0 -0
  350. casadi/libOsi.1.dylib +0 -0
  351. casadi/libOsi.dylib +0 -0
  352. casadi/libOsi.la +2 -2
  353. casadi/libOsiCbc.3.10.11.dylib +0 -0
  354. casadi/libOsiCbc.3.dylib +0 -0
  355. casadi/libOsiCbc.dylib +0 -0
  356. casadi/libOsiCbc.la +2 -2
  357. casadi/libOsiClp.1.14.9.dylib +0 -0
  358. casadi/libOsiClp.1.dylib +0 -0
  359. casadi/libOsiClp.dylib +0 -0
  360. casadi/libOsiClp.la +2 -2
  361. casadi/libOsiCommonTests.1.13.9.dylib +0 -0
  362. casadi/libOsiCommonTests.1.dylib +0 -0
  363. casadi/libOsiCommonTests.dylib +0 -0
  364. casadi/libOsiCommonTests.la +2 -2
  365. casadi/libblasfeo.dylib +0 -0
  366. casadi/libbonmin.4.8.9.dylib +0 -0
  367. casadi/libbonmin.4.dylib +0 -0
  368. casadi/libbonmin.dylib +0 -0
  369. casadi/libbonmin.la +2 -2
  370. casadi/libcasadi.3.7.dylib +0 -0
  371. casadi/libcasadi.dylib +0 -0
  372. casadi/libcasadi_conic_cbc.3.7.dylib +0 -0
  373. casadi/libcasadi_conic_cbc.dylib +0 -0
  374. casadi/libcasadi_conic_clp.3.7.dylib +0 -0
  375. casadi/libcasadi_conic_clp.dylib +0 -0
  376. casadi/libcasadi_conic_cplex.3.7.dylib +0 -0
  377. casadi/libcasadi_conic_cplex.dylib +0 -0
  378. casadi/libcasadi_conic_daqp.3.7.dylib +0 -0
  379. casadi/libcasadi_conic_daqp.dylib +0 -0
  380. casadi/libcasadi_conic_fatrop.3.7.dylib +0 -0
  381. casadi/libcasadi_conic_fatrop.dylib +0 -0
  382. casadi/libcasadi_conic_gurobi.3.7.dylib +0 -0
  383. casadi/libcasadi_conic_gurobi.dylib +0 -0
  384. casadi/libcasadi_conic_highs.3.7.dylib +0 -0
  385. casadi/libcasadi_conic_highs.dylib +0 -0
  386. casadi/libcasadi_conic_ipqp.3.7.dylib +0 -0
  387. casadi/libcasadi_conic_ipqp.dylib +0 -0
  388. casadi/libcasadi_conic_nlpsol.3.7.dylib +0 -0
  389. casadi/libcasadi_conic_nlpsol.dylib +0 -0
  390. casadi/libcasadi_conic_osqp.3.7.dylib +0 -0
  391. casadi/libcasadi_conic_osqp.dylib +0 -0
  392. casadi/libcasadi_conic_proxqp.3.7.dylib +0 -0
  393. casadi/libcasadi_conic_proxqp.dylib +0 -0
  394. casadi/libcasadi_conic_qpoases.3.7.dylib +0 -0
  395. casadi/libcasadi_conic_qpoases.dylib +0 -0
  396. casadi/libcasadi_conic_qrqp.3.7.dylib +0 -0
  397. casadi/libcasadi_conic_qrqp.dylib +0 -0
  398. casadi/libcasadi_conic_superscs.3.7.dylib +0 -0
  399. casadi/libcasadi_conic_superscs.dylib +0 -0
  400. casadi/libcasadi_importer_shell.3.7.dylib +0 -0
  401. casadi/libcasadi_importer_shell.dylib +0 -0
  402. casadi/libcasadi_integrator_collocation.3.7.dylib +0 -0
  403. casadi/libcasadi_integrator_collocation.dylib +0 -0
  404. casadi/libcasadi_integrator_cvodes.3.7.dylib +0 -0
  405. casadi/libcasadi_integrator_cvodes.dylib +0 -0
  406. casadi/libcasadi_integrator_idas.3.7.dylib +0 -0
  407. casadi/libcasadi_integrator_idas.dylib +0 -0
  408. casadi/libcasadi_integrator_rk.3.7.dylib +0 -0
  409. casadi/libcasadi_integrator_rk.dylib +0 -0
  410. casadi/libcasadi_interpolant_bspline.3.7.dylib +0 -0
  411. casadi/libcasadi_interpolant_bspline.dylib +0 -0
  412. casadi/libcasadi_interpolant_linear.3.7.dylib +0 -0
  413. casadi/libcasadi_interpolant_linear.dylib +0 -0
  414. casadi/libcasadi_linsol_csparse.3.7.dylib +0 -0
  415. casadi/libcasadi_linsol_csparse.dylib +0 -0
  416. casadi/libcasadi_linsol_csparsecholesky.3.7.dylib +0 -0
  417. casadi/libcasadi_linsol_csparsecholesky.dylib +0 -0
  418. casadi/libcasadi_linsol_lapacklu.3.7.dylib +0 -0
  419. casadi/libcasadi_linsol_lapacklu.dylib +0 -0
  420. casadi/libcasadi_linsol_lapackqr.3.7.dylib +0 -0
  421. casadi/libcasadi_linsol_lapackqr.dylib +0 -0
  422. casadi/libcasadi_linsol_ldl.3.7.dylib +0 -0
  423. casadi/libcasadi_linsol_ldl.dylib +0 -0
  424. casadi/libcasadi_linsol_lsqr.3.7.dylib +0 -0
  425. casadi/libcasadi_linsol_lsqr.dylib +0 -0
  426. casadi/libcasadi_linsol_ma27.3.7.dylib +0 -0
  427. casadi/libcasadi_linsol_ma27.dylib +0 -0
  428. casadi/libcasadi_linsol_mumps.3.7.dylib +0 -0
  429. casadi/libcasadi_linsol_mumps.dylib +0 -0
  430. casadi/libcasadi_linsol_qr.3.7.dylib +0 -0
  431. casadi/libcasadi_linsol_qr.dylib +0 -0
  432. casadi/libcasadi_linsol_symbolicqr.3.7.dylib +0 -0
  433. casadi/libcasadi_linsol_symbolicqr.dylib +0 -0
  434. casadi/libcasadi_linsol_tridiag.3.7.dylib +0 -0
  435. casadi/libcasadi_linsol_tridiag.dylib +0 -0
  436. casadi/libcasadi_nlpsol_ampl.3.7.dylib +0 -0
  437. casadi/libcasadi_nlpsol_ampl.dylib +0 -0
  438. casadi/libcasadi_nlpsol_blocksqp.3.7.dylib +0 -0
  439. casadi/libcasadi_nlpsol_blocksqp.dylib +0 -0
  440. casadi/libcasadi_nlpsol_bonmin.3.7.dylib +0 -0
  441. casadi/libcasadi_nlpsol_bonmin.dylib +0 -0
  442. casadi/libcasadi_nlpsol_fatrop.3.7.dylib +0 -0
  443. casadi/libcasadi_nlpsol_fatrop.dylib +0 -0
  444. casadi/libcasadi_nlpsol_feasiblesqpmethod.3.7.dylib +0 -0
  445. casadi/libcasadi_nlpsol_feasiblesqpmethod.dylib +0 -0
  446. casadi/libcasadi_nlpsol_ipopt.3.7.dylib +0 -0
  447. casadi/libcasadi_nlpsol_ipopt.dylib +0 -0
  448. casadi/libcasadi_nlpsol_knitro.3.7.dylib +0 -0
  449. casadi/libcasadi_nlpsol_knitro.dylib +0 -0
  450. casadi/libcasadi_nlpsol_madnlp.3.7.dylib +0 -0
  451. casadi/libcasadi_nlpsol_madnlp.dylib +0 -0
  452. casadi/libcasadi_nlpsol_qrsqp.3.7.dylib +0 -0
  453. casadi/libcasadi_nlpsol_qrsqp.dylib +0 -0
  454. casadi/libcasadi_nlpsol_scpgen.3.7.dylib +0 -0
  455. casadi/libcasadi_nlpsol_scpgen.dylib +0 -0
  456. casadi/libcasadi_nlpsol_sleqp.3.7.dylib +0 -0
  457. casadi/libcasadi_nlpsol_sleqp.dylib +0 -0
  458. casadi/libcasadi_nlpsol_snopt.3.7.dylib +0 -0
  459. casadi/libcasadi_nlpsol_snopt.dylib +0 -0
  460. casadi/libcasadi_nlpsol_sqpmethod.3.7.dylib +0 -0
  461. casadi/libcasadi_nlpsol_sqpmethod.dylib +0 -0
  462. casadi/libcasadi_rootfinder_fast_newton.3.7.dylib +0 -0
  463. casadi/libcasadi_rootfinder_fast_newton.dylib +0 -0
  464. casadi/libcasadi_rootfinder_kinsol.3.7.dylib +0 -0
  465. casadi/libcasadi_rootfinder_kinsol.dylib +0 -0
  466. casadi/libcasadi_rootfinder_newton.3.7.dylib +0 -0
  467. casadi/libcasadi_rootfinder_newton.dylib +0 -0
  468. casadi/libcasadi_rootfinder_nlpsol.3.7.dylib +0 -0
  469. casadi/libcasadi_rootfinder_nlpsol.dylib +0 -0
  470. casadi/libcasadi_sundials_common.3.7.dylib +0 -0
  471. casadi/libcasadi_sundials_common.dylib +0 -0
  472. casadi/libcasadi_xmlfile_tinyxml.3.7.dylib +0 -0
  473. casadi/libcasadi_xmlfile_tinyxml.dylib +0 -0
  474. casadi/libcoinmetis.2.dylib +0 -0
  475. casadi/libcoinmetis.dylib +0 -0
  476. casadi/libcoinmetis.la +2 -2
  477. casadi/libcoinmumps.3.dylib +0 -0
  478. casadi/libcoinmumps.dylib +0 -0
  479. casadi/libcoinmumps.la +2 -2
  480. casadi/libcplex_adaptor.dylib +0 -0
  481. casadi/{libamd.3.0.3.dylib → libdaqp.dylib} +0 -0
  482. casadi/libdaqpstat.a +0 -0
  483. casadi/libfatrop.dylib +0 -0
  484. casadi/libgurobi_adaptor.dylib +0 -0
  485. casadi/libhighs.1.7.dylib +0 -0
  486. casadi/libhighs.1.dylib +0 -0
  487. casadi/libhighs.dylib +0 -0
  488. casadi/libindirect.a +0 -0
  489. casadi/libipopt.3.dylib +0 -0
  490. casadi/libipopt.dylib +0 -0
  491. casadi/libipopt.la +2 -2
  492. casadi/liblinsys.a +0 -0
  493. casadi/{libsuitesparseconfig.7.0.1.dylib → libmatlab_ipc.dylib} +0 -0
  494. casadi/libosqp.a +0 -0
  495. casadi/libosqp.dylib +0 -0
  496. casadi/libqdldl.a +0 -0
  497. casadi/libqdldl.dylib +0 -0
  498. casadi/libsipopt.3.dylib +0 -0
  499. casadi/libsipopt.dylib +0 -0
  500. casadi/libsipopt.la +2 -2
  501. casadi/libsleqp.1.0.1.dylib +0 -0
  502. casadi/libsleqp.dylib +0 -0
  503. casadi/libsuperscs.a +0 -0
  504. casadi/libtrlib.0.4.dylib +0 -0
  505. casadi/libtrlib.dylib +0 -0
  506. casadi/pkgconfig/bonmin.pc +1 -1
  507. casadi/pkgconfig/casadi.pc +5 -5
  508. casadi/pkgconfig/cbc.pc +1 -1
  509. casadi/pkgconfig/cgl.pc +1 -1
  510. casadi/pkgconfig/clp.pc +1 -1
  511. casadi/pkgconfig/coinmetis.pc +1 -1
  512. casadi/pkgconfig/coinmumps.pc +2 -2
  513. casadi/pkgconfig/coinutils.pc +2 -2
  514. casadi/pkgconfig/highs.pc +4 -4
  515. casadi/pkgconfig/ipopt.pc +2 -2
  516. casadi/pkgconfig/osi-cbc.pc +1 -1
  517. casadi/pkgconfig/osi-clp.pc +1 -1
  518. casadi/pkgconfig/osi-unittests.pc +1 -1
  519. casadi/pkgconfig/osi.pc +1 -1
  520. casadi/pkgconfig/sleqp.pc +1 -1
  521. casadi/tools/__init__.py +4 -0
  522. casadi/tools/bounds.py +3 -3
  523. {casadi-3.6.5.dist-info → casadi-3.6.6.dist-info}/METADATA +2 -2
  524. {casadi-3.6.5.dist-info → casadi-3.6.6.dist-info}/RECORD +525 -472
  525. casadi/cmake/alpaqa/alpaqaConfig.cmake +0 -24
  526. casadi/cmake/alpaqa/alpaqaConfigVersion.cmake +0 -70
  527. casadi/cmake/alpaqa/alpaqaTargets-release.cmake +0 -19
  528. casadi/cmake/alpaqa/alpaqaTargets.cmake +0 -116
  529. casadi/include/alpaqa/accelerators/anderson.hpp +0 -133
  530. casadi/include/alpaqa/accelerators/internal/anderson-helpers.hpp +0 -92
  531. casadi/include/alpaqa/accelerators/internal/limited-memory-qr.hpp +0 -295
  532. casadi/include/alpaqa/accelerators/lbfgs.hpp +0 -244
  533. casadi/include/alpaqa/accelerators/steihaugcg.hpp +0 -143
  534. casadi/include/alpaqa/alpaqa.hpp +0 -3
  535. casadi/include/alpaqa/casadi/CasADiControlProblem.hpp +0 -185
  536. casadi/include/alpaqa/casadi/CasADiFunctionWrapper.hpp +0 -104
  537. casadi/include/alpaqa/casadi/CasADiProblem.hpp +0 -102
  538. casadi/include/alpaqa/casadi-loader-export.hpp +0 -15
  539. casadi/include/alpaqa/casadi-ocp-loader-export.hpp +0 -15
  540. casadi/include/alpaqa/config/config.hpp +0 -165
  541. casadi/include/alpaqa/dl/dl-problem.h +0 -476
  542. casadi/include/alpaqa/dl/dl-problem.hpp +0 -301
  543. casadi/include/alpaqa/export.h +0 -42
  544. casadi/include/alpaqa/export.hpp +0 -30
  545. casadi/include/alpaqa/implementation/accelerators/lbfgs.tpp +0 -240
  546. casadi/include/alpaqa/implementation/casadi/CasADiControlProblem.tpp +0 -594
  547. casadi/include/alpaqa/implementation/casadi/CasADiLoader-util.hpp +0 -50
  548. casadi/include/alpaqa/implementation/casadi/CasADiProblem.tpp +0 -425
  549. casadi/include/alpaqa/implementation/inner/directions/panoc/structured-lbfgs.tpp +0 -164
  550. casadi/include/alpaqa/implementation/inner/panoc-helpers.tpp +0 -389
  551. casadi/include/alpaqa/implementation/inner/panoc-ocp.tpp +0 -798
  552. casadi/include/alpaqa/implementation/inner/panoc.tpp +0 -448
  553. casadi/include/alpaqa/implementation/inner/pantr.tpp +0 -474
  554. casadi/include/alpaqa/implementation/inner/zerofpr.tpp +0 -482
  555. casadi/include/alpaqa/implementation/outer/alm.tpp +0 -228
  556. casadi/include/alpaqa/implementation/outer/internal/alm-helpers.tpp +0 -80
  557. casadi/include/alpaqa/implementation/params/params.tpp +0 -158
  558. casadi/include/alpaqa/implementation/problem/ocproblem.tpp +0 -56
  559. casadi/include/alpaqa/implementation/problem/type-erased-problem.tpp +0 -211
  560. casadi/include/alpaqa/implementation/util/io/csv.tpp +0 -120
  561. casadi/include/alpaqa/implementation/util/print.tpp +0 -151
  562. casadi/include/alpaqa/inner/directions/panoc/anderson.hpp +0 -98
  563. casadi/include/alpaqa/inner/directions/panoc/lbfgs.hpp +0 -94
  564. casadi/include/alpaqa/inner/directions/panoc/structured-lbfgs.hpp +0 -146
  565. casadi/include/alpaqa/inner/directions/panoc/structured-newton.hpp +0 -264
  566. casadi/include/alpaqa/inner/directions/panoc-direction-update.hpp +0 -96
  567. casadi/include/alpaqa/inner/directions/panoc-ocp/lqr.hpp +0 -181
  568. casadi/include/alpaqa/inner/directions/panoc-ocp/ocp-vars.hpp +0 -492
  569. casadi/include/alpaqa/inner/directions/pantr/newton-tr.hpp +0 -192
  570. casadi/include/alpaqa/inner/directions/pantr/pantr-direction.hpp +0 -99
  571. casadi/include/alpaqa/inner/inner-solve-options.hpp +0 -30
  572. casadi/include/alpaqa/inner/internal/lipschitz.hpp +0 -27
  573. casadi/include/alpaqa/inner/internal/panoc-helpers.hpp +0 -10
  574. casadi/include/alpaqa/inner/internal/panoc-stop-crit.hpp +0 -124
  575. casadi/include/alpaqa/inner/internal/solverstatus.hpp +0 -42
  576. casadi/include/alpaqa/inner/panoc-ocp.hpp +0 -302
  577. casadi/include/alpaqa/inner/panoc.hpp +0 -274
  578. casadi/include/alpaqa/inner/pantr.hpp +0 -284
  579. casadi/include/alpaqa/inner/zerofpr.hpp +0 -274
  580. casadi/include/alpaqa/ipopt/ipopt-adapter.hpp +0 -81
  581. casadi/include/alpaqa/ipopt/ipopt-enums.hpp +0 -35
  582. casadi/include/alpaqa/lbfgsb/lbfgsb-adapter.hpp +0 -111
  583. casadi/include/alpaqa/newton-tr-pantr-alm.hpp +0 -27
  584. casadi/include/alpaqa/outer/alm.hpp +0 -190
  585. casadi/include/alpaqa/outer/internal/alm-helpers.hpp +0 -10
  586. casadi/include/alpaqa/panoc-alm.hpp +0 -27
  587. casadi/include/alpaqa/panoc-anderson-alm.hpp +0 -27
  588. casadi/include/alpaqa/params/params.hpp +0 -60
  589. casadi/include/alpaqa/problem/box-constr-problem.hpp +0 -220
  590. casadi/include/alpaqa/problem/box.hpp +0 -82
  591. casadi/include/alpaqa/problem/functional-problem.hpp +0 -73
  592. casadi/include/alpaqa/problem/kkt-error.hpp +0 -43
  593. casadi/include/alpaqa/problem/ocproblem-counters.hpp +0 -116
  594. casadi/include/alpaqa/problem/ocproblem.hpp +0 -662
  595. casadi/include/alpaqa/problem/problem-counters.hpp +0 -116
  596. casadi/include/alpaqa/problem/problem-with-counters.hpp +0 -141
  597. casadi/include/alpaqa/problem/type-erased-problem.hpp +0 -874
  598. casadi/include/alpaqa/problem/unconstr-problem.hpp +0 -37
  599. casadi/include/alpaqa/structured-panoc-alm.hpp +0 -27
  600. casadi/include/alpaqa/structured-zerofpr-alm.hpp +0 -27
  601. casadi/include/alpaqa/util/alloc-check.hpp +0 -23
  602. casadi/include/alpaqa/util/atomic-stop-signal.hpp +0 -24
  603. casadi/include/alpaqa/util/check-dim.hpp +0 -64
  604. casadi/include/alpaqa/util/copyable_unique_ptr.hpp +0 -32
  605. casadi/include/alpaqa/util/demangled-typename.hpp +0 -9
  606. casadi/include/alpaqa/util/enumerate.hpp +0 -70
  607. casadi/include/alpaqa/util/float.hpp +0 -25
  608. casadi/include/alpaqa/util/index-set.hpp +0 -97
  609. casadi/include/alpaqa/util/io/csv.hpp +0 -43
  610. casadi/include/alpaqa/util/iter-adapter.hpp +0 -68
  611. casadi/include/alpaqa/util/max-history.hpp +0 -47
  612. casadi/include/alpaqa/util/noop-delete.hpp +0 -15
  613. casadi/include/alpaqa/util/not-implemented.hpp +0 -12
  614. casadi/include/alpaqa/util/print.hpp +0 -78
  615. casadi/include/alpaqa/util/quadmath/quadmath-print.hpp +0 -20
  616. casadi/include/alpaqa/util/quadmath/quadmath.hpp +0 -137
  617. casadi/include/alpaqa/util/required-method.hpp +0 -29
  618. casadi/include/alpaqa/util/ringbuffer.hpp +0 -212
  619. casadi/include/alpaqa/util/set-intersection.hpp +0 -129
  620. casadi/include/alpaqa/util/sparse-ops.hpp +0 -164
  621. casadi/include/alpaqa/util/timed.hpp +0 -22
  622. casadi/include/alpaqa/util/type-erasure.hpp +0 -568
  623. casadi/include/alpaqa/util/type-traits.hpp +0 -58
  624. casadi/include/alpaqa/zerofpr-alm.hpp +0 -27
  625. casadi/include/alpaqa/zerofpr-anderson-alm.hpp +0 -27
  626. casadi/include/alpaqa-version.h +0 -8
  627. casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
  628. casadi/include/licenses/alpaqa-external/src/thirdparty/lbfgsb/Lbfgsb.3.0/License.txt +0 -71
  629. casadi/libFortranHighs.dylib +0 -0
  630. casadi/libalpaqa.1.0.0.dylib +0 -0
  631. casadi/libalpaqa.dylib +0 -0
  632. casadi/libcamd.3.0.3.dylib +0 -0
  633. casadi/libcasadi_nlpsol_alpaqa.3.7.dylib +0 -0
  634. casadi/libcasadi_nlpsol_alpaqa.dylib +0 -0
  635. casadi/libccolamd.3.0.3.dylib +0 -0
  636. casadi/libcholmod.4.0.3.dylib +0 -0
  637. casadi/libcholmod_cuda.4.0.3.dylib +0 -0
  638. casadi/libcolamd.3.0.3.dylib +0 -0
  639. casadi/libhighs.1.6.0.dylib +0 -0
  640. casadi/libhighs.1.6.dylib +0 -0
  641. casadi/libumfpack.6.1.0.dylib +0 -0
  642. {casadi-3.6.5.dist-info → casadi-3.6.6.dist-info}/WHEEL +0 -0
@@ -1,301 +0,0 @@
1
- #pragma once
2
-
3
- #include <alpaqa/config/config.hpp>
4
- #include <alpaqa/dl/dl-problem.h>
5
- #include <alpaqa/problem/box-constr-problem.hpp>
6
- #include <alpaqa/util/demangled-typename.hpp>
7
-
8
- #include <memory>
9
- #include <stdexcept>
10
- #include <string>
11
- #include <string_view>
12
- #include <type_traits>
13
-
14
- namespace alpaqa::dl {
15
-
16
- class DLLoader {
17
- protected:
18
- /// Load a shared library.
19
- DLLoader(
20
- /// Filename of the shared library to load.
21
- std::string so_filename,
22
- /// Prefix of the symbols in the library.
23
- std::string symbol_prefix);
24
-
25
- protected:
26
- std::string so_filename;
27
- std::string symbol_prefix;
28
-
29
- using dl_handle_t = std::shared_ptr<void>;
30
- /// Handle to the shared library (returned by `dlopen`).
31
- dl_handle_t handle;
32
-
33
- /// An associative array of additional functions exposed by the problem.
34
- std::shared_ptr<function_dict_t> extra_functions;
35
-
36
- /// Open the shared library using `dlopen`
37
- [[nodiscard]] std::shared_ptr<void> load_lib() const;
38
- /// Load a function with signature @p F from the library using `dlsym`.
39
- template <class F>
40
- [[nodiscard]] F *load_func(std::string_view name) const;
41
-
42
- template <class Signature>
43
- requires std::is_function_v<Signature>
44
- const std::function<Signature> &extra_func(const std::string &name) const {
45
- if (!extra_functions)
46
- throw std::out_of_range("DLProblem: no extra functions");
47
- auto it = extra_functions->dict.find(name);
48
- if (it == extra_functions->dict.end())
49
- throw std::out_of_range("DLProblem: no extra function named \"" +
50
- name + '"');
51
- try {
52
- return std::any_cast<const std::function<Signature> &>(it->second);
53
- } catch (const std::bad_any_cast &e) {
54
- throw std::logic_error(
55
- "DLProblem: incorrect type for extra function \"" + name +
56
- "\" (stored type: " + demangled_typename(it->second.type()) +
57
- ')');
58
- }
59
- }
60
-
61
- public:
62
- /// Unique type for calling an extra function that is a member function.
63
- struct instance_t;
64
-
65
- protected:
66
- template <class Func>
67
- struct FuncTag {};
68
-
69
- template <class Ret, class... FArgs, class... Args>
70
- decltype(auto)
71
- call_extra_func_helper(const void *instance,
72
- FuncTag<Ret(const instance_t *, FArgs...)>,
73
- const std::string &name, Args &&...args) const {
74
- return extra_func<Ret(const void *, FArgs...)>(name)(
75
- instance, std::forward<Args>(args)...);
76
- }
77
-
78
- template <class Ret, class... FArgs, class... Args>
79
- decltype(auto)
80
- call_extra_func_helper(void *instance, FuncTag<Ret(instance_t *, FArgs...)>,
81
- const std::string &name, Args &&...args) {
82
- return extra_func<Ret(void *, FArgs...)>(name)(
83
- instance, std::forward<Args>(args)...);
84
- }
85
-
86
- template <class Ret, class... FArgs, class... Args>
87
- decltype(auto) call_extra_func_helper(const void *, FuncTag<Ret(FArgs...)>,
88
- const std::string &name,
89
- Args &&...args) const {
90
- return extra_func<Ret(FArgs...)>(name)(std::forward<Args>(args)...);
91
- }
92
- };
93
-
94
- /// Class that loads a problem using `dlopen`.
95
- ///
96
- /// The shared library should export a C function with the name
97
- /// `<symbol_prefix>_register` that accepts a void pointer with user data, and
98
- /// returns a struct of type @ref alpaqa_problem_register_t that contains all
99
- /// data to represent the problem, as well as function pointers for all
100
- /// required operations. See @ref C++/DLProblem/main.cpp
101
- ///
102
- /// @note Copies are shallow, they all share the same problem instance, take
103
- /// that into account when using multiple threads.
104
- ///
105
- /// @ingroup grp_Problems
106
- /// @see @ref TypeErasedProblem
107
- class DLProblem : private DLLoader, public BoxConstrProblem<DefaultConfig> {
108
- public:
109
- USING_ALPAQA_CONFIG(DefaultConfig);
110
-
111
- /// Load a problem from a shared library.
112
- DLProblem(
113
- /// Filename of the shared library to load.
114
- std::string so_filename,
115
- /// Prefix of the registration function.
116
- std::string symbol_prefix = "alpaqa_problem",
117
- /// Pointer to custom user data to pass to the registration function.
118
- void *user_param = nullptr);
119
-
120
- private:
121
- /// Problem instance created by the registration function, including the
122
- /// deleter to destroy it.
123
- std::shared_ptr<void> instance;
124
- /// Pointer to the struct of function pointers for evaluating the objective,
125
- /// constraints, their gradients, etc.
126
- problem_functions_t *functions = nullptr;
127
-
128
- public:
129
- // clang-format off
130
- real_t eval_prox_grad_step(real_t γ, crvec x, crvec grad_ψ, rvec x̂, rvec p) const;
131
- real_t eval_f(crvec x) const;
132
- void eval_grad_f(crvec x, rvec grad_fx) const;
133
- void eval_g(crvec x, rvec gx) const;
134
- void eval_grad_g_prod(crvec x, crvec y, rvec grad_gxy) const;
135
- void eval_jac_g(crvec x, rindexvec inner_idx, rindexvec outer_ptr, rvec J_values) const;
136
- length_t get_jac_g_num_nonzeros() const;
137
- void eval_grad_gi(crvec x, index_t i, rvec grad_gi) const;
138
- void eval_hess_L_prod(crvec x, crvec y, real_t scale, crvec v, rvec Hv) const;
139
- void eval_hess_L(crvec x, crvec y, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values) const;
140
- length_t get_hess_L_num_nonzeros() const;
141
- void eval_hess_ψ_prod(crvec x, crvec y, crvec Σ, real_t scale, crvec v, rvec Hv) const;
142
- void eval_hess_ψ(crvec x, crvec y, crvec Σ, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values) const;
143
- length_t get_hess_ψ_num_nonzeros() const;
144
- real_t eval_f_grad_f(crvec x, rvec grad_fx) const;
145
- real_t eval_f_g(crvec x, rvec g) const;
146
- void eval_grad_f_grad_g_prod(crvec x, crvec y, rvec grad_f, rvec grad_gxy) const;
147
- void eval_grad_L(crvec x, crvec y, rvec grad_L, rvec work_n) const;
148
- real_t eval_ψ(crvec x, crvec y, crvec Σ, rvec ŷ) const;
149
- void eval_grad_ψ(crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m) const;
150
- real_t eval_ψ_grad_ψ(crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m) const;
151
-
152
- [[nodiscard]] bool provides_eval_f() const;
153
- [[nodiscard]] bool provides_eval_grad_f() const;
154
- [[nodiscard]] bool provides_eval_g() const;
155
- [[nodiscard]] bool provides_eval_grad_g_prod() const;
156
- [[nodiscard]] bool provides_eval_jac_g() const;
157
- [[nodiscard]] bool provides_get_jac_g_num_nonzeros() const;
158
- [[nodiscard]] bool provides_eval_grad_gi() const;
159
- [[nodiscard]] bool provides_eval_hess_L_prod() const;
160
- [[nodiscard]] bool provides_eval_hess_L() const;
161
- [[nodiscard]] bool provides_get_hess_L_num_nonzeros() const;
162
- [[nodiscard]] bool provides_eval_hess_ψ_prod() const;
163
- [[nodiscard]] bool provides_eval_hess_ψ() const;
164
- [[nodiscard]] bool provides_get_hess_ψ_num_nonzeros() const;
165
- [[nodiscard]] bool provides_eval_f_grad_f() const;
166
- [[nodiscard]] bool provides_eval_f_g() const;
167
- [[nodiscard]] bool provides_eval_grad_f_grad_g_prod() const;
168
- [[nodiscard]] bool provides_eval_grad_L() const;
169
- [[nodiscard]] bool provides_eval_ψ() const;
170
- [[nodiscard]] bool provides_eval_grad_ψ() const;
171
- [[nodiscard]] bool provides_eval_ψ_grad_ψ() const;
172
- [[nodiscard]] bool provides_get_box_C() const;
173
- // clang-format on
174
-
175
- using instance_t = DLLoader::instance_t;
176
-
177
- template <class Signature, class... Args>
178
- decltype(auto) call_extra_func(const std::string &name,
179
- Args &&...args) const {
180
- return extra_func_helper(instance.get(), FuncTag<Signature>{}, name,
181
- std::forward<Args>(args)...);
182
- }
183
-
184
- template <class Signature, class... Args>
185
- decltype(auto) call_extra_func(const std::string &name, Args &&...args) {
186
- return call_extra_func_helper(instance.get(), FuncTag<Signature>{},
187
- name, std::forward<Args>(args)...);
188
- }
189
- };
190
-
191
- #if ALPAQA_WITH_OCP
192
-
193
- /// Class that loads an optimal control problem using `dlopen`.
194
- ///
195
- /// The shared library should export a C function with the name
196
- /// `<symbol_prefix>_register` that accepts a void pointer with user data, and
197
- /// returns a struct of type @ref alpaqa_control_problem_register_t that
198
- /// contains all data to represent the problem, as well as function pointers for
199
- /// all required operations. See @ref C++/DLProblem/main.cpp
200
- ///
201
- /// @note Copies are shallow, they all share the same problem instance, take
202
- /// that into account when using multiple threads.
203
- ///
204
- /// @ingroup grp_Problems
205
- /// @see @ref TypeErasedControlProblem
206
- class DLControlProblem : private DLLoader {
207
- public:
208
- USING_ALPAQA_CONFIG(DefaultConfig);
209
- using Box = alpaqa::Box<config_t>;
210
-
211
- /// Load a problem from a shared library.
212
- DLControlProblem(
213
- /// Filename of the shared library to load.
214
- std::string so_filename,
215
- /// Prefix of the registration function.
216
- std::string symbol_prefix = "alpaqa_control_problem",
217
- /// Pointer to custom user data to pass to the registration function.
218
- void *user_param = nullptr);
219
-
220
- private:
221
- /// Problem instance created by the registration function, including the
222
- /// deleter to destroy it.
223
- std::shared_ptr<void> instance;
224
- /// Pointer to the struct of function pointers for evaluating the objective,
225
- /// constraints, their gradients, etc.
226
- control_problem_functions_t *functions = nullptr;
227
-
228
- public:
229
- length_t get_N() const { return functions->N; }
230
- length_t get_nx() const { return functions->nx; }
231
- length_t get_nu() const { return functions->nu; }
232
- length_t get_nh() const { return functions->nh; }
233
- length_t get_nh_N() const { return functions->nh_N; }
234
- length_t get_nc() const { return functions->nc; }
235
- length_t get_nc_N() const { return functions->nc_N; }
236
-
237
- void check() const {} // TODO
238
-
239
- // clang-format off
240
- void get_U(Box &U) const;
241
- void get_D(Box &D) const;
242
- void get_D_N(Box &D) const;
243
- void get_x_init(rvec x_init) const;
244
- void eval_f(index_t timestep, crvec x, crvec u, rvec fxu) const;
245
- void eval_jac_f(index_t timestep, crvec x, crvec u, rmat J_fxu) const;
246
- void eval_grad_f_prod(index_t timestep, crvec x, crvec u, crvec p, rvec grad_fxu_p) const;
247
- void eval_h(index_t timestep, crvec x, crvec u, rvec h) const;
248
- void eval_h_N(crvec x, rvec h) const;
249
- [[nodiscard]] real_t eval_l(index_t timestep, crvec h) const;
250
- [[nodiscard]] real_t eval_l_N(crvec h) const;
251
- void eval_qr(index_t timestep, crvec xu, crvec h, rvec qr) const;
252
- void eval_q_N(crvec x, crvec h, rvec q) const;
253
- void eval_add_Q(index_t timestep, crvec xu, crvec h, rmat Q) const;
254
- void eval_add_Q_N(crvec x, crvec h, rmat Q) const;
255
- void eval_add_R_masked(index_t timestep, crvec xu, crvec h, crindexvec mask, rmat R, rvec work) const;
256
- void eval_add_S_masked(index_t timestep, crvec xu, crvec h, crindexvec mask, rmat S, rvec work) const;
257
- void eval_add_R_prod_masked(index_t timestep, crvec xu, crvec h, crindexvec mask_J, crindexvec mask_K, crvec v, rvec out, rvec work) const;
258
- void eval_add_S_prod_masked(index_t timestep, crvec xu, crvec h, crindexvec mask_K, crvec v, rvec out, rvec work) const;
259
- [[nodiscard]] length_t get_R_work_size() const;
260
- [[nodiscard]] length_t get_S_work_size() const;
261
- void eval_constr(index_t timestep, crvec x, rvec c) const;
262
- void eval_constr_N(crvec x, rvec c) const;
263
- void eval_grad_constr_prod(index_t timestep, crvec x, crvec p, rvec grad_cx_p) const;
264
- void eval_grad_constr_prod_N(crvec x, crvec p, rvec grad_cx_p) const;
265
- void eval_add_gn_hess_constr(index_t timestep, crvec x, crvec M, rmat out) const;
266
- void eval_add_gn_hess_constr_N(crvec x, crvec M, rmat out) const;
267
-
268
- [[nodiscard]] bool provides_get_D() const;
269
- [[nodiscard]] bool provides_get_D_N() const;
270
- [[nodiscard]] bool provides_eval_add_Q_N() const;
271
- [[nodiscard]] bool provides_eval_add_R_prod_masked() const;
272
- [[nodiscard]] bool provides_eval_add_S_prod_masked() const;
273
- [[nodiscard]] bool provides_get_R_work_size() const;
274
- [[nodiscard]] bool provides_get_S_work_size() const;
275
- [[nodiscard]] bool provides_eval_constr() const;
276
- [[nodiscard]] bool provides_eval_constr_N() const;
277
- [[nodiscard]] bool provides_eval_grad_constr_prod() const;
278
- [[nodiscard]] bool provides_eval_grad_constr_prod_N() const;
279
- [[nodiscard]] bool provides_eval_add_gn_hess_constr() const;
280
- [[nodiscard]] bool provides_eval_add_gn_hess_constr_N() const;
281
- // clang-format on
282
-
283
- using instance_t = DLLoader::instance_t;
284
-
285
- template <class Signature, class... Args>
286
- decltype(auto) call_extra_func(const std::string &name,
287
- Args &&...args) const {
288
- return extra_func_helper(instance.get(), FuncTag<Signature>{}, name,
289
- std::forward<Args>(args)...);
290
- }
291
-
292
- template <class Signature, class... Args>
293
- decltype(auto) call_extra_func(const std::string &name, Args &&...args) {
294
- return call_extra_func_helper(instance.get(), FuncTag<Signature>{},
295
- name, std::forward<Args>(args)...);
296
- }
297
- };
298
-
299
- #endif
300
-
301
- } // namespace alpaqa::dl
@@ -1,42 +0,0 @@
1
-
2
- #ifndef ALPAQA_EXPORT_H
3
- #define ALPAQA_EXPORT_H
4
-
5
- #ifdef ALPAQA_STATIC_DEFINE
6
- # define ALPAQA_EXPORT
7
- # define ALPAQA_NO_EXPORT
8
- #else
9
- # ifndef ALPAQA_EXPORT
10
- # ifdef alpaqa_EXPORTS
11
- /* We are building this library */
12
- # define ALPAQA_EXPORT __attribute__((visibility("default")))
13
- # else
14
- /* We are using this library */
15
- # define ALPAQA_EXPORT __attribute__((visibility("default")))
16
- # endif
17
- # endif
18
-
19
- # ifndef ALPAQA_NO_EXPORT
20
- # define ALPAQA_NO_EXPORT __attribute__((visibility("hidden")))
21
- # endif
22
- #endif
23
-
24
- #ifndef ALPAQA_DEPRECATED
25
- # define ALPAQA_DEPRECATED __attribute__ ((__deprecated__))
26
- #endif
27
-
28
- #ifndef ALPAQA_DEPRECATED_EXPORT
29
- # define ALPAQA_DEPRECATED_EXPORT ALPAQA_EXPORT ALPAQA_DEPRECATED
30
- #endif
31
-
32
- #ifndef ALPAQA_DEPRECATED_NO_EXPORT
33
- # define ALPAQA_DEPRECATED_NO_EXPORT ALPAQA_NO_EXPORT ALPAQA_DEPRECATED
34
- #endif
35
-
36
- #if 0 /* DEFINE_NO_DEPRECATED */
37
- # ifndef ALPAQA_NO_DEPRECATED
38
- # define ALPAQA_NO_DEPRECATED
39
- # endif
40
- #endif
41
-
42
- #endif /* ALPAQA_EXPORT_H */
@@ -1,30 +0,0 @@
1
- #pragma once
2
-
3
- #include <alpaqa/export.h>
4
-
5
- #ifndef DOXYGEN
6
-
7
- #ifdef _WIN32
8
- #ifdef __GNUC__ // mingw
9
- #define ALPAQA_EXPORT_EXTERN_TEMPLATE(strcls, name, ...)
10
- #define ALPAQA_EXPORT_TEMPLATE(strcls, name, ...) \
11
- template strcls ALPAQA_EXPORT name<__VA_ARGS__>
12
- #else
13
- #define ALPAQA_EXPORT_EXTERN_TEMPLATE(strcls, name, ...) \
14
- extern template strcls name<__VA_ARGS__>
15
- #define ALPAQA_EXPORT_TEMPLATE(strcls, name, ...) \
16
- template strcls ALPAQA_EXPORT name<__VA_ARGS__>
17
- #endif
18
- #else
19
- #define ALPAQA_EXPORT_EXTERN_TEMPLATE(strcls, name, ...) \
20
- extern template strcls ALPAQA_EXPORT name<__VA_ARGS__>
21
- #define ALPAQA_EXPORT_TEMPLATE(strcls, name, ...) \
22
- template strcls ALPAQA_EXPORT name<__VA_ARGS__>
23
- #endif
24
-
25
- #else // DOXYGEN
26
-
27
- #define ALPAQA_EXPORT_EXTERN_TEMPLATE(...)
28
- #define ALPAQA_EXPORT_TEMPLATE(...)
29
-
30
- #endif // DOXYGEN
@@ -1,240 +0,0 @@
1
- #pragma once
2
-
3
- #include <alpaqa/accelerators/lbfgs.hpp>
4
-
5
- #include <cmath>
6
- #include <limits>
7
- #include <stdexcept>
8
-
9
- namespace alpaqa {
10
-
11
- template <Config Conf>
12
- bool LBFGS<Conf>::update_valid(const Params &params, real_t yᵀs, real_t sᵀs,
13
- real_t pᵀp) {
14
- // Check if this L-BFGS update is accepted
15
- if (sᵀs <= params.min_abs_s)
16
- return false;
17
- if (not std::isfinite(yᵀs))
18
- return false;
19
- real_t a_yᵀs = params.force_pos_def ? yᵀs : std::abs(yᵀs);
20
- if (a_yᵀs <= params.min_div_fac * sᵀs)
21
- return false;
22
-
23
- // CBFGS condition: https://epubs.siam.org/doi/10.1137/S1052623499354242
24
- if (params.cbfgs) {
25
- const real_t α = params.cbfgs.α;
26
- const real_t ϵ = params.cbfgs.ϵ;
27
- // Condition: yᵀs / sᵀs >= ϵ ‖p‖^α
28
- bool cbfgs_cond = a_yᵀs >= sᵀs * ϵ * std::pow(pᵀp, α / 2);
29
- if (not cbfgs_cond)
30
- return false;
31
- }
32
-
33
- return true;
34
- }
35
-
36
- template <Config Conf>
37
- bool LBFGS<Conf>::update_sy_impl(const auto &s, const auto &y,
38
- real_t pₙₑₓₜᵀpₙₑₓₜ, bool forced) {
39
- real_t yᵀs = y.dot(s);
40
- real_t ρ = 1 / yᵀs;
41
- if (not forced) {
42
- real_t sᵀs = s.squaredNorm();
43
- if (not update_valid(params, yᵀs, sᵀs, pₙₑₓₜᵀpₙₑₓₜ))
44
- return false;
45
- }
46
-
47
- // Store the new s and y vectors
48
- sto.s(idx) = s;
49
- sto.y(idx) = y;
50
- sto.ρ(idx) = ρ;
51
-
52
- // Increment the index in the circular buffer
53
- idx = succ(idx);
54
- full |= idx == 0;
55
-
56
- return true;
57
- }
58
-
59
- template <Config Conf>
60
- bool LBFGS<Conf>::update_sy(crvec s, crvec y, real_t pₙₑₓₜᵀpₙₑₓₜ, bool forced) {
61
- return update_sy_impl(s, y, pₙₑₓₜᵀpₙₑₓₜ, forced);
62
- }
63
-
64
- template <Config Conf>
65
- bool LBFGS<Conf>::update(crvec xₖ, crvec xₙₑₓₜ, crvec pₖ, crvec pₙₑₓₜ,
66
- Sign sign, bool forced) {
67
- const auto s = xₙₑₓₜ - xₖ;
68
- const auto y = (sign == Sign::Positive) ? pₙₑₓₜ - pₖ : pₖ - pₙₑₓₜ;
69
- real_t pₙₑₓₜᵀpₙₑₓₜ = params.cbfgs ? pₙₑₓₜ.squaredNorm() : 0;
70
- return update_sy_impl(s, y, pₙₑₓₜᵀpₙₑₓₜ, forced);
71
- }
72
-
73
- template <Config Conf>
74
- bool LBFGS<Conf>::apply(rvec q, real_t γ) const {
75
- // Only apply if we have previous vectors s and y
76
- if (idx == 0 && not full)
77
- return false;
78
-
79
- // If the step size is negative, compute it as sᵀy/yᵀy
80
- if (params.stepsize == LBFGSStepSize::BasedOnCurvature || γ < 0) {
81
- auto new_idx = pred(idx);
82
- real_t yᵀy = y(new_idx).squaredNorm();
83
- γ = 1 / (ρ(new_idx) * yᵀy);
84
- }
85
-
86
- foreach_rev([&](index_t i) {
87
- α(i) = ρ(i) * s(i).dot(q);
88
- q -= α(i) * y(i);
89
- });
90
-
91
- // r ← H_0 q
92
- q *= γ;
93
-
94
- foreach_fwd([&](index_t i) {
95
- real_t β = ρ(i) * y(i).dot(q);
96
- q -= (β - α(i)) * s(i);
97
- });
98
-
99
- return true;
100
- }
101
-
102
- template <Config Conf>
103
- bool LBFGS<Conf>::apply_masked_impl(rvec q, real_t γ, const auto &J) const {
104
- // Only apply if we have previous vectors s and y
105
- if (idx == 0 && not full)
106
- return false;
107
- const bool fullJ = q.size() == static_cast<index_t>(J.size());
108
-
109
- // Use curvature to compute initial scale
110
- if (params.stepsize == LBFGSStepSize::BasedOnCurvature)
111
- γ = -1;
112
-
113
- if (params.cbfgs)
114
- throw std::invalid_argument("CBFGS check not supported when using "
115
- "masked version of LBFGS::apply_masked()");
116
-
117
- // Eigen 3.3.9 doesn't yet support indexing using a vector of indices
118
- // so we'll have to do it manually.
119
- // TODO: Abstract this away in an expression template / nullary expression?
120
- // Or wait for Eigen update?
121
- // Update: Eigen 3.4's indexing seems significantly slower, so the manual
122
- // for loops stay for now.
123
-
124
- // Dot product of two vectors, adding only the indices in set J
125
- const auto dotJ = [&J, fullJ](const auto &a, const auto &b) {
126
- if (fullJ) {
127
- return a.dot(b);
128
- } else {
129
- real_t acc = 0;
130
- for (auto j : J)
131
- acc += a(j) * b(j);
132
- return acc;
133
- }
134
- };
135
- // y -= a x, scaling and subtracting only the indices in set J
136
- const auto axmyJ = [&J, fullJ](real_t a, const auto &x, auto &y) {
137
- if (fullJ) {
138
- y -= a * x;
139
- } else {
140
- for (auto j : J)
141
- y(j) -= a * x(j);
142
- }
143
- };
144
- // x *= a, scaling only the indices in set J
145
- const auto scalJ = [&J, fullJ](real_t a, auto &x) {
146
- if (fullJ) {
147
- x *= a;
148
- } else {
149
- for (auto j : J)
150
- x(j) *= a;
151
- }
152
- };
153
-
154
- foreach_rev([&](index_t i) {
155
- // Recompute ρ, it depends on the index set J. Note that even if ρ was
156
- // positive for the full vectors s and y, that's not necessarily the
157
- // case for the smaller vectors s(J) and y(J).
158
- real_t yᵀs = dotJ(s(i), y(i));
159
- real_t sᵀs = dotJ(s(i), s(i));
160
- ρ(i) = 1 / yᵀs;
161
- // Check if we should include this pair of vectors
162
- if (not update_valid(params, yᵀs, sᵀs, 0)) {
163
- ρ(i) = NaN<config_t>;
164
- return; // continue foreach
165
- }
166
-
167
- α(i) = ρ(i) * dotJ(s(i), q); // αᵢ = ρᵢ〈sᵢ, q〉
168
- axmyJ(α(i), y(i), q); // q -= αᵢ yᵢ
169
-
170
- if (γ < 0) {
171
- // Compute step size based on most recent valid yᵀs/yᵀy
172
- real_t yᵀy = dotJ(y(i), y(i));
173
- γ = 1 / (ρ(i) * yᵀy);
174
- }
175
- });
176
-
177
- // If all ρ == 0, fail
178
- if (γ < 0)
179
- return false;
180
-
181
- // r ← H_0 q
182
- scalJ(γ, q); // q *= γ
183
-
184
- foreach_fwd([&](index_t i) {
185
- if (std::isnan(ρ(i)))
186
- return; // continue foreach
187
-
188
- real_t β = ρ(i) * dotJ(y(i), q); // βᵢ = ρᵢ〈yᵢ, q〉
189
- axmyJ(β - α(i), s(i), q); // q -= (βᵢ - αᵢ) sᵢ
190
- });
191
-
192
- return true;
193
- }
194
-
195
- template <Config Conf>
196
- bool LBFGS<Conf>::apply_masked(rvec q, real_t γ, crindexvec J) const {
197
- return apply_masked_impl(q, γ, J);
198
- }
199
-
200
- template <Config Conf>
201
- bool LBFGS<Conf>::apply_masked(rvec q, real_t γ,
202
- const std::vector<index_t> &J) const {
203
- return apply_masked_impl(q, γ, J);
204
- }
205
-
206
- template <Config Conf>
207
- void LBFGS<Conf>::reset() {
208
- idx = 0;
209
- full = false;
210
- }
211
-
212
- template <Config Conf>
213
- void LBFGS<Conf>::resize(length_t n) {
214
- if (params.memory < 1)
215
- throw std::invalid_argument("LBFGS::Params::memory must be >= 1");
216
- sto.resize(n, params.memory);
217
- reset();
218
- }
219
-
220
- template <Config Conf>
221
- void LBFGSStorage<Conf>::resize(length_t n, length_t history) {
222
- sto.resize(n + 1, history * 2);
223
- }
224
-
225
- template <Config Conf>
226
- void LBFGS<Conf>::scale_y(real_t factor) {
227
- if (full) {
228
- for (index_t i = 0; i < history(); ++i) {
229
- y(i) *= factor;
230
- ρ(i) *= 1 / factor;
231
- }
232
- } else {
233
- for (index_t i = 0; i < idx; ++i) {
234
- y(i) *= factor;
235
- ρ(i) *= 1 / factor;
236
- }
237
- }
238
- }
239
-
240
- } // namespace alpaqa