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.
- casadi/_casadi.pyd +0 -0
- casadi/bin/libtinyxml2.dll +0 -0
- casadi/blasfeo.lib +0 -0
- casadi/casadi-cli.exe +0 -0
- casadi/casadi.lib +0 -0
- casadi/casadi.py +415 -260
- casadi/cbc.exe +0 -0
- casadi/clp.exe +0 -0
- casadi/cmake/alpaqa/alpaqaConfig.cmake +24 -0
- casadi/cmake/alpaqa/alpaqaConfigVersion.cmake +67 -0
- casadi/cmake/alpaqa/alpaqaTargets-release.cmake +19 -0
- casadi/cmake/alpaqa/alpaqaTargets.cmake +108 -0
- casadi/cmake/casadi-config-version.cmake +1 -1
- casadi/cmake/highs/highs-config.cmake +18 -4
- casadi/cmake/sleqp/sleqp-config-version.cmake +67 -0
- casadi/cmake/sleqp/sleqp-config.cmake +1 -0
- casadi/cmake/sleqp/sleqp-targets-release.cmake +20 -0
- casadi/cmake/sleqp/sleqp-targets.cmake +94 -0
- casadi/cmake/trlib/trlib-config-release.cmake +19 -0
- casadi/cmake/trlib/trlib-config-version.cmake +59 -0
- casadi/cmake/trlib/trlib-config.cmake +99 -0
- casadi/highs.exe +0 -0
- casadi/highs.lib +0 -0
- casadi/hpipm.lib +0 -0
- casadi/include/alpaqa/accelerators/anderson.hpp +133 -0
- casadi/include/alpaqa/accelerators/internal/anderson-helpers.hpp +92 -0
- casadi/include/alpaqa/accelerators/internal/limited-memory-qr.hpp +295 -0
- casadi/include/alpaqa/accelerators/lbfgs.hpp +244 -0
- casadi/include/alpaqa/accelerators/steihaugcg.hpp +143 -0
- casadi/include/alpaqa/alpaqa.hpp +3 -0
- casadi/include/alpaqa/casadi/CasADiControlProblem.hpp +185 -0
- casadi/include/alpaqa/casadi/CasADiFunctionWrapper.hpp +104 -0
- casadi/include/alpaqa/casadi/CasADiProblem.hpp +102 -0
- casadi/include/alpaqa/casadi-loader-export.hpp +15 -0
- casadi/include/alpaqa/casadi-ocp-loader-export.hpp +15 -0
- casadi/include/alpaqa/config/config.hpp +165 -0
- casadi/include/alpaqa/dl/dl-problem.h +476 -0
- casadi/include/alpaqa/dl/dl-problem.hpp +301 -0
- casadi/include/alpaqa/export.h +42 -0
- casadi/include/alpaqa/export.hpp +30 -0
- casadi/include/alpaqa/implementation/accelerators/lbfgs.tpp +240 -0
- casadi/include/alpaqa/implementation/casadi/CasADiControlProblem.tpp +594 -0
- casadi/include/alpaqa/implementation/casadi/CasADiLoader-util.hpp +50 -0
- casadi/include/alpaqa/implementation/casadi/CasADiProblem.tpp +425 -0
- casadi/include/alpaqa/implementation/inner/directions/panoc/structured-lbfgs.tpp +164 -0
- casadi/include/alpaqa/implementation/inner/panoc-helpers.tpp +389 -0
- casadi/include/alpaqa/implementation/inner/panoc-ocp.tpp +798 -0
- casadi/include/alpaqa/implementation/inner/panoc.tpp +448 -0
- casadi/include/alpaqa/implementation/inner/pantr.tpp +474 -0
- casadi/include/alpaqa/implementation/inner/zerofpr.tpp +482 -0
- casadi/include/alpaqa/implementation/outer/alm.tpp +228 -0
- casadi/include/alpaqa/implementation/outer/internal/alm-helpers.tpp +80 -0
- casadi/include/alpaqa/implementation/params/params.tpp +158 -0
- casadi/include/alpaqa/implementation/problem/ocproblem.tpp +56 -0
- casadi/include/alpaqa/implementation/problem/type-erased-problem.tpp +211 -0
- casadi/include/alpaqa/implementation/util/io/csv.tpp +120 -0
- casadi/include/alpaqa/implementation/util/print.tpp +151 -0
- casadi/include/alpaqa/inner/directions/panoc/anderson.hpp +98 -0
- casadi/include/alpaqa/inner/directions/panoc/lbfgs.hpp +94 -0
- casadi/include/alpaqa/inner/directions/panoc/structured-lbfgs.hpp +146 -0
- casadi/include/alpaqa/inner/directions/panoc/structured-newton.hpp +264 -0
- casadi/include/alpaqa/inner/directions/panoc-direction-update.hpp +96 -0
- casadi/include/alpaqa/inner/directions/panoc-ocp/lqr.hpp +181 -0
- casadi/include/alpaqa/inner/directions/panoc-ocp/ocp-vars.hpp +492 -0
- casadi/include/alpaqa/inner/directions/pantr/newton-tr.hpp +192 -0
- casadi/include/alpaqa/inner/directions/pantr/pantr-direction.hpp +99 -0
- casadi/include/alpaqa/inner/inner-solve-options.hpp +30 -0
- casadi/include/alpaqa/inner/internal/lipschitz.hpp +27 -0
- casadi/include/alpaqa/inner/internal/panoc-helpers.hpp +10 -0
- casadi/include/alpaqa/inner/internal/panoc-stop-crit.hpp +124 -0
- casadi/include/alpaqa/inner/internal/solverstatus.hpp +42 -0
- casadi/include/alpaqa/inner/panoc-ocp.hpp +302 -0
- casadi/include/alpaqa/inner/panoc.hpp +274 -0
- casadi/include/alpaqa/inner/pantr.hpp +284 -0
- casadi/include/alpaqa/inner/zerofpr.hpp +274 -0
- casadi/include/alpaqa/ipopt/ipopt-adapter.hpp +81 -0
- casadi/include/alpaqa/ipopt/ipopt-enums.hpp +35 -0
- casadi/include/alpaqa/lbfgsb/lbfgsb-adapter.hpp +111 -0
- casadi/include/alpaqa/newton-tr-pantr-alm.hpp +27 -0
- casadi/include/alpaqa/outer/alm.hpp +190 -0
- casadi/include/alpaqa/outer/internal/alm-helpers.hpp +10 -0
- casadi/include/alpaqa/panoc-alm.hpp +27 -0
- casadi/include/alpaqa/panoc-anderson-alm.hpp +27 -0
- casadi/include/alpaqa/params/params.hpp +60 -0
- casadi/include/alpaqa/problem/box-constr-problem.hpp +220 -0
- casadi/include/alpaqa/problem/box.hpp +82 -0
- casadi/include/alpaqa/problem/functional-problem.hpp +73 -0
- casadi/include/alpaqa/problem/kkt-error.hpp +43 -0
- casadi/include/alpaqa/problem/ocproblem-counters.hpp +116 -0
- casadi/include/alpaqa/problem/ocproblem.hpp +662 -0
- casadi/include/alpaqa/problem/problem-counters.hpp +116 -0
- casadi/include/alpaqa/problem/problem-with-counters.hpp +141 -0
- casadi/include/alpaqa/problem/type-erased-problem.hpp +874 -0
- casadi/include/alpaqa/problem/unconstr-problem.hpp +37 -0
- casadi/include/alpaqa/structured-panoc-alm.hpp +27 -0
- casadi/include/alpaqa/structured-zerofpr-alm.hpp +27 -0
- casadi/include/alpaqa/util/alloc-check.hpp +23 -0
- casadi/include/alpaqa/util/atomic-stop-signal.hpp +24 -0
- casadi/include/alpaqa/util/check-dim.hpp +64 -0
- casadi/include/alpaqa/util/copyable_unique_ptr.hpp +32 -0
- casadi/include/alpaqa/util/demangled-typename.hpp +9 -0
- casadi/include/alpaqa/util/enumerate.hpp +70 -0
- casadi/include/alpaqa/util/float.hpp +25 -0
- casadi/include/alpaqa/util/index-set.hpp +97 -0
- casadi/include/alpaqa/util/io/csv.hpp +43 -0
- casadi/include/alpaqa/util/iter-adapter.hpp +68 -0
- casadi/include/alpaqa/util/max-history.hpp +47 -0
- casadi/include/alpaqa/util/noop-delete.hpp +15 -0
- casadi/include/alpaqa/util/not-implemented.hpp +12 -0
- casadi/include/alpaqa/util/print.hpp +78 -0
- casadi/include/alpaqa/util/quadmath/quadmath-print.hpp +20 -0
- casadi/include/alpaqa/util/quadmath/quadmath.hpp +137 -0
- casadi/include/alpaqa/util/required-method.hpp +29 -0
- casadi/include/alpaqa/util/ringbuffer.hpp +212 -0
- casadi/include/alpaqa/util/set-intersection.hpp +129 -0
- casadi/include/alpaqa/util/sparse-ops.hpp +164 -0
- casadi/include/alpaqa/util/timed.hpp +22 -0
- casadi/include/alpaqa/util/type-erasure.hpp +568 -0
- casadi/include/alpaqa/util/type-traits.hpp +58 -0
- casadi/include/alpaqa/zerofpr-alm.hpp +27 -0
- casadi/include/alpaqa/zerofpr-anderson-alm.hpp +27 -0
- casadi/include/alpaqa-version.h +8 -0
- casadi/include/casadi/casadi.i +43 -18
- casadi/include/casadi/config.h +8 -8
- casadi/include/casadi/core/calculus.hpp +1 -1
- casadi/include/casadi/core/code_generator.hpp +29 -1
- casadi/include/casadi/core/core.hpp +1 -0
- casadi/include/casadi/core/fmu.hpp +29 -1
- casadi/include/casadi/core/generic_expression.hpp +1 -1
- casadi/include/casadi/core/generic_type.hpp +25 -1
- casadi/include/casadi/core/matrix_decl.hpp +15 -0
- casadi/include/casadi/core/nlpsol.hpp +0 -2
- casadi/include/casadi/core/runtime/casadi_nlp.hpp +131 -6
- casadi/include/casadi/core/runtime/casadi_sqpmethod.hpp +11 -1
- casadi/include/casadi/core/serializing_stream.hpp +12 -0
- casadi/include/casadi/core/sparsity.hpp +5 -3
- casadi/include/casadi/core/tools.hpp +67 -0
- casadi/include/casadi/doc.i +1457 -825
- casadi/include/casadi/doc_merged.i +1089 -570
- casadi/include/coin/BonArraysHelpers.hpp +52 -0
- casadi/include/coin/BonAuxInfos.hpp +110 -0
- casadi/include/coin/BonBabInfos.hpp +57 -0
- casadi/include/coin/BonBabSetupBase.hpp +386 -0
- casadi/include/coin/BonBonminSetup.hpp +95 -0
- casadi/include/coin/BonBranchingTQP.hpp +197 -0
- casadi/include/coin/BonCbc.hpp +127 -0
- casadi/include/coin/BonCbcLpStrategy.hpp +45 -0
- casadi/include/coin/BonCbcNlpStrategy.hpp +98 -0
- casadi/include/coin/BonCbcNode.hpp +133 -0
- casadi/include/coin/BonChooseVariable.hpp +345 -0
- casadi/include/coin/BonCurvBranchingSolver.hpp +77 -0
- casadi/include/coin/BonCutStrengthener.hpp +244 -0
- casadi/include/coin/BonDiver.hpp +424 -0
- casadi/include/coin/BonDummyHeuristic.hpp +53 -0
- casadi/include/coin/BonDummyPump.hpp +43 -0
- casadi/include/coin/BonEcpCuts.hpp +97 -0
- casadi/include/coin/BonExitCodes.hpp +12 -0
- casadi/include/coin/BonFixAndSolveHeuristic.hpp +43 -0
- casadi/include/coin/BonGuessHeuristic.hpp +46 -0
- casadi/include/coin/BonHeuristicDive.hpp +88 -0
- casadi/include/coin/BonHeuristicDiveFractional.hpp +67 -0
- casadi/include/coin/BonHeuristicDiveMIP.hpp +83 -0
- casadi/include/coin/BonHeuristicDiveMIPFractional.hpp +67 -0
- casadi/include/coin/BonHeuristicDiveMIPVectorLength.hpp +74 -0
- casadi/include/coin/BonHeuristicDiveVectorLength.hpp +74 -0
- casadi/include/coin/BonHeuristicFPump.hpp +111 -0
- casadi/include/coin/BonHeuristicLocalBranching.hpp +59 -0
- casadi/include/coin/BonHeuristicRINS.hpp +55 -0
- casadi/include/coin/BonIpoptInteriorWarmStarter.hpp +103 -0
- casadi/include/coin/BonIpoptSolver.hpp +188 -0
- casadi/include/coin/BonIpoptWarmStart.hpp +148 -0
- casadi/include/coin/BonLinearCutsGenerator.hpp +75 -0
- casadi/include/coin/BonLocalSolverBasedHeuristic.hpp +102 -0
- casadi/include/coin/BonLpBranchingSolver.hpp +80 -0
- casadi/include/coin/BonMilpRounding.hpp +74 -0
- casadi/include/coin/BonOACutGenerator2.hpp +56 -0
- casadi/include/coin/BonOAMessages.hpp +44 -0
- casadi/include/coin/BonOaDecBase.hpp +297 -0
- casadi/include/coin/BonOaFeasChecker.hpp +73 -0
- casadi/include/coin/BonOaNlpOptim.hpp +116 -0
- casadi/include/coin/BonOsiTMINLPInterface.hpp +1342 -0
- casadi/include/coin/BonOuterApprox.hpp +123 -0
- casadi/include/coin/BonPseudoCosts.hpp +91 -0
- casadi/include/coin/BonPumpForMinlp.hpp +45 -0
- casadi/include/coin/BonQuadCut.hpp +217 -0
- casadi/include/coin/BonQuadRow.hpp +122 -0
- casadi/include/coin/BonRegisteredOptions.hpp +225 -0
- casadi/include/coin/BonStrongBranchingSolver.hpp +69 -0
- casadi/include/coin/BonSubMipSolver.hpp +143 -0
- casadi/include/coin/BonTMINLP.hpp +420 -0
- casadi/include/coin/BonTMINLP2OsiLP.hpp +164 -0
- casadi/include/coin/BonTMINLP2Quad.hpp +191 -0
- casadi/include/coin/BonTMINLP2TNLP.hpp +509 -0
- casadi/include/coin/BonTMINLPLinObj.hpp +216 -0
- casadi/include/coin/BonTMatrix.hpp +167 -0
- casadi/include/coin/BonTNLP2FPNLP.hpp +264 -0
- casadi/include/coin/BonTNLPSolver.hpp +241 -0
- casadi/include/coin/BonTypes.hpp +95 -0
- casadi/include/coin/BonminConfig.h +19 -0
- casadi/include/coin/CbcBranchActual.hpp +26 -0
- casadi/include/coin/CbcBranchAllDifferent.hpp +61 -0
- casadi/include/coin/CbcBranchBase.hpp +79 -0
- casadi/include/coin/CbcBranchCut.hpp +182 -0
- casadi/include/coin/CbcBranchDecision.hpp +135 -0
- casadi/include/coin/CbcBranchDefaultDecision.hpp +101 -0
- casadi/include/coin/CbcBranchDynamic.hpp +210 -0
- casadi/include/coin/CbcBranchLotsize.hpp +249 -0
- casadi/include/coin/CbcBranchToFixLots.hpp +94 -0
- casadi/include/coin/CbcBranchingObject.hpp +245 -0
- casadi/include/coin/CbcClique.hpp +309 -0
- casadi/include/coin/CbcCompare.hpp +46 -0
- casadi/include/coin/CbcCompareActual.hpp +16 -0
- casadi/include/coin/CbcCompareBase.hpp +155 -0
- casadi/include/coin/CbcCompareDefault.hpp +129 -0
- casadi/include/coin/CbcCompareDepth.hpp +48 -0
- casadi/include/coin/CbcCompareEstimate.hpp +48 -0
- casadi/include/coin/CbcCompareObjective.hpp +50 -0
- casadi/include/coin/CbcConfig.h +18 -0
- casadi/include/coin/CbcConsequence.hpp +50 -0
- casadi/include/coin/CbcCountRowCut.hpp +176 -0
- casadi/include/coin/CbcCutGenerator.hpp +550 -0
- casadi/include/coin/CbcCutModifier.hpp +59 -0
- casadi/include/coin/CbcCutSubsetModifier.hpp +69 -0
- casadi/include/coin/CbcDummyBranchingObject.hpp +83 -0
- casadi/include/coin/CbcEventHandler.hpp +250 -0
- casadi/include/coin/CbcFathom.hpp +136 -0
- casadi/include/coin/CbcFathomDynamicProgramming.hpp +177 -0
- casadi/include/coin/CbcFeasibilityBase.hpp +60 -0
- casadi/include/coin/CbcFixVariable.hpp +68 -0
- casadi/include/coin/CbcFollowOn.hpp +207 -0
- casadi/include/coin/CbcFullNodeInfo.hpp +171 -0
- casadi/include/coin/CbcGeneral.hpp +60 -0
- casadi/include/coin/CbcGeneralDepth.hpp +289 -0
- casadi/include/coin/CbcHeuristic.hpp +735 -0
- casadi/include/coin/CbcHeuristicDINS.hpp +98 -0
- casadi/include/coin/CbcHeuristicDW.hpp +374 -0
- casadi/include/coin/CbcHeuristicDive.hpp +198 -0
- casadi/include/coin/CbcHeuristicDiveCoefficient.hpp +52 -0
- casadi/include/coin/CbcHeuristicDiveFractional.hpp +52 -0
- casadi/include/coin/CbcHeuristicDiveGuided.hpp +55 -0
- casadi/include/coin/CbcHeuristicDiveLineSearch.hpp +52 -0
- casadi/include/coin/CbcHeuristicDivePseudoCost.hpp +60 -0
- casadi/include/coin/CbcHeuristicDiveVectorLength.hpp +52 -0
- casadi/include/coin/CbcHeuristicFPump.hpp +375 -0
- casadi/include/coin/CbcHeuristicGreedy.hpp +289 -0
- casadi/include/coin/CbcHeuristicLocal.hpp +276 -0
- casadi/include/coin/CbcHeuristicPivotAndFix.hpp +58 -0
- casadi/include/coin/CbcHeuristicRENS.hpp +79 -0
- casadi/include/coin/CbcHeuristicRINS.hpp +106 -0
- casadi/include/coin/CbcHeuristicRandRound.hpp +58 -0
- casadi/include/coin/CbcHeuristicVND.hpp +95 -0
- casadi/include/coin/CbcLinked.hpp +1443 -0
- casadi/include/coin/CbcMessage.hpp +94 -0
- casadi/include/coin/CbcMipStartIO.hpp +29 -0
- casadi/include/coin/CbcModel.hpp +3296 -0
- casadi/include/coin/CbcNWay.hpp +171 -0
- casadi/include/coin/CbcNode.hpp +380 -0
- casadi/include/coin/CbcNodeInfo.hpp +377 -0
- casadi/include/coin/CbcObject.hpp +288 -0
- casadi/include/coin/CbcObjectUpdateData.hpp +63 -0
- casadi/include/coin/CbcOrClpParam.cpp +4321 -0
- casadi/include/coin/CbcOrClpParam.hpp +585 -0
- casadi/include/coin/CbcParam.hpp +338 -0
- casadi/include/coin/CbcPartialNodeInfo.hpp +116 -0
- casadi/include/coin/CbcSOS.hpp +290 -0
- casadi/include/coin/CbcSimpleInteger.hpp +299 -0
- casadi/include/coin/CbcSimpleIntegerDynamicPseudoCost.hpp +619 -0
- casadi/include/coin/CbcSimpleIntegerPseudoCost.hpp +122 -0
- casadi/include/coin/CbcSolver.hpp +460 -0
- casadi/include/coin/CbcStrategy.hpp +269 -0
- casadi/include/coin/CbcSubProblem.hpp +84 -0
- casadi/include/coin/CbcTree.hpp +493 -0
- casadi/include/coin/CbcTreeLocal.hpp +393 -0
- casadi/include/coin/Cbc_C_Interface.h +904 -0
- casadi/include/coin/Cgl012cut.hpp +464 -0
- casadi/include/coin/CglAllDifferent.hpp +115 -0
- casadi/include/coin/CglClique.hpp +312 -0
- casadi/include/coin/CglConfig.h +19 -0
- casadi/include/coin/CglCutGenerator.hpp +133 -0
- casadi/include/coin/CglDuplicateRow.hpp +189 -0
- casadi/include/coin/CglFlowCover.hpp +371 -0
- casadi/include/coin/CglGMI.hpp +364 -0
- casadi/include/coin/CglGMIParam.hpp +313 -0
- casadi/include/coin/CglGomory.hpp +204 -0
- casadi/include/coin/CglKnapsackCover.hpp +310 -0
- casadi/include/coin/CglLandP.hpp +306 -0
- casadi/include/coin/CglLandPValidator.hpp +130 -0
- casadi/include/coin/CglLiftAndProject.hpp +104 -0
- casadi/include/coin/CglMessage.hpp +49 -0
- casadi/include/coin/CglMixedIntegerRounding.hpp +429 -0
- casadi/include/coin/CglMixedIntegerRounding2.hpp +427 -0
- casadi/include/coin/CglOddHole.hpp +160 -0
- casadi/include/coin/CglParam.hpp +93 -0
- casadi/include/coin/CglPreProcess.hpp +600 -0
- casadi/include/coin/CglProbing.hpp +543 -0
- casadi/include/coin/CglRedSplit.hpp +448 -0
- casadi/include/coin/CglRedSplit2.hpp +494 -0
- casadi/include/coin/CglRedSplit2Param.hpp +495 -0
- casadi/include/coin/CglRedSplitParam.hpp +272 -0
- casadi/include/coin/CglResidualCapacity.hpp +240 -0
- casadi/include/coin/CglSimpleRounding.hpp +174 -0
- casadi/include/coin/CglStored.hpp +140 -0
- casadi/include/coin/CglTreeInfo.hpp +216 -0
- casadi/include/coin/CglTwomir.hpp +562 -0
- casadi/include/coin/CglZeroHalf.hpp +133 -0
- casadi/include/coin/ClpAmplObjective.hpp +113 -0
- casadi/include/coin/ClpCholeskyBase.hpp +321 -0
- casadi/include/coin/ClpCholeskyDense.hpp +157 -0
- casadi/include/coin/ClpCholeskyMumps.hpp +65 -0
- casadi/include/coin/ClpCholeskyPardiso.hpp +67 -0
- casadi/include/coin/ClpConfig.h +17 -0
- casadi/include/coin/ClpConstraint.hpp +129 -0
- casadi/include/coin/ClpConstraintAmpl.hpp +109 -0
- casadi/include/coin/ClpConstraintLinear.hpp +113 -0
- casadi/include/coin/ClpConstraintQuadratic.hpp +123 -0
- casadi/include/coin/ClpDualRowDantzig.hpp +72 -0
- casadi/include/coin/ClpDualRowPivot.hpp +136 -0
- casadi/include/coin/ClpDualRowSteepest.hpp +160 -0
- casadi/include/coin/ClpDummyMatrix.hpp +186 -0
- casadi/include/coin/ClpDynamicExampleMatrix.hpp +199 -0
- casadi/include/coin/ClpDynamicMatrix.hpp +420 -0
- casadi/include/coin/ClpEventHandler.hpp +193 -0
- casadi/include/coin/ClpFactorization.hpp +556 -0
- casadi/include/coin/ClpGubDynamicMatrix.hpp +270 -0
- casadi/include/coin/ClpGubMatrix.hpp +373 -0
- casadi/include/coin/ClpInterior.hpp +622 -0
- casadi/include/coin/ClpLinearObjective.hpp +104 -0
- casadi/include/coin/ClpMatrixBase.hpp +561 -0
- casadi/include/coin/ClpMessage.hpp +131 -0
- casadi/include/coin/ClpModel.hpp +1442 -0
- casadi/include/coin/ClpNetworkMatrix.hpp +235 -0
- casadi/include/coin/ClpNode.hpp +364 -0
- casadi/include/coin/ClpNonLinearCost.hpp +432 -0
- casadi/include/coin/ClpObjective.hpp +142 -0
- casadi/include/coin/ClpPEDualRowDantzig.hpp +84 -0
- casadi/include/coin/ClpPEDualRowSteepest.hpp +100 -0
- casadi/include/coin/ClpPEPrimalColumnDantzig.hpp +71 -0
- casadi/include/coin/ClpPEPrimalColumnSteepest.hpp +107 -0
- casadi/include/coin/ClpPESimplex.hpp +231 -0
- casadi/include/coin/ClpPackedMatrix.hpp +778 -0
- casadi/include/coin/ClpParameters.hpp +132 -0
- casadi/include/coin/ClpPdcoBase.hpp +110 -0
- casadi/include/coin/ClpPlusMinusOneMatrix.hpp +565 -0
- casadi/include/coin/ClpPresolve.hpp +379 -0
- casadi/include/coin/ClpPrimalColumnDantzig.hpp +74 -0
- casadi/include/coin/ClpPrimalColumnPivot.hpp +163 -0
- casadi/include/coin/ClpPrimalColumnSteepest.hpp +281 -0
- casadi/include/coin/ClpQuadraticObjective.hpp +161 -0
- casadi/include/coin/ClpSimplex.hpp +2137 -0
- casadi/include/coin/ClpSimplexDual.hpp +304 -0
- casadi/include/coin/ClpSimplexNonlinear.hpp +117 -0
- casadi/include/coin/ClpSimplexOther.hpp +282 -0
- casadi/include/coin/ClpSimplexPrimal.hpp +244 -0
- casadi/include/coin/ClpSolve.hpp +505 -0
- casadi/include/coin/Clp_C_Interface.h +554 -0
- casadi/include/coin/CoinAlloc.hpp +179 -0
- casadi/include/coin/CoinBuild.hpp +159 -0
- casadi/include/coin/CoinDenseFactorization.hpp +452 -0
- casadi/include/coin/CoinDenseVector.hpp +401 -0
- casadi/include/coin/CoinDistance.hpp +51 -0
- casadi/include/coin/CoinError.hpp +274 -0
- casadi/include/coin/CoinFactorization.hpp +2178 -0
- casadi/include/coin/CoinFileIO.hpp +185 -0
- casadi/include/coin/CoinFinite.hpp +37 -0
- casadi/include/coin/CoinFloatEqual.hpp +204 -0
- casadi/include/coin/CoinHelperFunctions.hpp +1270 -0
- casadi/include/coin/CoinIndexedVector.hpp +1437 -0
- casadi/include/coin/CoinLpIO.hpp +836 -0
- casadi/include/coin/CoinMessage.hpp +95 -0
- casadi/include/coin/CoinMessageHandler.hpp +717 -0
- casadi/include/coin/CoinModel.hpp +1214 -0
- casadi/include/coin/CoinModelUseful.hpp +518 -0
- casadi/include/coin/CoinMpsIO.hpp +1142 -0
- casadi/include/coin/CoinOslFactorization.hpp +287 -0
- casadi/include/coin/CoinPackedMatrix.hpp +956 -0
- casadi/include/coin/CoinPackedVector.hpp +670 -0
- casadi/include/coin/CoinPackedVectorBase.hpp +274 -0
- casadi/include/coin/CoinParam.hpp +644 -0
- casadi/include/coin/CoinPragma.hpp +29 -0
- casadi/include/coin/CoinPresolveDoubleton.hpp +76 -0
- casadi/include/coin/CoinPresolveDual.hpp +84 -0
- casadi/include/coin/CoinPresolveDupcol.hpp +259 -0
- casadi/include/coin/CoinPresolveEmpty.hpp +120 -0
- casadi/include/coin/CoinPresolveFixed.hpp +185 -0
- casadi/include/coin/CoinPresolveForcing.hpp +69 -0
- casadi/include/coin/CoinPresolveImpliedFree.hpp +66 -0
- casadi/include/coin/CoinPresolveIsolated.hpp +59 -0
- casadi/include/coin/CoinPresolveMatrix.hpp +1996 -0
- casadi/include/coin/CoinPresolveMonitor.hpp +105 -0
- casadi/include/coin/CoinPresolvePsdebug.hpp +169 -0
- casadi/include/coin/CoinPresolveSingleton.hpp +115 -0
- casadi/include/coin/CoinPresolveSubst.hpp +103 -0
- casadi/include/coin/CoinPresolveTighten.hpp +58 -0
- casadi/include/coin/CoinPresolveTripleton.hpp +69 -0
- casadi/include/coin/CoinPresolveUseless.hpp +63 -0
- casadi/include/coin/CoinPresolveZeros.hpp +65 -0
- casadi/include/coin/CoinRational.hpp +43 -0
- casadi/include/coin/CoinSearchTree.hpp +523 -0
- casadi/include/coin/CoinShallowPackedVector.hpp +149 -0
- casadi/include/coin/CoinSignal.hpp +127 -0
- casadi/include/coin/CoinSimpFactorization.hpp +432 -0
- casadi/include/coin/CoinSmartPtr.hpp +548 -0
- casadi/include/coin/CoinSnapshot.hpp +572 -0
- casadi/include/coin/CoinSort.hpp +753 -0
- casadi/include/coin/CoinStructuredModel.hpp +270 -0
- casadi/include/coin/CoinTime.hpp +350 -0
- casadi/include/coin/CoinTypes.hpp +67 -0
- casadi/include/coin/CoinUtility.hpp +26 -0
- casadi/include/coin/CoinUtilsConfig.h +34 -0
- casadi/include/coin/CoinWarmStart.hpp +56 -0
- casadi/include/coin/CoinWarmStartBasis.hpp +468 -0
- casadi/include/coin/CoinWarmStartDual.hpp +180 -0
- casadi/include/coin/CoinWarmStartPrimalDual.hpp +233 -0
- casadi/include/coin/CoinWarmStartVector.hpp +523 -0
- casadi/include/coin/Coin_C_defines.h +149 -0
- casadi/include/coin/Idiot.hpp +327 -0
- casadi/include/coin/OsiAuxInfo.hpp +261 -0
- casadi/include/coin/OsiBranchingObject.hpp +1097 -0
- casadi/include/coin/OsiCbcSolverInterface.hpp +791 -0
- casadi/include/coin/OsiChooseVariable.hpp +645 -0
- casadi/include/coin/OsiClpSolverInterface.hpp +1604 -0
- casadi/include/coin/OsiColCut.hpp +322 -0
- casadi/include/coin/OsiCollections.hpp +34 -0
- casadi/include/coin/OsiConfig.h +19 -0
- casadi/include/coin/OsiCut.hpp +251 -0
- casadi/include/coin/OsiCuts.hpp +505 -0
- casadi/include/coin/OsiPresolve.hpp +272 -0
- casadi/include/coin/OsiRowCut.hpp +345 -0
- casadi/include/coin/OsiRowCutDebugger.hpp +190 -0
- casadi/include/coin/OsiSolverBranch.hpp +169 -0
- casadi/include/coin/OsiSolverInterface.hpp +2221 -0
- casadi/include/coin/OsiSolverParameters.hpp +144 -0
- casadi/include/coin/OsiUnitTests.hpp +390 -0
- casadi/include/coin-or/IpAlgBuilder.hpp +417 -0
- casadi/include/coin-or/IpAlgStrategy.hpp +201 -0
- casadi/include/coin-or/IpAlgTypes.hpp +64 -0
- casadi/include/coin-or/IpAugSystemSolver.hpp +212 -0
- casadi/include/coin-or/IpBlas.hpp +426 -0
- casadi/include/coin-or/IpCachedResults.hpp +897 -0
- casadi/include/coin-or/IpCompoundMatrix.hpp +423 -0
- casadi/include/coin-or/IpCompoundSymMatrix.hpp +348 -0
- casadi/include/coin-or/IpCompoundVector.hpp +395 -0
- casadi/include/coin-or/IpConvCheck.hpp +97 -0
- casadi/include/coin-or/IpDebug.hpp +167 -0
- casadi/include/coin-or/IpDenseVector.hpp +626 -0
- casadi/include/coin-or/IpDiagMatrix.hpp +158 -0
- casadi/include/coin-or/IpEqMultCalculator.hpp +76 -0
- casadi/include/coin-or/IpException.hpp +156 -0
- casadi/include/coin-or/IpExpansionMatrix.hpp +245 -0
- casadi/include/coin-or/IpGenTMatrix.hpp +290 -0
- casadi/include/coin-or/IpHessianUpdater.hpp +73 -0
- casadi/include/coin-or/IpIdentityMatrix.hpp +167 -0
- casadi/include/coin-or/IpIpoptAlg.hpp +257 -0
- casadi/include/coin-or/IpIpoptApplication.hpp +367 -0
- casadi/include/coin-or/IpIpoptCalculatedQuantities.hpp +1009 -0
- casadi/include/coin-or/IpIpoptData.hpp +966 -0
- casadi/include/coin-or/IpIpoptNLP.hpp +328 -0
- casadi/include/coin-or/IpIterateInitializer.hpp +68 -0
- casadi/include/coin-or/IpIteratesVector.hpp +840 -0
- casadi/include/coin-or/IpIterationOutput.hpp +78 -0
- casadi/include/coin-or/IpJournalist.hpp +573 -0
- casadi/include/coin-or/IpLapack.hpp +227 -0
- casadi/include/coin-or/IpLibraryLoader.hpp +76 -0
- casadi/include/coin-or/IpLineSearch.hpp +106 -0
- casadi/include/coin-or/IpLinearSolvers.h +46 -0
- casadi/include/coin-or/IpMatrix.hpp +434 -0
- casadi/include/coin-or/IpMuUpdate.hpp +77 -0
- casadi/include/coin-or/IpNLP.hpp +306 -0
- casadi/include/coin-or/IpNLPScaling.hpp +582 -0
- casadi/include/coin-or/IpObserver.hpp +422 -0
- casadi/include/coin-or/IpOptionsList.hpp +412 -0
- casadi/include/coin-or/IpOrigIpoptNLP.hpp +603 -0
- casadi/include/coin-or/IpPDSystemSolver.hpp +137 -0
- casadi/include/coin-or/IpReferenced.hpp +262 -0
- casadi/include/coin-or/IpRegOptions.hpp +1152 -0
- casadi/include/coin-or/IpReturnCodes.h +23 -0
- casadi/include/coin-or/IpReturnCodes.hpp +18 -0
- casadi/include/coin-or/IpReturnCodes.inc +71 -0
- casadi/include/coin-or/IpReturnCodes_inc.h +45 -0
- casadi/include/coin-or/IpScaledMatrix.hpp +291 -0
- casadi/include/coin-or/IpSearchDirCalculator.hpp +72 -0
- casadi/include/coin-or/IpSmartPtr.hpp +865 -0
- casadi/include/coin-or/IpSolveStatistics.hpp +210 -0
- casadi/include/coin-or/IpSparseSymLinearSolverInterface.hpp +260 -0
- casadi/include/coin-or/IpStdAugSystemSolver.cpp +555 -0
- casadi/include/coin-or/IpStdCInterface.h +428 -0
- casadi/include/coin-or/IpSumSymMatrix.hpp +186 -0
- casadi/include/coin-or/IpSymLinearSolver.hpp +141 -0
- casadi/include/coin-or/IpSymMatrix.hpp +167 -0
- casadi/include/coin-or/IpSymScaledMatrix.hpp +255 -0
- casadi/include/coin-or/IpSymTMatrix.hpp +275 -0
- casadi/include/coin-or/IpTNLP.hpp +820 -0
- casadi/include/coin-or/IpTNLPAdapter.hpp +648 -0
- casadi/include/coin-or/IpTNLPReducer.hpp +274 -0
- casadi/include/coin-or/IpTaggedObject.hpp +128 -0
- casadi/include/coin-or/IpTimedTask.hpp +218 -0
- casadi/include/coin-or/IpTimingStatistics.hpp +323 -0
- casadi/include/coin-or/IpTripletHelper.hpp +308 -0
- casadi/include/coin-or/IpTypes.h +81 -0
- casadi/include/coin-or/IpTypes.hpp +30 -0
- casadi/include/coin-or/IpUtils.hpp +166 -0
- casadi/include/coin-or/IpVector.hpp +892 -0
- casadi/include/coin-or/IpZeroSymMatrix.hpp +155 -0
- casadi/include/coin-or/IpoptConfig.h +45 -0
- casadi/include/coin-or/SensAlgorithm.hpp +114 -0
- casadi/include/coin-or/SensApplication.hpp +188 -0
- casadi/include/coin-or/SensBacksolver.hpp +36 -0
- casadi/include/coin-or/SensMeasurement.hpp +56 -0
- casadi/include/coin-or/SensPCalculator.hpp +137 -0
- casadi/include/coin-or/SensRegOp.hpp +21 -0
- casadi/include/coin-or/SensSchurData.hpp +182 -0
- casadi/include/coin-or/SensSchurDriver.hpp +118 -0
- casadi/include/coin-or/SensSimpleBacksolver.hpp +49 -0
- casadi/include/coin-or/SensStepCalc.hpp +85 -0
- casadi/include/coin-or/SensUtils.hpp +63 -0
- casadi/include/coin-or/metis/defs.h +161 -0
- casadi/include/coin-or/metis/macros.h +143 -0
- casadi/include/coin-or/metis/metis.h +37 -0
- casadi/include/coin-or/metis/proto.h +505 -0
- casadi/include/coin-or/metis/rename.h +418 -0
- casadi/include/coin-or/metis/struct.h +251 -0
- casadi/include/coin-or/mumps/dmumps_c.h +142 -0
- casadi/include/coin-or/mumps/mumps_c_types.h +72 -0
- casadi/include/coin-or/mumps/mumps_compat.h +27 -0
- casadi/include/coin-or/mumps/mumps_int_def.h +11 -0
- casadi/include/coin-or/mumps/mumps_mpi.h +67 -0
- casadi/include/d_blas.h +78 -0
- casadi/include/d_blas_64.h +73 -0
- casadi/include/highs/HConfig.h +4 -7
- casadi/include/highs/Highs.h +240 -51
- casadi/include/highs/filereaderlp/builder.hpp +12 -13
- casadi/include/highs/filereaderlp/model.hpp +32 -35
- casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
- casadi/include/highs/interfaces/highs_c_api.h +964 -577
- casadi/include/highs/io/Filereader.h +2 -4
- casadi/include/highs/io/FilereaderEms.h +2 -4
- casadi/include/highs/io/FilereaderLp.h +2 -4
- casadi/include/highs/io/FilereaderMps.h +2 -4
- casadi/include/highs/io/HMPSIO.h +2 -4
- casadi/include/highs/io/HMpsFF.h +2 -4
- casadi/include/highs/io/HighsIO.h +19 -13
- casadi/include/highs/io/LoadOptions.h +7 -6
- casadi/include/highs/ipm/IpxWrapper.h +4 -5
- casadi/include/highs/lp_data/HConst.h +60 -15
- casadi/include/highs/lp_data/HStruct.h +32 -8
- casadi/include/highs/lp_data/HighsAnalysis.h +2 -4
- casadi/include/highs/lp_data/HighsCallback.h +33 -0
- casadi/include/highs/lp_data/HighsCallbackStruct.h +36 -0
- casadi/include/highs/lp_data/HighsDebug.h +2 -4
- casadi/include/highs/lp_data/HighsInfo.h +22 -23
- casadi/include/highs/lp_data/HighsInfoDebug.h +2 -4
- casadi/include/highs/lp_data/HighsLp.h +14 -6
- casadi/include/highs/lp_data/HighsLpSolverObject.h +6 -5
- casadi/include/highs/lp_data/HighsLpUtils.h +23 -12
- casadi/include/highs/lp_data/HighsModelUtils.h +22 -8
- casadi/include/highs/lp_data/HighsOptions.h +175 -106
- casadi/include/highs/lp_data/HighsRanging.h +2 -4
- casadi/include/highs/lp_data/HighsRuntimeOptions.h +21 -6
- casadi/include/highs/lp_data/HighsSolution.h +4 -4
- casadi/include/highs/lp_data/HighsSolutionDebug.h +2 -4
- casadi/include/highs/lp_data/HighsSolve.h +2 -4
- casadi/include/highs/lp_data/HighsStatus.h +2 -4
- casadi/include/highs/mip/HighsCliqueTable.h +18 -20
- casadi/include/highs/mip/HighsConflictPool.h +2 -4
- casadi/include/highs/mip/HighsCutGeneration.h +2 -4
- casadi/include/highs/mip/HighsCutPool.h +2 -4
- casadi/include/highs/mip/HighsDebugSol.h +2 -4
- casadi/include/highs/mip/HighsDomain.h +5 -5
- casadi/include/highs/mip/HighsDomainChange.h +2 -4
- casadi/include/highs/mip/HighsDynamicRowMatrix.h +2 -4
- casadi/include/highs/mip/HighsGFkSolve.h +2 -4
- casadi/include/highs/mip/HighsImplications.h +2 -4
- casadi/include/highs/mip/HighsLpAggregator.h +2 -4
- casadi/include/highs/mip/HighsLpRelaxation.h +2 -4
- casadi/include/highs/mip/HighsMipSolver.h +18 -6
- casadi/include/highs/mip/HighsMipSolverData.h +8 -4
- casadi/include/highs/mip/HighsModkSeparator.h +2 -4
- casadi/include/highs/mip/HighsNodeQueue.h +3 -9
- casadi/include/highs/mip/HighsObjectiveFunction.h +2 -4
- casadi/include/highs/mip/HighsPathSeparator.h +2 -4
- casadi/include/highs/mip/HighsPrimalHeuristics.h +2 -4
- casadi/include/highs/mip/HighsPseudocost.h +2 -4
- casadi/include/highs/mip/HighsRedcostFixing.h +2 -4
- casadi/include/highs/mip/HighsSearch.h +2 -4
- casadi/include/highs/mip/HighsSeparation.h +2 -4
- casadi/include/highs/mip/HighsSeparator.h +2 -4
- casadi/include/highs/mip/HighsTableauSeparator.h +2 -4
- casadi/include/highs/mip/HighsTransformedLp.h +2 -4
- casadi/include/highs/model/HighsHessian.h +3 -1
- casadi/include/highs/model/HighsModel.h +2 -0
- casadi/include/highs/parallel/HighsSpinMutex.h +2 -1
- casadi/include/highs/parallel/HighsSplitDeque.h +1 -1
- casadi/include/highs/parallel/HighsTaskExecutor.h +10 -2
- casadi/include/highs/presolve/HPresolve.h +9 -6
- casadi/include/highs/presolve/HPresolveAnalysis.h +5 -4
- casadi/include/highs/presolve/HighsPostsolveStack.h +50 -13
- casadi/include/highs/presolve/HighsSymmetry.h +2 -4
- casadi/include/highs/presolve/ICrash.h +4 -3
- casadi/include/highs/presolve/ICrashUtil.h +2 -2
- casadi/include/highs/presolve/ICrashX.h +4 -6
- casadi/include/highs/presolve/PresolveComponent.h +4 -42
- casadi/include/highs/qpsolver/a_asm.hpp +56 -0
- casadi/include/highs/qpsolver/a_quass.hpp +12 -0
- casadi/include/highs/qpsolver/quass.hpp +1 -4
- casadi/include/highs/simplex/HApp.h +14 -16
- casadi/include/highs/simplex/HEkk.h +12 -11
- casadi/include/highs/simplex/HEkkDual.h +2 -4
- casadi/include/highs/simplex/HEkkDualRHS.h +5 -6
- casadi/include/highs/simplex/HEkkDualRow.h +2 -4
- casadi/include/highs/simplex/HEkkPrimal.h +2 -4
- casadi/include/highs/simplex/HSimplex.h +2 -4
- casadi/include/highs/simplex/HSimplexDebug.h +2 -4
- casadi/include/highs/simplex/HSimplexNla.h +2 -4
- casadi/include/highs/simplex/HSimplexReport.h +3 -5
- casadi/include/highs/simplex/HighsSimplexAnalysis.h +2 -4
- casadi/include/highs/simplex/SimplexConst.h +7 -5
- casadi/include/highs/simplex/SimplexStruct.h +11 -5
- casadi/include/highs/simplex/SimplexTimer.h +2 -4
- casadi/include/highs/test/DevKkt.h +2 -4
- casadi/include/highs/test/KktCh2.h +2 -4
- casadi/include/highs/util/FactorTimer.h +2 -4
- casadi/include/highs/util/HFactor.h +2 -4
- casadi/include/highs/util/HFactorConst.h +2 -4
- casadi/include/highs/util/HFactorDebug.h +2 -4
- casadi/include/highs/util/HSet.h +3 -5
- casadi/include/highs/util/HVector.h +2 -4
- casadi/include/highs/util/HVectorBase.h +2 -4
- casadi/include/highs/util/HighsCDouble.h +2 -4
- casadi/include/highs/util/HighsComponent.h +2 -4
- casadi/include/highs/util/HighsDataStack.h +3 -5
- casadi/include/highs/util/HighsDisjointSets.h +8 -10
- casadi/include/highs/util/HighsHash.h +22 -7
- casadi/include/highs/util/HighsHashTree.h +25 -7
- casadi/include/highs/util/HighsInt.h +2 -4
- casadi/include/highs/util/HighsIntegers.h +2 -4
- casadi/include/highs/util/HighsLinearSumBounds.h +2 -4
- casadi/include/highs/util/HighsMatrixPic.h +2 -4
- casadi/include/highs/util/HighsMatrixSlice.h +2 -4
- casadi/include/highs/util/HighsMatrixUtils.h +2 -4
- casadi/include/highs/util/HighsRandom.h +2 -4
- casadi/include/highs/util/HighsRbTree.h +2 -4
- casadi/include/highs/util/HighsSort.h +2 -4
- casadi/include/highs/util/HighsSparseMatrix.h +11 -7
- casadi/include/highs/util/HighsSparseVectorSum.h +2 -4
- casadi/include/highs/util/HighsSplay.h +2 -4
- casadi/include/highs/util/HighsTimer.h +3 -4
- casadi/include/highs/util/HighsUtils.h +14 -4
- casadi/include/highs/util/stringutil.h +2 -4
- casadi/include/licenses/alpaqa-external/LICENSE +165 -0
- casadi/include/licenses/highs-external/LICENSE +1 -1
- casadi/include/licenses/sleqp-external/LICENSE +165 -0
- casadi/include/licenses/trlib-external/LICENSE +21 -0
- casadi/include/openblas/cblas.h +411 -0
- casadi/include/openblas/f77blas.h +796 -0
- casadi/include/openblas/lapack.h +22997 -0
- casadi/include/openblas/lapacke.h +12665 -0
- casadi/include/openblas/lapacke_config.h +119 -0
- casadi/include/openblas/lapacke_example_aux.h +9 -0
- casadi/include/openblas/lapacke_mangling.h +17 -0
- casadi/include/openblas/lapacke_utils.h +582 -0
- casadi/include/openblas/openblas/lapacke_mangling.h +17 -0
- casadi/include/openblas/openblas_config.h +140 -0
- casadi/include/qdldl/qdldl.h +169 -0
- casadi/include/qdldl/qdldl_types.h +23 -0
- casadi/include/s_blas.h +78 -0
- casadi/include/s_blas_64.h +73 -0
- casadi/include/sleqp/defs.h +58 -0
- casadi/include/sleqp/export.h +42 -0
- casadi/include/sleqp/pub_cmp.h +18 -0
- casadi/include/sleqp/pub_dyn.h +140 -0
- casadi/include/sleqp/pub_error.h +50 -0
- casadi/include/sleqp/pub_func.h +257 -0
- casadi/include/sleqp/pub_hess_struct.h +105 -0
- casadi/include/sleqp/pub_iterate.h +88 -0
- casadi/include/sleqp/pub_log.h +88 -0
- casadi/include/sleqp/pub_lsq.h +158 -0
- casadi/include/sleqp/pub_mem.h +52 -0
- casadi/include/sleqp/pub_problem.h +213 -0
- casadi/include/sleqp/pub_scale.h +150 -0
- casadi/include/sleqp/pub_settings.h +162 -0
- casadi/include/sleqp/pub_solver.h +155 -0
- casadi/include/sleqp/pub_types.h +230 -0
- casadi/include/sleqp/pub_working_set.h +135 -0
- casadi/include/sleqp/sparse/pub_mat.h +153 -0
- casadi/include/sleqp/sparse/pub_vec.h +336 -0
- casadi/include/sleqp.h +38 -0
- casadi/include/spral.h +13 -0
- casadi/include/spral_lsmr.h +57 -0
- casadi/include/spral_matrix_util.h +40 -0
- casadi/include/spral_random.h +26 -0
- casadi/include/spral_random_matrix.h +27 -0
- casadi/include/spral_rutherford_boeing.h +51 -0
- casadi/include/spral_scaling.h +139 -0
- casadi/include/spral_ssids.h +121 -0
- casadi/include/spral_ssmfe.h +268 -0
- casadi/include/trlib/trlib_eigen_inverse.h +118 -0
- casadi/include/trlib/trlib_krylov.h +493 -0
- casadi/include/trlib/trlib_leftmost.h +181 -0
- casadi/include/trlib/trlib_private.h +109 -0
- casadi/include/trlib/trlib_quadratic_zero.h +57 -0
- casadi/include/trlib/trlib_tri_factor.h +409 -0
- casadi/include/trlib/trlib_types.h +36 -0
- casadi/include/trlib.h +44 -0
- casadi/ipopt.lib +0 -0
- casadi/lapack.lib +0 -0
- casadi/lib/libtinyxml2.dll.a +0 -0
- casadi/libCbc-3.dll +0 -0
- casadi/libCbc.dll.a +0 -0
- casadi/libCbc.la +1 -1
- casadi/libCbcSolver-3.dll +0 -0
- casadi/libCbcSolver.dll.a +0 -0
- casadi/libCbcSolver.la +1 -1
- casadi/libCgl-1.dll +0 -0
- casadi/libCgl.dll.a +0 -0
- casadi/libCgl.la +1 -1
- casadi/libClp-1.dll +0 -0
- casadi/libClp.dll.a +0 -0
- casadi/libClp.la +1 -1
- casadi/libClpSolver-1.dll +0 -0
- casadi/libClpSolver.dll.a +0 -0
- casadi/libClpSolver.la +1 -1
- casadi/libCoinUtils-3.dll +0 -0
- casadi/libCoinUtils.dll.a +0 -0
- casadi/libCoinUtils.la +1 -1
- casadi/libFortranHighs.dll +0 -0
- casadi/libFortranHighs.dll.a +0 -0
- casadi/libOsi-1.dll +0 -0
- casadi/libOsi.dll.a +0 -0
- casadi/libOsi.la +1 -1
- casadi/libOsiCbc-3.dll +0 -0
- casadi/libOsiCbc.dll.a +0 -0
- casadi/libOsiCbc.la +1 -1
- casadi/libOsiClp-1.dll +0 -0
- casadi/libOsiClp.dll.a +0 -0
- casadi/libOsiClp.la +1 -1
- casadi/libOsiCommonTests-1.dll +0 -0
- casadi/libOsiCommonTests.dll.a +0 -0
- casadi/libOsiCommonTests.la +1 -1
- casadi/libalpaqa.dll +0 -0
- casadi/libalpaqa.dll.a +0 -0
- casadi/libblasfeo.dll +0 -0
- casadi/libblasfeo.dll.a +0 -0
- casadi/libbonmin-4.dll +0 -0
- casadi/libbonmin.dll.a +0 -0
- casadi/libbonmin.la +1 -1
- casadi/libcasadi-tp-openblas.dll +0 -0
- casadi/libcasadi-tp-openblas.dll.a +0 -0
- casadi/libcasadi.dll +0 -0
- casadi/libcasadi.dll.a +0 -0
- casadi/libcasadi_conic_cbc.dll +0 -0
- casadi/libcasadi_conic_cbc.dll.a +0 -0
- casadi/libcasadi_conic_clp.dll +0 -0
- casadi/libcasadi_conic_clp.dll.a +0 -0
- casadi/libcasadi_conic_cplex.dll +0 -0
- casadi/libcasadi_conic_cplex.dll.a +0 -0
- casadi/libcasadi_conic_gurobi.dll +0 -0
- casadi/libcasadi_conic_gurobi.dll.a +0 -0
- casadi/libcasadi_conic_highs.dll +0 -0
- casadi/libcasadi_conic_highs.dll.a +0 -0
- casadi/libcasadi_conic_hpipm.dll +0 -0
- casadi/libcasadi_conic_hpipm.dll.a +0 -0
- casadi/libcasadi_conic_ipqp.dll +0 -0
- casadi/libcasadi_conic_ipqp.dll.a +0 -0
- casadi/libcasadi_conic_nlpsol.dll +0 -0
- casadi/libcasadi_conic_nlpsol.dll.a +0 -0
- casadi/libcasadi_conic_osqp.dll +0 -0
- casadi/libcasadi_conic_osqp.dll.a +0 -0
- casadi/libcasadi_conic_proxqp.dll +0 -0
- casadi/libcasadi_conic_proxqp.dll.a +0 -0
- casadi/libcasadi_conic_qpoases.dll +0 -0
- casadi/libcasadi_conic_qpoases.dll.a +0 -0
- casadi/libcasadi_conic_qrqp.dll +0 -0
- casadi/libcasadi_conic_qrqp.dll.a +0 -0
- casadi/libcasadi_conic_superscs.dll +0 -0
- casadi/libcasadi_conic_superscs.dll.a +0 -0
- casadi/libcasadi_importer_shell.dll +0 -0
- casadi/libcasadi_importer_shell.dll.a +0 -0
- casadi/libcasadi_integrator_collocation.dll +0 -0
- casadi/libcasadi_integrator_collocation.dll.a +0 -0
- casadi/libcasadi_integrator_cvodes.dll +0 -0
- casadi/libcasadi_integrator_cvodes.dll.a +0 -0
- casadi/libcasadi_integrator_idas.dll +0 -0
- casadi/libcasadi_integrator_idas.dll.a +0 -0
- casadi/libcasadi_integrator_rk.dll +0 -0
- casadi/libcasadi_integrator_rk.dll.a +0 -0
- casadi/libcasadi_interpolant_bspline.dll +0 -0
- casadi/libcasadi_interpolant_bspline.dll.a +0 -0
- casadi/libcasadi_interpolant_linear.dll +0 -0
- casadi/libcasadi_interpolant_linear.dll.a +0 -0
- casadi/libcasadi_linsol_csparse.dll +0 -0
- casadi/libcasadi_linsol_csparse.dll.a +0 -0
- casadi/libcasadi_linsol_csparsecholesky.dll +0 -0
- casadi/libcasadi_linsol_csparsecholesky.dll.a +0 -0
- casadi/libcasadi_linsol_lapacklu.dll +0 -0
- casadi/libcasadi_linsol_lapacklu.dll.a +0 -0
- casadi/libcasadi_linsol_lapackqr.dll +0 -0
- casadi/libcasadi_linsol_lapackqr.dll.a +0 -0
- casadi/libcasadi_linsol_ldl.dll +0 -0
- casadi/libcasadi_linsol_ldl.dll.a +0 -0
- casadi/libcasadi_linsol_lsqr.dll +0 -0
- casadi/libcasadi_linsol_lsqr.dll.a +0 -0
- casadi/libcasadi_linsol_ma27.dll +0 -0
- casadi/libcasadi_linsol_ma27.dll.a +0 -0
- casadi/libcasadi_linsol_mumps.dll +0 -0
- casadi/libcasadi_linsol_mumps.dll.a +0 -0
- casadi/libcasadi_linsol_qr.dll +0 -0
- casadi/libcasadi_linsol_qr.dll.a +0 -0
- casadi/libcasadi_linsol_symbolicqr.dll +0 -0
- casadi/libcasadi_linsol_symbolicqr.dll.a +0 -0
- casadi/libcasadi_linsol_tridiag.dll +0 -0
- casadi/libcasadi_linsol_tridiag.dll.a +0 -0
- casadi/libcasadi_nlpsol_alpaqa.dll +0 -0
- casadi/libcasadi_nlpsol_alpaqa.dll.a +0 -0
- casadi/libcasadi_nlpsol_ampl.dll +0 -0
- casadi/libcasadi_nlpsol_ampl.dll.a +0 -0
- casadi/libcasadi_nlpsol_blocksqp.dll +0 -0
- casadi/libcasadi_nlpsol_blocksqp.dll.a +0 -0
- casadi/libcasadi_nlpsol_bonmin.dll +0 -0
- casadi/libcasadi_nlpsol_bonmin.dll.a +0 -0
- casadi/libcasadi_nlpsol_feasiblesqpmethod.dll +0 -0
- casadi/libcasadi_nlpsol_feasiblesqpmethod.dll.a +0 -0
- casadi/libcasadi_nlpsol_ipopt.dll +0 -0
- casadi/libcasadi_nlpsol_ipopt.dll.a +0 -0
- casadi/libcasadi_nlpsol_knitro.dll +0 -0
- casadi/libcasadi_nlpsol_knitro.dll.a +0 -0
- casadi/libcasadi_nlpsol_qrsqp.dll +0 -0
- casadi/libcasadi_nlpsol_qrsqp.dll.a +0 -0
- casadi/libcasadi_nlpsol_scpgen.dll +0 -0
- casadi/libcasadi_nlpsol_scpgen.dll.a +0 -0
- casadi/libcasadi_nlpsol_sleqp.dll +0 -0
- casadi/libcasadi_nlpsol_sleqp.dll.a +0 -0
- casadi/libcasadi_nlpsol_snopt.dll +0 -0
- casadi/libcasadi_nlpsol_snopt.dll.a +0 -0
- casadi/libcasadi_nlpsol_sqpmethod.dll +0 -0
- casadi/libcasadi_nlpsol_sqpmethod.dll.a +0 -0
- casadi/libcasadi_nlpsol_worhp.dll +0 -0
- casadi/libcasadi_nlpsol_worhp.dll.a +0 -0
- casadi/libcasadi_rootfinder_fast_newton.dll +0 -0
- casadi/libcasadi_rootfinder_fast_newton.dll.a +0 -0
- casadi/libcasadi_rootfinder_kinsol.dll +0 -0
- casadi/libcasadi_rootfinder_kinsol.dll.a +0 -0
- casadi/libcasadi_rootfinder_newton.dll +0 -0
- casadi/libcasadi_rootfinder_newton.dll.a +0 -0
- casadi/libcasadi_rootfinder_nlpsol.dll +0 -0
- casadi/libcasadi_rootfinder_nlpsol.dll.a +0 -0
- casadi/libcasadi_sundials_common.dll +0 -0
- casadi/libcasadi_sundials_common.dll.a +0 -0
- casadi/libcasadi_xmlfile_tinyxml.dll +0 -0
- casadi/libcasadi_xmlfile_tinyxml.dll.a +0 -0
- casadi/libcoinmetis-2.dll +0 -0
- casadi/libcoinmetis.dll.a +0 -0
- casadi/libcoinmumps-3.dll +0 -0
- casadi/libcoinmumps.dll.a +0 -0
- casadi/libcplex_adaptor.dll +0 -0
- casadi/libgurobi_adaptor.dll +0 -0
- casadi/libhighs.dll +0 -0
- casadi/libhighs.dll.a +0 -0
- casadi/libhpipm.dll +0 -0
- casadi/libhpipm.dll.a +0 -0
- casadi/libipopt-3.dll +0 -0
- casadi/libipopt.dll.a +0 -0
- casadi/libosqp.dll +0 -0
- casadi/libosqp.dll.a +0 -0
- casadi/libqdldl.dll +0 -0
- casadi/libqdldl.dll.a +0 -0
- casadi/libsipopt-3.dll +0 -0
- casadi/libsipopt.dll.a +0 -0
- casadi/libsleqp.dll +0 -0
- casadi/libsleqp.dll.a +0 -0
- casadi/libtinyxml2.dll +0 -0
- casadi/libtrlib.dll +0 -0
- casadi/libtrlib.dll.a +0 -0
- casadi/osqp.lib +0 -0
- casadi/pkgconfig/blas.pc +11 -0
- casadi/pkgconfig/bonmin.pc +1 -1
- casadi/pkgconfig/casadi.pc +1 -1
- casadi/pkgconfig/cbc.pc +2 -2
- casadi/pkgconfig/cgl.pc +2 -2
- casadi/pkgconfig/clp.pc +1 -1
- casadi/pkgconfig/coinutils.pc +1 -1
- casadi/pkgconfig/highs.pc +3 -3
- casadi/pkgconfig/lapack.pc +11 -0
- casadi/pkgconfig/openblas.pc +1 -1
- casadi/pkgconfig/osi-cbc.pc +1 -1
- casadi/pkgconfig/osi-clp.pc +1 -1
- casadi/pkgconfig/osi-unittests.pc +1 -1
- casadi/pkgconfig/osi.pc +1 -1
- casadi/pkgconfig/sleqp.pc +10 -0
- casadi/sleqp.lib +0 -0
- casadi/spral_ssids.exe +0 -0
- {casadi-3.6.3.dist-info → casadi-3.6.5.dist-info}/METADATA +11 -3
- {casadi-3.6.3.dist-info → casadi-3.6.5.dist-info}/RECORD +893 -325
- casadi/include/highs/interfaces/OsiHiGHSSolverInterface.hpp +0 -415
- casadi/libOsiHighs.dll +0 -0
- casadi/libOsiHighs.dll.a +0 -0
- casadi/pkgconfig/osi-highs.pc +0 -11
- {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
|