casadi 3.6.7__cp313-none-macosx_10_13_x86_64.macosx_10_13_intel.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/__init__.py +92 -0
- casadi/_casadi.so +0 -0
- casadi/casadi-cli +0 -0
- casadi/casadi.py +50976 -0
- casadi/cbc +0 -0
- casadi/clp +0 -0
- casadi/cmake/casadi-config-version.cmake +11 -0
- casadi/cmake/casadi-config.cmake +8 -0
- casadi/cmake/casadi-targets-release.cmake +19 -0
- casadi/cmake/casadi-targets.cmake +106 -0
- casadi/cmake/highs/highs-config.cmake +17 -0
- casadi/cmake/highs/highs-targets-release.cmake +28 -0
- casadi/cmake/highs/highs-targets.cmake +117 -0
- casadi/cmake/osqp/osqp-config.cmake +1 -0
- casadi/cmake/osqp/osqp-targets-noconfig.cmake +29 -0
- casadi/cmake/osqp/osqp-targets.cmake +113 -0
- casadi/cmake/qdldl/qdldl-config.cmake +1 -0
- casadi/cmake/qdldl/qdldl-targets-noconfig.cmake +29 -0
- casadi/cmake/qdldl/qdldl-targets.cmake +113 -0
- casadi/cmake/sleqp/sleqp-config-version.cmake +65 -0
- casadi/cmake/sleqp/sleqp-config.cmake +1 -0
- casadi/cmake/sleqp/sleqp-targets-release.cmake +20 -0
- casadi/cmake/sleqp/sleqp-targets.cmake +106 -0
- casadi/cmake/trlib/trlib-config-release.cmake +19 -0
- casadi/cmake/trlib/trlib-config-version.cmake +83 -0
- casadi/cmake/trlib/trlib-config.cmake +107 -0
- casadi/highs +0 -0
- casadi/include/blasfeo.h +52 -0
- casadi/include/blasfeo_block_size.h +447 -0
- casadi/include/blasfeo_common.h +274 -0
- casadi/include/blasfeo_d_aux.h +255 -0
- casadi/include/blasfeo_d_aux_ext_dep.h +145 -0
- casadi/include/blasfeo_d_aux_ext_dep_ref.h +84 -0
- casadi/include/blasfeo_d_aux_old.h +75 -0
- casadi/include/blasfeo_d_aux_ref.h +208 -0
- casadi/include/blasfeo_d_aux_test.h +226 -0
- casadi/include/blasfeo_d_blas.h +46 -0
- casadi/include/blasfeo_d_blas_api.h +281 -0
- casadi/include/blasfeo_d_blasfeo_api.h +364 -0
- casadi/include/blasfeo_d_blasfeo_api_ref.h +147 -0
- casadi/include/blasfeo_d_blasfeo_hp_api.h +84 -0
- casadi/include/blasfeo_d_blasfeo_ref_api.h +283 -0
- casadi/include/blasfeo_d_kernel.h +1321 -0
- casadi/include/blasfeo_i_aux_ext_dep.h +69 -0
- casadi/include/blasfeo_m_aux.h +57 -0
- casadi/include/blasfeo_memory.h +62 -0
- casadi/include/blasfeo_naming.h +77 -0
- casadi/include/blasfeo_processor_features.h +88 -0
- casadi/include/blasfeo_s_aux.h +168 -0
- casadi/include/blasfeo_s_aux_ext_dep.h +141 -0
- casadi/include/blasfeo_s_aux_ext_dep_ref.h +82 -0
- casadi/include/blasfeo_s_aux_old.h +64 -0
- casadi/include/blasfeo_s_aux_ref.h +147 -0
- casadi/include/blasfeo_s_aux_test.h +177 -0
- casadi/include/blasfeo_s_blas.h +46 -0
- casadi/include/blasfeo_s_blas_api.h +182 -0
- casadi/include/blasfeo_s_blasfeo_api.h +284 -0
- casadi/include/blasfeo_s_blasfeo_api_ref.h +135 -0
- casadi/include/blasfeo_s_blasfeo_ref_api.h +252 -0
- casadi/include/blasfeo_s_kernel.h +692 -0
- casadi/include/blasfeo_stdlib.h +62 -0
- casadi/include/blasfeo_target.h +73 -0
- casadi/include/blasfeo_timing.h +114 -0
- casadi/include/blasfeo_v_aux_ext_dep.h +83 -0
- casadi/include/casadi/casadi.hpp +31 -0
- casadi/include/casadi/casadi.i +4691 -0
- casadi/include/casadi/casadi_c.h +138 -0
- casadi/include/casadi/casadi_numpy.hpp +97 -0
- casadi/include/casadi/config.h +46 -0
- casadi/include/casadi/core/calculus.hpp +1750 -0
- casadi/include/casadi/core/callback.hpp +226 -0
- casadi/include/casadi/core/casadi_common.hpp +318 -0
- casadi/include/casadi/core/casadi_enum.hpp +90 -0
- casadi/include/casadi/core/casadi_export.h +43 -0
- casadi/include/casadi/core/casadi_interrupt.hpp +83 -0
- casadi/include/casadi/core/casadi_limits.hpp +104 -0
- casadi/include/casadi/core/casadi_logger.hpp +134 -0
- casadi/include/casadi/core/casadi_meta.hpp +107 -0
- casadi/include/casadi/core/casadi_misc.hpp +1001 -0
- casadi/include/casadi/core/casadi_types.hpp +66 -0
- casadi/include/casadi/core/code_generator.hpp +975 -0
- casadi/include/casadi/core/conic.hpp +213 -0
- casadi/include/casadi/core/core.hpp +70 -0
- casadi/include/casadi/core/dae_builder.hpp +723 -0
- casadi/include/casadi/core/dm.hpp +87 -0
- casadi/include/casadi/core/dm_fwd.hpp +39 -0
- casadi/include/casadi/core/dple.hpp +138 -0
- casadi/include/casadi/core/exception.hpp +167 -0
- casadi/include/casadi/core/expm.hpp +84 -0
- casadi/include/casadi/core/external.hpp +70 -0
- casadi/include/casadi/core/fmu.hpp +224 -0
- casadi/include/casadi/core/function.hpp +1347 -0
- casadi/include/casadi/core/generic_expression.hpp +760 -0
- casadi/include/casadi/core/generic_matrix.hpp +1598 -0
- casadi/include/casadi/core/generic_type.hpp +311 -0
- casadi/include/casadi/core/global_options.hpp +97 -0
- casadi/include/casadi/core/im.hpp +52 -0
- casadi/include/casadi/core/im_fwd.hpp +35 -0
- casadi/include/casadi/core/importer.hpp +221 -0
- casadi/include/casadi/core/integration_tools.hpp +292 -0
- casadi/include/casadi/core/integrator.hpp +256 -0
- casadi/include/casadi/core/interpolant.hpp +163 -0
- casadi/include/casadi/core/linsol.hpp +171 -0
- casadi/include/casadi/core/matrix_decl.hpp +1352 -0
- casadi/include/casadi/core/matrix_fwd.hpp +37 -0
- casadi/include/casadi/core/mx.hpp +953 -0
- casadi/include/casadi/core/nlp_builder.hpp +162 -0
- casadi/include/casadi/core/nlp_tools.hpp +124 -0
- casadi/include/casadi/core/nlpsol.hpp +234 -0
- casadi/include/casadi/core/nonzeros.hpp +111 -0
- casadi/include/casadi/core/options.hpp +119 -0
- casadi/include/casadi/core/optistack.hpp +670 -0
- casadi/include/casadi/core/polynomial.hpp +126 -0
- casadi/include/casadi/core/printable.hpp +73 -0
- casadi/include/casadi/core/rootfinder.hpp +176 -0
- casadi/include/casadi/core/runtime/casadi_axpy.hpp +8 -0
- casadi/include/casadi/core/runtime/casadi_bfgs.hpp +49 -0
- casadi/include/casadi/core/runtime/casadi_bilin.hpp +42 -0
- casadi/include/casadi/core/runtime/casadi_bound_consistency.hpp +51 -0
- casadi/include/casadi/core/runtime/casadi_cache.hpp +59 -0
- casadi/include/casadi/core/runtime/casadi_clear.hpp +27 -0
- casadi/include/casadi/core/runtime/casadi_clip_max.hpp +33 -0
- casadi/include/casadi/core/runtime/casadi_clip_min.hpp +33 -0
- casadi/include/casadi/core/runtime/casadi_convexify.hpp +182 -0
- casadi/include/casadi/core/runtime/casadi_copy.hpp +31 -0
- casadi/include/casadi/core/runtime/casadi_cvx.hpp +463 -0
- casadi/include/casadi/core/runtime/casadi_de_boor.hpp +36 -0
- casadi/include/casadi/core/runtime/casadi_dense_lsqr.hpp +247 -0
- casadi/include/casadi/core/runtime/casadi_densify.hpp +48 -0
- casadi/include/casadi/core/runtime/casadi_dot.hpp +27 -0
- casadi/include/casadi/core/runtime/casadi_feasiblesqpmethod.hpp +208 -0
- casadi/include/casadi/core/runtime/casadi_file_slurp.hpp +32 -0
- casadi/include/casadi/core/runtime/casadi_fill.hpp +27 -0
- casadi/include/casadi/core/runtime/casadi_finite_diff.hpp +345 -0
- casadi/include/casadi/core/runtime/casadi_flip.hpp +33 -0
- casadi/include/casadi/core/runtime/casadi_getu.hpp +35 -0
- casadi/include/casadi/core/runtime/casadi_iamax.hpp +36 -0
- casadi/include/casadi/core/runtime/casadi_interpn.hpp +39 -0
- casadi/include/casadi/core/runtime/casadi_interpn_grad.hpp +72 -0
- casadi/include/casadi/core/runtime/casadi_interpn_interpolate.hpp +43 -0
- casadi/include/casadi/core/runtime/casadi_interpn_weights.hpp +39 -0
- casadi/include/casadi/core/runtime/casadi_ipqp.hpp +868 -0
- casadi/include/casadi/core/runtime/casadi_jac.hpp +186 -0
- casadi/include/casadi/core/runtime/casadi_kkt.hpp +67 -0
- casadi/include/casadi/core/runtime/casadi_kron.hpp +50 -0
- casadi/include/casadi/core/runtime/casadi_ldl.hpp +109 -0
- casadi/include/casadi/core/runtime/casadi_logsumexp.hpp +41 -0
- casadi/include/casadi/core/runtime/casadi_low.hpp +65 -0
- casadi/include/casadi/core/runtime/casadi_lsqr.hpp +247 -0
- casadi/include/casadi/core/runtime/casadi_masked_norm_inf.hpp +33 -0
- casadi/include/casadi/core/runtime/casadi_max_viol.hpp +37 -0
- casadi/include/casadi/core/runtime/casadi_mmax.hpp +28 -0
- casadi/include/casadi/core/runtime/casadi_mmin.hpp +29 -0
- casadi/include/casadi/core/runtime/casadi_mtimes.hpp +75 -0
- casadi/include/casadi/core/runtime/casadi_mv.hpp +46 -0
- casadi/include/casadi/core/runtime/casadi_mv_dense.hpp +39 -0
- casadi/include/casadi/core/runtime/casadi_nd_boor_dual_eval.hpp +127 -0
- casadi/include/casadi/core/runtime/casadi_nd_boor_eval.hpp +120 -0
- casadi/include/casadi/core/runtime/casadi_newton.hpp +66 -0
- casadi/include/casadi/core/runtime/casadi_nlp.hpp +289 -0
- casadi/include/casadi/core/runtime/casadi_norm_1.hpp +29 -0
- casadi/include/casadi/core/runtime/casadi_norm_2.hpp +24 -0
- casadi/include/casadi/core/runtime/casadi_norm_inf.hpp +28 -0
- casadi/include/casadi/core/runtime/casadi_norm_inf_mul.hpp +105 -0
- 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_polyval.hpp +29 -0
- casadi/include/casadi/core/runtime/casadi_project.hpp +39 -0
- casadi/include/casadi/core/runtime/casadi_qp.hpp +86 -0
- casadi/include/casadi/core/runtime/casadi_qr.hpp +272 -0
- casadi/include/casadi/core/runtime/casadi_qrqp.hpp +1239 -0
- casadi/include/casadi/core/runtime/casadi_rank1.hpp +40 -0
- casadi/include/casadi/core/runtime/casadi_regularize.hpp +73 -0
- casadi/include/casadi/core/runtime/casadi_runtime.hpp +318 -0
- casadi/include/casadi/core/runtime/casadi_scal.hpp +26 -0
- casadi/include/casadi/core/runtime/casadi_scaled_copy.hpp +31 -0
- casadi/include/casadi/core/runtime/casadi_sparsify.hpp +42 -0
- casadi/include/casadi/core/runtime/casadi_sparsity.hpp +24 -0
- casadi/include/casadi/core/runtime/casadi_sqpmethod.hpp +178 -0
- casadi/include/casadi/core/runtime/casadi_sum.hpp +31 -0
- casadi/include/casadi/core/runtime/casadi_sum_viol.hpp +37 -0
- casadi/include/casadi/core/runtime/casadi_swap.hpp +32 -0
- casadi/include/casadi/core/runtime/casadi_trans.hpp +35 -0
- casadi/include/casadi/core/runtime/casadi_tri_project.hpp +37 -0
- casadi/include/casadi/core/runtime/casadi_trilsolve.hpp +81 -0
- casadi/include/casadi/core/runtime/casadi_triusolve.hpp +81 -0
- casadi/include/casadi/core/runtime/casadi_vector_fmax.hpp +28 -0
- casadi/include/casadi/core/runtime/casadi_vector_fmin.hpp +28 -0
- casadi/include/casadi/core/runtime/casadi_vfmax.hpp +28 -0
- casadi/include/casadi/core/runtime/casadi_vfmin.hpp +28 -0
- casadi/include/casadi/core/runtime/shared.hpp +261 -0
- casadi/include/casadi/core/serializer.hpp +256 -0
- casadi/include/casadi/core/serializing_stream.hpp +329 -0
- casadi/include/casadi/core/shared_object.hpp +270 -0
- casadi/include/casadi/core/slice.hpp +149 -0
- casadi/include/casadi/core/sparsity.hpp +1495 -0
- casadi/include/casadi/core/sparsity_interface.hpp +745 -0
- casadi/include/casadi/core/submatrix.hpp +156 -0
- casadi/include/casadi/core/sx.hpp +203 -0
- casadi/include/casadi/core/sx_elem.hpp +351 -0
- casadi/include/casadi/core/sx_fwd.hpp +45 -0
- casadi/include/casadi/core/timing.hpp +98 -0
- casadi/include/casadi/core/tools.hpp +67 -0
- casadi/include/casadi/core/xml_file.hpp +93 -0
- casadi/include/casadi/core/xml_node.hpp +207 -0
- casadi/include/casadi/doc.i +58615 -0
- casadi/include/casadi/doc_merged.i +36123 -0
- casadi/include/casadi/mem.h +311 -0
- casadi/include/casadi/valgrind-casadi.supp +511 -0
- casadi/include/casadi/valgrind-python.supp +1416 -0
- casadi/include/coin/BonArraysHelpers.hpp +52 -0
- casadi/include/coin/BonAuxInfos.hpp +110 -0
- casadi/include/coin/BonBabInfos.hpp +57 -0
- casadi/include/coin/BonBabSetupBase.hpp +386 -0
- casadi/include/coin/BonBonminSetup.hpp +95 -0
- casadi/include/coin/BonBranchingTQP.hpp +197 -0
- casadi/include/coin/BonCbc.hpp +127 -0
- casadi/include/coin/BonCbcLpStrategy.hpp +45 -0
- casadi/include/coin/BonCbcNlpStrategy.hpp +98 -0
- casadi/include/coin/BonCbcNode.hpp +133 -0
- casadi/include/coin/BonChooseVariable.hpp +345 -0
- casadi/include/coin/BonCurvBranchingSolver.hpp +77 -0
- casadi/include/coin/BonCutStrengthener.hpp +244 -0
- casadi/include/coin/BonDiver.hpp +424 -0
- casadi/include/coin/BonDummyHeuristic.hpp +53 -0
- casadi/include/coin/BonDummyPump.hpp +43 -0
- casadi/include/coin/BonEcpCuts.hpp +97 -0
- casadi/include/coin/BonExitCodes.hpp +12 -0
- casadi/include/coin/BonFixAndSolveHeuristic.hpp +43 -0
- casadi/include/coin/BonGuessHeuristic.hpp +46 -0
- casadi/include/coin/BonHeuristicDive.hpp +88 -0
- casadi/include/coin/BonHeuristicDiveFractional.hpp +67 -0
- casadi/include/coin/BonHeuristicDiveMIP.hpp +83 -0
- casadi/include/coin/BonHeuristicDiveMIPFractional.hpp +67 -0
- casadi/include/coin/BonHeuristicDiveMIPVectorLength.hpp +74 -0
- casadi/include/coin/BonHeuristicDiveVectorLength.hpp +74 -0
- casadi/include/coin/BonHeuristicFPump.hpp +111 -0
- casadi/include/coin/BonHeuristicLocalBranching.hpp +59 -0
- casadi/include/coin/BonHeuristicRINS.hpp +55 -0
- casadi/include/coin/BonIpoptInteriorWarmStarter.hpp +103 -0
- casadi/include/coin/BonIpoptSolver.hpp +188 -0
- casadi/include/coin/BonIpoptWarmStart.hpp +148 -0
- casadi/include/coin/BonLinearCutsGenerator.hpp +75 -0
- casadi/include/coin/BonLocalSolverBasedHeuristic.hpp +102 -0
- casadi/include/coin/BonLpBranchingSolver.hpp +80 -0
- casadi/include/coin/BonMilpRounding.hpp +74 -0
- casadi/include/coin/BonOACutGenerator2.hpp +56 -0
- casadi/include/coin/BonOAMessages.hpp +44 -0
- casadi/include/coin/BonOaDecBase.hpp +297 -0
- casadi/include/coin/BonOaFeasChecker.hpp +73 -0
- casadi/include/coin/BonOaNlpOptim.hpp +116 -0
- casadi/include/coin/BonOsiTMINLPInterface.hpp +1342 -0
- casadi/include/coin/BonOuterApprox.hpp +123 -0
- casadi/include/coin/BonPseudoCosts.hpp +91 -0
- casadi/include/coin/BonPumpForMinlp.hpp +45 -0
- casadi/include/coin/BonQuadCut.hpp +217 -0
- casadi/include/coin/BonQuadRow.hpp +122 -0
- casadi/include/coin/BonRegisteredOptions.hpp +225 -0
- casadi/include/coin/BonStrongBranchingSolver.hpp +69 -0
- casadi/include/coin/BonSubMipSolver.hpp +143 -0
- casadi/include/coin/BonTMINLP.hpp +420 -0
- casadi/include/coin/BonTMINLP2OsiLP.hpp +164 -0
- casadi/include/coin/BonTMINLP2Quad.hpp +191 -0
- casadi/include/coin/BonTMINLP2TNLP.hpp +509 -0
- casadi/include/coin/BonTMINLPLinObj.hpp +216 -0
- casadi/include/coin/BonTMatrix.hpp +167 -0
- casadi/include/coin/BonTNLP2FPNLP.hpp +264 -0
- casadi/include/coin/BonTNLPSolver.hpp +241 -0
- casadi/include/coin/BonTypes.hpp +95 -0
- casadi/include/coin/BonminConfig.h +19 -0
- casadi/include/coin/CbcBranchActual.hpp +26 -0
- casadi/include/coin/CbcBranchAllDifferent.hpp +61 -0
- casadi/include/coin/CbcBranchBase.hpp +79 -0
- casadi/include/coin/CbcBranchCut.hpp +182 -0
- casadi/include/coin/CbcBranchDecision.hpp +135 -0
- casadi/include/coin/CbcBranchDefaultDecision.hpp +101 -0
- casadi/include/coin/CbcBranchDynamic.hpp +210 -0
- casadi/include/coin/CbcBranchLotsize.hpp +249 -0
- casadi/include/coin/CbcBranchToFixLots.hpp +94 -0
- casadi/include/coin/CbcBranchingObject.hpp +245 -0
- casadi/include/coin/CbcClique.hpp +309 -0
- casadi/include/coin/CbcCompare.hpp +46 -0
- casadi/include/coin/CbcCompareActual.hpp +16 -0
- casadi/include/coin/CbcCompareBase.hpp +155 -0
- casadi/include/coin/CbcCompareDefault.hpp +129 -0
- casadi/include/coin/CbcCompareDepth.hpp +48 -0
- casadi/include/coin/CbcCompareEstimate.hpp +48 -0
- casadi/include/coin/CbcCompareObjective.hpp +50 -0
- casadi/include/coin/CbcConfig.h +18 -0
- casadi/include/coin/CbcConsequence.hpp +50 -0
- casadi/include/coin/CbcCountRowCut.hpp +176 -0
- casadi/include/coin/CbcCutGenerator.hpp +550 -0
- casadi/include/coin/CbcCutModifier.hpp +59 -0
- casadi/include/coin/CbcCutSubsetModifier.hpp +69 -0
- casadi/include/coin/CbcDummyBranchingObject.hpp +83 -0
- casadi/include/coin/CbcEventHandler.hpp +250 -0
- casadi/include/coin/CbcFathom.hpp +136 -0
- casadi/include/coin/CbcFathomDynamicProgramming.hpp +177 -0
- casadi/include/coin/CbcFeasibilityBase.hpp +60 -0
- casadi/include/coin/CbcFixVariable.hpp +68 -0
- casadi/include/coin/CbcFollowOn.hpp +207 -0
- casadi/include/coin/CbcFullNodeInfo.hpp +171 -0
- casadi/include/coin/CbcGeneral.hpp +60 -0
- casadi/include/coin/CbcGeneralDepth.hpp +289 -0
- casadi/include/coin/CbcHeuristic.hpp +735 -0
- casadi/include/coin/CbcHeuristicDINS.hpp +98 -0
- casadi/include/coin/CbcHeuristicDW.hpp +374 -0
- casadi/include/coin/CbcHeuristicDive.hpp +198 -0
- casadi/include/coin/CbcHeuristicDiveCoefficient.hpp +52 -0
- casadi/include/coin/CbcHeuristicDiveFractional.hpp +52 -0
- casadi/include/coin/CbcHeuristicDiveGuided.hpp +55 -0
- casadi/include/coin/CbcHeuristicDiveLineSearch.hpp +52 -0
- casadi/include/coin/CbcHeuristicDivePseudoCost.hpp +60 -0
- casadi/include/coin/CbcHeuristicDiveVectorLength.hpp +52 -0
- casadi/include/coin/CbcHeuristicFPump.hpp +375 -0
- casadi/include/coin/CbcHeuristicGreedy.hpp +289 -0
- casadi/include/coin/CbcHeuristicLocal.hpp +276 -0
- casadi/include/coin/CbcHeuristicPivotAndFix.hpp +58 -0
- casadi/include/coin/CbcHeuristicRENS.hpp +79 -0
- casadi/include/coin/CbcHeuristicRINS.hpp +106 -0
- casadi/include/coin/CbcHeuristicRandRound.hpp +58 -0
- casadi/include/coin/CbcHeuristicVND.hpp +95 -0
- casadi/include/coin/CbcLinked.hpp +1443 -0
- casadi/include/coin/CbcMessage.hpp +94 -0
- casadi/include/coin/CbcMipStartIO.hpp +29 -0
- casadi/include/coin/CbcModel.hpp +3296 -0
- casadi/include/coin/CbcNWay.hpp +171 -0
- casadi/include/coin/CbcNode.hpp +380 -0
- casadi/include/coin/CbcNodeInfo.hpp +377 -0
- casadi/include/coin/CbcObject.hpp +288 -0
- casadi/include/coin/CbcObjectUpdateData.hpp +63 -0
- casadi/include/coin/CbcOrClpParam.cpp +4321 -0
- casadi/include/coin/CbcOrClpParam.hpp +585 -0
- casadi/include/coin/CbcParam.hpp +338 -0
- casadi/include/coin/CbcPartialNodeInfo.hpp +116 -0
- casadi/include/coin/CbcSOS.hpp +290 -0
- casadi/include/coin/CbcSimpleInteger.hpp +299 -0
- casadi/include/coin/CbcSimpleIntegerDynamicPseudoCost.hpp +619 -0
- casadi/include/coin/CbcSimpleIntegerPseudoCost.hpp +122 -0
- casadi/include/coin/CbcSolver.hpp +460 -0
- casadi/include/coin/CbcStrategy.hpp +269 -0
- casadi/include/coin/CbcSubProblem.hpp +84 -0
- casadi/include/coin/CbcTree.hpp +493 -0
- casadi/include/coin/CbcTreeLocal.hpp +393 -0
- casadi/include/coin/Cbc_C_Interface.h +904 -0
- casadi/include/coin/Cgl012cut.hpp +464 -0
- casadi/include/coin/CglAllDifferent.hpp +115 -0
- casadi/include/coin/CglClique.hpp +312 -0
- casadi/include/coin/CglConfig.h +19 -0
- casadi/include/coin/CglCutGenerator.hpp +133 -0
- casadi/include/coin/CglDuplicateRow.hpp +189 -0
- casadi/include/coin/CglFlowCover.hpp +371 -0
- casadi/include/coin/CglGMI.hpp +364 -0
- casadi/include/coin/CglGMIParam.hpp +313 -0
- casadi/include/coin/CglGomory.hpp +204 -0
- casadi/include/coin/CglKnapsackCover.hpp +310 -0
- casadi/include/coin/CglLandP.hpp +306 -0
- casadi/include/coin/CglLandPValidator.hpp +130 -0
- casadi/include/coin/CglLiftAndProject.hpp +104 -0
- casadi/include/coin/CglMessage.hpp +49 -0
- casadi/include/coin/CglMixedIntegerRounding.hpp +429 -0
- casadi/include/coin/CglMixedIntegerRounding2.hpp +427 -0
- casadi/include/coin/CglOddHole.hpp +160 -0
- casadi/include/coin/CglParam.hpp +93 -0
- casadi/include/coin/CglPreProcess.hpp +600 -0
- casadi/include/coin/CglProbing.hpp +543 -0
- casadi/include/coin/CglRedSplit.hpp +448 -0
- casadi/include/coin/CglRedSplit2.hpp +494 -0
- casadi/include/coin/CglRedSplit2Param.hpp +495 -0
- casadi/include/coin/CglRedSplitParam.hpp +272 -0
- casadi/include/coin/CglResidualCapacity.hpp +240 -0
- casadi/include/coin/CglSimpleRounding.hpp +174 -0
- casadi/include/coin/CglStored.hpp +140 -0
- casadi/include/coin/CglTreeInfo.hpp +216 -0
- casadi/include/coin/CglTwomir.hpp +562 -0
- casadi/include/coin/CglZeroHalf.hpp +133 -0
- casadi/include/coin/ClpAmplObjective.hpp +113 -0
- casadi/include/coin/ClpCholeskyBase.hpp +321 -0
- casadi/include/coin/ClpCholeskyDense.hpp +157 -0
- casadi/include/coin/ClpCholeskyMumps.hpp +65 -0
- casadi/include/coin/ClpCholeskyPardiso.hpp +67 -0
- casadi/include/coin/ClpConfig.h +17 -0
- casadi/include/coin/ClpConstraint.hpp +129 -0
- casadi/include/coin/ClpConstraintAmpl.hpp +109 -0
- casadi/include/coin/ClpConstraintLinear.hpp +113 -0
- casadi/include/coin/ClpConstraintQuadratic.hpp +123 -0
- casadi/include/coin/ClpDualRowDantzig.hpp +72 -0
- casadi/include/coin/ClpDualRowPivot.hpp +136 -0
- casadi/include/coin/ClpDualRowSteepest.hpp +160 -0
- casadi/include/coin/ClpDummyMatrix.hpp +186 -0
- casadi/include/coin/ClpDynamicExampleMatrix.hpp +199 -0
- casadi/include/coin/ClpDynamicMatrix.hpp +420 -0
- casadi/include/coin/ClpEventHandler.hpp +193 -0
- casadi/include/coin/ClpFactorization.hpp +556 -0
- casadi/include/coin/ClpGubDynamicMatrix.hpp +270 -0
- casadi/include/coin/ClpGubMatrix.hpp +373 -0
- casadi/include/coin/ClpInterior.hpp +622 -0
- casadi/include/coin/ClpLinearObjective.hpp +104 -0
- casadi/include/coin/ClpMatrixBase.hpp +561 -0
- casadi/include/coin/ClpMessage.hpp +131 -0
- casadi/include/coin/ClpModel.hpp +1442 -0
- casadi/include/coin/ClpNetworkMatrix.hpp +235 -0
- casadi/include/coin/ClpNode.hpp +364 -0
- casadi/include/coin/ClpNonLinearCost.hpp +432 -0
- casadi/include/coin/ClpObjective.hpp +142 -0
- casadi/include/coin/ClpPEDualRowDantzig.hpp +84 -0
- casadi/include/coin/ClpPEDualRowSteepest.hpp +100 -0
- casadi/include/coin/ClpPEPrimalColumnDantzig.hpp +71 -0
- casadi/include/coin/ClpPEPrimalColumnSteepest.hpp +107 -0
- casadi/include/coin/ClpPESimplex.hpp +231 -0
- casadi/include/coin/ClpPackedMatrix.hpp +778 -0
- casadi/include/coin/ClpParameters.hpp +132 -0
- casadi/include/coin/ClpPdcoBase.hpp +110 -0
- casadi/include/coin/ClpPlusMinusOneMatrix.hpp +565 -0
- casadi/include/coin/ClpPresolve.hpp +379 -0
- casadi/include/coin/ClpPrimalColumnDantzig.hpp +74 -0
- casadi/include/coin/ClpPrimalColumnPivot.hpp +163 -0
- casadi/include/coin/ClpPrimalColumnSteepest.hpp +281 -0
- casadi/include/coin/ClpQuadraticObjective.hpp +161 -0
- casadi/include/coin/ClpSimplex.hpp +2137 -0
- casadi/include/coin/ClpSimplexDual.hpp +304 -0
- casadi/include/coin/ClpSimplexNonlinear.hpp +117 -0
- casadi/include/coin/ClpSimplexOther.hpp +282 -0
- casadi/include/coin/ClpSimplexPrimal.hpp +244 -0
- casadi/include/coin/ClpSolve.hpp +505 -0
- casadi/include/coin/Clp_C_Interface.h +554 -0
- casadi/include/coin/CoinAlloc.hpp +179 -0
- casadi/include/coin/CoinBuild.hpp +159 -0
- casadi/include/coin/CoinDenseFactorization.hpp +452 -0
- casadi/include/coin/CoinDenseVector.hpp +401 -0
- casadi/include/coin/CoinDistance.hpp +51 -0
- casadi/include/coin/CoinError.hpp +274 -0
- casadi/include/coin/CoinFactorization.hpp +2178 -0
- casadi/include/coin/CoinFileIO.hpp +185 -0
- casadi/include/coin/CoinFinite.hpp +37 -0
- casadi/include/coin/CoinFloatEqual.hpp +204 -0
- casadi/include/coin/CoinHelperFunctions.hpp +1270 -0
- casadi/include/coin/CoinIndexedVector.hpp +1437 -0
- casadi/include/coin/CoinLpIO.hpp +836 -0
- casadi/include/coin/CoinMessage.hpp +95 -0
- casadi/include/coin/CoinMessageHandler.hpp +717 -0
- casadi/include/coin/CoinModel.hpp +1214 -0
- casadi/include/coin/CoinModelUseful.hpp +518 -0
- casadi/include/coin/CoinMpsIO.hpp +1142 -0
- casadi/include/coin/CoinOslFactorization.hpp +287 -0
- casadi/include/coin/CoinPackedMatrix.hpp +956 -0
- casadi/include/coin/CoinPackedVector.hpp +670 -0
- casadi/include/coin/CoinPackedVectorBase.hpp +274 -0
- casadi/include/coin/CoinParam.hpp +644 -0
- casadi/include/coin/CoinPragma.hpp +29 -0
- casadi/include/coin/CoinPresolveDoubleton.hpp +76 -0
- casadi/include/coin/CoinPresolveDual.hpp +84 -0
- casadi/include/coin/CoinPresolveDupcol.hpp +259 -0
- casadi/include/coin/CoinPresolveEmpty.hpp +120 -0
- casadi/include/coin/CoinPresolveFixed.hpp +185 -0
- casadi/include/coin/CoinPresolveForcing.hpp +69 -0
- casadi/include/coin/CoinPresolveImpliedFree.hpp +66 -0
- casadi/include/coin/CoinPresolveIsolated.hpp +59 -0
- casadi/include/coin/CoinPresolveMatrix.hpp +1996 -0
- casadi/include/coin/CoinPresolveMonitor.hpp +105 -0
- casadi/include/coin/CoinPresolvePsdebug.hpp +169 -0
- casadi/include/coin/CoinPresolveSingleton.hpp +115 -0
- casadi/include/coin/CoinPresolveSubst.hpp +103 -0
- casadi/include/coin/CoinPresolveTighten.hpp +58 -0
- casadi/include/coin/CoinPresolveTripleton.hpp +69 -0
- casadi/include/coin/CoinPresolveUseless.hpp +63 -0
- casadi/include/coin/CoinPresolveZeros.hpp +65 -0
- casadi/include/coin/CoinRational.hpp +43 -0
- casadi/include/coin/CoinSearchTree.hpp +523 -0
- casadi/include/coin/CoinShallowPackedVector.hpp +149 -0
- casadi/include/coin/CoinSignal.hpp +127 -0
- casadi/include/coin/CoinSimpFactorization.hpp +432 -0
- casadi/include/coin/CoinSmartPtr.hpp +548 -0
- casadi/include/coin/CoinSnapshot.hpp +572 -0
- casadi/include/coin/CoinSort.hpp +753 -0
- casadi/include/coin/CoinStructuredModel.hpp +270 -0
- casadi/include/coin/CoinTime.hpp +350 -0
- casadi/include/coin/CoinTypes.hpp +67 -0
- casadi/include/coin/CoinUtility.hpp +26 -0
- casadi/include/coin/CoinUtilsConfig.h +34 -0
- casadi/include/coin/CoinWarmStart.hpp +56 -0
- casadi/include/coin/CoinWarmStartBasis.hpp +468 -0
- casadi/include/coin/CoinWarmStartDual.hpp +180 -0
- casadi/include/coin/CoinWarmStartPrimalDual.hpp +233 -0
- casadi/include/coin/CoinWarmStartVector.hpp +523 -0
- casadi/include/coin/Coin_C_defines.h +149 -0
- casadi/include/coin/Idiot.hpp +327 -0
- casadi/include/coin/OsiAuxInfo.hpp +261 -0
- casadi/include/coin/OsiBranchingObject.hpp +1097 -0
- casadi/include/coin/OsiCbcSolverInterface.hpp +791 -0
- casadi/include/coin/OsiChooseVariable.hpp +645 -0
- casadi/include/coin/OsiClpSolverInterface.hpp +1604 -0
- casadi/include/coin/OsiColCut.hpp +322 -0
- casadi/include/coin/OsiCollections.hpp +34 -0
- casadi/include/coin/OsiConfig.h +19 -0
- casadi/include/coin/OsiCut.hpp +251 -0
- casadi/include/coin/OsiCuts.hpp +505 -0
- casadi/include/coin/OsiPresolve.hpp +272 -0
- casadi/include/coin/OsiRowCut.hpp +345 -0
- casadi/include/coin/OsiRowCutDebugger.hpp +190 -0
- casadi/include/coin/OsiSolverBranch.hpp +169 -0
- casadi/include/coin/OsiSolverInterface.hpp +2221 -0
- casadi/include/coin/OsiSolverParameters.hpp +144 -0
- casadi/include/coin/OsiUnitTests.hpp +390 -0
- casadi/include/coin-or/IpAlgBuilder.hpp +417 -0
- casadi/include/coin-or/IpAlgStrategy.hpp +201 -0
- casadi/include/coin-or/IpAlgTypes.hpp +64 -0
- casadi/include/coin-or/IpAugSystemSolver.hpp +212 -0
- casadi/include/coin-or/IpBlas.hpp +426 -0
- casadi/include/coin-or/IpCachedResults.hpp +897 -0
- casadi/include/coin-or/IpCompoundMatrix.hpp +423 -0
- casadi/include/coin-or/IpCompoundSymMatrix.hpp +348 -0
- casadi/include/coin-or/IpCompoundVector.hpp +395 -0
- casadi/include/coin-or/IpConvCheck.hpp +97 -0
- casadi/include/coin-or/IpDebug.hpp +167 -0
- casadi/include/coin-or/IpDenseVector.hpp +626 -0
- casadi/include/coin-or/IpDiagMatrix.hpp +158 -0
- casadi/include/coin-or/IpEqMultCalculator.hpp +76 -0
- casadi/include/coin-or/IpException.hpp +156 -0
- casadi/include/coin-or/IpExpansionMatrix.hpp +245 -0
- casadi/include/coin-or/IpGenTMatrix.hpp +290 -0
- casadi/include/coin-or/IpHessianUpdater.hpp +73 -0
- casadi/include/coin-or/IpIdentityMatrix.hpp +167 -0
- casadi/include/coin-or/IpIpoptAlg.hpp +257 -0
- casadi/include/coin-or/IpIpoptApplication.hpp +367 -0
- casadi/include/coin-or/IpIpoptCalculatedQuantities.hpp +1009 -0
- casadi/include/coin-or/IpIpoptData.hpp +966 -0
- casadi/include/coin-or/IpIpoptNLP.hpp +328 -0
- casadi/include/coin-or/IpIterateInitializer.hpp +68 -0
- casadi/include/coin-or/IpIteratesVector.hpp +840 -0
- casadi/include/coin-or/IpIterationOutput.hpp +78 -0
- casadi/include/coin-or/IpJournalist.hpp +573 -0
- casadi/include/coin-or/IpLapack.hpp +227 -0
- casadi/include/coin-or/IpLibraryLoader.hpp +76 -0
- casadi/include/coin-or/IpLineSearch.hpp +106 -0
- casadi/include/coin-or/IpLinearSolvers.h +46 -0
- casadi/include/coin-or/IpMatrix.hpp +434 -0
- casadi/include/coin-or/IpMuUpdate.hpp +77 -0
- casadi/include/coin-or/IpNLP.hpp +306 -0
- casadi/include/coin-or/IpNLPScaling.hpp +582 -0
- casadi/include/coin-or/IpObserver.hpp +422 -0
- casadi/include/coin-or/IpOptionsList.hpp +412 -0
- casadi/include/coin-or/IpOrigIpoptNLP.hpp +603 -0
- casadi/include/coin-or/IpPDSystemSolver.hpp +137 -0
- casadi/include/coin-or/IpReferenced.hpp +262 -0
- casadi/include/coin-or/IpRegOptions.hpp +1152 -0
- casadi/include/coin-or/IpReturnCodes.h +23 -0
- casadi/include/coin-or/IpReturnCodes.hpp +18 -0
- casadi/include/coin-or/IpReturnCodes.inc +71 -0
- casadi/include/coin-or/IpReturnCodes_inc.h +45 -0
- casadi/include/coin-or/IpScaledMatrix.hpp +291 -0
- casadi/include/coin-or/IpSearchDirCalculator.hpp +72 -0
- casadi/include/coin-or/IpSmartPtr.hpp +865 -0
- casadi/include/coin-or/IpSolveStatistics.hpp +210 -0
- casadi/include/coin-or/IpSparseSymLinearSolverInterface.hpp +260 -0
- casadi/include/coin-or/IpStdAugSystemSolver.cpp +555 -0
- casadi/include/coin-or/IpStdCInterface.h +428 -0
- casadi/include/coin-or/IpSumSymMatrix.hpp +186 -0
- casadi/include/coin-or/IpSymLinearSolver.hpp +141 -0
- casadi/include/coin-or/IpSymMatrix.hpp +167 -0
- casadi/include/coin-or/IpSymScaledMatrix.hpp +255 -0
- casadi/include/coin-or/IpSymTMatrix.hpp +275 -0
- casadi/include/coin-or/IpTNLP.hpp +820 -0
- casadi/include/coin-or/IpTNLPAdapter.hpp +648 -0
- casadi/include/coin-or/IpTNLPReducer.hpp +274 -0
- casadi/include/coin-or/IpTaggedObject.hpp +128 -0
- casadi/include/coin-or/IpTimedTask.hpp +218 -0
- casadi/include/coin-or/IpTimingStatistics.hpp +323 -0
- casadi/include/coin-or/IpTripletHelper.hpp +308 -0
- casadi/include/coin-or/IpTypes.h +81 -0
- casadi/include/coin-or/IpTypes.hpp +30 -0
- casadi/include/coin-or/IpUtils.hpp +166 -0
- casadi/include/coin-or/IpVector.hpp +892 -0
- casadi/include/coin-or/IpZeroSymMatrix.hpp +155 -0
- casadi/include/coin-or/IpoptConfig.h +45 -0
- casadi/include/coin-or/SensAlgorithm.hpp +114 -0
- casadi/include/coin-or/SensApplication.hpp +188 -0
- casadi/include/coin-or/SensBacksolver.hpp +36 -0
- casadi/include/coin-or/SensMeasurement.hpp +56 -0
- casadi/include/coin-or/SensPCalculator.hpp +137 -0
- casadi/include/coin-or/SensRegOp.hpp +21 -0
- casadi/include/coin-or/SensSchurData.hpp +182 -0
- casadi/include/coin-or/SensSchurDriver.hpp +118 -0
- casadi/include/coin-or/SensSimpleBacksolver.hpp +49 -0
- casadi/include/coin-or/SensStepCalc.hpp +85 -0
- casadi/include/coin-or/SensUtils.hpp +63 -0
- casadi/include/coin-or/metis/defs.h +161 -0
- casadi/include/coin-or/metis/macros.h +143 -0
- casadi/include/coin-or/metis/metis.h +37 -0
- casadi/include/coin-or/metis/proto.h +505 -0
- casadi/include/coin-or/metis/rename.h +418 -0
- casadi/include/coin-or/metis/struct.h +251 -0
- casadi/include/coin-or/mumps/dmumps_c.h +142 -0
- casadi/include/coin-or/mumps/mumps_c_types.h +72 -0
- casadi/include/coin-or/mumps/mumps_compat.h +27 -0
- casadi/include/coin-or/mumps/mumps_int_def.h +11 -0
- casadi/include/coin-or/mumps/mumps_mpi.h +67 -0
- casadi/include/d_blas.h +78 -0
- casadi/include/d_blas_64.h +73 -0
- casadi/include/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 +21 -0
- casadi/include/highs/Highs.h +1529 -0
- casadi/include/highs/filereaderlp/builder.hpp +25 -0
- casadi/include/highs/filereaderlp/def.hpp +19 -0
- casadi/include/highs/filereaderlp/model.hpp +68 -0
- casadi/include/highs/filereaderlp/reader.hpp +10 -0
- casadi/include/highs/interfaces/highs_c_api.h +2283 -0
- casadi/include/highs/io/Filereader.h +47 -0
- casadi/include/highs/io/FilereaderEms.h +33 -0
- casadi/include/highs/io/FilereaderLp.h +54 -0
- casadi/include/highs/io/FilereaderMps.h +30 -0
- casadi/include/highs/io/HMPSIO.h +81 -0
- casadi/include/highs/io/HMpsFF.h +235 -0
- casadi/include/highs/io/HighsIO.h +109 -0
- casadi/include/highs/io/LoadOptions.h +27 -0
- casadi/include/highs/ipm/IpxSolution.h +35 -0
- casadi/include/highs/ipm/IpxWrapper.h +73 -0
- 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 +305 -0
- casadi/include/highs/lp_data/HStruct.h +146 -0
- casadi/include/highs/lp_data/HighsAnalysis.h +26 -0
- casadi/include/highs/lp_data/HighsCallback.h +40 -0
- casadi/include/highs/lp_data/HighsCallbackStruct.h +62 -0
- casadi/include/highs/lp_data/HighsDebug.h +37 -0
- casadi/include/highs/lp_data/HighsInfo.h +322 -0
- casadi/include/highs/lp_data/HighsInfoDebug.h +30 -0
- casadi/include/highs/lp_data/HighsLp.h +101 -0
- casadi/include/highs/lp_data/HighsLpSolverObject.h +48 -0
- casadi/include/highs/lp_data/HighsLpUtils.h +266 -0
- casadi/include/highs/lp_data/HighsModelUtils.h +109 -0
- casadi/include/highs/lp_data/HighsOptions.h +1357 -0
- casadi/include/highs/lp_data/HighsRanging.h +46 -0
- casadi/include/highs/lp_data/HighsRuntimeOptions.h +276 -0
- casadi/include/highs/lp_data/HighsSolution.h +137 -0
- casadi/include/highs/lp_data/HighsSolutionDebug.h +90 -0
- casadi/include/highs/lp_data/HighsSolve.h +26 -0
- casadi/include/highs/lp_data/HighsStatus.h +32 -0
- casadi/include/highs/mip/HighsCliqueTable.h +318 -0
- casadi/include/highs/mip/HighsConflictPool.h +112 -0
- casadi/include/highs/mip/HighsCutGeneration.h +96 -0
- casadi/include/highs/mip/HighsCutPool.h +171 -0
- casadi/include/highs/mip/HighsDebugSol.h +135 -0
- casadi/include/highs/mip/HighsDomain.h +641 -0
- casadi/include/highs/mip/HighsDomainChange.h +51 -0
- casadi/include/highs/mip/HighsDynamicRowMatrix.h +107 -0
- casadi/include/highs/mip/HighsGFkSolve.h +441 -0
- casadi/include/highs/mip/HighsImplications.h +146 -0
- casadi/include/highs/mip/HighsLpAggregator.h +53 -0
- casadi/include/highs/mip/HighsLpRelaxation.h +360 -0
- casadi/include/highs/mip/HighsMipSolver.h +105 -0
- casadi/include/highs/mip/HighsMipSolverData.h +236 -0
- casadi/include/highs/mip/HighsModkSeparator.h +63 -0
- casadi/include/highs/mip/HighsNodeQueue.h +314 -0
- casadi/include/highs/mip/HighsObjectiveFunction.h +74 -0
- casadi/include/highs/mip/HighsPathSeparator.h +42 -0
- casadi/include/highs/mip/HighsPrimalHeuristics.h +68 -0
- casadi/include/highs/mip/HighsPseudocost.h +363 -0
- casadi/include/highs/mip/HighsRedcostFixing.h +45 -0
- casadi/include/highs/mip/HighsSearch.h +244 -0
- casadi/include/highs/mip/HighsSeparation.h +44 -0
- casadi/include/highs/mip/HighsSeparator.h +56 -0
- casadi/include/highs/mip/HighsTableauSeparator.h +37 -0
- casadi/include/highs/mip/HighsTransformedLp.h +66 -0
- casadi/include/highs/model/HighsHessian.h +54 -0
- casadi/include/highs/model/HighsHessianUtils.h +49 -0
- casadi/include/highs/model/HighsModel.h +52 -0
- casadi/include/highs/parallel/HighsBinarySemaphore.h +113 -0
- casadi/include/highs/parallel/HighsCacheAlign.h +87 -0
- casadi/include/highs/parallel/HighsCombinable.h +121 -0
- casadi/include/highs/parallel/HighsMutex.h +129 -0
- casadi/include/highs/parallel/HighsParallel.h +133 -0
- casadi/include/highs/parallel/HighsRaceTimer.h +43 -0
- casadi/include/highs/parallel/HighsSchedulerConstants.h +24 -0
- casadi/include/highs/parallel/HighsSpinMutex.h +53 -0
- casadi/include/highs/parallel/HighsSplitDeque.h +583 -0
- casadi/include/highs/parallel/HighsTask.h +175 -0
- casadi/include/highs/parallel/HighsTaskExecutor.h +209 -0
- 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 +365 -0
- casadi/include/highs/presolve/HPresolveAnalysis.h +54 -0
- casadi/include/highs/presolve/HighsPostsolveStack.h +907 -0
- casadi/include/highs/presolve/HighsSymmetry.h +284 -0
- casadi/include/highs/presolve/ICrash.h +127 -0
- casadi/include/highs/presolve/ICrashUtil.h +65 -0
- casadi/include/highs/presolve/ICrashX.h +26 -0
- casadi/include/highs/presolve/PresolveComponent.h +93 -0
- casadi/include/highs/qpsolver/a_asm.hpp +67 -0
- casadi/include/highs/qpsolver/a_quass.hpp +19 -0
- 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/perturbation.hpp +8 -0
- casadi/include/highs/qpsolver/pricing.hpp +15 -0
- casadi/include/highs/qpsolver/qpconst.hpp +27 -0
- casadi/include/highs/qpsolver/qpvector.hpp +235 -0
- casadi/include/highs/qpsolver/quass.hpp +20 -0
- casadi/include/highs/qpsolver/ratiotest.hpp +19 -0
- casadi/include/highs/qpsolver/runtime.hpp +38 -0
- casadi/include/highs/qpsolver/scaling.hpp +8 -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 +422 -0
- casadi/include/highs/simplex/HEkk.h +403 -0
- casadi/include/highs/simplex/HEkkDual.h +515 -0
- casadi/include/highs/simplex/HEkkDualRHS.h +137 -0
- casadi/include/highs/simplex/HEkkDualRow.h +204 -0
- casadi/include/highs/simplex/HEkkPrimal.h +195 -0
- casadi/include/highs/simplex/HSimplex.h +45 -0
- casadi/include/highs/simplex/HSimplexDebug.h +51 -0
- casadi/include/highs/simplex/HSimplexNla.h +184 -0
- casadi/include/highs/simplex/HSimplexReport.h +24 -0
- casadi/include/highs/simplex/HighsSimplexAnalysis.h +503 -0
- casadi/include/highs/simplex/SimplexConst.h +274 -0
- casadi/include/highs/simplex/SimplexStruct.h +264 -0
- casadi/include/highs/simplex/SimplexTimer.h +427 -0
- casadi/include/highs/test/DevKkt.h +146 -0
- casadi/include/highs/test/KktCh2.h +82 -0
- casadi/include/highs/util/FactorTimer.h +224 -0
- casadi/include/highs/util/HFactor.h +587 -0
- casadi/include/highs/util/HFactorConst.h +84 -0
- casadi/include/highs/util/HFactorDebug.h +58 -0
- casadi/include/highs/util/HSet.h +92 -0
- casadi/include/highs/util/HVector.h +25 -0
- casadi/include/highs/util/HVectorBase.h +105 -0
- casadi/include/highs/util/HighsCDouble.h +310 -0
- casadi/include/highs/util/HighsComponent.h +56 -0
- casadi/include/highs/util/HighsDataStack.h +86 -0
- casadi/include/highs/util/HighsDisjointSets.h +110 -0
- casadi/include/highs/util/HighsHash.h +1277 -0
- casadi/include/highs/util/HighsHashTree.h +1443 -0
- casadi/include/highs/util/HighsInt.h +39 -0
- casadi/include/highs/util/HighsIntegers.h +215 -0
- casadi/include/highs/util/HighsLinearSumBounds.h +160 -0
- casadi/include/highs/util/HighsMatrixPic.h +40 -0
- casadi/include/highs/util/HighsMatrixSlice.h +564 -0
- casadi/include/highs/util/HighsMatrixUtils.h +57 -0
- casadi/include/highs/util/HighsMemoryAllocation.h +55 -0
- casadi/include/highs/util/HighsRandom.h +245 -0
- casadi/include/highs/util/HighsRbTree.h +455 -0
- casadi/include/highs/util/HighsSort.h +134 -0
- casadi/include/highs/util/HighsSparseMatrix.h +147 -0
- casadi/include/highs/util/HighsSparseVectorSum.h +98 -0
- casadi/include/highs/util/HighsSplay.h +138 -0
- casadi/include/highs/util/HighsTimer.h +343 -0
- casadi/include/highs/util/HighsUtils.h +210 -0
- casadi/include/highs/util/stringutil.h +44 -0
- 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/hpipm_aux_mem.h +52 -0
- casadi/include/hpipm_aux_string.h +50 -0
- casadi/include/hpipm_common.h +76 -0
- casadi/include/hpipm_d_cast_qcqp.h +71 -0
- casadi/include/hpipm_d_cond.h +135 -0
- casadi/include/hpipm_d_cond_aux.h +92 -0
- casadi/include/hpipm_d_cond_qcqp.h +129 -0
- casadi/include/hpipm_d_core_qp_ipm.h +101 -0
- casadi/include/hpipm_d_core_qp_ipm_aux.h +68 -0
- casadi/include/hpipm_d_dense_qcqp.h +199 -0
- casadi/include/hpipm_d_dense_qcqp_dim.h +98 -0
- casadi/include/hpipm_d_dense_qcqp_ipm.h +193 -0
- casadi/include/hpipm_d_dense_qcqp_res.h +108 -0
- casadi/include/hpipm_d_dense_qcqp_sol.h +85 -0
- casadi/include/hpipm_d_dense_qcqp_utils.h +82 -0
- casadi/include/hpipm_d_dense_qp.h +207 -0
- casadi/include/hpipm_d_dense_qp_dim.h +92 -0
- casadi/include/hpipm_d_dense_qp_ipm.h +260 -0
- casadi/include/hpipm_d_dense_qp_kkt.h +72 -0
- casadi/include/hpipm_d_dense_qp_res.h +106 -0
- casadi/include/hpipm_d_dense_qp_sol.h +94 -0
- casadi/include/hpipm_d_dense_qp_utils.h +83 -0
- casadi/include/hpipm_d_ocp_qcqp.h +322 -0
- casadi/include/hpipm_d_ocp_qcqp_dim.h +130 -0
- casadi/include/hpipm_d_ocp_qcqp_ipm.h +192 -0
- casadi/include/hpipm_d_ocp_qcqp_red.h +118 -0
- casadi/include/hpipm_d_ocp_qcqp_res.h +115 -0
- casadi/include/hpipm_d_ocp_qcqp_sol.h +114 -0
- casadi/include/hpipm_d_ocp_qcqp_utils.h +81 -0
- casadi/include/hpipm_d_ocp_qp.h +306 -0
- casadi/include/hpipm_d_ocp_qp_dim.h +142 -0
- casadi/include/hpipm_d_ocp_qp_ipm.h +252 -0
- casadi/include/hpipm_d_ocp_qp_kkt.h +66 -0
- casadi/include/hpipm_d_ocp_qp_red.h +117 -0
- casadi/include/hpipm_d_ocp_qp_res.h +113 -0
- casadi/include/hpipm_d_ocp_qp_sol.h +128 -0
- casadi/include/hpipm_d_ocp_qp_utils.h +82 -0
- casadi/include/hpipm_d_part_cond.h +115 -0
- casadi/include/hpipm_d_part_cond_qcqp.h +106 -0
- casadi/include/hpipm_d_sim_erk.h +122 -0
- casadi/include/hpipm_d_sim_rk.h +71 -0
- casadi/include/hpipm_d_tree_ocp_qcqp.h +213 -0
- casadi/include/hpipm_d_tree_ocp_qcqp_dim.h +117 -0
- casadi/include/hpipm_d_tree_ocp_qcqp_ipm.h +191 -0
- casadi/include/hpipm_d_tree_ocp_qcqp_res.h +109 -0
- casadi/include/hpipm_d_tree_ocp_qcqp_sol.h +99 -0
- casadi/include/hpipm_d_tree_ocp_qcqp_utils.h +84 -0
- casadi/include/hpipm_d_tree_ocp_qp.h +195 -0
- casadi/include/hpipm_d_tree_ocp_qp_dim.h +111 -0
- casadi/include/hpipm_d_tree_ocp_qp_ipm.h +209 -0
- casadi/include/hpipm_d_tree_ocp_qp_kkt.h +52 -0
- casadi/include/hpipm_d_tree_ocp_qp_res.h +107 -0
- casadi/include/hpipm_d_tree_ocp_qp_sol.h +100 -0
- casadi/include/hpipm_d_tree_ocp_qp_utils.h +83 -0
- casadi/include/hpipm_m_dense_qp.h +68 -0
- casadi/include/hpipm_m_dense_qp_dim.h +68 -0
- casadi/include/hpipm_m_ocp_qp.h +49 -0
- casadi/include/hpipm_m_ocp_qp_ipm_hard.h +115 -0
- casadi/include/hpipm_m_ocp_qp_kkt.h +45 -0
- casadi/include/hpipm_s_cast_qcqp.h +72 -0
- casadi/include/hpipm_s_cond.h +137 -0
- casadi/include/hpipm_s_cond_aux.h +92 -0
- casadi/include/hpipm_s_cond_qcqp.h +130 -0
- casadi/include/hpipm_s_core_qp_ipm.h +101 -0
- casadi/include/hpipm_s_core_qp_ipm_aux.h +68 -0
- casadi/include/hpipm_s_dense_qcqp.h +200 -0
- casadi/include/hpipm_s_dense_qcqp_dim.h +99 -0
- casadi/include/hpipm_s_dense_qcqp_ipm.h +204 -0
- casadi/include/hpipm_s_dense_qcqp_res.h +109 -0
- casadi/include/hpipm_s_dense_qcqp_sol.h +86 -0
- casadi/include/hpipm_s_dense_qcqp_utils.h +83 -0
- casadi/include/hpipm_s_dense_qp.h +207 -0
- casadi/include/hpipm_s_dense_qp_dim.h +94 -0
- casadi/include/hpipm_s_dense_qp_ipm.h +260 -0
- casadi/include/hpipm_s_dense_qp_kkt.h +72 -0
- casadi/include/hpipm_s_dense_qp_res.h +107 -0
- casadi/include/hpipm_s_dense_qp_sol.h +94 -0
- casadi/include/hpipm_s_dense_qp_utils.h +84 -0
- casadi/include/hpipm_s_ocp_qcqp.h +322 -0
- casadi/include/hpipm_s_ocp_qcqp_dim.h +131 -0
- casadi/include/hpipm_s_ocp_qcqp_ipm.h +193 -0
- casadi/include/hpipm_s_ocp_qcqp_red.h +119 -0
- casadi/include/hpipm_s_ocp_qcqp_res.h +116 -0
- casadi/include/hpipm_s_ocp_qcqp_sol.h +115 -0
- casadi/include/hpipm_s_ocp_qcqp_utils.h +82 -0
- casadi/include/hpipm_s_ocp_qp.h +306 -0
- casadi/include/hpipm_s_ocp_qp_dim.h +141 -0
- casadi/include/hpipm_s_ocp_qp_ipm.h +252 -0
- casadi/include/hpipm_s_ocp_qp_kkt.h +66 -0
- casadi/include/hpipm_s_ocp_qp_red.h +118 -0
- casadi/include/hpipm_s_ocp_qp_res.h +115 -0
- casadi/include/hpipm_s_ocp_qp_sol.h +128 -0
- casadi/include/hpipm_s_ocp_qp_utils.h +83 -0
- casadi/include/hpipm_s_part_cond.h +115 -0
- casadi/include/hpipm_s_part_cond_qcqp.h +107 -0
- casadi/include/hpipm_s_sim_erk.h +121 -0
- casadi/include/hpipm_s_sim_rk.h +72 -0
- casadi/include/hpipm_s_tree_ocp_qcqp.h +213 -0
- casadi/include/hpipm_s_tree_ocp_qcqp_dim.h +118 -0
- casadi/include/hpipm_s_tree_ocp_qcqp_ipm.h +192 -0
- casadi/include/hpipm_s_tree_ocp_qcqp_res.h +110 -0
- casadi/include/hpipm_s_tree_ocp_qcqp_sol.h +97 -0
- casadi/include/hpipm_s_tree_ocp_qcqp_utils.h +85 -0
- casadi/include/hpipm_s_tree_ocp_qp.h +196 -0
- casadi/include/hpipm_s_tree_ocp_qp_dim.h +111 -0
- casadi/include/hpipm_s_tree_ocp_qp_ipm.h +208 -0
- casadi/include/hpipm_s_tree_ocp_qp_kkt.h +54 -0
- casadi/include/hpipm_s_tree_ocp_qp_res.h +108 -0
- casadi/include/hpipm_s_tree_ocp_qp_sol.h +98 -0
- casadi/include/hpipm_s_tree_ocp_qp_utils.h +84 -0
- casadi/include/hpipm_scenario_tree.h +70 -0
- casadi/include/hpipm_timing.h +67 -0
- casadi/include/hpipm_tree.h +76 -0
- casadi/include/licenses/CSparse/Doc/License.txt +19 -0
- casadi/include/licenses/FMI-Standard-2.0.2/LICENSE.txt +473 -0
- casadi/include/licenses/FMI-Standard-3.0/LICENSE.txt +464 -0
- casadi/include/licenses/blasfeo-external/LICENSE.txt +26 -0
- casadi/include/licenses/bonmin-external/Bonmin/LICENSE +87 -0
- casadi/include/licenses/bonmin-external/LICENSE +3 -0
- casadi/include/licenses/casadi/LICENSE/LICENSE.txt +165 -0
- casadi/include/licenses/casadi-sundials/LICENSE +64 -0
- casadi/include/licenses/casadi-sundials/cvodes/LICENSE +60 -0
- casadi/include/licenses/casadi-sundials/idas/LICENSE +59 -0
- casadi/include/licenses/casadi-sundials/kinsol/LICENSE +59 -0
- casadi/include/licenses/casadi-sundials/sundials/LICENSE +67 -0
- casadi/include/licenses/cbc-external/Cbc/LICENSE +239 -0
- casadi/include/licenses/cbc-external/LICENSE +245 -0
- casadi/include/licenses/cgl-external/Cgl/LICENSE +239 -0
- casadi/include/licenses/cgl-external/LICENSE +245 -0
- casadi/include/licenses/clp-external/Clp/LICENSE +239 -0
- casadi/include/licenses/clp-external/LICENSE +245 -0
- casadi/include/licenses/coinutils-external/CoinUtils/LICENSE +239 -0
- casadi/include/licenses/coinutils-external/LICENSE +245 -0
- casadi/include/licenses/fatrop-external/LICENSE.txt +165 -0
- 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.txt +21 -0
- casadi/include/licenses/highs-external/extern/filereaderlp/LICENSE +19 -0
- casadi/include/licenses/highs-external/extern/pdqsort/license.txt +16 -0
- casadi/include/licenses/hpipm-external/LICENSE.txt +26 -0
- casadi/include/licenses/hpipm-external/experimental/andrea/prototype/code/plotregion/license.txt +24 -0
- casadi/include/licenses/ipopt-external/LICENSE +260 -0
- casadi/include/licenses/metis-external/LICENSE +87 -0
- casadi/include/licenses/metis-external/metis-4.0/LICENSE +18 -0
- casadi/include/licenses/mockups-external/LICENSE +21 -0
- casadi/include/licenses/mumps-external/LICENSE +87 -0
- casadi/include/licenses/mumps-external/MUMPS/LICENSE +50 -0
- casadi/include/licenses/osi-external/LICENSE +245 -0
- casadi/include/licenses/osi-external/Osi/LICENSE +239 -0
- casadi/include/licenses/osqp-external/LICENSE +201 -0
- casadi/include/licenses/osqp-external/lin_sys/direct/qdldl/amd/LICENSE +36 -0
- casadi/include/licenses/osqp-external/lin_sys/direct/qdldl/qdldl_sources/LICENSE +201 -0
- casadi/include/licenses/qpOASES/LICENSE.txt +503 -0
- casadi/include/licenses/sleqp-external/LICENSE +165 -0
- casadi/include/licenses/superscs-external/LICENSE.txt +24 -0
- casadi/include/licenses/tinyxml2-9.0.0/LICENSE.txt +18 -0
- casadi/include/licenses/trlib-external/LICENSE +21 -0
- casadi/include/osqp/auxil.h +181 -0
- casadi/include/osqp/constants.h +128 -0
- casadi/include/osqp/cs.h +180 -0
- casadi/include/osqp/ctrlc.h +56 -0
- casadi/include/osqp/error.h +38 -0
- casadi/include/osqp/glob_opts.h +167 -0
- casadi/include/osqp/lin_alg.h +216 -0
- casadi/include/osqp/lin_sys.h +54 -0
- casadi/include/osqp/osqp.h +430 -0
- casadi/include/osqp/osqp_configure.h +49 -0
- casadi/include/osqp/polish.h +25 -0
- casadi/include/osqp/proj.h +37 -0
- casadi/include/osqp/scaling.h +44 -0
- casadi/include/osqp/types.h +326 -0
- casadi/include/osqp/util.h +222 -0
- casadi/include/osqp/version.h +9 -0
- casadi/include/qdldl/qdldl.h +169 -0
- casadi/include/qdldl/qdldl_types.h +23 -0
- casadi/include/s_blas.h +78 -0
- casadi/include/s_blas_64.h +73 -0
- casadi/include/sleqp/defs.h +58 -0
- casadi/include/sleqp/export.h +43 -0
- casadi/include/sleqp/pub_cmp.h +18 -0
- casadi/include/sleqp/pub_dyn.h +140 -0
- casadi/include/sleqp/pub_error.h +50 -0
- casadi/include/sleqp/pub_func.h +257 -0
- casadi/include/sleqp/pub_hess_struct.h +105 -0
- casadi/include/sleqp/pub_iterate.h +88 -0
- casadi/include/sleqp/pub_log.h +88 -0
- casadi/include/sleqp/pub_lsq.h +158 -0
- casadi/include/sleqp/pub_mem.h +52 -0
- casadi/include/sleqp/pub_problem.h +213 -0
- casadi/include/sleqp/pub_scale.h +150 -0
- casadi/include/sleqp/pub_settings.h +162 -0
- casadi/include/sleqp/pub_solver.h +155 -0
- casadi/include/sleqp/pub_types.h +230 -0
- casadi/include/sleqp/pub_working_set.h +135 -0
- casadi/include/sleqp/sparse/pub_mat.h +153 -0
- casadi/include/sleqp/sparse/pub_vec.h +336 -0
- casadi/include/sleqp.h +38 -0
- casadi/include/superscs/cones.h +185 -0
- casadi/include/superscs/constants.h +144 -0
- casadi/include/superscs/cs.h +109 -0
- casadi/include/superscs/ctrlc.h +77 -0
- casadi/include/superscs/directions.h +125 -0
- casadi/include/superscs/glbopts.h +240 -0
- casadi/include/superscs/linAlg.h +437 -0
- casadi/include/superscs/linSys.h +205 -0
- casadi/include/superscs/linsys/amatrix.h +77 -0
- casadi/include/superscs/linsys/common.h +49 -0
- casadi/include/superscs/normalize.h +138 -0
- casadi/include/superscs/scs.h +656 -0
- casadi/include/superscs/scs_blas.h +79 -0
- casadi/include/superscs/scs_parser.h +187 -0
- casadi/include/superscs/unit_test_util.h +210 -0
- casadi/include/superscs/util.h +354 -0
- casadi/include/tinyxml2.h +2380 -0
- casadi/include/trlib/trlib_eigen_inverse.h +118 -0
- casadi/include/trlib/trlib_krylov.h +493 -0
- casadi/include/trlib/trlib_leftmost.h +181 -0
- casadi/include/trlib/trlib_private.h +109 -0
- casadi/include/trlib/trlib_quadratic_zero.h +57 -0
- casadi/include/trlib/trlib_tri_factor.h +409 -0
- casadi/include/trlib/trlib_types.h +36 -0
- casadi/include/trlib.h +44 -0
- casadi/lib/cmake/tinyxml2/tinyxml2-config-version.cmake +65 -0
- casadi/lib/cmake/tinyxml2/tinyxml2-config.cmake +57 -0
- casadi/lib/cmake/tinyxml2/tinyxml2-static-targets-release.cmake +19 -0
- casadi/lib/cmake/tinyxml2/tinyxml2-static-targets.cmake +107 -0
- casadi/lib/libtinyxml2.a +0 -0
- casadi/lib/pkgconfig/tinyxml2.pc +10 -0
- casadi/libCbc.3.10.11.dylib +0 -0
- casadi/libCbc.3.dylib +0 -0
- casadi/libCbc.dylib +0 -0
- casadi/libCbc.la +35 -0
- casadi/libCbcSolver.3.10.11.dylib +0 -0
- casadi/libCbcSolver.3.dylib +0 -0
- casadi/libCbcSolver.dylib +0 -0
- casadi/libCbcSolver.la +35 -0
- casadi/libCgl.1.10.8.dylib +0 -0
- casadi/libCgl.1.dylib +0 -0
- casadi/libCgl.dylib +0 -0
- casadi/libCgl.la +35 -0
- casadi/libClp.1.14.9.dylib +0 -0
- casadi/libClp.1.dylib +0 -0
- casadi/libClp.dylib +0 -0
- casadi/libClp.la +35 -0
- casadi/libClpSolver.1.14.9.dylib +0 -0
- casadi/libClpSolver.1.dylib +0 -0
- casadi/libClpSolver.dylib +0 -0
- casadi/libClpSolver.la +35 -0
- casadi/libCoinUtils.3.11.10.dylib +0 -0
- casadi/libCoinUtils.3.dylib +0 -0
- casadi/libCoinUtils.dylib +0 -0
- casadi/libCoinUtils.la +35 -0
- casadi/libOsi.1.13.9.dylib +0 -0
- casadi/libOsi.1.dylib +0 -0
- casadi/libOsi.dylib +0 -0
- casadi/libOsi.la +35 -0
- casadi/libOsiCbc.3.10.11.dylib +0 -0
- casadi/libOsiCbc.3.dylib +0 -0
- casadi/libOsiCbc.dylib +0 -0
- casadi/libOsiCbc.la +35 -0
- casadi/libOsiClp.1.14.9.dylib +0 -0
- casadi/libOsiClp.1.dylib +0 -0
- casadi/libOsiClp.dylib +0 -0
- casadi/libOsiClp.la +35 -0
- casadi/libOsiCommonTests.1.13.9.dylib +0 -0
- casadi/libOsiCommonTests.1.dylib +0 -0
- casadi/libOsiCommonTests.dylib +0 -0
- casadi/libOsiCommonTests.la +35 -0
- 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 +35 -0
- 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_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_hpipm.3.7.dylib +0 -0
- casadi/libcasadi_conic_hpipm.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_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 +41 -0
- casadi/libcoinmumps.3.dylib +0 -0
- casadi/libcoinmumps.dylib +0 -0
- casadi/libcoinmumps.la +41 -0
- casadi/libcplex_adaptor.dylib +0 -0
- casadi/libfatrop.dylib +0 -0
- casadi/libgcc_s.1.1.dylib +0 -0
- casadi/libgcc_s.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/libhpipm.dylib +0 -0
- casadi/libindirect.a +0 -0
- casadi/libipopt.3.dylib +0 -0
- casadi/libipopt.dylib +0 -0
- casadi/libipopt.la +41 -0
- casadi/liblinsys.a +0 -0
- casadi/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 +41 -0
- 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 +12 -0
- casadi/pkgconfig/casadi.pc +12 -0
- casadi/pkgconfig/cbc.pc +12 -0
- casadi/pkgconfig/cgl.pc +12 -0
- casadi/pkgconfig/clp.pc +12 -0
- casadi/pkgconfig/coinmetis.pc +13 -0
- casadi/pkgconfig/coinmumps.pc +15 -0
- casadi/pkgconfig/coinutils.pc +12 -0
- casadi/pkgconfig/highs.pc +12 -0
- casadi/pkgconfig/ipopt.pc +15 -0
- casadi/pkgconfig/osi-cbc.pc +12 -0
- casadi/pkgconfig/osi-clp.pc +12 -0
- casadi/pkgconfig/osi-unittests.pc +12 -0
- casadi/pkgconfig/osi.pc +12 -0
- casadi/pkgconfig/sleqp.pc +10 -0
- casadi/tools/__init__.py +52 -0
- casadi/tools/bounds.py +107 -0
- casadi/tools/graph/__init__.py +35 -0
- casadi/tools/graph/graph.py +747 -0
- casadi/tools/in_out.py +89 -0
- casadi/tools/structure.py +1446 -0
- casadi/tools/structure3.py +1441 -0
- casadi-3.6.7.dist-info/METADATA +45 -0
- casadi-3.6.7.dist-info/RECORD +1312 -0
- casadi-3.6.7.dist-info/WHEEL +5 -0
- dummy.txt +1 -0
@@ -0,0 +1,907 @@
|
|
1
|
+
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
2
|
+
/* */
|
3
|
+
/* This file is part of the HiGHS linear optimization suite */
|
4
|
+
/* */
|
5
|
+
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
7
|
+
/* */
|
8
|
+
/* Available as open-source under the MIT License */
|
9
|
+
/* */
|
10
|
+
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
11
|
+
/**@file HighsPostsolveStack.h
|
12
|
+
* @brief Class to hold all information for postsolve and can transform back
|
13
|
+
* primal and dual solutions.
|
14
|
+
*/
|
15
|
+
|
16
|
+
#ifndef PRESOLVE_HIGHS_POSTSOLVE_STACK_H_
|
17
|
+
#define PRESOLVE_HIGHS_POSTSOLVE_STACK_H_
|
18
|
+
|
19
|
+
#include <algorithm>
|
20
|
+
#include <cassert>
|
21
|
+
#include <cmath>
|
22
|
+
#include <numeric>
|
23
|
+
#include <tuple>
|
24
|
+
#include <vector>
|
25
|
+
|
26
|
+
#include "lp_data/HConst.h"
|
27
|
+
#include "lp_data/HStruct.h"
|
28
|
+
#include "lp_data/HighsOptions.h"
|
29
|
+
#include "util/HighsCDouble.h"
|
30
|
+
#include "util/HighsDataStack.h"
|
31
|
+
#include "util/HighsMatrixSlice.h"
|
32
|
+
|
33
|
+
// class HighsOptions;
|
34
|
+
namespace presolve {
|
35
|
+
class HighsPostsolveStack {
|
36
|
+
// now a section of individual classes for each type of each transformation
|
37
|
+
// step that requires postsolve starts each class gets as first argument the
|
38
|
+
// current stack of ReductionValues and custom arguments that contain the
|
39
|
+
// necessary information that is required to undo the transformation. The
|
40
|
+
// constructor is responsible for storing all necessary information in class
|
41
|
+
// members and the reduction value stack. The class members should be as slim
|
42
|
+
// as possible and putting values on the reduction value stack should be
|
43
|
+
// preferred, because the classes are stored in a discriminated union and the
|
44
|
+
// largest size counts. The classes should implement an undo() function which
|
45
|
+
// gets the ReductionValues as argument and can be expected to be called such
|
46
|
+
// that the stack is in the state as after the constructor has been called.
|
47
|
+
// The undo() call must pop all values from the stack that were added during
|
48
|
+
// the constructor call, and should restore primal/dual solution values, as
|
49
|
+
// well as the basis status as appropriate.
|
50
|
+
public:
|
51
|
+
enum class RowType {
|
52
|
+
kGeq,
|
53
|
+
kLeq,
|
54
|
+
kEq,
|
55
|
+
};
|
56
|
+
struct Nonzero {
|
57
|
+
HighsInt index;
|
58
|
+
double value;
|
59
|
+
|
60
|
+
Nonzero(HighsInt index_, double value_) : index(index_), value(value_) {}
|
61
|
+
Nonzero() = default;
|
62
|
+
};
|
63
|
+
|
64
|
+
size_t debug_prev_numreductions = 0;
|
65
|
+
double debug_prev_col_lower = 0;
|
66
|
+
double debug_prev_col_upper = 0;
|
67
|
+
double debug_prev_row_lower = 0;
|
68
|
+
double debug_prev_row_upper = 0;
|
69
|
+
|
70
|
+
private:
|
71
|
+
/// transform a column x by a linear mapping with a new column x'.
|
72
|
+
/// I.e. substitute x = a * x' + b
|
73
|
+
struct LinearTransform {
|
74
|
+
double scale;
|
75
|
+
double constant;
|
76
|
+
HighsInt col;
|
77
|
+
|
78
|
+
void undo(const HighsOptions& options, HighsSolution& solution) const;
|
79
|
+
|
80
|
+
void transformToPresolvedSpace(std::vector<double>& primalSol) const;
|
81
|
+
};
|
82
|
+
|
83
|
+
struct FreeColSubstitution {
|
84
|
+
double rhs;
|
85
|
+
double colCost;
|
86
|
+
HighsInt row;
|
87
|
+
HighsInt col;
|
88
|
+
RowType rowType;
|
89
|
+
|
90
|
+
void undo(const HighsOptions& options,
|
91
|
+
const std::vector<Nonzero>& rowValues,
|
92
|
+
const std::vector<Nonzero>& colValues, HighsSolution& solution,
|
93
|
+
HighsBasis& basis);
|
94
|
+
};
|
95
|
+
|
96
|
+
struct DoubletonEquation {
|
97
|
+
double coef;
|
98
|
+
double coefSubst;
|
99
|
+
double rhs;
|
100
|
+
double substLower;
|
101
|
+
double substUpper;
|
102
|
+
double substCost;
|
103
|
+
HighsInt row;
|
104
|
+
HighsInt colSubst;
|
105
|
+
HighsInt col;
|
106
|
+
bool lowerTightened;
|
107
|
+
bool upperTightened;
|
108
|
+
RowType rowType;
|
109
|
+
|
110
|
+
void undo(const HighsOptions& options,
|
111
|
+
const std::vector<Nonzero>& colValues, HighsSolution& solution,
|
112
|
+
HighsBasis& basis) const;
|
113
|
+
};
|
114
|
+
|
115
|
+
struct EqualityRowAddition {
|
116
|
+
HighsInt row;
|
117
|
+
HighsInt addedEqRow;
|
118
|
+
double eqRowScale;
|
119
|
+
|
120
|
+
void undo(const HighsOptions& options,
|
121
|
+
const std::vector<Nonzero>& eqRowValues, HighsSolution& solution,
|
122
|
+
HighsBasis& basis) const;
|
123
|
+
};
|
124
|
+
|
125
|
+
struct EqualityRowAdditions {
|
126
|
+
HighsInt addedEqRow;
|
127
|
+
|
128
|
+
void undo(const HighsOptions& options,
|
129
|
+
const std::vector<Nonzero>& eqRowValues,
|
130
|
+
const std::vector<Nonzero>& targetRows, HighsSolution& solution,
|
131
|
+
HighsBasis& basis) const;
|
132
|
+
};
|
133
|
+
struct SingletonRow {
|
134
|
+
double coef;
|
135
|
+
HighsInt row;
|
136
|
+
HighsInt col;
|
137
|
+
bool colLowerTightened;
|
138
|
+
bool colUpperTightened;
|
139
|
+
|
140
|
+
void undo(const HighsOptions& options, HighsSolution& solution,
|
141
|
+
HighsBasis& basis) const;
|
142
|
+
};
|
143
|
+
|
144
|
+
// column fixed to lower or upper bound
|
145
|
+
struct FixedCol {
|
146
|
+
double fixValue;
|
147
|
+
double colCost;
|
148
|
+
HighsInt col;
|
149
|
+
HighsBasisStatus fixType;
|
150
|
+
|
151
|
+
void undo(const HighsOptions& options,
|
152
|
+
const std::vector<Nonzero>& colValues, HighsSolution& solution,
|
153
|
+
HighsBasis& basis) const;
|
154
|
+
};
|
155
|
+
|
156
|
+
struct RedundantRow {
|
157
|
+
HighsInt row;
|
158
|
+
|
159
|
+
void undo(const HighsOptions& options, HighsSolution& solution,
|
160
|
+
HighsBasis& basis) const;
|
161
|
+
};
|
162
|
+
|
163
|
+
struct ForcingRow {
|
164
|
+
double side;
|
165
|
+
HighsInt row;
|
166
|
+
RowType rowType;
|
167
|
+
|
168
|
+
void undo(const HighsOptions& options,
|
169
|
+
const std::vector<Nonzero>& rowValues, HighsSolution& solution,
|
170
|
+
HighsBasis& basis) const;
|
171
|
+
};
|
172
|
+
|
173
|
+
struct ForcingColumn {
|
174
|
+
double colCost;
|
175
|
+
double colBound;
|
176
|
+
HighsInt col;
|
177
|
+
bool atInfiniteUpper;
|
178
|
+
bool colIntegral;
|
179
|
+
|
180
|
+
void undo(const HighsOptions& options,
|
181
|
+
const std::vector<Nonzero>& colValues, HighsSolution& solution,
|
182
|
+
HighsBasis& basis) const;
|
183
|
+
};
|
184
|
+
|
185
|
+
struct ForcingColumnRemovedRow {
|
186
|
+
double rhs;
|
187
|
+
HighsInt row;
|
188
|
+
void undo(const HighsOptions& options,
|
189
|
+
const std::vector<Nonzero>& rowValues, HighsSolution& solution,
|
190
|
+
HighsBasis& basis) const;
|
191
|
+
};
|
192
|
+
|
193
|
+
struct DuplicateRow {
|
194
|
+
double duplicateRowScale;
|
195
|
+
HighsInt duplicateRow;
|
196
|
+
HighsInt row;
|
197
|
+
bool rowLowerTightened;
|
198
|
+
bool rowUpperTightened;
|
199
|
+
|
200
|
+
void undo(const HighsOptions& options, HighsSolution& solution,
|
201
|
+
HighsBasis& basis) const;
|
202
|
+
};
|
203
|
+
|
204
|
+
struct DuplicateColumn {
|
205
|
+
double colScale;
|
206
|
+
double colLower;
|
207
|
+
double colUpper;
|
208
|
+
double duplicateColLower;
|
209
|
+
double duplicateColUpper;
|
210
|
+
HighsInt col;
|
211
|
+
HighsInt duplicateCol;
|
212
|
+
bool colIntegral;
|
213
|
+
bool duplicateColIntegral;
|
214
|
+
|
215
|
+
void undo(const HighsOptions& options, HighsSolution& solution,
|
216
|
+
HighsBasis& basis) const;
|
217
|
+
bool okMerge(const double tolerance) const;
|
218
|
+
void undoFix(const HighsOptions& options, HighsSolution& solution) const;
|
219
|
+
void transformToPresolvedSpace(std::vector<double>& primalSol) const;
|
220
|
+
};
|
221
|
+
|
222
|
+
/// tags for reduction
|
223
|
+
enum class ReductionType : uint8_t {
|
224
|
+
kLinearTransform,
|
225
|
+
kFreeColSubstitution,
|
226
|
+
kDoubletonEquation,
|
227
|
+
kEqualityRowAddition,
|
228
|
+
kEqualityRowAdditions,
|
229
|
+
kSingletonRow,
|
230
|
+
kFixedCol,
|
231
|
+
kRedundantRow,
|
232
|
+
kForcingRow,
|
233
|
+
kForcingColumn,
|
234
|
+
kForcingColumnRemovedRow,
|
235
|
+
kDuplicateRow,
|
236
|
+
kDuplicateColumn,
|
237
|
+
};
|
238
|
+
|
239
|
+
HighsDataStack reductionValues;
|
240
|
+
std::vector<std::pair<ReductionType, size_t>> reductions;
|
241
|
+
std::vector<HighsInt> origColIndex;
|
242
|
+
std::vector<HighsInt> origRowIndex;
|
243
|
+
std::vector<uint8_t> linearlyTransformable;
|
244
|
+
|
245
|
+
std::vector<Nonzero> rowValues;
|
246
|
+
std::vector<Nonzero> colValues;
|
247
|
+
HighsInt origNumCol = -1;
|
248
|
+
HighsInt origNumRow = -1;
|
249
|
+
|
250
|
+
void reductionAdded(ReductionType type) {
|
251
|
+
size_t position = reductionValues.getCurrentDataSize();
|
252
|
+
reductions.emplace_back(type, position);
|
253
|
+
}
|
254
|
+
|
255
|
+
public:
|
256
|
+
const HighsInt* getOrigRowsIndex() const { return origRowIndex.data(); }
|
257
|
+
|
258
|
+
const HighsInt* getOrigColsIndex() const { return origColIndex.data(); }
|
259
|
+
|
260
|
+
HighsInt getOrigRowIndex(HighsInt row) const {
|
261
|
+
assert(row < (HighsInt)origRowIndex.size());
|
262
|
+
return origRowIndex[row];
|
263
|
+
}
|
264
|
+
|
265
|
+
HighsInt getOrigColIndex(HighsInt col) const {
|
266
|
+
assert(col < (HighsInt)origColIndex.size());
|
267
|
+
return origColIndex[col];
|
268
|
+
}
|
269
|
+
|
270
|
+
void appendCutsToModel(HighsInt numCuts) {
|
271
|
+
size_t currNumRow = origRowIndex.size();
|
272
|
+
size_t newNumRow = currNumRow + numCuts;
|
273
|
+
origRowIndex.resize(newNumRow);
|
274
|
+
for (size_t i = currNumRow; i != newNumRow; ++i)
|
275
|
+
origRowIndex[i] = origNumRow++;
|
276
|
+
}
|
277
|
+
|
278
|
+
void removeCutsFromModel(HighsInt numCuts) {
|
279
|
+
origNumRow -= numCuts;
|
280
|
+
|
281
|
+
size_t origRowIndexSize = origRowIndex.size();
|
282
|
+
for (size_t i = origRowIndex.size(); i > 0; --i) {
|
283
|
+
if (origRowIndex[i - 1] < origNumRow) break;
|
284
|
+
--origRowIndexSize;
|
285
|
+
}
|
286
|
+
|
287
|
+
origRowIndex.resize(origRowIndexSize);
|
288
|
+
}
|
289
|
+
|
290
|
+
HighsInt getOrigNumRow() const { return origNumRow; }
|
291
|
+
|
292
|
+
HighsInt getOrigNumCol() const { return origNumCol; }
|
293
|
+
|
294
|
+
void initializeIndexMaps(HighsInt numRow, HighsInt numCol);
|
295
|
+
|
296
|
+
void compressIndexMaps(const std::vector<HighsInt>& newRowIndex,
|
297
|
+
const std::vector<HighsInt>& newColIndex);
|
298
|
+
|
299
|
+
/// transform a column x by a linear mapping with a new column x'.
|
300
|
+
/// I.e. substitute x = scale * x' + constant
|
301
|
+
void linearTransform(HighsInt col, double scale, double constant) {
|
302
|
+
reductionValues.push(LinearTransform{scale, constant, origColIndex[col]});
|
303
|
+
reductionAdded(ReductionType::kLinearTransform);
|
304
|
+
}
|
305
|
+
|
306
|
+
template <typename RowStorageFormat, typename ColStorageFormat>
|
307
|
+
void freeColSubstitution(HighsInt row, HighsInt col, double rhs,
|
308
|
+
double colCost, RowType rowType,
|
309
|
+
const HighsMatrixSlice<RowStorageFormat>& rowVec,
|
310
|
+
const HighsMatrixSlice<ColStorageFormat>& colVec) {
|
311
|
+
rowValues.clear();
|
312
|
+
for (const HighsSliceNonzero& rowVal : rowVec)
|
313
|
+
rowValues.emplace_back(origColIndex[rowVal.index()], rowVal.value());
|
314
|
+
|
315
|
+
colValues.clear();
|
316
|
+
for (const HighsSliceNonzero& colVal : colVec)
|
317
|
+
colValues.emplace_back(origRowIndex[colVal.index()], colVal.value());
|
318
|
+
|
319
|
+
reductionValues.push(FreeColSubstitution{rhs, colCost, origRowIndex[row],
|
320
|
+
origColIndex[col], rowType});
|
321
|
+
reductionValues.push(rowValues);
|
322
|
+
reductionValues.push(colValues);
|
323
|
+
reductionAdded(ReductionType::kFreeColSubstitution);
|
324
|
+
}
|
325
|
+
|
326
|
+
template <typename ColStorageFormat>
|
327
|
+
void doubletonEquation(HighsInt row, HighsInt colSubst, HighsInt col,
|
328
|
+
double coefSubst, double coef, double rhs,
|
329
|
+
double substLower, double substUpper, double substCost,
|
330
|
+
bool lowerTightened, bool upperTightened,
|
331
|
+
RowType rowType,
|
332
|
+
const HighsMatrixSlice<ColStorageFormat>& colVec) {
|
333
|
+
colValues.clear();
|
334
|
+
for (const HighsSliceNonzero& colVal : colVec)
|
335
|
+
colValues.emplace_back(origRowIndex[colVal.index()], colVal.value());
|
336
|
+
|
337
|
+
reductionValues.push(DoubletonEquation{
|
338
|
+
coef, coefSubst, rhs, substLower, substUpper, substCost,
|
339
|
+
row == -1 ? -1 : origRowIndex[row], origColIndex[colSubst],
|
340
|
+
origColIndex[col], lowerTightened, upperTightened, rowType});
|
341
|
+
reductionValues.push(colValues);
|
342
|
+
reductionAdded(ReductionType::kDoubletonEquation);
|
343
|
+
}
|
344
|
+
|
345
|
+
template <typename RowStorageFormat>
|
346
|
+
void equalityRowAddition(HighsInt row, HighsInt addedEqRow, double eqRowScale,
|
347
|
+
const HighsMatrixSlice<RowStorageFormat>& eqRowVec) {
|
348
|
+
rowValues.clear();
|
349
|
+
for (const HighsSliceNonzero& rowVal : eqRowVec)
|
350
|
+
rowValues.emplace_back(origColIndex[rowVal.index()], rowVal.value());
|
351
|
+
|
352
|
+
reductionValues.push(EqualityRowAddition{
|
353
|
+
origRowIndex[row], origRowIndex[addedEqRow], eqRowScale});
|
354
|
+
reductionValues.push(rowValues);
|
355
|
+
reductionAdded(ReductionType::kEqualityRowAddition);
|
356
|
+
}
|
357
|
+
|
358
|
+
template <typename RowStorageFormat>
|
359
|
+
void equalityRowAdditions(HighsInt addedEqRow,
|
360
|
+
const HighsMatrixSlice<RowStorageFormat>& eqRowVec,
|
361
|
+
const std::vector<Nonzero>& targetRows) {
|
362
|
+
rowValues.clear();
|
363
|
+
for (const HighsSliceNonzero& rowVal : eqRowVec)
|
364
|
+
rowValues.emplace_back(origColIndex[rowVal.index()], rowVal.value());
|
365
|
+
|
366
|
+
reductionValues.push(EqualityRowAdditions{origRowIndex[addedEqRow]});
|
367
|
+
reductionValues.push(rowValues);
|
368
|
+
reductionValues.push(targetRows);
|
369
|
+
reductionAdded(ReductionType::kEqualityRowAdditions);
|
370
|
+
}
|
371
|
+
|
372
|
+
void singletonRow(HighsInt row, HighsInt col, double coef,
|
373
|
+
bool tightenedColLower, bool tightenedColUpper) {
|
374
|
+
reductionValues.push(SingletonRow{coef, origRowIndex[row],
|
375
|
+
origColIndex[col], tightenedColLower,
|
376
|
+
tightenedColUpper});
|
377
|
+
reductionAdded(ReductionType::kSingletonRow);
|
378
|
+
}
|
379
|
+
|
380
|
+
template <typename ColStorageFormat>
|
381
|
+
void fixedColAtLower(HighsInt col, double fixValue, double colCost,
|
382
|
+
const HighsMatrixSlice<ColStorageFormat>& colVec) {
|
383
|
+
assert(std::isfinite(fixValue));
|
384
|
+
colValues.clear();
|
385
|
+
for (const HighsSliceNonzero& colVal : colVec)
|
386
|
+
colValues.emplace_back(origRowIndex[colVal.index()], colVal.value());
|
387
|
+
|
388
|
+
reductionValues.push(FixedCol{fixValue, colCost, origColIndex[col],
|
389
|
+
HighsBasisStatus::kLower});
|
390
|
+
reductionValues.push(colValues);
|
391
|
+
reductionAdded(ReductionType::kFixedCol);
|
392
|
+
}
|
393
|
+
|
394
|
+
template <typename ColStorageFormat>
|
395
|
+
void fixedColAtUpper(HighsInt col, double fixValue, double colCost,
|
396
|
+
const HighsMatrixSlice<ColStorageFormat>& colVec) {
|
397
|
+
assert(std::isfinite(fixValue));
|
398
|
+
colValues.clear();
|
399
|
+
for (const HighsSliceNonzero& colVal : colVec)
|
400
|
+
colValues.emplace_back(origRowIndex[colVal.index()], colVal.value());
|
401
|
+
|
402
|
+
reductionValues.push(FixedCol{fixValue, colCost, origColIndex[col],
|
403
|
+
HighsBasisStatus::kUpper});
|
404
|
+
reductionValues.push(colValues);
|
405
|
+
reductionAdded(ReductionType::kFixedCol);
|
406
|
+
}
|
407
|
+
|
408
|
+
template <typename ColStorageFormat>
|
409
|
+
void fixedColAtZero(HighsInt col, double colCost,
|
410
|
+
const HighsMatrixSlice<ColStorageFormat>& colVec) {
|
411
|
+
colValues.clear();
|
412
|
+
for (const HighsSliceNonzero& colVal : colVec)
|
413
|
+
colValues.emplace_back(origRowIndex[colVal.index()], colVal.value());
|
414
|
+
|
415
|
+
reductionValues.push(
|
416
|
+
FixedCol{0.0, colCost, origColIndex[col], HighsBasisStatus::kZero});
|
417
|
+
reductionValues.push(colValues);
|
418
|
+
reductionAdded(ReductionType::kFixedCol);
|
419
|
+
}
|
420
|
+
|
421
|
+
template <typename ColStorageFormat>
|
422
|
+
void removedFixedCol(HighsInt col, double fixValue, double colCost,
|
423
|
+
const HighsMatrixSlice<ColStorageFormat>& colVec) {
|
424
|
+
assert(std::isfinite(fixValue));
|
425
|
+
colValues.clear();
|
426
|
+
for (const HighsSliceNonzero& colVal : colVec)
|
427
|
+
colValues.emplace_back(origRowIndex[colVal.index()], colVal.value());
|
428
|
+
|
429
|
+
reductionValues.push(FixedCol{fixValue, colCost, origColIndex[col],
|
430
|
+
HighsBasisStatus::kNonbasic});
|
431
|
+
reductionValues.push(colValues);
|
432
|
+
reductionAdded(ReductionType::kFixedCol);
|
433
|
+
}
|
434
|
+
|
435
|
+
void redundantRow(HighsInt row) {
|
436
|
+
reductionValues.push(RedundantRow{origRowIndex[row]});
|
437
|
+
reductionAdded(ReductionType::kRedundantRow);
|
438
|
+
}
|
439
|
+
|
440
|
+
template <typename RowStorageFormat>
|
441
|
+
void forcingRow(HighsInt row,
|
442
|
+
const HighsMatrixSlice<RowStorageFormat>& rowVec, double side,
|
443
|
+
RowType rowType) {
|
444
|
+
rowValues.clear();
|
445
|
+
for (const HighsSliceNonzero& rowVal : rowVec)
|
446
|
+
rowValues.emplace_back(origColIndex[rowVal.index()], rowVal.value());
|
447
|
+
|
448
|
+
reductionValues.push(ForcingRow{side, origRowIndex[row], rowType});
|
449
|
+
reductionValues.push(rowValues);
|
450
|
+
reductionAdded(ReductionType::kForcingRow);
|
451
|
+
}
|
452
|
+
|
453
|
+
template <typename ColStorageFormat>
|
454
|
+
void forcingColumn(HighsInt col,
|
455
|
+
const HighsMatrixSlice<ColStorageFormat>& colVec,
|
456
|
+
double cost, double boundVal, bool atInfiniteUpper,
|
457
|
+
bool colIntegral) {
|
458
|
+
colValues.clear();
|
459
|
+
for (const HighsSliceNonzero& colVal : colVec)
|
460
|
+
colValues.emplace_back(origRowIndex[colVal.index()], colVal.value());
|
461
|
+
|
462
|
+
reductionValues.push(ForcingColumn{cost, boundVal, origColIndex[col],
|
463
|
+
atInfiniteUpper, colIntegral});
|
464
|
+
reductionValues.push(colValues);
|
465
|
+
reductionAdded(ReductionType::kForcingColumn);
|
466
|
+
}
|
467
|
+
|
468
|
+
template <typename RowStorageFormat>
|
469
|
+
void forcingColumnRemovedRow(
|
470
|
+
HighsInt forcingCol, HighsInt row, double rhs,
|
471
|
+
const HighsMatrixSlice<RowStorageFormat>& rowVec) {
|
472
|
+
rowValues.clear();
|
473
|
+
for (const HighsSliceNonzero& rowVal : rowVec)
|
474
|
+
if (rowVal.index() != forcingCol)
|
475
|
+
rowValues.emplace_back(origColIndex[rowVal.index()], rowVal.value());
|
476
|
+
|
477
|
+
reductionValues.push(ForcingColumnRemovedRow{rhs, origRowIndex[row]});
|
478
|
+
reductionValues.push(rowValues);
|
479
|
+
reductionAdded(ReductionType::kForcingColumnRemovedRow);
|
480
|
+
}
|
481
|
+
|
482
|
+
void duplicateRow(HighsInt row, bool rowUpperTightened,
|
483
|
+
bool rowLowerTightened, HighsInt duplicateRow,
|
484
|
+
double duplicateRowScale) {
|
485
|
+
reductionValues.push(
|
486
|
+
DuplicateRow{duplicateRowScale, origRowIndex[duplicateRow],
|
487
|
+
origRowIndex[row], rowLowerTightened, rowUpperTightened});
|
488
|
+
reductionAdded(ReductionType::kDuplicateRow);
|
489
|
+
}
|
490
|
+
|
491
|
+
bool duplicateColumn(double colScale, double colLower, double colUpper,
|
492
|
+
double duplicateColLower, double duplicateColUpper,
|
493
|
+
HighsInt col, HighsInt duplicateCol, bool colIntegral,
|
494
|
+
bool duplicateColIntegral,
|
495
|
+
const double ok_merge_tolerance) {
|
496
|
+
const HighsInt origCol = origColIndex[col];
|
497
|
+
const HighsInt origDuplicateCol = origColIndex[duplicateCol];
|
498
|
+
DuplicateColumn debug_values = {
|
499
|
+
colScale, colLower, colUpper,
|
500
|
+
duplicateColLower, duplicateColUpper, origCol,
|
501
|
+
origDuplicateCol, colIntegral, duplicateColIntegral};
|
502
|
+
const bool ok_merge = debug_values.okMerge(ok_merge_tolerance);
|
503
|
+
const bool prevent_illegal_merge = true;
|
504
|
+
if (!ok_merge && prevent_illegal_merge) return false;
|
505
|
+
reductionValues.push(debug_values);
|
506
|
+
// reductionValues.push(DuplicateColumn{
|
507
|
+
// colScale, colLower, colUpper, duplicateColLower,
|
508
|
+
// duplicateColUpper, origCol, origDuplicateCol, colIntegral,
|
509
|
+
// duplicateColIntegral});
|
510
|
+
|
511
|
+
reductionAdded(ReductionType::kDuplicateColumn);
|
512
|
+
|
513
|
+
// mark columns as not linearly transformable
|
514
|
+
linearlyTransformable[origCol] = false;
|
515
|
+
linearlyTransformable[origDuplicateCol] = false;
|
516
|
+
return true;
|
517
|
+
}
|
518
|
+
|
519
|
+
std::vector<double> getReducedPrimalSolution(
|
520
|
+
const std::vector<double>& origPrimalSolution) {
|
521
|
+
std::vector<double> reducedSolution = origPrimalSolution;
|
522
|
+
|
523
|
+
for (const std::pair<ReductionType, size_t>& primalColTransformation :
|
524
|
+
reductions) {
|
525
|
+
switch (primalColTransformation.first) {
|
526
|
+
case ReductionType::kDuplicateColumn: {
|
527
|
+
DuplicateColumn duplicateColReduction;
|
528
|
+
reductionValues.setPosition(primalColTransformation.second);
|
529
|
+
reductionValues.pop(duplicateColReduction);
|
530
|
+
duplicateColReduction.transformToPresolvedSpace(reducedSolution);
|
531
|
+
break;
|
532
|
+
}
|
533
|
+
case ReductionType::kLinearTransform: {
|
534
|
+
reductionValues.setPosition(primalColTransformation.second);
|
535
|
+
LinearTransform linearTransform;
|
536
|
+
reductionValues.pop(linearTransform);
|
537
|
+
linearTransform.transformToPresolvedSpace(reducedSolution);
|
538
|
+
break;
|
539
|
+
}
|
540
|
+
default:
|
541
|
+
continue;
|
542
|
+
}
|
543
|
+
}
|
544
|
+
|
545
|
+
size_t reducedNumCol = origColIndex.size();
|
546
|
+
for (size_t i = 0; i < reducedNumCol; ++i)
|
547
|
+
reducedSolution[i] = reducedSolution[origColIndex[i]];
|
548
|
+
|
549
|
+
reducedSolution.resize(reducedNumCol);
|
550
|
+
return reducedSolution;
|
551
|
+
}
|
552
|
+
|
553
|
+
bool isColLinearlyTransformable(HighsInt col) const {
|
554
|
+
return (linearlyTransformable[col] != 0);
|
555
|
+
}
|
556
|
+
|
557
|
+
template <typename T>
|
558
|
+
void undoIterateBackwards(std::vector<T>& values,
|
559
|
+
const std::vector<HighsInt>& index,
|
560
|
+
HighsInt origSize) {
|
561
|
+
values.resize(origSize);
|
562
|
+
#ifdef DEBUG_EXTRA
|
563
|
+
// Fill vector with NaN for debugging purposes
|
564
|
+
std::vector<T> valuesNew;
|
565
|
+
valuesNew.resize(origSize, std::numeric_limits<T>::signaling_NaN());
|
566
|
+
for (size_t i = index.size(); i > 0; --i) {
|
567
|
+
assert(static_cast<size_t>(index[i - 1]) >= i - 1);
|
568
|
+
valuesNew[index[i - 1]] = values[i - 1];
|
569
|
+
}
|
570
|
+
std::copy(valuesNew.cbegin(), valuesNew.cend(), values.begin());
|
571
|
+
#else
|
572
|
+
for (size_t i = index.size(); i > 0; --i) {
|
573
|
+
assert(static_cast<size_t>(index[i - 1]) >= i - 1);
|
574
|
+
values[index[i - 1]] = values[i - 1];
|
575
|
+
}
|
576
|
+
#endif
|
577
|
+
}
|
578
|
+
|
579
|
+
/// check if vector contains NaN or Inf
|
580
|
+
bool containsNanOrInf(const std::vector<double>& v) const {
|
581
|
+
return std::find_if(v.cbegin(), v.cend(), [](const double& d) {
|
582
|
+
return (std::isnan(d) || std::isinf(d));
|
583
|
+
}) != v.cend();
|
584
|
+
}
|
585
|
+
|
586
|
+
/// undo presolve steps for primal dual solution and basis
|
587
|
+
void undo(const HighsOptions& options, HighsSolution& solution,
|
588
|
+
HighsBasis& basis, const HighsInt report_col = -1) {
|
589
|
+
reductionValues.resetPosition();
|
590
|
+
|
591
|
+
// Verify that undo can be performed
|
592
|
+
assert(solution.value_valid);
|
593
|
+
bool perform_dual_postsolve = solution.dual_valid;
|
594
|
+
bool perform_basis_postsolve = basis.valid;
|
595
|
+
|
596
|
+
// expand solution to original index space
|
597
|
+
assert(origNumCol > 0);
|
598
|
+
undoIterateBackwards(solution.col_value, origColIndex, origNumCol);
|
599
|
+
|
600
|
+
assert(origNumRow >= 0);
|
601
|
+
undoIterateBackwards(solution.row_value, origRowIndex, origNumRow);
|
602
|
+
|
603
|
+
if (perform_dual_postsolve) {
|
604
|
+
// if dual solution is given, expand dual solution and basis to original
|
605
|
+
// index space
|
606
|
+
undoIterateBackwards(solution.col_dual, origColIndex, origNumCol);
|
607
|
+
|
608
|
+
undoIterateBackwards(solution.row_dual, origRowIndex, origNumRow);
|
609
|
+
}
|
610
|
+
|
611
|
+
if (perform_basis_postsolve) {
|
612
|
+
// if basis is given, expand basis status values to original index space
|
613
|
+
undoIterateBackwards(basis.col_status, origColIndex, origNumCol);
|
614
|
+
|
615
|
+
undoIterateBackwards(basis.row_status, origRowIndex, origNumRow);
|
616
|
+
}
|
617
|
+
|
618
|
+
// now undo the changes
|
619
|
+
for (size_t i = reductions.size(); i > 0; --i) {
|
620
|
+
if (report_col >= 0)
|
621
|
+
printf("Before reduction %2d (type %2d): col_value[%2d] = %g\n",
|
622
|
+
int(i - 1), int(reductions[i - 1].first), int(report_col),
|
623
|
+
solution.col_value[report_col]);
|
624
|
+
switch (reductions[i - 1].first) {
|
625
|
+
case ReductionType::kLinearTransform: {
|
626
|
+
LinearTransform reduction;
|
627
|
+
reductionValues.pop(reduction);
|
628
|
+
reduction.undo(options, solution);
|
629
|
+
break;
|
630
|
+
}
|
631
|
+
case ReductionType::kFreeColSubstitution: {
|
632
|
+
FreeColSubstitution reduction;
|
633
|
+
reductionValues.pop(colValues);
|
634
|
+
reductionValues.pop(rowValues);
|
635
|
+
reductionValues.pop(reduction);
|
636
|
+
reduction.undo(options, rowValues, colValues, solution, basis);
|
637
|
+
break;
|
638
|
+
}
|
639
|
+
case ReductionType::kDoubletonEquation: {
|
640
|
+
DoubletonEquation reduction;
|
641
|
+
reductionValues.pop(colValues);
|
642
|
+
reductionValues.pop(reduction);
|
643
|
+
reduction.undo(options, colValues, solution, basis);
|
644
|
+
break;
|
645
|
+
}
|
646
|
+
case ReductionType::kEqualityRowAddition: {
|
647
|
+
EqualityRowAddition reduction;
|
648
|
+
reductionValues.pop(rowValues);
|
649
|
+
reductionValues.pop(reduction);
|
650
|
+
reduction.undo(options, rowValues, solution, basis);
|
651
|
+
break;
|
652
|
+
}
|
653
|
+
case ReductionType::kEqualityRowAdditions: {
|
654
|
+
EqualityRowAdditions reduction;
|
655
|
+
reductionValues.pop(colValues);
|
656
|
+
reductionValues.pop(rowValues);
|
657
|
+
reductionValues.pop(reduction);
|
658
|
+
reduction.undo(options, rowValues, colValues, solution, basis);
|
659
|
+
break;
|
660
|
+
}
|
661
|
+
case ReductionType::kSingletonRow: {
|
662
|
+
SingletonRow reduction;
|
663
|
+
reductionValues.pop(reduction);
|
664
|
+
reduction.undo(options, solution, basis);
|
665
|
+
break;
|
666
|
+
}
|
667
|
+
case ReductionType::kFixedCol: {
|
668
|
+
FixedCol reduction;
|
669
|
+
reductionValues.pop(colValues);
|
670
|
+
reductionValues.pop(reduction);
|
671
|
+
reduction.undo(options, colValues, solution, basis);
|
672
|
+
break;
|
673
|
+
}
|
674
|
+
case ReductionType::kRedundantRow: {
|
675
|
+
RedundantRow reduction;
|
676
|
+
reductionValues.pop(reduction);
|
677
|
+
reduction.undo(options, solution, basis);
|
678
|
+
break;
|
679
|
+
}
|
680
|
+
case ReductionType::kForcingRow: {
|
681
|
+
ForcingRow reduction;
|
682
|
+
reductionValues.pop(rowValues);
|
683
|
+
reductionValues.pop(reduction);
|
684
|
+
reduction.undo(options, rowValues, solution, basis);
|
685
|
+
break;
|
686
|
+
}
|
687
|
+
case ReductionType::kForcingColumn: {
|
688
|
+
ForcingColumn reduction;
|
689
|
+
reductionValues.pop(colValues);
|
690
|
+
reductionValues.pop(reduction);
|
691
|
+
reduction.undo(options, colValues, solution, basis);
|
692
|
+
break;
|
693
|
+
}
|
694
|
+
case ReductionType::kForcingColumnRemovedRow: {
|
695
|
+
ForcingColumnRemovedRow reduction;
|
696
|
+
reductionValues.pop(rowValues);
|
697
|
+
reductionValues.pop(reduction);
|
698
|
+
reduction.undo(options, rowValues, solution, basis);
|
699
|
+
break;
|
700
|
+
}
|
701
|
+
case ReductionType::kDuplicateRow: {
|
702
|
+
DuplicateRow reduction;
|
703
|
+
reductionValues.pop(reduction);
|
704
|
+
reduction.undo(options, solution, basis);
|
705
|
+
break;
|
706
|
+
}
|
707
|
+
case ReductionType::kDuplicateColumn: {
|
708
|
+
DuplicateColumn reduction;
|
709
|
+
reductionValues.pop(reduction);
|
710
|
+
reduction.undo(options, solution, basis);
|
711
|
+
break;
|
712
|
+
}
|
713
|
+
default:
|
714
|
+
printf("Reduction case %d not handled\n",
|
715
|
+
int(reductions[i - 1].first));
|
716
|
+
if (kAllowDeveloperAssert) assert(1 == 0);
|
717
|
+
}
|
718
|
+
}
|
719
|
+
if (report_col >= 0)
|
720
|
+
printf("After last reduction: col_value[%2d] = %g\n", int(report_col),
|
721
|
+
solution.col_value[report_col]);
|
722
|
+
|
723
|
+
#ifdef DEBUG_EXTRA
|
724
|
+
// solution should not contain NaN or Inf
|
725
|
+
assert(!containsNanOrInf(solution.col_value));
|
726
|
+
// row values are not determined by postsolve
|
727
|
+
// assert(!containsNanOrInf(solution.row_value));
|
728
|
+
assert(!containsNanOrInf(solution.col_dual));
|
729
|
+
assert(!containsNanOrInf(solution.row_dual));
|
730
|
+
#endif
|
731
|
+
}
|
732
|
+
|
733
|
+
/// undo presolve steps for primal solution
|
734
|
+
void undoPrimal(const HighsOptions& options, HighsSolution& solution,
|
735
|
+
const HighsInt report_col = -1) {
|
736
|
+
// Call to reductionValues.resetPosition(); seems unnecessary as
|
737
|
+
// it's the first thing done in undo
|
738
|
+
reductionValues.resetPosition();
|
739
|
+
HighsBasis basis;
|
740
|
+
basis.valid = false;
|
741
|
+
solution.dual_valid = false;
|
742
|
+
undo(options, solution, basis, report_col);
|
743
|
+
}
|
744
|
+
|
745
|
+
/*
|
746
|
+
// Not used
|
747
|
+
/// undo presolve steps for primal and dual solution
|
748
|
+
void undoPrimalDual(const HighsOptions& options, HighsSolution& solution) {
|
749
|
+
reductionValues.resetPosition();
|
750
|
+
HighsBasis basis;
|
751
|
+
basis.valid = false;
|
752
|
+
assert(solution.value_valid);
|
753
|
+
assert(solution.dual_valid);
|
754
|
+
undo(options, solution, basis);
|
755
|
+
}
|
756
|
+
*/
|
757
|
+
|
758
|
+
// Only used for debugging
|
759
|
+
void undoUntil(const HighsOptions& options,
|
760
|
+
const std::vector<HighsInt>& flagRow,
|
761
|
+
const std::vector<HighsInt>& flagCol, HighsSolution& solution,
|
762
|
+
HighsBasis& basis, size_t numReductions) {
|
763
|
+
reductionValues.resetPosition();
|
764
|
+
|
765
|
+
// Do these returns ever happen? How is it known that undo has not
|
766
|
+
// been performed?
|
767
|
+
assert(solution.col_value.size() == origColIndex.size());
|
768
|
+
assert(solution.row_value.size() == origRowIndex.size());
|
769
|
+
// This should be a better measure of whether undo can be
|
770
|
+
// performed
|
771
|
+
assert(solution.value_valid);
|
772
|
+
if (solution.col_value.size() != origColIndex.size()) return;
|
773
|
+
if (solution.row_value.size() != origRowIndex.size()) return;
|
774
|
+
|
775
|
+
bool perform_dual_postsolve = solution.dual_valid;
|
776
|
+
assert((solution.col_dual.size() == solution.col_value.size()) ==
|
777
|
+
perform_dual_postsolve);
|
778
|
+
bool perform_basis_postsolve = basis.valid;
|
779
|
+
|
780
|
+
// expand solution to original index space
|
781
|
+
undoIterateBackwards(solution.col_value, origColIndex, origNumCol);
|
782
|
+
|
783
|
+
undoIterateBackwards(solution.row_value, origRowIndex, origNumRow);
|
784
|
+
|
785
|
+
if (perform_dual_postsolve) {
|
786
|
+
// if dual solution is given, expand dual solution and basis to original
|
787
|
+
// index space
|
788
|
+
undoIterateBackwards(solution.col_dual, origColIndex, origNumCol);
|
789
|
+
|
790
|
+
undoIterateBackwards(solution.row_dual, origRowIndex, origNumRow);
|
791
|
+
}
|
792
|
+
|
793
|
+
if (perform_basis_postsolve) {
|
794
|
+
// if basis is given, expand basis status values to original index space
|
795
|
+
undoIterateBackwards(basis.col_status, origColIndex, origNumCol);
|
796
|
+
|
797
|
+
undoIterateBackwards(basis.row_status, origRowIndex, origNumRow);
|
798
|
+
}
|
799
|
+
|
800
|
+
// now undo the changes
|
801
|
+
for (size_t i = reductions.size(); i > numReductions; --i) {
|
802
|
+
switch (reductions[i - 1].first) {
|
803
|
+
case ReductionType::kLinearTransform: {
|
804
|
+
LinearTransform reduction;
|
805
|
+
reductionValues.pop(reduction);
|
806
|
+
reduction.undo(options, solution);
|
807
|
+
break;
|
808
|
+
}
|
809
|
+
case ReductionType::kFreeColSubstitution: {
|
810
|
+
FreeColSubstitution reduction;
|
811
|
+
reductionValues.pop(colValues);
|
812
|
+
reductionValues.pop(rowValues);
|
813
|
+
reductionValues.pop(reduction);
|
814
|
+
reduction.undo(options, rowValues, colValues, solution, basis);
|
815
|
+
break;
|
816
|
+
}
|
817
|
+
case ReductionType::kDoubletonEquation: {
|
818
|
+
DoubletonEquation reduction;
|
819
|
+
reductionValues.pop(colValues);
|
820
|
+
reductionValues.pop(reduction);
|
821
|
+
reduction.undo(options, colValues, solution, basis);
|
822
|
+
break;
|
823
|
+
}
|
824
|
+
case ReductionType::kEqualityRowAddition: {
|
825
|
+
EqualityRowAddition reduction;
|
826
|
+
reductionValues.pop(rowValues);
|
827
|
+
reductionValues.pop(reduction);
|
828
|
+
reduction.undo(options, rowValues, solution, basis);
|
829
|
+
break;
|
830
|
+
}
|
831
|
+
case ReductionType::kEqualityRowAdditions: {
|
832
|
+
EqualityRowAdditions reduction;
|
833
|
+
reductionValues.pop(colValues);
|
834
|
+
reductionValues.pop(rowValues);
|
835
|
+
reductionValues.pop(reduction);
|
836
|
+
reduction.undo(options, rowValues, colValues, solution, basis);
|
837
|
+
break;
|
838
|
+
}
|
839
|
+
case ReductionType::kSingletonRow: {
|
840
|
+
SingletonRow reduction;
|
841
|
+
reductionValues.pop(reduction);
|
842
|
+
reduction.undo(options, solution, basis);
|
843
|
+
break;
|
844
|
+
}
|
845
|
+
case ReductionType::kFixedCol: {
|
846
|
+
FixedCol reduction;
|
847
|
+
reductionValues.pop(colValues);
|
848
|
+
reductionValues.pop(reduction);
|
849
|
+
reduction.undo(options, colValues, solution, basis);
|
850
|
+
break;
|
851
|
+
}
|
852
|
+
case ReductionType::kRedundantRow: {
|
853
|
+
RedundantRow reduction;
|
854
|
+
reductionValues.pop(reduction);
|
855
|
+
reduction.undo(options, solution, basis);
|
856
|
+
break;
|
857
|
+
}
|
858
|
+
case ReductionType::kForcingRow: {
|
859
|
+
ForcingRow reduction;
|
860
|
+
reductionValues.pop(rowValues);
|
861
|
+
reductionValues.pop(reduction);
|
862
|
+
reduction.undo(options, rowValues, solution, basis);
|
863
|
+
break;
|
864
|
+
}
|
865
|
+
case ReductionType::kForcingColumn: {
|
866
|
+
ForcingColumn reduction;
|
867
|
+
reductionValues.pop(colValues);
|
868
|
+
reductionValues.pop(reduction);
|
869
|
+
reduction.undo(options, colValues, solution, basis);
|
870
|
+
break;
|
871
|
+
}
|
872
|
+
case ReductionType::kForcingColumnRemovedRow: {
|
873
|
+
ForcingColumnRemovedRow reduction;
|
874
|
+
reductionValues.pop(rowValues);
|
875
|
+
reductionValues.pop(reduction);
|
876
|
+
reduction.undo(options, rowValues, solution, basis);
|
877
|
+
break;
|
878
|
+
}
|
879
|
+
case ReductionType::kDuplicateRow: {
|
880
|
+
DuplicateRow reduction;
|
881
|
+
reductionValues.pop(reduction);
|
882
|
+
reduction.undo(options, solution, basis);
|
883
|
+
break;
|
884
|
+
}
|
885
|
+
case ReductionType::kDuplicateColumn: {
|
886
|
+
DuplicateColumn reduction;
|
887
|
+
reductionValues.pop(reduction);
|
888
|
+
reduction.undo(options, solution, basis);
|
889
|
+
}
|
890
|
+
}
|
891
|
+
}
|
892
|
+
#ifdef DEBUG_EXTRA
|
893
|
+
// solution should not contain NaN or Inf
|
894
|
+
assert(!containsNanOrInf(solution.col_value));
|
895
|
+
// row values are not determined by postsolve
|
896
|
+
// assert(!containsNanOrInf(solution.row_value));
|
897
|
+
assert(!containsNanOrInf(solution.col_dual));
|
898
|
+
assert(!containsNanOrInf(solution.row_dual));
|
899
|
+
#endif
|
900
|
+
}
|
901
|
+
|
902
|
+
size_t numReductions() const { return reductions.size(); }
|
903
|
+
};
|
904
|
+
|
905
|
+
} // namespace presolve
|
906
|
+
|
907
|
+
#endif
|