casadi 3.6.5__cp39-none-macosx_11_0_arm64.whl → 3.6.7__cp39-none-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
@@ -0,0 +1,125 @@
|
|
1
|
+
lu_int basiclu_update
|
2
|
+
(
|
3
|
+
lu_int istore[],
|
4
|
+
double xstore[],
|
5
|
+
lu_int Li[],
|
6
|
+
double Lx[],
|
7
|
+
lu_int Ui[],
|
8
|
+
double Ux[],
|
9
|
+
lu_int Wi[],
|
10
|
+
double Wx[],
|
11
|
+
double xtbl
|
12
|
+
);
|
13
|
+
|
14
|
+
/*
|
15
|
+
Purpose:
|
16
|
+
|
17
|
+
Update the factorization to replace one column of the factorized matrix.
|
18
|
+
A call to basiclu_update() must be preceded by calls to
|
19
|
+
basiclu_solve_for_update() to provide the column to be inserted and the
|
20
|
+
index of the column to be replaced.
|
21
|
+
|
22
|
+
The column to be inserted is defined as the right-hand side in the last call
|
23
|
+
to basiclu_solve_for_update() in which the forward system was solved.
|
24
|
+
|
25
|
+
The index of the column to be replaced is defined by the unit vector in the
|
26
|
+
last call to basiclu_solve_for_update() in which the transposed system was
|
27
|
+
solved.
|
28
|
+
|
29
|
+
Return:
|
30
|
+
|
31
|
+
BASICLU_ERROR_invalid_store if istore, xstore do not hold a BASICLU
|
32
|
+
instance. In this case xstore[BASICLU_STATUS] is not set.
|
33
|
+
|
34
|
+
Otherwise return the status code. See xstore[BASICLU_STATUS] below.
|
35
|
+
|
36
|
+
Arguments:
|
37
|
+
|
38
|
+
lu_int istore[]
|
39
|
+
double xstore[]
|
40
|
+
lu_int Li[]
|
41
|
+
double Lx[]
|
42
|
+
lu_int Ui[]
|
43
|
+
double Ux[]
|
44
|
+
lu_int Wi[]
|
45
|
+
double Wx[]
|
46
|
+
|
47
|
+
Factorization computed by basiclu_factorize() or basiclu_update().
|
48
|
+
|
49
|
+
double xtbl
|
50
|
+
|
51
|
+
This is an optional argument to monitor numerical stability. xtbl can be
|
52
|
+
either of
|
53
|
+
|
54
|
+
(a) element j0 of the solution to the forward system computed by
|
55
|
+
basiclu_solve_for_update(), where j0 is the column to be replaced;
|
56
|
+
|
57
|
+
(b) the dot product of the incoming column and the solution to the
|
58
|
+
transposed system computed by basiclu_solve_for_update().
|
59
|
+
|
60
|
+
In either case xstore[BASICLU_PIVOT_ERROR] (see below) has a defined
|
61
|
+
value. If monitoring stability is not desired, xtbl can be any value.
|
62
|
+
|
63
|
+
Parameters:
|
64
|
+
|
65
|
+
xstore[BASICLU_MEMORYL]: length of Li and Lx
|
66
|
+
xstore[BASICLU_MEMORYU]: length of Ui and Ux
|
67
|
+
xstore[BASICLU_MEMORYW]: length of Wi and Wx
|
68
|
+
|
69
|
+
xstore[BASICLU_DROP_TOLERANCE]
|
70
|
+
|
71
|
+
Nonzeros which magnitude is less than or equal to the drop tolerance
|
72
|
+
are removed from the row eta matrix. Default: 1e-20
|
73
|
+
|
74
|
+
Info:
|
75
|
+
|
76
|
+
xstore[BASICLU_STATUS]: status code.
|
77
|
+
|
78
|
+
BASICLU_OK
|
79
|
+
|
80
|
+
The update has successfully completed.
|
81
|
+
|
82
|
+
BASICLU_ERROR_argument_missing
|
83
|
+
|
84
|
+
One or more of the pointer/array arguments are NULL.
|
85
|
+
|
86
|
+
BASICLU_ERROR_invalid_call
|
87
|
+
|
88
|
+
The factorization is invalid or the update was not prepared by two
|
89
|
+
calls to basiclu_solve_for_update().
|
90
|
+
|
91
|
+
BASICLU_REALLOCATE
|
92
|
+
|
93
|
+
Insufficient memory in Wi,Wx. The number of additional elements
|
94
|
+
required is given by
|
95
|
+
|
96
|
+
xstore[BASICLU_ADD_MEMORYW] > 0
|
97
|
+
|
98
|
+
The user must reallocate Wi,Wx. It is recommended to reallocate for
|
99
|
+
the requested number of additional elements plus some extra space
|
100
|
+
for further updates (e.g. 0.5 times the current array length). The
|
101
|
+
new array length must be provided in
|
102
|
+
|
103
|
+
xstore[BASICLU_MEMORYW]: length of Wi and Wx
|
104
|
+
|
105
|
+
basiclu_update will start from scratch in the next call.
|
106
|
+
|
107
|
+
BASICLU_ERROR_singular_update
|
108
|
+
|
109
|
+
The updated factorization would be (numerically) singular. No update
|
110
|
+
has been computed and the old factorization is still valid.
|
111
|
+
|
112
|
+
xstore[BASICLU_PIVOT_ERROR]
|
113
|
+
|
114
|
+
When xtbl was given (see above), then xstore[BASICLU_PIVOT_ERROR] is a
|
115
|
+
measure for numerical stability. It is the difference between two
|
116
|
+
computations of the new pivot element relative to the new pivot element.
|
117
|
+
A value larger than 1e-10 indicates numerical instability and suggests
|
118
|
+
refactorization (and possibly tightening the pivot tolerance).
|
119
|
+
|
120
|
+
xstore[BASICLU_MAX_ETA]
|
121
|
+
|
122
|
+
The maximum entry (in absolute value) in the eta vectors from the
|
123
|
+
Forrest-Tomlin update. A large value, say > 1e6, indicates that pivoting
|
124
|
+
on diagonal element was unstable and refactorization might be necessary.
|
125
|
+
*/
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#ifndef _LU_DEF_H
|
2
|
+
#define _LU_DEF_H
|
3
|
+
|
4
|
+
/* -------------------------------------------------------------------------- */
|
5
|
+
/* ANSI standard include files */
|
6
|
+
/* -------------------------------------------------------------------------- */
|
7
|
+
|
8
|
+
#include <stddef.h>
|
9
|
+
#include <stdlib.h>
|
10
|
+
#include <string.h>
|
11
|
+
#include <stdio.h>
|
12
|
+
#include <math.h>
|
13
|
+
#include <stdint.h>
|
14
|
+
#include <assert.h>
|
15
|
+
|
16
|
+
#include "ipm/basiclu/basiclu.h"
|
17
|
+
|
18
|
+
#define BASICLU_HASH 7743090 /* hash in istore[0], xstore[0] */
|
19
|
+
|
20
|
+
enum { NO_TASK, SINGLETONS, SETUP_BUMP, FACTORIZE_BUMP, BUILD_FACTORS };
|
21
|
+
|
22
|
+
/* -------------------------------------------------------------------------- */
|
23
|
+
/* standard macros and inlines */
|
24
|
+
/* -------------------------------------------------------------------------- */
|
25
|
+
|
26
|
+
#define MAX(a,b) ((a)>=(b) ? (a):(b))
|
27
|
+
#define MIN(a,b) ((a)<=(b) ? (a):(b))
|
28
|
+
|
29
|
+
static inline void lu_iswap(lu_int *x, lu_int i, lu_int j)
|
30
|
+
{
|
31
|
+
lu_int t = x[i]; x[i] = x[j]; x[j] = t;
|
32
|
+
}
|
33
|
+
|
34
|
+
static inline void lu_fswap(double *x, lu_int i, lu_int j)
|
35
|
+
{
|
36
|
+
double t = x[i]; x[i] = x[j]; x[j] = t;
|
37
|
+
}
|
38
|
+
|
39
|
+
#endif
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#ifndef _LU_FILE_H
|
2
|
+
#define _LU_FILE_H
|
3
|
+
|
4
|
+
void lu_file_empty(
|
5
|
+
lu_int nlines, lu_int *begin, lu_int *end, lu_int *next, lu_int *prev,
|
6
|
+
lu_int fmem);
|
7
|
+
|
8
|
+
void lu_file_reappend(
|
9
|
+
lu_int line, lu_int nlines, lu_int *begin, lu_int *end, lu_int *next,
|
10
|
+
lu_int *prev, lu_int *index, double *value, lu_int extra_space);
|
11
|
+
|
12
|
+
lu_int lu_file_compress(
|
13
|
+
lu_int nlines, lu_int *begin, lu_int *end, const lu_int *next,
|
14
|
+
lu_int *index, double *value, double stretch, lu_int pad);
|
15
|
+
|
16
|
+
lu_int lu_file_diff(
|
17
|
+
lu_int nrow, const lu_int *begin_row, const lu_int *end_row,
|
18
|
+
const lu_int *begin_col, const lu_int *end_col, const lu_int *index,
|
19
|
+
const double *value);
|
20
|
+
|
21
|
+
#endif
|
@@ -0,0 +1,220 @@
|
|
1
|
+
#ifndef _LU_INTERNAL_H
|
2
|
+
#define _LU_INTERNAL_H
|
3
|
+
|
4
|
+
#include "ipm/basiclu/lu_def.h"
|
5
|
+
|
6
|
+
/* -------------------------------------------------------------------------- */
|
7
|
+
/* struct lu */
|
8
|
+
/* -------------------------------------------------------------------------- */
|
9
|
+
|
10
|
+
/*
|
11
|
+
This data structure provides access to istore, xstore.
|
12
|
+
|
13
|
+
lu_* routines do not access istore, xstore directly. Instead, they operate
|
14
|
+
on a struct lu object. Scalar quantities stored in istore, xstore are copied
|
15
|
+
to a struct lu object by lu_load() and copied back by lu_save(). Subarrays
|
16
|
+
of istore, xstore and the user arrays Li, Lx, Ui, Ux, Wi, Wx are aliased by
|
17
|
+
pointers in struct lu.
|
18
|
+
*/
|
19
|
+
|
20
|
+
struct lu
|
21
|
+
{
|
22
|
+
/* user parameters, not modified */
|
23
|
+
lu_int Lmem;
|
24
|
+
lu_int Umem;
|
25
|
+
lu_int Wmem;
|
26
|
+
double droptol;
|
27
|
+
double abstol;
|
28
|
+
double reltol;
|
29
|
+
lu_int nzbias;
|
30
|
+
lu_int maxsearch;
|
31
|
+
lu_int pad;
|
32
|
+
double stretch;
|
33
|
+
double compress_thres;
|
34
|
+
double sparse_thres;
|
35
|
+
lu_int search_rows;
|
36
|
+
|
37
|
+
/* user readable */
|
38
|
+
lu_int m;
|
39
|
+
lu_int addmemL;
|
40
|
+
lu_int addmemU;
|
41
|
+
lu_int addmemW;
|
42
|
+
|
43
|
+
lu_int nupdate;
|
44
|
+
lu_int nforrest;
|
45
|
+
lu_int nfactorize;
|
46
|
+
lu_int nupdate_total;
|
47
|
+
lu_int nforrest_total;
|
48
|
+
lu_int nsymperm_total;
|
49
|
+
lu_int Lnz; /* nz in L excluding diagonal */
|
50
|
+
lu_int Unz; /* nz in U excluding diagonal */
|
51
|
+
lu_int Rnz; /* nz in update etas excluding diagonal */
|
52
|
+
double min_pivot;
|
53
|
+
double max_pivot;
|
54
|
+
double max_eta;
|
55
|
+
double update_cost_numer;
|
56
|
+
double update_cost_denom;
|
57
|
+
double time_factorize;
|
58
|
+
double time_solve;
|
59
|
+
double time_update;
|
60
|
+
double time_factorize_total;
|
61
|
+
double time_solve_total;
|
62
|
+
double time_update_total;
|
63
|
+
lu_int Lflops;
|
64
|
+
lu_int Uflops;
|
65
|
+
lu_int Rflops;
|
66
|
+
double condestL;
|
67
|
+
double condestU;
|
68
|
+
double normL;
|
69
|
+
double normU;
|
70
|
+
double normestLinv;
|
71
|
+
double normestUinv;
|
72
|
+
double onenorm; /* 1-norm and inf-norm of matrix after fresh */
|
73
|
+
double infnorm; /* factorization with dependent cols replaced */
|
74
|
+
double residual_test; /* computed by lu_residual_test() */
|
75
|
+
|
76
|
+
lu_int matrix_nz; /* nz in basis matrix when factorized */
|
77
|
+
lu_int rank; /* rank of basis matrix when factorized */
|
78
|
+
lu_int bump_size;
|
79
|
+
lu_int bump_nz;
|
80
|
+
lu_int nsearch_pivot; /* # rows/cols searched for pivot */
|
81
|
+
lu_int nexpand; /* # rows/cols expanded in factorize */
|
82
|
+
lu_int ngarbage; /* # garbage collections in factorize */
|
83
|
+
lu_int factor_flops; /* # flops in factorize */
|
84
|
+
double time_singletons;
|
85
|
+
double time_search_pivot;
|
86
|
+
double time_elim_pivot;
|
87
|
+
|
88
|
+
double pivot_error; /* error estimate for pivot in last update */
|
89
|
+
|
90
|
+
/* private */
|
91
|
+
lu_int task; /* the part of factorization in progress */
|
92
|
+
lu_int pivot_row; /* chosen pivot row */
|
93
|
+
lu_int pivot_col; /* chosen pivot column */
|
94
|
+
lu_int ftran_for_update; /* >= 0 if FTRAN prepared for update */
|
95
|
+
lu_int btran_for_update; /* >= 0 if BTRAN prepared for update */
|
96
|
+
lu_int marker; /* see @marked, below */
|
97
|
+
lu_int pivotlen; /* length of @pivotcol, @pivotrow; <= 2*m */
|
98
|
+
lu_int rankdef; /* # columns removed from active submatrix
|
99
|
+
because maximum was 0 or < abstol */
|
100
|
+
lu_int min_colnz; /* colcount lists 1..min_colnz-1 are empty */
|
101
|
+
lu_int min_rownz; /* rowcount lists 1..min_rownz-1 are empty */
|
102
|
+
|
103
|
+
/* aliases to user arrays */
|
104
|
+
lu_int *Lindex, *Uindex, *Windex;
|
105
|
+
double *Lvalue, *Uvalue, *Wvalue;
|
106
|
+
|
107
|
+
/*
|
108
|
+
* pointers into istore
|
109
|
+
*
|
110
|
+
* When two declaration lists are on one line, then the arrays from the
|
111
|
+
* second list share memory with the array from the first list. The arrays
|
112
|
+
* from the first lists are used during factorization, the arrays from the
|
113
|
+
* second lists are used during solves/updates.
|
114
|
+
*/
|
115
|
+
|
116
|
+
/* documented in lu_singletons.c, lu_setup_bump.c, lu_build_factors.c */
|
117
|
+
lu_int *colcount_flink; lu_int *pivotcol;
|
118
|
+
lu_int *colcount_blink; lu_int *pivotrow;
|
119
|
+
lu_int *rowcount_flink; lu_int *Rbegin, *eta_row;
|
120
|
+
lu_int *rowcount_blink; lu_int *iwork1;
|
121
|
+
lu_int *Wbegin; lu_int *Lbegin; /* + Wbegin reused */
|
122
|
+
lu_int *Wend; lu_int *Ltbegin; /* + Wend reused */
|
123
|
+
lu_int *Wflink; lu_int *Ltbegin_p; /* + Wflink reused */
|
124
|
+
lu_int *Wblink; lu_int *p; /* + Wblink reused */
|
125
|
+
lu_int *pinv; lu_int *pmap;
|
126
|
+
lu_int *qinv; lu_int *qmap;
|
127
|
+
lu_int *Lbegin_p; /* Lbegin_p reused */
|
128
|
+
lu_int *Ubegin; /* Ubegin reused */
|
129
|
+
|
130
|
+
lu_int *iwork0; lu_int *marked;
|
131
|
+
/* iwork0: size m workspace, zeroed */
|
132
|
+
/* marked: size m workspace, 0 <= marked[i] <= @marker */
|
133
|
+
|
134
|
+
/* pointers into xstore */
|
135
|
+
double *work0; /* size m workspace, zeroed */
|
136
|
+
double *work1; /* size m workspace, uninitialized */
|
137
|
+
double *col_pivot; /* pivot elements by column index */
|
138
|
+
double *row_pivot; /* pivot elements by row index */
|
139
|
+
};
|
140
|
+
|
141
|
+
|
142
|
+
/* -------------------------------------------------------------------------- */
|
143
|
+
/* Internal function prototypes */
|
144
|
+
/* -------------------------------------------------------------------------- */
|
145
|
+
|
146
|
+
lu_int lu_load(
|
147
|
+
struct lu *this, lu_int *istore, double *xstore, lu_int *Li, double *Lx,
|
148
|
+
lu_int *Ui, double *Ux, lu_int *Wi, double *Wx);
|
149
|
+
|
150
|
+
lu_int lu_save(
|
151
|
+
const struct lu *this, lu_int *istore, double *xstore, lu_int status);
|
152
|
+
|
153
|
+
void lu_reset(struct lu *this);
|
154
|
+
|
155
|
+
void lu_initialize(lu_int m, lu_int *istore, double *xstore);
|
156
|
+
|
157
|
+
lu_int lu_factorize_bump (struct lu *this);
|
158
|
+
|
159
|
+
lu_int lu_build_factors(struct lu *this);
|
160
|
+
|
161
|
+
void lu_garbage_perm(struct lu *this);
|
162
|
+
|
163
|
+
lu_int lu_markowitz(struct lu *this);
|
164
|
+
|
165
|
+
lu_int lu_pivot(struct lu *this);
|
166
|
+
|
167
|
+
lu_int lu_setup_bump(
|
168
|
+
struct lu *this, const lu_int *Bbegin, const lu_int *Bend, const lu_int *Bi,
|
169
|
+
const double *Bx);
|
170
|
+
|
171
|
+
lu_int lu_singletons(
|
172
|
+
struct lu *this, const lu_int *Bbegin, const lu_int *Bend, const lu_int *Bi,
|
173
|
+
const double *Bx);
|
174
|
+
|
175
|
+
void lu_solve_dense(
|
176
|
+
struct lu *this, const double *rhs, double *lhs, char trans);
|
177
|
+
|
178
|
+
lu_int lu_solve_for_update(
|
179
|
+
struct lu *this, const lu_int nrhs, const lu_int *irhs, const double *xrhs,
|
180
|
+
lu_int *nlhs, lu_int *ilhs, double *xlhs, char trans);
|
181
|
+
|
182
|
+
void lu_solve_sparse(
|
183
|
+
struct lu *this, const lu_int nrhs, const lu_int *irhs, const double *xrhs,
|
184
|
+
lu_int *nlhs, lu_int *ilhs, double *xlhs, char trans);
|
185
|
+
|
186
|
+
lu_int lu_dfs(
|
187
|
+
lu_int i, const lu_int *begin, const lu_int *end, const lu_int *index,
|
188
|
+
lu_int top, lu_int *xi, lu_int *pstack, lu_int *marked, const lu_int M);
|
189
|
+
|
190
|
+
lu_int lu_solve_symbolic(
|
191
|
+
const lu_int m, const lu_int *begin, const lu_int *end, const lu_int *index,
|
192
|
+
const lu_int nrhs, const lu_int *irhs, lu_int *ilhs, lu_int *pstack,
|
193
|
+
lu_int *marked, const lu_int M);
|
194
|
+
|
195
|
+
lu_int lu_solve_triangular(
|
196
|
+
const lu_int nz_symb, const lu_int *pattern_symb, const lu_int *begin,
|
197
|
+
const lu_int *end, const lu_int *index, const double *value,
|
198
|
+
const double *pivot, const double droptol, double *lhs, lu_int *pattern,
|
199
|
+
lu_int *flops);
|
200
|
+
|
201
|
+
lu_int lu_update(struct lu *this, double xtbl);
|
202
|
+
|
203
|
+
double lu_condest(
|
204
|
+
lu_int m, const lu_int *Ubegin, const lu_int *Ui, const double *Ux,
|
205
|
+
const double *pivot, const lu_int *perm, int upper, double *work,
|
206
|
+
double *norm, double *norminv);
|
207
|
+
|
208
|
+
double lu_normest(
|
209
|
+
lu_int m, const lu_int *Ubegin, const lu_int *Ui, const double *Ux,
|
210
|
+
const double *pivot, const lu_int *perm, int upper, double *work);
|
211
|
+
|
212
|
+
void lu_matrix_norm(
|
213
|
+
struct lu *this, const lu_int *Bbegin, const lu_int *Bend, const lu_int *Bi,
|
214
|
+
const double *Bx);
|
215
|
+
|
216
|
+
void lu_residual_test(
|
217
|
+
struct lu *this, const lu_int *Bbegin, const lu_int *Bend, const lu_int *Bi,
|
218
|
+
const double *Bx);
|
219
|
+
|
220
|
+
#endif
|
@@ -0,0 +1,168 @@
|
|
1
|
+
/*
|
2
|
+
* lu_list.h
|
3
|
+
*
|
4
|
+
* Copyright (C) 2016-2018 ERGO-Code
|
5
|
+
*
|
6
|
+
* Implementation of doubly linked lists (see [1] section 5.5)
|
7
|
+
*
|
8
|
+
* Maintain nelem elements in nlist doubly linked lists. Each element can belong
|
9
|
+
* to zero or one list at a time.
|
10
|
+
*
|
11
|
+
* The implementation uses arrays
|
12
|
+
*
|
13
|
+
* flink[0..nelem+nlist-1],
|
14
|
+
* blink[0..nelem+nlist-1].
|
15
|
+
*
|
16
|
+
* In each array, the leading nelem entries store links, the trailing nlist
|
17
|
+
* entries store heads. That is, for 0 <= i < nelem and 0 <= j < nlist:
|
18
|
+
*
|
19
|
+
* flink[i] next element in the list containing element i
|
20
|
+
* blink[i] previous element in the list containing element i
|
21
|
+
* flink[nelem+j] first element in list j
|
22
|
+
* blink[nelem+j] last element in list j
|
23
|
+
*
|
24
|
+
* The forward link of the last element in a list points to its flink-head. The
|
25
|
+
* backward link of the first element in a list points to its blink-head. For
|
26
|
+
* empty lists the heads point to themselves. When an element is not in any list
|
27
|
+
* its links point to itself.
|
28
|
+
*
|
29
|
+
* Optionally the quantity min_list >= 1 can be updated such that lists
|
30
|
+
* 1..min_list-1 are empty. Notice that list 0 is not covered by min_list.
|
31
|
+
*
|
32
|
+
* [1] Istvan Maros, Computational Techniques of the Simplex Method
|
33
|
+
*
|
34
|
+
* Methods:
|
35
|
+
*
|
36
|
+
* lu_list_init
|
37
|
+
* lu_list_add
|
38
|
+
* lu_list_remove
|
39
|
+
* lu_list_move
|
40
|
+
* lu_list_swap
|
41
|
+
*
|
42
|
+
* The methods are defined in this header file as static inline. This header
|
43
|
+
* file must be included after lu_def.h so that lu_int is defined.
|
44
|
+
*
|
45
|
+
*/
|
46
|
+
|
47
|
+
/* ==========================================================================
|
48
|
+
* lu_list_init
|
49
|
+
*
|
50
|
+
* Initialize all lists to empty.
|
51
|
+
* ========================================================================== */
|
52
|
+
|
53
|
+
static inline void lu_list_init(
|
54
|
+
lu_int *flink, lu_int *blink, lu_int nelem, lu_int nlist, lu_int *min_list)
|
55
|
+
{
|
56
|
+
lu_int i;
|
57
|
+
for (i = 0; i < nelem+nlist; i++) flink[i] = blink[i] = i;
|
58
|
+
if (min_list)
|
59
|
+
*min_list = MAX(1, nlist);
|
60
|
+
}
|
61
|
+
|
62
|
+
|
63
|
+
/* ==========================================================================
|
64
|
+
* lu_list_add
|
65
|
+
*
|
66
|
+
* Add element @elem to list @list. @elem must not be in any list already.
|
67
|
+
* If list > 0 and min_list != NULL, update *min_list = min(*min_list, list).
|
68
|
+
* ========================================================================== */
|
69
|
+
|
70
|
+
static inline void lu_list_add(
|
71
|
+
lu_int elem, lu_int list, lu_int *flink, lu_int *blink, lu_int nelem,
|
72
|
+
lu_int *min_list)
|
73
|
+
{
|
74
|
+
lu_int temp;
|
75
|
+
assert(flink[elem] == elem);
|
76
|
+
assert(blink[elem] == elem);
|
77
|
+
/* append elem to the end of list */
|
78
|
+
temp = blink[nelem+list];
|
79
|
+
blink[nelem+list] = elem;
|
80
|
+
blink[elem] = temp;
|
81
|
+
flink[temp] = elem;
|
82
|
+
flink[elem] = nelem+list;
|
83
|
+
if (list > 0 && min_list && list < *min_list)
|
84
|
+
*min_list = list;
|
85
|
+
}
|
86
|
+
|
87
|
+
|
88
|
+
/* ==========================================================================
|
89
|
+
* lu_list_remove
|
90
|
+
*
|
91
|
+
* Remove element @elem from its list. If @elem was not in a list before,
|
92
|
+
* then do nothing.
|
93
|
+
* ========================================================================== */
|
94
|
+
|
95
|
+
static inline void lu_list_remove(
|
96
|
+
lu_int *flink, lu_int *blink, lu_int elem)
|
97
|
+
{
|
98
|
+
flink[blink[elem]] = flink[elem];
|
99
|
+
blink[flink[elem]] = blink[elem];
|
100
|
+
flink[elem] = elem;
|
101
|
+
blink[elem] = elem;
|
102
|
+
}
|
103
|
+
|
104
|
+
|
105
|
+
/* ==========================================================================
|
106
|
+
* lu_list_move
|
107
|
+
*
|
108
|
+
* Remove element @elem from its list (if in a list) and add it to list @list.
|
109
|
+
* ========================================================================== */
|
110
|
+
|
111
|
+
static inline void lu_list_move(
|
112
|
+
lu_int elem, lu_int list, lu_int *flink, lu_int *blink, lu_int nelem,
|
113
|
+
lu_int *min_list)
|
114
|
+
{
|
115
|
+
lu_list_remove(flink, blink, elem);
|
116
|
+
lu_list_add(elem, list, flink, blink, nelem, min_list);
|
117
|
+
}
|
118
|
+
|
119
|
+
|
120
|
+
/* ==========================================================================
|
121
|
+
* lu_list_swap
|
122
|
+
*
|
123
|
+
* Swap elements @e1 and @e2, which both must be in a list. If @e1 and @e2
|
124
|
+
* are in the same list, then their positions are swapped. If they are in
|
125
|
+
* different lists, then each is moved to the other's list.
|
126
|
+
* ========================================================================== */
|
127
|
+
|
128
|
+
static inline void lu_list_swap(
|
129
|
+
lu_int *flink, lu_int *blink, const lu_int e1, const lu_int e2)
|
130
|
+
{
|
131
|
+
const lu_int e1next = flink[e1];
|
132
|
+
const lu_int e2next = flink[e2];
|
133
|
+
const lu_int e1prev = blink[e1];
|
134
|
+
const lu_int e2prev = blink[e2];
|
135
|
+
|
136
|
+
assert(e1next != e1); /* must be in a list */
|
137
|
+
assert(e2next != e2);
|
138
|
+
|
139
|
+
if (e1next == e2)
|
140
|
+
{
|
141
|
+
flink[e2] = e1;
|
142
|
+
blink[e1] = e2;
|
143
|
+
flink[e1prev] = e2;
|
144
|
+
blink[e2] = e1prev;
|
145
|
+
flink[e1] = e2next;
|
146
|
+
blink[e2next] = e1;
|
147
|
+
}
|
148
|
+
else if (e2next == e1)
|
149
|
+
{
|
150
|
+
flink[e1] = e2;
|
151
|
+
blink[e2] = e1;
|
152
|
+
flink[e2] = e1next;
|
153
|
+
blink[e1next] = e2;
|
154
|
+
flink[e2prev] = e1;
|
155
|
+
blink[e1] = e2prev;
|
156
|
+
}
|
157
|
+
else
|
158
|
+
{
|
159
|
+
flink[e2] = e1next;
|
160
|
+
blink[e1next] = e2;
|
161
|
+
flink[e2prev] = e1;
|
162
|
+
blink[e1] = e2prev;
|
163
|
+
flink[e1prev] = e2;
|
164
|
+
blink[e2] = e1prev;
|
165
|
+
flink[e1] = e2next;
|
166
|
+
blink[e2next] = e1;
|
167
|
+
}
|
168
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#ifndef IPX_BASICLU_KERNEL_H_
|
2
|
+
#define IPX_BASICLU_KERNEL_H_
|
3
|
+
|
4
|
+
#include "ipm/ipx/lu_factorization.h"
|
5
|
+
|
6
|
+
namespace ipx {
|
7
|
+
|
8
|
+
class BasicLuKernel : public LuFactorization {
|
9
|
+
private:
|
10
|
+
void _Factorize(Int dim, const Int* Bbegin, const Int* Bend,
|
11
|
+
const Int* Bi, const double* Bx, double pivottol,
|
12
|
+
bool strict_abs_pivottol,
|
13
|
+
SparseMatrix* L, SparseMatrix* U,
|
14
|
+
std::vector<Int>* rowperm, std::vector<Int>* colperm,
|
15
|
+
std::vector<Int>* dependent_cols) override;
|
16
|
+
};
|
17
|
+
|
18
|
+
} // namespace ipx
|
19
|
+
|
20
|
+
#endif // IPX_BASICLU_KERNEL_H_
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#ifndef IPX_BASICLU_WRAPPER_H_
|
2
|
+
#define IPX_BASICLU_WRAPPER_H_
|
3
|
+
|
4
|
+
#include "ipm/ipx/control.h"
|
5
|
+
#include "ipm/ipx/lu_update.h"
|
6
|
+
|
7
|
+
namespace ipx {
|
8
|
+
|
9
|
+
class BasicLu : public LuUpdate {
|
10
|
+
public:
|
11
|
+
BasicLu(const Control& control, Int dim);
|
12
|
+
~BasicLu() = default;
|
13
|
+
|
14
|
+
private:
|
15
|
+
Int _Factorize(const Int* Bbegin, const Int* Bend, const Int* Bi,
|
16
|
+
const double* Bx, bool strict_abs_pivottol) override;
|
17
|
+
void _GetFactors(SparseMatrix* L, SparseMatrix* U, Int* rowperm,
|
18
|
+
Int* colperm, std::vector<Int>* dependent_cols) override;
|
19
|
+
void _SolveDense(const Vector& rhs, Vector& lhs, char trans) override;
|
20
|
+
void _FtranForUpdate(Int nz, const Int* bi, const double* bx) override;
|
21
|
+
void _FtranForUpdate(Int nz, const Int* bi, const double* bx,
|
22
|
+
IndexedVector& lhs) override;
|
23
|
+
void _BtranForUpdate(Int j) override;
|
24
|
+
void _BtranForUpdate(Int j, IndexedVector& lhs) override;
|
25
|
+
Int _Update(double pivot) override;
|
26
|
+
bool _NeedFreshFactorization() override;
|
27
|
+
double _fill_factor() const override;
|
28
|
+
double _pivottol() const override;
|
29
|
+
void _pivottol(double new_pivottol) override;
|
30
|
+
|
31
|
+
// Reallocates (Li,Lx), (Ui,Ux) and/or (Wi,Wx) as requested by BASICLU.
|
32
|
+
void Reallocate();
|
33
|
+
|
34
|
+
// When memory is reallocated, allocate for kReallocFactor*required amount.
|
35
|
+
static constexpr double kReallocFactor = 1.5;
|
36
|
+
|
37
|
+
const Control& control_;
|
38
|
+
std::vector<Int> istore_;
|
39
|
+
std::vector<double> xstore_;
|
40
|
+
std::vector<Int> Li_, Ui_, Wi_;
|
41
|
+
std::vector<double> Lx_, Ux_, Wx_;
|
42
|
+
double fill_factor_;
|
43
|
+
};
|
44
|
+
|
45
|
+
} // namespace ipx
|
46
|
+
|
47
|
+
#endif // IPX_BASICLU_WRAPPER_H_
|