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
|
/**@file lp_data/HighsOptions.h
|
14
12
|
* @brief
|
@@ -29,6 +27,8 @@ using std::string;
|
|
29
27
|
|
30
28
|
enum class OptionStatus { kOk = 0, kUnknownOption, kIllegalValue };
|
31
29
|
|
30
|
+
const bool kAdvancedInDocumentation = false;
|
31
|
+
|
32
32
|
class OptionRecord {
|
33
33
|
public:
|
34
34
|
HighsOptionType type;
|
@@ -133,7 +133,9 @@ void highsOpenLogFile(HighsLogOptions& log_options,
|
|
133
133
|
const std::string log_file);
|
134
134
|
|
135
135
|
bool commandLineOffChooseOnOk(const HighsLogOptions& report_log_options,
|
136
|
-
const string& value);
|
136
|
+
const string& name, const string& value);
|
137
|
+
bool commandLineOffOnOk(const HighsLogOptions& report_log_options,
|
138
|
+
const string& name, const string& value);
|
137
139
|
bool commandLineSolverOk(const HighsLogOptions& report_log_options,
|
138
140
|
const string& value);
|
139
141
|
|
@@ -207,40 +209,51 @@ OptionStatus passLocalOptions(const HighsLogOptions& report_log_options,
|
|
207
209
|
const HighsOptions& from_options,
|
208
210
|
HighsOptions& to_options);
|
209
211
|
|
210
|
-
OptionStatus
|
212
|
+
OptionStatus getLocalOptionValues(
|
211
213
|
const HighsLogOptions& report_log_options, const std::string& name,
|
212
|
-
const std::vector<OptionRecord*>& option_records, bool
|
213
|
-
|
214
|
+
const std::vector<OptionRecord*>& option_records, bool* current_value,
|
215
|
+
bool* default_value = nullptr);
|
216
|
+
OptionStatus getLocalOptionValues(
|
214
217
|
const HighsLogOptions& report_log_options, const std::string& name,
|
215
|
-
const std::vector<OptionRecord*>& option_records, HighsInt
|
216
|
-
|
218
|
+
const std::vector<OptionRecord*>& option_records, HighsInt* current_value,
|
219
|
+
HighsInt* min_value = nullptr, HighsInt* max_value = nullptr,
|
220
|
+
HighsInt* default_value = nullptr);
|
221
|
+
OptionStatus getLocalOptionValues(
|
217
222
|
const HighsLogOptions& report_log_options, const std::string& name,
|
218
|
-
const std::vector<OptionRecord*>& option_records, double
|
219
|
-
|
223
|
+
const std::vector<OptionRecord*>& option_records, double* current_value,
|
224
|
+
double* min_value = nullptr, double* max_value = nullptr,
|
225
|
+
double* default_value = nullptr);
|
226
|
+
OptionStatus getLocalOptionValues(
|
220
227
|
const HighsLogOptions& report_log_options, const std::string& name,
|
221
|
-
const std::vector<OptionRecord*>& option_records,
|
228
|
+
const std::vector<OptionRecord*>& option_records,
|
229
|
+
std::string* current_value, std::string* default_value = nullptr);
|
222
230
|
|
223
231
|
OptionStatus getLocalOptionType(
|
224
232
|
const HighsLogOptions& report_log_options, const std::string& name,
|
225
|
-
const std::vector<OptionRecord*>& option_records,
|
233
|
+
const std::vector<OptionRecord*>& option_records,
|
234
|
+
HighsOptionType* type = nullptr);
|
226
235
|
|
227
236
|
void resetLocalOptions(std::vector<OptionRecord*>& option_records);
|
228
237
|
|
229
|
-
HighsStatus writeOptionsToFile(
|
230
|
-
|
231
|
-
|
232
|
-
|
238
|
+
HighsStatus writeOptionsToFile(
|
239
|
+
FILE* file, const std::vector<OptionRecord*>& option_records,
|
240
|
+
const bool report_only_deviations = false,
|
241
|
+
const HighsFileType file_type = HighsFileType::kOther);
|
233
242
|
void reportOptions(FILE* file, const std::vector<OptionRecord*>& option_records,
|
234
243
|
const bool report_only_deviations = true,
|
235
|
-
const
|
244
|
+
const HighsFileType file_type = HighsFileType::kOther);
|
236
245
|
void reportOption(FILE* file, const OptionRecordBool& option,
|
237
|
-
const bool report_only_deviations,
|
246
|
+
const bool report_only_deviations,
|
247
|
+
const HighsFileType file_type);
|
238
248
|
void reportOption(FILE* file, const OptionRecordInt& option,
|
239
|
-
const bool report_only_deviations,
|
249
|
+
const bool report_only_deviations,
|
250
|
+
const HighsFileType file_type);
|
240
251
|
void reportOption(FILE* file, const OptionRecordDouble& option,
|
241
|
-
const bool report_only_deviations,
|
252
|
+
const bool report_only_deviations,
|
253
|
+
const HighsFileType file_type);
|
242
254
|
void reportOption(FILE* file, const OptionRecordString& option,
|
243
|
-
const bool report_only_deviations,
|
255
|
+
const bool report_only_deviations,
|
256
|
+
const HighsFileType file_type);
|
244
257
|
|
245
258
|
const string kSimplexString = "simplex";
|
246
259
|
const string kIpmString = "ipm";
|
@@ -260,6 +273,7 @@ const string kOptionsFileString = "options_file";
|
|
260
273
|
const string kRandomSeedString = "random_seed";
|
261
274
|
const string kSolutionFileString = "solution_file";
|
262
275
|
const string kRangingString = "ranging";
|
276
|
+
const string kVersionString = "version";
|
263
277
|
const string kWriteModelFileString = "write_model_file";
|
264
278
|
const string kReadSolutionFileString = "read_solution_file";
|
265
279
|
|
@@ -325,12 +339,14 @@ struct HighsOptionsStruct {
|
|
325
339
|
HighsInt cost_scale_factor;
|
326
340
|
HighsInt allowed_matrix_scale_factor;
|
327
341
|
HighsInt allowed_cost_scale_factor;
|
328
|
-
HighsInt
|
342
|
+
HighsInt ipx_dualize_strategy;
|
343
|
+
HighsInt simplex_dualize_strategy;
|
329
344
|
HighsInt simplex_permute_strategy;
|
330
345
|
HighsInt max_dual_simplex_cleanup_level;
|
331
346
|
HighsInt max_dual_simplex_phase1_cleanup_level;
|
332
347
|
HighsInt simplex_price_strategy;
|
333
348
|
HighsInt simplex_unscaled_solution_strategy;
|
349
|
+
HighsInt presolve_reduction_limit;
|
334
350
|
HighsInt presolve_substitution_maxfillin;
|
335
351
|
HighsInt presolve_rule_off;
|
336
352
|
bool presolve_rule_logging;
|
@@ -377,9 +393,13 @@ struct HighsOptionsStruct {
|
|
377
393
|
double mip_rel_gap;
|
378
394
|
double mip_abs_gap;
|
379
395
|
double mip_heuristic_effort;
|
396
|
+
double mip_min_logging_interval;
|
380
397
|
#ifdef HIGHS_DEBUGSOL
|
381
398
|
std::string mip_debug_solution_file;
|
382
399
|
#endif
|
400
|
+
bool mip_improving_solution_save;
|
401
|
+
bool mip_improving_solution_report_sparse;
|
402
|
+
std::string mip_improving_solution_file;
|
383
403
|
|
384
404
|
// Logging callback identifiers
|
385
405
|
HighsLogOptions log_options;
|
@@ -407,7 +427,7 @@ class HighsOptions : public HighsOptionsStruct {
|
|
407
427
|
HighsOptions(HighsOptions&& options) {
|
408
428
|
records = std::move(options.records);
|
409
429
|
HighsOptionsStruct::operator=(std::move(options));
|
410
|
-
this->log_options.
|
430
|
+
this->log_options.log_stream = options.log_options.log_stream;
|
411
431
|
setLogOptions();
|
412
432
|
}
|
413
433
|
|
@@ -415,7 +435,7 @@ class HighsOptions : public HighsOptionsStruct {
|
|
415
435
|
if (&other != this) {
|
416
436
|
if ((HighsInt)records.size() == 0) initRecords();
|
417
437
|
HighsOptionsStruct::operator=(other);
|
418
|
-
this->log_options.
|
438
|
+
this->log_options.log_stream = other.log_options.log_stream;
|
419
439
|
setLogOptions();
|
420
440
|
}
|
421
441
|
return *this;
|
@@ -425,7 +445,7 @@ class HighsOptions : public HighsOptionsStruct {
|
|
425
445
|
if (&other != this) {
|
426
446
|
if ((HighsInt)records.size() == 0) initRecords();
|
427
447
|
HighsOptionsStruct::operator=(other);
|
428
|
-
this->log_options.
|
448
|
+
this->log_options.log_stream = other.log_options.log_stream;
|
429
449
|
setLogOptions();
|
430
450
|
}
|
431
451
|
return *this;
|
@@ -441,8 +461,8 @@ class HighsOptions : public HighsOptionsStruct {
|
|
441
461
|
OptionRecordInt* record_int;
|
442
462
|
OptionRecordDouble* record_double;
|
443
463
|
OptionRecordString* record_string;
|
444
|
-
bool advanced;
|
445
|
-
|
464
|
+
bool advanced = false;
|
465
|
+
const bool now_advanced = true;
|
446
466
|
// Options read from the command line
|
447
467
|
record_string = new OptionRecordString(
|
448
468
|
kPresolveString, "Presolve option: \"off\", \"choose\" or \"on\"",
|
@@ -480,31 +500,32 @@ class HighsOptions : public HighsOptionsStruct {
|
|
480
500
|
records.push_back(record_string);
|
481
501
|
//
|
482
502
|
// Options read from the file
|
483
|
-
record_double =
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
503
|
+
record_double = new OptionRecordDouble(
|
504
|
+
"infinite_cost",
|
505
|
+
"Limit on |cost coefficient|: values greater than or equal to "
|
506
|
+
"this will be treated as infinite",
|
507
|
+
advanced, &infinite_cost, 1e15, 1e20, kHighsInf);
|
488
508
|
records.push_back(record_double);
|
489
509
|
|
490
510
|
record_double = new OptionRecordDouble(
|
491
511
|
"infinite_bound",
|
492
|
-
"Limit on |constraint bound|: values
|
493
|
-
"
|
512
|
+
"Limit on |constraint bound|: values greater than or equal to "
|
513
|
+
"this will be treated as infinite",
|
494
514
|
advanced, &infinite_bound, 1e15, 1e20, kHighsInf);
|
495
515
|
records.push_back(record_double);
|
496
516
|
|
497
517
|
record_double = new OptionRecordDouble(
|
498
518
|
"small_matrix_value",
|
499
|
-
"Lower limit on |matrix entries|: values
|
519
|
+
"Lower limit on |matrix entries|: values less than or equal to this "
|
520
|
+
"will be "
|
500
521
|
"treated as zero",
|
501
522
|
advanced, &small_matrix_value, 1e-12, 1e-9, kHighsInf);
|
502
523
|
records.push_back(record_double);
|
503
524
|
|
504
525
|
record_double = new OptionRecordDouble(
|
505
526
|
"large_matrix_value",
|
506
|
-
"Upper limit on |matrix entries|: values
|
507
|
-
"
|
527
|
+
"Upper limit on |matrix entries|: values greater than or equal to "
|
528
|
+
"this will be treated as infinite",
|
508
529
|
advanced, &large_matrix_value, 1e0, 1e15, kHighsInf);
|
509
530
|
records.push_back(record_double);
|
510
531
|
|
@@ -524,33 +545,35 @@ class HighsOptions : public HighsOptionsStruct {
|
|
524
545
|
records.push_back(record_double);
|
525
546
|
|
526
547
|
record_double = new OptionRecordDouble(
|
527
|
-
"objective_bound", "Objective bound for termination",
|
528
|
-
&objective_bound, -kHighsInf, kHighsInf, kHighsInf);
|
548
|
+
"objective_bound", "Objective bound for termination of dual simplex",
|
549
|
+
advanced, &objective_bound, -kHighsInf, kHighsInf, kHighsInf);
|
529
550
|
records.push_back(record_double);
|
530
551
|
|
531
552
|
record_double = new OptionRecordDouble(
|
532
|
-
"objective_target", "Objective target for termination",
|
553
|
+
"objective_target", "Objective target for termination of MIP solver",
|
554
|
+
advanced,
|
555
|
+
//"primal simplex and "
|
533
556
|
&objective_target, -kHighsInf, -kHighsInf, kHighsInf);
|
534
557
|
records.push_back(record_double);
|
535
558
|
|
536
559
|
record_int =
|
537
|
-
new OptionRecordInt(kRandomSeedString, "
|
560
|
+
new OptionRecordInt(kRandomSeedString, "Random seed used in HiGHS",
|
538
561
|
advanced, &random_seed, 0, 0, kHighsIInf);
|
539
562
|
records.push_back(record_int);
|
540
563
|
|
541
564
|
record_int = new OptionRecordInt(
|
542
|
-
"threads", "
|
565
|
+
"threads", "Number of threads used by HiGHS (0: automatic)", advanced,
|
543
566
|
&threads, 0, 0, kHighsIInf);
|
544
567
|
records.push_back(record_int);
|
545
568
|
|
546
|
-
record_int =
|
547
|
-
|
548
|
-
|
549
|
-
|
569
|
+
record_int = new OptionRecordInt("highs_debug_level",
|
570
|
+
"Debugging level in HiGHS", now_advanced,
|
571
|
+
&highs_debug_level, kHighsDebugLevelMin,
|
572
|
+
kHighsDebugLevelMin, kHighsDebugLevelMax);
|
550
573
|
records.push_back(record_int);
|
551
574
|
|
552
575
|
record_int = new OptionRecordInt(
|
553
|
-
"highs_analysis_level", "Analysis level in HiGHS",
|
576
|
+
"highs_analysis_level", "Analysis level in HiGHS", now_advanced,
|
554
577
|
&highs_analysis_level, kHighsAnalysisLevelMin, kHighsAnalysisLevelMin,
|
555
578
|
kHighsAnalysisLevelMax);
|
556
579
|
records.push_back(record_int);
|
@@ -573,7 +596,7 @@ class HighsOptions : public HighsOptionsStruct {
|
|
573
596
|
|
574
597
|
record_int = new OptionRecordInt(
|
575
598
|
"simplex_crash_strategy",
|
576
|
-
"Strategy for simplex crash: off / LTSSF / Bixby (0/1/2)",
|
599
|
+
"Strategy for simplex crash: off / LTSSF / Bixby (0/1/2)", now_advanced,
|
577
600
|
&simplex_crash_strategy, kSimplexCrashStrategyMin,
|
578
601
|
kSimplexCrashStrategyOff, kSimplexCrashStrategyMax);
|
579
602
|
records.push_back(record_int);
|
@@ -599,7 +622,9 @@ class HighsOptions : public HighsOptionsStruct {
|
|
599
622
|
records.push_back(record_int);
|
600
623
|
|
601
624
|
record_int = new OptionRecordInt(
|
602
|
-
"simplex_iteration_limit",
|
625
|
+
"simplex_iteration_limit",
|
626
|
+
"Iteration limit for simplex solver when solving LPs, but not "
|
627
|
+
"subproblems in the MIP solver",
|
603
628
|
advanced, &simplex_iteration_limit, 0, kHighsIInf, kHighsIInf);
|
604
629
|
records.push_back(record_int);
|
605
630
|
|
@@ -611,7 +636,7 @@ class HighsOptions : public HighsOptionsStruct {
|
|
611
636
|
|
612
637
|
record_int = new OptionRecordInt(
|
613
638
|
"simplex_min_concurrency",
|
614
|
-
"Minimum level of concurrency in parallel simplex",
|
639
|
+
"Minimum level of concurrency in parallel simplex", now_advanced,
|
615
640
|
&simplex_min_concurrency, 1, 1, kSimplexConcurrencyLimit);
|
616
641
|
records.push_back(record_int);
|
617
642
|
|
@@ -647,14 +672,15 @@ class HighsOptions : public HighsOptionsStruct {
|
|
647
672
|
advanced, &write_solution_to_file, false);
|
648
673
|
records.push_back(record_bool);
|
649
674
|
|
650
|
-
record_int =
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
675
|
+
record_int = new OptionRecordInt(
|
676
|
+
"write_solution_style",
|
677
|
+
"Style of solution file (raw = computer-readable, "
|
678
|
+
"pretty = human-readable): "
|
679
|
+
"-1 => HiGHS old raw (deprecated); 0 => HiGHS raw; "
|
680
|
+
"1 => HiGHS pretty; 2 => Glpsol raw; 3 => Glpsol pretty; "
|
681
|
+
"4 => HiGHS sparse raw",
|
682
|
+
advanced, &write_solution_style, kSolutionStyleMin, kSolutionStyleRaw,
|
683
|
+
kSolutionStyleMax);
|
658
684
|
records.push_back(record_int);
|
659
685
|
|
660
686
|
record_int = new OptionRecordInt(
|
@@ -667,42 +693,43 @@ class HighsOptions : public HighsOptionsStruct {
|
|
667
693
|
kHighsIInf);
|
668
694
|
records.push_back(record_int);
|
669
695
|
|
670
|
-
record_bool =
|
671
|
-
|
696
|
+
record_bool = new OptionRecordBool("icrash", "Run iCrash", now_advanced,
|
697
|
+
&icrash, false);
|
672
698
|
records.push_back(record_bool);
|
673
699
|
|
674
700
|
record_bool =
|
675
|
-
new OptionRecordBool("icrash_dualize", "
|
676
|
-
|
701
|
+
new OptionRecordBool("icrash_dualize", "Dualize strategy for iCrash",
|
702
|
+
now_advanced, &icrash_dualize, false);
|
677
703
|
records.push_back(record_bool);
|
678
704
|
|
679
705
|
record_string =
|
680
706
|
new OptionRecordString("icrash_strategy", "Strategy for iCrash",
|
681
|
-
|
707
|
+
now_advanced, &icrash_strategy, "ICA");
|
682
708
|
records.push_back(record_string);
|
683
709
|
|
684
710
|
record_double = new OptionRecordDouble(
|
685
|
-
"icrash_starting_weight", "iCrash starting weight",
|
711
|
+
"icrash_starting_weight", "iCrash starting weight", now_advanced,
|
686
712
|
&icrash_starting_weight, 1e-10, 1e-3, 1e50);
|
687
713
|
records.push_back(record_double);
|
688
714
|
|
689
|
-
record_int =
|
690
|
-
|
715
|
+
record_int =
|
716
|
+
new OptionRecordInt("icrash_iterations", "iCrash iterations",
|
717
|
+
now_advanced, &icrash_iterations, 0, 30, 200);
|
691
718
|
records.push_back(record_int);
|
692
719
|
|
693
720
|
record_int = new OptionRecordInt(
|
694
721
|
"icrash_approx_iter", "iCrash approximate minimization iterations",
|
695
|
-
|
722
|
+
now_advanced, &icrash_approx_iter, 0, 50, 100);
|
696
723
|
records.push_back(record_int);
|
697
724
|
|
698
725
|
record_bool = new OptionRecordBool("icrash_exact",
|
699
726
|
"Exact subproblem solution for iCrash",
|
700
|
-
|
727
|
+
now_advanced, &icrash_exact, false);
|
701
728
|
records.push_back(record_bool);
|
702
729
|
|
703
|
-
record_bool = new OptionRecordBool(
|
704
|
-
|
705
|
-
|
730
|
+
record_bool = new OptionRecordBool(
|
731
|
+
"icrash_breakpoints", "Exact subproblem solution for iCrash",
|
732
|
+
now_advanced, &icrash_breakpoints, false);
|
706
733
|
records.push_back(record_bool);
|
707
734
|
|
708
735
|
record_string = new OptionRecordString(
|
@@ -715,9 +742,9 @@ class HighsOptions : public HighsOptionsStruct {
|
|
715
742
|
advanced, &write_model_to_file, false);
|
716
743
|
records.push_back(record_bool);
|
717
744
|
|
718
|
-
record_bool = new OptionRecordBool(
|
719
|
-
|
720
|
-
|
745
|
+
record_bool = new OptionRecordBool(
|
746
|
+
"mip_detect_symmetry", "Whether MIP symmetry should be detected",
|
747
|
+
advanced, &mip_detect_symmetry, true);
|
721
748
|
records.push_back(record_bool);
|
722
749
|
|
723
750
|
record_int = new OptionRecordInt("mip_max_nodes",
|
@@ -738,6 +765,25 @@ class HighsOptions : public HighsOptionsStruct {
|
|
738
765
|
records.push_back(record_string);
|
739
766
|
#endif
|
740
767
|
|
768
|
+
record_bool =
|
769
|
+
new OptionRecordBool("mip_improving_solution_save",
|
770
|
+
"Whether improving MIP solutions should be saved",
|
771
|
+
advanced, &mip_improving_solution_save, false);
|
772
|
+
records.push_back(record_bool);
|
773
|
+
|
774
|
+
record_bool = new OptionRecordBool(
|
775
|
+
"mip_improving_solution_report_sparse",
|
776
|
+
"Whether improving MIP solutions should be reported in sparse format",
|
777
|
+
advanced, &mip_improving_solution_report_sparse, false);
|
778
|
+
records.push_back(record_bool);
|
779
|
+
|
780
|
+
record_string = new OptionRecordString(
|
781
|
+
"mip_improving_solution_file",
|
782
|
+
"File for reporting improving MIP solutions: not reported for an empty "
|
783
|
+
"string \"\"",
|
784
|
+
advanced, &mip_improving_solution_file, kHighsFilenameDefault);
|
785
|
+
records.push_back(record_string);
|
786
|
+
|
741
787
|
record_int = new OptionRecordInt(
|
742
788
|
"mip_max_leaves", "MIP solver max number of leave nodes", advanced,
|
743
789
|
&mip_max_leaves, 0, kHighsIInf, kHighsIInf);
|
@@ -745,41 +791,43 @@ class HighsOptions : public HighsOptionsStruct {
|
|
745
791
|
|
746
792
|
record_int = new OptionRecordInt(
|
747
793
|
"mip_max_improving_sols",
|
748
|
-
"
|
794
|
+
"Limit on the number of improving solutions found to stop the MIP "
|
749
795
|
"solver prematurely",
|
750
796
|
advanced, &mip_max_improving_sols, 1, kHighsIInf, kHighsIInf);
|
751
797
|
records.push_back(record_int);
|
752
798
|
|
753
|
-
record_int = new OptionRecordInt(
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
799
|
+
record_int = new OptionRecordInt(
|
800
|
+
"mip_lp_age_limit",
|
801
|
+
"Maximal age of dynamic LP rows before "
|
802
|
+
"they are removed from the LP relaxation in the MIP solver",
|
803
|
+
advanced, &mip_lp_age_limit, 0, 10,
|
804
|
+
std::numeric_limits<int16_t>::max());
|
758
805
|
records.push_back(record_int);
|
759
806
|
|
760
807
|
record_int = new OptionRecordInt(
|
761
808
|
"mip_pool_age_limit",
|
762
|
-
"
|
763
|
-
&mip_pool_age_limit, 0, 30, 1000);
|
809
|
+
"Maximal age of rows in the MIP solver cutpool before they are deleted",
|
810
|
+
advanced, &mip_pool_age_limit, 0, 30, 1000);
|
764
811
|
records.push_back(record_int);
|
765
812
|
|
766
|
-
record_int = new OptionRecordInt(
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
813
|
+
record_int = new OptionRecordInt(
|
814
|
+
"mip_pool_soft_limit",
|
815
|
+
"Soft limit on the number of rows in the "
|
816
|
+
"MIP solver cutpool for dynamic age adjustment",
|
817
|
+
advanced, &mip_pool_soft_limit, 1, 10000, kHighsIInf);
|
771
818
|
records.push_back(record_int);
|
772
819
|
|
773
|
-
record_int = new OptionRecordInt(
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
820
|
+
record_int = new OptionRecordInt(
|
821
|
+
"mip_pscost_minreliable",
|
822
|
+
"Minimal number of observations before "
|
823
|
+
"MIP solver pseudo costs are considered reliable",
|
824
|
+
advanced, &mip_pscost_minreliable, 0, 8, kHighsIInf);
|
778
825
|
records.push_back(record_int);
|
779
826
|
|
780
827
|
record_int = new OptionRecordInt(
|
781
828
|
"mip_min_cliquetable_entries_for_parallelism",
|
782
|
-
"
|
829
|
+
"Minimal number of entries in the MIP solver cliquetable before "
|
830
|
+
"neighbourhood "
|
783
831
|
"queries of the conflict graph use parallel processing",
|
784
832
|
advanced, &mip_min_cliquetable_entries_for_parallelism, 0, 100000,
|
785
833
|
kHighsIInf);
|
@@ -787,7 +835,7 @@ class HighsOptions : public HighsOptionsStruct {
|
|
787
835
|
|
788
836
|
record_int =
|
789
837
|
new OptionRecordInt("mip_report_level", "MIP solver reporting level",
|
790
|
-
|
838
|
+
now_advanced, &mip_report_level, 0, 1, 2);
|
791
839
|
records.push_back(record_int);
|
792
840
|
|
793
841
|
record_double = new OptionRecordDouble(
|
@@ -796,29 +844,37 @@ class HighsOptions : public HighsOptionsStruct {
|
|
796
844
|
records.push_back(record_double);
|
797
845
|
|
798
846
|
record_double = new OptionRecordDouble(
|
799
|
-
"mip_heuristic_effort", "
|
847
|
+
"mip_heuristic_effort", "Effort spent for MIP heuristics", advanced,
|
800
848
|
&mip_heuristic_effort, 0.0, 0.05, 1.0);
|
801
849
|
records.push_back(record_double);
|
802
850
|
|
803
851
|
record_double = new OptionRecordDouble(
|
804
852
|
"mip_rel_gap",
|
805
|
-
"
|
853
|
+
"Tolerance on relative gap, |ub-lb|/|ub|, to determine whether "
|
806
854
|
"optimality has been reached for a MIP instance",
|
807
855
|
advanced, &mip_rel_gap, 0.0, 1e-4, kHighsInf);
|
808
856
|
records.push_back(record_double);
|
809
857
|
|
810
858
|
record_double = new OptionRecordDouble(
|
811
859
|
"mip_abs_gap",
|
812
|
-
"
|
860
|
+
"Tolerance on absolute gap of MIP, |ub-lb|, to determine whether "
|
813
861
|
"optimality has been reached for a MIP instance",
|
814
862
|
advanced, &mip_abs_gap, 0.0, 1e-6, kHighsInf);
|
815
863
|
records.push_back(record_double);
|
816
864
|
|
865
|
+
record_double = new OptionRecordDouble(
|
866
|
+
"mip_min_logging_interval", "MIP minimum logging interval", advanced,
|
867
|
+
&mip_min_logging_interval, 0, 5, kHighsInf);
|
868
|
+
records.push_back(record_double);
|
869
|
+
|
817
870
|
record_int = new OptionRecordInt(
|
818
871
|
"ipm_iteration_limit", "Iteration limit for IPM solver", advanced,
|
819
872
|
&ipm_iteration_limit, 0, kHighsIInf, kHighsIInf);
|
820
873
|
records.push_back(record_int);
|
821
874
|
|
875
|
+
// Fix the number of user settable options
|
876
|
+
num_user_settable_options_ = records.size();
|
877
|
+
|
822
878
|
// Advanced options
|
823
879
|
advanced = true;
|
824
880
|
|
@@ -886,8 +942,14 @@ class HighsOptions : public HighsOptionsStruct {
|
|
886
942
|
records.push_back(record_int);
|
887
943
|
|
888
944
|
record_int = new OptionRecordInt(
|
889
|
-
"
|
890
|
-
|
945
|
+
"ipx_dualize_strategy", "Strategy for dualizing before IPX", advanced,
|
946
|
+
&ipx_dualize_strategy, kIpxDualizeStrategyMin, kIpxDualizeStrategyLukas,
|
947
|
+
kIpxDualizeStrategyMax);
|
948
|
+
records.push_back(record_int);
|
949
|
+
|
950
|
+
record_int = new OptionRecordInt(
|
951
|
+
"simplex_dualize_strategy", "Strategy for dualizing before simplex",
|
952
|
+
advanced, &simplex_dualize_strategy, kHighsOptionOff, kHighsOptionOff,
|
891
953
|
kHighsOptionOn);
|
892
954
|
records.push_back(record_int);
|
893
955
|
|
@@ -989,6 +1051,12 @@ class HighsOptions : public HighsOptionsStruct {
|
|
989
1051
|
kMaxPivotThreshold);
|
990
1052
|
records.push_back(record_double);
|
991
1053
|
|
1054
|
+
record_int = new OptionRecordInt(
|
1055
|
+
"presolve_reduction_limit",
|
1056
|
+
"Limit on number of presolve reductions -1 => no limit", advanced,
|
1057
|
+
&presolve_reduction_limit, -1, -1, kHighsIInf);
|
1058
|
+
records.push_back(record_int);
|
1059
|
+
|
992
1060
|
record_int = new OptionRecordInt(
|
993
1061
|
"presolve_rule_off", "Bit mask of presolve rules that are not allowed",
|
994
1062
|
advanced, &presolve_rule_off, 0, 0, kHighsIInf);
|
@@ -996,7 +1064,7 @@ class HighsOptions : public HighsOptionsStruct {
|
|
996
1064
|
|
997
1065
|
record_bool = new OptionRecordBool(
|
998
1066
|
"presolve_rule_logging", "Log effectiveness of presolve rules for LP",
|
999
|
-
advanced, &presolve_rule_logging,
|
1067
|
+
advanced, &presolve_rule_logging, false);
|
1000
1068
|
records.push_back(record_bool);
|
1001
1069
|
|
1002
1070
|
record_int = new OptionRecordInt(
|
@@ -1040,13 +1108,13 @@ class HighsOptions : public HighsOptionsStruct {
|
|
1040
1108
|
&less_infeasible_DSE_choose_row, true);
|
1041
1109
|
records.push_back(record_bool);
|
1042
1110
|
|
1043
|
-
log_options
|
1044
|
-
|
1111
|
+
// Set up the log_options aliases
|
1112
|
+
log_options.clear();
|
1113
|
+
log_options.log_stream =
|
1114
|
+
log_file.empty() ? nullptr : fopen(log_file.c_str(), "w");
|
1045
1115
|
log_options.output_flag = &output_flag;
|
1046
1116
|
log_options.log_to_console = &log_to_console;
|
1047
1117
|
log_options.log_dev_level = &log_dev_level;
|
1048
|
-
log_options.log_callback = nullptr;
|
1049
|
-
log_options.log_callback_data = nullptr;
|
1050
1118
|
}
|
1051
1119
|
|
1052
1120
|
void deleteRecords() {
|
@@ -1055,6 +1123,7 @@ class HighsOptions : public HighsOptionsStruct {
|
|
1055
1123
|
|
1056
1124
|
public:
|
1057
1125
|
std::vector<OptionRecord*> records;
|
1126
|
+
HighsInt num_user_settable_options_;
|
1058
1127
|
void setLogOptions();
|
1059
1128
|
};
|
1060
1129
|
|
@@ -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 lp_data/HighsRanging.h
|
14
12
|
* @brief
|