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.
Files changed (332) hide show
  1. casadi/_casadi.so +0 -0
  2. casadi/casadi.py +217 -60
  3. casadi/cbc +0 -0
  4. casadi/clp +0 -0
  5. casadi/cmake/alpaqa/alpaqaConfig.cmake +24 -0
  6. casadi/cmake/alpaqa/alpaqaConfigVersion.cmake +70 -0
  7. casadi/cmake/alpaqa/alpaqaTargets-release.cmake +29 -0
  8. casadi/cmake/alpaqa/alpaqaTargets.cmake +131 -0
  9. casadi/cmake/casadi-config-version.cmake +1 -1
  10. casadi/cmake/casadi-config.cmake +4 -0
  11. casadi/cmake/highs/highs-config.cmake +18 -4
  12. casadi/cmake/highs/highs-targets-release.cmake +3 -3
  13. casadi/cmake/highs/highs-targets.cmake +1 -1
  14. casadi/cmake/sleqp/sleqp-config-version.cmake +70 -0
  15. casadi/cmake/sleqp/sleqp-config.cmake +1 -0
  16. casadi/cmake/sleqp/sleqp-targets-release.cmake +20 -0
  17. casadi/cmake/sleqp/sleqp-targets.cmake +102 -0
  18. casadi/cmake/trlib/trlib-config-release.cmake +19 -0
  19. casadi/cmake/trlib/trlib-config-version.cmake +88 -0
  20. casadi/cmake/trlib/trlib-config.cmake +107 -0
  21. casadi/highs +0 -0
  22. casadi/include/casadi/casadi.i +20 -3
  23. casadi/include/casadi/config.h +8 -8
  24. casadi/include/casadi/core/calculus.hpp +1 -1
  25. casadi/include/casadi/core/code_generator.hpp +10 -0
  26. casadi/include/casadi/core/fmu.hpp +224 -0
  27. casadi/include/casadi/core/generic_matrix.hpp +4 -2
  28. casadi/include/casadi/core/nlpsol.hpp +0 -2
  29. casadi/include/casadi/core/runtime/casadi_finite_diff.hpp +204 -11
  30. casadi/include/casadi/core/serializing_stream.hpp +12 -0
  31. casadi/include/casadi/core/sparsity_interface.hpp +55 -1
  32. casadi/include/casadi/doc.i +916 -462
  33. casadi/include/casadi/doc_merged.i +492 -176
  34. casadi/include/casadi/mem.h +13 -2
  35. casadi/include/casadi/valgrind-casadi.supp +82 -0
  36. casadi/include/casadi/valgrind-python.supp +39 -0
  37. casadi/include/highs/HConfig.h +4 -7
  38. casadi/include/highs/Highs.h +240 -51
  39. casadi/include/highs/filereaderlp/builder.hpp +12 -13
  40. casadi/include/highs/filereaderlp/model.hpp +32 -35
  41. casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
  42. casadi/include/highs/interfaces/highs_c_api.h +964 -577
  43. casadi/include/highs/io/Filereader.h +2 -4
  44. casadi/include/highs/io/FilereaderEms.h +2 -4
  45. casadi/include/highs/io/FilereaderLp.h +2 -4
  46. casadi/include/highs/io/FilereaderMps.h +2 -4
  47. casadi/include/highs/io/HMPSIO.h +2 -4
  48. casadi/include/highs/io/HMpsFF.h +2 -4
  49. casadi/include/highs/io/HighsIO.h +19 -13
  50. casadi/include/highs/io/LoadOptions.h +7 -6
  51. casadi/include/highs/ipm/IpxWrapper.h +4 -5
  52. casadi/include/highs/lp_data/HConst.h +60 -15
  53. casadi/include/highs/lp_data/HStruct.h +32 -8
  54. casadi/include/highs/lp_data/HighsAnalysis.h +2 -4
  55. casadi/include/highs/lp_data/HighsCallback.h +33 -0
  56. casadi/include/highs/lp_data/HighsCallbackStruct.h +36 -0
  57. casadi/include/highs/lp_data/HighsDebug.h +2 -4
  58. casadi/include/highs/lp_data/HighsInfo.h +22 -23
  59. casadi/include/highs/lp_data/HighsInfoDebug.h +2 -4
  60. casadi/include/highs/lp_data/HighsLp.h +14 -6
  61. casadi/include/highs/lp_data/HighsLpSolverObject.h +6 -5
  62. casadi/include/highs/lp_data/HighsLpUtils.h +23 -12
  63. casadi/include/highs/lp_data/HighsModelUtils.h +22 -8
  64. casadi/include/highs/lp_data/HighsOptions.h +175 -106
  65. casadi/include/highs/lp_data/HighsRanging.h +2 -4
  66. casadi/include/highs/lp_data/HighsRuntimeOptions.h +21 -6
  67. casadi/include/highs/lp_data/HighsSolution.h +4 -4
  68. casadi/include/highs/lp_data/HighsSolutionDebug.h +2 -4
  69. casadi/include/highs/lp_data/HighsSolve.h +2 -4
  70. casadi/include/highs/lp_data/HighsStatus.h +2 -4
  71. casadi/include/highs/mip/HighsCliqueTable.h +18 -20
  72. casadi/include/highs/mip/HighsConflictPool.h +2 -4
  73. casadi/include/highs/mip/HighsCutGeneration.h +2 -4
  74. casadi/include/highs/mip/HighsCutPool.h +2 -4
  75. casadi/include/highs/mip/HighsDebugSol.h +2 -4
  76. casadi/include/highs/mip/HighsDomain.h +5 -5
  77. casadi/include/highs/mip/HighsDomainChange.h +2 -4
  78. casadi/include/highs/mip/HighsDynamicRowMatrix.h +2 -4
  79. casadi/include/highs/mip/HighsGFkSolve.h +2 -4
  80. casadi/include/highs/mip/HighsImplications.h +2 -4
  81. casadi/include/highs/mip/HighsLpAggregator.h +2 -4
  82. casadi/include/highs/mip/HighsLpRelaxation.h +2 -4
  83. casadi/include/highs/mip/HighsMipSolver.h +18 -6
  84. casadi/include/highs/mip/HighsMipSolverData.h +8 -4
  85. casadi/include/highs/mip/HighsModkSeparator.h +2 -4
  86. casadi/include/highs/mip/HighsNodeQueue.h +3 -9
  87. casadi/include/highs/mip/HighsObjectiveFunction.h +2 -4
  88. casadi/include/highs/mip/HighsPathSeparator.h +2 -4
  89. casadi/include/highs/mip/HighsPrimalHeuristics.h +2 -4
  90. casadi/include/highs/mip/HighsPseudocost.h +2 -4
  91. casadi/include/highs/mip/HighsRedcostFixing.h +2 -4
  92. casadi/include/highs/mip/HighsSearch.h +2 -4
  93. casadi/include/highs/mip/HighsSeparation.h +2 -4
  94. casadi/include/highs/mip/HighsSeparator.h +2 -4
  95. casadi/include/highs/mip/HighsTableauSeparator.h +2 -4
  96. casadi/include/highs/mip/HighsTransformedLp.h +2 -4
  97. casadi/include/highs/model/HighsHessian.h +3 -1
  98. casadi/include/highs/model/HighsModel.h +2 -0
  99. casadi/include/highs/parallel/HighsSpinMutex.h +2 -1
  100. casadi/include/highs/parallel/HighsSplitDeque.h +1 -1
  101. casadi/include/highs/parallel/HighsTaskExecutor.h +10 -2
  102. casadi/include/highs/presolve/HPresolve.h +9 -6
  103. casadi/include/highs/presolve/HPresolveAnalysis.h +5 -4
  104. casadi/include/highs/presolve/HighsPostsolveStack.h +50 -13
  105. casadi/include/highs/presolve/HighsSymmetry.h +2 -4
  106. casadi/include/highs/presolve/ICrash.h +4 -3
  107. casadi/include/highs/presolve/ICrashUtil.h +2 -2
  108. casadi/include/highs/presolve/ICrashX.h +4 -6
  109. casadi/include/highs/presolve/PresolveComponent.h +4 -42
  110. casadi/include/highs/qpsolver/a_asm.hpp +56 -0
  111. casadi/include/highs/qpsolver/a_quass.hpp +12 -0
  112. casadi/include/highs/qpsolver/quass.hpp +1 -4
  113. casadi/include/highs/simplex/HApp.h +14 -16
  114. casadi/include/highs/simplex/HEkk.h +12 -11
  115. casadi/include/highs/simplex/HEkkDual.h +2 -4
  116. casadi/include/highs/simplex/HEkkDualRHS.h +5 -6
  117. casadi/include/highs/simplex/HEkkDualRow.h +2 -4
  118. casadi/include/highs/simplex/HEkkPrimal.h +2 -4
  119. casadi/include/highs/simplex/HSimplex.h +2 -4
  120. casadi/include/highs/simplex/HSimplexDebug.h +2 -4
  121. casadi/include/highs/simplex/HSimplexNla.h +2 -4
  122. casadi/include/highs/simplex/HSimplexReport.h +3 -5
  123. casadi/include/highs/simplex/HighsSimplexAnalysis.h +2 -4
  124. casadi/include/highs/simplex/SimplexConst.h +7 -5
  125. casadi/include/highs/simplex/SimplexStruct.h +11 -5
  126. casadi/include/highs/simplex/SimplexTimer.h +2 -4
  127. casadi/include/highs/test/DevKkt.h +2 -4
  128. casadi/include/highs/test/KktCh2.h +2 -4
  129. casadi/include/highs/util/FactorTimer.h +2 -4
  130. casadi/include/highs/util/HFactor.h +2 -4
  131. casadi/include/highs/util/HFactorConst.h +2 -4
  132. casadi/include/highs/util/HFactorDebug.h +2 -4
  133. casadi/include/highs/util/HSet.h +3 -5
  134. casadi/include/highs/util/HVector.h +2 -4
  135. casadi/include/highs/util/HVectorBase.h +2 -4
  136. casadi/include/highs/util/HighsCDouble.h +2 -4
  137. casadi/include/highs/util/HighsComponent.h +2 -4
  138. casadi/include/highs/util/HighsDataStack.h +3 -5
  139. casadi/include/highs/util/HighsDisjointSets.h +8 -10
  140. casadi/include/highs/util/HighsHash.h +22 -7
  141. casadi/include/highs/util/HighsHashTree.h +25 -7
  142. casadi/include/highs/util/HighsInt.h +2 -4
  143. casadi/include/highs/util/HighsIntegers.h +2 -4
  144. casadi/include/highs/util/HighsLinearSumBounds.h +2 -4
  145. casadi/include/highs/util/HighsMatrixPic.h +2 -4
  146. casadi/include/highs/util/HighsMatrixSlice.h +2 -4
  147. casadi/include/highs/util/HighsMatrixUtils.h +2 -4
  148. casadi/include/highs/util/HighsRandom.h +2 -4
  149. casadi/include/highs/util/HighsRbTree.h +2 -4
  150. casadi/include/highs/util/HighsSort.h +2 -4
  151. casadi/include/highs/util/HighsSparseMatrix.h +11 -7
  152. casadi/include/highs/util/HighsSparseVectorSum.h +2 -4
  153. casadi/include/highs/util/HighsSplay.h +2 -4
  154. casadi/include/highs/util/HighsTimer.h +3 -4
  155. casadi/include/highs/util/HighsUtils.h +14 -4
  156. casadi/include/highs/util/stringutil.h +2 -4
  157. casadi/include/licenses/alpaqa-external/LICENSE +165 -0
  158. casadi/include/licenses/highs-external/LICENSE +1 -1
  159. casadi/include/licenses/sleqp-external/LICENSE +165 -0
  160. casadi/include/licenses/trlib-external/LICENSE +21 -0
  161. casadi/include/trlib/trlib_eigen_inverse.h +118 -0
  162. casadi/include/trlib/trlib_krylov.h +493 -0
  163. casadi/include/trlib/trlib_leftmost.h +181 -0
  164. casadi/include/trlib/trlib_private.h +109 -0
  165. casadi/include/trlib/trlib_quadratic_zero.h +57 -0
  166. casadi/include/trlib/trlib_tri_factor.h +409 -0
  167. casadi/include/trlib/trlib_types.h +36 -0
  168. casadi/lib/libtinyxml2.a +0 -0
  169. casadi/libCbc.la +3 -3
  170. casadi/libCbc.so +0 -0
  171. casadi/libCbc.so.3 +0 -0
  172. casadi/libCbc.so.3.10.11 +0 -0
  173. casadi/libCbcSolver.la +3 -3
  174. casadi/libCbcSolver.so +0 -0
  175. casadi/libCbcSolver.so.3 +0 -0
  176. casadi/libCbcSolver.so.3.10.11 +0 -0
  177. casadi/libCgl.la +2 -2
  178. casadi/libCgl.so +0 -0
  179. casadi/libCgl.so.1 +0 -0
  180. casadi/libCgl.so.1.10.8 +0 -0
  181. casadi/libClp.la +2 -2
  182. casadi/libClp.so +0 -0
  183. casadi/libClp.so.1 +0 -0
  184. casadi/{libClp.so.1.14.7 → libClp.so.1.14.9} +0 -0
  185. casadi/libClpSolver.la +2 -2
  186. casadi/libClpSolver.so +0 -0
  187. casadi/libClpSolver.so.1 +0 -0
  188. casadi/{libClpSolver.so.1.14.7 → libClpSolver.so.1.14.9} +0 -0
  189. casadi/libCoinUtils.la +2 -2
  190. casadi/libCoinUtils.so +0 -0
  191. casadi/libCoinUtils.so.3 +0 -0
  192. casadi/libCoinUtils.so.3.11.10 +0 -0
  193. casadi/libFortranHighs.so +0 -0
  194. casadi/libOsi.la +2 -2
  195. casadi/libOsiCbc.la +3 -3
  196. casadi/libOsiCbc.so +0 -0
  197. casadi/libOsiCbc.so.3 +0 -0
  198. casadi/{libOsiCbc.so.3.10.6 → libOsiCbc.so.3.10.11} +0 -0
  199. casadi/libOsiClp.la +2 -2
  200. casadi/libOsiClp.so +0 -0
  201. casadi/libOsiClp.so.1 +0 -0
  202. casadi/libOsiClp.so.1.14.9 +0 -0
  203. casadi/libOsiCommonTests.la +2 -2
  204. casadi/libOsiCommonTests.so +0 -0
  205. casadi/libOsiCommonTests.so.1 +0 -0
  206. casadi/{libOsiCommonTests.so.1.13.7 → libOsiCommonTests.so.1.13.9} +0 -0
  207. casadi/libalpaqa-dl-loader.so +0 -0
  208. casadi/libalpaqa-dl-loader.so.1.0.0 +0 -0
  209. casadi/libalpaqa.so +0 -0
  210. casadi/libalpaqa.so.1.0.0 +0 -0
  211. casadi/libbonmin.la +3 -3
  212. casadi/libbonmin.so +0 -0
  213. casadi/libbonmin.so.4 +0 -0
  214. casadi/libbonmin.so.4.8.9 +0 -0
  215. casadi/libcasadi.so +0 -0
  216. casadi/libcasadi.so.3.7 +0 -0
  217. casadi/libcasadi_conic_cbc.so +0 -0
  218. casadi/libcasadi_conic_cbc.so.3.7 +0 -0
  219. casadi/libcasadi_conic_clp.so +0 -0
  220. casadi/libcasadi_conic_clp.so.3.7 +0 -0
  221. casadi/libcasadi_conic_gurobi.so +0 -0
  222. casadi/libcasadi_conic_gurobi.so.3.7 +0 -0
  223. casadi/libcasadi_conic_highs.so +0 -0
  224. casadi/libcasadi_conic_highs.so.3.7 +0 -0
  225. casadi/libcasadi_conic_ipqp.so +0 -0
  226. casadi/libcasadi_conic_ipqp.so.3.7 +0 -0
  227. casadi/libcasadi_conic_nlpsol.so +0 -0
  228. casadi/libcasadi_conic_nlpsol.so.3.7 +0 -0
  229. casadi/libcasadi_conic_osqp.so +0 -0
  230. casadi/libcasadi_conic_osqp.so.3.7 +0 -0
  231. casadi/libcasadi_conic_proxqp.so +0 -0
  232. casadi/libcasadi_conic_proxqp.so.3.7 +0 -0
  233. casadi/libcasadi_conic_qpoases.so +0 -0
  234. casadi/libcasadi_conic_qpoases.so.3.7 +0 -0
  235. casadi/libcasadi_conic_qrqp.so +0 -0
  236. casadi/libcasadi_conic_qrqp.so.3.7 +0 -0
  237. casadi/libcasadi_conic_superscs.so +0 -0
  238. casadi/libcasadi_conic_superscs.so.3.7 +0 -0
  239. casadi/libcasadi_integrator_collocation.so +0 -0
  240. casadi/libcasadi_integrator_collocation.so.3.7 +0 -0
  241. casadi/libcasadi_integrator_cvodes.so +0 -0
  242. casadi/libcasadi_integrator_cvodes.so.3.7 +0 -0
  243. casadi/libcasadi_integrator_idas.so +0 -0
  244. casadi/libcasadi_integrator_idas.so.3.7 +0 -0
  245. casadi/libcasadi_interpolant_bspline.so +0 -0
  246. casadi/libcasadi_interpolant_bspline.so.3.7 +0 -0
  247. casadi/libcasadi_interpolant_linear.so +0 -0
  248. casadi/libcasadi_interpolant_linear.so.3.7 +0 -0
  249. casadi/libcasadi_linsol_lapacklu.so +0 -0
  250. casadi/libcasadi_linsol_lapacklu.so.3.7 +0 -0
  251. casadi/libcasadi_linsol_lapackqr.so +0 -0
  252. casadi/libcasadi_linsol_lapackqr.so.3.7 +0 -0
  253. casadi/libcasadi_linsol_ldl.so +0 -0
  254. casadi/libcasadi_linsol_ldl.so.3.7 +0 -0
  255. casadi/libcasadi_linsol_mumps.so +0 -0
  256. casadi/libcasadi_linsol_mumps.so.3.7 +0 -0
  257. casadi/libcasadi_linsol_qr.so +0 -0
  258. casadi/libcasadi_linsol_qr.so.3.7 +0 -0
  259. casadi/libcasadi_linsol_symbolicqr.so +0 -0
  260. casadi/libcasadi_linsol_symbolicqr.so.3.7 +0 -0
  261. casadi/libcasadi_nlpsol_alpaqa.so +0 -0
  262. casadi/libcasadi_nlpsol_alpaqa.so.3.7 +0 -0
  263. casadi/libcasadi_nlpsol_ampl.so +0 -0
  264. casadi/libcasadi_nlpsol_ampl.so.3.7 +0 -0
  265. casadi/libcasadi_nlpsol_blocksqp.so +0 -0
  266. casadi/libcasadi_nlpsol_blocksqp.so.3.7 +0 -0
  267. casadi/libcasadi_nlpsol_bonmin.so +0 -0
  268. casadi/libcasadi_nlpsol_bonmin.so.3.7 +0 -0
  269. casadi/libcasadi_nlpsol_feasiblesqpmethod.so +0 -0
  270. casadi/libcasadi_nlpsol_feasiblesqpmethod.so.3.7 +0 -0
  271. casadi/libcasadi_nlpsol_ipopt.so +0 -0
  272. casadi/libcasadi_nlpsol_ipopt.so.3.7 +0 -0
  273. casadi/libcasadi_nlpsol_knitro.so +0 -0
  274. casadi/libcasadi_nlpsol_knitro.so.3.7 +0 -0
  275. casadi/libcasadi_nlpsol_qrsqp.so +0 -0
  276. casadi/libcasadi_nlpsol_qrsqp.so.3.7 +0 -0
  277. casadi/libcasadi_nlpsol_scpgen.so +0 -0
  278. casadi/libcasadi_nlpsol_scpgen.so.3.7 +0 -0
  279. casadi/libcasadi_nlpsol_sleqp.so +0 -0
  280. casadi/libcasadi_nlpsol_sleqp.so.3.7 +0 -0
  281. casadi/libcasadi_nlpsol_snopt.so +0 -0
  282. casadi/libcasadi_nlpsol_snopt.so.3.7 +0 -0
  283. casadi/libcasadi_nlpsol_sqpmethod.so +0 -0
  284. casadi/libcasadi_nlpsol_sqpmethod.so.3.7 +0 -0
  285. casadi/libcasadi_nlpsol_worhp.so +0 -0
  286. casadi/libcasadi_nlpsol_worhp.so.3.7 +0 -0
  287. casadi/libcasadi_rootfinder_fast_newton.so +0 -0
  288. casadi/libcasadi_rootfinder_fast_newton.so.3.7 +0 -0
  289. casadi/libcasadi_rootfinder_newton.so +0 -0
  290. casadi/libcasadi_rootfinder_newton.so.3.7 +0 -0
  291. casadi/libcasadi_sundials_common.so +0 -0
  292. casadi/libcasadi_sundials_common.so.3.7 +0 -0
  293. casadi/libhighs.so +0 -0
  294. casadi/libhighs.so.1.6 +0 -0
  295. casadi/libhighs.so.1.6.0 +0 -0
  296. casadi/libindirect.a +0 -0
  297. casadi/liblinsys.a +0 -0
  298. casadi/libosqp.a +0 -0
  299. casadi/libqdldl.a +0 -0
  300. casadi/libsleqp.so +0 -0
  301. casadi/libsleqp.so.1.0.1 +0 -0
  302. casadi/libspral.a +0 -0
  303. casadi/libsuperscs.a +0 -0
  304. casadi/libtrlib.so +0 -0
  305. casadi/libtrlib.so.0.4 +0 -0
  306. casadi/pkgconfig/blas.pc +11 -0
  307. casadi/pkgconfig/bonmin.pc +1 -1
  308. casadi/pkgconfig/casadi.pc +1 -1
  309. casadi/pkgconfig/cbc.pc +2 -2
  310. casadi/pkgconfig/cgl.pc +2 -2
  311. casadi/pkgconfig/clp.pc +1 -1
  312. casadi/pkgconfig/coinutils.pc +1 -1
  313. casadi/pkgconfig/highs.pc +3 -3
  314. casadi/pkgconfig/lapack.pc +11 -0
  315. casadi/pkgconfig/openblas.pc +1 -1
  316. casadi/pkgconfig/osi-cbc.pc +1 -1
  317. casadi/pkgconfig/osi-clp.pc +1 -1
  318. casadi/pkgconfig/osi-unittests.pc +1 -1
  319. casadi/pkgconfig/osi.pc +1 -1
  320. casadi/pkgconfig/sleqp.pc +10 -0
  321. {casadi-3.6.2.dist-info → casadi-3.6.4.dist-info}/METADATA +1 -1
  322. {casadi-3.6.2.dist-info → casadi-3.6.4.dist-info}/RECORD +324 -283
  323. casadi/libCbc.so.3.10.6 +0 -0
  324. casadi/libCbcSolver.so.3.10.6 +0 -0
  325. casadi/libCgl.so.1.10.4 +0 -0
  326. casadi/libCoinUtils.so.3.11.6 +0 -0
  327. casadi/libOsiClp.so.1.14.7 +0 -0
  328. casadi/libbonmin.so.4.8.8 +0 -0
  329. casadi/libhighs.so.1.4 +0 -0
  330. casadi/libhighs.so.1.4.0 +0 -0
  331. /casadi/{libOsi.so.1.13.7 → libOsi.so.1.13.9} +0 -0
  332. {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-2022 at the University of Edinburgh */
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 getLocalOptionValue(
212
+ OptionStatus getLocalOptionValues(
211
213
  const HighsLogOptions& report_log_options, const std::string& name,
212
- const std::vector<OptionRecord*>& option_records, bool& value);
213
- OptionStatus getLocalOptionValue(
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& value);
216
- OptionStatus getLocalOptionValue(
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& value);
219
- OptionStatus getLocalOptionValue(
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, std::string& value);
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, HighsOptionType& type);
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(FILE* file,
230
- const std::vector<OptionRecord*>& option_records,
231
- const bool report_only_deviations = false,
232
- const bool html = false);
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 bool html = false);
244
+ const HighsFileType file_type = HighsFileType::kOther);
236
245
  void reportOption(FILE* file, const OptionRecordBool& option,
237
- const bool report_only_deviations, const bool html);
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, const bool html);
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, const bool html);
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, const bool html);
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 simplex_dualise_strategy;
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.log_file_stream = options.log_options.log_file_stream;
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.log_file_stream = other.log_options.log_file_stream;
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.log_file_stream = other.log_options.log_file_stream;
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
- advanced = false;
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
- new OptionRecordDouble("infinite_cost",
485
- "Limit on cost coefficient: values larger than "
486
- "this will be treated as infinite",
487
- advanced, &infinite_cost, 1e15, 1e20, kHighsInf);
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 larger "
493
- "than this will be treated as infinite",
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 smaller than this will be "
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 larger "
507
- "than this will be treated as infinite",
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", advanced,
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", advanced,
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, "random seed used in HiGHS",
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", "number of threads used by HiGHS (0: automatic)", advanced,
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
- new OptionRecordInt("highs_debug_level", "Debugging level in HiGHS",
548
- advanced, &highs_debug_level, kHighsDebugLevelMin,
549
- kHighsDebugLevelMin, kHighsDebugLevelMax);
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", advanced,
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)", advanced,
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", "Iteration limit for simplex solver",
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", advanced,
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
- new OptionRecordInt("write_solution_style",
652
- "Style of solution file Raw (computer-readable); "
653
- "Pretty (human-readable): "
654
- "0 => HiGHS raw; 1 => HiGHS pretty; 2 => Glpsol "
655
- "raw; 3 => Glpsol pretty; ",
656
- advanced, &write_solution_style, kSolutionStyleMin,
657
- kSolutionStyleRaw, kSolutionStyleMax);
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
- new OptionRecordBool("icrash", "Run iCrash", advanced, &icrash, false);
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", "Dualise strategy for iCrash",
676
- advanced, &icrash_dualize, false);
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
- advanced, &icrash_strategy, "ICA");
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", advanced,
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 = new OptionRecordInt("icrash_iterations", "iCrash iterations",
690
- advanced, &icrash_iterations, 0, 30, 200);
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
- advanced, &icrash_approx_iter, 0, 50, 100);
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
- advanced, &icrash_exact, false);
727
+ now_advanced, &icrash_exact, false);
701
728
  records.push_back(record_bool);
