casadi 3.6.3__cp35-none-win_amd64.whl → 3.6.5__cp35-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (897) hide show
  1. casadi/_casadi.pyd +0 -0
  2. casadi/bin/libtinyxml2.dll +0 -0
  3. casadi/blasfeo.lib +0 -0
  4. casadi/casadi-cli.exe +0 -0
  5. casadi/casadi.lib +0 -0
  6. casadi/casadi.py +415 -260
  7. casadi/cbc.exe +0 -0
  8. casadi/clp.exe +0 -0
  9. casadi/cmake/alpaqa/alpaqaConfig.cmake +24 -0
  10. casadi/cmake/alpaqa/alpaqaConfigVersion.cmake +67 -0
  11. casadi/cmake/alpaqa/alpaqaTargets-release.cmake +19 -0
  12. casadi/cmake/alpaqa/alpaqaTargets.cmake +108 -0
  13. casadi/cmake/casadi-config-version.cmake +1 -1
  14. casadi/cmake/highs/highs-config.cmake +18 -4
  15. casadi/cmake/sleqp/sleqp-config-version.cmake +67 -0
  16. casadi/cmake/sleqp/sleqp-config.cmake +1 -0
  17. casadi/cmake/sleqp/sleqp-targets-release.cmake +20 -0
  18. casadi/cmake/sleqp/sleqp-targets.cmake +94 -0
  19. casadi/cmake/trlib/trlib-config-release.cmake +19 -0
  20. casadi/cmake/trlib/trlib-config-version.cmake +59 -0
  21. casadi/cmake/trlib/trlib-config.cmake +99 -0
  22. casadi/highs.exe +0 -0
  23. casadi/highs.lib +0 -0
  24. casadi/hpipm.lib +0 -0
  25. casadi/include/alpaqa/accelerators/anderson.hpp +133 -0
  26. casadi/include/alpaqa/accelerators/internal/anderson-helpers.hpp +92 -0
  27. casadi/include/alpaqa/accelerators/internal/limited-memory-qr.hpp +295 -0
  28. casadi/include/alpaqa/accelerators/lbfgs.hpp +244 -0
  29. casadi/include/alpaqa/accelerators/steihaugcg.hpp +143 -0
  30. casadi/include/alpaqa/alpaqa.hpp +3 -0
  31. casadi/include/alpaqa/casadi/CasADiControlProblem.hpp +185 -0
  32. casadi/include/alpaqa/casadi/CasADiFunctionWrapper.hpp +104 -0
  33. casadi/include/alpaqa/casadi/CasADiProblem.hpp +102 -0
  34. casadi/include/alpaqa/casadi-loader-export.hpp +15 -0
  35. casadi/include/alpaqa/casadi-ocp-loader-export.hpp +15 -0
  36. casadi/include/alpaqa/config/config.hpp +165 -0
  37. casadi/include/alpaqa/dl/dl-problem.h +476 -0
  38. casadi/include/alpaqa/dl/dl-problem.hpp +301 -0
  39. casadi/include/alpaqa/export.h +42 -0
  40. casadi/include/alpaqa/export.hpp +30 -0
  41. casadi/include/alpaqa/implementation/accelerators/lbfgs.tpp +240 -0
  42. casadi/include/alpaqa/implementation/casadi/CasADiControlProblem.tpp +594 -0
  43. casadi/include/alpaqa/implementation/casadi/CasADiLoader-util.hpp +50 -0
  44. casadi/include/alpaqa/implementation/casadi/CasADiProblem.tpp +425 -0
  45. casadi/include/alpaqa/implementation/inner/directions/panoc/structured-lbfgs.tpp +164 -0
  46. casadi/include/alpaqa/implementation/inner/panoc-helpers.tpp +389 -0
  47. casadi/include/alpaqa/implementation/inner/panoc-ocp.tpp +798 -0
  48. casadi/include/alpaqa/implementation/inner/panoc.tpp +448 -0
  49. casadi/include/alpaqa/implementation/inner/pantr.tpp +474 -0
  50. casadi/include/alpaqa/implementation/inner/zerofpr.tpp +482 -0
  51. casadi/include/alpaqa/implementation/outer/alm.tpp +228 -0
  52. casadi/include/alpaqa/implementation/outer/internal/alm-helpers.tpp +80 -0
  53. casadi/include/alpaqa/implementation/params/params.tpp +158 -0
  54. casadi/include/alpaqa/implementation/problem/ocproblem.tpp +56 -0
  55. casadi/include/alpaqa/implementation/problem/type-erased-problem.tpp +211 -0
  56. casadi/include/alpaqa/implementation/util/io/csv.tpp +120 -0
  57. casadi/include/alpaqa/implementation/util/print.tpp +151 -0
  58. casadi/include/alpaqa/inner/directions/panoc/anderson.hpp +98 -0
  59. casadi/include/alpaqa/inner/directions/panoc/lbfgs.hpp +94 -0
  60. casadi/include/alpaqa/inner/directions/panoc/structured-lbfgs.hpp +146 -0
  61. casadi/include/alpaqa/inner/directions/panoc/structured-newton.hpp +264 -0
  62. casadi/include/alpaqa/inner/directions/panoc-direction-update.hpp +96 -0
  63. casadi/include/alpaqa/inner/directions/panoc-ocp/lqr.hpp +181 -0
  64. casadi/include/alpaqa/inner/directions/panoc-ocp/ocp-vars.hpp +492 -0
  65. casadi/include/alpaqa/inner/directions/pantr/newton-tr.hpp +192 -0
  66. casadi/include/alpaqa/inner/directions/pantr/pantr-direction.hpp +99 -0
  67. casadi/include/alpaqa/inner/inner-solve-options.hpp +30 -0
  68. casadi/include/alpaqa/inner/internal/lipschitz.hpp +27 -0
  69. casadi/include/alpaqa/inner/internal/panoc-helpers.hpp +10 -0
  70. casadi/include/alpaqa/inner/internal/panoc-stop-crit.hpp +124 -0
  71. casadi/include/alpaqa/inner/internal/solverstatus.hpp +42 -0
  72. casadi/include/alpaqa/inner/panoc-ocp.hpp +302 -0
  73. casadi/include/alpaqa/inner/panoc.hpp +274 -0
  74. casadi/include/alpaqa/inner/pantr.hpp +284 -0
  75. casadi/include/alpaqa/inner/zerofpr.hpp +274 -0
  76. casadi/include/alpaqa/ipopt/ipopt-adapter.hpp +81 -0
  77. casadi/include/alpaqa/ipopt/ipopt-enums.hpp +35 -0
  78. casadi/include/alpaqa/lbfgsb/lbfgsb-adapter.hpp +111 -0
  79. casadi/include/alpaqa/newton-tr-pantr-alm.hpp +27 -0
  80. casadi/include/alpaqa/outer/alm.hpp +190 -0
  81. casadi/include/alpaqa/outer/internal/alm-helpers.hpp +10 -0
  82. casadi/include/alpaqa/panoc-alm.hpp +27 -0
  83. casadi/include/alpaqa/panoc-anderson-alm.hpp +27 -0
  84. casadi/include/alpaqa/params/params.hpp +60 -0
  85. casadi/include/alpaqa/problem/box-constr-problem.hpp +220 -0
  86. casadi/include/alpaqa/problem/box.hpp +82 -0
  87. casadi/include/alpaqa/problem/functional-problem.hpp +73 -0
  88. casadi/include/alpaqa/problem/kkt-error.hpp +43 -0
  89. casadi/include/alpaqa/problem/ocproblem-counters.hpp +116 -0
  90. casadi/include/alpaqa/problem/ocproblem.hpp +662 -0
  91. casadi/include/alpaqa/problem/problem-counters.hpp +116 -0
  92. casadi/include/alpaqa/problem/problem-with-counters.hpp +141 -0
  93. casadi/include/alpaqa/problem/type-erased-problem.hpp +874 -0
  94. casadi/include/alpaqa/problem/unconstr-problem.hpp +37 -0
  95. casadi/include/alpaqa/structured-panoc-alm.hpp +27 -0
  96. casadi/include/alpaqa/structured-zerofpr-alm.hpp +27 -0
  97. casadi/include/alpaqa/util/alloc-check.hpp +23 -0
  98. casadi/include/alpaqa/util/atomic-stop-signal.hpp +24 -0
  99. casadi/include/alpaqa/util/check-dim.hpp +64 -0
  100. casadi/include/alpaqa/util/copyable_unique_ptr.hpp +32 -0
  101. casadi/include/alpaqa/util/demangled-typename.hpp +9 -0
  102. casadi/include/alpaqa/util/enumerate.hpp +70 -0
  103. casadi/include/alpaqa/util/float.hpp +25 -0
  104. casadi/include/alpaqa/util/index-set.hpp +97 -0
  105. casadi/include/alpaqa/util/io/csv.hpp +43 -0
  106. casadi/include/alpaqa/util/iter-adapter.hpp +68 -0
  107. casadi/include/alpaqa/util/max-history.hpp +47 -0
  108. casadi/include/alpaqa/util/noop-delete.hpp +15 -0
  109. casadi/include/alpaqa/util/not-implemented.hpp +12 -0
  110. casadi/include/alpaqa/util/print.hpp +78 -0
  111. casadi/include/alpaqa/util/quadmath/quadmath-print.hpp +20 -0
  112. casadi/include/alpaqa/util/quadmath/quadmath.hpp +137 -0
  113. casadi/include/alpaqa/util/required-method.hpp +29 -0
  114. casadi/include/alpaqa/util/ringbuffer.hpp +212 -0
  115. casadi/include/alpaqa/util/set-intersection.hpp +129 -0
  116. casadi/include/alpaqa/util/sparse-ops.hpp +164 -0
  117. casadi/include/alpaqa/util/timed.hpp +22 -0
  118. casadi/include/alpaqa/util/type-erasure.hpp +568 -0
  119. casadi/include/alpaqa/util/type-traits.hpp +58 -0
  120. casadi/include/alpaqa/zerofpr-alm.hpp +27 -0
  121. casadi/include/alpaqa/zerofpr-anderson-alm.hpp +27 -0
  122. casadi/include/alpaqa-version.h +8 -0
  123. casadi/include/casadi/casadi.i +43 -18
  124. casadi/include/casadi/config.h +8 -8
  125. casadi/include/casadi/core/calculus.hpp +1 -1
  126. casadi/include/casadi/core/code_generator.hpp +29 -1
  127. casadi/include/casadi/core/core.hpp +1 -0
  128. casadi/include/casadi/core/fmu.hpp +29 -1
  129. casadi/include/casadi/core/generic_expression.hpp +1 -1
  130. casadi/include/casadi/core/generic_type.hpp +25 -1
  131. casadi/include/casadi/core/matrix_decl.hpp +15 -0
  132. casadi/include/casadi/core/nlpsol.hpp +0 -2
  133. casadi/include/casadi/core/runtime/casadi_nlp.hpp +131 -6
  134. casadi/include/casadi/core/runtime/casadi_sqpmethod.hpp +11 -1
  135. casadi/include/casadi/core/serializing_stream.hpp +12 -0
  136. casadi/include/casadi/core/sparsity.hpp +5 -3
  137. casadi/include/casadi/core/tools.hpp +67 -0
  138. casadi/include/casadi/doc.i +1457 -825
  139. casadi/include/casadi/doc_merged.i +1089 -570
  140. casadi/include/coin/BonArraysHelpers.hpp +52 -0
  141. casadi/include/coin/BonAuxInfos.hpp +110 -0
  142. casadi/include/coin/BonBabInfos.hpp +57 -0
  143. casadi/include/coin/BonBabSetupBase.hpp +386 -0
  144. casadi/include/coin/BonBonminSetup.hpp +95 -0
  145. casadi/include/coin/BonBranchingTQP.hpp +197 -0
  146. casadi/include/coin/BonCbc.hpp +127 -0
  147. casadi/include/coin/BonCbcLpStrategy.hpp +45 -0
  148. casadi/include/coin/BonCbcNlpStrategy.hpp +98 -0
  149. casadi/include/coin/BonCbcNode.hpp +133 -0
  150. casadi/include/coin/BonChooseVariable.hpp +345 -0
  151. casadi/include/coin/BonCurvBranchingSolver.hpp +77 -0
  152. casadi/include/coin/BonCutStrengthener.hpp +244 -0
  153. casadi/include/coin/BonDiver.hpp +424 -0
  154. casadi/include/coin/BonDummyHeuristic.hpp +53 -0
  155. casadi/include/coin/BonDummyPump.hpp +43 -0
  156. casadi/include/coin/BonEcpCuts.hpp +97 -0
  157. casadi/include/coin/BonExitCodes.hpp +12 -0
  158. casadi/include/coin/BonFixAndSolveHeuristic.hpp +43 -0
  159. casadi/include/coin/BonGuessHeuristic.hpp +46 -0
  160. casadi/include/coin/BonHeuristicDive.hpp +88 -0
  161. casadi/include/coin/BonHeuristicDiveFractional.hpp +67 -0
  162. casadi/include/coin/BonHeuristicDiveMIP.hpp +83 -0
  163. casadi/include/coin/BonHeuristicDiveMIPFractional.hpp +67 -0
  164. casadi/include/coin/BonHeuristicDiveMIPVectorLength.hpp +74 -0
  165. casadi/include/coin/BonHeuristicDiveVectorLength.hpp +74 -0
  166. casadi/include/coin/BonHeuristicFPump.hpp +111 -0
  167. casadi/include/coin/BonHeuristicLocalBranching.hpp +59 -0
  168. casadi/include/coin/BonHeuristicRINS.hpp +55 -0
  169. casadi/include/coin/BonIpoptInteriorWarmStarter.hpp +103 -0
  170. casadi/include/coin/BonIpoptSolver.hpp +188 -0
  171. casadi/include/coin/BonIpoptWarmStart.hpp +148 -0
  172. casadi/include/coin/BonLinearCutsGenerator.hpp +75 -0
  173. casadi/include/coin/BonLocalSolverBasedHeuristic.hpp +102 -0
  174. casadi/include/coin/BonLpBranchingSolver.hpp +80 -0
  175. casadi/include/coin/BonMilpRounding.hpp +74 -0
  176. casadi/include/coin/BonOACutGenerator2.hpp +56 -0
  177. casadi/include/coin/BonOAMessages.hpp +44 -0
  178. casadi/include/coin/BonOaDecBase.hpp +297 -0
  179. casadi/include/coin/BonOaFeasChecker.hpp +73 -0
  180. casadi/include/coin/BonOaNlpOptim.hpp +116 -0
  181. casadi/include/coin/BonOsiTMINLPInterface.hpp +1342 -0
  182. casadi/include/coin/BonOuterApprox.hpp +123 -0
  183. casadi/include/coin/BonPseudoCosts.hpp +91 -0
  184. casadi/include/coin/BonPumpForMinlp.hpp +45 -0
  185. casadi/include/coin/BonQuadCut.hpp +217 -0
  186. casadi/include/coin/BonQuadRow.hpp +122 -0
  187. casadi/include/coin/BonRegisteredOptions.hpp +225 -0
  188. casadi/include/coin/BonStrongBranchingSolver.hpp +69 -0
  189. casadi/include/coin/BonSubMipSolver.hpp +143 -0
  190. casadi/include/coin/BonTMINLP.hpp +420 -0
  191. casadi/include/coin/BonTMINLP2OsiLP.hpp +164 -0
  192. casadi/include/coin/BonTMINLP2Quad.hpp +191 -0
  193. casadi/include/coin/BonTMINLP2TNLP.hpp +509 -0
  194. casadi/include/coin/BonTMINLPLinObj.hpp +216 -0
  195. casadi/include/coin/BonTMatrix.hpp +167 -0
  196. casadi/include/coin/BonTNLP2FPNLP.hpp +264 -0
  197. casadi/include/coin/BonTNLPSolver.hpp +241 -0
  198. casadi/include/coin/BonTypes.hpp +95 -0
  199. casadi/include/coin/BonminConfig.h +19 -0
  200. casadi/include/coin/CbcBranchActual.hpp +26 -0
  201. casadi/include/coin/CbcBranchAllDifferent.hpp +61 -0
  202. casadi/include/coin/CbcBranchBase.hpp +79 -0
  203. casadi/include/coin/CbcBranchCut.hpp +182 -0
  204. casadi/include/coin/CbcBranchDecision.hpp +135 -0
  205. casadi/include/coin/CbcBranchDefaultDecision.hpp +101 -0
  206. casadi/include/coin/CbcBranchDynamic.hpp +210 -0
  207. casadi/include/coin/CbcBranchLotsize.hpp +249 -0
  208. casadi/include/coin/CbcBranchToFixLots.hpp +94 -0
  209. casadi/include/coin/CbcBranchingObject.hpp +245 -0
  210. casadi/include/coin/CbcClique.hpp +309 -0
  211. casadi/include/coin/CbcCompare.hpp +46 -0
  212. casadi/include/coin/CbcCompareActual.hpp +16 -0
  213. casadi/include/coin/CbcCompareBase.hpp +155 -0
  214. casadi/include/coin/CbcCompareDefault.hpp +129 -0
  215. casadi/include/coin/CbcCompareDepth.hpp +48 -0
  216. casadi/include/coin/CbcCompareEstimate.hpp +48 -0
  217. casadi/include/coin/CbcCompareObjective.hpp +50 -0
  218. casadi/include/coin/CbcConfig.h +18 -0
  219. casadi/include/coin/CbcConsequence.hpp +50 -0
  220. casadi/include/coin/CbcCountRowCut.hpp +176 -0
  221. casadi/include/coin/CbcCutGenerator.hpp +550 -0
  222. casadi/include/coin/CbcCutModifier.hpp +59 -0
  223. casadi/include/coin/CbcCutSubsetModifier.hpp +69 -0
  224. casadi/include/coin/CbcDummyBranchingObject.hpp +83 -0
  225. casadi/include/coin/CbcEventHandler.hpp +250 -0
  226. casadi/include/coin/CbcFathom.hpp +136 -0
  227. casadi/include/coin/CbcFathomDynamicProgramming.hpp +177 -0
  228. casadi/include/coin/CbcFeasibilityBase.hpp +60 -0
  229. casadi/include/coin/CbcFixVariable.hpp +68 -0
  230. casadi/include/coin/CbcFollowOn.hpp +207 -0
  231. casadi/include/coin/CbcFullNodeInfo.hpp +171 -0
  232. casadi/include/coin/CbcGeneral.hpp +60 -0
  233. casadi/include/coin/CbcGeneralDepth.hpp +289 -0
  234. casadi/include/coin/CbcHeuristic.hpp +735 -0
  235. casadi/include/coin/CbcHeuristicDINS.hpp +98 -0
  236. casadi/include/coin/CbcHeuristicDW.hpp +374 -0
  237. casadi/include/coin/CbcHeuristicDive.hpp +198 -0
  238. casadi/include/coin/CbcHeuristicDiveCoefficient.hpp +52 -0
  239. casadi/include/coin/CbcHeuristicDiveFractional.hpp +52 -0
  240. casadi/include/coin/CbcHeuristicDiveGuided.hpp +55 -0
  241. casadi/include/coin/CbcHeuristicDiveLineSearch.hpp +52 -0
  242. casadi/include/coin/CbcHeuristicDivePseudoCost.hpp +60 -0
  243. casadi/include/coin/CbcHeuristicDiveVectorLength.hpp +52 -0
  244. casadi/include/coin/CbcHeuristicFPump.hpp +375 -0
  245. casadi/include/coin/CbcHeuristicGreedy.hpp +289 -0
  246. casadi/include/coin/CbcHeuristicLocal.hpp +276 -0
  247. casadi/include/coin/CbcHeuristicPivotAndFix.hpp +58 -0
  248. casadi/include/coin/CbcHeuristicRENS.hpp +79 -0
  249. casadi/include/coin/CbcHeuristicRINS.hpp +106 -0
  250. casadi/include/coin/CbcHeuristicRandRound.hpp +58 -0
  251. casadi/include/coin/CbcHeuristicVND.hpp +95 -0
  252. casadi/include/coin/CbcLinked.hpp +1443 -0
  253. casadi/include/coin/CbcMessage.hpp +94 -0
  254. casadi/include/coin/CbcMipStartIO.hpp +29 -0
  255. casadi/include/coin/CbcModel.hpp +3296 -0
  256. casadi/include/coin/CbcNWay.hpp +171 -0
  257. casadi/include/coin/CbcNode.hpp +380 -0
  258. casadi/include/coin/CbcNodeInfo.hpp +377 -0
  259. casadi/include/coin/CbcObject.hpp +288 -0
  260. casadi/include/coin/CbcObjectUpdateData.hpp +63 -0
  261. casadi/include/coin/CbcOrClpParam.cpp +4321 -0
  262. casadi/include/coin/CbcOrClpParam.hpp +585 -0
  263. casadi/include/coin/CbcParam.hpp +338 -0
  264. casadi/include/coin/CbcPartialNodeInfo.hpp +116 -0
  265. casadi/include/coin/CbcSOS.hpp +290 -0
  266. casadi/include/coin/CbcSimpleInteger.hpp +299 -0
  267. casadi/include/coin/CbcSimpleIntegerDynamicPseudoCost.hpp +619 -0
  268. casadi/include/coin/CbcSimpleIntegerPseudoCost.hpp +122 -0
  269. casadi/include/coin/CbcSolver.hpp +460 -0
  270. casadi/include/coin/CbcStrategy.hpp +269 -0
  271. casadi/include/coin/CbcSubProblem.hpp +84 -0
  272. casadi/include/coin/CbcTree.hpp +493 -0
  273. casadi/include/coin/CbcTreeLocal.hpp +393 -0
  274. casadi/include/coin/Cbc_C_Interface.h +904 -0
  275. casadi/include/coin/Cgl012cut.hpp +464 -0
  276. casadi/include/coin/CglAllDifferent.hpp +115 -0
  277. casadi/include/coin/CglClique.hpp +312 -0
  278. casadi/include/coin/CglConfig.h +19 -0
  279. casadi/include/coin/CglCutGenerator.hpp +133 -0
  280. casadi/include/coin/CglDuplicateRow.hpp +189 -0
  281. casadi/include/coin/CglFlowCover.hpp +371 -0
  282. casadi/include/coin/CglGMI.hpp +364 -0
  283. casadi/include/coin/CglGMIParam.hpp +313 -0
  284. casadi/include/coin/CglGomory.hpp +204 -0
  285. casadi/include/coin/CglKnapsackCover.hpp +310 -0
  286. casadi/include/coin/CglLandP.hpp +306 -0
  287. casadi/include/coin/CglLandPValidator.hpp +130 -0
  288. casadi/include/coin/CglLiftAndProject.hpp +104 -0
  289. casadi/include/coin/CglMessage.hpp +49 -0
  290. casadi/include/coin/CglMixedIntegerRounding.hpp +429 -0
  291. casadi/include/coin/CglMixedIntegerRounding2.hpp +427 -0
  292. casadi/include/coin/CglOddHole.hpp +160 -0
  293. casadi/include/coin/CglParam.hpp +93 -0
  294. casadi/include/coin/CglPreProcess.hpp +600 -0
  295. casadi/include/coin/CglProbing.hpp +543 -0
  296. casadi/include/coin/CglRedSplit.hpp +448 -0
  297. casadi/include/coin/CglRedSplit2.hpp +494 -0
  298. casadi/include/coin/CglRedSplit2Param.hpp +495 -0
  299. casadi/include/coin/CglRedSplitParam.hpp +272 -0
  300. casadi/include/coin/CglResidualCapacity.hpp +240 -0
  301. casadi/include/coin/CglSimpleRounding.hpp +174 -0
  302. casadi/include/coin/CglStored.hpp +140 -0
  303. casadi/include/coin/CglTreeInfo.hpp +216 -0
  304. casadi/include/coin/CglTwomir.hpp +562 -0
  305. casadi/include/coin/CglZeroHalf.hpp +133 -0
  306. casadi/include/coin/ClpAmplObjective.hpp +113 -0
  307. casadi/include/coin/ClpCholeskyBase.hpp +321 -0
  308. casadi/include/coin/ClpCholeskyDense.hpp +157 -0
  309. casadi/include/coin/ClpCholeskyMumps.hpp +65 -0
  310. casadi/include/coin/ClpCholeskyPardiso.hpp +67 -0
  311. casadi/include/coin/ClpConfig.h +17 -0
  312. casadi/include/coin/ClpConstraint.hpp +129 -0
  313. casadi/include/coin/ClpConstraintAmpl.hpp +109 -0
  314. casadi/include/coin/ClpConstraintLinear.hpp +113 -0
  315. casadi/include/coin/ClpConstraintQuadratic.hpp +123 -0
  316. casadi/include/coin/ClpDualRowDantzig.hpp +72 -0
  317. casadi/include/coin/ClpDualRowPivot.hpp +136 -0
  318. casadi/include/coin/ClpDualRowSteepest.hpp +160 -0
  319. casadi/include/coin/ClpDummyMatrix.hpp +186 -0
  320. casadi/include/coin/ClpDynamicExampleMatrix.hpp +199 -0
  321. casadi/include/coin/ClpDynamicMatrix.hpp +420 -0
  322. casadi/include/coin/ClpEventHandler.hpp +193 -0
  323. casadi/include/coin/ClpFactorization.hpp +556 -0
  324. casadi/include/coin/ClpGubDynamicMatrix.hpp +270 -0
  325. casadi/include/coin/ClpGubMatrix.hpp +373 -0
  326. casadi/include/coin/ClpInterior.hpp +622 -0
  327. casadi/include/coin/ClpLinearObjective.hpp +104 -0
  328. casadi/include/coin/ClpMatrixBase.hpp +561 -0
  329. casadi/include/coin/ClpMessage.hpp +131 -0
  330. casadi/include/coin/ClpModel.hpp +1442 -0
  331. casadi/include/coin/ClpNetworkMatrix.hpp +235 -0
  332. casadi/include/coin/ClpNode.hpp +364 -0
  333. casadi/include/coin/ClpNonLinearCost.hpp +432 -0
  334. casadi/include/coin/ClpObjective.hpp +142 -0
  335. casadi/include/coin/ClpPEDualRowDantzig.hpp +84 -0
  336. casadi/include/coin/ClpPEDualRowSteepest.hpp +100 -0
  337. casadi/include/coin/ClpPEPrimalColumnDantzig.hpp +71 -0
  338. casadi/include/coin/ClpPEPrimalColumnSteepest.hpp +107 -0
  339. casadi/include/coin/ClpPESimplex.hpp +231 -0
  340. casadi/include/coin/ClpPackedMatrix.hpp +778 -0
  341. casadi/include/coin/ClpParameters.hpp +132 -0
  342. casadi/include/coin/ClpPdcoBase.hpp +110 -0
  343. casadi/include/coin/ClpPlusMinusOneMatrix.hpp +565 -0
  344. casadi/include/coin/ClpPresolve.hpp +379 -0
  345. casadi/include/coin/ClpPrimalColumnDantzig.hpp +74 -0
  346. casadi/include/coin/ClpPrimalColumnPivot.hpp +163 -0
  347. casadi/include/coin/ClpPrimalColumnSteepest.hpp +281 -0
  348. casadi/include/coin/ClpQuadraticObjective.hpp +161 -0
  349. casadi/include/coin/ClpSimplex.hpp +2137 -0
  350. casadi/include/coin/ClpSimplexDual.hpp +304 -0
  351. casadi/include/coin/ClpSimplexNonlinear.hpp +117 -0
  352. casadi/include/coin/ClpSimplexOther.hpp +282 -0
  353. casadi/include/coin/ClpSimplexPrimal.hpp +244 -0
  354. casadi/include/coin/ClpSolve.hpp +505 -0
  355. casadi/include/coin/Clp_C_Interface.h +554 -0
  356. casadi/include/coin/CoinAlloc.hpp +179 -0
  357. casadi/include/coin/CoinBuild.hpp +159 -0
  358. casadi/include/coin/CoinDenseFactorization.hpp +452 -0
  359. casadi/include/coin/CoinDenseVector.hpp +401 -0
  360. casadi/include/coin/CoinDistance.hpp +51 -0
  361. casadi/include/coin/CoinError.hpp +274 -0
  362. casadi/include/coin/CoinFactorization.hpp +2178 -0
  363. casadi/include/coin/CoinFileIO.hpp +185 -0
  364. casadi/include/coin/CoinFinite.hpp +37 -0
  365. casadi/include/coin/CoinFloatEqual.hpp +204 -0
  366. casadi/include/coin/CoinHelperFunctions.hpp +1270 -0
  367. casadi/include/coin/CoinIndexedVector.hpp +1437 -0
  368. casadi/include/coin/CoinLpIO.hpp +836 -0
  369. casadi/include/coin/CoinMessage.hpp +95 -0
  370. casadi/include/coin/CoinMessageHandler.hpp +717 -0
  371. casadi/include/coin/CoinModel.hpp +1214 -0
  372. casadi/include/coin/CoinModelUseful.hpp +518 -0
  373. casadi/include/coin/CoinMpsIO.hpp +1142 -0
  374. casadi/include/coin/CoinOslFactorization.hpp +287 -0
  375. casadi/include/coin/CoinPackedMatrix.hpp +956 -0
  376. casadi/include/coin/CoinPackedVector.hpp +670 -0
  377. casadi/include/coin/CoinPackedVectorBase.hpp +274 -0
  378. casadi/include/coin/CoinParam.hpp +644 -0
  379. casadi/include/coin/CoinPragma.hpp +29 -0
  380. casadi/include/coin/CoinPresolveDoubleton.hpp +76 -0
  381. casadi/include/coin/CoinPresolveDual.hpp +84 -0
  382. casadi/include/coin/CoinPresolveDupcol.hpp +259 -0
  383. casadi/include/coin/CoinPresolveEmpty.hpp +120 -0
  384. casadi/include/coin/CoinPresolveFixed.hpp +185 -0
  385. casadi/include/coin/CoinPresolveForcing.hpp +69 -0
  386. casadi/include/coin/CoinPresolveImpliedFree.hpp +66 -0
  387. casadi/include/coin/CoinPresolveIsolated.hpp +59 -0
  388. casadi/include/coin/CoinPresolveMatrix.hpp +1996 -0
  389. casadi/include/coin/CoinPresolveMonitor.hpp +105 -0
  390. casadi/include/coin/CoinPresolvePsdebug.hpp +169 -0
  391. casadi/include/coin/CoinPresolveSingleton.hpp +115 -0
  392. casadi/include/coin/CoinPresolveSubst.hpp +103 -0
  393. casadi/include/coin/CoinPresolveTighten.hpp +58 -0
  394. casadi/include/coin/CoinPresolveTripleton.hpp +69 -0
  395. casadi/include/coin/CoinPresolveUseless.hpp +63 -0
  396. casadi/include/coin/CoinPresolveZeros.hpp +65 -0
  397. casadi/include/coin/CoinRational.hpp +43 -0
  398. casadi/include/coin/CoinSearchTree.hpp +523 -0
  399. casadi/include/coin/CoinShallowPackedVector.hpp +149 -0
  400. casadi/include/coin/CoinSignal.hpp +127 -0
  401. casadi/include/coin/CoinSimpFactorization.hpp +432 -0
  402. casadi/include/coin/CoinSmartPtr.hpp +548 -0
  403. casadi/include/coin/CoinSnapshot.hpp +572 -0
  404. casadi/include/coin/CoinSort.hpp +753 -0
  405. casadi/include/coin/CoinStructuredModel.hpp +270 -0
  406. casadi/include/coin/CoinTime.hpp +350 -0
  407. casadi/include/coin/CoinTypes.hpp +67 -0
  408. casadi/include/coin/CoinUtility.hpp +26 -0
  409. casadi/include/coin/CoinUtilsConfig.h +34 -0
  410. casadi/include/coin/CoinWarmStart.hpp +56 -0
  411. casadi/include/coin/CoinWarmStartBasis.hpp +468 -0
  412. casadi/include/coin/CoinWarmStartDual.hpp +180 -0
  413. casadi/include/coin/CoinWarmStartPrimalDual.hpp +233 -0
  414. casadi/include/coin/CoinWarmStartVector.hpp +523 -0
  415. casadi/include/coin/Coin_C_defines.h +149 -0
  416. casadi/include/coin/Idiot.hpp +327 -0
  417. casadi/include/coin/OsiAuxInfo.hpp +261 -0
  418. casadi/include/coin/OsiBranchingObject.hpp +1097 -0
  419. casadi/include/coin/OsiCbcSolverInterface.hpp +791 -0
  420. casadi/include/coin/OsiChooseVariable.hpp +645 -0
  421. casadi/include/coin/OsiClpSolverInterface.hpp +1604 -0
  422. casadi/include/coin/OsiColCut.hpp +322 -0
  423. casadi/include/coin/OsiCollections.hpp +34 -0
  424. casadi/include/coin/OsiConfig.h +19 -0
  425. casadi/include/coin/OsiCut.hpp +251 -0
  426. casadi/include/coin/OsiCuts.hpp +505 -0
  427. casadi/include/coin/OsiPresolve.hpp +272 -0
  428. casadi/include/coin/OsiRowCut.hpp +345 -0
  429. casadi/include/coin/OsiRowCutDebugger.hpp +190 -0
  430. casadi/include/coin/OsiSolverBranch.hpp +169 -0
  431. casadi/include/coin/OsiSolverInterface.hpp +2221 -0
  432. casadi/include/coin/OsiSolverParameters.hpp +144 -0
  433. casadi/include/coin/OsiUnitTests.hpp +390 -0
  434. casadi/include/coin-or/IpAlgBuilder.hpp +417 -0
  435. casadi/include/coin-or/IpAlgStrategy.hpp +201 -0
  436. casadi/include/coin-or/IpAlgTypes.hpp +64 -0
  437. casadi/include/coin-or/IpAugSystemSolver.hpp +212 -0
  438. casadi/include/coin-or/IpBlas.hpp +426 -0
  439. casadi/include/coin-or/IpCachedResults.hpp +897 -0
  440. casadi/include/coin-or/IpCompoundMatrix.hpp +423 -0
  441. casadi/include/coin-or/IpCompoundSymMatrix.hpp +348 -0
  442. casadi/include/coin-or/IpCompoundVector.hpp +395 -0
  443. casadi/include/coin-or/IpConvCheck.hpp +97 -0
  444. casadi/include/coin-or/IpDebug.hpp +167 -0
  445. casadi/include/coin-or/IpDenseVector.hpp +626 -0
  446. casadi/include/coin-or/IpDiagMatrix.hpp +158 -0
  447. casadi/include/coin-or/IpEqMultCalculator.hpp +76 -0
  448. casadi/include/coin-or/IpException.hpp +156 -0
  449. casadi/include/coin-or/IpExpansionMatrix.hpp +245 -0
  450. casadi/include/coin-or/IpGenTMatrix.hpp +290 -0
  451. casadi/include/coin-or/IpHessianUpdater.hpp +73 -0
  452. casadi/include/coin-or/IpIdentityMatrix.hpp +167 -0
  453. casadi/include/coin-or/IpIpoptAlg.hpp +257 -0
  454. casadi/include/coin-or/IpIpoptApplication.hpp +367 -0
  455. casadi/include/coin-or/IpIpoptCalculatedQuantities.hpp +1009 -0
  456. casadi/include/coin-or/IpIpoptData.hpp +966 -0
  457. casadi/include/coin-or/IpIpoptNLP.hpp +328 -0
  458. casadi/include/coin-or/IpIterateInitializer.hpp +68 -0
  459. casadi/include/coin-or/IpIteratesVector.hpp +840 -0
  460. casadi/include/coin-or/IpIterationOutput.hpp +78 -0
  461. casadi/include/coin-or/IpJournalist.hpp +573 -0
  462. casadi/include/coin-or/IpLapack.hpp +227 -0
  463. casadi/include/coin-or/IpLibraryLoader.hpp +76 -0
  464. casadi/include/coin-or/IpLineSearch.hpp +106 -0
  465. casadi/include/coin-or/IpLinearSolvers.h +46 -0
  466. casadi/include/coin-or/IpMatrix.hpp +434 -0
  467. casadi/include/coin-or/IpMuUpdate.hpp +77 -0
  468. casadi/include/coin-or/IpNLP.hpp +306 -0
  469. casadi/include/coin-or/IpNLPScaling.hpp +582 -0
  470. casadi/include/coin-or/IpObserver.hpp +422 -0
  471. casadi/include/coin-or/IpOptionsList.hpp +412 -0
  472. casadi/include/coin-or/IpOrigIpoptNLP.hpp +603 -0
  473. casadi/include/coin-or/IpPDSystemSolver.hpp +137 -0
  474. casadi/include/coin-or/IpReferenced.hpp +262 -0
  475. casadi/include/coin-or/IpRegOptions.hpp +1152 -0
  476. casadi/include/coin-or/IpReturnCodes.h +23 -0
  477. casadi/include/coin-or/IpReturnCodes.hpp +18 -0
  478. casadi/include/coin-or/IpReturnCodes.inc +71 -0
  479. casadi/include/coin-or/IpReturnCodes_inc.h +45 -0
  480. casadi/include/coin-or/IpScaledMatrix.hpp +291 -0
  481. casadi/include/coin-or/IpSearchDirCalculator.hpp +72 -0
  482. casadi/include/coin-or/IpSmartPtr.hpp +865 -0
  483. casadi/include/coin-or/IpSolveStatistics.hpp +210 -0
  484. casadi/include/coin-or/IpSparseSymLinearSolverInterface.hpp +260 -0
  485. casadi/include/coin-or/IpStdAugSystemSolver.cpp +555 -0
  486. casadi/include/coin-or/IpStdCInterface.h +428 -0
  487. casadi/include/coin-or/IpSumSymMatrix.hpp +186 -0
  488. casadi/include/coin-or/IpSymLinearSolver.hpp +141 -0
  489. casadi/include/coin-or/IpSymMatrix.hpp +167 -0
  490. casadi/include/coin-or/IpSymScaledMatrix.hpp +255 -0
  491. casadi/include/coin-or/IpSymTMatrix.hpp +275 -0
  492. casadi/include/coin-or/IpTNLP.hpp +820 -0
  493. casadi/include/coin-or/IpTNLPAdapter.hpp +648 -0
  494. casadi/include/coin-or/IpTNLPReducer.hpp +274 -0
  495. casadi/include/coin-or/IpTaggedObject.hpp +128 -0
  496. casadi/include/coin-or/IpTimedTask.hpp +218 -0
  497. casadi/include/coin-or/IpTimingStatistics.hpp +323 -0
  498. casadi/include/coin-or/IpTripletHelper.hpp +308 -0
  499. casadi/include/coin-or/IpTypes.h +81 -0
  500. casadi/include/coin-or/IpTypes.hpp +30 -0
  501. casadi/include/coin-or/IpUtils.hpp +166 -0
  502. casadi/include/coin-or/IpVector.hpp +892 -0
  503. casadi/include/coin-or/IpZeroSymMatrix.hpp +155 -0
  504. casadi/include/coin-or/IpoptConfig.h +45 -0
  505. casadi/include/coin-or/SensAlgorithm.hpp +114 -0
  506. casadi/include/coin-or/SensApplication.hpp +188 -0
  507. casadi/include/coin-or/SensBacksolver.hpp +36 -0
  508. casadi/include/coin-or/SensMeasurement.hpp +56 -0
  509. casadi/include/coin-or/SensPCalculator.hpp +137 -0
  510. casadi/include/coin-or/SensRegOp.hpp +21 -0
  511. casadi/include/coin-or/SensSchurData.hpp +182 -0
  512. casadi/include/coin-or/SensSchurDriver.hpp +118 -0
  513. casadi/include/coin-or/SensSimpleBacksolver.hpp +49 -0
  514. casadi/include/coin-or/SensStepCalc.hpp +85 -0
  515. casadi/include/coin-or/SensUtils.hpp +63 -0
  516. casadi/include/coin-or/metis/defs.h +161 -0
  517. casadi/include/coin-or/metis/macros.h +143 -0
  518. casadi/include/coin-or/metis/metis.h +37 -0
  519. casadi/include/coin-or/metis/proto.h +505 -0
  520. casadi/include/coin-or/metis/rename.h +418 -0
  521. casadi/include/coin-or/metis/struct.h +251 -0
  522. casadi/include/coin-or/mumps/dmumps_c.h +142 -0
  523. casadi/include/coin-or/mumps/mumps_c_types.h +72 -0
  524. casadi/include/coin-or/mumps/mumps_compat.h +27 -0
  525. casadi/include/coin-or/mumps/mumps_int_def.h +11 -0
  526. casadi/include/coin-or/mumps/mumps_mpi.h +67 -0
  527. casadi/include/d_blas.h +78 -0
  528. casadi/include/d_blas_64.h +73 -0
  529. casadi/include/highs/HConfig.h +4 -7
  530. casadi/include/highs/Highs.h +240 -51
  531. casadi/include/highs/filereaderlp/builder.hpp +12 -13
  532. casadi/include/highs/filereaderlp/model.hpp +32 -35
  533. casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
  534. casadi/include/highs/interfaces/highs_c_api.h +964 -577
  535. casadi/include/highs/io/Filereader.h +2 -4
  536. casadi/include/highs/io/FilereaderEms.h +2 -4
  537. casadi/include/highs/io/FilereaderLp.h +2 -4
  538. casadi/include/highs/io/FilereaderMps.h +2 -4
  539. casadi/include/highs/io/HMPSIO.h +2 -4
  540. casadi/include/highs/io/HMpsFF.h +2 -4
  541. casadi/include/highs/io/HighsIO.h +19 -13
  542. casadi/include/highs/io/LoadOptions.h +7 -6
  543. casadi/include/highs/ipm/IpxWrapper.h +4 -5
  544. casadi/include/highs/lp_data/HConst.h +60 -15
  545. casadi/include/highs/lp_data/HStruct.h +32 -8
  546. casadi/include/highs/lp_data/HighsAnalysis.h +2 -4
  547. casadi/include/highs/lp_data/HighsCallback.h +33 -0
  548. casadi/include/highs/lp_data/HighsCallbackStruct.h +36 -0
  549. casadi/include/highs/lp_data/HighsDebug.h +2 -4
  550. casadi/include/highs/lp_data/HighsInfo.h +22 -23
  551. casadi/include/highs/lp_data/HighsInfoDebug.h +2 -4
  552. casadi/include/highs/lp_data/HighsLp.h +14 -6
  553. casadi/include/highs/lp_data/HighsLpSolverObject.h +6 -5
  554. casadi/include/highs/lp_data/HighsLpUtils.h +23 -12
  555. casadi/include/highs/lp_data/HighsModelUtils.h +22 -8
  556. casadi/include/highs/lp_data/HighsOptions.h +175 -106
  557. casadi/include/highs/lp_data/HighsRanging.h +2 -4
  558. casadi/include/highs/lp_data/HighsRuntimeOptions.h +21 -6
  559. casadi/include/highs/lp_data/HighsSolution.h +4 -4
  560. casadi/include/highs/lp_data/HighsSolutionDebug.h +2 -4
  561. casadi/include/highs/lp_data/HighsSolve.h +2 -4
  562. casadi/include/highs/lp_data/HighsStatus.h +2 -4
  563. casadi/include/highs/mip/HighsCliqueTable.h +18 -20
  564. casadi/include/highs/mip/HighsConflictPool.h +2 -4
  565. casadi/include/highs/mip/HighsCutGeneration.h +2 -4
  566. casadi/include/highs/mip/HighsCutPool.h +2 -4
  567. casadi/include/highs/mip/HighsDebugSol.h +2 -4
  568. casadi/include/highs/mip/HighsDomain.h +5 -5
  569. casadi/include/highs/mip/HighsDomainChange.h +2 -4
  570. casadi/include/highs/mip/HighsDynamicRowMatrix.h +2 -4
  571. casadi/include/highs/mip/HighsGFkSolve.h +2 -4
  572. casadi/include/highs/mip/HighsImplications.h +2 -4
  573. casadi/include/highs/mip/HighsLpAggregator.h +2 -4
  574. casadi/include/highs/mip/HighsLpRelaxation.h +2 -4
  575. casadi/include/highs/mip/HighsMipSolver.h +18 -6
  576. casadi/include/highs/mip/HighsMipSolverData.h +8 -4
  577. casadi/include/highs/mip/HighsModkSeparator.h +2 -4
  578. casadi/include/highs/mip/HighsNodeQueue.h +3 -9
  579. casadi/include/highs/mip/HighsObjectiveFunction.h +2 -4
  580. casadi/include/highs/mip/HighsPathSeparator.h +2 -4
  581. casadi/include/highs/mip/HighsPrimalHeuristics.h +2 -4
  582. casadi/include/highs/mip/HighsPseudocost.h +2 -4
  583. casadi/include/highs/mip/HighsRedcostFixing.h +2 -4
  584. casadi/include/highs/mip/HighsSearch.h +2 -4
  585. casadi/include/highs/mip/HighsSeparation.h +2 -4
  586. casadi/include/highs/mip/HighsSeparator.h +2 -4
  587. casadi/include/highs/mip/HighsTableauSeparator.h +2 -4
  588. casadi/include/highs/mip/HighsTransformedLp.h +2 -4
  589. casadi/include/highs/model/HighsHessian.h +3 -1
  590. casadi/include/highs/model/HighsModel.h +2 -0
  591. casadi/include/highs/parallel/HighsSpinMutex.h +2 -1
  592. casadi/include/highs/parallel/HighsSplitDeque.h +1 -1
  593. casadi/include/highs/parallel/HighsTaskExecutor.h +10 -2
  594. casadi/include/highs/presolve/HPresolve.h +9 -6
  595. casadi/include/highs/presolve/HPresolveAnalysis.h +5 -4
  596. casadi/include/highs/presolve/HighsPostsolveStack.h +50 -13
  597. casadi/include/highs/presolve/HighsSymmetry.h +2 -4
  598. casadi/include/highs/presolve/ICrash.h +4 -3
  599. casadi/include/highs/presolve/ICrashUtil.h +2 -2
  600. casadi/include/highs/presolve/ICrashX.h +4 -6
  601. casadi/include/highs/presolve/PresolveComponent.h +4 -42
  602. casadi/include/highs/qpsolver/a_asm.hpp +56 -0
  603. casadi/include/highs/qpsolver/a_quass.hpp +12 -0
  604. casadi/include/highs/qpsolver/quass.hpp +1 -4
  605. casadi/include/highs/simplex/HApp.h +14 -16
  606. casadi/include/highs/simplex/HEkk.h +12 -11
  607. casadi/include/highs/simplex/HEkkDual.h +2 -4
  608. casadi/include/highs/simplex/HEkkDualRHS.h +5 -6
  609. casadi/include/highs/simplex/HEkkDualRow.h +2 -4
  610. casadi/include/highs/simplex/HEkkPrimal.h +2 -4
  611. casadi/include/highs/simplex/HSimplex.h +2 -4
  612. casadi/include/highs/simplex/HSimplexDebug.h +2 -4
  613. casadi/include/highs/simplex/HSimplexNla.h +2 -4
  614. casadi/include/highs/simplex/HSimplexReport.h +3 -5
  615. casadi/include/highs/simplex/HighsSimplexAnalysis.h +2 -4
  616. casadi/include/highs/simplex/SimplexConst.h +7 -5
  617. casadi/include/highs/simplex/SimplexStruct.h +11 -5
  618. casadi/include/highs/simplex/SimplexTimer.h +2 -4
  619. casadi/include/highs/test/DevKkt.h +2 -4
  620. casadi/include/highs/test/KktCh2.h +2 -4
  621. casadi/include/highs/util/FactorTimer.h +2 -4
  622. casadi/include/highs/util/HFactor.h +2 -4
  623. casadi/include/highs/util/HFactorConst.h +2 -4
  624. casadi/include/highs/util/HFactorDebug.h +2 -4
  625. casadi/include/highs/util/HSet.h +3 -5
  626. casadi/include/highs/util/HVector.h +2 -4
  627. casadi/include/highs/util/HVectorBase.h +2 -4
  628. casadi/include/highs/util/HighsCDouble.h +2 -4
  629. casadi/include/highs/util/HighsComponent.h +2 -4
  630. casadi/include/highs/util/HighsDataStack.h +3 -5
  631. casadi/include/highs/util/HighsDisjointSets.h +8 -10
  632. casadi/include/highs/util/HighsHash.h +22 -7
  633. casadi/include/highs/util/HighsHashTree.h +25 -7
  634. casadi/include/highs/util/HighsInt.h +2 -4
  635. casadi/include/highs/util/HighsIntegers.h +2 -4
  636. casadi/include/highs/util/HighsLinearSumBounds.h +2 -4
  637. casadi/include/highs/util/HighsMatrixPic.h +2 -4
  638. casadi/include/highs/util/HighsMatrixSlice.h +2 -4
  639. casadi/include/highs/util/HighsMatrixUtils.h +2 -4
  640. casadi/include/highs/util/HighsRandom.h +2 -4
  641. casadi/include/highs/util/HighsRbTree.h +2 -4
  642. casadi/include/highs/util/HighsSort.h +2 -4
  643. casadi/include/highs/util/HighsSparseMatrix.h +11 -7
  644. casadi/include/highs/util/HighsSparseVectorSum.h +2 -4
  645. casadi/include/highs/util/HighsSplay.h +2 -4
  646. casadi/include/highs/util/HighsTimer.h +3 -4
  647. casadi/include/highs/util/HighsUtils.h +14 -4
  648. casadi/include/highs/util/stringutil.h +2 -4
  649. casadi/include/licenses/alpaqa-external/LICENSE +165 -0
  650. casadi/include/licenses/highs-external/LICENSE +1 -1
  651. casadi/include/licenses/sleqp-external/LICENSE +165 -0
  652. casadi/include/licenses/trlib-external/LICENSE +21 -0
  653. casadi/include/openblas/cblas.h +411 -0
  654. casadi/include/openblas/f77blas.h +796 -0
  655. casadi/include/openblas/lapack.h +22997 -0
  656. casadi/include/openblas/lapacke.h +12665 -0
  657. casadi/include/openblas/lapacke_config.h +119 -0
  658. casadi/include/openblas/lapacke_example_aux.h +9 -0
  659. casadi/include/openblas/lapacke_mangling.h +17 -0
  660. casadi/include/openblas/lapacke_utils.h +582 -0
  661. casadi/include/openblas/openblas/lapacke_mangling.h +17 -0
  662. casadi/include/openblas/openblas_config.h +140 -0
  663. casadi/include/qdldl/qdldl.h +169 -0
  664. casadi/include/qdldl/qdldl_types.h +23 -0
  665. casadi/include/s_blas.h +78 -0
  666. casadi/include/s_blas_64.h +73 -0
  667. casadi/include/sleqp/defs.h +58 -0
  668. casadi/include/sleqp/export.h +42 -0
  669. casadi/include/sleqp/pub_cmp.h +18 -0
  670. casadi/include/sleqp/pub_dyn.h +140 -0
  671. casadi/include/sleqp/pub_error.h +50 -0
  672. casadi/include/sleqp/pub_func.h +257 -0
  673. casadi/include/sleqp/pub_hess_struct.h +105 -0
  674. casadi/include/sleqp/pub_iterate.h +88 -0
  675. casadi/include/sleqp/pub_log.h +88 -0
  676. casadi/include/sleqp/pub_lsq.h +158 -0
  677. casadi/include/sleqp/pub_mem.h +52 -0
  678. casadi/include/sleqp/pub_problem.h +213 -0
  679. casadi/include/sleqp/pub_scale.h +150 -0
  680. casadi/include/sleqp/pub_settings.h +162 -0
  681. casadi/include/sleqp/pub_solver.h +155 -0
  682. casadi/include/sleqp/pub_types.h +230 -0
  683. casadi/include/sleqp/pub_working_set.h +135 -0
  684. casadi/include/sleqp/sparse/pub_mat.h +153 -0
  685. casadi/include/sleqp/sparse/pub_vec.h +336 -0
  686. casadi/include/sleqp.h +38 -0
  687. casadi/include/spral.h +13 -0
  688. casadi/include/spral_lsmr.h +57 -0
  689. casadi/include/spral_matrix_util.h +40 -0
  690. casadi/include/spral_random.h +26 -0
  691. casadi/include/spral_random_matrix.h +27 -0
  692. casadi/include/spral_rutherford_boeing.h +51 -0
  693. casadi/include/spral_scaling.h +139 -0
  694. casadi/include/spral_ssids.h +121 -0
  695. casadi/include/spral_ssmfe.h +268 -0
  696. casadi/include/trlib/trlib_eigen_inverse.h +118 -0
  697. casadi/include/trlib/trlib_krylov.h +493 -0
  698. casadi/include/trlib/trlib_leftmost.h +181 -0
  699. casadi/include/trlib/trlib_private.h +109 -0
  700. casadi/include/trlib/trlib_quadratic_zero.h +57 -0
  701. casadi/include/trlib/trlib_tri_factor.h +409 -0
  702. casadi/include/trlib/trlib_types.h +36 -0
  703. casadi/include/trlib.h +44 -0
  704. casadi/ipopt.lib +0 -0
  705. casadi/lapack.lib +0 -0
  706. casadi/lib/libtinyxml2.dll.a +0 -0
  707. casadi/libCbc-3.dll +0 -0
  708. casadi/libCbc.dll.a +0 -0
  709. casadi/libCbc.la +1 -1
  710. casadi/libCbcSolver-3.dll +0 -0
  711. casadi/libCbcSolver.dll.a +0 -0
  712. casadi/libCbcSolver.la +1 -1
  713. casadi/libCgl-1.dll +0 -0
  714. casadi/libCgl.dll.a +0 -0
  715. casadi/libCgl.la +1 -1
  716. casadi/libClp-1.dll +0 -0
  717. casadi/libClp.dll.a +0 -0
  718. casadi/libClp.la +1 -1
  719. casadi/libClpSolver-1.dll +0 -0
  720. casadi/libClpSolver.dll.a +0 -0
  721. casadi/libClpSolver.la +1 -1
  722. casadi/libCoinUtils-3.dll +0 -0
  723. casadi/libCoinUtils.dll.a +0 -0
  724. casadi/libCoinUtils.la +1 -1
  725. casadi/libFortranHighs.dll +0 -0
  726. casadi/libFortranHighs.dll.a +0 -0
  727. casadi/libOsi-1.dll +0 -0
  728. casadi/libOsi.dll.a +0 -0
  729. casadi/libOsi.la +1 -1
  730. casadi/libOsiCbc-3.dll +0 -0
  731. casadi/libOsiCbc.dll.a +0 -0
  732. casadi/libOsiCbc.la +1 -1
  733. casadi/libOsiClp-1.dll +0 -0
  734. casadi/libOsiClp.dll.a +0 -0
  735. casadi/libOsiClp.la +1 -1
  736. casadi/libOsiCommonTests-1.dll +0 -0
  737. casadi/libOsiCommonTests.dll.a +0 -0
  738. casadi/libOsiCommonTests.la +1 -1
  739. casadi/libalpaqa.dll +0 -0
  740. casadi/libalpaqa.dll.a +0 -0
  741. casadi/libblasfeo.dll +0 -0
  742. casadi/libblasfeo.dll.a +0 -0
  743. casadi/libbonmin-4.dll +0 -0
  744. casadi/libbonmin.dll.a +0 -0
  745. casadi/libbonmin.la +1 -1
  746. casadi/libcasadi-tp-openblas.dll +0 -0
  747. casadi/libcasadi-tp-openblas.dll.a +0 -0
  748. casadi/libcasadi.dll +0 -0
  749. casadi/libcasadi.dll.a +0 -0
  750. casadi/libcasadi_conic_cbc.dll +0 -0
  751. casadi/libcasadi_conic_cbc.dll.a +0 -0
  752. casadi/libcasadi_conic_clp.dll +0 -0
  753. casadi/libcasadi_conic_clp.dll.a +0 -0
  754. casadi/libcasadi_conic_cplex.dll +0 -0
  755. casadi/libcasadi_conic_cplex.dll.a +0 -0
  756. casadi/libcasadi_conic_gurobi.dll +0 -0
  757. casadi/libcasadi_conic_gurobi.dll.a +0 -0
  758. casadi/libcasadi_conic_highs.dll +0 -0
  759. casadi/libcasadi_conic_highs.dll.a +0 -0
  760. casadi/libcasadi_conic_hpipm.dll +0 -0
  761. casadi/libcasadi_conic_hpipm.dll.a +0 -0
  762. casadi/libcasadi_conic_ipqp.dll +0 -0
  763. casadi/libcasadi_conic_ipqp.dll.a +0 -0
  764. casadi/libcasadi_conic_nlpsol.dll +0 -0
  765. casadi/libcasadi_conic_nlpsol.dll.a +0 -0
  766. casadi/libcasadi_conic_osqp.dll +0 -0
  767. casadi/libcasadi_conic_osqp.dll.a +0 -0
  768. casadi/libcasadi_conic_proxqp.dll +0 -0
  769. casadi/libcasadi_conic_proxqp.dll.a +0 -0
  770. casadi/libcasadi_conic_qpoases.dll +0 -0
  771. casadi/libcasadi_conic_qpoases.dll.a +0 -0
  772. casadi/libcasadi_conic_qrqp.dll +0 -0
  773. casadi/libcasadi_conic_qrqp.dll.a +0 -0
  774. casadi/libcasadi_conic_superscs.dll +0 -0
  775. casadi/libcasadi_conic_superscs.dll.a +0 -0
  776. casadi/libcasadi_importer_shell.dll +0 -0
  777. casadi/libcasadi_importer_shell.dll.a +0 -0
  778. casadi/libcasadi_integrator_collocation.dll +0 -0
  779. casadi/libcasadi_integrator_collocation.dll.a +0 -0
  780. casadi/libcasadi_integrator_cvodes.dll +0 -0
  781. casadi/libcasadi_integrator_cvodes.dll.a +0 -0
  782. casadi/libcasadi_integrator_idas.dll +0 -0
  783. casadi/libcasadi_integrator_idas.dll.a +0 -0
  784. casadi/libcasadi_integrator_rk.dll +0 -0
  785. casadi/libcasadi_integrator_rk.dll.a +0 -0
  786. casadi/libcasadi_interpolant_bspline.dll +0 -0
  787. casadi/libcasadi_interpolant_bspline.dll.a +0 -0
  788. casadi/libcasadi_interpolant_linear.dll +0 -0
  789. casadi/libcasadi_interpolant_linear.dll.a +0 -0
  790. casadi/libcasadi_linsol_csparse.dll +0 -0
  791. casadi/libcasadi_linsol_csparse.dll.a +0 -0
  792. casadi/libcasadi_linsol_csparsecholesky.dll +0 -0
  793. casadi/libcasadi_linsol_csparsecholesky.dll.a +0 -0
  794. casadi/libcasadi_linsol_lapacklu.dll +0 -0
  795. casadi/libcasadi_linsol_lapacklu.dll.a +0 -0
  796. casadi/libcasadi_linsol_lapackqr.dll +0 -0
  797. casadi/libcasadi_linsol_lapackqr.dll.a +0 -0
  798. casadi/libcasadi_linsol_ldl.dll +0 -0
  799. casadi/libcasadi_linsol_ldl.dll.a +0 -0
  800. casadi/libcasadi_linsol_lsqr.dll +0 -0
  801. casadi/libcasadi_linsol_lsqr.dll.a +0 -0
  802. casadi/libcasadi_linsol_ma27.dll +0 -0
  803. casadi/libcasadi_linsol_ma27.dll.a +0 -0
  804. casadi/libcasadi_linsol_mumps.dll +0 -0
  805. casadi/libcasadi_linsol_mumps.dll.a +0 -0
  806. casadi/libcasadi_linsol_qr.dll +0 -0
  807. casadi/libcasadi_linsol_qr.dll.a +0 -0
  808. casadi/libcasadi_linsol_symbolicqr.dll +0 -0
  809. casadi/libcasadi_linsol_symbolicqr.dll.a +0 -0
  810. casadi/libcasadi_linsol_tridiag.dll +0 -0
  811. casadi/libcasadi_linsol_tridiag.dll.a +0 -0
  812. casadi/libcasadi_nlpsol_alpaqa.dll +0 -0
  813. casadi/libcasadi_nlpsol_alpaqa.dll.a +0 -0
  814. casadi/libcasadi_nlpsol_ampl.dll +0 -0
  815. casadi/libcasadi_nlpsol_ampl.dll.a +0 -0
  816. casadi/libcasadi_nlpsol_blocksqp.dll +0 -0
  817. casadi/libcasadi_nlpsol_blocksqp.dll.a +0 -0
  818. casadi/libcasadi_nlpsol_bonmin.dll +0 -0
  819. casadi/libcasadi_nlpsol_bonmin.dll.a +0 -0
  820. casadi/libcasadi_nlpsol_feasiblesqpmethod.dll +0 -0
  821. casadi/libcasadi_nlpsol_feasiblesqpmethod.dll.a +0 -0
  822. casadi/libcasadi_nlpsol_ipopt.dll +0 -0
  823. casadi/libcasadi_nlpsol_ipopt.dll.a +0 -0
  824. casadi/libcasadi_nlpsol_knitro.dll +0 -0
  825. casadi/libcasadi_nlpsol_knitro.dll.a +0 -0
  826. casadi/libcasadi_nlpsol_qrsqp.dll +0 -0
  827. casadi/libcasadi_nlpsol_qrsqp.dll.a +0 -0
  828. casadi/libcasadi_nlpsol_scpgen.dll +0 -0
  829. casadi/libcasadi_nlpsol_scpgen.dll.a +0 -0
  830. casadi/libcasadi_nlpsol_sleqp.dll +0 -0
  831. casadi/libcasadi_nlpsol_sleqp.dll.a +0 -0
  832. casadi/libcasadi_nlpsol_snopt.dll +0 -0
  833. casadi/libcasadi_nlpsol_snopt.dll.a +0 -0
  834. casadi/libcasadi_nlpsol_sqpmethod.dll +0 -0
  835. casadi/libcasadi_nlpsol_sqpmethod.dll.a +0 -0
  836. casadi/libcasadi_nlpsol_worhp.dll +0 -0
  837. casadi/libcasadi_nlpsol_worhp.dll.a +0 -0
  838. casadi/libcasadi_rootfinder_fast_newton.dll +0 -0
  839. casadi/libcasadi_rootfinder_fast_newton.dll.a +0 -0
  840. casadi/libcasadi_rootfinder_kinsol.dll +0 -0
  841. casadi/libcasadi_rootfinder_kinsol.dll.a +0 -0
  842. casadi/libcasadi_rootfinder_newton.dll +0 -0
  843. casadi/libcasadi_rootfinder_newton.dll.a +0 -0
  844. casadi/libcasadi_rootfinder_nlpsol.dll +0 -0
  845. casadi/libcasadi_rootfinder_nlpsol.dll.a +0 -0
  846. casadi/libcasadi_sundials_common.dll +0 -0
  847. casadi/libcasadi_sundials_common.dll.a +0 -0
  848. casadi/libcasadi_xmlfile_tinyxml.dll +0 -0
  849. casadi/libcasadi_xmlfile_tinyxml.dll.a +0 -0
  850. casadi/libcoinmetis-2.dll +0 -0
  851. casadi/libcoinmetis.dll.a +0 -0
  852. casadi/libcoinmumps-3.dll +0 -0
  853. casadi/libcoinmumps.dll.a +0 -0
  854. casadi/libcplex_adaptor.dll +0 -0
  855. casadi/libgurobi_adaptor.dll +0 -0
  856. casadi/libhighs.dll +0 -0
  857. casadi/libhighs.dll.a +0 -0
  858. casadi/libhpipm.dll +0 -0
  859. casadi/libhpipm.dll.a +0 -0
  860. casadi/libipopt-3.dll +0 -0
  861. casadi/libipopt.dll.a +0 -0
  862. casadi/libosqp.dll +0 -0
  863. casadi/libosqp.dll.a +0 -0
  864. casadi/libqdldl.dll +0 -0
  865. casadi/libqdldl.dll.a +0 -0
  866. casadi/libsipopt-3.dll +0 -0
  867. casadi/libsipopt.dll.a +0 -0
  868. casadi/libsleqp.dll +0 -0
  869. casadi/libsleqp.dll.a +0 -0
  870. casadi/libtinyxml2.dll +0 -0
  871. casadi/libtrlib.dll +0 -0
  872. casadi/libtrlib.dll.a +0 -0
  873. casadi/osqp.lib +0 -0
  874. casadi/pkgconfig/blas.pc +11 -0
  875. casadi/pkgconfig/bonmin.pc +1 -1
  876. casadi/pkgconfig/casadi.pc +1 -1
  877. casadi/pkgconfig/cbc.pc +2 -2
  878. casadi/pkgconfig/cgl.pc +2 -2
  879. casadi/pkgconfig/clp.pc +1 -1
  880. casadi/pkgconfig/coinutils.pc +1 -1
  881. casadi/pkgconfig/highs.pc +3 -3
  882. casadi/pkgconfig/lapack.pc +11 -0
  883. casadi/pkgconfig/openblas.pc +1 -1
  884. casadi/pkgconfig/osi-cbc.pc +1 -1
  885. casadi/pkgconfig/osi-clp.pc +1 -1
  886. casadi/pkgconfig/osi-unittests.pc +1 -1
  887. casadi/pkgconfig/osi.pc +1 -1
  888. casadi/pkgconfig/sleqp.pc +10 -0
  889. casadi/sleqp.lib +0 -0
  890. casadi/spral_ssids.exe +0 -0
  891. {casadi-3.6.3.dist-info → casadi-3.6.5.dist-info}/METADATA +11 -3
  892. {casadi-3.6.3.dist-info → casadi-3.6.5.dist-info}/RECORD +893 -325
  893. casadi/include/highs/interfaces/OsiHiGHSSolverInterface.hpp +0 -415
  894. casadi/libOsiHighs.dll +0 -0
  895. casadi/libOsiHighs.dll.a +0 -0
  896. casadi/pkgconfig/osi-highs.pc +0 -11
  897. {casadi-3.6.3.dist-info → casadi-3.6.5.dist-info}/WHEEL +0 -0
