casadi 3.6.2__cp311-none-manylinux2014_i686.whl → 3.6.4__cp311-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.py +217 -60
- casadi/cbc +0 -0
- casadi/clp +0 -0
- casadi/cmake/alpaqa/alpaqaConfig.cmake +24 -0
- casadi/cmake/alpaqa/alpaqaConfigVersion.cmake +70 -0
- casadi/cmake/alpaqa/alpaqaTargets-release.cmake +29 -0
- casadi/cmake/alpaqa/alpaqaTargets.cmake +131 -0
- casadi/cmake/casadi-config-version.cmake +1 -1
- casadi/cmake/casadi-config.cmake +4 -0
- casadi/cmake/highs/highs-config.cmake +18 -4
- casadi/cmake/highs/highs-targets-release.cmake +3 -3
- casadi/cmake/highs/highs-targets.cmake +1 -1
- casadi/cmake/sleqp/sleqp-config-version.cmake +70 -0
- casadi/cmake/sleqp/sleqp-config.cmake +1 -0
- casadi/cmake/sleqp/sleqp-targets-release.cmake +20 -0
- casadi/cmake/sleqp/sleqp-targets.cmake +102 -0
- casadi/cmake/trlib/trlib-config-release.cmake +19 -0
- casadi/cmake/trlib/trlib-config-version.cmake +88 -0
- casadi/cmake/trlib/trlib-config.cmake +107 -0
- casadi/highs +0 -0
- casadi/include/casadi/casadi.i +20 -3
- casadi/include/casadi/config.h +8 -8
- casadi/include/casadi/core/calculus.hpp +1 -1
- casadi/include/casadi/core/code_generator.hpp +10 -0
- casadi/include/casadi/core/fmu.hpp +224 -0
- casadi/include/casadi/core/generic_matrix.hpp +4 -2
- casadi/include/casadi/core/nlpsol.hpp +0 -2
- casadi/include/casadi/core/runtime/casadi_finite_diff.hpp +204 -11
- casadi/include/casadi/core/serializing_stream.hpp +12 -0
- casadi/include/casadi/core/sparsity_interface.hpp +55 -1
- casadi/include/casadi/doc.i +916 -462
- casadi/include/casadi/doc_merged.i +492 -176
- casadi/include/casadi/mem.h +13 -2
- casadi/include/casadi/valgrind-casadi.supp +82 -0
- casadi/include/casadi/valgrind-python.supp +39 -0
- casadi/include/highs/HConfig.h +4 -7
- casadi/include/highs/Highs.h +240 -51
- casadi/include/highs/filereaderlp/builder.hpp +12 -13
- casadi/include/highs/filereaderlp/model.hpp +32 -35
- casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
- casadi/include/highs/interfaces/highs_c_api.h +964 -577
- casadi/include/highs/io/Filereader.h +2 -4
- casadi/include/highs/io/FilereaderEms.h +2 -4
- casadi/include/highs/io/FilereaderLp.h +2 -4
- casadi/include/highs/io/FilereaderMps.h +2 -4
- casadi/include/highs/io/HMPSIO.h +2 -4
- casadi/include/highs/io/HMpsFF.h +2 -4
- casadi/include/highs/io/HighsIO.h +19 -13
- casadi/include/highs/io/LoadOptions.h +7 -6
- casadi/include/highs/ipm/IpxWrapper.h +4 -5
- casadi/include/highs/lp_data/HConst.h +60 -15
- casadi/include/highs/lp_data/HStruct.h +32 -8
- casadi/include/highs/lp_data/HighsAnalysis.h +2 -4
- casadi/include/highs/lp_data/HighsCallback.h +33 -0
- casadi/include/highs/lp_data/HighsCallbackStruct.h +36 -0
- casadi/include/highs/lp_data/HighsDebug.h +2 -4
- casadi/include/highs/lp_data/HighsInfo.h +22 -23
- casadi/include/highs/lp_data/HighsInfoDebug.h +2 -4
- casadi/include/highs/lp_data/HighsLp.h +14 -6
- casadi/include/highs/lp_data/HighsLpSolverObject.h +6 -5
- casadi/include/highs/lp_data/HighsLpUtils.h +23 -12
- casadi/include/highs/lp_data/HighsModelUtils.h +22 -8
- casadi/include/highs/lp_data/HighsOptions.h +175 -106
- casadi/include/highs/lp_data/HighsRanging.h +2 -4
- casadi/include/highs/lp_data/HighsRuntimeOptions.h +21 -6
- casadi/include/highs/lp_data/HighsSolution.h +4 -4
- casadi/include/highs/lp_data/HighsSolutionDebug.h +2 -4
- casadi/include/highs/lp_data/HighsSolve.h +2 -4
- casadi/include/highs/lp_data/HighsStatus.h +2 -4
- casadi/include/highs/mip/HighsCliqueTable.h +18 -20
- casadi/include/highs/mip/HighsConflictPool.h +2 -4
- casadi/include/highs/mip/HighsCutGeneration.h +2 -4
- casadi/include/highs/mip/HighsCutPool.h +2 -4
- casadi/include/highs/mip/HighsDebugSol.h +2 -4
- casadi/include/highs/mip/HighsDomain.h +5 -5
- casadi/include/highs/mip/HighsDomainChange.h +2 -4
- casadi/include/highs/mip/HighsDynamicRowMatrix.h +2 -4
- casadi/include/highs/mip/HighsGFkSolve.h +2 -4
- casadi/include/highs/mip/HighsImplications.h +2 -4
- casadi/include/highs/mip/HighsLpAggregator.h +2 -4
- casadi/include/highs/mip/HighsLpRelaxation.h +2 -4
- casadi/include/highs/mip/HighsMipSolver.h +18 -6
- casadi/include/highs/mip/HighsMipSolverData.h +8 -4
- casadi/include/highs/mip/HighsModkSeparator.h +2 -4
- casadi/include/highs/mip/HighsNodeQueue.h +3 -9
- casadi/include/highs/mip/HighsObjectiveFunction.h +2 -4
- casadi/include/highs/mip/HighsPathSeparator.h +2 -4
- casadi/include/highs/mip/HighsPrimalHeuristics.h +2 -4
- casadi/include/highs/mip/HighsPseudocost.h +2 -4
- casadi/include/highs/mip/HighsRedcostFixing.h +2 -4
- casadi/include/highs/mip/HighsSearch.h +2 -4
- casadi/include/highs/mip/HighsSeparation.h +2 -4
- casadi/include/highs/mip/HighsSeparator.h +2 -4
- casadi/include/highs/mip/HighsTableauSeparator.h +2 -4
- casadi/include/highs/mip/HighsTransformedLp.h +2 -4
- casadi/include/highs/model/HighsHessian.h +3 -1
- casadi/include/highs/model/HighsModel.h +2 -0
- casadi/include/highs/parallel/HighsSpinMutex.h +2 -1
- casadi/include/highs/parallel/HighsSplitDeque.h +1 -1
- casadi/include/highs/parallel/HighsTaskExecutor.h +10 -2
- casadi/include/highs/presolve/HPresolve.h +9 -6
- casadi/include/highs/presolve/HPresolveAnalysis.h +5 -4
- casadi/include/highs/presolve/HighsPostsolveStack.h +50 -13
- casadi/include/highs/presolve/HighsSymmetry.h +2 -4
- casadi/include/highs/presolve/ICrash.h +4 -3
- casadi/include/highs/presolve/ICrashUtil.h +2 -2
- casadi/include/highs/presolve/ICrashX.h +4 -6
- casadi/include/highs/presolve/PresolveComponent.h +4 -42
- casadi/include/highs/qpsolver/a_asm.hpp +56 -0
- casadi/include/highs/qpsolver/a_quass.hpp +12 -0
- casadi/include/highs/qpsolver/quass.hpp +1 -4
- casadi/include/highs/simplex/HApp.h +14 -16
- casadi/include/highs/simplex/HEkk.h +12 -11
- casadi/include/highs/simplex/HEkkDual.h +2 -4
- casadi/include/highs/simplex/HEkkDualRHS.h +5 -6
- casadi/include/highs/simplex/HEkkDualRow.h +2 -4
- casadi/include/highs/simplex/HEkkPrimal.h +2 -4
- casadi/include/highs/simplex/HSimplex.h +2 -4
- casadi/include/highs/simplex/HSimplexDebug.h +2 -4
- casadi/include/highs/simplex/HSimplexNla.h +2 -4
- casadi/include/highs/simplex/HSimplexReport.h +3 -5
- casadi/include/highs/simplex/HighsSimplexAnalysis.h +2 -4
- casadi/include/highs/simplex/SimplexConst.h +7 -5
- casadi/include/highs/simplex/SimplexStruct.h +11 -5
- casadi/include/highs/simplex/SimplexTimer.h +2 -4
- casadi/include/highs/test/DevKkt.h +2 -4
- casadi/include/highs/test/KktCh2.h +2 -4
- casadi/include/highs/util/FactorTimer.h +2 -4
- casadi/include/highs/util/HFactor.h +2 -4
- casadi/include/highs/util/HFactorConst.h +2 -4
- casadi/include/highs/util/HFactorDebug.h +2 -4
- casadi/include/highs/util/HSet.h +3 -5
- casadi/include/highs/util/HVector.h +2 -4
- casadi/include/highs/util/HVectorBase.h +2 -4
- casadi/include/highs/util/HighsCDouble.h +2 -4
- casadi/include/highs/util/HighsComponent.h +2 -4
- casadi/include/highs/util/HighsDataStack.h +3 -5
- casadi/include/highs/util/HighsDisjointSets.h +8 -10
- casadi/include/highs/util/HighsHash.h +22 -7
- casadi/include/highs/util/HighsHashTree.h +25 -7
- casadi/include/highs/util/HighsInt.h +2 -4
- casadi/include/highs/util/HighsIntegers.h +2 -4
- casadi/include/highs/util/HighsLinearSumBounds.h +2 -4
- casadi/include/highs/util/HighsMatrixPic.h +2 -4
- casadi/include/highs/util/HighsMatrixSlice.h +2 -4
- casadi/include/highs/util/HighsMatrixUtils.h +2 -4
- casadi/include/highs/util/HighsRandom.h +2 -4
- casadi/include/highs/util/HighsRbTree.h +2 -4
- casadi/include/highs/util/HighsSort.h +2 -4
- casadi/include/highs/util/HighsSparseMatrix.h +11 -7
- casadi/include/highs/util/HighsSparseVectorSum.h +2 -4
- casadi/include/highs/util/HighsSplay.h +2 -4
- casadi/include/highs/util/HighsTimer.h +3 -4
- casadi/include/highs/util/HighsUtils.h +14 -4
- casadi/include/highs/util/stringutil.h +2 -4
- casadi/include/licenses/alpaqa-external/LICENSE +165 -0
- casadi/include/licenses/highs-external/LICENSE +1 -1
- casadi/include/licenses/sleqp-external/LICENSE +165 -0
- casadi/include/licenses/trlib-external/LICENSE +21 -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/lib/libtinyxml2.a +0 -0
- casadi/libCbc.la +3 -3
- casadi/libCbc.so +0 -0
- casadi/libCbc.so.3 +0 -0
- casadi/libCbc.so.3.10.11 +0 -0
- casadi/libCbcSolver.la +3 -3
- casadi/libCbcSolver.so +0 -0
- casadi/libCbcSolver.so.3 +0 -0
- casadi/libCbcSolver.so.3.10.11 +0 -0
- casadi/libCgl.la +2 -2
- casadi/libCgl.so +0 -0
- casadi/libCgl.so.1 +0 -0
- casadi/libCgl.so.1.10.8 +0 -0
- casadi/libClp.la +2 -2
- casadi/libClp.so +0 -0
- casadi/libClp.so.1 +0 -0
- casadi/{libClp.so.1.14.7 → libClp.so.1.14.9} +0 -0
- casadi/libClpSolver.la +2 -2
- casadi/libClpSolver.so +0 -0
- casadi/libClpSolver.so.1 +0 -0
- casadi/{libClpSolver.so.1.14.7 → libClpSolver.so.1.14.9} +0 -0
- casadi/libCoinUtils.la +2 -2
- casadi/libCoinUtils.so +0 -0
- casadi/libCoinUtils.so.3 +0 -0
- casadi/libCoinUtils.so.3.11.10 +0 -0
- casadi/libFortranHighs.so +0 -0
- casadi/libOsi.la +2 -2
- casadi/libOsiCbc.la +3 -3
- casadi/libOsiCbc.so +0 -0
- casadi/libOsiCbc.so.3 +0 -0
- casadi/{libOsiCbc.so.3.10.6 → libOsiCbc.so.3.10.11} +0 -0
- casadi/libOsiClp.la +2 -2
- casadi/libOsiClp.so +0 -0
- casadi/libOsiClp.so.1 +0 -0
- casadi/libOsiClp.so.1.14.9 +0 -0
- casadi/libOsiCommonTests.la +2 -2
- casadi/libOsiCommonTests.so +0 -0
- casadi/libOsiCommonTests.so.1 +0 -0
- casadi/{libOsiCommonTests.so.1.13.7 → libOsiCommonTests.so.1.13.9} +0 -0
- casadi/libalpaqa-dl-loader.so +0 -0
- casadi/libalpaqa-dl-loader.so.1.0.0 +0 -0
- casadi/libalpaqa.so +0 -0
- casadi/libalpaqa.so.1.0.0 +0 -0
- casadi/libbonmin.la +3 -3
- 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_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_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_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_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_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_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_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_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_newton.so +0 -0
- casadi/libcasadi_rootfinder_newton.so.3.7 +0 -0
- casadi/libcasadi_sundials_common.so +0 -0
- casadi/libcasadi_sundials_common.so.3.7 +0 -0
- casadi/libhighs.so +0 -0
- casadi/libhighs.so.1.6 +0 -0
- casadi/libhighs.so.1.6.0 +0 -0
- casadi/libindirect.a +0 -0
- casadi/liblinsys.a +0 -0
- casadi/libosqp.a +0 -0
- casadi/libqdldl.a +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/libtrlib.so +0 -0
- casadi/libtrlib.so.0.4 +0 -0
- casadi/pkgconfig/blas.pc +11 -0
- casadi/pkgconfig/bonmin.pc +1 -1
- casadi/pkgconfig/casadi.pc +1 -1
- casadi/pkgconfig/cbc.pc +2 -2
- casadi/pkgconfig/cgl.pc +2 -2
- casadi/pkgconfig/clp.pc +1 -1
- casadi/pkgconfig/coinutils.pc +1 -1
- casadi/pkgconfig/highs.pc +3 -3
- casadi/pkgconfig/lapack.pc +11 -0
- casadi/pkgconfig/openblas.pc +1 -1
- casadi/pkgconfig/osi-cbc.pc +1 -1
- casadi/pkgconfig/osi-clp.pc +1 -1
- casadi/pkgconfig/osi-unittests.pc +1 -1
- casadi/pkgconfig/osi.pc +1 -1
- casadi/pkgconfig/sleqp.pc +10 -0
- {casadi-3.6.2.dist-info → casadi-3.6.4.dist-info}/METADATA +1 -1
- {casadi-3.6.2.dist-info → casadi-3.6.4.dist-info}/RECORD +324 -283
- casadi/libCbc.so.3.10.6 +0 -0
- casadi/libCbcSolver.so.3.10.6 +0 -0
- casadi/libCgl.so.1.10.4 +0 -0
- casadi/libCoinUtils.so.3.11.6 +0 -0
- casadi/libOsiClp.so.1.14.7 +0 -0
- casadi/libbonmin.so.4.8.8 +0 -0
- casadi/libhighs.so.1.4 +0 -0
- casadi/libhighs.so.1.4.0 +0 -0
- /casadi/{libOsi.so.1.13.7 → libOsi.so.1.13.9} +0 -0
- {casadi-3.6.2.dist-info → casadi-3.6.4.dist-info}/WHEEL +0 -0
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
#ifndef HIGHS_PRIMAL_HEURISTICS_H_
|
14
12
|
#define HIGHS_PRIMAL_HEURISTICS_H_
|
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
|
14
12
|
#ifndef HIGHS_PSEUDOCOST_H_
|
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
/**@file mip/HighsRedcostFixing.h
|
14
12
|
* @brief reduced cost fixing using the current cutoff bound
|
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
#ifndef HIGHS_SEARCH_H_
|
14
12
|
#define HIGHS_SEARCH_H_
|
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
#ifndef HIGHS_SEPARATION_H_
|
14
12
|
#define HIGHS_SEPARATION_H_
|
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
/**@file mip/HighsSeparator.h
|
14
12
|
* @brief Base class for separators
|
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
/**@file mip/HighsTableauSeparator.h
|
14
12
|
* @brief Class for separating cuts from the LP tableaux rows
|
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
/**@file mip/HighsTransformedLp.h
|
14
12
|
* @brief LP transformations useful for cutting plane separation. This includes
|
@@ -19,6 +19,7 @@
|
|
19
19
|
#include <vector>
|
20
20
|
|
21
21
|
#include "lp_data/HConst.h"
|
22
|
+
#include "util/HighsCDouble.h"
|
22
23
|
|
23
24
|
// class HighsHessian;
|
24
25
|
|
@@ -30,10 +31,11 @@ class HighsHessian {
|
|
30
31
|
std::vector<HighsInt> start_;
|
31
32
|
std::vector<HighsInt> index_;
|
32
33
|
std::vector<double> value_;
|
33
|
-
bool operator==(const HighsHessian& hessian);
|
34
|
+
bool operator==(const HighsHessian& hessian) const;
|
34
35
|
void product(const std::vector<double>& solution,
|
35
36
|
std::vector<double>& product) const;
|
36
37
|
double objectiveValue(const std::vector<double>& solution) const;
|
38
|
+
HighsCDouble objectiveCDoubleValue(const std::vector<double>& solution) const;
|
37
39
|
void exactResize();
|
38
40
|
void clear();
|
39
41
|
bool formatOk() const {
|
@@ -27,6 +27,8 @@ class HighsModel {
|
|
27
27
|
public:
|
28
28
|
HighsLp lp_;
|
29
29
|
HighsHessian hessian_;
|
30
|
+
bool operator==(const HighsModel& model) const;
|
31
|
+
bool equalButForNames(const HighsModel& model) const;
|
30
32
|
bool isQp() const { return this->hessian_.dim_; }
|
31
33
|
bool isMip() const { return this->lp_.isMip(); }
|
32
34
|
bool isEmpty() const {
|
@@ -32,6 +32,7 @@ class HighsSpinMutex {
|
|
32
32
|
#ifdef HIGHS_HAVE_MM_PAUSE
|
33
33
|
_mm_pause();
|
34
34
|
#else
|
35
|
+
// ToDo: See if this is OK on Mac M1
|
35
36
|
std::this_thread::yield();
|
36
37
|
#endif
|
37
38
|
}
|
@@ -49,4 +50,4 @@ class HighsSpinMutex {
|
|
49
50
|
void unlock() { flag.store(false, std::memory_order_release); }
|
50
51
|
};
|
51
52
|
|
52
|
-
#endif
|
53
|
+
#endif
|
@@ -88,8 +88,16 @@ class HighsTaskExecutor {
|
|
88
88
|
void run_worker(int workerId) {
|
89
89
|
// spin until the global executor pointer is set up
|
90
90
|
ExecutorHandle* executor;
|
91
|
-
|
91
|
+
// Following yields warning C4706: assignment within conditional
|
92
|
+
// expression when building libhighs on Windows (/W4):
|
93
|
+
//
|
94
|
+
// while (!(executor = mainWorkerHandle.load(std::memory_order_acquire)))
|
95
|
+
// HighsSpinMutex::yieldProcessor();
|
96
|
+
while (true) {
|
97
|
+
executor = mainWorkerHandle.load(std::memory_order_acquire);
|
98
|
+
if (executor != nullptr) break;
|
92
99
|
HighsSpinMutex::yieldProcessor();
|
100
|
+
}
|
93
101
|
// now acquire a reference count of the global executor
|
94
102
|
threadLocalExecutorHandle() = *executor;
|
95
103
|
HighsSplitDeque* localDeque = workerDeques[workerId].get();
|
@@ -143,7 +151,7 @@ class HighsTaskExecutor {
|
|
143
151
|
if (executorHandle.ptr) {
|
144
152
|
// first spin until every worker has acquired its executor reference
|
145
153
|
while (executorHandle.ptr.use_count() !=
|
146
|
-
executorHandle.ptr->workerDeques.size())
|
154
|
+
(long)executorHandle.ptr->workerDeques.size())
|
147
155
|
HighsSpinMutex::yieldProcessor();
|
148
156
|
// set the active flag to false first with release ordering
|
149
157
|
executorHandle.ptr->mainWorkerHandle.store(nullptr,
|
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
/**@file presolve/HPresolve.h
|
14
12
|
* @brief
|
@@ -137,7 +135,7 @@ class HPresolve {
|
|
137
135
|
kDualInfeasible,
|
138
136
|
kStopped,
|
139
137
|
};
|
140
|
-
|
138
|
+
HighsPresolveStatus presolve_status_;
|
141
139
|
HPresolveAnalysis analysis_;
|
142
140
|
|
143
141
|
// private functions for different shared functionality and matrix
|
@@ -275,7 +273,7 @@ class HPresolve {
|
|
275
273
|
|
276
274
|
void shrinkProblem(HighsPostsolveStack& postsolve_stack);
|
277
275
|
|
278
|
-
void addToMatrix(HighsInt row, HighsInt col, double val);
|
276
|
+
void addToMatrix(const HighsInt row, const HighsInt col, const double val);
|
279
277
|
|
280
278
|
Result runProbing(HighsPostsolveStack& postsolve_stack);
|
281
279
|
|
@@ -341,6 +339,11 @@ class HPresolve {
|
|
341
339
|
return analysis_.presolve_log_;
|
342
340
|
}
|
343
341
|
|
342
|
+
HighsPresolveStatus getPresolveStatus() const { return presolve_status_; }
|
343
|
+
|
344
|
+
HighsInt debugGetCheckCol() const;
|
345
|
+
HighsInt debugGetCheckRow() const;
|
346
|
+
|
344
347
|
// Not currently called
|
345
348
|
static void debug(const HighsLp& lp, const HighsOptions& options);
|
346
349
|
};
|
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
/**@file presolve/HPresolveAnalysis.h
|
14
12
|
* @brief
|
@@ -39,6 +37,9 @@ class HPresolveAnalysis {
|
|
39
37
|
HighsPresolveLog presolve_log_;
|
40
38
|
|
41
39
|
// for LP presolve
|
40
|
+
//
|
41
|
+
// Transform options->presolve_rule_off into logical settings in
|
42
|
+
// allow_rule_[*], commenting on the rules switched off
|
42
43
|
void setup(const HighsLp* model_, const HighsOptions* options_,
|
43
44
|
const HighsInt& numDeletedRows_, const HighsInt& numDeletedCols_);
|
44
45
|
void resetNumDeleted();
|
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
/**@file HighsPostsolveStack.h
|
14
12
|
* @brief Class to hold all information for postsolve and can transform back
|
@@ -62,6 +60,12 @@ class HighsPostsolveStack {
|
|
62
60
|
Nonzero() = default;
|
63
61
|
};
|
64
62
|
|
63
|
+
size_t debug_prev_numreductions = 0;
|
64
|
+
double debug_prev_col_lower = 0;
|
65
|
+
double debug_prev_col_upper = 0;
|
66
|
+
double debug_prev_row_lower = 0;
|
67
|
+
double debug_prev_row_upper = 0;
|
68
|
+
|
65
69
|
private:
|
66
70
|
/// transform a column x by a linear mapping with a new column x'.
|
67
71
|
/// I.e. substitute x = a * x' + b
|
@@ -207,7 +211,8 @@ class HighsPostsolveStack {
|
|
207
211
|
|
208
212
|
void undo(const HighsOptions& options, HighsSolution& solution,
|
209
213
|
HighsBasis& basis) const;
|
210
|
-
|
214
|
+
bool okMerge(const double tolerance) const;
|
215
|
+
void undoFix(const HighsOptions& options, HighsSolution& solution) const;
|
211
216
|
void transformToPresolvedSpace(std::vector<double>& primalSol) const;
|
212
217
|
};
|
213
218
|
|
@@ -474,20 +479,32 @@ class HighsPostsolveStack {
|
|
474
479
|
reductionAdded(ReductionType::kDuplicateRow);
|
475
480
|
}
|
476
481
|
|
477
|
-
|
482
|
+
bool duplicateColumn(double colScale, double colLower, double colUpper,
|
478
483
|
double duplicateColLower, double duplicateColUpper,
|
479
484
|
HighsInt col, HighsInt duplicateCol, bool colIntegral,
|
480
|
-
bool duplicateColIntegral
|
485
|
+
bool duplicateColIntegral,
|
486
|
+
const double ok_merge_tolerance) {
|
481
487
|
const HighsInt origCol = origColIndex[col];
|
482
488
|
const HighsInt origDuplicateCol = origColIndex[duplicateCol];
|
483
|
-
|
484
|
-
colScale,
|
485
|
-
|
489
|
+
DuplicateColumn debug_values = {
|
490
|
+
colScale, colLower, colUpper,
|
491
|
+
duplicateColLower, duplicateColUpper, origCol,
|
492
|
+
origDuplicateCol, colIntegral, duplicateColIntegral};
|
493
|
+
const bool ok_merge = debug_values.okMerge(ok_merge_tolerance);
|
494
|
+
const bool prevent_illegal_merge = true;
|
495
|
+
if (!ok_merge && prevent_illegal_merge) return false;
|
496
|
+
reductionValues.push(debug_values);
|
497
|
+
// reductionValues.push(DuplicateColumn{
|
498
|
+
// colScale, colLower, colUpper, duplicateColLower,
|
499
|
+
// duplicateColUpper, origCol, origDuplicateCol, colIntegral,
|
500
|
+
// duplicateColIntegral});
|
501
|
+
|
486
502
|
reductionAdded(ReductionType::kDuplicateColumn);
|
487
503
|
|
488
504
|
// mark columns as not linearly transformable
|
489
505
|
linearlyTransformable[origCol] = false;
|
490
506
|
linearlyTransformable[origDuplicateCol] = false;
|
507
|
+
return true;
|
491
508
|
}
|
492
509
|
|
493
510
|
std::vector<double> getReducedPrimalSolution(
|
@@ -530,7 +547,7 @@ class HighsPostsolveStack {
|
|
530
547
|
|
531
548
|
/// undo presolve steps for primal dual solution and basis
|
532
549
|
void undo(const HighsOptions& options, HighsSolution& solution,
|
533
|
-
HighsBasis& basis) {
|
550
|
+
HighsBasis& basis, const HighsInt report_col = -1) {
|
534
551
|
reductionValues.resetPosition();
|
535
552
|
|
536
553
|
// Verify that undo can be performed
|
@@ -539,12 +556,14 @@ class HighsPostsolveStack {
|
|
539
556
|
bool perform_basis_postsolve = basis.valid;
|
540
557
|
|
541
558
|
// expand solution to original index space
|
559
|
+
assert(origNumCol > 0);
|
542
560
|
solution.col_value.resize(origNumCol);
|
543
561
|
for (HighsInt i = origColIndex.size() - 1; i >= 0; --i) {
|
544
562
|
assert(origColIndex[i] >= i);
|
545
563
|
solution.col_value[origColIndex[i]] = solution.col_value[i];
|
546
564
|
}
|
547
565
|
|
566
|
+
assert(origNumRow >= 0);
|
548
567
|
solution.row_value.resize(origNumRow);
|
549
568
|
for (HighsInt i = origRowIndex.size() - 1; i >= 0; --i) {
|
550
569
|
assert(origRowIndex[i] >= i);
|
@@ -576,6 +595,10 @@ class HighsPostsolveStack {
|
|
576
595
|
|
577
596
|
// now undo the changes
|
578
597
|
for (HighsInt i = reductions.size() - 1; i >= 0; --i) {
|
598
|
+
if (report_col >= 0)
|
599
|
+
printf("Before reduction %2d (type %2d): col_value[%2d] = %g\n",
|
600
|
+
int(i), int(reductions[i].first), int(report_col),
|
601
|
+
solution.col_value[report_col]);
|
579
602
|
switch (reductions[i].first) {
|
580
603
|
case ReductionType::kLinearTransform: {
|
581
604
|
LinearTransform reduction;
|
@@ -663,20 +686,32 @@ class HighsPostsolveStack {
|
|
663
686
|
DuplicateColumn reduction;
|
664
687
|
reductionValues.pop(reduction);
|
665
688
|
reduction.undo(options, solution, basis);
|
689
|
+
break;
|
666
690
|
}
|
691
|
+
default:
|
692
|
+
printf("Reduction case %d not handled\n", int(reductions[i].first));
|
693
|
+
if (kAllowDeveloperAssert) assert(1 == 0);
|
667
694
|
}
|
668
695
|
}
|
696
|
+
if (report_col >= 0)
|
697
|
+
printf("After last reduction: col_value[%2d] = %g\n", int(report_col),
|
698
|
+
solution.col_value[report_col]);
|
669
699
|
}
|
670
700
|
|
671
701
|
/// undo presolve steps for primal solution
|
672
|
-
void undoPrimal(const HighsOptions& options, HighsSolution& solution
|
702
|
+
void undoPrimal(const HighsOptions& options, HighsSolution& solution,
|
703
|
+
const HighsInt report_col = -1) {
|
704
|
+
// Call to reductionValues.resetPosition(); seems unnecessary as
|
705
|
+
// it's the first thing done in undo
|
673
706
|
reductionValues.resetPosition();
|
674
707
|
HighsBasis basis;
|
675
708
|
basis.valid = false;
|
676
709
|
solution.dual_valid = false;
|
677
|
-
undo(options, solution, basis);
|
710
|
+
undo(options, solution, basis, report_col);
|
678
711
|
}
|
679
712
|
|
713
|
+
/*
|
714
|
+
// Not used
|
680
715
|
/// undo presolve steps for primal and dual solution
|
681
716
|
void undoPrimalDual(const HighsOptions& options, HighsSolution& solution) {
|
682
717
|
reductionValues.resetPosition();
|
@@ -686,7 +721,9 @@ class HighsPostsolveStack {
|
|
686
721
|
assert(solution.dual_valid);
|
687
722
|
undo(options, solution, basis);
|
688
723
|
}
|
724
|
+
*/
|
689
725
|
|
726
|
+
// Only used for debugging
|
690
727
|
void undoUntil(const HighsOptions& options,
|
691
728
|
const std::vector<HighsInt>& flagRow,
|
692
729
|
const std::vector<HighsInt>& flagCol, HighsSolution& solution,
|
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
/**@file HighsSymmetry.h
|
14
12
|
* @brief Facilities for symmetry detection
|
@@ -2,7 +2,8 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
@@ -115,6 +116,6 @@ void reportOptions(const ICrashOptions& options);
|
|
115
116
|
|
116
117
|
bool callCrossover(const HighsLp& lp, const HighsOptions& options,
|
117
118
|
const std::vector<double>& x_values, HighsSolution& solution,
|
118
|
-
HighsBasis& basis);
|
119
|
+
HighsBasis& basis, HighsCallback& callback);
|
119
120
|
|
120
|
-
#endif
|
121
|
+
#endif
|
@@ -1,9 +1,9 @@
|
|
1
|
-
|
2
1
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
3
2
|
/* */
|
4
3
|
/* This file is part of the HiGHS linear optimization suite */
|
5
4
|
/* */
|
6
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
7
7
|
/* */
|
8
8
|
/* Available as open-source under the MIT License */
|
9
9
|
/* */
|
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
#ifndef PRESOLVE_ICRASHX_H_
|
14
12
|
#define PRESOLVE_ICRASHX_H_
|
@@ -22,7 +20,7 @@
|
|
22
20
|
HighsStatus callCrossover(const HighsOptions& options, const HighsLp& lp,
|
23
21
|
HighsBasis& highs_basis,
|
24
22
|
HighsSolution& highs_solution,
|
25
|
-
HighsModelStatus& model_status,
|
26
|
-
|
23
|
+
HighsModelStatus& model_status, HighsInfo& highs_info,
|
24
|
+
HighsCallback& highs_callback);
|
27
25
|
|
28
26
|
#endif
|
@@ -2,13 +2,11 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-
|
5
|
+
/* Written and engineered 2008-2023 by Julian Hall, Ivet Galabova, */
|
6
|
+
/* Leona Gottwald and Michael Feldmeier */
|
6
7
|
/* */
|
7
8
|
/* Available as open-source under the MIT License */
|
8
9
|
/* */
|
9
|
-
/* Authors: Julian Hall, Ivet Galabova, Leona Gottwald and Michael */
|
10
|
-
/* Feldmeier */
|
11
|
-
/* */
|
12
10
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
13
11
|
/**@file PresolveComponent.h
|
14
12
|
* @brief The HiGHS class
|
@@ -24,8 +22,8 @@
|
|
24
22
|
#include <string>
|
25
23
|
#include <utility>
|
26
24
|
|
27
|
-
#include "HighsPostsolveStack.h"
|
28
25
|
#include "lp_data/HighsLp.h"
|
26
|
+
#include "presolve/HighsPostsolveStack.h"
|
29
27
|
#include "util/HighsComponent.h"
|
30
28
|
#include "util/HighsTimer.h"
|
31
29
|
|
@@ -35,13 +33,6 @@
|
|
35
33
|
// The structure of component is general, of the presolve component - presolve
|
36
34
|
// specific.
|
37
35
|
|
38
|
-
enum class HighsPostsolveStatus {
|
39
|
-
kNotPresolved = -1,
|
40
|
-
kNoPrimalSolutionError,
|
41
|
-
kSolutionRecovered,
|
42
|
-
kBasisError
|
43
|
-
};
|
44
|
-
|
45
36
|
struct PresolveComponentData : public HighsComponentData {
|
46
37
|
HighsLp reduced_lp_;
|
47
38
|
presolve::HighsPostsolveStack postSolveStack;
|
@@ -70,29 +61,12 @@ struct PresolveComponentInfo : public HighsComponentInfo {
|
|
70
61
|
HighsInt n_cols_removed = 0;
|
71
62
|
HighsInt n_nnz_removed = 0;
|
72
63
|
|
73
|
-
double init_time = 0;
|
74
64
|
double presolve_time = 0;
|
75
|
-
double solve_time = 0;
|
76
65
|
double postsolve_time = 0;
|
77
|
-
double cleanup_time = 0;
|
78
66
|
|
79
67
|
virtual ~PresolveComponentInfo() = default;
|
80
68
|
};
|
81
69
|
|
82
|
-
// HighsComponentOptions is a placeholder for options specific to this component
|
83
|
-
struct PresolveComponentOptions : public HighsComponentOptions {
|
84
|
-
bool is_valid = false;
|
85
|
-
// presolve options later when needed.
|
86
|
-
|
87
|
-
std::string iteration_strategy = "smart";
|
88
|
-
HighsInt max_iterations = 0;
|
89
|
-
|
90
|
-
double time_limit = -1;
|
91
|
-
bool dev = false;
|
92
|
-
|
93
|
-
virtual ~PresolveComponentOptions() = default;
|
94
|
-
};
|
95
|
-
|
96
70
|
class PresolveComponent : public HighsComponent {
|
97
71
|
public:
|
98
72
|
void clear() override;
|
@@ -104,13 +78,7 @@ class PresolveComponent : public HighsComponent {
|
|
104
78
|
HighsLp& getReducedProblem() { return data_.reduced_lp_; }
|
105
79
|
HighsPresolveLog& getPresolveLog() { return data_.presolve_log_; }
|
106
80
|
|
107
|
-
|
108
|
-
std::string presolveStatusToString(const HighsPresolveStatus presolve_status);
|
109
|
-
|
110
|
-
void negateReducedLpColDuals(bool reduced);
|
111
|
-
void negateReducedLpCost();
|
112
|
-
|
113
|
-
// bool has_run_ = false;
|
81
|
+
void negateReducedLpColDuals();
|
114
82
|
|
115
83
|
PresolveComponentInfo info_;
|
116
84
|
PresolveComponentData data_;
|
@@ -122,10 +90,4 @@ class PresolveComponent : public HighsComponent {
|
|
122
90
|
|
123
91
|
virtual ~PresolveComponent() = default;
|
124
92
|
};
|
125
|
-
|
126
|
-
namespace presolve {
|
127
|
-
|
128
|
-
bool checkOptions(const PresolveComponentOptions& options);
|
129
|
-
}
|
130
|
-
|
131
93
|
#endif
|