702
729
 
703
- record_bool = new OptionRecordBool("icrash_breakpoints",
704
- "Exact subproblem solution for iCrash",
705
- advanced, &icrash_breakpoints, false);
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("mip_detect_symmetry",
719
- "Whether symmetry should be detected",
720
- advanced, &mip_detect_symmetry, true);
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
- "limit on the number of improving solutions found to stop the MIP "
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("mip_lp_age_limit",
754
- "maximal age of dynamic LP rows before "
755
- "they are removed from the LP relaxation",
756
- advanced, &mip_lp_age_limit, 0, 10,
757
- std::numeric_limits<int16_t>::max());
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
- "maximal age of rows in the cutpool before they are deleted", advanced,
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("mip_pool_soft_limit",
767
- "soft limit on the number of rows in the "
768
- "cutpool for dynamic age adjustment",
769
- advanced, &mip_pool_soft_limit, 1, 10000,
770
- kHighsIInf);
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("mip_pscost_minreliable",
774
- "minimal number of observations before "
775
- "pseudo costs are considered reliable",
776
- advanced, &mip_pscost_minreliable, 0, 8,
777
- kHighsIInf);
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
- "minimal number of entries in the cliquetable before neighborhood "
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
- advanced, &mip_report_level, 0, 1, 2);
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", "effort spent for MIP heuristics", advanced,
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
- "tolerance on relative gap, |ub-lb|/|ub|, to determine whether "
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
- "tolerance on absolute gap of MIP, |ub-lb|, to determine whether "
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
- "simplex_dualise_strategy", "Strategy for dualising before simplex",
890
- advanced, &simplex_dualise_strategy, kHighsOptionOff, kHighsOptionOff,
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, true);
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.log_file_stream =
1044
- log_file.empty() ? NULL : fopen(log_file.c_str(), "w");
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-2022 at the University of Edinburgh */
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