casadi 3.6.5__cp311-none-macosx_11_0_arm64.whl → 3.6.7__cp311-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,195 @@
|
|
1
|
+
#ifndef IPX_SPARSE_MATRIX_H_
|
2
|
+
#define IPX_SPARSE_MATRIX_H_
|
3
|
+
|
4
|
+
#include <vector>
|
5
|
+
#include "ipm/ipx/ipx_internal.h"
|
6
|
+
|
7
|
+
namespace ipx {
|
8
|
+
|
9
|
+
// Sparse matrix in CSC format.
|
10
|
+
|
11
|
+
class SparseMatrix {
|
12
|
+
public:
|
13
|
+
SparseMatrix();
|
14
|
+
SparseMatrix(Int nrow, Int ncol);
|
15
|
+
SparseMatrix(Int nrow, Int ncol, Int min_capacity);
|
16
|
+
|
17
|
+
Int rows() const { return nrow_; }
|
18
|
+
Int cols() const { return colptr_.size()-1; }
|
19
|
+
Int entries() const { return colptr_.back(); }
|
20
|
+
|
21
|
+
// # entries in column j
|
22
|
+
Int entries(Int j) const { return end(j)-begin(j); }
|
23
|
+
|
24
|
+
// Maximum # entries that can be stored in the matrix.
|
25
|
+
Int capacity() const { return rowidx_.size(); }
|
26
|
+
|
27
|
+
// Increases capacity if necessary such that capacity() >= min_capacity.
|
28
|
+
// Matrix remains unchanged, pointers are invalidated.
|
29
|
+
void reserve(Int min_capacity);
|
30
|
+
|
31
|
+
// Changes matrix dimensions. Matrix becomes empty, pointers are
|
32
|
+
// invalidated.
|
33
|
+
void resize(Int nrow, Int ncol, Int min_capacity = 0);
|
34
|
+
|
35
|
+
// Identical to resize(0,0).
|
36
|
+
void clear();
|
37
|
+
|
38
|
+
// Builds matrix from data in compressed column format. The matrix data must
|
39
|
+
// be valid (no duplicates, no out of range indices, no inf/nan values);
|
40
|
+
// this is not checked. The row indices in the input matrix need not be
|
41
|
+
// sorted, but those in the output matrix will be.
|
42
|
+
void LoadFromArrays(Int nrow, Int ncol, const Int* Abegin, const Int* Aend,
|
43
|
+
const Int* Ai, const double* Ax);
|
44
|
+
|
45
|
+
Int begin(Int j) const { return colptr_[j]; }
|
46
|
+
Int end(Int j) const { return colptr_[j+1]; }
|
47
|
+
|
48
|
+
// Accesses entry at position @pos by value.
|
49
|
+
Int index(Int pos) const { return rowidx_[pos]; }
|
50
|
+
double value(Int pos) const { return values_[pos]; }
|
51
|
+
|
52
|
+
// Accesses entry at position @pos by reference.
|
53
|
+
Int& index(Int pos) { return rowidx_[pos]; }
|
54
|
+
double& value(Int pos) { return values_[pos]; }
|
55
|
+
|
56
|
+
// Accesses underlying arrays.
|
57
|
+
const Int *colptr() const { return colptr_.data(); }
|
58
|
+
const Int *rowidx() const { return rowidx_.data(); }
|
59
|
+
const double *values() const { return values_.data(); }
|
60
|
+
Int *colptr() { return colptr_.data(); }
|
61
|
+
Int *rowidx() { return rowidx_.data(); }
|
62
|
+
double *values() { return values_.data(); }
|
63
|
+
|
64
|
+
// Stores the entries in each column in increasing order of index.
|
65
|
+
void SortIndices();
|
66
|
+
|
67
|
+
// The following methods provide a queue for adding new columns to the
|
68
|
+
// matrix. Entries in the queue are not part of the matrix (so do not
|
69
|
+
// contribute to entries()).
|
70
|
+
|
71
|
+
// Appends an entry to the end of the queue.
|
72
|
+
void push_back(Int i, double x) {
|
73
|
+
rowidx_queue_.push_back(i);
|
74
|
+
values_queue_.push_back(x);
|
75
|
+
}
|
76
|
+
|
77
|
+
// Returns # entries in the queue.
|
78
|
+
Int queue_size() const { return rowidx_queue_.size(); }
|
79
|
+
|
80
|
+
// Accesses entry at position @pos in the queue by value.
|
81
|
+
Int qindex(Int pos) const { return rowidx_queue_[pos]; }
|
82
|
+
double qvalue(Int pos) const { return values_queue_[pos]; }
|
83
|
+
|
84
|
+
// Accesses entry at position @pos in the queue by reference.
|
85
|
+
Int& qindex(Int pos) { return rowidx_queue_[pos]; }
|
86
|
+
double& qvalue(Int pos) { return values_queue_[pos]; }
|
87
|
+
|
88
|
+
// Makes new column from queue. The queue becomes empty and cols()
|
89
|
+
// increases by 1.
|
90
|
+
void add_column();
|
91
|
+
|
92
|
+
// Discards queue.
|
93
|
+
void clear_queue();
|
94
|
+
|
95
|
+
private:
|
96
|
+
// Returns true if row indices are sorted.
|
97
|
+
bool IsSorted() const;
|
98
|
+
|
99
|
+
Int nrow_;
|
100
|
+
std::vector<Int> colptr_;
|
101
|
+
std::vector<Int> rowidx_;
|
102
|
+
std::vector<double> values_;
|
103
|
+
std::vector<Int> rowidx_queue_;
|
104
|
+
std::vector<double> values_queue_;
|
105
|
+
};
|
106
|
+
|
107
|
+
// Builds transpose of matrix.
|
108
|
+
SparseMatrix Transpose(const SparseMatrix& A);
|
109
|
+
|
110
|
+
// Resizes @AT as necessary and fills with the tranpose of A.
|
111
|
+
void Transpose(const SparseMatrix& A, SparseMatrix& AT);
|
112
|
+
|
113
|
+
// Returns a copy of A[:,cols].
|
114
|
+
SparseMatrix CopyColumns(const SparseMatrix& A, const std::vector<Int>& cols);
|
115
|
+
|
116
|
+
// Permutes rows in place so that row i becomes row perm[i].
|
117
|
+
void PermuteRows(SparseMatrix& A, const std::vector<Int>& perm);
|
118
|
+
|
119
|
+
// Multiplies column j by s.
|
120
|
+
inline void ScaleColumn(SparseMatrix& A, Int j, double s) {
|
121
|
+
Int p1 = A.begin(j);
|
122
|
+
Int p2 = A.end(j);
|
123
|
+
for (Int p = p1; p < p2; p++)
|
124
|
+
A.value(p) *= s;
|
125
|
+
}
|
126
|
+
|
127
|
+
// Removes diagonal entries from A. If @diag is not NULL, then it must be an
|
128
|
+
// array of dimension A.cols() that holds the diagonal of A on return. Diagonal
|
129
|
+
// entries that are not present in A are set to zero in @diag. Returns the #
|
130
|
+
// entries removed from A.
|
131
|
+
Int RemoveDiagonal(SparseMatrix& A, double* diag);
|
132
|
+
|
133
|
+
// Returns dot(A[:,j], rhs).
|
134
|
+
inline double DotColumn(const SparseMatrix& A, Int j, const Vector& rhs) {
|
135
|
+
Int p1 = A.begin(j);
|
136
|
+
Int p2 = A.end(j);
|
137
|
+
double d = 0.0;
|
138
|
+
for (Int p = p1; p < p2; p++)
|
139
|
+
d += rhs[A.index(p)] * A.value(p);
|
140
|
+
return d;
|
141
|
+
}
|
142
|
+
|
143
|
+
// Updates lhs := lhs + alpha * A[:,j].
|
144
|
+
inline void ScatterColumn(const SparseMatrix& A, Int j, double alpha,
|
145
|
+
Vector& lhs) {
|
146
|
+
Int p1 = A.begin(j);
|
147
|
+
Int p2 = A.end(j);
|
148
|
+
for (Int p = p1; p < p2; p++)
|
149
|
+
lhs[A.index(p)] += alpha * A.value(p);
|
150
|
+
}
|
151
|
+
|
152
|
+
// Updates lhs := lhs + alpha*A*rhs or lhs := lhs + alpha*A'*rhs.
|
153
|
+
// @trans: 't' or 'T' for transposed product.
|
154
|
+
void MultiplyAdd(const SparseMatrix& A, const Vector& rhs, double alpha,
|
155
|
+
Vector& lhs, char trans);
|
156
|
+
|
157
|
+
// Updates lhs := lhs + A*A'*rhs or lhs := lhs + A*D*D*A'*rhs,
|
158
|
+
// where D is diagonal matrix if @D != NULL.
|
159
|
+
void AddNormalProduct(const SparseMatrix& A, const double* D, const Vector& rhs,
|
160
|
+
Vector& lhs);
|
161
|
+
|
162
|
+
// Triangular solve with sparse matrix.
|
163
|
+
// @x: right-hand side on entry, left-hand side on return.
|
164
|
+
// @trans: 't' or 'T' for transposed system.
|
165
|
+
// @uplo: must have *uplo == 'u' or *uplo == 'U' if A is upper triangular;
|
166
|
+
// otherwise A is lower triangular.
|
167
|
+
// @unitdiag: nonzero if A has a unit diagonal that is not stored.
|
168
|
+
// Returns the # nonzeros in the solution.
|
169
|
+
Int TriangularSolve(const SparseMatrix& A, Vector& x, char trans,
|
170
|
+
const char* uplo, int unitdiag);
|
171
|
+
|
172
|
+
// Solves (L*U) x = x.
|
173
|
+
// L unit lower triangular, stored without diagonal.
|
174
|
+
// U upper triangular, diagonal element at end of column.
|
175
|
+
void ForwardSolve(const SparseMatrix& L, const SparseMatrix& U, Vector& x);
|
176
|
+
|
177
|
+
// Solves (L*U)' x = x.
|
178
|
+
// L unit lower triangular, stored without diagonal.
|
179
|
+
// U upper triangular, diagonal element at end of column.
|
180
|
+
void BackwardSolve(const SparseMatrix& L, const SparseMatrix& U, Vector& x);
|
181
|
+
|
182
|
+
// Returns the 1-norm and infinity-norm of A.
|
183
|
+
double Onenorm(const SparseMatrix& A);
|
184
|
+
double Infnorm(const SparseMatrix& A);
|
185
|
+
|
186
|
+
// Estimates the 1-norm of inverse(A).
|
187
|
+
// @A must be square and lower or upper triangular.
|
188
|
+
// @uplo: must have *uplo == 'u' or *uplo == 'U' if A is upper triangular;
|
189
|
+
// otherwise A is lower triangular.
|
190
|
+
// @unitdiag: nonzero if A has a unit diagonal that is not stored.
|
191
|
+
double NormestInverse(const SparseMatrix& A, const char* uplo, int unitdiag);
|
192
|
+
|
193
|
+
} // namespace ipx
|
194
|
+
|
195
|
+
#endif // IPX_SPARSE_MATRIX_H_
|
@@ -0,0 +1,58 @@
|
|
1
|
+
#ifndef IPX_SPARSE_UTILS_H_
|
2
|
+
#define IPX_SPARSE_UTILS_H_
|
3
|
+
|
4
|
+
#include "ipm/ipx/ipx_internal.h"
|
5
|
+
|
6
|
+
namespace ipx {
|
7
|
+
|
8
|
+
// Depth-first search in the graph of matrix A.
|
9
|
+
//
|
10
|
+
// @istart starting node, must be unmarked on entry.
|
11
|
+
// @Ap, @Ai pattern of matrix A in CSC format.
|
12
|
+
// @colmap The neighbours of node i are the entries in col j = @colmap[i] of A.
|
13
|
+
// If j is negative, node i has no neighbours. @colmap can be NULL, in
|
14
|
+
// which case the identity mapping is assumed.
|
15
|
+
// @top, @istack On return @istack[newtop..@top-1] holds the reached nodes that
|
16
|
+
// have previously been unmarked; they are marked now and newtop
|
17
|
+
// is returned.
|
18
|
+
// @marked, @marker Node i is "marked" iff @marked[i] == @marker.
|
19
|
+
// @work workspace of size # rows of A.
|
20
|
+
//
|
21
|
+
// The code has been copied and adapted from cs_dfs.c, included in the CSPARSE
|
22
|
+
// package [1].
|
23
|
+
//
|
24
|
+
// [1] T. Davis, "Direct methods for sparse linear systems" (2006)
|
25
|
+
//
|
26
|
+
Int DepthFirstSearch(Int istart, const Int* Ap, const Int* Ai,
|
27
|
+
const Int* colmap, Int top, Int* istack, Int* marked,
|
28
|
+
Int marker, Int* work);
|
29
|
+
|
30
|
+
// Alternating augmenting path for extending a matching for an m-by-n matrix A.
|
31
|
+
//
|
32
|
+
// @jstart column of matrix A that should be matched.
|
33
|
+
// @Ap, @Ai pattern of matrix A in CSC format.
|
34
|
+
// @jmatch array of size m.
|
35
|
+
// Row i is matched to column j if @jmatch[i] = j >= 0.
|
36
|
+
// Row i is yet unmatched if @jmatch[i] == -1.
|
37
|
+
// Row i is unmatched and excluded from being matched if jmatch[i] < -1.
|
38
|
+
// @cheap array of size n. On the first call, @cheap must hold @Ap[0..n-1].
|
39
|
+
// It must be unchanged between subsequent calls.
|
40
|
+
// @marked array of size n. On entry @marked[j] != @jstart for all j.
|
41
|
+
// On return some entries were set to @jstart.
|
42
|
+
// @work size m workspace.
|
43
|
+
// @work2 size m+1 workspace.
|
44
|
+
// @work3 size m+1 workspace.
|
45
|
+
//
|
46
|
+
// Returns true if the matching was extended.
|
47
|
+
//
|
48
|
+
// The code has been copied and adapted from cs_augment.c, included in the
|
49
|
+
// CSPARSE package [1].
|
50
|
+
//
|
51
|
+
// [1] T. Davis, "Direct methods for sparse linear systems" (2006)
|
52
|
+
//
|
53
|
+
bool AugmentingPath(Int jstart, const Int* Ap, const Int* Ai, Int* jmatch,
|
54
|
+
Int* cheap, Int* marked, Int* work, Int* work2, Int* work3);
|
55
|
+
|
56
|
+
} // namespace ipx
|
57
|
+
|
58
|
+
#endif // IPX_SPARSE_UTILS_H_
|
@@ -0,0 +1,63 @@
|
|
1
|
+
#ifndef IPX_SPLITTED_NORMAL_MATRIX_H_
|
2
|
+
#define IPX_SPLITTED_NORMAL_MATRIX_H_
|
3
|
+
|
4
|
+
#include <vector>
|
5
|
+
#include "ipm/ipx/basis.h"
|
6
|
+
#include "ipm/ipx/linear_operator.h"
|
7
|
+
#include "ipm/ipx/model.h"
|
8
|
+
#include "ipm/ipx/sparse_matrix.h"
|
9
|
+
|
10
|
+
namespace ipx {
|
11
|
+
|
12
|
+
// SplittedNormalMatrix provides matrix-vector products with
|
13
|
+
//
|
14
|
+
// C = inv(B)*AI*AI'*inv(B') = I + inv(B)*N*N'*inv(B'),
|
15
|
+
//
|
16
|
+
// where AI is the m-by-(n+m) matrix defined by the model and [B N] is the
|
17
|
+
// partitioning of AI into basic and nonbasic columns defined by the basis.
|
18
|
+
// The columns of B and N are scaled by the interior point scaling factors
|
19
|
+
// provided in the call to Prepare().
|
20
|
+
//
|
21
|
+
// When a variable has status BASIC_FREE, the row and column of C become a unit
|
22
|
+
// vector. When a variable has status NONBASIC_FIXED, it is dropped from N.
|
23
|
+
|
24
|
+
class SplittedNormalMatrix : public LinearOperator {
|
25
|
+
public:
|
26
|
+
// Constructor stores a reference to the model. No data is copied. The model
|
27
|
+
// must be valid as long as the object is used.
|
28
|
+
explicit SplittedNormalMatrix(const Model& model);
|
29
|
+
|
30
|
+
// Prepares object for subsequent calls to Apply(). @colscale must hold n+m
|
31
|
+
// scaling factors for the columns of AI. The scaling factors are copied.
|
32
|
+
void Prepare(const Basis& basis, const double* colscale);
|
33
|
+
|
34
|
+
// Returns the column permutation from the LU factorization of the basis
|
35
|
+
// matrix. The permutation was stored in the object by Prepare().
|
36
|
+
const Int* colperm() const;
|
37
|
+
|
38
|
+
// Returns computation times for operations since last call to reset_time().
|
39
|
+
double time_B() const;
|
40
|
+
double time_Bt() const;
|
41
|
+
double time_NNt() const;
|
42
|
+
void reset_time();
|
43
|
+
|
44
|
+
private:
|
45
|
+
void _Apply(const Vector& rhs, Vector& lhs, double* rhs_dot_lhs) override;
|
46
|
+
|
47
|
+
const Model& model_;
|
48
|
+
SparseMatrix L_; // lower triangular factor without unit diagonal
|
49
|
+
SparseMatrix U_; // upper triangular factor with scaled columns
|
50
|
+
SparseMatrix N_; // N with scaled columns and permuted row indices
|
51
|
+
std::vector<Int> free_positions_; // positions corresponding to free vars
|
52
|
+
std::vector<Int> colperm_; // column permutation from LU factor
|
53
|
+
std::vector<Int> rowperm_inv_; // inverse row permutation from LU factor
|
54
|
+
Vector work_; // size m workspace
|
55
|
+
bool prepared_{false}; // operator prepared?
|
56
|
+
double time_B_{0.0}; // time solves with B
|
57
|
+
double time_Bt_{0.0}; // time solves with B'
|
58
|
+
double time_NNt_{0.0}; // time matrix-vector products with NN'
|
59
|
+
};
|
60
|
+
|
61
|
+
} // namespace ipx
|
62
|
+
|
63
|
+
#endif // IPX_SPLITTED_NORMAL_MATRIX_H_
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#ifndef IPX_STARTING_BASIS_H_
|
2
|
+
#define IPX_STARTING_BASIS_H_
|
3
|
+
|
4
|
+
#include "ipm/ipx/basis.h"
|
5
|
+
#include "ipm/ipx/iterate.h"
|
6
|
+
|
7
|
+
namespace ipx {
|
8
|
+
|
9
|
+
// Constructs a basis with the following properties:
|
10
|
+
//
|
11
|
+
// If lb[j]=-inf and ub[j]=inf, then the variable becomes either
|
12
|
+
// - basic with status BASIC_FREE, or
|
13
|
+
// - nonbasic with status NONBASIC_FIXED. (1)
|
14
|
+
//
|
15
|
+
// If lb[j]==ub[j] and j is a slack variable, then it becomes either
|
16
|
+
// - basic with status BASIC_FREE, or (2)
|
17
|
+
// - nonbasic with status NONBASIC_FIXED.
|
18
|
+
//
|
19
|
+
// If lb[j]==ub[j] and j is not a slack variable, then it becomes
|
20
|
+
// - nonbasic with status NONBASIC_FIXED.
|
21
|
+
//
|
22
|
+
// All other variables get status BASIC or NONBASIC.
|
23
|
+
//
|
24
|
+
// In case (1) the columns corresponding to free variables are linearly
|
25
|
+
// dependent. In case (2) the rows to equality constraints are linearly
|
26
|
+
// dependent. In each case the dependent variables are moved to zero without
|
27
|
+
// altering the primal or dual residual.
|
28
|
+
// TODO: we need to check for primal/dual infeasibility here.
|
29
|
+
//
|
30
|
+
// The method calls ConstructBasisFromWeights() using the interior point
|
31
|
+
// scaling factors as column weights. If a variable gets status BASIC_FREE or
|
32
|
+
// NONBASIC_FIXED, then its state in @iterate is changed accordingly to free or
|
33
|
+
// fixed. On return info->errflag is nonzero if an error occured.
|
34
|
+
//
|
35
|
+
void StartingBasis(Iterate* iterate, Basis* basis, Info* info);
|
36
|
+
|
37
|
+
} // namespace ipx
|
38
|
+
|
39
|
+
#endif // IPX_STARTING_BASIS_H_
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#ifndef IPX_SYMBOLIC_INVERT_H_
|
2
|
+
#define IPX_SYMBOLIC_INVERT_H_
|
3
|
+
|
4
|
+
#include <vector>
|
5
|
+
#include "ipm/ipx/ipx_internal.h"
|
6
|
+
#include "ipm/ipx/model.h"
|
7
|
+
|
8
|
+
namespace ipx {
|
9
|
+
|
10
|
+
// Computes the # structural nonzeros per row and column of inverse(B), where
|
11
|
+
// B = AI[:,basis] is the m-by-m matrix defined by the model and basis.
|
12
|
+
//
|
13
|
+
// @basis must have size m and be such that B is structurally nonsingular.
|
14
|
+
// (Otherwise an assertion will fail.)
|
15
|
+
// @rowcounts must either be NULL or an integer array of size m.
|
16
|
+
// If not NULL, then on return rowcounts[p], 0 <= p < m, holds the
|
17
|
+
// number of nonzeros in row p of inverse(B). Notice that row p of
|
18
|
+
// inverse(B) corresponds to column p of B.
|
19
|
+
// @colcounts must either be NULL or an integer array of size m.
|
20
|
+
// If not NULL, then on return colcounts[i], 0 <= i < m, holds the
|
21
|
+
// number of nonzeros in column i of inverse(B). Notice that column
|
22
|
+
// i of inverse(B) corresponds to row p of B.
|
23
|
+
//
|
24
|
+
void SymbolicInvert(const Model& model, const std::vector<Int>& basis,
|
25
|
+
Int* rowcounts, Int* colcounts);
|
26
|
+
|
27
|
+
} // namespace ipx
|
28
|
+
|
29
|
+
#endif // IPX_SYMBOLIC_INVERT_H_
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#ifndef IPX_TIMER_H_
|
2
|
+
#define IPX_TIMER_H_
|
3
|
+
|
4
|
+
#include <chrono>
|
5
|
+
|
6
|
+
namespace ipx {
|
7
|
+
|
8
|
+
class Timer {
|
9
|
+
public:
|
10
|
+
Timer();
|
11
|
+
double Elapsed() const;
|
12
|
+
void Reset();
|
13
|
+
|
14
|
+
private:
|
15
|
+
typedef std::chrono::time_point<std::chrono::high_resolution_clock>
|
16
|
+
TimePoint;
|
17
|
+
static TimePoint tic();
|
18
|
+
static double toc(TimePoint start);
|
19
|
+
TimePoint t0_;
|
20
|
+
};
|
21
|
+
|
22
|
+
} // namespace ipx
|
23
|
+
|
24
|
+
#endif // IPX_TIMER_H_
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#ifndef IPX_UTILS_H_
|
2
|
+
#define IPX_UTILS_H_
|
3
|
+
|
4
|
+
#include <vector>
|
5
|
+
#include "ipm/ipx/ipx_internal.h"
|
6
|
+
|
7
|
+
const bool kTerminationLogging = false;
|
8
|
+
|
9
|
+
namespace ipx {
|
10
|
+
|
11
|
+
bool AllFinite(const Vector& x);
|
12
|
+
|
13
|
+
double Onenorm(const Vector& x);
|
14
|
+
double Twonorm(const Vector& x);
|
15
|
+
double Infnorm(const Vector& x);
|
16
|
+
double Dot(const Vector& x, const Vector& y);
|
17
|
+
|
18
|
+
// Returns the index of an entry of maximum absolute value.
|
19
|
+
Int FindMaxAbs(const Vector& x);
|
20
|
+
|
21
|
+
// lhs[permuted_index] = rhs
|
22
|
+
void Permute(const std::vector<Int>& permuted_index, const Vector& rhs,
|
23
|
+
Vector& lhs);
|
24
|
+
|
25
|
+
// lhs = rhs[permuted_index]
|
26
|
+
void PermuteBack(const std::vector<Int>& permuted_index, const Vector& rhs,
|
27
|
+
Vector& lhs);
|
28
|
+
|
29
|
+
// Returns the inverse permutation to @perm.
|
30
|
+
std::vector<Int> InversePerm(const std::vector<Int>& perm);
|
31
|
+
|
32
|
+
// Returns the permutation that puts values[0..m-1] in increasing (if reverse is
|
33
|
+
// false) or in decreasing (if reverse is true) order. If values==NULL, returns
|
34
|
+
// the identity permutation.
|
35
|
+
std::vector<Int> Sortperm(Int m, const double* values, bool reverse);
|
36
|
+
|
37
|
+
} // namespace ipx
|
38
|
+
|
39
|
+
#endif // IPX_UTILS_H_
|
@@ -2,7 +2,7 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
6
|
/* Leona Gottwald and Michael Feldmeier */
|
7
7
|
/* */
|
8
8
|
/* Available as open-source under the MIT License */
|
@@ -21,10 +21,11 @@
|
|
21
21
|
#include "util/HighsInt.h"
|
22
22
|
|
23
23
|
const std::string kHighsCopyrightStatement =
|
24
|
-
"Copyright (c)
|
24
|
+
"Copyright (c) 2024 HiGHS under MIT licence terms";
|
25
25
|
|
26
26
|
const size_t kHighsSize_tInf = std::numeric_limits<size_t>::max();
|
27
27
|
const HighsInt kHighsIInf = std::numeric_limits<HighsInt>::max();
|
28
|
+
const HighsInt kHighsIInf32 = std::numeric_limits<int>::max();
|
28
29
|
const double kHighsInf = std::numeric_limits<double>::infinity();
|
29
30
|
const double kHighsTiny = 1e-14;
|
30
31
|
const double kHighsMacheps = std::ldexp(1, -52);
|
@@ -35,6 +36,10 @@ const std::string kHighsOnString = "on";
|
|
35
36
|
const HighsInt kHighsMaxStringLength = 512;
|
36
37
|
const HighsInt kSimplexConcurrencyLimit = 8;
|
37
38
|
const double kRunningAverageMultiplier = 0.05;
|
39
|
+
const double kExcessivelyLargeBoundValue = 1e10;
|
40
|
+
const double kExcessivelyLargeCostValue = 1e10;
|
41
|
+
const double kExcessivelySmallBoundValue = 1e-4;
|
42
|
+
const double kExcessivelySmallCostValue = 1e-4;
|
38
43
|
|
39
44
|
const bool kAllowDeveloperAssert = false;
|
40
45
|
const bool kExtendInvertWhenAddingRows = false;
|
@@ -168,6 +173,7 @@ enum class HighsPresolveStatus {
|
|
168
173
|
kNullError, // V2.0: Delete since it's not used!
|
169
174
|
kOptionsError, // V2.0: Delete since it's not used!
|
170
175
|
kNotSet,
|
176
|
+
kOutOfMemory, // V2.0: Move above kNotSet
|
171
177
|
};
|
172
178
|
|
173
179
|
enum class HighsPostsolveStatus { // V2.0: Delete if not used!
|
@@ -202,19 +208,23 @@ enum class HighsModelStatus {
|
|
202
208
|
kUnknown,
|
203
209
|
kSolutionLimit,
|
204
210
|
kInterrupt,
|
211
|
+
kMemoryLimit,
|
205
212
|
kMin = kNotset,
|
206
|
-
kMax =
|
213
|
+
kMax = kMemoryLimit
|
207
214
|
};
|
208
215
|
|
209
216
|
enum HighsCallbackType : int {
|
210
217
|
kCallbackMin = 0,
|
211
|
-
kCallbackLogging = kCallbackMin,
|
212
|
-
kCallbackSimplexInterrupt,
|
213
|
-
kCallbackIpmInterrupt,
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
+
kCallbackLogging = kCallbackMin, // 0
|
219
|
+
kCallbackSimplexInterrupt, // 1
|
220
|
+
kCallbackIpmInterrupt, // 2
|
221
|
+
kCallbackMipSolution, // 3
|
222
|
+
kCallbackMipImprovingSolution, // 4
|
223
|
+
kCallbackMipLogging, // 5
|
224
|
+
kCallbackMipInterrupt, // 6
|
225
|
+
kCallbackMipGetCutPool, // 7
|
226
|
+
kCallbackMipDefineLazyConstraints, // 8
|
227
|
+
kCallbackMax = kCallbackMipDefineLazyConstraints,
|
218
228
|
kNumCallbackType
|
219
229
|
};
|
220
230
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
6
|
/* Leona Gottwald and Michael Feldmeier */
|
7
7
|
/* */
|
8
8
|
/* Available as open-source under the MIT License */
|
@@ -83,17 +83,27 @@ struct HighsScale {
|
|
83
83
|
};
|
84
84
|
|
85
85
|
struct HighsLpMods {
|
86
|
+
// Semi-variables with zero lower bound that are treated as non-semi
|
86
87
|
std::vector<HighsInt> save_non_semi_variable_index;
|
88
|
+
|
89
|
+
// Semi-variables with inconsistent bounds that are fixed at zero
|
87
90
|
std::vector<HighsInt> save_inconsistent_semi_variable_index;
|
88
91
|
std::vector<double> save_inconsistent_semi_variable_lower_bound_value;
|
89
92
|
std::vector<double> save_inconsistent_semi_variable_upper_bound_value;
|
90
93
|
std::vector<HighsVarType> save_inconsistent_semi_variable_type;
|
91
94
|
|
95
|
+
// Semi-variables whose lower bound is ignored when solving the
|
96
|
+
// relaxation
|
92
97
|
std::vector<HighsInt> save_relaxed_semi_variable_lower_bound_index;
|
93
98
|
std::vector<double> save_relaxed_semi_variable_lower_bound_value;
|
99
|
+
|
100
|
+
// Semi-variables whose upper bound is too large to be used as a
|
101
|
+
// big-M when converting them to an integer variables plus an
|
102
|
+
// integer/continuous variables as appropriate
|
94
103
|
std::vector<HighsInt> save_tightened_semi_variable_upper_bound_index;
|
95
104
|
std::vector<double> save_tightened_semi_variable_upper_bound_value;
|
96
105
|
|
106
|
+
// Variables with infinite costs that are fixed during solve
|
97
107
|
std::vector<HighsInt> save_inf_cost_variable_index;
|
98
108
|
std::vector<double> save_inf_cost_variable_cost;
|
99
109
|
std::vector<double> save_inf_cost_variable_lower;
|
@@ -107,6 +117,8 @@ struct HighsNameHash {
|
|
107
117
|
std::unordered_map<std::string, int> name2index;
|
108
118
|
void form(const std::vector<std::string>& name);
|
109
119
|
bool hasDuplicate(const std::vector<std::string>& name);
|
120
|
+
void update(int index, const std::string& old_name,
|
121
|
+
const std::string& new_name);
|
110
122
|
void clear();
|
111
123
|
};
|
112
124
|
|
@@ -121,4 +133,14 @@ struct HighsPresolveLog {
|
|
121
133
|
void clear();
|
122
134
|
};
|
123
135
|
|
136
|
+
struct HighsIllConditioningRecord {
|
137
|
+
HighsInt index;
|
138
|
+
double multiplier;
|
139
|
+
};
|
140
|
+
|
141
|
+
struct HighsIllConditioning {
|
142
|
+
std::vector<HighsIllConditioningRecord> record;
|
143
|
+
void clear();
|
144
|
+
};
|
145
|
+
|
124
146
|
#endif /* LP_DATA_HSTRUCT_H_ */
|
@@ -2,7 +2,7 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
6
|
/* Leona Gottwald and Michael Feldmeier */
|
7
7
|
/* */
|
8
8
|
/* Available as open-source under the MIT License */
|
@@ -2,7 +2,7 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
6
|
/* Leona Gottwald and Michael Feldmeier */
|
7
7
|
/* */
|
8
8
|
/* Available as open-source under the MIT License */
|
@@ -14,12 +14,19 @@
|
|
14
14
|
#ifndef LP_DATA_HIGHSCALLBACK_H_
|
15
15
|
#define LP_DATA_HIGHSCALLBACK_H_
|
16
16
|
|
17
|
+
#include <functional>
|
18
|
+
|
17
19
|
#include "lp_data/HStruct.h"
|
18
20
|
#include "lp_data/HighsCallbackStruct.h"
|
19
21
|
|
22
|
+
using HighsCallbackFunctionType =
|
23
|
+
std::function<void(int, const std::string&, const HighsCallbackDataOut*,
|
24
|
+
HighsCallbackDataIn*, void*)>;
|
25
|
+
|
20
26
|
struct HighsCallback {
|
21
|
-
|
22
|
-
|
27
|
+
// Function pointers cannot be used for Pybind11, so use std::function
|
28
|
+
HighsCallbackFunctionType user_callback = nullptr;
|
29
|
+
HighsCCallbackType c_callback = nullptr;
|
23
30
|
void* user_callback_data = nullptr;
|
24
31
|
std::vector<bool> active;
|
25
32
|
HighsCallbackDataOut data_out;
|