casadi 3.6.7__cp313-none-manylinux2014_i686.whl → 3.7.1__cp313-none-manylinux2014_i686.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- casadi/_casadi.so +0 -0
- casadi/casadi-cli +0 -0
- casadi/casadi.py +6531 -3039
- casadi/cbc +0 -0
- casadi/clp +0 -0
- casadi/cmake/casadi-config-version.cmake +1 -1
- casadi/cmake/casadi-config.cmake +1 -1
- casadi/cmake/casadi-targets-release.cmake +5 -5
- casadi/cmake/casadi-targets.cmake +5 -5
- casadi/{lib/cmake/tinyxml2/tinyxml2-config-version.cmake → cmake/ghc_filesystem/ghc_filesystem-config-version.cmake} +30 -10
- casadi/cmake/ghc_filesystem/ghc_filesystem-config.cmake +30 -0
- casadi/cmake/ghc_filesystem/ghc_filesystem-targets.cmake +107 -0
- casadi/cmake/highs/highs-targets-release.cmake +2 -2
- casadi/cmake/highs/highs-targets.cmake +1 -1
- casadi/cmake/libzip/libzip-config-version.cmake +48 -0
- casadi/cmake/libzip/libzip-config.cmake +69 -0
- casadi/cmake/libzip/libzip-targets-release.cmake +19 -0
- casadi/{lib/cmake/tinyxml2/tinyxml2-static-targets.cmake → cmake/libzip/libzip-targets.cmake} +11 -7
- casadi/cmake/libzip/modules/FindMbedTLS.cmake +141 -0
- casadi/cmake/libzip/modules/FindNettle.cmake +141 -0
- casadi/cmake/libzip/modules/Findzstd.cmake +186 -0
- casadi/highs +0 -0
- casadi/include/casadi/casadi.i +276 -47
- casadi/include/casadi/config.h +11 -11
- casadi/include/casadi/core/archiver.hpp +58 -0
- casadi/include/casadi/core/blazing_spline.hpp +47 -0
- casadi/include/casadi/core/calculus.hpp +57 -2
- casadi/include/casadi/core/callback.hpp +9 -0
- casadi/include/casadi/core/casadi_common.hpp +37 -0
- casadi/include/casadi/core/casadi_meta.hpp +15 -0
- casadi/include/casadi/core/casadi_misc.hpp +21 -0
- casadi/include/casadi/core/code_generator.hpp +115 -19
- casadi/include/casadi/core/core.hpp +5 -0
- casadi/include/casadi/core/dae_builder.hpp +303 -141
- casadi/include/casadi/core/dm.hpp +3 -0
- casadi/include/casadi/core/filesystem.hpp +58 -0
- casadi/include/casadi/core/fmu.hpp +62 -16
- casadi/include/casadi/core/function.hpp +24 -0
- casadi/include/casadi/core/generic_matrix.hpp +214 -7
- casadi/include/casadi/core/generic_shared.hpp +395 -0
- casadi/include/casadi/core/generic_shared_impl.hpp +218 -0
- casadi/include/casadi/core/generic_shared_internal.hpp +215 -0
- casadi/include/casadi/core/generic_type.hpp +3 -0
- casadi/include/casadi/core/global_options.hpp +10 -0
- casadi/include/casadi/core/integrator.hpp +41 -7
- casadi/include/casadi/core/matrix_decl.hpp +71 -0
- casadi/include/casadi/core/mx.hpp +63 -2
- casadi/include/casadi/core/nlp_builder.hpp +2 -1
- casadi/include/casadi/core/options.hpp +6 -3
- casadi/include/casadi/core/optistack.hpp +43 -9
- casadi/include/casadi/core/printable.hpp +8 -0
- casadi/include/casadi/core/resource.hpp +107 -0
- casadi/include/casadi/core/runtime/casadi_blazing_1d_boor_eval.hpp +112 -0
- casadi/include/casadi/core/runtime/casadi_blazing_2d_boor_eval.hpp +311 -0
- casadi/include/casadi/core/runtime/casadi_blazing_3d_boor_eval.hpp +645 -0
- casadi/include/casadi/core/runtime/casadi_blazing_de_boor.hpp +101 -0
- casadi/include/casadi/core/runtime/casadi_finite_diff.hpp +1 -1
- casadi/include/casadi/core/runtime/casadi_nlp.hpp +8 -2
- casadi/include/casadi/core/runtime/casadi_print_canonical.hpp +55 -0
- casadi/include/casadi/core/runtime/casadi_print_scalar.hpp +25 -0
- casadi/include/casadi/core/runtime/casadi_print_vector.hpp +32 -0
- casadi/include/casadi/core/runtime/casadi_printme.hpp +26 -0
- casadi/include/casadi/core/serializer.hpp +13 -5
- casadi/include/casadi/core/serializing_stream.hpp +9 -2
- casadi/include/casadi/core/shared_object.hpp +73 -161
- casadi/include/casadi/core/sparsity.hpp +13 -1
- casadi/include/casadi/core/sparsity_interface.hpp +19 -1
- casadi/include/casadi/core/sx.hpp +41 -0
- casadi/include/casadi/core/sx_elem.hpp +25 -0
- casadi/include/casadi/core/xml_node.hpp +5 -0
- casadi/include/casadi/doc.i +10026 -6513
- casadi/include/casadi/doc_merged.i +6744 -4449
- casadi/include/casadi/valgrind-casadi.supp +138 -0
- casadi/include/casadi/valgrind-python.supp +2470 -0
- casadi/include/highs/HConfig.h +6 -4
- casadi/include/highs/Highs.h +260 -86
- casadi/include/highs/filereaderlp/reader.hpp +10 -10
- casadi/include/highs/interfaces/highs_c_api.h +195 -22
- casadi/include/highs/io/Filereader.h +4 -6
- casadi/include/highs/io/FilereaderEms.h +0 -3
- casadi/include/highs/io/FilereaderLp.h +0 -3
- casadi/include/highs/io/FilereaderMps.h +0 -3
- casadi/include/highs/io/HMPSIO.h +1 -4
- casadi/include/highs/io/HMpsFF.h +8 -5
- casadi/include/highs/io/HighsIO.h +10 -5
- casadi/include/highs/io/LoadOptions.h +0 -3
- casadi/include/highs/ipm/IpxSolution.h +0 -3
- casadi/include/highs/ipm/IpxWrapper.h +4 -7
- casadi/include/highs/ipm/ipx/control.h +1 -0
- casadi/include/highs/ipm/ipx/ipx_parameters.h +1 -0
- casadi/include/highs/ipm/ipx/lp_solver.h +3 -2
- casadi/include/highs/ipm/ipx/model.h +7 -3
- casadi/include/highs/lp_data/HConst.h +21 -6
- casadi/include/highs/lp_data/HStruct.h +40 -4
- casadi/include/highs/lp_data/HighsAnalysis.h +0 -3
- casadi/include/highs/lp_data/HighsCallback.h +10 -3
- casadi/include/highs/lp_data/HighsCallbackStruct.h +3 -3
- casadi/include/highs/lp_data/HighsDebug.h +0 -3
- casadi/include/highs/lp_data/HighsIis.h +62 -0
- casadi/include/highs/lp_data/HighsInfo.h +50 -43
- casadi/include/highs/lp_data/HighsInfoDebug.h +0 -3
- casadi/include/highs/lp_data/HighsLp.h +2 -3
- casadi/include/highs/lp_data/HighsLpSolverObject.h +0 -3
- casadi/include/highs/lp_data/HighsLpUtils.h +38 -6
- casadi/include/highs/lp_data/HighsModelUtils.h +21 -18
- casadi/include/highs/lp_data/HighsOptions.h +134 -22
- casadi/include/highs/lp_data/HighsRanging.h +0 -3
- casadi/include/highs/lp_data/HighsSolution.h +10 -3
- casadi/include/highs/lp_data/HighsSolutionDebug.h +0 -3
- casadi/include/highs/lp_data/HighsSolve.h +0 -3
- casadi/include/highs/lp_data/HighsStatus.h +0 -3
- casadi/include/highs/mip/HighsCliqueTable.h +3 -3
- casadi/include/highs/mip/HighsConflictPool.h +0 -3
- casadi/include/highs/mip/HighsCutGeneration.h +13 -3
- casadi/include/highs/mip/HighsCutPool.h +0 -3
- casadi/include/highs/mip/HighsDebugSol.h +0 -3
- casadi/include/highs/mip/HighsDomain.h +16 -4
- casadi/include/highs/mip/HighsDomainChange.h +0 -3
- casadi/include/highs/mip/HighsDynamicRowMatrix.h +0 -3
- casadi/include/highs/mip/HighsGFkSolve.h +3 -6
- casadi/include/highs/mip/HighsImplications.h +29 -5
- casadi/include/highs/mip/HighsLpAggregator.h +0 -3
- casadi/include/highs/mip/HighsLpRelaxation.h +0 -3
- casadi/include/highs/mip/HighsMipAnalysis.h +52 -0
- casadi/include/highs/mip/HighsMipSolver.h +11 -4
- casadi/include/highs/mip/HighsMipSolverData.h +67 -6
- casadi/include/highs/mip/HighsModkSeparator.h +1 -4
- casadi/include/highs/mip/HighsNodeQueue.h +0 -3
- casadi/include/highs/mip/HighsObjectiveFunction.h +0 -3
- casadi/include/highs/mip/HighsPathSeparator.h +1 -4
- casadi/include/highs/mip/HighsPrimalHeuristics.h +7 -5
- casadi/include/highs/mip/HighsPseudocost.h +0 -3
- casadi/include/highs/mip/HighsRedcostFixing.h +0 -3
- casadi/include/highs/mip/HighsSearch.h +0 -3
- casadi/include/highs/mip/HighsSeparation.h +0 -3
- casadi/include/highs/mip/HighsSeparator.h +1 -5
- casadi/include/highs/mip/HighsTableauSeparator.h +1 -4
- casadi/include/highs/mip/HighsTransformedLp.h +0 -3
- casadi/include/highs/mip/MipTimer.h +471 -0
- casadi/include/highs/parallel/HighsBinarySemaphore.h +1 -1
- casadi/include/highs/parallel/HighsCacheAlign.h +1 -1
- casadi/include/highs/parallel/HighsCombinable.h +1 -1
- casadi/include/highs/parallel/HighsMutex.h +1 -1
- casadi/include/highs/parallel/HighsRaceTimer.h +1 -1
- casadi/include/highs/parallel/HighsSchedulerConstants.h +1 -1
- casadi/include/highs/parallel/HighsSplitDeque.h +1 -1
- casadi/include/highs/parallel/HighsTaskExecutor.h +68 -55
- casadi/include/highs/pdlp/CupdlpWrapper.h +18 -7
- casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +2 -3
- casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +16 -6
- casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +10 -4
- casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +3 -3
- casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +6 -6
- casadi/include/highs/pdlp/cupdlp/cupdlp_scaling.h +26 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +11 -11
- casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +8 -4
- casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +253 -172
- casadi/include/highs/presolve/HPresolve.h +50 -10
- casadi/include/highs/presolve/HPresolveAnalysis.h +0 -3
- casadi/include/highs/presolve/HighsPostsolveStack.h +39 -6
- casadi/include/highs/presolve/HighsSymmetry.h +0 -3
- casadi/include/highs/presolve/ICrash.h +0 -3
- casadi/include/highs/presolve/ICrashUtil.h +1 -4
- casadi/include/highs/presolve/ICrashX.h +0 -3
- casadi/include/highs/presolve/PresolveComponent.h +0 -3
- casadi/include/highs/qpsolver/a_asm.hpp +20 -17
- casadi/include/highs/qpsolver/a_quass.hpp +5 -9
- casadi/include/highs/qpsolver/basis.hpp +12 -10
- casadi/include/highs/qpsolver/crashsolution.hpp +4 -3
- casadi/include/highs/qpsolver/dantzigpricing.hpp +3 -2
- casadi/include/highs/qpsolver/devexpricing.hpp +3 -1
- casadi/include/highs/qpsolver/factor.hpp +6 -5
- casadi/include/highs/qpsolver/feasibility_bounded.hpp +31 -29
- casadi/include/highs/qpsolver/feasibility_highs.hpp +94 -70
- casadi/include/highs/qpsolver/gradient.hpp +1 -1
- casadi/include/highs/qpsolver/instance.hpp +1 -1
- casadi/include/highs/qpsolver/pricing.hpp +2 -2
- casadi/include/highs/qpsolver/qpconst.hpp +2 -2
- casadi/include/highs/qpsolver/quass.hpp +2 -2
- casadi/include/highs/qpsolver/runtime.hpp +2 -2
- casadi/include/highs/qpsolver/settings.hpp +20 -8
- casadi/include/highs/qpsolver/steepestedgepricing.hpp +38 -39
- casadi/include/highs/simplex/HApp.h +88 -34
- casadi/include/highs/simplex/HEkk.h +24 -11
- casadi/include/highs/simplex/HEkkDual.h +2 -4
- casadi/include/highs/simplex/HEkkDualRHS.h +0 -3
- casadi/include/highs/simplex/HEkkDualRow.h +0 -3
- casadi/include/highs/simplex/HEkkPrimal.h +1 -5
- casadi/include/highs/simplex/HSimplex.h +0 -3
- casadi/include/highs/simplex/HSimplexDebug.h +0 -3
- casadi/include/highs/simplex/HSimplexNla.h +0 -26
- casadi/include/highs/simplex/HSimplexReport.h +0 -3
- casadi/include/highs/simplex/HighsSimplexAnalysis.h +5 -8
- casadi/include/highs/simplex/SimplexConst.h +10 -11
- casadi/include/highs/simplex/SimplexStruct.h +9 -12
- casadi/include/highs/simplex/SimplexTimer.h +83 -101
- casadi/include/highs/test/DevKkt.h +0 -3
- casadi/include/highs/test/KktCh2.h +0 -3
- casadi/include/highs/util/FactorTimer.h +39 -64
- casadi/include/highs/util/HFactor.h +4 -4
- casadi/include/highs/util/HFactorConst.h +0 -3
- casadi/include/highs/util/HFactorDebug.h +0 -3
- casadi/include/highs/util/HSet.h +0 -3
- casadi/include/highs/util/HVector.h +0 -3
- casadi/include/highs/util/HVectorBase.h +1 -4
- casadi/include/highs/util/HighsCDouble.h +12 -3
- casadi/include/highs/util/HighsComponent.h +0 -3
- casadi/include/highs/util/HighsDataStack.h +0 -3
- casadi/include/highs/util/HighsDisjointSets.h +0 -3
- casadi/include/highs/util/HighsHash.h +9 -12
- casadi/include/highs/util/HighsHashTree.h +15 -11
- casadi/include/highs/util/HighsInt.h +0 -3
- casadi/include/highs/util/HighsIntegers.h +0 -3
- casadi/include/highs/util/HighsLinearSumBounds.h +0 -3
- casadi/include/highs/util/HighsMatrixPic.h +0 -3
- casadi/include/highs/util/HighsMatrixSlice.h +3 -6
- casadi/include/highs/util/HighsMatrixUtils.h +0 -3
- casadi/include/highs/util/HighsMemoryAllocation.h +11 -3
- casadi/include/highs/util/HighsRandom.h +3 -6
- casadi/include/highs/util/HighsRbTree.h +0 -3
- casadi/include/highs/util/HighsSort.h +0 -3
- casadi/include/highs/util/HighsSparseMatrix.h +6 -3
- casadi/include/highs/util/HighsSparseVectorSum.h +0 -3
- casadi/include/highs/util/HighsSplay.h +0 -3
- casadi/include/highs/util/HighsTimer.h +94 -56
- casadi/include/highs/util/HighsUtils.h +10 -3
- casadi/include/highs/util/stringutil.h +14 -12
- casadi/include/licenses/ghc-external/LICENSE +19 -0
- casadi/include/licenses/libz-external/LICENSE +22 -0
- casadi/include/licenses/libz-external/contrib/dotzlib/LICENSE_1_0.txt +23 -0
- casadi/include/licenses/libzip-external/LICENSE +31 -0
- casadi/libCbcSolver.so +0 -0
- casadi/libCbcSolver.so.3 +0 -0
- casadi/libCbcSolver.so.3.10.11 +0 -0
- casadi/libClpSolver.so +0 -0
- casadi/libClpSolver.so.1 +0 -0
- casadi/libClpSolver.so.1.14.9 +0 -0
- casadi/libbonmin.so +0 -0
- casadi/libbonmin.so.4 +0 -0
- casadi/libbonmin.so.4.8.9 +0 -0
- casadi/libcasadi.so +0 -0
- casadi/libcasadi.so.3.7 +0 -0
- casadi/libcasadi_archiver_libzip.so +0 -0
- casadi/libcasadi_archiver_libzip.so.3.7 +0 -0
- casadi/libcasadi_conic_cbc.so +0 -0
- casadi/libcasadi_conic_cbc.so.3.7 +0 -0
- casadi/libcasadi_conic_clp.so +0 -0
- casadi/libcasadi_conic_clp.so.3.7 +0 -0
- casadi/libcasadi_conic_daqp.so +0 -0
- casadi/libcasadi_conic_daqp.so.3.7 +0 -0
- casadi/libcasadi_conic_gurobi.so +0 -0
- casadi/libcasadi_conic_gurobi.so.3.7 +0 -0
- casadi/libcasadi_conic_highs.so +0 -0
- casadi/libcasadi_conic_highs.so.3.7 +0 -0
- casadi/libcasadi_conic_ipqp.so +0 -0
- casadi/libcasadi_conic_ipqp.so.3.7 +0 -0
- casadi/libcasadi_conic_nlpsol.so +0 -0
- casadi/libcasadi_conic_nlpsol.so.3.7 +0 -0
- casadi/libcasadi_conic_osqp.so +0 -0
- casadi/libcasadi_conic_osqp.so.3.7 +0 -0
- casadi/libcasadi_conic_proxqp.so +0 -0
- casadi/libcasadi_conic_proxqp.so.3.7 +0 -0
- casadi/libcasadi_conic_qpoases.so +0 -0
- casadi/libcasadi_conic_qpoases.so.3.7 +0 -0
- casadi/libcasadi_conic_qrqp.so +0 -0
- casadi/libcasadi_conic_qrqp.so.3.7 +0 -0
- casadi/libcasadi_conic_superscs.so +0 -0
- casadi/libcasadi_conic_superscs.so.3.7 +0 -0
- casadi/libcasadi_filesystem_ghc.so +0 -0
- casadi/libcasadi_filesystem_ghc.so.3.7 +0 -0
- casadi/libcasadi_importer_shell.so +0 -0
- casadi/libcasadi_importer_shell.so.3.7 +0 -0
- casadi/libcasadi_integrator_collocation.so +0 -0
- casadi/libcasadi_integrator_collocation.so.3.7 +0 -0
- casadi/libcasadi_integrator_cvodes.so +0 -0
- casadi/libcasadi_integrator_cvodes.so.3.7 +0 -0
- casadi/libcasadi_integrator_idas.so +0 -0
- casadi/libcasadi_integrator_idas.so.3.7 +0 -0
- casadi/libcasadi_integrator_rk.so +0 -0
- casadi/libcasadi_integrator_rk.so.3.7 +0 -0
- casadi/libcasadi_interpolant_bspline.so +0 -0
- casadi/libcasadi_interpolant_bspline.so.3.7 +0 -0
- casadi/libcasadi_interpolant_linear.so +0 -0
- casadi/libcasadi_interpolant_linear.so.3.7 +0 -0
- casadi/libcasadi_linsol_csparse.so +0 -0
- casadi/libcasadi_linsol_csparse.so.3.7 +0 -0
- casadi/libcasadi_linsol_csparsecholesky.so +0 -0
- casadi/libcasadi_linsol_csparsecholesky.so.3.7 +0 -0
- casadi/libcasadi_linsol_lapacklu.so +0 -0
- casadi/libcasadi_linsol_lapacklu.so.3.7 +0 -0
- casadi/libcasadi_linsol_lapackqr.so +0 -0
- casadi/libcasadi_linsol_lapackqr.so.3.7 +0 -0
- casadi/libcasadi_linsol_ldl.so +0 -0
- casadi/libcasadi_linsol_ldl.so.3.7 +0 -0
- casadi/libcasadi_linsol_lsqr.so +0 -0
- casadi/libcasadi_linsol_lsqr.so.3.7 +0 -0
- casadi/libcasadi_linsol_ma27.so +0 -0
- casadi/libcasadi_linsol_ma27.so.3.7 +0 -0
- casadi/libcasadi_linsol_mumps.so +0 -0
- casadi/libcasadi_linsol_mumps.so.3.7 +0 -0
- casadi/libcasadi_linsol_qr.so +0 -0
- casadi/libcasadi_linsol_qr.so.3.7 +0 -0
- casadi/libcasadi_linsol_symbolicqr.so +0 -0
- casadi/libcasadi_linsol_symbolicqr.so.3.7 +0 -0
- casadi/libcasadi_linsol_tridiag.so +0 -0
- casadi/libcasadi_linsol_tridiag.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_alpaqa.so +0 -0
- casadi/libcasadi_nlpsol_alpaqa.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_ampl.so +0 -0
- casadi/libcasadi_nlpsol_ampl.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_blocksqp.so +0 -0
- casadi/libcasadi_nlpsol_blocksqp.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_bonmin.so +0 -0
- casadi/libcasadi_nlpsol_bonmin.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_feasiblesqpmethod.so +0 -0
- casadi/libcasadi_nlpsol_feasiblesqpmethod.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_ipopt.so +0 -0
- casadi/libcasadi_nlpsol_ipopt.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_knitro.so +0 -0
- casadi/libcasadi_nlpsol_knitro.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_madnlp.so +0 -0
- casadi/libcasadi_nlpsol_madnlp.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_qrsqp.so +0 -0
- casadi/libcasadi_nlpsol_qrsqp.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_scpgen.so +0 -0
- casadi/libcasadi_nlpsol_scpgen.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_sleqp.so +0 -0
- casadi/libcasadi_nlpsol_sleqp.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_snopt.so +0 -0
- casadi/libcasadi_nlpsol_snopt.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_sqpmethod.so +0 -0
- casadi/libcasadi_nlpsol_sqpmethod.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_worhp.so +0 -0
- casadi/libcasadi_nlpsol_worhp.so.3.7 +0 -0
- casadi/libcasadi_rootfinder_fast_newton.so +0 -0
- casadi/libcasadi_rootfinder_fast_newton.so.3.7 +0 -0
- casadi/libcasadi_rootfinder_kinsol.so +0 -0
- casadi/libcasadi_rootfinder_kinsol.so.3.7 +0 -0
- casadi/libcasadi_rootfinder_newton.so +0 -0
- casadi/libcasadi_rootfinder_newton.so.3.7 +0 -0
- casadi/libcasadi_rootfinder_nlpsol.so +0 -0
- casadi/libcasadi_rootfinder_nlpsol.so.3.7 +0 -0
- casadi/libcasadi_sundials_common.so +0 -0
- casadi/libcasadi_sundials_common.so.3.7 +0 -0
- casadi/libcasadi_xmlfile_tinyxml.so +0 -0
- casadi/libcasadi_xmlfile_tinyxml.so.3.7 +0 -0
- casadi/libcoinmumps.so +0 -0
- casadi/libcoinmumps.so.3 +0 -0
- casadi/libcoinmumps.so.3.0.1 +0 -0
- casadi/libdaqpstat.a +0 -0
- casadi/libhighs.so +0 -0
- casadi/libhighs.so.1 +0 -0
- casadi/libhighs.so.1.10.0 +0 -0
- casadi/libindirect.a +0 -0
- casadi/libipopt.so +0 -0
- casadi/libipopt.so.3 +0 -0
- casadi/libipopt.so.3.14.11 +0 -0
- casadi/liblinsys.a +0 -0
- casadi/libosqp.a +0 -0
- casadi/libqdldl.a +0 -0
- casadi/libsipopt.so +0 -0
- casadi/libsipopt.so.3 +0 -0
- casadi/libsipopt.so.3.14.11 +0 -0
- casadi/libsleqp.so +0 -0
- casadi/libsleqp.so.1.0.1 +0 -0
- casadi/libspral.a +0 -0
- casadi/libsuperscs.a +0 -0
- casadi/libz.a +0 -0
- casadi/libz.so +0 -0
- casadi/libz.so.1 +0 -0
- casadi/libz.so.1.3.1 +0 -0
- casadi/libzip.a +0 -0
- casadi/pkgconfig/casadi.pc +1 -1
- casadi/pkgconfig/highs.pc +1 -1
- casadi/pkgconfig/libzip.pc +14 -0
- casadi/tools/__init__.py +3 -1
- casadi/tools/graph/graph.py +1 -1
- casadi/tools/structure3.py +7 -7
- {casadi-3.6.7.dist-info → casadi-3.7.1.dist-info}/METADATA +1 -1
- {casadi-3.6.7.dist-info → casadi-3.7.1.dist-info}/RECORD +380 -347
- casadi/include/highs/lp_data/HighsRuntimeOptions.h +0 -276
- casadi/include/highs/pdlp/cupdlp/cupdlp_scaling_cuda.h +0 -28
- casadi/include/tinyxml2.h +0 -2380
- casadi/lib/cmake/tinyxml2/tinyxml2-config.cmake +0 -57
- casadi/lib/cmake/tinyxml2/tinyxml2-static-targets-release.cmake +0 -19
- casadi/lib/libtinyxml2.a +0 -0
- casadi/lib/pkgconfig/tinyxml2.pc +0 -10
- casadi/libhighs.so.1.7.2 +0 -0
- casadi/tools/structure.py +0 -1446
- {casadi-3.6.7.dist-info → casadi-3.7.1.dist-info}/WHEEL +0 -0
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -70,6 +67,10 @@ inline HighsStatus returnFromSolveLpSimplex(HighsLpSolverObject& solver_object,
|
|
70
67
|
"Error in basis matrix inverse after solving the LP\n");
|
71
68
|
return_status = HighsStatus::kError;
|
72
69
|
}
|
70
|
+
if (solver_object.model_status_ == HighsModelStatus::kOptimal) {
|
71
|
+
solver_object.highs_info_.max_complementarity_violation = 0;
|
72
|
+
solver_object.highs_info_.sum_complementarity_violations = 0;
|
73
|
+
}
|
73
74
|
return return_status;
|
74
75
|
}
|
75
76
|
|
@@ -108,6 +109,9 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
|
|
108
109
|
// return
|
109
110
|
resetModelStatusAndHighsInfo(solver_object);
|
110
111
|
|
112
|
+
// Initialise the simplex stats
|
113
|
+
ekk_instance.initialiseSimplexStats();
|
114
|
+
|
111
115
|
// Assumes that the LP has a positive number of rows, since
|
112
116
|
// unconstrained LPs should be solved in solveLp
|
113
117
|
bool positive_num_row = solver_object.lp_.num_row_ > 0;
|
@@ -128,10 +132,23 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
|
|
128
132
|
// Consider scaling the LP - either with any existing scaling, or by
|
129
133
|
// considering computing scaling factors if there are none - and
|
130
134
|
// then move to EKK
|
131
|
-
|
132
|
-
//
|
133
|
-
|
134
|
-
|
135
|
+
considerScaling(options, incumbent_lp);
|
136
|
+
//
|
137
|
+
if (!status.has_basis && !basis.valid && basis.useful) {
|
138
|
+
// There is no simplex basis, but there is a useful HiGHS basis
|
139
|
+
// that is not validated
|
140
|
+
assert(basis.col_status.size() ==
|
141
|
+
static_cast<size_t>(incumbent_lp.num_col_));
|
142
|
+
assert(basis.row_status.size() ==
|
143
|
+
static_cast<size_t>(incumbent_lp.num_row_));
|
144
|
+
HighsStatus return_status = formSimplexLpBasisAndFactor(solver_object);
|
145
|
+
if (return_status != HighsStatus::kOk)
|
146
|
+
return returnFromSolveLpSimplex(solver_object, HighsStatus::kError);
|
147
|
+
// formSimplexLpBasisAndFactor may introduce variables with
|
148
|
+
// HighsBasisStatus::kNonbasic, so refine it
|
149
|
+
refineBasis(incumbent_lp, solution, basis);
|
150
|
+
basis.valid = true;
|
151
|
+
}
|
135
152
|
// Move the LP to EKK, updating other EKK pointers and any simplex
|
136
153
|
// NLA pointers, since they may have moved if the LP has been
|
137
154
|
// modified
|
@@ -250,12 +267,27 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
|
|
250
267
|
scaled_model_status == HighsModelStatus::kOptimal &&
|
251
268
|
(num_unscaled_primal_infeasibilities ||
|
252
269
|
num_unscaled_dual_infeasibilities);
|
253
|
-
|
270
|
+
// Determine whether the unscaled solution has primal
|
271
|
+
// infeasibilities after the scaled LP has been solved to the
|
272
|
+
// objective target
|
273
|
+
const bool scaled_objective_target_but_unscaled_primal_infeasibilities =
|
274
|
+
scaled_model_status == HighsModelStatus::kObjectiveTarget &&
|
275
|
+
highs_info.num_primal_infeasibilities > 0;
|
276
|
+
// Determine whether the unscaled solution has dual
|
277
|
+
// infeasibilities after the scaled LP has been solved to the
|
278
|
+
// objective bound
|
279
|
+
const bool scaled_objective_bound_but_unscaled_dual_infeasibilities =
|
280
|
+
scaled_model_status == HighsModelStatus::kObjectiveBound &&
|
281
|
+
highs_info.num_dual_infeasibilities > 0;
|
282
|
+
if (scaled_optimality_but_unscaled_infeasibilities ||
|
283
|
+
scaled_objective_target_but_unscaled_primal_infeasibilities ||
|
284
|
+
scaled_objective_bound_but_unscaled_dual_infeasibilities)
|
254
285
|
highsLogDev(options.log_options, HighsLogType::kInfo,
|
255
|
-
"
|
256
|
-
"/%g/%g) and dual (%" HIGHSINT_FORMAT
|
286
|
+
"After unscaling with status %s, have num/max/sum primal "
|
287
|
+
"(%" HIGHSINT_FORMAT "/%g/%g) and dual (%" HIGHSINT_FORMAT
|
257
288
|
"/%g/%g) "
|
258
289
|
"unscaled infeasibilities\n",
|
290
|
+
utilModelStatusToString(scaled_model_status).c_str(),
|
259
291
|
highs_info.num_primal_infeasibilities,
|
260
292
|
highs_info.max_primal_infeasibility,
|
261
293
|
highs_info.sum_primal_infeasibilities,
|
@@ -270,8 +302,8 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
|
|
270
302
|
scaled_model_status == HighsModelStatus::kInfeasible ||
|
271
303
|
scaled_model_status == HighsModelStatus::kUnboundedOrInfeasible ||
|
272
304
|
scaled_model_status == HighsModelStatus::kUnbounded ||
|
273
|
-
|
274
|
-
|
305
|
+
scaled_objective_bound_but_unscaled_dual_infeasibilities ||
|
306
|
+
scaled_objective_target_but_unscaled_primal_infeasibilities ||
|
275
307
|
scaled_model_status == HighsModelStatus::kUnknown);
|
276
308
|
// Handle the case when refinement will not take place
|
277
309
|
if (!refine_solution) {
|
@@ -303,11 +335,14 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
|
|
303
335
|
// LP, see whether the proof still holds for the unscaled LP. If
|
304
336
|
// it does, then there's no need to solve the unscaled LP
|
305
337
|
solve_unscaled_lp = true;
|
306
|
-
// ToDo: ekk_instance.
|
307
|
-
//
|
308
|
-
// model status depends
|
338
|
+
// ToDo: ekk_instance.dual_ray_record_.index != kNoRayIndex should
|
339
|
+
// now be true if scaled_model_status ==
|
340
|
+
// HighsModelStatus::kInfeasible since this model status depends
|
341
|
+
// on the infeasibility proof being true
|
342
|
+
if (scaled_model_status == HighsModelStatus::kInfeasible)
|
343
|
+
assert(ekk_instance.dual_ray_record_.index != kNoRayIndex);
|
309
344
|
if (scaled_model_status == HighsModelStatus::kInfeasible &&
|
310
|
-
ekk_instance.
|
345
|
+
ekk_instance.dual_ray_record_.index != kNoRayIndex) {
|
311
346
|
ekk_instance.setNlaPointersForLpAndScale(ekk_lp);
|
312
347
|
if (ekk_instance.proofOfPrimalInfeasibility()) solve_unscaled_lp = false;
|
313
348
|
}
|
@@ -318,21 +353,31 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
|
|
318
353
|
options.dual_simplex_cost_perturbation_multiplier;
|
319
354
|
HighsInt simplex_dual_edge_weight_strategy =
|
320
355
|
ekk_info.dual_edge_weight_strategy;
|
356
|
+
// #1865 exposed that this should not be
|
357
|
+
// HighsModelStatus::kObjectiveBound, but
|
358
|
+
// HighsModelStatus::kObjectiveTarget, since if the latter is
|
359
|
+
// the model status for the scaled LP, any primal
|
360
|
+
// infeasibilities should be small, but must be cleaned up
|
361
|
+
// before (hopefully) a few phase 2 primal simplex iterations
|
362
|
+
// are required to attain the target for the unscaled LP
|
363
|
+
//
|
364
|
+
// In #1865, phase 2 primal simplex was forced with large primal
|
365
|
+
// infeasibilities
|
321
366
|
if (num_unscaled_primal_infeasibilities == 0 ||
|
322
|
-
scaled_model_status == HighsModelStatus::
|
323
|
-
// Only dual infeasibilities, or
|
324
|
-
//
|
325
|
-
// 2
|
367
|
+
scaled_model_status == HighsModelStatus::kObjectiveTarget) {
|
368
|
+
// Only dual infeasibilities, or objective target reached (in
|
369
|
+
// primal phase 2) - so primal infeasibilities should be small
|
370
|
+
// - so use primal simplex phase 2
|
326
371
|
options.simplex_strategy = kSimplexStrategyPrimal;
|
327
|
-
if (scaled_model_status == HighsModelStatus::
|
328
|
-
highsLogDev(
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
372
|
+
if (scaled_model_status == HighsModelStatus::kObjectiveTarget) {
|
373
|
+
highsLogDev(options.log_options, HighsLogType::kInfo,
|
374
|
+
"solveLpSimplex: Calling primal simplex after "
|
375
|
+
"scaled_model_status == "
|
376
|
+
"HighsModelStatus::kObjectiveTarget: solve "
|
377
|
+
"= %d; tick = %d; iter = %d\n",
|
378
|
+
(int)ekk_instance.debug_solve_call_num_,
|
379
|
+
(int)ekk_instance.debug_initial_build_synthetic_tick_,
|
380
|
+
(int)ekk_instance.iteration_count_);
|
336
381
|
}
|
337
382
|
} else {
|
338
383
|
// Using dual simplex, so force Devex if starting from an advanced
|
@@ -345,11 +390,21 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
|
|
345
390
|
//
|
346
391
|
// Solve the unscaled LP with scaled NLA
|
347
392
|
//
|
348
|
-
// Force the simplex solver to start in phase
|
349
|
-
//
|
393
|
+
// Force the simplex solver to start in phase 1 if solving the
|
394
|
+
// LP directly as unscaled, or using primal simplex to clean up
|
395
|
+
// small dual infeasibilities after the scaled LP yielded model
|
396
|
+
// status HighsModelStatus::kObjectiveTarget. Otherwise force
|
397
|
+
// the simplex solver to start in phase 2
|
350
398
|
//
|
351
|
-
const bool
|
352
|
-
|
399
|
+
const bool force_phase1 =
|
400
|
+
(options.simplex_unscaled_solution_strategy ==
|
401
|
+
kSimplexUnscaledSolutionStrategyDirect) ||
|
402
|
+
(scaled_model_status == HighsModelStatus::kObjectiveTarget);
|
403
|
+
const bool force_phase2 =
|
404
|
+
(options.simplex_unscaled_solution_strategy !=
|
405
|
+
kSimplexUnscaledSolutionStrategyDirect) &&
|
406
|
+
(scaled_model_status != HighsModelStatus::kObjectiveTarget);
|
407
|
+
assert(force_phase2 == !force_phase1);
|
353
408
|
return_status = ekk_instance.solve(force_phase2);
|
354
409
|
solved_unscaled_lp = true;
|
355
410
|
if (scaled_model_status != HighsModelStatus::kObjectiveBound &&
|
@@ -358,7 +413,6 @@ inline HighsStatus solveLpSimplex(HighsLpSolverObject& solver_object) {
|
|
358
413
|
// for the first time in which case we again call solve with primal
|
359
414
|
// simplex if not dual feasible
|
360
415
|
const bool objective_bound_refinement =
|
361
|
-
ekk_instance.model_status_ == HighsModelStatus::kObjectiveBound &&
|
362
416
|
ekk_info.num_dual_infeasibilities > 0;
|
363
417
|
if (objective_bound_refinement) {
|
364
418
|
options.simplex_strategy = kSimplexStrategyPrimal;
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -76,6 +73,7 @@ class HEkk {
|
|
76
73
|
void clearEkkDataStatus();
|
77
74
|
void clearNlaStatus();
|
78
75
|
void clearNlaInvertStatus();
|
76
|
+
void clearRayRecords();
|
79
77
|
|
80
78
|
void invalidate();
|
81
79
|
void invalidateBasisMatrix();
|
@@ -86,7 +84,6 @@ class HEkk {
|
|
86
84
|
void setNlaPointersForLpAndScale(const HighsLp& lp);
|
87
85
|
void setNlaPointersForTrans(const HighsLp& lp);
|
88
86
|
void setNlaRefactorInfo();
|
89
|
-
void clearHotStart();
|
90
87
|
void btran(HVector& rhs, const double expected_density);
|
91
88
|
void ftran(HVector& rhs, const double expected_density);
|
92
89
|
|
@@ -105,10 +102,6 @@ class HEkk {
|
|
105
102
|
HighsStatus setBasis();
|
106
103
|
HighsStatus setBasis(const HighsBasis& highs_basis);
|
107
104
|
|
108
|
-
void freezeBasis(HighsInt& frozen_basis_id);
|
109
|
-
HighsStatus unfreezeBasis(const HighsInt frozen_basis_id);
|
110
|
-
HighsStatus frozenBasisAllDataClear();
|
111
|
-
|
112
105
|
void putIterate();
|
113
106
|
HighsStatus getIterate();
|
114
107
|
|
@@ -134,13 +127,18 @@ class HEkk {
|
|
134
127
|
HighsBasis getHighsBasis(HighsLp& use_lp) const;
|
135
128
|
|
136
129
|
const SimplexBasis& getSimplexBasis() { return basis_; }
|
130
|
+
double computeBasisCondition(const HighsLp& lp, const bool exact = false,
|
131
|
+
const bool report = false) const;
|
132
|
+
double computeBasisCondition() const {
|
133
|
+
return computeBasisCondition(this->lp_, false, false);
|
134
|
+
}
|
137
135
|
|
138
136
|
HighsStatus initialiseSimplexLpBasisAndFactor(
|
139
137
|
const bool only_from_known_basis = false);
|
140
138
|
void handleRankDeficiency();
|
141
139
|
void initialisePartitionedRowwiseMatrix();
|
142
|
-
bool lpFactorRowCompatible();
|
143
|
-
bool lpFactorRowCompatible(HighsInt expectedNumRow);
|
140
|
+
bool lpFactorRowCompatible() const;
|
141
|
+
bool lpFactorRowCompatible(const HighsInt expectedNumRow) const;
|
144
142
|
|
145
143
|
// Interface methods
|
146
144
|
void appendColsToVectors(const HighsInt num_new_col,
|
@@ -151,6 +149,12 @@ class HEkk {
|
|
151
149
|
const vector<double>& rowLower,
|
152
150
|
const vector<double>& rowUpper);
|
153
151
|
|
152
|
+
const HighsSimplexStats& getSimplexStats() const { return simplex_stats_; }
|
153
|
+
void initialiseSimplexStats() { simplex_stats_.initialise(iteration_count_); }
|
154
|
+
void reportSimplexStats(FILE* file, const std::string message = "") const {
|
155
|
+
simplex_stats_.report(file, message);
|
156
|
+
}
|
157
|
+
|
154
158
|
// Make this private later
|
155
159
|
void chooseSimplexStrategyThreads(const HighsOptions& options,
|
156
160
|
HighsSimplexInfo& info);
|
@@ -187,6 +191,9 @@ class HEkk {
|
|
187
191
|
HighsSparseMatrix ar_matrix_;
|
188
192
|
HighsSparseMatrix scaled_a_matrix_;
|
189
193
|
HSimplexNla simplex_nla_;
|
194
|
+
|
195
|
+
// Unused, but retained since there is a const reference to this in
|
196
|
+
// a deprecated method
|
190
197
|
HotStart hot_start_;
|
191
198
|
|
192
199
|
double cost_scale_;
|
@@ -208,6 +215,10 @@ class HEkk {
|
|
208
215
|
vector<HighsInt> proof_index_;
|
209
216
|
vector<double> proof_value_;
|
210
217
|
|
218
|
+
// Data to be retained after computing primal or dual ray
|
219
|
+
HighsRayRecord dual_ray_record_;
|
220
|
+
HighsRayRecord primal_ray_record_;
|
221
|
+
|
211
222
|
// Data to be retained when dualizing
|
212
223
|
HighsInt original_num_col_;
|
213
224
|
HighsInt original_num_row_;
|
@@ -244,6 +255,9 @@ class HEkk {
|
|
244
255
|
double debug_max_relative_dual_steepest_edge_weight_error;
|
245
256
|
|
246
257
|
std::vector<HighsSimplexBadBasisChangeRecord> bad_basis_change_;
|
258
|
+
std::vector<double> primal_phase1_dual_;
|
259
|
+
|
260
|
+
HighsSimplexStats simplex_stats_;
|
247
261
|
|
248
262
|
private:
|
249
263
|
bool isUnconstrainedLp();
|
@@ -332,7 +346,6 @@ class HEkk {
|
|
332
346
|
HighsStatus returnFromEkkSolve(const HighsStatus return_status);
|
333
347
|
HighsStatus returnFromSolve(const HighsStatus return_status);
|
334
348
|
|
335
|
-
double computeBasisCondition();
|
336
349
|
void initialiseAnalysis();
|
337
350
|
std::string rebuildReason(const HighsInt rebuild_reason);
|
338
351
|
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -388,6 +385,7 @@ class HEkkDual {
|
|
388
385
|
HighsInt solver_num_row;
|
389
386
|
HighsInt solver_num_col;
|
390
387
|
HighsInt solver_num_tot;
|
388
|
+
double inv_solver_num_row; // 1.0 / solver_num_row
|
391
389
|
|
392
390
|
const HighsSparseMatrix* a_matrix;
|
393
391
|
const HSimplexNla* simplex_nla;
|
@@ -485,7 +483,7 @@ class HEkkDual {
|
|
485
483
|
* @brief Multiple minor iteration data
|
486
484
|
*/
|
487
485
|
struct MFinish {
|
488
|
-
|
486
|
+
int8_t move_in;
|
489
487
|
double shiftOut;
|
490
488
|
std::vector<HighsInt> flipList;
|
491
489
|
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -104,8 +101,7 @@ class HEkkPrimal {
|
|
104
101
|
void getBasicPrimalInfeasibility();
|
105
102
|
bool correctPrimal(const bool initialise = false);
|
106
103
|
void shiftBound(const bool lower, const HighsInt iVar, const double value,
|
107
|
-
const double random_value, double& bound, double& shift
|
108
|
-
const bool report = false);
|
104
|
+
const double random_value, double& bound, double& shift);
|
109
105
|
void savePrimalRay();
|
110
106
|
HighsDebugStatus debugPrimalSimplex(const std::string message,
|
111
107
|
const bool initialise = false);
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -40,16 +37,6 @@ struct ProductFormUpdate {
|
|
40
37
|
void ftran(HVector& rhs) const;
|
41
38
|
};
|
42
39
|
|
43
|
-
struct FrozenBasis {
|
44
|
-
bool valid_ = false;
|
45
|
-
HighsInt prev_;
|
46
|
-
HighsInt next_;
|
47
|
-
ProductFormUpdate update_;
|
48
|
-
SimplexBasis basis_;
|
49
|
-
std::vector<double> dual_edge_weight_;
|
50
|
-
void clear();
|
51
|
-
};
|
52
|
-
|
53
40
|
struct SimplexIterate {
|
54
41
|
bool valid_ = false;
|
55
42
|
SimplexBasis basis_;
|
@@ -85,17 +72,8 @@ class HSimplexNla {
|
|
85
72
|
void ftranInScaledSpace(
|
86
73
|
HVector& rhs, const double expected_density,
|
87
74
|
HighsTimerClock* factor_timer_clock_pointer = NULL) const;
|
88
|
-
void frozenBtran(HVector& rhs) const;
|
89
|
-
void frozenFtran(HVector& rhs) const;
|
90
75
|
void update(HVector* aq, HVector* ep, HighsInt* iRow, HighsInt* hint);
|
91
76
|
|
92
|
-
void frozenBasisClearAllData();
|
93
|
-
void frozenBasisClearAllUpdate();
|
94
|
-
bool frozenBasisAllDataClear();
|
95
|
-
bool frozenBasisIdValid(const HighsInt frozen_basis_id) const;
|
96
|
-
bool frozenBasisHasInvert(const HighsInt frozen_basis_id) const;
|
97
|
-
HighsInt freeze(const SimplexBasis& basis, const double col_aq_density);
|
98
|
-
void unfreeze(const HighsInt unfreeze_basis_id, SimplexBasis& basis);
|
99
77
|
void putInvert();
|
100
78
|
void getInvert();
|
101
79
|
|
@@ -167,10 +145,6 @@ class HSimplexNla {
|
|
167
145
|
bool report_;
|
168
146
|
double build_synthetic_tick_;
|
169
147
|
|
170
|
-
// Frozen basis data
|
171
|
-
HighsInt first_frozen_basis_id_ = kNoLink;
|
172
|
-
HighsInt last_frozen_basis_id_ = kNoLink;
|
173
|
-
vector<FrozenBasis> frozen_basis_;
|
174
148
|
ProductFormUpdate update_;
|
175
149
|
|
176
150
|
// Simplex iterate data
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -23,11 +20,6 @@
|
|
23
20
|
#include "lp_data/HighsOptions.h"
|
24
21
|
#include "simplex/SimplexConst.h"
|
25
22
|
#include "util/HFactor.h"
|
26
|
-
#include "util/HVector.h"
|
27
|
-
#include "util/HVectorBase.h"
|
28
|
-
#include "util/HighsInt.h"
|
29
|
-
#include "util/HighsTimer.h"
|
30
|
-
#include "util/HighsUtils.h"
|
31
23
|
|
32
24
|
enum TRAN_STAGE {
|
33
25
|
TRAN_STAGE_FTRAN_LOWER = 0,
|
@@ -160,8 +152,10 @@ class HighsSimplexAnalysis {
|
|
160
152
|
max_sum_average_log_extreme_dual_steepest_edge_weight_error(0.0),
|
161
153
|
num_invert_report_since_last_header(-1),
|
162
154
|
num_iteration_report_since_last_header(-1),
|
155
|
+
highs_run_time(0.0),
|
163
156
|
last_user_log_time(-kHighsInf),
|
164
157
|
delta_user_log_time(1e0),
|
158
|
+
timeless_log(false),
|
165
159
|
average_concurrency(0.0),
|
166
160
|
average_fraction_of_possible_minor_iterations_performed(0.0),
|
167
161
|
sum_multi_chosen(0),
|
@@ -256,6 +250,7 @@ class HighsSimplexAnalysis {
|
|
256
250
|
void reportFactorTimer();
|
257
251
|
void updateInvertFormData(const HFactor& factor);
|
258
252
|
void reportInvertFormData();
|
253
|
+
HighsInt numInvert() { return num_invert; }
|
259
254
|
|
260
255
|
// Control methods to be moved to HEkkControl
|
261
256
|
void dualSteepestEdgeWeightError(const double computed_edge_weight,
|
@@ -435,8 +430,10 @@ class HighsSimplexAnalysis {
|
|
435
430
|
|
436
431
|
HighsInt num_invert_report_since_last_header;
|
437
432
|
HighsInt num_iteration_report_since_last_header;
|
433
|
+
double highs_run_time;
|
438
434
|
double last_user_log_time;
|
439
435
|
double delta_user_log_time;
|
436
|
+
bool timeless_log;
|
440
437
|
|
441
438
|
double average_concurrency;
|
442
439
|
double average_fraction_of_possible_minor_iterations_performed;
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -146,17 +143,17 @@ const HighsInt kDualMultiMinConcurrency = 1; // 2;
|
|
146
143
|
// Simplex nonbasicFlag status for columns and rows. Don't use enum
|
147
144
|
// class since they are used as HighsInt to replace conditional
|
148
145
|
// statements by multiplication
|
149
|
-
const
|
150
|
-
const
|
151
|
-
const
|
146
|
+
const int8_t kNonbasicFlagTrue = 1; // Nonbasic
|
147
|
+
const int8_t kNonbasicFlagFalse = 0; // Basic
|
148
|
+
const int8_t kIllegalFlagValue =
|
152
149
|
-99; // Used to see whether valid flag value has been set
|
153
150
|
|
154
151
|
// Simplex nonbasicMove status for columns and rows. Don't use enum
|
155
152
|
// class since they are used in conditional statements
|
156
|
-
const
|
157
|
-
const
|
158
|
-
const
|
159
|
-
const
|
153
|
+
const int8_t kNonbasicMoveUp = 1; // Free to move (only) up
|
154
|
+
const int8_t kNonbasicMoveDn = -1; // Free to move (only) down
|
155
|
+
const int8_t kNonbasicMoveZe = 0; // Fixed or free to move up and down
|
156
|
+
const int8_t kIllegalMoveValue =
|
160
157
|
-99; // Used to see whether valid move value has been set
|
161
158
|
|
162
159
|
// Threshold for accepting updated DSE weight
|
@@ -167,6 +164,9 @@ const double kMinDualSteepestEdgeWeight = 1e-4;
|
|
167
164
|
const HighsInt kNoRowSought = -2;
|
168
165
|
const HighsInt kNoRowChosen = -1;
|
169
166
|
|
167
|
+
const HighsInt kNoRayIndex = -1;
|
168
|
+
const HighsInt kNoRaySign = 0;
|
169
|
+
|
170
170
|
// Switch to use code to check that, unless the basis supplied by the
|
171
171
|
// MIP solver was alien, the simplex solver starts from dual
|
172
172
|
// feasibility.
|
@@ -185,7 +185,6 @@ enum class LpAction {
|
|
185
185
|
kDelRowsBasisOk,
|
186
186
|
kScaledCol,
|
187
187
|
kScaledRow,
|
188
|
-
kHotStart,
|
189
188
|
kBacktracking
|
190
189
|
};
|
191
190
|
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -57,9 +54,7 @@ struct HighsSimplexStatus {
|
|
57
54
|
bool has_dual_objective_value =
|
58
55
|
false; // The dual objective function value is known
|
59
56
|
bool has_primal_objective_value =
|
60
|
-
false;
|
61
|
-
bool has_dual_ray = false; // A dual unbounded ray is known
|
62
|
-
bool has_primal_ray = false; // A primal unbounded ray is known
|
57
|
+
false; // The dual objective function value is known
|
63
58
|
};
|
64
59
|
|
65
60
|
struct HighsSimplexInfo {
|
@@ -137,12 +132,6 @@ struct HighsSimplexInfo {
|
|
137
132
|
std::vector<double> backtracking_basis_workUpperShift_;
|
138
133
|
std::vector<double> backtracking_basis_edge_weight_;
|
139
134
|
|
140
|
-
// Dual and primal ray vectors
|
141
|
-
HighsInt dual_ray_row_;
|
142
|
-
HighsInt dual_ray_sign_;
|
143
|
-
HighsInt primal_ray_col_;
|
144
|
-
HighsInt primal_ray_sign_;
|
145
|
-
|
146
135
|
// Options from HighsOptions for the simplex solver
|
147
136
|
HighsInt simplex_strategy;
|
148
137
|
HighsInt dual_edge_weight_strategy;
|
@@ -261,4 +250,12 @@ struct HighsSimplexBadBasisChangeRecord {
|
|
261
250
|
double save_value;
|
262
251
|
};
|
263
252
|
|
253
|
+
struct HighsRayRecord {
|
254
|
+
HighsInt index;
|
255
|
+
HighsInt sign;
|
256
|
+
std::vector<double> value;
|
257
|
+
HighsRayRecord getRayRecord() const;
|
258
|
+
void setRayRecord(const HighsRayRecord& from_record);
|
259
|
+
void clear();
|
260
|
+
};
|
264
261
|
#endif /* SIMPLEX_SIMPLEXSTRUCT_H_ */
|