casadi 3.6.5__cp310-none-macosx_11_0_arm64.whl → 3.6.7__cp310-none-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- casadi/_casadi.so +0 -0
- casadi/casadi-cli +0 -0
- casadi/casadi.py +739 -308
- casadi/cbc +0 -0
- casadi/clp +0 -0
- casadi/cmake/casadi-config-version.cmake +1 -1
- casadi/cmake/casadi-targets.cmake +10 -6
- casadi/cmake/highs/highs-config.cmake +6 -13
- casadi/cmake/highs/highs-targets-release.cmake +13 -13
- casadi/cmake/highs/highs-targets.cmake +25 -22
- casadi/cmake/osqp/osqp-targets.cmake +10 -6
- casadi/cmake/proxsuite/proxsuiteConfigVersion.cmake +0 -5
- casadi/cmake/proxsuite/proxsuiteTargets.cmake +12 -12
- casadi/cmake/qdldl/qdldl-targets.cmake +10 -6
- casadi/cmake/sleqp/sleqp-config-version.cmake +0 -5
- casadi/cmake/sleqp/sleqp-targets.cmake +10 -6
- casadi/cmake/trlib/trlib-config-release.cmake +1 -1
- casadi/cmake/trlib/trlib-config-version.cmake +0 -5
- casadi/cmake/trlib/trlib-config.cmake +12 -12
- casadi/highs +0 -0
- casadi/include/casadi/casadi.i +3 -0
- casadi/include/casadi/casadi_c.h +2 -0
- casadi/include/casadi/config.h +9 -9
- casadi/include/casadi/core/casadi_common.hpp +1 -0
- casadi/include/casadi/core/casadi_export.h +1 -0
- casadi/include/casadi/core/casadi_misc.hpp +52 -0
- casadi/include/casadi/core/casadi_types.hpp +3 -2
- casadi/include/casadi/core/code_generator.hpp +30 -1
- casadi/include/casadi/core/global_options.hpp +2 -0
- casadi/include/casadi/core/mx.hpp +18 -3
- casadi/include/casadi/core/optistack.hpp +23 -0
- casadi/include/casadi/core/runtime/casadi_nlp.hpp +19 -4
- casadi/include/casadi/core/runtime/casadi_ocp_block.hpp +55 -0
- casadi/include/casadi/core/runtime/casadi_oracle.hpp +44 -0
- casadi/include/casadi/core/runtime/casadi_oracle_callback.hpp +39 -0
- casadi/include/casadi/core/runtime/casadi_runtime.hpp +4 -1
- casadi/include/casadi/core/runtime/casadi_scaled_copy.hpp +31 -0
- casadi/include/casadi/core/serializing_stream.hpp +2 -2
- casadi/include/casadi/core/sparsity.hpp +7 -0
- casadi/include/casadi/doc.i +1513 -1016
- casadi/include/casadi/doc_merged.i +965 -719
- casadi/include/casadi/mem.h +1 -0
- casadi/include/daqp/api.h +46 -0
- casadi/include/daqp/auxiliary.h +29 -0
- casadi/include/daqp/bnb.h +32 -0
- casadi/include/daqp/codegen.h +18 -0
- casadi/include/daqp/constants.h +92 -0
- casadi/include/daqp/daqp.h +22 -0
- casadi/include/daqp/daqp_prox.h +18 -0
- casadi/include/daqp/factorization.h +18 -0
- casadi/include/daqp/types.h +161 -0
- casadi/include/daqp/utils.h +44 -0
- casadi/include/fatrop/auxiliary/Common.hpp +34 -0
- casadi/include/fatrop/auxiliary/DynamicLib.hpp +34 -0
- casadi/include/fatrop/auxiliary/FatropOptions.hpp +68 -0
- casadi/include/fatrop/auxiliary/FatropVector.hpp +143 -0
- casadi/include/fatrop/auxiliary/LinearAlgebra.hpp +88 -0
- casadi/include/fatrop/auxiliary/VectorUtils.hpp +54 -0
- casadi/include/fatrop/blasfeo_wrapper/LinearAlgebraBlasfeo.hpp +493 -0
- casadi/include/fatrop/fatrop.hpp +39 -0
- casadi/include/fatrop/function_evaluation/CasadiCodegen.hpp +104 -0
- casadi/include/fatrop/function_evaluation/FunctionEvaluation.hpp +60 -0
- casadi/include/fatrop/json/json.h +946 -0
- casadi/include/fatrop/ocp/CasadiCApiUserdataWrap.hpp +87 -0
- casadi/include/fatrop/ocp/DuInfEvaluator.hpp +38 -0
- casadi/include/fatrop/ocp/FatropOCP.hpp +161 -0
- casadi/include/fatrop/ocp/FatropOCPBuilder.hpp +52 -0
- casadi/include/fatrop/ocp/FatropOCPResto.hpp +299 -0
- casadi/include/fatrop/ocp/OCP.hpp +82 -0
- casadi/include/fatrop/ocp/OCPAbstract.hpp +254 -0
- casadi/include/fatrop/ocp/OCPAdapter.hpp +197 -0
- casadi/include/fatrop/ocp/OCPCInterface.h +289 -0
- casadi/include/fatrop/ocp/OCPDims.hpp +60 -0
- casadi/include/fatrop/ocp/OCPInitializer.hpp +41 -0
- casadi/include/fatrop/ocp/OCPKKT.hpp +69 -0
- casadi/include/fatrop/ocp/OCPLSRiccati.hpp +198 -0
- casadi/include/fatrop/ocp/OCPLSScaler.hpp +66 -0
- casadi/include/fatrop/ocp/OCPLinearSolver.hpp +75 -0
- casadi/include/fatrop/ocp/OCPNoScaling.hpp +42 -0
- casadi/include/fatrop/ocp/OCPScalingMethod.hpp +42 -0
- casadi/include/fatrop/ocp/StageOCP.hpp +592 -0
- casadi/include/fatrop/ocp/StageOCPApplication.hpp +242 -0
- casadi/include/fatrop/ocp/StageOCPExpressions.hpp +182 -0
- casadi/include/fatrop/ocp/UStageEvalAbstract.hpp +168 -0
- casadi/include/fatrop/ocp/UStageOCPImpl.hpp +152 -0
- casadi/include/fatrop/quasi_newton/bfgs.hpp +159 -0
- casadi/include/fatrop/solver/AlgBuilder.hpp +76 -0
- casadi/include/fatrop/solver/AlgStrategy.hpp +33 -0
- casadi/include/fatrop/solver/FatropAlg.hpp +121 -0
- casadi/include/fatrop/solver/FatropData.hpp +188 -0
- casadi/include/fatrop/solver/FatropOptions.hpp +95 -0
- casadi/include/fatrop/solver/FatropPrinter.hpp +65 -0
- casadi/include/fatrop/solver/FatropStats.hpp +63 -0
- casadi/include/fatrop/solver/Filter.hpp +54 -0
- casadi/include/fatrop/solver/IterationData.hpp +56 -0
- casadi/include/fatrop/solver/LineSearch.hpp +86 -0
- casadi/include/fatrop/solver/NLPL1.hpp +263 -0
- casadi/include/fatrop/templates/NLPAlg.hpp +104 -0
- casadi/include/highs/HConfig.h +8 -7
- casadi/include/highs/Highs.h +93 -23
- casadi/include/highs/filereaderlp/def.hpp +19 -0
- casadi/include/highs/interfaces/highs_c_api.h +200 -24
- casadi/include/highs/io/Filereader.h +1 -1
- casadi/include/highs/io/FilereaderEms.h +1 -1
- casadi/include/highs/io/FilereaderLp.h +1 -1
- casadi/include/highs/io/FilereaderMps.h +1 -1
- casadi/include/highs/io/HMPSIO.h +1 -1
- casadi/include/highs/io/HMpsFF.h +5 -3
- casadi/include/highs/io/HighsIO.h +18 -8
- casadi/include/highs/io/LoadOptions.h +1 -1
- casadi/include/highs/ipm/IpxSolution.h +35 -0
- casadi/include/highs/ipm/IpxWrapper.h +1 -1
- casadi/include/highs/ipm/basiclu/basiclu.h +161 -0
- casadi/include/highs/ipm/basiclu/basiclu_factorize.h +247 -0
- casadi/include/highs/ipm/basiclu/basiclu_get_factors.h +108 -0
- casadi/include/highs/ipm/basiclu/basiclu_initialize.h +119 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_factorize.h +34 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_free.h +19 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_get_factors.h +34 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_initialize.h +46 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_solve_dense.h +29 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_solve_for_update.h +42 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_solve_sparse.h +32 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_update.h +31 -0
- casadi/include/highs/ipm/basiclu/basiclu_object.h +30 -0
- casadi/include/highs/ipm/basiclu/basiclu_solve_dense.h +75 -0
- casadi/include/highs/ipm/basiclu/basiclu_solve_for_update.h +169 -0
- casadi/include/highs/ipm/basiclu/basiclu_solve_sparse.h +112 -0
- casadi/include/highs/ipm/basiclu/basiclu_update.h +125 -0
- casadi/include/highs/ipm/basiclu/lu_def.h +39 -0
- casadi/include/highs/ipm/basiclu/lu_file.h +21 -0
- casadi/include/highs/ipm/basiclu/lu_internal.h +220 -0
- casadi/include/highs/ipm/basiclu/lu_list.h +168 -0
- casadi/include/highs/ipm/ipx/basiclu_kernel.h +20 -0
- casadi/include/highs/ipm/ipx/basiclu_wrapper.h +47 -0
- casadi/include/highs/ipm/ipx/basis.h +351 -0
- casadi/include/highs/ipm/ipx/conjugate_residuals.h +74 -0
- casadi/include/highs/ipm/ipx/control.h +163 -0
- casadi/include/highs/ipm/ipx/crossover.h +157 -0
- casadi/include/highs/ipm/ipx/diagonal_precond.h +45 -0
- casadi/include/highs/ipm/ipx/forrest_tomlin.h +102 -0
- casadi/include/highs/ipm/ipx/guess_basis.h +21 -0
- casadi/include/highs/ipm/ipx/indexed_vector.h +113 -0
- casadi/include/highs/ipm/ipx/info.h +27 -0
- casadi/include/highs/ipm/ipx/ipm.h +94 -0
- casadi/include/highs/ipm/ipx/ipx_c.h +47 -0
- casadi/include/highs/ipm/ipx/ipx_config.h +9 -0
- casadi/include/highs/ipm/ipx/ipx_info.h +111 -0
- casadi/include/highs/ipm/ipx/ipx_internal.h +88 -0
- casadi/include/highs/ipm/ipx/ipx_parameters.h +75 -0
- casadi/include/highs/ipm/ipx/ipx_status.h +57 -0
- casadi/include/highs/ipm/ipx/iterate.h +328 -0
- casadi/include/highs/ipm/ipx/kkt_solver.h +70 -0
- casadi/include/highs/ipm/ipx/kkt_solver_basis.h +66 -0
- casadi/include/highs/ipm/ipx/kkt_solver_diag.h +48 -0
- casadi/include/highs/ipm/ipx/linear_operator.h +26 -0
- casadi/include/highs/ipm/ipx/lp_solver.h +201 -0
- casadi/include/highs/ipm/ipx/lu_factorization.h +79 -0
- casadi/include/highs/ipm/ipx/lu_update.h +129 -0
- casadi/include/highs/ipm/ipx/maxvolume.h +54 -0
- casadi/include/highs/ipm/ipx/model.h +409 -0
- casadi/include/highs/ipm/ipx/multistream.h +52 -0
- casadi/include/highs/ipm/ipx/normal_matrix.h +44 -0
- casadi/include/highs/ipm/ipx/power_method.h +44 -0
- casadi/include/highs/ipm/ipx/sparse_matrix.h +195 -0
- casadi/include/highs/ipm/ipx/sparse_utils.h +58 -0
- casadi/include/highs/ipm/ipx/splitted_normal_matrix.h +63 -0
- casadi/include/highs/ipm/ipx/starting_basis.h +39 -0
- casadi/include/highs/ipm/ipx/symbolic_invert.h +29 -0
- casadi/include/highs/ipm/ipx/timer.h +24 -0
- casadi/include/highs/ipm/ipx/utils.h +39 -0
- casadi/include/highs/lp_data/HConst.h +20 -10
- casadi/include/highs/lp_data/HStruct.h +23 -1
- casadi/include/highs/lp_data/HighsAnalysis.h +1 -1
- casadi/include/highs/lp_data/HighsCallback.h +10 -3
- casadi/include/highs/lp_data/HighsCallbackStruct.h +31 -5
- casadi/include/highs/lp_data/HighsDebug.h +1 -1
- casadi/include/highs/lp_data/HighsInfo.h +20 -2
- casadi/include/highs/lp_data/HighsInfoDebug.h +1 -1
- casadi/include/highs/lp_data/HighsLp.h +17 -1
- casadi/include/highs/lp_data/HighsLpSolverObject.h +1 -1
- casadi/include/highs/lp_data/HighsLpUtils.h +19 -19
- casadi/include/highs/lp_data/HighsModelUtils.h +1 -1
- casadi/include/highs/lp_data/HighsOptions.h +237 -10
- casadi/include/highs/lp_data/HighsRanging.h +1 -1
- casadi/include/highs/lp_data/HighsRuntimeOptions.h +2 -2
- casadi/include/highs/lp_data/HighsSolution.h +2 -2
- casadi/include/highs/lp_data/HighsSolutionDebug.h +1 -1
- casadi/include/highs/lp_data/HighsSolve.h +3 -1
- casadi/include/highs/lp_data/HighsStatus.h +1 -1
- casadi/include/highs/mip/HighsCliqueTable.h +4 -4
- casadi/include/highs/mip/HighsConflictPool.h +1 -1
- casadi/include/highs/mip/HighsCutGeneration.h +1 -1
- casadi/include/highs/mip/HighsCutPool.h +2 -2
- casadi/include/highs/mip/HighsDebugSol.h +22 -29
- casadi/include/highs/mip/HighsDomain.h +10 -2
- casadi/include/highs/mip/HighsDomainChange.h +1 -1
- casadi/include/highs/mip/HighsDynamicRowMatrix.h +5 -3
- casadi/include/highs/mip/HighsGFkSolve.h +3 -3
- casadi/include/highs/mip/HighsImplications.h +3 -3
- casadi/include/highs/mip/HighsLpAggregator.h +1 -1
- casadi/include/highs/mip/HighsLpRelaxation.h +6 -1
- casadi/include/highs/mip/HighsMipSolver.h +4 -2
- casadi/include/highs/mip/HighsMipSolverData.h +47 -4
- casadi/include/highs/mip/HighsModkSeparator.h +2 -2
- casadi/include/highs/mip/HighsNodeQueue.h +5 -3
- casadi/include/highs/mip/HighsObjectiveFunction.h +1 -1
- casadi/include/highs/mip/HighsPathSeparator.h +2 -2
- casadi/include/highs/mip/HighsPrimalHeuristics.h +1 -1
- casadi/include/highs/mip/HighsPseudocost.h +35 -23
- casadi/include/highs/mip/HighsRedcostFixing.h +1 -1
- casadi/include/highs/mip/HighsSearch.h +2 -1
- casadi/include/highs/mip/HighsSeparation.h +1 -1
- casadi/include/highs/mip/HighsSeparator.h +1 -1
- casadi/include/highs/mip/HighsTableauSeparator.h +1 -1
- casadi/include/highs/mip/HighsTransformedLp.h +1 -1
- casadi/include/highs/model/HighsHessian.h +5 -0
- casadi/include/highs/model/HighsHessianUtils.h +2 -0
- casadi/include/highs/model/HighsModel.h +10 -1
- casadi/include/highs/parallel/HighsMutex.h +2 -1
- casadi/include/highs/parallel/HighsParallel.h +7 -2
- casadi/include/highs/parallel/HighsTask.h +1 -2
- casadi/include/highs/pdlp/CupdlpWrapper.h +93 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +41 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +423 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +183 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +19 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +31 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_scaling_cuda.h +28 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +98 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +33 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +1726 -0
- casadi/include/highs/pdqsort/pdqsort.h +532 -0
- casadi/include/highs/presolve/HPresolve.h +27 -14
- casadi/include/highs/presolve/HPresolveAnalysis.h +1 -1
- casadi/include/highs/presolve/HighsPostsolveStack.h +92 -68
- casadi/include/highs/presolve/HighsSymmetry.h +6 -5
- casadi/include/highs/presolve/ICrash.h +8 -2
- casadi/include/highs/presolve/ICrashUtil.h +1 -1
- casadi/include/highs/presolve/ICrashX.h +1 -1
- casadi/include/highs/presolve/PresolveComponent.h +1 -1
- casadi/include/highs/qpsolver/a_asm.hpp +23 -12
- casadi/include/highs/qpsolver/a_quass.hpp +8 -1
- casadi/include/highs/qpsolver/basis.hpp +150 -0
- casadi/include/highs/qpsolver/crashsolution.hpp +12 -0
- casadi/include/highs/qpsolver/dantzigpricing.hpp +72 -0
- casadi/include/highs/qpsolver/devexpricing.hpp +99 -0
- casadi/include/highs/qpsolver/eventhandler.hpp +23 -0
- casadi/include/highs/qpsolver/factor.hpp +400 -0
- casadi/include/highs/qpsolver/feasibility_bounded.hpp +105 -0
- casadi/include/highs/qpsolver/feasibility_highs.hpp +270 -0
- casadi/include/highs/qpsolver/gradient.hpp +39 -0
- casadi/include/highs/qpsolver/instance.hpp +63 -0
- casadi/include/highs/qpsolver/matrix.hpp +335 -0
- casadi/include/highs/qpsolver/pricing.hpp +15 -0
- casadi/include/highs/qpsolver/qpconst.hpp +27 -0
- casadi/include/highs/qpsolver/{vector.hpp → qpvector.hpp} +25 -25
- casadi/include/highs/qpsolver/quass.hpp +1 -1
- casadi/include/highs/qpsolver/ratiotest.hpp +19 -0
- casadi/include/highs/qpsolver/runtime.hpp +38 -0
- casadi/include/highs/qpsolver/settings.hpp +57 -0
- casadi/include/highs/qpsolver/snippets.hpp +29 -0
- casadi/include/highs/qpsolver/statistics.hpp +23 -0
- casadi/include/highs/qpsolver/steepestedgepricing.hpp +167 -0
- casadi/include/highs/simplex/HApp.h +1 -1
- casadi/include/highs/simplex/HEkk.h +52 -18
- casadi/include/highs/simplex/HEkkDual.h +1 -1
- casadi/include/highs/simplex/HEkkDualRHS.h +6 -7
- casadi/include/highs/simplex/HEkkDualRow.h +2 -2
- casadi/include/highs/simplex/HEkkPrimal.h +6 -1
- casadi/include/highs/simplex/HSimplex.h +1 -3
- casadi/include/highs/simplex/HSimplexDebug.h +1 -1
- casadi/include/highs/simplex/HSimplexNla.h +1 -1
- casadi/include/highs/simplex/HSimplexReport.h +1 -1
- casadi/include/highs/simplex/HighsSimplexAnalysis.h +228 -100
- casadi/include/highs/simplex/SimplexConst.h +1 -1
- casadi/include/highs/simplex/SimplexStruct.h +2 -2
- casadi/include/highs/simplex/SimplexTimer.h +1 -1
- casadi/include/highs/test/DevKkt.h +1 -1
- casadi/include/highs/test/KktCh2.h +1 -1
- casadi/include/highs/util/FactorTimer.h +1 -1
- casadi/include/highs/util/HFactor.h +35 -6
- casadi/include/highs/util/HFactorConst.h +1 -1
- casadi/include/highs/util/HFactorDebug.h +1 -1
- casadi/include/highs/util/HSet.h +1 -1
- casadi/include/highs/util/HVector.h +1 -1
- casadi/include/highs/util/HVectorBase.h +1 -1
- casadi/include/highs/util/HighsCDouble.h +3 -3
- casadi/include/highs/util/HighsComponent.h +1 -1
- casadi/include/highs/util/HighsDataStack.h +4 -4
- casadi/include/highs/util/HighsDisjointSets.h +1 -1
- casadi/include/highs/util/HighsHash.h +28 -21
- casadi/include/highs/util/HighsHashTree.h +63 -63
- casadi/include/highs/util/HighsInt.h +1 -1
- casadi/include/highs/util/HighsIntegers.h +8 -9
- casadi/include/highs/util/HighsLinearSumBounds.h +1 -1
- casadi/include/highs/util/HighsMatrixPic.h +1 -1
- casadi/include/highs/util/HighsMatrixSlice.h +9 -6
- casadi/include/highs/util/HighsMatrixUtils.h +1 -1
- casadi/include/highs/util/HighsMemoryAllocation.h +55 -0
- casadi/include/highs/util/HighsRandom.h +27 -15
- casadi/include/highs/util/HighsRbTree.h +2 -2
- casadi/include/highs/util/HighsSort.h +7 -7
- casadi/include/highs/util/HighsSparseMatrix.h +5 -2
- casadi/include/highs/util/HighsSparseVectorSum.h +2 -2
- casadi/include/highs/util/HighsSplay.h +1 -1
- casadi/include/highs/util/HighsTimer.h +18 -9
- casadi/include/highs/util/HighsUtils.h +15 -8
- casadi/include/highs/util/stringutil.h +9 -4
- casadi/include/highs/zstr/strict_fstream.hpp +237 -0
- casadi/include/highs/zstr/zstr.hpp +472 -0
- casadi/include/highs_export.h +43 -0
- casadi/include/licenses/daqp-external/LICENSE +21 -0
- casadi/include/licenses/{alpaqa-external/LICENSE → fatrop-external/LICENSE.txt} +2 -2
- casadi/include/licenses/fatrop-external/external/blasfeo/LICENSE.txt +26 -0
- casadi/include/licenses/fatrop-external/external/pybind11/LICENSE +29 -0
- casadi/include/licenses/fatrop-external/misc/license_header.txt +17 -0
- casadi/include/licenses/highs-external/{LICENSE → LICENSE.txt} +1 -1
- casadi/include/osqp/constants.h +2 -3
- casadi/include/osqp/version.h +9 -0
- casadi/include/sleqp/defs.h +4 -4
- casadi/include/sleqp/export.h +1 -0
- casadi/lib/cmake/tinyxml2/tinyxml2-config-version.cmake +0 -5
- casadi/lib/cmake/tinyxml2/tinyxml2-static-targets.cmake +10 -6
- casadi/lib/libtinyxml2.a +0 -0
- casadi/lib/pkgconfig/tinyxml2.pc +1 -1
- casadi/libCbc.3.10.11.dylib +0 -0
- casadi/libCbc.3.dylib +0 -0
- casadi/libCbc.dylib +0 -0
- casadi/libCbc.la +2 -2
- casadi/libCbcSolver.3.10.11.dylib +0 -0
- casadi/libCbcSolver.3.dylib +0 -0
- casadi/libCbcSolver.dylib +0 -0
- casadi/libCbcSolver.la +2 -2
- casadi/libCgl.1.10.8.dylib +0 -0
- casadi/libCgl.1.dylib +0 -0
- casadi/libCgl.dylib +0 -0
- casadi/libCgl.la +2 -2
- casadi/libClp.1.14.9.dylib +0 -0
- casadi/libClp.1.dylib +0 -0
- casadi/libClp.dylib +0 -0
- casadi/libClp.la +2 -2
- casadi/libClpSolver.1.14.9.dylib +0 -0
- casadi/libClpSolver.1.dylib +0 -0
- casadi/libClpSolver.dylib +0 -0
- casadi/libClpSolver.la +2 -2
- casadi/libCoinUtils.3.11.10.dylib +0 -0
- casadi/libCoinUtils.3.dylib +0 -0
- casadi/libCoinUtils.dylib +0 -0
- casadi/libCoinUtils.la +1 -1
- casadi/libOsi.1.13.9.dylib +0 -0
- casadi/libOsi.1.dylib +0 -0
- casadi/libOsi.dylib +0 -0
- casadi/libOsi.la +2 -2
- casadi/libOsiCbc.3.10.11.dylib +0 -0
- casadi/libOsiCbc.3.dylib +0 -0
- casadi/libOsiCbc.dylib +0 -0
- casadi/libOsiCbc.la +2 -2
- casadi/libOsiClp.1.14.9.dylib +0 -0
- casadi/libOsiClp.1.dylib +0 -0
- casadi/libOsiClp.dylib +0 -0
- casadi/libOsiClp.la +2 -2
- casadi/libOsiCommonTests.1.13.9.dylib +0 -0
- casadi/libOsiCommonTests.1.dylib +0 -0
- casadi/libOsiCommonTests.dylib +0 -0
- casadi/libOsiCommonTests.la +2 -2
- casadi/libblasfeo.dylib +0 -0
- casadi/libbonmin.4.8.9.dylib +0 -0
- casadi/libbonmin.4.dylib +0 -0
- casadi/libbonmin.dylib +0 -0
- casadi/libbonmin.la +2 -2
- casadi/libc++.1.0.dylib +0 -0
- casadi/libcasadi.3.7.dylib +0 -0
- casadi/libcasadi.dylib +0 -0
- casadi/libcasadi_conic_cbc.3.7.dylib +0 -0
- casadi/libcasadi_conic_cbc.dylib +0 -0
- casadi/libcasadi_conic_clp.3.7.dylib +0 -0
- casadi/libcasadi_conic_clp.dylib +0 -0
- casadi/libcasadi_conic_cplex.3.7.dylib +0 -0
- casadi/libcasadi_conic_cplex.dylib +0 -0
- casadi/libcasadi_conic_daqp.3.7.dylib +0 -0
- casadi/libcasadi_conic_daqp.dylib +0 -0
- casadi/libcasadi_conic_fatrop.3.7.dylib +0 -0
- casadi/libcasadi_conic_fatrop.dylib +0 -0
- casadi/libcasadi_conic_gurobi.3.7.dylib +0 -0
- casadi/libcasadi_conic_gurobi.dylib +0 -0
- casadi/libcasadi_conic_highs.3.7.dylib +0 -0
- casadi/libcasadi_conic_highs.dylib +0 -0
- casadi/libcasadi_conic_ipqp.3.7.dylib +0 -0
- casadi/libcasadi_conic_ipqp.dylib +0 -0
- casadi/libcasadi_conic_nlpsol.3.7.dylib +0 -0
- casadi/libcasadi_conic_nlpsol.dylib +0 -0
- casadi/libcasadi_conic_osqp.3.7.dylib +0 -0
- casadi/libcasadi_conic_osqp.dylib +0 -0
- casadi/libcasadi_conic_proxqp.3.7.dylib +0 -0
- casadi/libcasadi_conic_proxqp.dylib +0 -0
- casadi/libcasadi_conic_qpoases.3.7.dylib +0 -0
- casadi/libcasadi_conic_qpoases.dylib +0 -0
- casadi/libcasadi_conic_qrqp.3.7.dylib +0 -0
- casadi/libcasadi_conic_qrqp.dylib +0 -0
- casadi/libcasadi_conic_superscs.3.7.dylib +0 -0
- casadi/libcasadi_conic_superscs.dylib +0 -0
- casadi/libcasadi_importer_shell.3.7.dylib +0 -0
- casadi/libcasadi_importer_shell.dylib +0 -0
- casadi/libcasadi_integrator_collocation.3.7.dylib +0 -0
- casadi/libcasadi_integrator_collocation.dylib +0 -0
- casadi/libcasadi_integrator_cvodes.3.7.dylib +0 -0
- casadi/libcasadi_integrator_cvodes.dylib +0 -0
- casadi/libcasadi_integrator_idas.3.7.dylib +0 -0
- casadi/libcasadi_integrator_idas.dylib +0 -0
- casadi/libcasadi_integrator_rk.3.7.dylib +0 -0
- casadi/libcasadi_integrator_rk.dylib +0 -0
- casadi/libcasadi_interpolant_bspline.3.7.dylib +0 -0
- casadi/libcasadi_interpolant_bspline.dylib +0 -0
- casadi/libcasadi_interpolant_linear.3.7.dylib +0 -0
- casadi/libcasadi_interpolant_linear.dylib +0 -0
- casadi/libcasadi_linsol_csparse.3.7.dylib +0 -0
- casadi/libcasadi_linsol_csparse.dylib +0 -0
- casadi/libcasadi_linsol_csparsecholesky.3.7.dylib +0 -0
- casadi/libcasadi_linsol_csparsecholesky.dylib +0 -0
- casadi/libcasadi_linsol_lapacklu.3.7.dylib +0 -0
- casadi/libcasadi_linsol_lapacklu.dylib +0 -0
- casadi/libcasadi_linsol_lapackqr.3.7.dylib +0 -0
- casadi/libcasadi_linsol_lapackqr.dylib +0 -0
- casadi/libcasadi_linsol_ldl.3.7.dylib +0 -0
- casadi/libcasadi_linsol_ldl.dylib +0 -0
- casadi/libcasadi_linsol_lsqr.3.7.dylib +0 -0
- casadi/libcasadi_linsol_lsqr.dylib +0 -0
- casadi/libcasadi_linsol_ma27.3.7.dylib +0 -0
- casadi/libcasadi_linsol_ma27.dylib +0 -0
- casadi/libcasadi_linsol_mumps.3.7.dylib +0 -0
- casadi/libcasadi_linsol_mumps.dylib +0 -0
- casadi/libcasadi_linsol_qr.3.7.dylib +0 -0
- casadi/libcasadi_linsol_qr.dylib +0 -0
- casadi/libcasadi_linsol_symbolicqr.3.7.dylib +0 -0
- casadi/libcasadi_linsol_symbolicqr.dylib +0 -0
- casadi/libcasadi_linsol_tridiag.3.7.dylib +0 -0
- casadi/libcasadi_linsol_tridiag.dylib +0 -0
- casadi/libcasadi_nlpsol_ampl.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_ampl.dylib +0 -0
- casadi/libcasadi_nlpsol_blocksqp.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_blocksqp.dylib +0 -0
- casadi/libcasadi_nlpsol_bonmin.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_bonmin.dylib +0 -0
- casadi/libcasadi_nlpsol_fatrop.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_fatrop.dylib +0 -0
- casadi/libcasadi_nlpsol_feasiblesqpmethod.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_feasiblesqpmethod.dylib +0 -0
- casadi/libcasadi_nlpsol_ipopt.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_ipopt.dylib +0 -0
- casadi/libcasadi_nlpsol_knitro.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_knitro.dylib +0 -0
- casadi/libcasadi_nlpsol_madnlp.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_madnlp.dylib +0 -0
- casadi/libcasadi_nlpsol_qrsqp.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_qrsqp.dylib +0 -0
- casadi/libcasadi_nlpsol_scpgen.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_scpgen.dylib +0 -0
- casadi/libcasadi_nlpsol_sleqp.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_sleqp.dylib +0 -0
- casadi/libcasadi_nlpsol_snopt.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_snopt.dylib +0 -0
- casadi/libcasadi_nlpsol_sqpmethod.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_sqpmethod.dylib +0 -0
- casadi/libcasadi_rootfinder_fast_newton.3.7.dylib +0 -0
- casadi/libcasadi_rootfinder_fast_newton.dylib +0 -0
- casadi/libcasadi_rootfinder_kinsol.3.7.dylib +0 -0
- casadi/libcasadi_rootfinder_kinsol.dylib +0 -0
- casadi/libcasadi_rootfinder_newton.3.7.dylib +0 -0
- casadi/libcasadi_rootfinder_newton.dylib +0 -0
- casadi/libcasadi_rootfinder_nlpsol.3.7.dylib +0 -0
- casadi/libcasadi_rootfinder_nlpsol.dylib +0 -0
- casadi/libcasadi_sundials_common.3.7.dylib +0 -0
- casadi/libcasadi_sundials_common.dylib +0 -0
- casadi/libcasadi_xmlfile_tinyxml.3.7.dylib +0 -0
- casadi/libcasadi_xmlfile_tinyxml.dylib +0 -0
- casadi/libcoinmetis.2.dylib +0 -0
- casadi/libcoinmetis.dylib +0 -0
- casadi/libcoinmetis.la +1 -1
- casadi/libcoinmumps.3.dylib +0 -0
- casadi/libcoinmumps.dylib +0 -0
- casadi/libcoinmumps.la +2 -2
- casadi/libcplex_adaptor.dylib +0 -0
- casadi/{libamd.3.0.3.dylib → libdaqp.dylib} +0 -0
- casadi/libdaqpstat.a +0 -0
- casadi/libfatrop.dylib +0 -0
- casadi/libgcc_s.1.1.dylib +0 -0
- casadi/libgfortran.5.dylib +0 -0
- casadi/libgurobi_adaptor.dylib +0 -0
- casadi/libhighs.1.7.dylib +0 -0
- casadi/libhighs.1.dylib +0 -0
- casadi/libhighs.dylib +0 -0
- casadi/libindirect.a +0 -0
- casadi/libipopt.3.dylib +0 -0
- casadi/libipopt.dylib +0 -0
- casadi/libipopt.la +2 -2
- casadi/liblinsys.a +0 -0
- casadi/{libsuitesparseconfig.7.0.1.dylib → libmatlab_ipc.dylib} +0 -0
- casadi/libosqp.a +0 -0
- casadi/libosqp.dylib +0 -0
- casadi/libqdldl.a +0 -0
- casadi/libqdldl.dylib +0 -0
- casadi/libquadmath.0.dylib +0 -0
- casadi/libsipopt.3.dylib +0 -0
- casadi/libsipopt.dylib +0 -0
- casadi/libsipopt.la +2 -2
- casadi/libsleqp.1.0.1.dylib +0 -0
- casadi/libsleqp.dylib +0 -0
- casadi/libsuperscs.a +0 -0
- casadi/libtrlib.0.4.dylib +0 -0
- casadi/libtrlib.dylib +0 -0
- casadi/libz.1.2.13.dylib +0 -0
- casadi/pkgconfig/bonmin.pc +1 -1
- casadi/pkgconfig/casadi.pc +5 -5
- casadi/pkgconfig/cbc.pc +1 -1
- casadi/pkgconfig/cgl.pc +1 -1
- casadi/pkgconfig/clp.pc +1 -1
- casadi/pkgconfig/coinmetis.pc +1 -1
- casadi/pkgconfig/coinmumps.pc +2 -2
- casadi/pkgconfig/coinutils.pc +2 -2
- casadi/pkgconfig/highs.pc +4 -4
- casadi/pkgconfig/ipopt.pc +2 -2
- 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 +1 -1
- casadi/tools/__init__.py +4 -0
- casadi/tools/bounds.py +3 -3
- {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/METADATA +2 -2
- {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/RECORD +532 -477
- casadi/cmake/alpaqa/alpaqaConfig.cmake +0 -24
- casadi/cmake/alpaqa/alpaqaConfigVersion.cmake +0 -70
- casadi/cmake/alpaqa/alpaqaTargets-release.cmake +0 -19
- casadi/cmake/alpaqa/alpaqaTargets.cmake +0 -116
- casadi/include/alpaqa/accelerators/anderson.hpp +0 -133
- casadi/include/alpaqa/accelerators/internal/anderson-helpers.hpp +0 -92
- casadi/include/alpaqa/accelerators/internal/limited-memory-qr.hpp +0 -295
- casadi/include/alpaqa/accelerators/lbfgs.hpp +0 -244
- casadi/include/alpaqa/accelerators/steihaugcg.hpp +0 -143
- casadi/include/alpaqa/alpaqa.hpp +0 -3
- casadi/include/alpaqa/casadi/CasADiControlProblem.hpp +0 -185
- casadi/include/alpaqa/casadi/CasADiFunctionWrapper.hpp +0 -104
- casadi/include/alpaqa/casadi/CasADiProblem.hpp +0 -102
- casadi/include/alpaqa/casadi-loader-export.hpp +0 -15
- casadi/include/alpaqa/casadi-ocp-loader-export.hpp +0 -15
- casadi/include/alpaqa/config/config.hpp +0 -165
- casadi/include/alpaqa/dl/dl-problem.h +0 -476
- casadi/include/alpaqa/dl/dl-problem.hpp +0 -301
- casadi/include/alpaqa/export.h +0 -42
- casadi/include/alpaqa/export.hpp +0 -30
- casadi/include/alpaqa/implementation/accelerators/lbfgs.tpp +0 -240
- casadi/include/alpaqa/implementation/casadi/CasADiControlProblem.tpp +0 -594
- casadi/include/alpaqa/implementation/casadi/CasADiLoader-util.hpp +0 -50
- casadi/include/alpaqa/implementation/casadi/CasADiProblem.tpp +0 -425
- casadi/include/alpaqa/implementation/inner/directions/panoc/structured-lbfgs.tpp +0 -164
- casadi/include/alpaqa/implementation/inner/panoc-helpers.tpp +0 -389
- casadi/include/alpaqa/implementation/inner/panoc-ocp.tpp +0 -798
- casadi/include/alpaqa/implementation/inner/panoc.tpp +0 -448
- casadi/include/alpaqa/implementation/inner/pantr.tpp +0 -474
- casadi/include/alpaqa/implementation/inner/zerofpr.tpp +0 -482
- casadi/include/alpaqa/implementation/outer/alm.tpp +0 -228
- casadi/include/alpaqa/implementation/outer/internal/alm-helpers.tpp +0 -80
- casadi/include/alpaqa/implementation/params/params.tpp +0 -158
- casadi/include/alpaqa/implementation/problem/ocproblem.tpp +0 -56
- casadi/include/alpaqa/implementation/problem/type-erased-problem.tpp +0 -211
- casadi/include/alpaqa/implementation/util/io/csv.tpp +0 -120
- casadi/include/alpaqa/implementation/util/print.tpp +0 -151
- casadi/include/alpaqa/inner/directions/panoc/anderson.hpp +0 -98
- casadi/include/alpaqa/inner/directions/panoc/lbfgs.hpp +0 -94
- casadi/include/alpaqa/inner/directions/panoc/structured-lbfgs.hpp +0 -146
- casadi/include/alpaqa/inner/directions/panoc/structured-newton.hpp +0 -264
- casadi/include/alpaqa/inner/directions/panoc-direction-update.hpp +0 -96
- casadi/include/alpaqa/inner/directions/panoc-ocp/lqr.hpp +0 -181
- casadi/include/alpaqa/inner/directions/panoc-ocp/ocp-vars.hpp +0 -492
- casadi/include/alpaqa/inner/directions/pantr/newton-tr.hpp +0 -192
- casadi/include/alpaqa/inner/directions/pantr/pantr-direction.hpp +0 -99
- casadi/include/alpaqa/inner/inner-solve-options.hpp +0 -30
- casadi/include/alpaqa/inner/internal/lipschitz.hpp +0 -27
- casadi/include/alpaqa/inner/internal/panoc-helpers.hpp +0 -10
- casadi/include/alpaqa/inner/internal/panoc-stop-crit.hpp +0 -124
- casadi/include/alpaqa/inner/internal/solverstatus.hpp +0 -42
- casadi/include/alpaqa/inner/panoc-ocp.hpp +0 -302
- casadi/include/alpaqa/inner/panoc.hpp +0 -274
- casadi/include/alpaqa/inner/pantr.hpp +0 -284
- casadi/include/alpaqa/inner/zerofpr.hpp +0 -274
- casadi/include/alpaqa/ipopt/ipopt-adapter.hpp +0 -81
- casadi/include/alpaqa/ipopt/ipopt-enums.hpp +0 -35
- casadi/include/alpaqa/lbfgsb/lbfgsb-adapter.hpp +0 -111
- casadi/include/alpaqa/newton-tr-pantr-alm.hpp +0 -27
- casadi/include/alpaqa/outer/alm.hpp +0 -190
- casadi/include/alpaqa/outer/internal/alm-helpers.hpp +0 -10
- casadi/include/alpaqa/panoc-alm.hpp +0 -27
- casadi/include/alpaqa/panoc-anderson-alm.hpp +0 -27
- casadi/include/alpaqa/params/params.hpp +0 -60
- casadi/include/alpaqa/problem/box-constr-problem.hpp +0 -220
- casadi/include/alpaqa/problem/box.hpp +0 -82
- casadi/include/alpaqa/problem/functional-problem.hpp +0 -73
- casadi/include/alpaqa/problem/kkt-error.hpp +0 -43
- casadi/include/alpaqa/problem/ocproblem-counters.hpp +0 -116
- casadi/include/alpaqa/problem/ocproblem.hpp +0 -662
- casadi/include/alpaqa/problem/problem-counters.hpp +0 -116
- casadi/include/alpaqa/problem/problem-with-counters.hpp +0 -141
- casadi/include/alpaqa/problem/type-erased-problem.hpp +0 -874
- casadi/include/alpaqa/problem/unconstr-problem.hpp +0 -37
- casadi/include/alpaqa/structured-panoc-alm.hpp +0 -27
- casadi/include/alpaqa/structured-zerofpr-alm.hpp +0 -27
- casadi/include/alpaqa/util/alloc-check.hpp +0 -23
- casadi/include/alpaqa/util/atomic-stop-signal.hpp +0 -24
- casadi/include/alpaqa/util/check-dim.hpp +0 -64
- casadi/include/alpaqa/util/copyable_unique_ptr.hpp +0 -32
- casadi/include/alpaqa/util/demangled-typename.hpp +0 -9
- casadi/include/alpaqa/util/enumerate.hpp +0 -70
- casadi/include/alpaqa/util/float.hpp +0 -25
- casadi/include/alpaqa/util/index-set.hpp +0 -97
- casadi/include/alpaqa/util/io/csv.hpp +0 -43
- casadi/include/alpaqa/util/iter-adapter.hpp +0 -68
- casadi/include/alpaqa/util/max-history.hpp +0 -47
- casadi/include/alpaqa/util/noop-delete.hpp +0 -15
- casadi/include/alpaqa/util/not-implemented.hpp +0 -12
- casadi/include/alpaqa/util/print.hpp +0 -78
- casadi/include/alpaqa/util/quadmath/quadmath-print.hpp +0 -20
- casadi/include/alpaqa/util/quadmath/quadmath.hpp +0 -137
- casadi/include/alpaqa/util/required-method.hpp +0 -29
- casadi/include/alpaqa/util/ringbuffer.hpp +0 -212
- casadi/include/alpaqa/util/set-intersection.hpp +0 -129
- casadi/include/alpaqa/util/sparse-ops.hpp +0 -164
- casadi/include/alpaqa/util/timed.hpp +0 -22
- casadi/include/alpaqa/util/type-erasure.hpp +0 -568
- casadi/include/alpaqa/util/type-traits.hpp +0 -58
- casadi/include/alpaqa/zerofpr-alm.hpp +0 -27
- casadi/include/alpaqa/zerofpr-anderson-alm.hpp +0 -27
- casadi/include/alpaqa-version.h +0 -8
- casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
- casadi/include/licenses/alpaqa-external/src/thirdparty/lbfgsb/Lbfgsb.3.0/License.txt +0 -71
- casadi/libFortranHighs.dylib +0 -0
- casadi/libalpaqa.1.0.0.dylib +0 -0
- casadi/libalpaqa.dylib +0 -0
- casadi/libcamd.3.0.3.dylib +0 -0
- casadi/libcasadi_nlpsol_alpaqa.3.7.dylib +0 -0
- casadi/libcasadi_nlpsol_alpaqa.dylib +0 -0
- casadi/libccolamd.3.0.3.dylib +0 -0
- casadi/libcholmod.4.0.3.dylib +0 -0
- casadi/libcholmod_cuda.4.0.3.dylib +0 -0
- casadi/libcolamd.3.0.3.dylib +0 -0
- casadi/libhighs.1.6.0.dylib +0 -0
- casadi/libhighs.1.6.dylib +0 -0
- casadi/libumfpack.6.1.0.dylib +0 -0
- {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/WHEEL +0 -0
@@ -1,389 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
#include <alpaqa/config/config.hpp>
|
4
|
-
#include <alpaqa/export.hpp>
|
5
|
-
#include <alpaqa/inner/inner-solve-options.hpp>
|
6
|
-
#include <alpaqa/inner/internal/panoc-stop-crit.hpp>
|
7
|
-
#include <alpaqa/inner/internal/solverstatus.hpp>
|
8
|
-
#include <alpaqa/problem/type-erased-problem.hpp>
|
9
|
-
#include <alpaqa/util/atomic-stop-signal.hpp>
|
10
|
-
#include <alpaqa/util/not-implemented.hpp>
|
11
|
-
|
12
|
-
#include <stdexcept>
|
13
|
-
|
14
|
-
namespace alpaqa::detail {
|
15
|
-
|
16
|
-
template <Config Conf>
|
17
|
-
struct PANOCHelpers {
|
18
|
-
USING_ALPAQA_CONFIG(Conf);
|
19
|
-
using Problem = alpaqa::TypeErasedProblem<config_t>;
|
20
|
-
using Box = alpaqa::Box<config_t>;
|
21
|
-
|
22
|
-
/// Calculate the error between ẑ and g(x).
|
23
|
-
/// @f[ \hat{z}^k = \Pi_D\left(g(x^k) + \Sigma^{-1}y\right) @f]
|
24
|
-
static void calc_err_z(const Problem &p, ///< [in] Problem description
|
25
|
-
crvec x̂, ///< [in] Decision variable @f$ \hat{x} @f$
|
26
|
-
crvec y, ///< [in] Lagrange multipliers @f$ y @f$
|
27
|
-
crvec Σ, ///< [in] Penalty weights @f$ \Sigma @f$
|
28
|
-
rvec err_z ///< [out] @f$ g(\hat{x}) - \hat{z} @f$
|
29
|
-
) {
|
30
|
-
if (p.get_m() == 0) /* [[unlikely]] */
|
31
|
-
return;
|
32
|
-
|
33
|
-
// g(x̂)
|
34
|
-
p.eval_g(x̂, err_z);
|
35
|
-
// ζ = g(x̂) + Σ⁻¹y
|
36
|
-
err_z += Σ.asDiagonal().inverse() * y;
|
37
|
-
// ẑ = Π(ζ, D)
|
38
|
-
p.eval_proj_diff_g(err_z, err_z);
|
39
|
-
// g(x) - ẑ
|
40
|
-
err_z -= Σ.asDiagonal().inverse() * y;
|
41
|
-
// TODO: catastrophic cancellation?
|
42
|
-
}
|
43
|
-
|
44
|
-
static bool stop_crit_requires_grad_ψx̂(PANOCStopCrit crit) {
|
45
|
-
switch (crit) {
|
46
|
-
case PANOCStopCrit::ApproxKKT: [[fallthrough]];
|
47
|
-
case PANOCStopCrit::ApproxKKT2: return true;
|
48
|
-
case PANOCStopCrit::ProjGradNorm: [[fallthrough]];
|
49
|
-
case PANOCStopCrit::ProjGradNorm2: [[fallthrough]];
|
50
|
-
case PANOCStopCrit::ProjGradUnitNorm: [[fallthrough]];
|
51
|
-
case PANOCStopCrit::ProjGradUnitNorm2: [[fallthrough]];
|
52
|
-
case PANOCStopCrit::FPRNorm: [[fallthrough]];
|
53
|
-
case PANOCStopCrit::FPRNorm2: return false;
|
54
|
-
case PANOCStopCrit::Ipopt: return true;
|
55
|
-
case PANOCStopCrit::LBFGSBpp: return false;
|
56
|
-
default:;
|
57
|
-
}
|
58
|
-
throw std::out_of_range("Invalid PANOCStopCrit");
|
59
|
-
}
|
60
|
-
|
61
|
-
/// Compute the ε from the stopping criterion, see @ref PANOCStopCrit.
|
62
|
-
static real_t calc_error_stop_crit(
|
63
|
-
const Problem &problem, ///< [in] Problem description
|
64
|
-
PANOCStopCrit crit, ///< [in] What stoppint criterion to use
|
65
|
-
crvec pₖ, ///< [in] Projected gradient step @f$ \hat x^k - x^k @f$
|
66
|
-
real_t γ, ///< [in] Step size
|
67
|
-
crvec xₖ, ///< [in] Current iterate
|
68
|
-
crvec x̂ₖ, ///< [in] Current iterate after projected gradient step
|
69
|
-
crvec ŷₖ, ///< [in] Candidate Lagrange multipliers
|
70
|
-
crvec grad_ψₖ, ///< [in] Gradient in @f$ x^k @f$
|
71
|
-
crvec grad_̂ψₖ, ///< [in] Gradient in @f$ \hat x^k @f$
|
72
|
-
rvec work_n1, ///< Workspace of dimension n
|
73
|
-
rvec work_n2 ///< Workspace of dimension n
|
74
|
-
) {
|
75
|
-
switch (crit) {
|
76
|
-
case PANOCStopCrit::ApproxKKT: {
|
77
|
-
auto err = (1 / γ) * pₖ + (grad_ψₖ - grad_̂ψₖ);
|
78
|
-
// These parentheses ^^^ ^^^ are important
|
79
|
-
// to prevent catastrophic cancellation when the step is small
|
80
|
-
return vec_util::norm_inf(err);
|
81
|
-
}
|
82
|
-
case PANOCStopCrit::ApproxKKT2: {
|
83
|
-
auto err = (1 / γ) * pₖ + (grad_ψₖ - grad_̂ψₖ);
|
84
|
-
// These parentheses ^^^ ^^^ are important
|
85
|
-
// to prevent catastrophic cancellation when the step is small
|
86
|
-
return err.norm();
|
87
|
-
}
|
88
|
-
case PANOCStopCrit::ProjGradNorm: {
|
89
|
-
return vec_util::norm_inf(pₖ);
|
90
|
-
}
|
91
|
-
case PANOCStopCrit::ProjGradNorm2: {
|
92
|
-
return pₖ.norm();
|
93
|
-
}
|
94
|
-
case PANOCStopCrit::ProjGradUnitNorm: {
|
95
|
-
problem.eval_prox_grad_step(real_t(1), xₖ, grad_ψₖ, work_n1,
|
96
|
-
work_n2);
|
97
|
-
return vec_util::norm_inf(work_n2);
|
98
|
-
}
|
99
|
-
case PANOCStopCrit::ProjGradUnitNorm2: {
|
100
|
-
problem.eval_prox_grad_step(real_t(1), xₖ, grad_ψₖ, work_n1,
|
101
|
-
work_n2);
|
102
|
-
return work_n2.norm();
|
103
|
-
}
|
104
|
-
case PANOCStopCrit::FPRNorm: {
|
105
|
-
return vec_util::norm_inf(pₖ) / γ;
|
106
|
-
}
|
107
|
-
case PANOCStopCrit::FPRNorm2: {
|
108
|
-
return pₖ.norm() / γ;
|
109
|
-
}
|
110
|
-
case PANOCStopCrit::Ipopt: {
|
111
|
-
// work_n2 ← x̂ₖ - Π_C(x̂ₖ - ∇ψ(x̂ₖ))
|
112
|
-
problem.eval_prox_grad_step(real_t(1), x̂ₖ, grad_̂ψₖ, work_n1,
|
113
|
-
work_n2);
|
114
|
-
auto err = vec_util::norm_inf(work_n2);
|
115
|
-
auto n = 2 * (ŷₖ.size() + x̂ₖ.size());
|
116
|
-
if (n == 0)
|
117
|
-
return err;
|
118
|
-
// work_n2 ← x̂ₖ - ∇ψ(x̂ₖ) - Π_C(x̂ₖ - ∇ψ(x̂ₖ))
|
119
|
-
work_n2 -= grad_̂ψₖ;
|
120
|
-
auto C_lagr_mult = vec_util::norm_1(work_n2);
|
121
|
-
auto D_lagr_mult = vec_util::norm_1(ŷₖ);
|
122
|
-
const real_t s_max = 100;
|
123
|
-
const real_t s_n = static_cast<real_t>(n);
|
124
|
-
real_t s_d =
|
125
|
-
std::max(s_max, (C_lagr_mult + D_lagr_mult) / s_n) / s_max;
|
126
|
-
return err / s_d;
|
127
|
-
}
|
128
|
-
case PANOCStopCrit::LBFGSBpp: {
|
129
|
-
problem.eval_prox_grad_step(real_t(1), xₖ, grad_ψₖ, work_n1,
|
130
|
-
work_n2);
|
131
|
-
return vec_util::norm_inf(work_n2) /
|
132
|
-
std::fmax(real_t(1), xₖ.norm());
|
133
|
-
}
|
134
|
-
default:;
|
135
|
-
}
|
136
|
-
throw std::out_of_range("Invalid PANOCStopCrit");
|
137
|
-
}
|
138
|
-
|
139
|
-
/// Increase the estimate of the Lipschitz constant of the objective gradient
|
140
|
-
/// and decrease the step size until quadratic upper bound or descent lemma is
|
141
|
-
/// satisfied:
|
142
|
-
/// @f[ \psi(x + p) \le \psi(x) + \nabla\psi(x)^\top p + \frac{L}{2} \|p\|^2 @f]
|
143
|
-
/// The projected gradient iterate @f$ \hat x^k @f$ and step @f$ p^k @f$ are
|
144
|
-
/// updated with the new step size @f$ \gamma^k @f$, and so are other quantities
|
145
|
-
/// that depend on them, such as @f$ \nabla\psi(x^k)^\top p^k @f$ and
|
146
|
-
/// @f$ \|p\|^2 @f$. The intermediate vector @f$ \hat y(x^k) @f$ can be used to
|
147
|
-
/// compute the gradient @f$ \nabla\psi(\hat x^k) @f$ or to update the Lagrange
|
148
|
-
/// multipliers.
|
149
|
-
///
|
150
|
-
/// @return The original step size, before it was reduced by this function.
|
151
|
-
static real_t descent_lemma(
|
152
|
-
/// [in] Problem description
|
153
|
-
const Problem &problem,
|
154
|
-
/// [in] Tolerance used to ignore rounding errors when the function
|
155
|
-
/// @f$ \psi(x) @f$ is relatively flat or the step size is very
|
156
|
-
/// small, which could cause @f$ \psi(x^k) < \psi(\hat x^k) @f$,
|
157
|
-
/// which is mathematically impossible but could occur in finite
|
158
|
-
/// precision floating point arithmetic.
|
159
|
-
real_t rounding_tolerance,
|
160
|
-
/// [in] Maximum allowed Lipschitz constant estimate (prevents infinite
|
161
|
-
/// loop if function or derivatives are discontinuous, and keeps
|
162
|
-
/// step size bounded away from zero).
|
163
|
-
real_t L_max,
|
164
|
-
/// [in] Current iterate @f$ x^k @f$
|
165
|
-
crvec xₖ,
|
166
|
-
/// [in] Objective function @f$ \psi(x^k) @f$
|
167
|
-
real_t ψₖ,
|
168
|
-
/// [in] Gradient of objective @f$ \nabla\psi(x^k) @f$
|
169
|
-
crvec grad_ψₖ,
|
170
|
-
/// [in] Lagrange multipliers @f$ y @f$
|
171
|
-
crvec y,
|
172
|
-
/// [in] Penalty weights @f$ \Sigma @f$
|
173
|
-
crvec Σ,
|
174
|
-
/// [out] Projected gradient iterate @f$ \hat x^k @f$
|
175
|
-
rvec x̂ₖ,
|
176
|
-
/// [out] Projected gradient step @f$ p^k @f$
|
177
|
-
rvec pₖ,
|
178
|
-
/// [out] Intermediate vector @f$ \hat y(\hat x^k) @f$
|
179
|
-
rvec ŷx̂ₖ,
|
180
|
-
/// [inout] Objective function @f$ \psi(\hat x^k) @f$
|
181
|
-
real_t &ψx̂ₖ,
|
182
|
-
/// [inout] Squared norm of the step @f$ \left\| p^k \right\|^2 @f$
|
183
|
-
real_t &norm_sq_pₖ,
|
184
|
-
/// [inout] Gradient of objective times step @f$ \nabla\psi(x^k)^\top p^k@f$
|
185
|
-
real_t &grad_ψₖᵀpₖ,
|
186
|
-
/// [inout] Lipschitz constant estimate @f$ L_{\nabla\psi}^k @f$
|
187
|
-
real_t &Lₖ,
|
188
|
-
/// [inout] Step size @f$ \gamma^k @f$
|
189
|
-
real_t &γₖ) {
|
190
|
-
|
191
|
-
real_t old_γₖ = γₖ;
|
192
|
-
real_t margin = (1 + std::abs(ψₖ)) * rounding_tolerance;
|
193
|
-
while (ψx̂ₖ - ψₖ > grad_ψₖᵀpₖ + real_t(0.5) * Lₖ * norm_sq_pₖ + margin) {
|
194
|
-
if (not(Lₖ * 2 <= L_max))
|
195
|
-
break;
|
196
|
-
|
197
|
-
Lₖ *= 2;
|
198
|
-
γₖ /= 2;
|
199
|
-
|
200
|
-
// Calculate x̂ₖ and pₖ (with new step size)
|
201
|
-
problem.eval_prox_grad_step(γₖ, xₖ, grad_ψₖ, /* in ⟹ out */ x̂ₖ, pₖ);
|
202
|
-
// Calculate ∇ψ(xₖ)ᵀpₖ and ‖pₖ‖²
|
203
|
-
grad_ψₖᵀpₖ = grad_ψₖ.dot(pₖ);
|
204
|
-
norm_sq_pₖ = pₖ.squaredNorm();
|
205
|
-
|
206
|
-
// Calculate ψ(x̂ₖ) and ŷ(x̂ₖ)
|
207
|
-
ψx̂ₖ = problem.eval_ψ(x̂ₖ, y, Σ, /* in ⟹ out */ ŷx̂ₖ);
|
208
|
-
}
|
209
|
-
return old_γₖ;
|
210
|
-
}
|
211
|
-
|
212
|
-
/// Check all stop conditions (required tolerance reached, out of time,
|
213
|
-
/// maximum number of iterations exceeded, interrupted by user,
|
214
|
-
/// infinite iterate, no progress made)
|
215
|
-
template <class ParamsT, class DurationT>
|
216
|
-
static SolverStatus check_all_stop_conditions(
|
217
|
-
/// [in] Parameters including `max_iter`, `max_time` and `max_no_progress`
|
218
|
-
const ParamsT ¶ms,
|
219
|
-
/// [in] Options for the current solve
|
220
|
-
const InnerSolveOptions<config_t> &opts,
|
221
|
-
/// [in] Time elapsed since the start of the algorithm
|
222
|
-
DurationT time_elapsed,
|
223
|
-
/// [in] The current iteration number
|
224
|
-
unsigned iteration,
|
225
|
-
/// [in] A stop signal for the user to interrupt the algorithm
|
226
|
-
const AtomicStopSignal &stop_signal,
|
227
|
-
/// [in] Tolerance of the current iterate
|
228
|
-
real_t εₖ,
|
229
|
-
/// [in] The number of successive iterations no progress was made
|
230
|
-
unsigned no_progress) {
|
231
|
-
|
232
|
-
auto max_time = params.max_time;
|
233
|
-
if (opts.max_time)
|
234
|
-
max_time = std::min(max_time, *opts.max_time);
|
235
|
-
auto tolerance = opts.tolerance > 0 ? opts.tolerance : real_t(1e-8);
|
236
|
-
bool out_of_time = time_elapsed > max_time;
|
237
|
-
bool out_of_iter = iteration == params.max_iter;
|
238
|
-
bool interrupted = stop_signal.stop_requested();
|
239
|
-
bool not_finite = not std::isfinite(εₖ);
|
240
|
-
bool converged = εₖ <= tolerance;
|
241
|
-
bool max_no_progress = no_progress > params.max_no_progress;
|
242
|
-
return converged ? SolverStatus::Converged
|
243
|
-
: out_of_time ? SolverStatus::MaxTime
|
244
|
-
: out_of_iter ? SolverStatus::MaxIter
|
245
|
-
: not_finite ? SolverStatus::NotFinite
|
246
|
-
: max_no_progress ? SolverStatus::NoProgress
|
247
|
-
: interrupted ? SolverStatus::Interrupted
|
248
|
-
: SolverStatus::Busy;
|
249
|
-
}
|
250
|
-
|
251
|
-
/// Compute the Hessian matrix of the augmented Lagrangian function multiplied
|
252
|
-
/// by the given vector, using finite differences.
|
253
|
-
/// @f[ \nabla^2_{xx} L_\Sigma(x, y)\, v \approx
|
254
|
-
/// \frac{\nabla_x L_\Sigma(x+hv, y) - \nabla_x L_\Sigma(x, y)}{h} @f]
|
255
|
-
static void calc_augmented_lagrangian_hessian_prod_fd(
|
256
|
-
/// [in] Problem description
|
257
|
-
const Problem &problem,
|
258
|
-
/// [in] Current iterate @f$ x^k @f$
|
259
|
-
crvec xₖ,
|
260
|
-
/// [in] Lagrange multipliers @f$ y @f$
|
261
|
-
crvec y,
|
262
|
-
/// [in] Penalty weights @f$ \Sigma @f$
|
263
|
-
crvec Σ,
|
264
|
-
/// [in] Gradient @f$ \nabla \psi(x^k) @f$
|
265
|
-
crvec grad_ψ,
|
266
|
-
/// [in] Vector to multiply with the Hessian
|
267
|
-
crvec v,
|
268
|
-
/// [out] Hessian-vector product
|
269
|
-
rvec Hv,
|
270
|
-
/// Dimension n
|
271
|
-
rvec work_n1,
|
272
|
-
/// Dimension n
|
273
|
-
rvec work_n2,
|
274
|
-
/// Dimension m
|
275
|
-
rvec work_m) {
|
276
|
-
|
277
|
-
real_t cbrt_ε = std::cbrt(std::numeric_limits<real_t>::epsilon());
|
278
|
-
real_t h = cbrt_ε * (1 + xₖ.norm());
|
279
|
-
rvec xₖh = work_n1;
|
280
|
-
xₖh = xₖ + h * v;
|
281
|
-
problem.eval_grad_ψ(xₖh, y, Σ, Hv, work_n2, work_m);
|
282
|
-
Hv -= grad_ψ;
|
283
|
-
Hv /= h;
|
284
|
-
}
|
285
|
-
|
286
|
-
/// Estimate the Lipschitz constant of the gradient @f$ \nabla \psi @f$ using
|
287
|
-
/// finite differences.
|
288
|
-
static real_t initial_lipschitz_estimate(
|
289
|
-
/// [in] Problem description
|
290
|
-
const Problem &problem,
|
291
|
-
/// [in] Current iterate @f$ x^k @f$
|
292
|
-
crvec x,
|
293
|
-
/// [in] Lagrange multipliers @f$ y @f$
|
294
|
-
crvec y,
|
295
|
-
/// [in] Penalty weights @f$ \Sigma @f$
|
296
|
-
crvec Σ,
|
297
|
-
/// [in] Finite difference step size relative to x
|
298
|
-
real_t ε,
|
299
|
-
/// [in] Minimum absolute finite difference step size
|
300
|
-
real_t δ,
|
301
|
-
/// [in] Minimum allowed Lipschitz estimate.
|
302
|
-
real_t L_min,
|
303
|
-
/// [in] Maximum allowed Lipschitz estimate.
|
304
|
-
real_t L_max,
|
305
|
-
/// [out] @f$ \psi(x^k) @f$
|
306
|
-
real_t &ψ,
|
307
|
-
/// [out] Gradient @f$ \nabla \psi(x^k) @f$
|
308
|
-
rvec grad_ψ,
|
309
|
-
/// Dimension n
|
310
|
-
rvec work_x,
|
311
|
-
/// Dimension n
|
312
|
-
rvec work_grad_ψ,
|
313
|
-
/// Dimension n
|
314
|
-
rvec work_n,
|
315
|
-
/// Dimension m
|
316
|
-
rvec work_m) {
|
317
|
-
|
318
|
-
// Calculate ψ(x₀), ∇ψ(x₀)
|
319
|
-
ψ = problem.eval_ψ_grad_ψ(x, y, Σ, /* in ⟹ out */ grad_ψ, work_n,
|
320
|
-
work_m);
|
321
|
-
// Select a small step h for finite differences
|
322
|
-
auto h = grad_ψ.unaryExpr([&](real_t g) {
|
323
|
-
return g > 0 ? std::max(g * ε, δ) : std::min(g * ε, -δ);
|
324
|
-
});
|
325
|
-
work_x = x - h;
|
326
|
-
real_t norm_h = h.norm();
|
327
|
-
// Calculate ∇ψ(x₀ - h)
|
328
|
-
problem.eval_grad_ψ(work_x, y, Σ, /* in ⟹ out */ work_grad_ψ, work_n,
|
329
|
-
work_m);
|
330
|
-
|
331
|
-
// Estimate Lipschitz constant using finite differences
|
332
|
-
real_t L = (work_grad_ψ - grad_ψ).norm() / norm_h;
|
333
|
-
return std::clamp(L, L_min, L_max);
|
334
|
-
}
|
335
|
-
|
336
|
-
/// Estimate the Lipschitz constant of the gradient @f$ \nabla \psi @f$ using
|
337
|
-
/// finite differences.
|
338
|
-
static real_t initial_lipschitz_estimate(
|
339
|
-
/// [in] Problem description
|
340
|
-
const Problem &problem,
|
341
|
-
/// [in] Current iterate @f$ x^k @f$
|
342
|
-
crvec xₖ,
|
343
|
-
/// [in] Lagrange multipliers @f$ y @f$
|
344
|
-
crvec y,
|
345
|
-
/// [in] Penalty weights @f$ \Sigma @f$
|
346
|
-
crvec Σ,
|
347
|
-
/// [in] Finite difference step size relative to xₖ
|
348
|
-
real_t ε,
|
349
|
-
/// [in] Minimum absolute finite difference step size
|
350
|
-
real_t δ,
|
351
|
-
/// [in] Minimum allowed Lipschitz estimate.
|
352
|
-
real_t L_min,
|
353
|
-
/// [in] Maximum allowed Lipschitz estimate.
|
354
|
-
real_t L_max,
|
355
|
-
/// [out] Gradient @f$ \nabla \psi(x^k) @f$
|
356
|
-
rvec grad_ψ,
|
357
|
-
/// Dimension n
|
358
|
-
rvec work_n1,
|
359
|
-
/// Dimension n
|
360
|
-
rvec work_n2,
|
361
|
-
/// Dimension n
|
362
|
-
rvec work_n3,
|
363
|
-
/// Dimension m
|
364
|
-
rvec work_m) {
|
365
|
-
|
366
|
-
auto h = (xₖ * ε).cwiseAbs().cwiseMax(δ);
|
367
|
-
work_n1 = xₖ + h;
|
368
|
-
real_t norm_h = h.norm();
|
369
|
-
// Calculate ∇ψ(x_0 + h)
|
370
|
-
problem.eval_grad_ψ(work_n1, y, Σ, /* in ⟹ out */ work_n2, work_n3,
|
371
|
-
work_m);
|
372
|
-
// Calculate ∇ψ(x_0)
|
373
|
-
problem.eval_grad_ψ(xₖ, y, Σ, /* in ⟹ out */ grad_ψ, work_n1, work_m);
|
374
|
-
|
375
|
-
// Estimate Lipschitz constant using finite differences
|
376
|
-
real_t L = (work_n2 - grad_ψ).norm() / norm_h;
|
377
|
-
return std::clamp(L, L_min, L_max);
|
378
|
-
}
|
379
|
-
};
|
380
|
-
|
381
|
-
ALPAQA_EXPORT_EXTERN_TEMPLATE(struct, PANOCHelpers, DefaultConfig);
|
382
|
-
ALPAQA_EXPORT_EXTERN_TEMPLATE(struct, PANOCHelpers, EigenConfigf);
|
383
|
-
ALPAQA_EXPORT_EXTERN_TEMPLATE(struct, PANOCHelpers, EigenConfigd);
|
384
|
-
ALPAQA_EXPORT_EXTERN_TEMPLATE(struct, PANOCHelpers, EigenConfigl);
|
385
|
-
#ifdef ALPAQA_WITH_QUAD_PRECISION
|
386
|
-
ALPAQA_EXPORT_EXTERN_TEMPLATE(struct, PANOCHelpers, EigenConfigq);
|
387
|
-
#endif
|
388
|
-
|
389
|
-
} // namespace alpaqa::detail
|