@@ -0,0 +1,133 @@
1
+ #pragma once
2
+
3
+ #include <alpaqa/accelerators/internal/anderson-helpers.hpp>
4
+ #include <alpaqa/config/config.hpp>
5
+ #include <alpaqa/export.hpp>
6
+
7
+ #include <limits>
8
+ #include <stdexcept>
9
+
10
+ namespace alpaqa {
11
+
12
+ /// Parameters for the @ref AndersonAccel class.
13
+ template <Config Conf = DefaultConfig>
14
+ struct AndersonAccelParams {
15
+ USING_ALPAQA_CONFIG(Conf);
16
+ /// Length of the history to keep (the number of columns in the QR
17
+ /// factorization).
18
+ /// If this number is greater than the problem dimension, the memory is set
19
+ /// to the problem dimension (otherwise the system is underdetermined).
20
+ length_t memory = 10;
21
+ /// Minimum divisor when solving close to singular systems,
22
+ /// scaled by the maximum eigenvalue of R.
23
+ real_t min_div_fac = real_t(1e2) * std::numeric_limits<real_t>::epsilon();
24
+ };
25
+
26
+ /**
27
+ * Anderson Acceleration.
28
+ *
29
+ * Algorithm for accelerating fixed-point iterations for finding fixed points
30
+ * of a function @f$ g @f$, i.e. @f$ g(x^\star) = x^\star @f$, or equivalently,
31
+ * roots of the residual @f$ r(x) \triangleq g(x) - x @f$.
32
+ *
33
+ * @todo Condition estimation of the QR factorization.
34
+ *
35
+ * @ingroup grp_Accelerators
36
+ */
37
+ template <Config Conf = DefaultConfig>
38
+ class AndersonAccel {
39
+ public:
40
+ USING_ALPAQA_CONFIG(Conf);
41
+ using Params = AndersonAccelParams<config_t>;
42
+
43
+ AndersonAccel() = default;
44
+ /// @param params
45
+ /// Parameters.
46
+ AndersonAccel(Params params) : params(params) {}
47
+ /// @param params
48
+ /// Parameters.
49
+ /// @param n
50
+ /// Problem dimension (size of the vectors).
51
+ AndersonAccel(Params params, length_t n) : params(params) { resize(n); }
52
+
53
+ /// Change the problem dimension. Flushes the history.
54
+ /// @param n
55
+ /// Problem dimension (size of the vectors).
56
+ void resize(length_t n) {
57
+ length_t m_AA = std::min(n, params.memory); // TODO: support m > n?
58
+ qr.resize(n, m_AA);
59
+ G.resize(n, m_AA);
60
+ rₗₐₛₜ.resize(n);
61
+ γ_LS.resize(m_AA);
62
+ initialized = false;
63
+ }
64
+
65
+ /// Call this function on the first iteration to initialize the accelerator.
66
+ void initialize(crvec g_0, crvec r_0) {
67
+ assert(g_0.size() == n());
68
+ assert(r_0.size() == n());
69
+ G.col(0) = g_0;
70
+ rₗₐₛₜ = r_0;
71
+ qr.reset();
72
+ initialized = true;
73
+ }
74
+
75
+ /// Compute the accelerated iterate @f$ x^k_\text{AA} @f$, given the
76
+ /// function value at the current iterate @f$ g^k = g(x^k) @f$ and the
77
+ /// corresponding residual @f$ r^k = g^k - x^k @f$.
78
+ void compute(crvec gₖ, crvec rₖ, rvec xₖ_aa) {
79
+ if (!initialized)
80
+ throw std::logic_error("AndersonAccel::compute() called before "
81
+ "AndersonAccel::initialize()");
82
+ minimize_update_anderson(qr, G, // inout
83
+ rₖ, rₗₐₛₜ, gₖ, params.min_div_fac, // in
84
+ γ_LS, xₖ_aa); // out
85
+ rₗₐₛₜ = rₖ;
86
+ }
87
+ /// @copydoc compute(crvec, crvec, rvec)
88
+ void compute(crvec gₖ, vec &&rₖ, rvec xₖ_aa) {
89
+ if (!initialized)
90
+ throw std::logic_error("AndersonAccel::compute() called before "
91
+ "AndersonAccel::initialize()");
92
+ minimize_update_anderson(qr, G, // inout
93
+ rₖ, rₗₐₛₜ, gₖ, params.min_div_fac, // in
94
+ γ_LS, xₖ_aa); // out
95
+ rₗₐₛₜ = std::move(rₖ);
96
+ }
97
+
98
+ /// Reset the accelerator (but keep the last function value and residual, so
99
+ /// calling @ref initialize is not necessary).
100
+ void reset() {
101
+ index_t newest_g_idx = qr.ring_tail();
102
+ if (newest_g_idx != 0)
103
+ G.col(0) = G.col(newest_g_idx);
104
+ qr.reset();
105
+ }
106
+
107
+ /// Get the problem dimension.
108
+ length_t n() const { return qr.n(); }
109
+ /// Get the maximum number of stored columns.
110
+ length_t history() const { return qr.m(); }
111
+ /// Get the number of columns currently stored in the buffer.
112
+ length_t current_history() const { return qr.current_history(); }
113
+
114
+ /// Get the parameters.
115
+ const Params &get_params() const { return params; }
116
+
117
+ std::string get_name() const {
118
+ return "AndersonAccel<" + std::string(config_t::get_name()) + '>';
119
+ }
120
+
121
+ /// Scale the factorization
122
+ void scale_R(real_t scal) { qr.scale_R(scal); }
123
+
124
+ private:
125
+ Params params;
126
+ LimitedMemoryQR<config_t> qr;
127
+ mat G;
128
+ vec rₗₐₛₜ;
129
+ vec γ_LS;
130
+ bool initialized = false;
131
+ };
132
+
133
+ } // namespace alpaqa
@@ -0,0 +1,92 @@
1
+ #pragma once
2
+
3
+ #include <alpaqa/accelerators/internal/limited-memory-qr.hpp>
4
+ #include <alpaqa/config/config.hpp>
5
+ #include <alpaqa/export.hpp>
6
+
7
+ namespace alpaqa {
8
+
9
+ /**
10
+ * @brief Solve one step of Anderson acceleration to find a fixed point of a
11
+ * function g(x):
12
+ *
13
+ * @f$ g(x^\star) - x^\star = 0 @f$
14
+ *
15
+ * Updates the QR factorization of @f$ \mathcal{R}_k = QR @f$, solves the least
16
+ * squares problem to find @f$ \gamma_\text{LS} @f$, computes the next
17
+ * iterate @f$ x_{k+1} @f$, and stores the current function value @f$ g_k @f$
18
+ * in the matrix @f$ G @f$, which is used as a circular buffer.
19
+ * @f[ \begin{aligned}
20
+ * \def\gammaLS{\gamma_\text{LS}}
21
+ * m_k &= \min \{k, m\} \\
22
+ * g_i &= g(x_i) \\
23
+ * r_i &= r(x_i) g_i - x_i \\
24
+ * \Delta r_i &= r_i - r_{i-1} \\
25
+ * \mathcal{R}_k &= \begin{pmatrix} \Delta r_{k-m_k+1} & \dots & \Delta r_k \end{pmatrix} \in \R^{n\times m_k}
26
+ * \\
27
+ * \gammaLS &= \argmin_{\gamma \in \R^{m_k}}\; \norm{\mathcal{R}_k \gamma - r_k}_2 \\
28
+ * \alpha_i &= \begin{cases} \gammaLS[0] & i = 0 \\
29
+ * \gammaLS[i] - \gammaLS[i-1] & 0 \lt i \lt m_k \\
30
+ * 1 - \gammaLS[m_k - 1] & i = m_k \end{cases} \\
31
+ * \tilde G_k &= \begin{pmatrix} g_{k - m_k} & \dots & g_{k-1} \end{pmatrix} \\
32
+ * G_k &= \begin{pmatrix} g_{k - m_k} & \dots & g_{k} \end{pmatrix} \\
33
+ * &= \begin{pmatrix} \tilde G_k & g_{k} \end{pmatrix} \\
34
+ * x_{k+1} &= \sum_{i=0}^{m_k} \alpha_i\,g_{k - m_k + i} \\
35
+ * &= G_k \alpha \\
36
+ * \end{aligned} @f]
37
+ */
38
+ template <Config Conf = DefaultConfig>
39
+ inline void minimize_update_anderson(
40
+ /// [inout] QR factorization of @f$ \mathcal{R}_k @f$
41
+ LimitedMemoryQR<Conf> &qr,
42
+ /// [inout] Matrix of previous function values @f$ \tilde G_k @f$
43
+ /// (stored as ring buffer with the same indices as `qr`)
44
+ rmat<Conf> G̃,
45
+ /// [in] Current residual @f$ r_k @f$
46
+ crvec<Conf> rₖ,
47
+ /// [in] Previous residual @f$ r_{k-1} @f$
48
+ crvec<Conf> rₗₐₛₜ,
49
+ /// [in] Current function value @f$ g_k @f$
50
+ crvec<Conf> gₖ,
51
+ /// [in] Minimum divisor when solving close to singular systems,
52
+ /// scaled by the maximum eigenvalue of R
53
+ real_t<Conf> min_div_fac,
54
+ /// [out] Solution to the least squares system
55
+ rvec<Conf> γ_LS,
56
+ /// [out] Next Anderson iterate
57
+ rvec<Conf> xₖ_aa) {
58
+
59
+ // Update QR factorization for Anderson acceleration
60
+ if (qr.num_columns() == qr.m()) // if the history buffer is full
61
+ qr.remove_column();
62
+ qr.add_column(rₖ - rₗₐₛₜ);
63
+
64
+ // Solve least squares problem Anderson acceleration
65
+ // γ = argmin ‖ ΔR γ - rₖ ‖²
66
+ qr.solve_col(rₖ, γ_LS, qr.get_max_eig() * min_div_fac);
67
+
68
+ // Iterate over columns of G, whose indices match the indices of the matrix
69
+ // R in the QR factorization, stored as a circular buffer.
70
+ auto g_it = qr.ring_iter().begin();
71
+ auto g_end = qr.ring_iter().end();
72
+ assert(g_it != g_end);
73
+
74
+ // Compute Anderson acceleration next iterate yₑₓₜ = ∑ₙ₌₀ αₙ gₙ
75
+ // α₀ = γ₀ if n = 0
76
+ // αₙ = γₙ - γₙ₋₁ if 0 < n < mₖ
77
+ // αₘ = 1 - γₘ₋₁ if n = mₖ
78
+ auto α = γ_LS(0);
79
+ xₖ_aa = α * G̃.col((*g_it).circular);
80
+ while (++g_it != g_end) {
81
+ auto [i, g_idx] = *g_it; // [zero based index, circular index]
82
+ α = γ_LS(i) - γ_LS(i - 1);
83
+ xₖ_aa += α * G̃.col(g_idx);
84
+ }
85
+ α = 1 - γ_LS(qr.num_columns() - 1);
86
+ xₖ_aa += α * gₖ;
87
+
88
+ // Add the new column to G
89
+ G̃.col(qr.ring_tail()) = gₖ; // TODO: avoid copy, make G an array of vectors
90
+ }
91
+
92
+ } // namespace alpaqa
@@ -0,0 +1,295 @@
1
+ #include <alpaqa/config/config.hpp>
2
+ #include <alpaqa/util/ringbuffer.hpp>
3
+ #include <Eigen/Jacobi>
4
+ #include <type_traits>
5
+
6
+ namespace alpaqa {
7
+
8
+ /// Incremental QR factorization using modified Gram-Schmidt with
9
+ /// reorthogonalization.
10
+ ///
11
+ /// Computes A = QR while allowing efficient removal of the first
12
+ /// column of A or adding new columns at the end of A.
13
+ template <Config Conf = DefaultConfig>
14
+ class LimitedMemoryQR {
15
+ public:
16
+ USING_ALPAQA_CONFIG(Conf);
17
+ LimitedMemoryQR() = default;
18
+
19
+ /// @param n
20
+ /// The size of the vectors, the number of rows of A.
21
+ /// @param m
22
+ /// The maximum number of columns of A.
23
+ ///
24
+ /// The maximum dimensions of Q are n×m and the maximum dimensions of R are
25
+ /// m×m.
26
+ LimitedMemoryQR(length_t n, length_t m) : Q(n, m), R(m, m) {}
27
+
28
+ length_t n() const { return Q.rows(); }
29
+ length_t m() const { return Q.cols(); }
30
+ length_t size() const { return n(); }
31
+ length_t history() const { return m(); }
32
+
33
+ /// Add the given column to the right.
34
+ template <class VecV>
35
+ void add_column(const VecV &v) {
36
+ assert(num_columns() < m());
37
+
38
+ auto q = Q.col(q_idx);
39
+ auto r = R.col(r_idx_end);
40
+
41
+ // Modified Gram-Schmidt to make q orthogonal to Q
42
+ q = v;
43
+ for (index_t i = 0; i < q_idx; ++i) {
44
+ real_t s = Q.col(i).dot(q);
45
+ r(i) = s;
46
+ q -= s * Q.col(i);
47
+ }
48
+
49
+ // Compute the norms of orthogonalized q and original v
50
+ real_t norm_q = q.norm();
51
+ real_t norm_v = v.norm();
52
+
53
+ // If ‖q‖ is significantly smaller than ‖v‖, perform
54
+ // reorthogonalization
55
+ auto η = real_t(0.7);
56
+ while (norm_q < η * norm_v) {
57
+ ++reorth_count;
58
+ for (index_t i = 0; i < q_idx; ++i) {
59
+ real_t s = Q.col(i).dot(q);
60
+ r(i) += s;
61
+ q -= s * Q.col(i);
62
+ }
63
+ norm_v = norm_q;
64
+ norm_q = q.norm();
65
+ }
66
+
67
+ // Normalize q such that new matrix (Q q) remains orthogonal (i.e. has
68
+ // orthonormal columns)
69
+ r(q_idx) = norm_q;
70
+ q /= norm_q;
71
+ // Keep track of the minimum/maximum diagonal element of R
72
+ min_eig = std::min(min_eig, norm_q);
73
+ max_eig = std::max(max_eig, norm_q);
74
+
75
+ // Increment indices, add a column to Q and R.
76
+ ++q_idx;
77
+ r_idx_end = r_succ(r_idx_end);
78
+ }
79
+
80
+ /// Remove the leftmost column.
81
+ void remove_column() {
82
+ assert(num_columns() > 0);
83
+
84
+ // After removing the first column of the upper triangular matrix R,
85
+ // it becomes upper Hessenberg. Givens rotations are used to make it
86
+ // triangular again.
87
+ Eigen::JacobiRotation<real_t> G;
88
+ index_t r = 0; // row index of R
89
+ index_t c = r_succ(r_idx_start); // column index of R in storage
90
+ // Loop over the diagonal elements of R:
91
+ while (r < q_idx - 1) {
92
+ // Compute the Givens rotation that makes the subdiagonal element
93
+ // of column c of R zero.
94
+ G.makeGivens(R(r, c), R(r + 1, c), &R(r, c));
95
+ // Apply it to the remaining columns of R.
96
+ // Not the current column, because the diagonal element was updated
97
+ // by the makeGivens function, and the subdiagonal element doesn't
98
+ // have to be set to zero explicitly, it's implicit.
99
+ // Also not the previous columns, because they are already
100
+ // implicitly zero below the diagonal and this rotation wouldn't
101
+ // have any effect there.
102
+ // TODO: can this be sped up by applying it in two blocks instead
103
+ // of column by column?
104
+ for (index_t cc = r_succ(c); cc != r_idx_end; cc = r_succ(cc))
105
+ R.col(cc).applyOnTheLeft(r, r + 1, G.adjoint());
106
+ // Apply the inverse of the Givens rotation to Q.
107
+ Q.block(0, 0, Q.rows(), q_idx).applyOnTheRight(r, r + 1, G);
108
+ // Keep track of the minimum/maximum diagonal element of R
109
+ min_eig = std::min(min_eig, R(r, c));
110
+ max_eig = std::max(max_eig, R(r, c));
111
+ // Advance indices to next diagonal element of R.
112
+ ++r;
113
+ c = r_succ(c);
114
+ }
115
+ // Remove rightmost column of Q, since it corresponds to the bottom row
116
+ // of R, which was set to zero by the Givens rotations
117
+ --q_idx;
118
+ // Remove the first column of R.
119
+ r_idx_start = r_succ(r_idx_start);
120
+ }
121
+
122
+ /// Solve the least squares problem Ax = b.
123
+ /// Do not divide by elements that are smaller in absolute value than @p tol.
124
+ template <class VecB, class VecX>
125
+ void solve_col(const VecB &b, VecX &x, real_t tol = 0) const {
126
+ // Iterate over the diagonal of R, starting at the bottom right,
127
+ // this is standard back substitution
128
+ // (recall that R is stored in a circular buffer, so R.col(i) is
129
+ // not the mathematical i-th column)
130
+ auto rev_bgn = ring_reverse_iter().begin();
131
+ auto rev_end = ring_reverse_iter().end();
132
+ auto fwd_end = ring_iter().end();
133
+ for (auto it_d = rev_bgn; it_d != rev_end; ++it_d) {
134
+ // Row/column index of diagonal element of R
135
+ auto [rR, cR] = *it_d;
136
+ // Don't divide by very small diagonal elements
137
+ if (std::abs(R(rR, cR)) < tol) {
138
+ x(rR) = real_t{0};
139
+ continue;
140
+ }
141
+ // (r is the zero-based mathematical index, c is the index in
142
+ // the circular buffer)
143
+ x(rR) = Q.col(rR).transpose() * b; // Compute rhs Qᵀb
144
+ // In the current row of R, iterate over the elements to the
145
+ // right of the diagonal
146
+ // Iterating from left to right seems to give better results
147
+ for (auto it_c = it_d.forwardit; it_c != fwd_end; ++it_c) {
148
+ auto [rX2, cR2] = *it_c;
149
+ x(rR) -= R(rR, cR2) * x(rX2);
150
+ }
151
+ x(rR) /= R(rR, cR); // Divide by diagonal element
152
+ }
153
+ }
154
+
155
+ /// Solve the least squares problem AX = B.
156
+ /// Do not divide by elements that are smaller in absolute value than @p tol.
157
+ template <class MatB, class MatX>
158
+ void solve(const MatB &B, MatX &X, real_t tol = 0) const {
159
+ assert(B.cols() <= X.cols());
160
+ assert(B.rows() >= Q.rows());
161
+ assert(X.rows() >= Eigen::Index(num_columns()));
162
+ // Each column of the right hand side is solved as an individual system
163
+ for (Eigen::Index cB = 0; cB < B.cols(); ++cB) {
164
+ auto b = B.col(cB);
165
+ auto x = X.col(cB);
166
+ solve_col(b, x, tol);
167
+ }
168
+ }
169
+
170
+ template <class Derived>
171
+ using solve_ret_t = std::conditional_t<
172
+ Eigen::internal::traits<Derived>::ColsAtCompileTime == 1, vec, mat>;
173
+
174
+ /// Solve the least squares problem AX = B.
175
+ template <class Derived>
176
+ solve_ret_t<Derived> solve(const Eigen::DenseBase<Derived> &B) {
177
+ solve_ret_t<Derived> X(m(), B.cols());
178
+ solve(B, X);
179
+ return X;
180
+ }
181
+
182
+ /// Get the full, raw storage for the orthogonal matrix Q.
183
+ const mat &get_raw_Q() const { return Q; }
184
+ /// Get the full, raw storage for the upper triangular matrix R.
185
+ /// The columns of this matrix are permuted because it's stored as a
186
+ /// circular buffer for efficiently appending columns to the end and
187
+ /// popping columns from the front.
188
+ const mat &get_raw_R() const { return R; }
189
+
190
+ /// Get the full storage for the upper triangular matrix R but with the
191
+ /// columns in the correct order.
192
+ /// @note Meant for tests only, creates a permuted copy.
193
+ mat get_full_R() const {
194
+ if (r_idx_start == 0)
195
+ return R;
196
+ // Using a permutation matrix here isn't as efficient as rotating the
197
+ // matrix manually, but this function is only used in tests, so it
198
+ // shouldn't matter.
199
+ Eigen::PermutationMatrix<Eigen::Dynamic> P(R.cols());
200
+ P.setIdentity();
201
+ std::rotate(P.indices().data(), P.indices().data() + r_idx_start,
202
+ P.indices().data() + P.size());
203
+ return R * P;
204
+ }
205
+ /// Get the matrix R such that Q times R is the original matrix.
206
+ /// @note Meant for tests only, creates a permuted copy.
207
+ mat get_R() const {
208
+ return get_full_R()
209
+ .block(0, 0, q_idx, q_idx)
210
+ .template triangularView<Eigen::Upper>();
211
+ }
212
+ /// Get the matrix Q such that Q times R is the original matrix.
213
+ /// @note Meant for tests only, creates a copy.
214
+ mat get_Q() const { return Q.block(0, 0, n(), q_idx); }
215
+
216
+ /// Multiply the matrix R by a scalar.
217
+ void scale_R(real_t scal) {
218
+ for (auto [i, r_idx] : ring_iter())
219
+ R.col(r_idx).topRows(i + 1) *= scal;
220
+ min_eig *= scal;
221
+ max_eig *= scal;
222
+ }
223
+
224
+ /// Get the number of MGS reorthogonalizations.
225
+ unsigned long get_reorth_count() const { return reorth_count; }
226
+ /// Reset the number of MGS reorthogonalizations.
227
+ void clear_reorth_count() { reorth_count = 0; }
228
+
229
+ /// Get the minimum eigenvalue of R.
230
+ real_t get_min_eig() const { return min_eig; }
231
+ /// Get the maximum eigenvalue of R.
232
+ real_t get_max_eig() const { return max_eig; }
233
+
234
+ /// Reset all indices, clearing the Q and R matrices.
235
+ void reset() {
236
+ q_idx = 0;
237
+ r_idx_start = 0;
238
+ r_idx_end = 0;
239
+ reorth_count = 0;
240
+ min_eig = +inf<config_t>;
241
+ max_eig = -inf<config_t>;
242
+ }
243
+
244
+ /// Re-allocate storage for a problem with a different size. Causes
245
+ /// a @ref reset.
246
+ void resize(length_t n, length_t m) {
247
+ Q.resize(n, m);
248
+ R.resize(m, m);
249
+ reset();
250
+ }
251
+
252
+ /// Get the number of columns that are currently stored.
253
+ length_t num_columns() const { return q_idx; }
254
+ /// Get the head index of the circular buffer (points to the oldest
255
+ /// element).
256
+ index_t ring_head() const { return r_idx_start; }
257
+ /// Get the tail index of the circular buffer (points to one past the most
258
+ /// recent element).
259
+ index_t ring_tail() const { return r_idx_end; }
260
+ /// Get the next index in the circular buffer.
261
+ index_t ring_next(index_t i) const { return r_succ(i); }
262
+ /// Get the previous index in the circular buffer.
263
+ index_t ring_prev(index_t i) const { return r_pred(i); }
264
+ /// Get the number of columns currently stored in the buffer.
265
+ length_t current_history() const { return q_idx; }
266
+
267
+ /// Get iterators in the circular buffer.
268
+ CircularRange<index_t> ring_iter() const {
269
+ return {q_idx, r_idx_start, r_idx_end, m()};
270
+ }
271
+ /// Get reverse iterators in the circular buffer.
272
+ ReverseCircularRange<index_t> ring_reverse_iter() const {
273
+ return ring_iter();
274
+ }
275
+
276
+ private:
277
+ mat Q; ///< Storage for orthogonal factor Q.
278
+ mat R; ///< Storage for upper triangular factor R.
279
+
280
+ index_t q_idx = 0; ///< Number of columns of Q being stored.
281
+ index_t r_idx_start = 0; ///< Index of the first column of R.
282
+ index_t r_idx_end = 0; ///< Index of the one-past-last column of R.
283
+
284
+ unsigned long reorth_count = 0; ///< Number of MGS reorthogonalizations.
285
+
286
+ real_t min_eig = +inf<config_t>; ///< Minimum eigenvalue of R.
287
+ real_t max_eig = -inf<config_t>; ///< Maximum eigenvalue of R.
288
+
289
+ /// Get the next index in the circular storage for R.
290
+ index_t r_succ(index_t i) const { return i + 1 < m() ? i + 1 : 0; }
291
+ /// Get the previous index in the circular storage for R.
292
+ index_t r_pred(index_t i) const { return i == 0 ? m() - 1 : i - 1; }
293
+ };
294
+
295
+ } // namespace alpaqa