casadi 3.7.2__cp314-none-win_amd64.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 (2398) hide show
  1. casadi/__init__.py +92 -0
  2. casadi/_casadi.pyd +0 -0
  3. casadi/blasfeo.lib +0 -0
  4. casadi/casadi-cli.exe +0 -0
  5. casadi/casadi.lib +0 -0
  6. casadi/casadi.py +54468 -0
  7. casadi/cbc.exe +0 -0
  8. casadi/clp.exe +0 -0
  9. casadi/cmake/alpaqa/alpaqaConfig.cmake +24 -0
  10. casadi/cmake/alpaqa/alpaqaConfigVersion.cmake +67 -0
  11. casadi/cmake/alpaqa/alpaqaTargets-release.cmake +19 -0
  12. casadi/cmake/alpaqa/alpaqaTargets.cmake +108 -0
  13. casadi/cmake/casadi-config-version.cmake +11 -0
  14. casadi/cmake/casadi-config.cmake +8 -0
  15. casadi/cmake/casadi-targets-release.cmake +19 -0
  16. casadi/cmake/casadi-targets.cmake +94 -0
  17. casadi/cmake/ghc_filesystem/ghc_filesystem-config-version.cmake +76 -0
  18. casadi/cmake/ghc_filesystem/ghc_filesystem-config.cmake +30 -0
  19. casadi/cmake/ghc_filesystem/ghc_filesystem-targets.cmake +99 -0
  20. casadi/cmake/highs/highs-config.cmake +17 -0
  21. casadi/cmake/highs/highs-targets-release.cmake +28 -0
  22. casadi/cmake/highs/highs-targets.cmake +105 -0
  23. casadi/cmake/libzip/libzip-config-version.cmake +48 -0
  24. casadi/cmake/libzip/libzip-config.cmake +69 -0
  25. casadi/cmake/libzip/libzip-targets-release.cmake +19 -0
  26. casadi/cmake/libzip/libzip-targets.cmake +99 -0
  27. casadi/cmake/libzip/modules/FindMbedTLS.cmake +141 -0
  28. casadi/cmake/libzip/modules/FindNettle.cmake +141 -0
  29. casadi/cmake/libzip/modules/Findzstd.cmake +186 -0
  30. casadi/cmake/osqp/osqp-config.cmake +1 -0
  31. casadi/cmake/osqp/osqp-targets-release.cmake +29 -0
  32. casadi/cmake/osqp/osqp-targets.cmake +101 -0
  33. casadi/cmake/proxsuite/find-external/Simde/FindSimde.cmake +39 -0
  34. casadi/cmake/proxsuite/proxsuiteConfig.cmake +177 -0
  35. casadi/cmake/proxsuite/proxsuiteConfigVersion.cmake +67 -0
  36. casadi/cmake/proxsuite/proxsuiteTargets.cmake +107 -0
  37. casadi/cmake/qdldl/qdldl-config.cmake +1 -0
  38. casadi/cmake/qdldl/qdldl-targets-release.cmake +29 -0
  39. casadi/cmake/qdldl/qdldl-targets.cmake +101 -0
  40. casadi/cmake/sleqp/sleqp-config-version.cmake +67 -0
  41. casadi/cmake/sleqp/sleqp-config.cmake +1 -0
  42. casadi/cmake/sleqp/sleqp-targets-release.cmake +20 -0
  43. casadi/cmake/sleqp/sleqp-targets.cmake +94 -0
  44. casadi/cmake/trlib/trlib-config-release.cmake +19 -0
  45. casadi/cmake/trlib/trlib-config-version.cmake +59 -0
  46. casadi/cmake/trlib/trlib-config.cmake +99 -0
  47. casadi/daqp.lib +0 -0
  48. casadi/fatrop.lib +0 -0
  49. casadi/highs.exe +0 -0
  50. casadi/highs.lib +0 -0
  51. casadi/hpipm.lib +0 -0
  52. casadi/include/alpaqa/accelerators/anderson.hpp +133 -0
  53. casadi/include/alpaqa/accelerators/internal/anderson-helpers.hpp +92 -0
  54. casadi/include/alpaqa/accelerators/internal/limited-memory-qr.hpp +295 -0
  55. casadi/include/alpaqa/accelerators/lbfgs.hpp +244 -0
  56. casadi/include/alpaqa/accelerators/steihaugcg.hpp +143 -0
  57. casadi/include/alpaqa/alpaqa.hpp +3 -0
  58. casadi/include/alpaqa/casadi/CasADiControlProblem.hpp +185 -0
  59. casadi/include/alpaqa/casadi/CasADiFunctionWrapper.hpp +104 -0
  60. casadi/include/alpaqa/casadi/CasADiProblem.hpp +102 -0
  61. casadi/include/alpaqa/casadi-loader-export.hpp +15 -0
  62. casadi/include/alpaqa/casadi-ocp-loader-export.hpp +15 -0
  63. casadi/include/alpaqa/config/config.hpp +165 -0
  64. casadi/include/alpaqa/dl/dl-problem.h +476 -0
  65. casadi/include/alpaqa/dl/dl-problem.hpp +301 -0
  66. casadi/include/alpaqa/export.h +42 -0
  67. casadi/include/alpaqa/export.hpp +30 -0
  68. casadi/include/alpaqa/implementation/accelerators/lbfgs.tpp +240 -0
  69. casadi/include/alpaqa/implementation/casadi/CasADiControlProblem.tpp +594 -0
  70. casadi/include/alpaqa/implementation/casadi/CasADiLoader-util.hpp +50 -0
  71. casadi/include/alpaqa/implementation/casadi/CasADiProblem.tpp +425 -0
  72. casadi/include/alpaqa/implementation/inner/directions/panoc/structured-lbfgs.tpp +164 -0
  73. casadi/include/alpaqa/implementation/inner/panoc-helpers.tpp +389 -0
  74. casadi/include/alpaqa/implementation/inner/panoc-ocp.tpp +798 -0
  75. casadi/include/alpaqa/implementation/inner/panoc.tpp +448 -0
  76. casadi/include/alpaqa/implementation/inner/pantr.tpp +474 -0
  77. casadi/include/alpaqa/implementation/inner/zerofpr.tpp +482 -0
  78. casadi/include/alpaqa/implementation/outer/alm.tpp +228 -0
  79. casadi/include/alpaqa/implementation/outer/internal/alm-helpers.tpp +80 -0
  80. casadi/include/alpaqa/implementation/params/params.tpp +158 -0
  81. casadi/include/alpaqa/implementation/problem/ocproblem.tpp +56 -0
  82. casadi/include/alpaqa/implementation/problem/type-erased-problem.tpp +211 -0
  83. casadi/include/alpaqa/implementation/util/io/csv.tpp +120 -0
  84. casadi/include/alpaqa/implementation/util/print.tpp +151 -0
  85. casadi/include/alpaqa/inner/directions/panoc/anderson.hpp +98 -0
  86. casadi/include/alpaqa/inner/directions/panoc/lbfgs.hpp +94 -0
  87. casadi/include/alpaqa/inner/directions/panoc/structured-lbfgs.hpp +146 -0
  88. casadi/include/alpaqa/inner/directions/panoc/structured-newton.hpp +264 -0
  89. casadi/include/alpaqa/inner/directions/panoc-direction-update.hpp +96 -0
  90. casadi/include/alpaqa/inner/directions/panoc-ocp/lqr.hpp +181 -0
  91. casadi/include/alpaqa/inner/directions/panoc-ocp/ocp-vars.hpp +492 -0
  92. casadi/include/alpaqa/inner/directions/pantr/newton-tr.hpp +192 -0
  93. casadi/include/alpaqa/inner/directions/pantr/pantr-direction.hpp +99 -0
  94. casadi/include/alpaqa/inner/inner-solve-options.hpp +30 -0
  95. casadi/include/alpaqa/inner/internal/lipschitz.hpp +27 -0
  96. casadi/include/alpaqa/inner/internal/panoc-helpers.hpp +10 -0
  97. casadi/include/alpaqa/inner/internal/panoc-stop-crit.hpp +124 -0
  98. casadi/include/alpaqa/inner/internal/solverstatus.hpp +42 -0
  99. casadi/include/alpaqa/inner/panoc-ocp.hpp +302 -0
  100. casadi/include/alpaqa/inner/panoc.hpp +274 -0
  101. casadi/include/alpaqa/inner/pantr.hpp +284 -0
  102. casadi/include/alpaqa/inner/zerofpr.hpp +274 -0
  103. casadi/include/alpaqa/ipopt/ipopt-adapter.hpp +81 -0
  104. casadi/include/alpaqa/ipopt/ipopt-enums.hpp +35 -0
  105. casadi/include/alpaqa/lbfgsb/lbfgsb-adapter.hpp +111 -0
  106. casadi/include/alpaqa/newton-tr-pantr-alm.hpp +27 -0
  107. casadi/include/alpaqa/outer/alm.hpp +190 -0
  108. casadi/include/alpaqa/outer/internal/alm-helpers.hpp +10 -0
  109. casadi/include/alpaqa/panoc-alm.hpp +27 -0
  110. casadi/include/alpaqa/panoc-anderson-alm.hpp +27 -0
  111. casadi/include/alpaqa/params/params.hpp +60 -0
  112. casadi/include/alpaqa/problem/box-constr-problem.hpp +220 -0
  113. casadi/include/alpaqa/problem/box.hpp +82 -0
  114. casadi/include/alpaqa/problem/functional-problem.hpp +73 -0
  115. casadi/include/alpaqa/problem/kkt-error.hpp +43 -0
  116. casadi/include/alpaqa/problem/ocproblem-counters.hpp +116 -0
  117. casadi/include/alpaqa/problem/ocproblem.hpp +662 -0
  118. casadi/include/alpaqa/problem/problem-counters.hpp +116 -0
  119. casadi/include/alpaqa/problem/problem-with-counters.hpp +141 -0
  120. casadi/include/alpaqa/problem/type-erased-problem.hpp +874 -0
  121. casadi/include/alpaqa/problem/unconstr-problem.hpp +37 -0
  122. casadi/include/alpaqa/structured-panoc-alm.hpp +27 -0
  123. casadi/include/alpaqa/structured-zerofpr-alm.hpp +27 -0
  124. casadi/include/alpaqa/util/alloc-check.hpp +23 -0
  125. casadi/include/alpaqa/util/atomic-stop-signal.hpp +24 -0
  126. casadi/include/alpaqa/util/check-dim.hpp +64 -0
  127. casadi/include/alpaqa/util/copyable_unique_ptr.hpp +32 -0
  128. casadi/include/alpaqa/util/demangled-typename.hpp +9 -0
  129. casadi/include/alpaqa/util/enumerate.hpp +70 -0
  130. casadi/include/alpaqa/util/float.hpp +25 -0
  131. casadi/include/alpaqa/util/index-set.hpp +97 -0
  132. casadi/include/alpaqa/util/io/csv.hpp +43 -0
  133. casadi/include/alpaqa/util/iter-adapter.hpp +68 -0
  134. casadi/include/alpaqa/util/max-history.hpp +47 -0
  135. casadi/include/alpaqa/util/noop-delete.hpp +15 -0
  136. casadi/include/alpaqa/util/not-implemented.hpp +12 -0
  137. casadi/include/alpaqa/util/print.hpp +78 -0
  138. casadi/include/alpaqa/util/quadmath/quadmath-print.hpp +20 -0
  139. casadi/include/alpaqa/util/quadmath/quadmath.hpp +137 -0
  140. casadi/include/alpaqa/util/required-method.hpp +29 -0
  141. casadi/include/alpaqa/util/ringbuffer.hpp +212 -0
  142. casadi/include/alpaqa/util/set-intersection.hpp +129 -0
  143. casadi/include/alpaqa/util/sparse-ops.hpp +164 -0
  144. casadi/include/alpaqa/util/timed.hpp +22 -0
  145. casadi/include/alpaqa/util/type-erasure.hpp +568 -0
  146. casadi/include/alpaqa/util/type-traits.hpp +58 -0
  147. casadi/include/alpaqa/zerofpr-alm.hpp +27 -0
  148. casadi/include/alpaqa/zerofpr-anderson-alm.hpp +27 -0
  149. casadi/include/alpaqa-version.h +8 -0
  150. casadi/include/blasfeo.h +52 -0
  151. casadi/include/blasfeo_block_size.h +447 -0
  152. casadi/include/blasfeo_common.h +274 -0
  153. casadi/include/blasfeo_d_aux.h +255 -0
  154. casadi/include/blasfeo_d_aux_ext_dep.h +145 -0
  155. casadi/include/blasfeo_d_aux_ext_dep_ref.h +84 -0
  156. casadi/include/blasfeo_d_aux_old.h +75 -0
  157. casadi/include/blasfeo_d_aux_ref.h +208 -0
  158. casadi/include/blasfeo_d_aux_test.h +226 -0
  159. casadi/include/blasfeo_d_blas.h +46 -0
  160. casadi/include/blasfeo_d_blas_api.h +281 -0
  161. casadi/include/blasfeo_d_blasfeo_api.h +364 -0
  162. casadi/include/blasfeo_d_blasfeo_api_ref.h +147 -0
  163. casadi/include/blasfeo_d_blasfeo_hp_api.h +84 -0
  164. casadi/include/blasfeo_d_blasfeo_ref_api.h +283 -0
  165. casadi/include/blasfeo_d_kernel.h +1321 -0
  166. casadi/include/blasfeo_i_aux_ext_dep.h +69 -0
  167. casadi/include/blasfeo_m_aux.h +57 -0
  168. casadi/include/blasfeo_memory.h +62 -0
  169. casadi/include/blasfeo_naming.h +77 -0
  170. casadi/include/blasfeo_processor_features.h +88 -0
  171. casadi/include/blasfeo_s_aux.h +168 -0
  172. casadi/include/blasfeo_s_aux_ext_dep.h +141 -0
  173. casadi/include/blasfeo_s_aux_ext_dep_ref.h +82 -0
  174. casadi/include/blasfeo_s_aux_old.h +64 -0
  175. casadi/include/blasfeo_s_aux_ref.h +147 -0
  176. casadi/include/blasfeo_s_aux_test.h +177 -0
  177. casadi/include/blasfeo_s_blas.h +46 -0
  178. casadi/include/blasfeo_s_blas_api.h +182 -0
  179. casadi/include/blasfeo_s_blasfeo_api.h +284 -0
  180. casadi/include/blasfeo_s_blasfeo_api_ref.h +135 -0
  181. casadi/include/blasfeo_s_blasfeo_ref_api.h +252 -0
  182. casadi/include/blasfeo_s_kernel.h +692 -0
  183. casadi/include/blasfeo_stdlib.h +62 -0
  184. casadi/include/blasfeo_target.h +73 -0
  185. casadi/include/blasfeo_timing.h +114 -0
  186. casadi/include/blasfeo_v_aux_ext_dep.h +83 -0
  187. casadi/include/casadi/casadi.hpp +31 -0
  188. casadi/include/casadi/casadi.i +4920 -0
  189. casadi/include/casadi/casadi_c.h +138 -0
  190. casadi/include/casadi/casadi_numpy.hpp +97 -0
  191. casadi/include/casadi/config.h +46 -0
  192. casadi/include/casadi/core/archiver.hpp +58 -0
  193. casadi/include/casadi/core/blazing_spline.hpp +47 -0
  194. casadi/include/casadi/core/calculus.hpp +1805 -0
  195. casadi/include/casadi/core/callback.hpp +235 -0
  196. casadi/include/casadi/core/casadi_common.hpp +355 -0
  197. casadi/include/casadi/core/casadi_enum.hpp +90 -0
  198. casadi/include/casadi/core/casadi_export.h +42 -0
  199. casadi/include/casadi/core/casadi_interrupt.hpp +83 -0
  200. casadi/include/casadi/core/casadi_limits.hpp +104 -0
  201. casadi/include/casadi/core/casadi_logger.hpp +134 -0
  202. casadi/include/casadi/core/casadi_meta.hpp +122 -0
  203. casadi/include/casadi/core/casadi_misc.hpp +1022 -0
  204. casadi/include/casadi/core/casadi_types.hpp +66 -0
  205. casadi/include/casadi/core/code_generator.hpp +1071 -0
  206. casadi/include/casadi/core/conic.hpp +213 -0
  207. casadi/include/casadi/core/core.hpp +75 -0
  208. casadi/include/casadi/core/dae_builder.hpp +885 -0
  209. casadi/include/casadi/core/dm.hpp +90 -0
  210. casadi/include/casadi/core/dm_fwd.hpp +39 -0
  211. casadi/include/casadi/core/dple.hpp +138 -0
  212. casadi/include/casadi/core/exception.hpp +167 -0
  213. casadi/include/casadi/core/expm.hpp +84 -0
  214. casadi/include/casadi/core/external.hpp +70 -0
  215. casadi/include/casadi/core/filesystem.hpp +58 -0
  216. casadi/include/casadi/core/fmu.hpp +270 -0
  217. casadi/include/casadi/core/function.hpp +1389 -0
  218. casadi/include/casadi/core/generic_expression.hpp +760 -0
  219. casadi/include/casadi/core/generic_matrix.hpp +1805 -0
  220. casadi/include/casadi/core/generic_shared.hpp +395 -0
  221. casadi/include/casadi/core/generic_shared_impl.hpp +218 -0
  222. casadi/include/casadi/core/generic_shared_internal.hpp +215 -0
  223. casadi/include/casadi/core/generic_type.hpp +314 -0
  224. casadi/include/casadi/core/global_options.hpp +107 -0
  225. casadi/include/casadi/core/im.hpp +52 -0
  226. casadi/include/casadi/core/im_fwd.hpp +35 -0
  227. casadi/include/casadi/core/importer.hpp +221 -0
  228. casadi/include/casadi/core/integration_tools.hpp +292 -0
  229. casadi/include/casadi/core/integrator.hpp +290 -0
  230. casadi/include/casadi/core/interpolant.hpp +163 -0
  231. casadi/include/casadi/core/linsol.hpp +171 -0
  232. casadi/include/casadi/core/matrix_decl.hpp +1423 -0
  233. casadi/include/casadi/core/matrix_fwd.hpp +37 -0
  234. casadi/include/casadi/core/mx.hpp +1014 -0
  235. casadi/include/casadi/core/nlp_builder.hpp +163 -0
  236. casadi/include/casadi/core/nlp_tools.hpp +124 -0
  237. casadi/include/casadi/core/nlpsol.hpp +234 -0
  238. casadi/include/casadi/core/nonzeros.hpp +111 -0
  239. casadi/include/casadi/core/options.hpp +122 -0
  240. casadi/include/casadi/core/optistack.hpp +704 -0
  241. casadi/include/casadi/core/polynomial.hpp +126 -0
  242. casadi/include/casadi/core/printable.hpp +81 -0
  243. casadi/include/casadi/core/resource.hpp +107 -0
  244. casadi/include/casadi/core/rootfinder.hpp +176 -0
  245. casadi/include/casadi/core/runtime/casadi_axpy.hpp +8 -0
  246. casadi/include/casadi/core/runtime/casadi_bfgs.hpp +49 -0
  247. casadi/include/casadi/core/runtime/casadi_bilin.hpp +42 -0
  248. casadi/include/casadi/core/runtime/casadi_blazing_1d_boor_eval.hpp +112 -0
  249. casadi/include/casadi/core/runtime/casadi_blazing_2d_boor_eval.hpp +311 -0
  250. casadi/include/casadi/core/runtime/casadi_blazing_3d_boor_eval.hpp +645 -0
  251. casadi/include/casadi/core/runtime/casadi_blazing_de_boor.hpp +101 -0
  252. casadi/include/casadi/core/runtime/casadi_bound_consistency.hpp +51 -0
  253. casadi/include/casadi/core/runtime/casadi_cache.hpp +59 -0
  254. casadi/include/casadi/core/runtime/casadi_clear.hpp +27 -0
  255. casadi/include/casadi/core/runtime/casadi_clip_max.hpp +33 -0
  256. casadi/include/casadi/core/runtime/casadi_clip_min.hpp +33 -0
  257. casadi/include/casadi/core/runtime/casadi_convexify.hpp +182 -0
  258. casadi/include/casadi/core/runtime/casadi_copy.hpp +31 -0
  259. casadi/include/casadi/core/runtime/casadi_cvx.hpp +463 -0
  260. casadi/include/casadi/core/runtime/casadi_de_boor.hpp +36 -0
  261. casadi/include/casadi/core/runtime/casadi_dense_lsqr.hpp +247 -0
  262. casadi/include/casadi/core/runtime/casadi_densify.hpp +48 -0
  263. casadi/include/casadi/core/runtime/casadi_dot.hpp +27 -0
  264. casadi/include/casadi/core/runtime/casadi_feasiblesqpmethod.hpp +208 -0
  265. casadi/include/casadi/core/runtime/casadi_file_slurp.hpp +32 -0
  266. casadi/include/casadi/core/runtime/casadi_fill.hpp +27 -0
  267. casadi/include/casadi/core/runtime/casadi_finite_diff.hpp +345 -0
  268. casadi/include/casadi/core/runtime/casadi_flip.hpp +33 -0
  269. casadi/include/casadi/core/runtime/casadi_getu.hpp +35 -0
  270. casadi/include/casadi/core/runtime/casadi_iamax.hpp +36 -0
  271. casadi/include/casadi/core/runtime/casadi_interpn.hpp +39 -0
  272. casadi/include/casadi/core/runtime/casadi_interpn_grad.hpp +72 -0
  273. casadi/include/casadi/core/runtime/casadi_interpn_interpolate.hpp +43 -0
  274. casadi/include/casadi/core/runtime/casadi_interpn_weights.hpp +39 -0
  275. casadi/include/casadi/core/runtime/casadi_ipqp.hpp +868 -0
  276. casadi/include/casadi/core/runtime/casadi_jac.hpp +186 -0
  277. casadi/include/casadi/core/runtime/casadi_kkt.hpp +67 -0
  278. casadi/include/casadi/core/runtime/casadi_kron.hpp +50 -0
  279. casadi/include/casadi/core/runtime/casadi_ldl.hpp +109 -0
  280. casadi/include/casadi/core/runtime/casadi_logsumexp.hpp +41 -0
  281. casadi/include/casadi/core/runtime/casadi_low.hpp +65 -0
  282. casadi/include/casadi/core/runtime/casadi_lsqr.hpp +247 -0
  283. casadi/include/casadi/core/runtime/casadi_masked_norm_inf.hpp +33 -0
  284. casadi/include/casadi/core/runtime/casadi_max_viol.hpp +37 -0
  285. casadi/include/casadi/core/runtime/casadi_mmax.hpp +28 -0
  286. casadi/include/casadi/core/runtime/casadi_mmin.hpp +29 -0
  287. casadi/include/casadi/core/runtime/casadi_mtimes.hpp +75 -0
  288. casadi/include/casadi/core/runtime/casadi_mv.hpp +46 -0
  289. casadi/include/casadi/core/runtime/casadi_mv_dense.hpp +39 -0
  290. casadi/include/casadi/core/runtime/casadi_nd_boor_dual_eval.hpp +127 -0
  291. casadi/include/casadi/core/runtime/casadi_nd_boor_eval.hpp +120 -0
  292. casadi/include/casadi/core/runtime/casadi_newton.hpp +66 -0
  293. casadi/include/casadi/core/runtime/casadi_nlp.hpp +295 -0
  294. casadi/include/casadi/core/runtime/casadi_norm_1.hpp +29 -0
  295. casadi/include/casadi/core/runtime/casadi_norm_2.hpp +24 -0
  296. casadi/include/casadi/core/runtime/casadi_norm_inf.hpp +28 -0
  297. casadi/include/casadi/core/runtime/casadi_norm_inf_mul.hpp +105 -0
  298. casadi/include/casadi/core/runtime/casadi_ocp_block.hpp +55 -0
  299. casadi/include/casadi/core/runtime/casadi_oracle.hpp +44 -0
  300. casadi/include/casadi/core/runtime/casadi_oracle_callback.hpp +39 -0
  301. casadi/include/casadi/core/runtime/casadi_polyval.hpp +29 -0
  302. casadi/include/casadi/core/runtime/casadi_print_canonical.hpp +55 -0
  303. casadi/include/casadi/core/runtime/casadi_print_scalar.hpp +25 -0
  304. casadi/include/casadi/core/runtime/casadi_print_vector.hpp +32 -0
  305. casadi/include/casadi/core/runtime/casadi_printme.hpp +26 -0
  306. casadi/include/casadi/core/runtime/casadi_project.hpp +39 -0
  307. casadi/include/casadi/core/runtime/casadi_qp.hpp +86 -0
  308. casadi/include/casadi/core/runtime/casadi_qr.hpp +272 -0
  309. casadi/include/casadi/core/runtime/casadi_qrqp.hpp +1239 -0
  310. casadi/include/casadi/core/runtime/casadi_rank1.hpp +40 -0
  311. casadi/include/casadi/core/runtime/casadi_regularize.hpp +73 -0
  312. casadi/include/casadi/core/runtime/casadi_runtime.hpp +318 -0
  313. casadi/include/casadi/core/runtime/casadi_scal.hpp +26 -0
  314. casadi/include/casadi/core/runtime/casadi_scaled_copy.hpp +31 -0
  315. casadi/include/casadi/core/runtime/casadi_sparsify.hpp +42 -0
  316. casadi/include/casadi/core/runtime/casadi_sparsity.hpp +24 -0
  317. casadi/include/casadi/core/runtime/casadi_sqpmethod.hpp +178 -0
  318. casadi/include/casadi/core/runtime/casadi_sum.hpp +31 -0
  319. casadi/include/casadi/core/runtime/casadi_sum_viol.hpp +37 -0
  320. casadi/include/casadi/core/runtime/casadi_swap.hpp +32 -0
  321. casadi/include/casadi/core/runtime/casadi_trans.hpp +35 -0
  322. casadi/include/casadi/core/runtime/casadi_tri_project.hpp +37 -0
  323. casadi/include/casadi/core/runtime/casadi_trilsolve.hpp +81 -0
  324. casadi/include/casadi/core/runtime/casadi_triusolve.hpp +81 -0
  325. casadi/include/casadi/core/runtime/casadi_vector_fmax.hpp +28 -0
  326. casadi/include/casadi/core/runtime/casadi_vector_fmin.hpp +28 -0
  327. casadi/include/casadi/core/runtime/casadi_vfmax.hpp +28 -0
  328. casadi/include/casadi/core/runtime/casadi_vfmin.hpp +28 -0
  329. casadi/include/casadi/core/runtime/shared.hpp +261 -0
  330. casadi/include/casadi/core/serializer.hpp +264 -0
  331. casadi/include/casadi/core/serializing_stream.hpp +336 -0
  332. casadi/include/casadi/core/shared_object.hpp +182 -0
  333. casadi/include/casadi/core/slice.hpp +149 -0
  334. casadi/include/casadi/core/sparsity.hpp +1507 -0
  335. casadi/include/casadi/core/sparsity_interface.hpp +763 -0
  336. casadi/include/casadi/core/submatrix.hpp +156 -0
  337. casadi/include/casadi/core/sx.hpp +244 -0
  338. casadi/include/casadi/core/sx_elem.hpp +376 -0
  339. casadi/include/casadi/core/sx_fwd.hpp +45 -0
  340. casadi/include/casadi/core/timing.hpp +98 -0
  341. casadi/include/casadi/core/tools.hpp +67 -0
  342. casadi/include/casadi/core/xml_file.hpp +93 -0
  343. casadi/include/casadi/core/xml_node.hpp +212 -0
  344. casadi/include/casadi/doc.i +62244 -0
  345. casadi/include/casadi/doc_merged.i +38499 -0
  346. casadi/include/casadi/mem.h +311 -0
  347. casadi/include/casadi/valgrind-casadi.supp +649 -0
  348. casadi/include/casadi/valgrind-python.supp +3886 -0
  349. casadi/include/coin/BonArraysHelpers.hpp +52 -0
  350. casadi/include/coin/BonAuxInfos.hpp +110 -0
  351. casadi/include/coin/BonBabInfos.hpp +57 -0
  352. casadi/include/coin/BonBabSetupBase.hpp +386 -0
  353. casadi/include/coin/BonBonminSetup.hpp +95 -0
  354. casadi/include/coin/BonBranchingTQP.hpp +197 -0
  355. casadi/include/coin/BonCbc.hpp +127 -0
  356. casadi/include/coin/BonCbcLpStrategy.hpp +45 -0
  357. casadi/include/coin/BonCbcNlpStrategy.hpp +98 -0
  358. casadi/include/coin/BonCbcNode.hpp +133 -0
  359. casadi/include/coin/BonChooseVariable.hpp +345 -0
  360. casadi/include/coin/BonCurvBranchingSolver.hpp +77 -0
  361. casadi/include/coin/BonCutStrengthener.hpp +244 -0
  362. casadi/include/coin/BonDiver.hpp +424 -0
  363. casadi/include/coin/BonDummyHeuristic.hpp +53 -0
  364. casadi/include/coin/BonDummyPump.hpp +43 -0
  365. casadi/include/coin/BonEcpCuts.hpp +97 -0
  366. casadi/include/coin/BonExitCodes.hpp +12 -0
  367. casadi/include/coin/BonFixAndSolveHeuristic.hpp +43 -0
  368. casadi/include/coin/BonGuessHeuristic.hpp +46 -0
  369. casadi/include/coin/BonHeuristicDive.hpp +88 -0
  370. casadi/include/coin/BonHeuristicDiveFractional.hpp +67 -0
  371. casadi/include/coin/BonHeuristicDiveMIP.hpp +83 -0
  372. casadi/include/coin/BonHeuristicDiveMIPFractional.hpp +67 -0
  373. casadi/include/coin/BonHeuristicDiveMIPVectorLength.hpp +74 -0
  374. casadi/include/coin/BonHeuristicDiveVectorLength.hpp +74 -0
  375. casadi/include/coin/BonHeuristicFPump.hpp +111 -0
  376. casadi/include/coin/BonHeuristicLocalBranching.hpp +59 -0
  377. casadi/include/coin/BonHeuristicRINS.hpp +55 -0
  378. casadi/include/coin/BonIpoptInteriorWarmStarter.hpp +103 -0
  379. casadi/include/coin/BonIpoptSolver.hpp +188 -0
  380. casadi/include/coin/BonIpoptWarmStart.hpp +148 -0
  381. casadi/include/coin/BonLinearCutsGenerator.hpp +75 -0
  382. casadi/include/coin/BonLocalSolverBasedHeuristic.hpp +102 -0
  383. casadi/include/coin/BonLpBranchingSolver.hpp +80 -0
  384. casadi/include/coin/BonMilpRounding.hpp +74 -0
  385. casadi/include/coin/BonOACutGenerator2.hpp +56 -0
  386. casadi/include/coin/BonOAMessages.hpp +44 -0
  387. casadi/include/coin/BonOaDecBase.hpp +297 -0
  388. casadi/include/coin/BonOaFeasChecker.hpp +73 -0
  389. casadi/include/coin/BonOaNlpOptim.hpp +116 -0
  390. casadi/include/coin/BonOsiTMINLPInterface.hpp +1342 -0
  391. casadi/include/coin/BonOuterApprox.hpp +123 -0
  392. casadi/include/coin/BonPseudoCosts.hpp +91 -0
  393. casadi/include/coin/BonPumpForMinlp.hpp +45 -0
  394. casadi/include/coin/BonQuadCut.hpp +217 -0
  395. casadi/include/coin/BonQuadRow.hpp +122 -0
  396. casadi/include/coin/BonRegisteredOptions.hpp +225 -0
  397. casadi/include/coin/BonStrongBranchingSolver.hpp +69 -0
  398. casadi/include/coin/BonSubMipSolver.hpp +143 -0
  399. casadi/include/coin/BonTMINLP.hpp +420 -0
  400. casadi/include/coin/BonTMINLP2OsiLP.hpp +164 -0
  401. casadi/include/coin/BonTMINLP2Quad.hpp +191 -0
  402. casadi/include/coin/BonTMINLP2TNLP.hpp +509 -0
  403. casadi/include/coin/BonTMINLPLinObj.hpp +216 -0
  404. casadi/include/coin/BonTMatrix.hpp +167 -0
  405. casadi/include/coin/BonTNLP2FPNLP.hpp +264 -0
  406. casadi/include/coin/BonTNLPSolver.hpp +241 -0
  407. casadi/include/coin/BonTypes.hpp +95 -0
  408. casadi/include/coin/BonminConfig.h +19 -0
  409. casadi/include/coin/CbcBranchActual.hpp +26 -0
  410. casadi/include/coin/CbcBranchAllDifferent.hpp +61 -0
  411. casadi/include/coin/CbcBranchBase.hpp +79 -0
  412. casadi/include/coin/CbcBranchCut.hpp +182 -0
  413. casadi/include/coin/CbcBranchDecision.hpp +135 -0
  414. casadi/include/coin/CbcBranchDefaultDecision.hpp +101 -0
  415. casadi/include/coin/CbcBranchDynamic.hpp +210 -0
  416. casadi/include/coin/CbcBranchLotsize.hpp +249 -0
  417. casadi/include/coin/CbcBranchToFixLots.hpp +94 -0
  418. casadi/include/coin/CbcBranchingObject.hpp +245 -0
  419. casadi/include/coin/CbcClique.hpp +309 -0
  420. casadi/include/coin/CbcCompare.hpp +46 -0
  421. casadi/include/coin/CbcCompareActual.hpp +16 -0
  422. casadi/include/coin/CbcCompareBase.hpp +155 -0
  423. casadi/include/coin/CbcCompareDefault.hpp +129 -0
  424. casadi/include/coin/CbcCompareDepth.hpp +48 -0
  425. casadi/include/coin/CbcCompareEstimate.hpp +48 -0
  426. casadi/include/coin/CbcCompareObjective.hpp +50 -0
  427. casadi/include/coin/CbcConfig.h +18 -0
  428. casadi/include/coin/CbcConsequence.hpp +50 -0
  429. casadi/include/coin/CbcCountRowCut.hpp +176 -0
  430. casadi/include/coin/CbcCutGenerator.hpp +550 -0
  431. casadi/include/coin/CbcCutModifier.hpp +59 -0
  432. casadi/include/coin/CbcCutSubsetModifier.hpp +69 -0
  433. casadi/include/coin/CbcDummyBranchingObject.hpp +83 -0
  434. casadi/include/coin/CbcEventHandler.hpp +250 -0
  435. casadi/include/coin/CbcFathom.hpp +136 -0
  436. casadi/include/coin/CbcFathomDynamicProgramming.hpp +177 -0
  437. casadi/include/coin/CbcFeasibilityBase.hpp +60 -0
  438. casadi/include/coin/CbcFixVariable.hpp +68 -0
  439. casadi/include/coin/CbcFollowOn.hpp +207 -0
  440. casadi/include/coin/CbcFullNodeInfo.hpp +171 -0
  441. casadi/include/coin/CbcGeneral.hpp +60 -0
  442. casadi/include/coin/CbcGeneralDepth.hpp +289 -0
  443. casadi/include/coin/CbcHeuristic.hpp +735 -0
  444. casadi/include/coin/CbcHeuristicDINS.hpp +98 -0
  445. casadi/include/coin/CbcHeuristicDW.hpp +374 -0
  446. casadi/include/coin/CbcHeuristicDive.hpp +198 -0
  447. casadi/include/coin/CbcHeuristicDiveCoefficient.hpp +52 -0
  448. casadi/include/coin/CbcHeuristicDiveFractional.hpp +52 -0
  449. casadi/include/coin/CbcHeuristicDiveGuided.hpp +55 -0
  450. casadi/include/coin/CbcHeuristicDiveLineSearch.hpp +52 -0
  451. casadi/include/coin/CbcHeuristicDivePseudoCost.hpp +60 -0
  452. casadi/include/coin/CbcHeuristicDiveVectorLength.hpp +52 -0
  453. casadi/include/coin/CbcHeuristicFPump.hpp +375 -0
  454. casadi/include/coin/CbcHeuristicGreedy.hpp +289 -0
  455. casadi/include/coin/CbcHeuristicLocal.hpp +276 -0
  456. casadi/include/coin/CbcHeuristicPivotAndFix.hpp +58 -0
  457. casadi/include/coin/CbcHeuristicRENS.hpp +79 -0
  458. casadi/include/coin/CbcHeuristicRINS.hpp +106 -0
  459. casadi/include/coin/CbcHeuristicRandRound.hpp +58 -0
  460. casadi/include/coin/CbcHeuristicVND.hpp +95 -0
  461. casadi/include/coin/CbcLinked.hpp +1443 -0
  462. casadi/include/coin/CbcMessage.hpp +94 -0
  463. casadi/include/coin/CbcMipStartIO.hpp +29 -0
  464. casadi/include/coin/CbcModel.hpp +3296 -0
  465. casadi/include/coin/CbcNWay.hpp +171 -0
  466. casadi/include/coin/CbcNode.hpp +380 -0
  467. casadi/include/coin/CbcNodeInfo.hpp +377 -0
  468. casadi/include/coin/CbcObject.hpp +288 -0
  469. casadi/include/coin/CbcObjectUpdateData.hpp +63 -0
  470. casadi/include/coin/CbcOrClpParam.cpp +4321 -0
  471. casadi/include/coin/CbcOrClpParam.hpp +585 -0
  472. casadi/include/coin/CbcParam.hpp +338 -0
  473. casadi/include/coin/CbcPartialNodeInfo.hpp +116 -0
  474. casadi/include/coin/CbcSOS.hpp +290 -0
  475. casadi/include/coin/CbcSimpleInteger.hpp +299 -0
  476. casadi/include/coin/CbcSimpleIntegerDynamicPseudoCost.hpp +619 -0
  477. casadi/include/coin/CbcSimpleIntegerPseudoCost.hpp +122 -0
  478. casadi/include/coin/CbcSolver.hpp +460 -0
  479. casadi/include/coin/CbcStrategy.hpp +269 -0
  480. casadi/include/coin/CbcSubProblem.hpp +84 -0
  481. casadi/include/coin/CbcTree.hpp +493 -0
  482. casadi/include/coin/CbcTreeLocal.hpp +393 -0
  483. casadi/include/coin/Cbc_C_Interface.h +904 -0
  484. casadi/include/coin/Cgl012cut.hpp +464 -0
  485. casadi/include/coin/CglAllDifferent.hpp +115 -0
  486. casadi/include/coin/CglClique.hpp +312 -0
  487. casadi/include/coin/CglConfig.h +19 -0
  488. casadi/include/coin/CglCutGenerator.hpp +133 -0
  489. casadi/include/coin/CglDuplicateRow.hpp +189 -0
  490. casadi/include/coin/CglFlowCover.hpp +371 -0
  491. casadi/include/coin/CglGMI.hpp +364 -0
  492. casadi/include/coin/CglGMIParam.hpp +313 -0
  493. casadi/include/coin/CglGomory.hpp +204 -0
  494. casadi/include/coin/CglKnapsackCover.hpp +310 -0
  495. casadi/include/coin/CglLandP.hpp +306 -0
  496. casadi/include/coin/CglLandPValidator.hpp +130 -0
  497. casadi/include/coin/CglLiftAndProject.hpp +104 -0
  498. casadi/include/coin/CglMessage.hpp +49 -0
  499. casadi/include/coin/CglMixedIntegerRounding.hpp +429 -0
  500. casadi/include/coin/CglMixedIntegerRounding2.hpp +427 -0
  501. casadi/include/coin/CglOddHole.hpp +160 -0
  502. casadi/include/coin/CglParam.hpp +93 -0
  503. casadi/include/coin/CglPreProcess.hpp +600 -0
  504. casadi/include/coin/CglProbing.hpp +543 -0
  505. casadi/include/coin/CglRedSplit.hpp +448 -0
  506. casadi/include/coin/CglRedSplit2.hpp +494 -0
  507. casadi/include/coin/CglRedSplit2Param.hpp +495 -0
  508. casadi/include/coin/CglRedSplitParam.hpp +272 -0
  509. casadi/include/coin/CglResidualCapacity.hpp +240 -0
  510. casadi/include/coin/CglSimpleRounding.hpp +174 -0
  511. casadi/include/coin/CglStored.hpp +140 -0
  512. casadi/include/coin/CglTreeInfo.hpp +216 -0
  513. casadi/include/coin/CglTwomir.hpp +562 -0
  514. casadi/include/coin/CglZeroHalf.hpp +133 -0
  515. casadi/include/coin/ClpAmplObjective.hpp +113 -0
  516. casadi/include/coin/ClpCholeskyBase.hpp +321 -0
  517. casadi/include/coin/ClpCholeskyDense.hpp +157 -0
  518. casadi/include/coin/ClpCholeskyMumps.hpp +65 -0
  519. casadi/include/coin/ClpCholeskyPardiso.hpp +67 -0
  520. casadi/include/coin/ClpConfig.h +17 -0
  521. casadi/include/coin/ClpConstraint.hpp +129 -0
  522. casadi/include/coin/ClpConstraintAmpl.hpp +109 -0
  523. casadi/include/coin/ClpConstraintLinear.hpp +113 -0
  524. casadi/include/coin/ClpConstraintQuadratic.hpp +123 -0
  525. casadi/include/coin/ClpDualRowDantzig.hpp +72 -0
  526. casadi/include/coin/ClpDualRowPivot.hpp +136 -0
  527. casadi/include/coin/ClpDualRowSteepest.hpp +160 -0
  528. casadi/include/coin/ClpDummyMatrix.hpp +186 -0
  529. casadi/include/coin/ClpDynamicExampleMatrix.hpp +199 -0
  530. casadi/include/coin/ClpDynamicMatrix.hpp +420 -0
  531. casadi/include/coin/ClpEventHandler.hpp +193 -0
  532. casadi/include/coin/ClpFactorization.hpp +556 -0
  533. casadi/include/coin/ClpGubDynamicMatrix.hpp +270 -0
  534. casadi/include/coin/ClpGubMatrix.hpp +373 -0
  535. casadi/include/coin/ClpInterior.hpp +622 -0
  536. casadi/include/coin/ClpLinearObjective.hpp +104 -0
  537. casadi/include/coin/ClpMatrixBase.hpp +561 -0
  538. casadi/include/coin/ClpMessage.hpp +131 -0
  539. casadi/include/coin/ClpModel.hpp +1442 -0
  540. casadi/include/coin/ClpNetworkMatrix.hpp +235 -0
  541. casadi/include/coin/ClpNode.hpp +364 -0
  542. casadi/include/coin/ClpNonLinearCost.hpp +432 -0
  543. casadi/include/coin/ClpObjective.hpp +142 -0
  544. casadi/include/coin/ClpPEDualRowDantzig.hpp +84 -0
  545. casadi/include/coin/ClpPEDualRowSteepest.hpp +100 -0
  546. casadi/include/coin/ClpPEPrimalColumnDantzig.hpp +71 -0
  547. casadi/include/coin/ClpPEPrimalColumnSteepest.hpp +107 -0
  548. casadi/include/coin/ClpPESimplex.hpp +231 -0
  549. casadi/include/coin/ClpPackedMatrix.hpp +778 -0
  550. casadi/include/coin/ClpParameters.hpp +132 -0
  551. casadi/include/coin/ClpPdcoBase.hpp +110 -0
  552. casadi/include/coin/ClpPlusMinusOneMatrix.hpp +565 -0
  553. casadi/include/coin/ClpPresolve.hpp +379 -0
  554. casadi/include/coin/ClpPrimalColumnDantzig.hpp +74 -0
  555. casadi/include/coin/ClpPrimalColumnPivot.hpp +163 -0
  556. casadi/include/coin/ClpPrimalColumnSteepest.hpp +281 -0
  557. casadi/include/coin/ClpQuadraticObjective.hpp +161 -0
  558. casadi/include/coin/ClpSimplex.hpp +2137 -0
  559. casadi/include/coin/ClpSimplexDual.hpp +304 -0
  560. casadi/include/coin/ClpSimplexNonlinear.hpp +117 -0
  561. casadi/include/coin/ClpSimplexOther.hpp +282 -0
  562. casadi/include/coin/ClpSimplexPrimal.hpp +244 -0
  563. casadi/include/coin/ClpSolve.hpp +505 -0
  564. casadi/include/coin/Clp_C_Interface.h +554 -0
  565. casadi/include/coin/CoinAlloc.hpp +179 -0
  566. casadi/include/coin/CoinBuild.hpp +159 -0
  567. casadi/include/coin/CoinDenseFactorization.hpp +452 -0
  568. casadi/include/coin/CoinDenseVector.hpp +401 -0
  569. casadi/include/coin/CoinDistance.hpp +51 -0
  570. casadi/include/coin/CoinError.hpp +274 -0
  571. casadi/include/coin/CoinFactorization.hpp +2178 -0
  572. casadi/include/coin/CoinFileIO.hpp +185 -0
  573. casadi/include/coin/CoinFinite.hpp +37 -0
  574. casadi/include/coin/CoinFloatEqual.hpp +204 -0
  575. casadi/include/coin/CoinHelperFunctions.hpp +1270 -0
  576. casadi/include/coin/CoinIndexedVector.hpp +1437 -0
  577. casadi/include/coin/CoinLpIO.hpp +836 -0
  578. casadi/include/coin/CoinMessage.hpp +95 -0
  579. casadi/include/coin/CoinMessageHandler.hpp +717 -0
  580. casadi/include/coin/CoinModel.hpp +1214 -0
  581. casadi/include/coin/CoinModelUseful.hpp +518 -0
  582. casadi/include/coin/CoinMpsIO.hpp +1142 -0
  583. casadi/include/coin/CoinOslFactorization.hpp +287 -0
  584. casadi/include/coin/CoinPackedMatrix.hpp +956 -0
  585. casadi/include/coin/CoinPackedVector.hpp +670 -0
  586. casadi/include/coin/CoinPackedVectorBase.hpp +274 -0
  587. casadi/include/coin/CoinParam.hpp +644 -0
  588. casadi/include/coin/CoinPragma.hpp +29 -0
  589. casadi/include/coin/CoinPresolveDoubleton.hpp +76 -0
  590. casadi/include/coin/CoinPresolveDual.hpp +84 -0
  591. casadi/include/coin/CoinPresolveDupcol.hpp +259 -0
  592. casadi/include/coin/CoinPresolveEmpty.hpp +120 -0
  593. casadi/include/coin/CoinPresolveFixed.hpp +185 -0
  594. casadi/include/coin/CoinPresolveForcing.hpp +69 -0
  595. casadi/include/coin/CoinPresolveImpliedFree.hpp +66 -0
  596. casadi/include/coin/CoinPresolveIsolated.hpp +59 -0
  597. casadi/include/coin/CoinPresolveMatrix.hpp +1996 -0
  598. casadi/include/coin/CoinPresolveMonitor.hpp +105 -0
  599. casadi/include/coin/CoinPresolvePsdebug.hpp +169 -0
  600. casadi/include/coin/CoinPresolveSingleton.hpp +115 -0
  601. casadi/include/coin/CoinPresolveSubst.hpp +103 -0
  602. casadi/include/coin/CoinPresolveTighten.hpp +58 -0
  603. casadi/include/coin/CoinPresolveTripleton.hpp +69 -0
  604. casadi/include/coin/CoinPresolveUseless.hpp +63 -0
  605. casadi/include/coin/CoinPresolveZeros.hpp +65 -0
  606. casadi/include/coin/CoinRational.hpp +43 -0
  607. casadi/include/coin/CoinSearchTree.hpp +523 -0
  608. casadi/include/coin/CoinShallowPackedVector.hpp +149 -0
  609. casadi/include/coin/CoinSignal.hpp +127 -0
  610. casadi/include/coin/CoinSimpFactorization.hpp +432 -0
  611. casadi/include/coin/CoinSmartPtr.hpp +548 -0
  612. casadi/include/coin/CoinSnapshot.hpp +572 -0
  613. casadi/include/coin/CoinSort.hpp +753 -0
  614. casadi/include/coin/CoinStructuredModel.hpp +270 -0
  615. casadi/include/coin/CoinTime.hpp +350 -0
  616. casadi/include/coin/CoinTypes.hpp +67 -0
  617. casadi/include/coin/CoinUtility.hpp +26 -0
  618. casadi/include/coin/CoinUtilsConfig.h +34 -0
  619. casadi/include/coin/CoinWarmStart.hpp +56 -0
  620. casadi/include/coin/CoinWarmStartBasis.hpp +468 -0
  621. casadi/include/coin/CoinWarmStartDual.hpp +180 -0
  622. casadi/include/coin/CoinWarmStartPrimalDual.hpp +233 -0
  623. casadi/include/coin/CoinWarmStartVector.hpp +523 -0
  624. casadi/include/coin/Coin_C_defines.h +149 -0
  625. casadi/include/coin/Idiot.hpp +327 -0
  626. casadi/include/coin/OsiAuxInfo.hpp +261 -0
  627. casadi/include/coin/OsiBranchingObject.hpp +1097 -0
  628. casadi/include/coin/OsiCbcSolverInterface.hpp +791 -0
  629. casadi/include/coin/OsiChooseVariable.hpp +645 -0
  630. casadi/include/coin/OsiClpSolverInterface.hpp +1604 -0
  631. casadi/include/coin/OsiColCut.hpp +322 -0
  632. casadi/include/coin/OsiCollections.hpp +34 -0
  633. casadi/include/coin/OsiConfig.h +19 -0
  634. casadi/include/coin/OsiCut.hpp +251 -0
  635. casadi/include/coin/OsiCuts.hpp +505 -0
  636. casadi/include/coin/OsiPresolve.hpp +272 -0
  637. casadi/include/coin/OsiRowCut.hpp +345 -0
  638. casadi/include/coin/OsiRowCutDebugger.hpp +190 -0
  639. casadi/include/coin/OsiSolverBranch.hpp +169 -0
  640. casadi/include/coin/OsiSolverInterface.hpp +2221 -0
  641. casadi/include/coin/OsiSolverParameters.hpp +144 -0
  642. casadi/include/coin/OsiUnitTests.hpp +390 -0
  643. casadi/include/coin-or/IpAlgBuilder.hpp +417 -0
  644. casadi/include/coin-or/IpAlgStrategy.hpp +201 -0
  645. casadi/include/coin-or/IpAlgTypes.hpp +64 -0
  646. casadi/include/coin-or/IpAugSystemSolver.hpp +212 -0
  647. casadi/include/coin-or/IpBlas.hpp +426 -0
  648. casadi/include/coin-or/IpCachedResults.hpp +897 -0
  649. casadi/include/coin-or/IpCompoundMatrix.hpp +423 -0
  650. casadi/include/coin-or/IpCompoundSymMatrix.hpp +348 -0
  651. casadi/include/coin-or/IpCompoundVector.hpp +395 -0
  652. casadi/include/coin-or/IpConvCheck.hpp +97 -0
  653. casadi/include/coin-or/IpDebug.hpp +167 -0
  654. casadi/include/coin-or/IpDenseVector.hpp +626 -0
  655. casadi/include/coin-or/IpDiagMatrix.hpp +158 -0
  656. casadi/include/coin-or/IpEqMultCalculator.hpp +76 -0
  657. casadi/include/coin-or/IpException.hpp +156 -0
  658. casadi/include/coin-or/IpExpansionMatrix.hpp +245 -0
  659. casadi/include/coin-or/IpGenTMatrix.hpp +290 -0
  660. casadi/include/coin-or/IpHessianUpdater.hpp +73 -0
  661. casadi/include/coin-or/IpIdentityMatrix.hpp +167 -0
  662. casadi/include/coin-or/IpIpoptAlg.hpp +257 -0
  663. casadi/include/coin-or/IpIpoptApplication.hpp +367 -0
  664. casadi/include/coin-or/IpIpoptCalculatedQuantities.hpp +1009 -0
  665. casadi/include/coin-or/IpIpoptData.hpp +966 -0
  666. casadi/include/coin-or/IpIpoptNLP.hpp +328 -0
  667. casadi/include/coin-or/IpIterateInitializer.hpp +68 -0
  668. casadi/include/coin-or/IpIteratesVector.hpp +840 -0
  669. casadi/include/coin-or/IpIterationOutput.hpp +78 -0
  670. casadi/include/coin-or/IpJournalist.hpp +573 -0
  671. casadi/include/coin-or/IpLapack.hpp +227 -0
  672. casadi/include/coin-or/IpLibraryLoader.hpp +76 -0
  673. casadi/include/coin-or/IpLineSearch.hpp +106 -0
  674. casadi/include/coin-or/IpLinearSolvers.h +46 -0
  675. casadi/include/coin-or/IpMatrix.hpp +434 -0
  676. casadi/include/coin-or/IpMuUpdate.hpp +77 -0
  677. casadi/include/coin-or/IpNLP.hpp +306 -0
  678. casadi/include/coin-or/IpNLPScaling.hpp +582 -0
  679. casadi/include/coin-or/IpObserver.hpp +422 -0
  680. casadi/include/coin-or/IpOptionsList.hpp +412 -0
  681. casadi/include/coin-or/IpOrigIpoptNLP.hpp +603 -0
  682. casadi/include/coin-or/IpPDSystemSolver.hpp +137 -0
  683. casadi/include/coin-or/IpReferenced.hpp +262 -0
  684. casadi/include/coin-or/IpRegOptions.hpp +1152 -0
  685. casadi/include/coin-or/IpReturnCodes.h +23 -0
  686. casadi/include/coin-or/IpReturnCodes.hpp +18 -0
  687. casadi/include/coin-or/IpReturnCodes.inc +71 -0
  688. casadi/include/coin-or/IpReturnCodes_inc.h +45 -0
  689. casadi/include/coin-or/IpScaledMatrix.hpp +291 -0
  690. casadi/include/coin-or/IpSearchDirCalculator.hpp +72 -0
  691. casadi/include/coin-or/IpSmartPtr.hpp +865 -0
  692. casadi/include/coin-or/IpSolveStatistics.hpp +210 -0
  693. casadi/include/coin-or/IpSparseSymLinearSolverInterface.hpp +260 -0
  694. casadi/include/coin-or/IpStdAugSystemSolver.cpp +555 -0
  695. casadi/include/coin-or/IpStdCInterface.h +428 -0
  696. casadi/include/coin-or/IpSumSymMatrix.hpp +186 -0
  697. casadi/include/coin-or/IpSymLinearSolver.hpp +141 -0
  698. casadi/include/coin-or/IpSymMatrix.hpp +167 -0
  699. casadi/include/coin-or/IpSymScaledMatrix.hpp +255 -0
  700. casadi/include/coin-or/IpSymTMatrix.hpp +275 -0
  701. casadi/include/coin-or/IpTNLP.hpp +820 -0
  702. casadi/include/coin-or/IpTNLPAdapter.hpp +648 -0
  703. casadi/include/coin-or/IpTNLPReducer.hpp +274 -0
  704. casadi/include/coin-or/IpTaggedObject.hpp +128 -0
  705. casadi/include/coin-or/IpTimedTask.hpp +218 -0
  706. casadi/include/coin-or/IpTimingStatistics.hpp +323 -0
  707. casadi/include/coin-or/IpTripletHelper.hpp +308 -0
  708. casadi/include/coin-or/IpTypes.h +81 -0
  709. casadi/include/coin-or/IpTypes.hpp +30 -0
  710. casadi/include/coin-or/IpUtils.hpp +166 -0
  711. casadi/include/coin-or/IpVector.hpp +892 -0
  712. casadi/include/coin-or/IpZeroSymMatrix.hpp +155 -0
  713. casadi/include/coin-or/IpoptConfig.h +45 -0
  714. casadi/include/coin-or/SensAlgorithm.hpp +114 -0
  715. casadi/include/coin-or/SensApplication.hpp +188 -0
  716. casadi/include/coin-or/SensBacksolver.hpp +36 -0
  717. casadi/include/coin-or/SensMeasurement.hpp +56 -0
  718. casadi/include/coin-or/SensPCalculator.hpp +137 -0
  719. casadi/include/coin-or/SensRegOp.hpp +21 -0
  720. casadi/include/coin-or/SensSchurData.hpp +182 -0
  721. casadi/include/coin-or/SensSchurDriver.hpp +118 -0
  722. casadi/include/coin-or/SensSimpleBacksolver.hpp +49 -0
  723. casadi/include/coin-or/SensStepCalc.hpp +85 -0
  724. casadi/include/coin-or/SensUtils.hpp +63 -0
  725. casadi/include/coin-or/metis/defs.h +161 -0
  726. casadi/include/coin-or/metis/macros.h +143 -0
  727. casadi/include/coin-or/metis/metis.h +37 -0
  728. casadi/include/coin-or/metis/proto.h +505 -0
  729. casadi/include/coin-or/metis/rename.h +418 -0
  730. casadi/include/coin-or/metis/struct.h +251 -0
  731. casadi/include/coin-or/mumps/dmumps_c.h +142 -0
  732. casadi/include/coin-or/mumps/mumps_c_types.h +72 -0
  733. casadi/include/coin-or/mumps/mumps_compat.h +27 -0
  734. casadi/include/coin-or/mumps/mumps_int_def.h +11 -0
  735. casadi/include/coin-or/mumps/mumps_mpi.h +67 -0
  736. casadi/include/d_blas.h +78 -0
  737. casadi/include/d_blas_64.h +73 -0
  738. casadi/include/daqp/api.h +46 -0
  739. casadi/include/daqp/auxiliary.h +29 -0
  740. casadi/include/daqp/bnb.h +32 -0
  741. casadi/include/daqp/codegen.h +18 -0
  742. casadi/include/daqp/constants.h +92 -0
  743. casadi/include/daqp/daqp.h +22 -0
  744. casadi/include/daqp/daqp_prox.h +18 -0
  745. casadi/include/daqp/factorization.h +18 -0
  746. casadi/include/daqp/types.h +161 -0
  747. casadi/include/daqp/utils.h +44 -0
  748. casadi/include/dlfcn.h +94 -0
  749. casadi/include/eigen3/Eigen/Cholesky +45 -0
  750. casadi/include/eigen3/Eigen/CholmodSupport +48 -0
  751. casadi/include/eigen3/Eigen/Core +384 -0
  752. casadi/include/eigen3/Eigen/Dense +7 -0
  753. casadi/include/eigen3/Eigen/Eigen +2 -0
  754. casadi/include/eigen3/Eigen/Eigenvalues +60 -0
  755. casadi/include/eigen3/Eigen/Geometry +59 -0
  756. casadi/include/eigen3/Eigen/Householder +29 -0
  757. casadi/include/eigen3/Eigen/IterativeLinearSolvers +48 -0
  758. casadi/include/eigen3/Eigen/Jacobi +32 -0
  759. casadi/include/eigen3/Eigen/KLUSupport +41 -0
  760. casadi/include/eigen3/Eigen/LU +47 -0
  761. casadi/include/eigen3/Eigen/MetisSupport +35 -0
  762. casadi/include/eigen3/Eigen/OrderingMethods +70 -0
  763. casadi/include/eigen3/Eigen/PaStiXSupport +49 -0
  764. casadi/include/eigen3/Eigen/PardisoSupport +35 -0
  765. casadi/include/eigen3/Eigen/QR +50 -0
  766. casadi/include/eigen3/Eigen/QtAlignedMalloc +39 -0
  767. casadi/include/eigen3/Eigen/SPQRSupport +34 -0
  768. casadi/include/eigen3/Eigen/SVD +50 -0
  769. casadi/include/eigen3/Eigen/Sparse +34 -0
  770. casadi/include/eigen3/Eigen/SparseCholesky +37 -0
  771. casadi/include/eigen3/Eigen/SparseCore +69 -0
  772. casadi/include/eigen3/Eigen/SparseLU +50 -0
  773. casadi/include/eigen3/Eigen/SparseQR +36 -0
  774. casadi/include/eigen3/Eigen/StdDeque +27 -0
  775. casadi/include/eigen3/Eigen/StdList +26 -0
  776. casadi/include/eigen3/Eigen/StdVector +27 -0
  777. casadi/include/eigen3/Eigen/SuperLUSupport +64 -0
  778. casadi/include/eigen3/Eigen/UmfPackSupport +40 -0
  779. casadi/include/eigen3/Eigen/src/Cholesky/LDLT.h +688 -0
  780. casadi/include/eigen3/Eigen/src/Cholesky/LLT.h +558 -0
  781. casadi/include/eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  782. casadi/include/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
  783. casadi/include/eigen3/Eigen/src/Core/ArithmeticSequence.h +413 -0
  784. casadi/include/eigen3/Eigen/src/Core/Array.h +417 -0
  785. casadi/include/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
  786. casadi/include/eigen3/Eigen/src/Core/ArrayWrapper.h +209 -0
  787. casadi/include/eigen3/Eigen/src/Core/Assign.h +90 -0
  788. casadi/include/eigen3/Eigen/src/Core/AssignEvaluator.h +1010 -0
  789. casadi/include/eigen3/Eigen/src/Core/Assign_MKL.h +178 -0
  790. casadi/include/eigen3/Eigen/src/Core/BandMatrix.h +353 -0
  791. casadi/include/eigen3/Eigen/src/Core/Block.h +448 -0
  792. casadi/include/eigen3/Eigen/src/Core/BooleanRedux.h +162 -0
  793. casadi/include/eigen3/Eigen/src/Core/CommaInitializer.h +164 -0
  794. casadi/include/eigen3/Eigen/src/Core/ConditionEstimator.h +175 -0
  795. casadi/include/eigen3/Eigen/src/Core/CoreEvaluators.h +1741 -0
  796. casadi/include/eigen3/Eigen/src/Core/CoreIterators.h +132 -0
  797. casadi/include/eigen3/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  798. casadi/include/eigen3/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  799. casadi/include/eigen3/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  800. casadi/include/eigen3/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  801. casadi/include/eigen3/Eigen/src/Core/CwiseUnaryView.h +132 -0
  802. casadi/include/eigen3/Eigen/src/Core/DenseBase.h +701 -0
  803. casadi/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  804. casadi/include/eigen3/Eigen/src/Core/DenseStorage.h +652 -0
  805. casadi/include/eigen3/Eigen/src/Core/Diagonal.h +258 -0
  806. casadi/include/eigen3/Eigen/src/Core/DiagonalMatrix.h +391 -0
  807. casadi/include/eigen3/Eigen/src/Core/DiagonalProduct.h +28 -0
  808. casadi/include/eigen3/Eigen/src/Core/Dot.h +318 -0
  809. casadi/include/eigen3/Eigen/src/Core/EigenBase.h +160 -0
  810. casadi/include/eigen3/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  811. casadi/include/eigen3/Eigen/src/Core/Fuzzy.h +155 -0
  812. casadi/include/eigen3/Eigen/src/Core/GeneralProduct.h +465 -0
  813. casadi/include/eigen3/Eigen/src/Core/GenericPacketMath.h +1040 -0
  814. casadi/include/eigen3/Eigen/src/Core/GlobalFunctions.h +194 -0
  815. casadi/include/eigen3/Eigen/src/Core/IO.h +258 -0
  816. casadi/include/eigen3/Eigen/src/Core/IndexedView.h +237 -0
  817. casadi/include/eigen3/Eigen/src/Core/Inverse.h +117 -0
  818. casadi/include/eigen3/Eigen/src/Core/Map.h +171 -0
  819. casadi/include/eigen3/Eigen/src/Core/MapBase.h +310 -0
  820. casadi/include/eigen3/Eigen/src/Core/MathFunctions.h +2057 -0
  821. casadi/include/eigen3/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  822. casadi/include/eigen3/Eigen/src/Core/Matrix.h +565 -0
  823. casadi/include/eigen3/Eigen/src/Core/MatrixBase.h +547 -0
  824. casadi/include/eigen3/Eigen/src/Core/NestByValue.h +85 -0
  825. casadi/include/eigen3/Eigen/src/Core/NoAlias.h +109 -0
  826. casadi/include/eigen3/Eigen/src/Core/NumTraits.h +335 -0
  827. casadi/include/eigen3/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  828. casadi/include/eigen3/Eigen/src/Core/PermutationMatrix.h +605 -0
  829. casadi/include/eigen3/Eigen/src/Core/PlainObjectBase.h +1128 -0
  830. casadi/include/eigen3/Eigen/src/Core/Product.h +191 -0
  831. casadi/include/eigen3/Eigen/src/Core/ProductEvaluators.h +1179 -0
  832. casadi/include/eigen3/Eigen/src/Core/Random.h +218 -0
  833. casadi/include/eigen3/Eigen/src/Core/Redux.h +515 -0
  834. casadi/include/eigen3/Eigen/src/Core/Ref.h +381 -0
  835. casadi/include/eigen3/Eigen/src/Core/Replicate.h +142 -0
  836. casadi/include/eigen3/Eigen/src/Core/Reshaped.h +454 -0
  837. casadi/include/eigen3/Eigen/src/Core/ReturnByValue.h +119 -0
  838. casadi/include/eigen3/Eigen/src/Core/Reverse.h +217 -0
  839. casadi/include/eigen3/Eigen/src/Core/Select.h +164 -0
  840. casadi/include/eigen3/Eigen/src/Core/SelfAdjointView.h +365 -0
  841. casadi/include/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  842. casadi/include/eigen3/Eigen/src/Core/Solve.h +188 -0
  843. casadi/include/eigen3/Eigen/src/Core/SolveTriangular.h +235 -0
  844. casadi/include/eigen3/Eigen/src/Core/SolverBase.h +168 -0
  845. casadi/include/eigen3/Eigen/src/Core/StableNorm.h +251 -0
  846. casadi/include/eigen3/Eigen/src/Core/StlIterators.h +463 -0
  847. casadi/include/eigen3/Eigen/src/Core/Stride.h +116 -0
  848. casadi/include/eigen3/Eigen/src/Core/Swap.h +68 -0
  849. casadi/include/eigen3/Eigen/src/Core/Transpose.h +464 -0
  850. casadi/include/eigen3/Eigen/src/Core/Transpositions.h +386 -0
  851. casadi/include/eigen3/Eigen/src/Core/TriangularMatrix.h +1001 -0
  852. casadi/include/eigen3/Eigen/src/Core/VectorBlock.h +96 -0
  853. casadi/include/eigen3/Eigen/src/Core/VectorwiseOp.h +784 -0
  854. casadi/include/eigen3/Eigen/src/Core/Visitor.h +381 -0
  855. casadi/include/eigen3/Eigen/src/Core/arch/AVX/Complex.h +372 -0
  856. casadi/include/eigen3/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  857. casadi/include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
  858. casadi/include/eigen3/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  859. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  860. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
  861. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
  862. casadi/include/eigen3/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  863. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
  864. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
  865. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  866. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  867. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  868. casadi/include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
  869. casadi/include/eigen3/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
  870. casadi/include/eigen3/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  871. casadi/include/eigen3/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  872. casadi/include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  873. casadi/include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  874. casadi/include/eigen3/Eigen/src/Core/arch/Default/Half.h +942 -0
  875. casadi/include/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
  876. casadi/include/eigen3/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  877. casadi/include/eigen3/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  878. casadi/include/eigen3/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  879. casadi/include/eigen3/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  880. casadi/include/eigen3/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  881. casadi/include/eigen3/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  882. casadi/include/eigen3/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  883. casadi/include/eigen3/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  884. casadi/include/eigen3/Eigen/src/Core/arch/NEON/Complex.h +584 -0
  885. casadi/include/eigen3/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  886. casadi/include/eigen3/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  887. casadi/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
  888. casadi/include/eigen3/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  889. casadi/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h +351 -0
  890. casadi/include/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  891. casadi/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  892. casadi/include/eigen3/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  893. casadi/include/eigen3/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  894. casadi/include/eigen3/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  895. casadi/include/eigen3/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  896. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  897. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  898. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  899. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  900. casadi/include/eigen3/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  901. casadi/include/eigen3/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
  902. casadi/include/eigen3/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  903. casadi/include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  904. casadi/include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  905. casadi/include/eigen3/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  906. casadi/include/eigen3/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  907. casadi/include/eigen3/Eigen/src/Core/functors/StlFunctors.h +166 -0
  908. casadi/include/eigen3/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  909. casadi/include/eigen3/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  910. casadi/include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  911. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  912. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
  913. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  914. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  915. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
  916. casadi/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  917. casadi/include/eigen3/Eigen/src/Core/products/Parallelizer.h +180 -0
  918. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  919. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  920. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  921. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  922. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  923. casadi/include/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  924. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  925. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  926. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  927. casadi/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  928. casadi/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  929. casadi/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  930. casadi/include/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  931. casadi/include/eigen3/Eigen/src/Core/util/BlasUtil.h +583 -0
  932. casadi/include/eigen3/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  933. casadi/include/eigen3/Eigen/src/Core/util/Constants.h +563 -0
  934. casadi/include/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
  935. casadi/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  936. casadi/include/eigen3/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  937. casadi/include/eigen3/Eigen/src/Core/util/IntegralConstant.h +272 -0
  938. casadi/include/eigen3/Eigen/src/Core/util/MKL_support.h +137 -0
  939. casadi/include/eigen3/Eigen/src/Core/util/Macros.h +1464 -0
  940. casadi/include/eigen3/Eigen/src/Core/util/Memory.h +1163 -0
  941. casadi/include/eigen3/Eigen/src/Core/util/Meta.h +812 -0
  942. casadi/include/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
  943. casadi/include/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  944. casadi/include/eigen3/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  945. casadi/include/eigen3/Eigen/src/Core/util/StaticAssert.h +221 -0
  946. casadi/include/eigen3/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  947. casadi/include/eigen3/Eigen/src/Core/util/XprHelper.h +856 -0
  948. casadi/include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
  949. casadi/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  950. casadi/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  951. casadi/include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  952. casadi/include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
  953. casadi/include/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  954. casadi/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  955. casadi/include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  956. casadi/include/eigen3/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  957. casadi/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h +558 -0
  958. casadi/include/eigen3/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  959. casadi/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  960. casadi/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  961. casadi/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
  962. casadi/include/eigen3/Eigen/src/Geometry/AlignedBox.h +486 -0
  963. casadi/include/eigen3/Eigen/src/Geometry/AngleAxis.h +247 -0
  964. casadi/include/eigen3/Eigen/src/Geometry/EulerAngles.h +114 -0
  965. casadi/include/eigen3/Eigen/src/Geometry/Homogeneous.h +501 -0
  966. casadi/include/eigen3/Eigen/src/Geometry/Hyperplane.h +282 -0
  967. casadi/include/eigen3/Eigen/src/Geometry/OrthoMethods.h +235 -0
  968. casadi/include/eigen3/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  969. casadi/include/eigen3/Eigen/src/Geometry/Quaternion.h +870 -0
  970. casadi/include/eigen3/Eigen/src/Geometry/Rotation2D.h +199 -0
  971. casadi/include/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
  972. casadi/include/eigen3/Eigen/src/Geometry/Scaling.h +188 -0
  973. casadi/include/eigen3/Eigen/src/Geometry/Transform.h +1563 -0
  974. casadi/include/eigen3/Eigen/src/Geometry/Translation.h +202 -0
  975. casadi/include/eigen3/Eigen/src/Geometry/Umeyama.h +166 -0
  976. casadi/include/eigen3/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  977. casadi/include/eigen3/Eigen/src/Householder/BlockHouseholder.h +110 -0
  978. casadi/include/eigen3/Eigen/src/Householder/Householder.h +176 -0
  979. casadi/include/eigen3/Eigen/src/Householder/HouseholderSequence.h +545 -0
  980. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
  981. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
  982. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
  983. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
  984. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
  985. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
  986. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
  987. casadi/include/eigen3/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
  988. casadi/include/eigen3/Eigen/src/Jacobi/Jacobi.h +483 -0
  989. casadi/include/eigen3/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  990. casadi/include/eigen3/Eigen/src/LU/Determinant.h +117 -0
  991. casadi/include/eigen3/Eigen/src/LU/FullPivLU.h +877 -0
  992. casadi/include/eigen3/Eigen/src/LU/InverseImpl.h +432 -0
  993. casadi/include/eigen3/Eigen/src/LU/PartialPivLU.h +624 -0
  994. casadi/include/eigen3/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  995. casadi/include/eigen3/Eigen/src/LU/arch/InverseSize4.h +351 -0
  996. casadi/include/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  997. casadi/include/eigen3/Eigen/src/OrderingMethods/Amd.h +435 -0
  998. casadi/include/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
  999. casadi/include/eigen3/Eigen/src/OrderingMethods/Ordering.h +153 -0
  1000. casadi/include/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
  1001. casadi/include/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
  1002. casadi/include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  1003. casadi/include/eigen3/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  1004. casadi/include/eigen3/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  1005. casadi/include/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  1006. casadi/include/eigen3/Eigen/src/QR/HouseholderQR.h +434 -0
  1007. casadi/include/eigen3/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  1008. casadi/include/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
  1009. casadi/include/eigen3/Eigen/src/SVD/BDCSVD.h +1366 -0
  1010. casadi/include/eigen3/Eigen/src/SVD/JacobiSVD.h +812 -0
  1011. casadi/include/eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  1012. casadi/include/eigen3/Eigen/src/SVD/SVDBase.h +376 -0
  1013. casadi/include/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
  1014. casadi/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
  1015. casadi/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
  1016. casadi/include/eigen3/Eigen/src/SparseCore/AmbiVector.h +378 -0
  1017. casadi/include/eigen3/Eigen/src/SparseCore/CompressedStorage.h +274 -0
  1018. casadi/include/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
  1019. casadi/include/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
  1020. casadi/include/eigen3/Eigen/src/SparseCore/SparseAssign.h +270 -0
  1021. casadi/include/eigen3/Eigen/src/SparseCore/SparseBlock.h +571 -0
  1022. casadi/include/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  1023. casadi/include/eigen3/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
  1024. casadi/include/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
  1025. casadi/include/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
  1026. casadi/include/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
  1027. casadi/include/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
  1028. casadi/include/eigen3/Eigen/src/SparseCore/SparseDot.h +98 -0
  1029. casadi/include/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
  1030. casadi/include/eigen3/Eigen/src/SparseCore/SparseMap.h +305 -0
  1031. casadi/include/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
  1032. casadi/include/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
  1033. casadi/include/eigen3/Eigen/src/SparseCore/SparsePermutation.h +178 -0
  1034. casadi/include/eigen3/Eigen/src/SparseCore/SparseProduct.h +181 -0
  1035. casadi/include/eigen3/Eigen/src/SparseCore/SparseRedux.h +49 -0
  1036. casadi/include/eigen3/Eigen/src/SparseCore/SparseRef.h +397 -0
  1037. casadi/include/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
  1038. casadi/include/eigen3/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
  1039. casadi/include/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
  1040. casadi/include/eigen3/Eigen/src/SparseCore/SparseTranspose.h +92 -0
  1041. casadi/include/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
  1042. casadi/include/eigen3/Eigen/src/SparseCore/SparseUtil.h +186 -0
  1043. casadi/include/eigen3/Eigen/src/SparseCore/SparseVector.h +478 -0
  1044. casadi/include/eigen3/Eigen/src/SparseCore/SparseView.h +254 -0
  1045. casadi/include/eigen3/Eigen/src/SparseCore/TriangularSolver.h +315 -0
  1046. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU.h +923 -0
  1047. casadi/include/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  1048. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
  1049. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
  1050. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
  1051. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  1052. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
  1053. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
  1054. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
  1055. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
  1056. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
  1057. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
  1058. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
  1059. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  1060. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  1061. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
  1062. casadi/include/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  1063. casadi/include/eigen3/Eigen/src/SparseQR/SparseQR.h +758 -0
  1064. casadi/include/eigen3/Eigen/src/StlSupport/StdDeque.h +116 -0
  1065. casadi/include/eigen3/Eigen/src/StlSupport/StdList.h +106 -0
  1066. casadi/include/eigen3/Eigen/src/StlSupport/StdVector.h +131 -0
  1067. casadi/include/eigen3/Eigen/src/StlSupport/details.h +84 -0
  1068. casadi/include/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
  1069. casadi/include/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
  1070. casadi/include/eigen3/Eigen/src/misc/Image.h +82 -0
  1071. casadi/include/eigen3/Eigen/src/misc/Kernel.h +79 -0
  1072. casadi/include/eigen3/Eigen/src/misc/RealSvd2x2.h +55 -0
  1073. casadi/include/eigen3/Eigen/src/misc/blas.h +440 -0
  1074. casadi/include/eigen3/Eigen/src/misc/lapack.h +152 -0
  1075. casadi/include/eigen3/Eigen/src/misc/lapacke.h +16292 -0
  1076. casadi/include/eigen3/Eigen/src/misc/lapacke_mangling.h +17 -0
  1077. casadi/include/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
  1078. casadi/include/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  1079. casadi/include/eigen3/Eigen/src/plugins/BlockMethods.h +1442 -0
  1080. casadi/include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  1081. casadi/include/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  1082. casadi/include/eigen3/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  1083. casadi/include/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
  1084. casadi/include/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  1085. casadi/include/eigen3/Eigen/src/plugins/ReshapedMethods.h +149 -0
  1086. casadi/include/eigen3/signature_of_eigen3_matrix_library +1 -0
  1087. casadi/include/eigen3/unsupported/Eigen/AdolcForward +159 -0
  1088. casadi/include/eigen3/unsupported/Eigen/AlignedVector3 +234 -0
  1089. casadi/include/eigen3/unsupported/Eigen/ArpackSupport +30 -0
  1090. casadi/include/eigen3/unsupported/Eigen/AutoDiff +46 -0
  1091. casadi/include/eigen3/unsupported/Eigen/BVH +95 -0
  1092. casadi/include/eigen3/unsupported/Eigen/CXX11/Tensor +137 -0
  1093. casadi/include/eigen3/unsupported/Eigen/CXX11/TensorSymmetry +42 -0
  1094. casadi/include/eigen3/unsupported/Eigen/CXX11/ThreadPool +74 -0
  1095. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +554 -0
  1096. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +329 -0
  1097. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +247 -0
  1098. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +1176 -0
  1099. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +1559 -0
  1100. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +1093 -0
  1101. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +518 -0
  1102. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +377 -0
  1103. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +1023 -0
  1104. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +73 -0
  1105. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +6 -0
  1106. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +1413 -0
  1107. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +575 -0
  1108. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +1650 -0
  1109. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +1679 -0
  1110. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +456 -0
  1111. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +1132 -0
  1112. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +544 -0
  1113. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +214 -0
  1114. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +347 -0
  1115. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +137 -0
  1116. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +6 -0
  1117. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +104 -0
  1118. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +389 -0
  1119. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +1048 -0
  1120. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +409 -0
  1121. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +236 -0
  1122. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +490 -0
  1123. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +236 -0
  1124. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +983 -0
  1125. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +703 -0
  1126. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +388 -0
  1127. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +669 -0
  1128. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +379 -0
  1129. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +237 -0
  1130. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +191 -0
  1131. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +488 -0
  1132. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +302 -0
  1133. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +33 -0
  1134. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +99 -0
  1135. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +44 -0
  1136. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +79 -0
  1137. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +603 -0
  1138. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +738 -0
  1139. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +247 -0
  1140. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +82 -0
  1141. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +263 -0
  1142. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +216 -0
  1143. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +98 -0
  1144. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +327 -0
  1145. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +311 -0
  1146. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +1102 -0
  1147. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +708 -0
  1148. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +291 -0
  1149. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +322 -0
  1150. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +998 -0
  1151. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +6 -0
  1152. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +966 -0
  1153. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +582 -0
  1154. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +454 -0
  1155. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +465 -0
  1156. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +528 -0
  1157. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +513 -0
  1158. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +471 -0
  1159. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +161 -0
  1160. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +346 -0
  1161. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +303 -0
  1162. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +264 -0
  1163. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +249 -0
  1164. casadi/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +629 -0
  1165. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +293 -0
  1166. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +236 -0
  1167. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +338 -0
  1168. casadi/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +669 -0
  1169. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +67 -0
  1170. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +249 -0
  1171. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +486 -0
  1172. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +236 -0
  1173. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +23 -0
  1174. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +40 -0
  1175. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +301 -0
  1176. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +48 -0
  1177. casadi/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +20 -0
  1178. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +537 -0
  1179. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +88 -0
  1180. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateArray.h +261 -0
  1181. casadi/include/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +158 -0
  1182. casadi/include/eigen3/unsupported/Eigen/EulerAngles +43 -0
  1183. casadi/include/eigen3/unsupported/Eigen/FFT +419 -0
  1184. casadi/include/eigen3/unsupported/Eigen/IterativeSolvers +51 -0
  1185. casadi/include/eigen3/unsupported/Eigen/KroneckerProduct +36 -0
  1186. casadi/include/eigen3/unsupported/Eigen/LevenbergMarquardt +49 -0
  1187. casadi/include/eigen3/unsupported/Eigen/MPRealSupport +213 -0
  1188. casadi/include/eigen3/unsupported/Eigen/MatrixFunctions +504 -0
  1189. casadi/include/eigen3/unsupported/Eigen/MoreVectorization +24 -0
  1190. casadi/include/eigen3/unsupported/Eigen/NonLinearOptimization +140 -0
  1191. casadi/include/eigen3/unsupported/Eigen/NumericalDiff +56 -0
  1192. casadi/include/eigen3/unsupported/Eigen/OpenGLSupport +322 -0
  1193. casadi/include/eigen3/unsupported/Eigen/Polynomials +137 -0
  1194. casadi/include/eigen3/unsupported/Eigen/Skyline +39 -0
  1195. casadi/include/eigen3/unsupported/Eigen/SparseExtra +54 -0
  1196. casadi/include/eigen3/unsupported/Eigen/SpecialFunctions +103 -0
  1197. casadi/include/eigen3/unsupported/Eigen/Splines +35 -0
  1198. casadi/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +108 -0
  1199. casadi/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +730 -0
  1200. casadi/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +220 -0
  1201. casadi/include/eigen3/unsupported/Eigen/src/BVH/BVAlgorithms.h +293 -0
  1202. casadi/include/eigen3/unsupported/Eigen/src/BVH/KdBVH.h +223 -0
  1203. casadi/include/eigen3/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +790 -0
  1204. casadi/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerAngles.h +355 -0
  1205. casadi/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerSystem.h +305 -0
  1206. casadi/include/eigen3/unsupported/Eigen/src/FFT/ei_fftw_impl.h +261 -0
  1207. casadi/include/eigen3/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +449 -0
  1208. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +187 -0
  1209. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +511 -0
  1210. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/GMRES.h +335 -0
  1211. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IDRS.h +436 -0
  1212. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +90 -0
  1213. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IterationController.h +154 -0
  1214. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/MINRES.h +267 -0
  1215. casadi/include/eigen3/unsupported/Eigen/src/IterativeSolvers/Scaling.h +193 -0
  1216. casadi/include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +305 -0
  1217. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +84 -0
  1218. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +202 -0
  1219. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +160 -0
  1220. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +188 -0
  1221. casadi/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +396 -0
  1222. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +441 -0
  1223. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +569 -0
  1224. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +373 -0
  1225. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +705 -0
  1226. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +368 -0
  1227. casadi/include/eigen3/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +117 -0
  1228. casadi/include/eigen3/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +95 -0
  1229. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +601 -0
  1230. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +657 -0
  1231. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/chkder.h +66 -0
  1232. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/covar.h +70 -0
  1233. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +107 -0
  1234. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +79 -0
  1235. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +298 -0
  1236. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +91 -0
  1237. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +30 -0
  1238. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +99 -0
  1239. casadi/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +49 -0
  1240. casadi/include/eigen3/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +130 -0
  1241. casadi/include/eigen3/unsupported/Eigen/src/Polynomials/Companion.h +280 -0
  1242. casadi/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +428 -0
  1243. casadi/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +143 -0
  1244. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +352 -0
  1245. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrix.h +862 -0
  1246. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +212 -0
  1247. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineProduct.h +295 -0
  1248. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h +259 -0
  1249. casadi/include/eigen3/unsupported/Eigen/src/Skyline/SkylineUtil.h +89 -0
  1250. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +122 -0
  1251. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +1079 -0
  1252. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +404 -0
  1253. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h +282 -0
  1254. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +247 -0
  1255. casadi/include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h +349 -0
  1256. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +286 -0
  1257. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +68 -0
  1258. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +357 -0
  1259. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +66 -0
  1260. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +1959 -0
  1261. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +118 -0
  1262. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +67 -0
  1263. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +167 -0
  1264. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +58 -0
  1265. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +330 -0
  1266. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +58 -0
  1267. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +2045 -0
  1268. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +79 -0
  1269. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +46 -0
  1270. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +16 -0
  1271. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +46 -0
  1272. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +16 -0
  1273. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +369 -0
  1274. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +54 -0
  1275. casadi/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +34 -0
  1276. casadi/include/eigen3/unsupported/Eigen/src/Splines/Spline.h +507 -0
  1277. casadi/include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h +431 -0
  1278. casadi/include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h +93 -0
  1279. casadi/include/fatrop/auxiliary/Common.hpp +34 -0
  1280. casadi/include/fatrop/auxiliary/DynamicLib.hpp +34 -0
  1281. casadi/include/fatrop/auxiliary/FatropOptions.hpp +68 -0
  1282. casadi/include/fatrop/auxiliary/FatropVector.hpp +143 -0
  1283. casadi/include/fatrop/auxiliary/LinearAlgebra.hpp +88 -0
  1284. casadi/include/fatrop/auxiliary/VectorUtils.hpp +54 -0
  1285. casadi/include/fatrop/blasfeo_wrapper/LinearAlgebraBlasfeo.hpp +496 -0
  1286. casadi/include/fatrop/fatrop.hpp +39 -0
  1287. casadi/include/fatrop/function_evaluation/CasadiCodegen.hpp +104 -0
  1288. casadi/include/fatrop/function_evaluation/FunctionEvaluation.hpp +60 -0
  1289. casadi/include/fatrop/json/json.h +946 -0
  1290. casadi/include/fatrop/ocp/CasadiCApiUserdataWrap.hpp +87 -0
  1291. casadi/include/fatrop/ocp/DuInfEvaluator.hpp +38 -0
  1292. casadi/include/fatrop/ocp/FatropOCP.hpp +161 -0
  1293. casadi/include/fatrop/ocp/FatropOCPBuilder.hpp +52 -0
  1294. casadi/include/fatrop/ocp/FatropOCPResto.hpp +299 -0
  1295. casadi/include/fatrop/ocp/OCP.hpp +82 -0
  1296. casadi/include/fatrop/ocp/OCPAbstract.hpp +254 -0
  1297. casadi/include/fatrop/ocp/OCPAdapter.hpp +197 -0
  1298. casadi/include/fatrop/ocp/OCPCInterface.h +289 -0
  1299. casadi/include/fatrop/ocp/OCPDims.hpp +60 -0
  1300. casadi/include/fatrop/ocp/OCPInitializer.hpp +41 -0
  1301. casadi/include/fatrop/ocp/OCPKKT.hpp +69 -0
  1302. casadi/include/fatrop/ocp/OCPLSRiccati.hpp +198 -0
  1303. casadi/include/fatrop/ocp/OCPLSScaler.hpp +66 -0
  1304. casadi/include/fatrop/ocp/OCPLinearSolver.hpp +75 -0
  1305. casadi/include/fatrop/ocp/OCPNoScaling.hpp +42 -0
  1306. casadi/include/fatrop/ocp/OCPScalingMethod.hpp +42 -0
  1307. casadi/include/fatrop/ocp/StageOCP.hpp +592 -0
  1308. casadi/include/fatrop/ocp/StageOCPApplication.hpp +242 -0
  1309. casadi/include/fatrop/ocp/StageOCPExpressions.hpp +182 -0
  1310. casadi/include/fatrop/ocp/UStageEvalAbstract.hpp +168 -0
  1311. casadi/include/fatrop/ocp/UStageOCPImpl.hpp +152 -0
  1312. casadi/include/fatrop/quasi_newton/bfgs.hpp +159 -0
  1313. casadi/include/fatrop/solver/AlgBuilder.hpp +76 -0
  1314. casadi/include/fatrop/solver/AlgStrategy.hpp +33 -0
  1315. casadi/include/fatrop/solver/FatropAlg.hpp +121 -0
  1316. casadi/include/fatrop/solver/FatropData.hpp +188 -0
  1317. casadi/include/fatrop/solver/FatropOptions.hpp +95 -0
  1318. casadi/include/fatrop/solver/FatropPrinter.hpp +65 -0
  1319. casadi/include/fatrop/solver/FatropStats.hpp +63 -0
  1320. casadi/include/fatrop/solver/Filter.hpp +54 -0
  1321. casadi/include/fatrop/solver/IterationData.hpp +56 -0
  1322. casadi/include/fatrop/solver/LineSearch.hpp +86 -0
  1323. casadi/include/fatrop/solver/NLPL1.hpp +263 -0
  1324. casadi/include/fatrop/templates/NLPAlg.hpp +104 -0
  1325. casadi/include/ghc/filesystem.hpp +6083 -0
  1326. casadi/include/ghc/fs_fwd.hpp +38 -0
  1327. casadi/include/ghc/fs_impl.hpp +35 -0
  1328. casadi/include/ghc/fs_std.hpp +60 -0
  1329. casadi/include/ghc/fs_std_fwd.hpp +63 -0
  1330. casadi/include/ghc/fs_std_impl.hpp +46 -0
  1331. casadi/include/highs/HConfig.h +23 -0
  1332. casadi/include/highs/Highs.h +1703 -0
  1333. casadi/include/highs/filereaderlp/builder.hpp +25 -0
  1334. casadi/include/highs/filereaderlp/def.hpp +19 -0
  1335. casadi/include/highs/filereaderlp/model.hpp +68 -0
  1336. casadi/include/highs/filereaderlp/reader.hpp +10 -0
  1337. casadi/include/highs/interfaces/highs_c_api.h +2456 -0
  1338. casadi/include/highs/io/Filereader.h +45 -0
  1339. casadi/include/highs/io/FilereaderEms.h +30 -0
  1340. casadi/include/highs/io/FilereaderLp.h +51 -0
  1341. casadi/include/highs/io/FilereaderMps.h +27 -0
  1342. casadi/include/highs/io/HMPSIO.h +78 -0
  1343. casadi/include/highs/io/HMpsFF.h +238 -0
  1344. casadi/include/highs/io/HighsIO.h +114 -0
  1345. casadi/include/highs/io/LoadOptions.h +24 -0
  1346. casadi/include/highs/ipm/IpxSolution.h +32 -0
  1347. casadi/include/highs/ipm/IpxWrapper.h +70 -0
  1348. casadi/include/highs/ipm/basiclu/basiclu.h +161 -0
  1349. casadi/include/highs/ipm/basiclu/basiclu_factorize.h +247 -0
  1350. casadi/include/highs/ipm/basiclu/basiclu_get_factors.h +108 -0
  1351. casadi/include/highs/ipm/basiclu/basiclu_initialize.h +119 -0
  1352. casadi/include/highs/ipm/basiclu/basiclu_obj_factorize.h +34 -0
  1353. casadi/include/highs/ipm/basiclu/basiclu_obj_free.h +19 -0
  1354. casadi/include/highs/ipm/basiclu/basiclu_obj_get_factors.h +34 -0
  1355. casadi/include/highs/ipm/basiclu/basiclu_obj_initialize.h +46 -0
  1356. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_dense.h +29 -0
  1357. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_for_update.h +42 -0
  1358. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_sparse.h +32 -0
  1359. casadi/include/highs/ipm/basiclu/basiclu_obj_update.h +31 -0
  1360. casadi/include/highs/ipm/basiclu/basiclu_object.h +30 -0
  1361. casadi/include/highs/ipm/basiclu/basiclu_solve_dense.h +75 -0
  1362. casadi/include/highs/ipm/basiclu/basiclu_solve_for_update.h +169 -0
  1363. casadi/include/highs/ipm/basiclu/basiclu_solve_sparse.h +112 -0
  1364. casadi/include/highs/ipm/basiclu/basiclu_update.h +125 -0
  1365. casadi/include/highs/ipm/basiclu/lu_def.h +39 -0
  1366. casadi/include/highs/ipm/basiclu/lu_file.h +21 -0
  1367. casadi/include/highs/ipm/basiclu/lu_internal.h +220 -0
  1368. casadi/include/highs/ipm/basiclu/lu_list.h +168 -0
  1369. casadi/include/highs/ipm/ipx/basiclu_kernel.h +20 -0
  1370. casadi/include/highs/ipm/ipx/basiclu_wrapper.h +47 -0
  1371. casadi/include/highs/ipm/ipx/basis.h +351 -0
  1372. casadi/include/highs/ipm/ipx/conjugate_residuals.h +74 -0
  1373. casadi/include/highs/ipm/ipx/control.h +164 -0
  1374. casadi/include/highs/ipm/ipx/crossover.h +157 -0
  1375. casadi/include/highs/ipm/ipx/diagonal_precond.h +45 -0
  1376. casadi/include/highs/ipm/ipx/forrest_tomlin.h +102 -0
  1377. casadi/include/highs/ipm/ipx/guess_basis.h +21 -0
  1378. casadi/include/highs/ipm/ipx/indexed_vector.h +113 -0
  1379. casadi/include/highs/ipm/ipx/info.h +27 -0
  1380. casadi/include/highs/ipm/ipx/ipm.h +94 -0
  1381. casadi/include/highs/ipm/ipx/ipx_c.h +47 -0
  1382. casadi/include/highs/ipm/ipx/ipx_config.h +9 -0
  1383. casadi/include/highs/ipm/ipx/ipx_info.h +111 -0
  1384. casadi/include/highs/ipm/ipx/ipx_internal.h +88 -0
  1385. casadi/include/highs/ipm/ipx/ipx_parameters.h +76 -0
  1386. casadi/include/highs/ipm/ipx/ipx_status.h +57 -0
  1387. casadi/include/highs/ipm/ipx/iterate.h +328 -0
  1388. casadi/include/highs/ipm/ipx/kkt_solver.h +70 -0
  1389. casadi/include/highs/ipm/ipx/kkt_solver_basis.h +66 -0
  1390. casadi/include/highs/ipm/ipx/kkt_solver_diag.h +48 -0
  1391. casadi/include/highs/ipm/ipx/linear_operator.h +26 -0
  1392. casadi/include/highs/ipm/ipx/lp_solver.h +202 -0
  1393. casadi/include/highs/ipm/ipx/lu_factorization.h +79 -0
  1394. casadi/include/highs/ipm/ipx/lu_update.h +129 -0
  1395. casadi/include/highs/ipm/ipx/maxvolume.h +54 -0
  1396. casadi/include/highs/ipm/ipx/model.h +413 -0
  1397. casadi/include/highs/ipm/ipx/multistream.h +52 -0
  1398. casadi/include/highs/ipm/ipx/normal_matrix.h +44 -0
  1399. casadi/include/highs/ipm/ipx/power_method.h +44 -0
  1400. casadi/include/highs/ipm/ipx/sparse_matrix.h +195 -0
  1401. casadi/include/highs/ipm/ipx/sparse_utils.h +58 -0
  1402. casadi/include/highs/ipm/ipx/splitted_normal_matrix.h +63 -0
  1403. casadi/include/highs/ipm/ipx/starting_basis.h +39 -0
  1404. casadi/include/highs/ipm/ipx/symbolic_invert.h +29 -0
  1405. casadi/include/highs/ipm/ipx/timer.h +24 -0
  1406. casadi/include/highs/ipm/ipx/utils.h +39 -0
  1407. casadi/include/highs/lp_data/HConst.h +320 -0
  1408. casadi/include/highs/lp_data/HStruct.h +182 -0
  1409. casadi/include/highs/lp_data/HighsAnalysis.h +23 -0
  1410. casadi/include/highs/lp_data/HighsCallback.h +47 -0
  1411. casadi/include/highs/lp_data/HighsCallbackStruct.h +62 -0
  1412. casadi/include/highs/lp_data/HighsDebug.h +34 -0
  1413. casadi/include/highs/lp_data/HighsIis.h +62 -0
  1414. casadi/include/highs/lp_data/HighsInfo.h +329 -0
  1415. casadi/include/highs/lp_data/HighsInfoDebug.h +27 -0
  1416. casadi/include/highs/lp_data/HighsLp.h +100 -0
  1417. casadi/include/highs/lp_data/HighsLpSolverObject.h +45 -0
  1418. casadi/include/highs/lp_data/HighsLpUtils.h +298 -0
  1419. casadi/include/highs/lp_data/HighsModelUtils.h +112 -0
  1420. casadi/include/highs/lp_data/HighsOptions.h +1469 -0
  1421. casadi/include/highs/lp_data/HighsRanging.h +43 -0
  1422. casadi/include/highs/lp_data/HighsSolution.h +144 -0
  1423. casadi/include/highs/lp_data/HighsSolutionDebug.h +87 -0
  1424. casadi/include/highs/lp_data/HighsSolve.h +23 -0
  1425. casadi/include/highs/lp_data/HighsStatus.h +29 -0
  1426. casadi/include/highs/mip/HighsCliqueTable.h +318 -0
  1427. casadi/include/highs/mip/HighsConflictPool.h +109 -0
  1428. casadi/include/highs/mip/HighsCutGeneration.h +106 -0
  1429. casadi/include/highs/mip/HighsCutPool.h +168 -0
  1430. casadi/include/highs/mip/HighsDebugSol.h +132 -0
  1431. casadi/include/highs/mip/HighsDomain.h +653 -0
  1432. casadi/include/highs/mip/HighsDomainChange.h +48 -0
  1433. casadi/include/highs/mip/HighsDynamicRowMatrix.h +104 -0
  1434. casadi/include/highs/mip/HighsGFkSolve.h +438 -0
  1435. casadi/include/highs/mip/HighsImplications.h +170 -0
  1436. casadi/include/highs/mip/HighsLpAggregator.h +50 -0
  1437. casadi/include/highs/mip/HighsLpRelaxation.h +357 -0
  1438. casadi/include/highs/mip/HighsMipAnalysis.h +52 -0
  1439. casadi/include/highs/mip/HighsMipSolver.h +112 -0
  1440. casadi/include/highs/mip/HighsMipSolverData.h +297 -0
  1441. casadi/include/highs/mip/HighsModkSeparator.h +60 -0
  1442. casadi/include/highs/mip/HighsNodeQueue.h +311 -0
  1443. casadi/include/highs/mip/HighsObjectiveFunction.h +71 -0
  1444. casadi/include/highs/mip/HighsPathSeparator.h +39 -0
  1445. casadi/include/highs/mip/HighsPrimalHeuristics.h +70 -0
  1446. casadi/include/highs/mip/HighsPseudocost.h +360 -0
  1447. casadi/include/highs/mip/HighsRedcostFixing.h +42 -0
  1448. casadi/include/highs/mip/HighsSearch.h +241 -0
  1449. casadi/include/highs/mip/HighsSeparation.h +41 -0
  1450. casadi/include/highs/mip/HighsSeparator.h +52 -0
  1451. casadi/include/highs/mip/HighsTableauSeparator.h +34 -0
  1452. casadi/include/highs/mip/HighsTransformedLp.h +63 -0
  1453. casadi/include/highs/mip/MipTimer.h +471 -0
  1454. casadi/include/highs/model/HighsHessian.h +54 -0
  1455. casadi/include/highs/model/HighsHessianUtils.h +49 -0
  1456. casadi/include/highs/model/HighsModel.h +52 -0
  1457. casadi/include/highs/parallel/HighsBinarySemaphore.h +113 -0
  1458. casadi/include/highs/parallel/HighsCacheAlign.h +87 -0
  1459. casadi/include/highs/parallel/HighsCombinable.h +121 -0
  1460. casadi/include/highs/parallel/HighsMutex.h +129 -0
  1461. casadi/include/highs/parallel/HighsParallel.h +133 -0
  1462. casadi/include/highs/parallel/HighsRaceTimer.h +43 -0
  1463. casadi/include/highs/parallel/HighsSchedulerConstants.h +24 -0
  1464. casadi/include/highs/parallel/HighsSpinMutex.h +53 -0
  1465. casadi/include/highs/parallel/HighsSplitDeque.h +583 -0
  1466. casadi/include/highs/parallel/HighsTask.h +175 -0
  1467. casadi/include/highs/parallel/HighsTaskExecutor.h +222 -0
  1468. casadi/include/highs/pdlp/CupdlpWrapper.h +104 -0
  1469. casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +40 -0
  1470. casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +433 -0
  1471. casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +189 -0
  1472. casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +19 -0
  1473. casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +31 -0
  1474. casadi/include/highs/pdlp/cupdlp/cupdlp_scaling.h +26 -0
  1475. casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +98 -0
  1476. casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +37 -0
  1477. casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +1807 -0
  1478. casadi/include/highs/pdqsort/pdqsort.h +532 -0
  1479. casadi/include/highs/presolve/HPresolve.h +405 -0
  1480. casadi/include/highs/presolve/HPresolveAnalysis.h +51 -0
  1481. casadi/include/highs/presolve/HighsPostsolveStack.h +940 -0
  1482. casadi/include/highs/presolve/HighsSymmetry.h +281 -0
  1483. casadi/include/highs/presolve/ICrash.h +124 -0
  1484. casadi/include/highs/presolve/ICrashUtil.h +62 -0
  1485. casadi/include/highs/presolve/ICrashX.h +23 -0
  1486. casadi/include/highs/presolve/PresolveComponent.h +90 -0
  1487. casadi/include/highs/qpsolver/a_asm.hpp +70 -0
  1488. casadi/include/highs/qpsolver/a_quass.hpp +15 -0
  1489. casadi/include/highs/qpsolver/basis.hpp +152 -0
  1490. casadi/include/highs/qpsolver/crashsolution.hpp +13 -0
  1491. casadi/include/highs/qpsolver/dantzigpricing.hpp +73 -0
  1492. casadi/include/highs/qpsolver/devexpricing.hpp +101 -0
  1493. casadi/include/highs/qpsolver/eventhandler.hpp +23 -0
  1494. casadi/include/highs/qpsolver/factor.hpp +401 -0
  1495. casadi/include/highs/qpsolver/feasibility_bounded.hpp +107 -0
  1496. casadi/include/highs/qpsolver/feasibility_highs.hpp +294 -0
  1497. casadi/include/highs/qpsolver/gradient.hpp +39 -0
  1498. casadi/include/highs/qpsolver/instance.hpp +63 -0
  1499. casadi/include/highs/qpsolver/matrix.hpp +335 -0
  1500. casadi/include/highs/qpsolver/perturbation.hpp +8 -0
  1501. casadi/include/highs/qpsolver/pricing.hpp +15 -0
  1502. casadi/include/highs/qpsolver/qpconst.hpp +27 -0
  1503. casadi/include/highs/qpsolver/qpvector.hpp +235 -0
  1504. casadi/include/highs/qpsolver/quass.hpp +20 -0
  1505. casadi/include/highs/qpsolver/ratiotest.hpp +19 -0
  1506. casadi/include/highs/qpsolver/runtime.hpp +38 -0
  1507. casadi/include/highs/qpsolver/scaling.hpp +8 -0
  1508. casadi/include/highs/qpsolver/settings.hpp +69 -0
  1509. casadi/include/highs/qpsolver/snippets.hpp +29 -0
  1510. casadi/include/highs/qpsolver/statistics.hpp +23 -0
  1511. casadi/include/highs/qpsolver/steepestedgepricing.hpp +166 -0
  1512. casadi/include/highs/simplex/HApp.h +476 -0
  1513. casadi/include/highs/simplex/HEkk.h +416 -0
  1514. casadi/include/highs/simplex/HEkkDual.h +513 -0
  1515. casadi/include/highs/simplex/HEkkDualRHS.h +134 -0
  1516. casadi/include/highs/simplex/HEkkDualRow.h +201 -0
  1517. casadi/include/highs/simplex/HEkkPrimal.h +191 -0
  1518. casadi/include/highs/simplex/HSimplex.h +42 -0
  1519. casadi/include/highs/simplex/HSimplexDebug.h +48 -0
  1520. casadi/include/highs/simplex/HSimplexNla.h +158 -0
  1521. casadi/include/highs/simplex/HSimplexReport.h +21 -0
  1522. casadi/include/highs/simplex/HighsSimplexAnalysis.h +500 -0
  1523. casadi/include/highs/simplex/SimplexConst.h +273 -0
  1524. casadi/include/highs/simplex/SimplexStruct.h +261 -0
  1525. casadi/include/highs/simplex/SimplexTimer.h +409 -0
  1526. casadi/include/highs/test/DevKkt.h +143 -0
  1527. casadi/include/highs/test/KktCh2.h +79 -0
  1528. casadi/include/highs/util/FactorTimer.h +199 -0
  1529. casadi/include/highs/util/HFactor.h +587 -0
  1530. casadi/include/highs/util/HFactorConst.h +81 -0
  1531. casadi/include/highs/util/HFactorDebug.h +55 -0
  1532. casadi/include/highs/util/HSet.h +89 -0
  1533. casadi/include/highs/util/HVector.h +22 -0
  1534. casadi/include/highs/util/HVectorBase.h +102 -0
  1535. casadi/include/highs/util/HighsCDouble.h +319 -0
  1536. casadi/include/highs/util/HighsComponent.h +53 -0
  1537. casadi/include/highs/util/HighsDataStack.h +83 -0
  1538. casadi/include/highs/util/HighsDisjointSets.h +107 -0
  1539. casadi/include/highs/util/HighsHash.h +1274 -0
  1540. casadi/include/highs/util/HighsHashTree.h +1447 -0
  1541. casadi/include/highs/util/HighsInt.h +36 -0
  1542. casadi/include/highs/util/HighsIntegers.h +212 -0
  1543. casadi/include/highs/util/HighsLinearSumBounds.h +157 -0
  1544. casadi/include/highs/util/HighsMatrixPic.h +37 -0
  1545. casadi/include/highs/util/HighsMatrixSlice.h +561 -0
  1546. casadi/include/highs/util/HighsMatrixUtils.h +54 -0
  1547. casadi/include/highs/util/HighsMemoryAllocation.h +63 -0
  1548. casadi/include/highs/util/HighsRandom.h +242 -0
  1549. casadi/include/highs/util/HighsRbTree.h +452 -0
  1550. casadi/include/highs/util/HighsSort.h +131 -0
  1551. casadi/include/highs/util/HighsSparseMatrix.h +150 -0
  1552. casadi/include/highs/util/HighsSparseVectorSum.h +95 -0
  1553. casadi/include/highs/util/HighsSplay.h +135 -0
  1554. casadi/include/highs/util/HighsTimer.h +381 -0
  1555. casadi/include/highs/util/HighsUtils.h +217 -0
  1556. casadi/include/highs/util/stringutil.h +46 -0
  1557. casadi/include/highs/zstr/strict_fstream.hpp +237 -0
  1558. casadi/include/highs/zstr/zstr.hpp +472 -0
  1559. casadi/include/highs_export.h +42 -0
  1560. casadi/include/hpipm_aux_mem.h +52 -0
  1561. casadi/include/hpipm_aux_string.h +50 -0
  1562. casadi/include/hpipm_common.h +76 -0
  1563. casadi/include/hpipm_d_cast_qcqp.h +71 -0
  1564. casadi/include/hpipm_d_cond.h +135 -0
  1565. casadi/include/hpipm_d_cond_aux.h +92 -0
  1566. casadi/include/hpipm_d_cond_qcqp.h +129 -0
  1567. casadi/include/hpipm_d_core_qp_ipm.h +101 -0
  1568. casadi/include/hpipm_d_core_qp_ipm_aux.h +68 -0
  1569. casadi/include/hpipm_d_dense_qcqp.h +199 -0
  1570. casadi/include/hpipm_d_dense_qcqp_dim.h +98 -0
  1571. casadi/include/hpipm_d_dense_qcqp_ipm.h +193 -0
  1572. casadi/include/hpipm_d_dense_qcqp_res.h +108 -0
  1573. casadi/include/hpipm_d_dense_qcqp_sol.h +85 -0
  1574. casadi/include/hpipm_d_dense_qcqp_utils.h +82 -0
  1575. casadi/include/hpipm_d_dense_qp.h +207 -0
  1576. casadi/include/hpipm_d_dense_qp_dim.h +92 -0
  1577. casadi/include/hpipm_d_dense_qp_ipm.h +260 -0
  1578. casadi/include/hpipm_d_dense_qp_kkt.h +72 -0
  1579. casadi/include/hpipm_d_dense_qp_res.h +106 -0
  1580. casadi/include/hpipm_d_dense_qp_sol.h +94 -0
  1581. casadi/include/hpipm_d_dense_qp_utils.h +83 -0
  1582. casadi/include/hpipm_d_ocp_qcqp.h +322 -0
  1583. casadi/include/hpipm_d_ocp_qcqp_dim.h +130 -0
  1584. casadi/include/hpipm_d_ocp_qcqp_ipm.h +192 -0
  1585. casadi/include/hpipm_d_ocp_qcqp_red.h +118 -0
  1586. casadi/include/hpipm_d_ocp_qcqp_res.h +115 -0
  1587. casadi/include/hpipm_d_ocp_qcqp_sol.h +114 -0
  1588. casadi/include/hpipm_d_ocp_qcqp_utils.h +81 -0
  1589. casadi/include/hpipm_d_ocp_qp.h +306 -0
  1590. casadi/include/hpipm_d_ocp_qp_dim.h +142 -0
  1591. casadi/include/hpipm_d_ocp_qp_ipm.h +252 -0
  1592. casadi/include/hpipm_d_ocp_qp_kkt.h +66 -0
  1593. casadi/include/hpipm_d_ocp_qp_red.h +117 -0
  1594. casadi/include/hpipm_d_ocp_qp_res.h +113 -0
  1595. casadi/include/hpipm_d_ocp_qp_sol.h +128 -0
  1596. casadi/include/hpipm_d_ocp_qp_utils.h +82 -0
  1597. casadi/include/hpipm_d_part_cond.h +115 -0
  1598. casadi/include/hpipm_d_part_cond_qcqp.h +106 -0
  1599. casadi/include/hpipm_d_sim_erk.h +122 -0
  1600. casadi/include/hpipm_d_sim_rk.h +71 -0
  1601. casadi/include/hpipm_d_tree_ocp_qcqp.h +213 -0
  1602. casadi/include/hpipm_d_tree_ocp_qcqp_dim.h +117 -0
  1603. casadi/include/hpipm_d_tree_ocp_qcqp_ipm.h +191 -0
  1604. casadi/include/hpipm_d_tree_ocp_qcqp_res.h +109 -0
  1605. casadi/include/hpipm_d_tree_ocp_qcqp_sol.h +99 -0
  1606. casadi/include/hpipm_d_tree_ocp_qcqp_utils.h +84 -0
  1607. casadi/include/hpipm_d_tree_ocp_qp.h +195 -0
  1608. casadi/include/hpipm_d_tree_ocp_qp_dim.h +111 -0
  1609. casadi/include/hpipm_d_tree_ocp_qp_ipm.h +209 -0
  1610. casadi/include/hpipm_d_tree_ocp_qp_kkt.h +52 -0
  1611. casadi/include/hpipm_d_tree_ocp_qp_res.h +107 -0
  1612. casadi/include/hpipm_d_tree_ocp_qp_sol.h +100 -0
  1613. casadi/include/hpipm_d_tree_ocp_qp_utils.h +83 -0
  1614. casadi/include/hpipm_m_dense_qp.h +68 -0
  1615. casadi/include/hpipm_m_dense_qp_dim.h +68 -0
  1616. casadi/include/hpipm_m_ocp_qp.h +49 -0
  1617. casadi/include/hpipm_m_ocp_qp_ipm_hard.h +115 -0
  1618. casadi/include/hpipm_m_ocp_qp_kkt.h +45 -0
  1619. casadi/include/hpipm_s_cast_qcqp.h +72 -0
  1620. casadi/include/hpipm_s_cond.h +137 -0
  1621. casadi/include/hpipm_s_cond_aux.h +92 -0
  1622. casadi/include/hpipm_s_cond_qcqp.h +130 -0
  1623. casadi/include/hpipm_s_core_qp_ipm.h +101 -0
  1624. casadi/include/hpipm_s_core_qp_ipm_aux.h +68 -0
  1625. casadi/include/hpipm_s_dense_qcqp.h +200 -0
  1626. casadi/include/hpipm_s_dense_qcqp_dim.h +99 -0
  1627. casadi/include/hpipm_s_dense_qcqp_ipm.h +204 -0
  1628. casadi/include/hpipm_s_dense_qcqp_res.h +109 -0
  1629. casadi/include/hpipm_s_dense_qcqp_sol.h +86 -0
  1630. casadi/include/hpipm_s_dense_qcqp_utils.h +83 -0
  1631. casadi/include/hpipm_s_dense_qp.h +207 -0
  1632. casadi/include/hpipm_s_dense_qp_dim.h +94 -0
  1633. casadi/include/hpipm_s_dense_qp_ipm.h +260 -0
  1634. casadi/include/hpipm_s_dense_qp_kkt.h +72 -0
  1635. casadi/include/hpipm_s_dense_qp_res.h +107 -0
  1636. casadi/include/hpipm_s_dense_qp_sol.h +94 -0
  1637. casadi/include/hpipm_s_dense_qp_utils.h +84 -0
  1638. casadi/include/hpipm_s_ocp_qcqp.h +322 -0
  1639. casadi/include/hpipm_s_ocp_qcqp_dim.h +131 -0
  1640. casadi/include/hpipm_s_ocp_qcqp_ipm.h +193 -0
  1641. casadi/include/hpipm_s_ocp_qcqp_red.h +119 -0
  1642. casadi/include/hpipm_s_ocp_qcqp_res.h +116 -0
  1643. casadi/include/hpipm_s_ocp_qcqp_sol.h +115 -0
  1644. casadi/include/hpipm_s_ocp_qcqp_utils.h +82 -0
  1645. casadi/include/hpipm_s_ocp_qp.h +306 -0
  1646. casadi/include/hpipm_s_ocp_qp_dim.h +141 -0
  1647. casadi/include/hpipm_s_ocp_qp_ipm.h +252 -0
  1648. casadi/include/hpipm_s_ocp_qp_kkt.h +66 -0
  1649. casadi/include/hpipm_s_ocp_qp_red.h +118 -0
  1650. casadi/include/hpipm_s_ocp_qp_res.h +115 -0
  1651. casadi/include/hpipm_s_ocp_qp_sol.h +128 -0
  1652. casadi/include/hpipm_s_ocp_qp_utils.h +83 -0
  1653. casadi/include/hpipm_s_part_cond.h +115 -0
  1654. casadi/include/hpipm_s_part_cond_qcqp.h +107 -0
  1655. casadi/include/hpipm_s_sim_erk.h +121 -0
  1656. casadi/include/hpipm_s_sim_rk.h +72 -0
  1657. casadi/include/hpipm_s_tree_ocp_qcqp.h +213 -0
  1658. casadi/include/hpipm_s_tree_ocp_qcqp_dim.h +118 -0
  1659. casadi/include/hpipm_s_tree_ocp_qcqp_ipm.h +192 -0
  1660. casadi/include/hpipm_s_tree_ocp_qcqp_res.h +110 -0
  1661. casadi/include/hpipm_s_tree_ocp_qcqp_sol.h +97 -0
  1662. casadi/include/hpipm_s_tree_ocp_qcqp_utils.h +85 -0
  1663. casadi/include/hpipm_s_tree_ocp_qp.h +196 -0
  1664. casadi/include/hpipm_s_tree_ocp_qp_dim.h +111 -0
  1665. casadi/include/hpipm_s_tree_ocp_qp_ipm.h +208 -0
  1666. casadi/include/hpipm_s_tree_ocp_qp_kkt.h +54 -0
  1667. casadi/include/hpipm_s_tree_ocp_qp_res.h +108 -0
  1668. casadi/include/hpipm_s_tree_ocp_qp_sol.h +98 -0
  1669. casadi/include/hpipm_s_tree_ocp_qp_utils.h +84 -0
  1670. casadi/include/hpipm_scenario_tree.h +70 -0
  1671. casadi/include/hpipm_timing.h +67 -0
  1672. casadi/include/hpipm_tree.h +76 -0
  1673. casadi/include/licenses/FMI-Standard-2.0.2/LICENSE.txt +473 -0
  1674. casadi/include/licenses/FMI-Standard-3.0/LICENSE.txt +464 -0
  1675. casadi/include/licenses/alpaqa-external/LICENSE +165 -0
  1676. casadi/include/licenses/blasfeo-external/LICENSE.txt +26 -0
  1677. casadi/include/licenses/bonmin-external/Bonmin/LICENSE +87 -0
  1678. casadi/include/licenses/bonmin-external/LICENSE +3 -0
  1679. casadi/include/licenses/casadi/LICENSE/LICENSE.txt +165 -0
  1680. casadi/include/licenses/casadi-sundials/LICENSE +64 -0
  1681. casadi/include/licenses/casadi-sundials/cvodes/LICENSE +60 -0
  1682. casadi/include/licenses/casadi-sundials/idas/LICENSE +59 -0
  1683. casadi/include/licenses/casadi-sundials/kinsol/LICENSE +59 -0
  1684. casadi/include/licenses/casadi-sundials/sundials/LICENSE +67 -0
  1685. casadi/include/licenses/cbc-external/Cbc/LICENSE +239 -0
  1686. casadi/include/licenses/cbc-external/LICENSE +245 -0
  1687. casadi/include/licenses/cgl-external/Cgl/LICENSE +239 -0
  1688. casadi/include/licenses/cgl-external/LICENSE +245 -0
  1689. casadi/include/licenses/clp-external/Clp/LICENSE +239 -0
  1690. casadi/include/licenses/clp-external/LICENSE +245 -0
  1691. casadi/include/licenses/coinutils-external/CoinUtils/LICENSE +239 -0
  1692. casadi/include/licenses/coinutils-external/LICENSE +245 -0
  1693. casadi/include/licenses/daqp-external/LICENSE +21 -0
  1694. casadi/include/licenses/fatrop-external/LICENSE.txt +165 -0
  1695. casadi/include/licenses/fatrop-external/external/blasfeo/LICENSE.txt +26 -0
  1696. casadi/include/licenses/fatrop-external/external/pybind11/LICENSE +29 -0
  1697. casadi/include/licenses/ghc-external/LICENSE +19 -0
  1698. casadi/include/licenses/highs-external/LICENSE.txt +21 -0
  1699. casadi/include/licenses/highs-external/extern/filereaderlp/LICENSE +19 -0
  1700. casadi/include/licenses/hpipm-external/LICENSE.txt +26 -0
  1701. casadi/include/licenses/ipopt-external/LICENSE +260 -0
  1702. casadi/include/licenses/libz-external/LICENSE +22 -0
  1703. casadi/include/licenses/libz-external/contrib/dotzlib/LICENSE_1_0.txt +23 -0
  1704. casadi/include/licenses/libzip-external/LICENSE +31 -0
  1705. casadi/include/licenses/metis-external/LICENSE +87 -0
  1706. casadi/include/licenses/metis-external/metis-4.0/LICENSE +18 -0
  1707. casadi/include/licenses/mockups-external/LICENSE +21 -0
  1708. casadi/include/licenses/mumps-external/LICENSE +87 -0
  1709. casadi/include/licenses/mumps-external/MUMPS/LICENSE +50 -0
  1710. casadi/include/licenses/openblas-external/LICENSE +29 -0
  1711. casadi/include/licenses/openblas-external/ctest/LICENSE +23 -0
  1712. casadi/include/licenses/openblas-external/lapack-netlib/LAPACKE/LICENSE +26 -0
  1713. casadi/include/licenses/openblas-external/lapack-netlib/LICENSE +48 -0
  1714. casadi/include/licenses/openblas-external/reference/LICENSE +23 -0
  1715. casadi/include/licenses/openblas-external/relapack/LICENSE +22 -0
  1716. casadi/include/licenses/openblas-external/test/LICENSE +23 -0
  1717. casadi/include/licenses/osi-external/LICENSE +245 -0
  1718. casadi/include/licenses/osi-external/Osi/LICENSE +239 -0
  1719. casadi/include/licenses/osqp-external/LICENSE +201 -0
  1720. casadi/include/licenses/osqp-external/lin_sys/direct/qdldl/amd/LICENSE +36 -0
  1721. casadi/include/licenses/osqp-external/lin_sys/direct/qdldl/qdldl_sources/LICENSE +201 -0
  1722. casadi/include/licenses/proxqp-external/LICENSE +25 -0
  1723. casadi/include/licenses/proxqp-external/bindings/python/external/pybind11/LICENSE +29 -0
  1724. casadi/include/licenses/proxqp-external/cmake-module/LICENSE +4 -0
  1725. casadi/include/licenses/proxqp-external/cmake-module/doxygen/MathJax/LICENSE +202 -0
  1726. casadi/include/licenses/proxqp-external/external/cereal/LICENSE +24 -0
  1727. casadi/include/licenses/proxqp-external/external/cereal/include/cereal/external/LICENSE +21 -0
  1728. casadi/include/licenses/proxqp-external/external/cereal/include/cereal/external/rapidjson/LICENSE +13 -0
  1729. casadi/include/licenses/proxqp-external/external/cereal/include/cereal/external/rapidjson/msinttypes/LICENSE +29 -0
  1730. casadi/include/licenses/qpOASES/LICENSE.txt +503 -0
  1731. casadi/include/licenses/sleqp-external/LICENSE +165 -0
  1732. casadi/include/licenses/superscs-external/LICENSE.txt +24 -0
  1733. casadi/include/licenses/tinyxml2-9.0.0/LICENSE.txt +18 -0
  1734. casadi/include/licenses/trlib-external/LICENSE +21 -0
  1735. casadi/include/openblas/cblas.h +411 -0
  1736. casadi/include/openblas/f77blas.h +796 -0
  1737. casadi/include/openblas/lapack.h +22997 -0
  1738. casadi/include/openblas/lapacke.h +12665 -0
  1739. casadi/include/openblas/lapacke_config.h +119 -0
  1740. casadi/include/openblas/lapacke_example_aux.h +9 -0
  1741. casadi/include/openblas/lapacke_mangling.h +17 -0
  1742. casadi/include/openblas/lapacke_utils.h +582 -0
  1743. casadi/include/openblas/openblas/lapacke_mangling.h +17 -0
  1744. casadi/include/openblas/openblas_config.h +140 -0
  1745. casadi/include/osqp/auxil.h +181 -0
  1746. casadi/include/osqp/constants.h +128 -0
  1747. casadi/include/osqp/cs.h +180 -0
  1748. casadi/include/osqp/ctrlc.h +56 -0
  1749. casadi/include/osqp/error.h +38 -0
  1750. casadi/include/osqp/glob_opts.h +167 -0
  1751. casadi/include/osqp/lin_alg.h +216 -0
  1752. casadi/include/osqp/lin_sys.h +54 -0
  1753. casadi/include/osqp/osqp.h +430 -0
  1754. casadi/include/osqp/osqp_configure.h +49 -0
  1755. casadi/include/osqp/polish.h +25 -0
  1756. casadi/include/osqp/proj.h +37 -0
  1757. casadi/include/osqp/scaling.h +44 -0
  1758. casadi/include/osqp/types.h +326 -0
  1759. casadi/include/osqp/util.h +222 -0
  1760. casadi/include/osqp/version.h +9 -0
  1761. casadi/include/proxsuite/config.hpp +68 -0
  1762. casadi/include/proxsuite/deprecated.hpp +56 -0
  1763. casadi/include/proxsuite/fwd.hpp +52 -0
  1764. casadi/include/proxsuite/helpers/common.hpp +70 -0
  1765. casadi/include/proxsuite/helpers/instruction-set.hpp +275 -0
  1766. casadi/include/proxsuite/helpers/optional.hpp +46 -0
  1767. casadi/include/proxsuite/helpers/tl-optional.hpp +2472 -0
  1768. casadi/include/proxsuite/helpers/version.hpp +39 -0
  1769. casadi/include/proxsuite/linalg/dense/core.hpp +863 -0
  1770. casadi/include/proxsuite/linalg/dense/factorize.hpp +375 -0
  1771. casadi/include/proxsuite/linalg/dense/ldlt.hpp +817 -0
  1772. casadi/include/proxsuite/linalg/dense/modify.hpp +333 -0
  1773. casadi/include/proxsuite/linalg/dense/solve.hpp +38 -0
  1774. casadi/include/proxsuite/linalg/dense/update.hpp +330 -0
  1775. casadi/include/proxsuite/linalg/sparse/core.hpp +531 -0
  1776. casadi/include/proxsuite/linalg/sparse/factorize.hpp +1303 -0
  1777. casadi/include/proxsuite/linalg/sparse/rowmod.hpp +443 -0
  1778. casadi/include/proxsuite/linalg/sparse/update.hpp +348 -0
  1779. casadi/include/proxsuite/linalg/veg/internal/assert_impl.hpp +20 -0
  1780. casadi/include/proxsuite/linalg/veg/internal/collection_algo.hpp +93 -0
  1781. casadi/include/proxsuite/linalg/veg/internal/dbg.hpp +15 -0
  1782. casadi/include/proxsuite/linalg/veg/internal/delete_special_members.hpp +77 -0
  1783. casadi/include/proxsuite/linalg/veg/internal/dyn_index.hpp +292 -0
  1784. casadi/include/proxsuite/linalg/veg/internal/epilogue.hpp +31 -0
  1785. casadi/include/proxsuite/linalg/veg/internal/external/hedley.ext.hpp +2074 -0
  1786. casadi/include/proxsuite/linalg/veg/internal/external/unhedley.ext.hpp +148 -0
  1787. casadi/include/proxsuite/linalg/veg/internal/fix_index.hpp +339 -0
  1788. casadi/include/proxsuite/linalg/veg/internal/has_asan.hpp +17 -0
  1789. casadi/include/proxsuite/linalg/veg/internal/integer_seq.hpp +248 -0
  1790. casadi/include/proxsuite/linalg/veg/internal/macros.hpp +1312 -0
  1791. casadi/include/proxsuite/linalg/veg/internal/narrow.hpp +46 -0
  1792. casadi/include/proxsuite/linalg/veg/internal/preprocessor.hpp +434 -0
  1793. casadi/include/proxsuite/linalg/veg/internal/prologue.hpp +157 -0
  1794. casadi/include/proxsuite/linalg/veg/internal/std.hpp +13 -0
  1795. casadi/include/proxsuite/linalg/veg/internal/terminate.hpp +22 -0
  1796. casadi/include/proxsuite/linalg/veg/internal/typedefs.hpp +58 -0
  1797. casadi/include/proxsuite/linalg/veg/memory/address.hpp +97 -0
  1798. casadi/include/proxsuite/linalg/veg/memory/alloc.hpp +352 -0
  1799. casadi/include/proxsuite/linalg/veg/memory/dynamic_stack.hpp +504 -0
  1800. casadi/include/proxsuite/linalg/veg/memory/placement.hpp +202 -0
  1801. casadi/include/proxsuite/linalg/veg/memory/stack_alloc.hpp +239 -0
  1802. casadi/include/proxsuite/linalg/veg/ref.hpp +148 -0
  1803. casadi/include/proxsuite/linalg/veg/slice.hpp +240 -0
  1804. casadi/include/proxsuite/linalg/veg/tuple.hpp +876 -0
  1805. casadi/include/proxsuite/linalg/veg/type_traits/alloc.hpp +169 -0
  1806. casadi/include/proxsuite/linalg/veg/type_traits/assignable.hpp +53 -0
  1807. casadi/include/proxsuite/linalg/veg/type_traits/constructible.hpp +217 -0
  1808. casadi/include/proxsuite/linalg/veg/type_traits/core.hpp +298 -0
  1809. casadi/include/proxsuite/linalg/veg/type_traits/invocable.hpp +47 -0
  1810. casadi/include/proxsuite/linalg/veg/type_traits/primitives.hpp +43 -0
  1811. casadi/include/proxsuite/linalg/veg/type_traits/tags.hpp +47 -0
  1812. casadi/include/proxsuite/linalg/veg/util/assert.hpp +48 -0
  1813. casadi/include/proxsuite/linalg/veg/util/dbg.hpp +6 -0
  1814. casadi/include/proxsuite/linalg/veg/util/defer.hpp +57 -0
  1815. casadi/include/proxsuite/linalg/veg/util/dynstack_alloc.hpp +19 -0
  1816. casadi/include/proxsuite/linalg/veg/util/get.hpp +153 -0
  1817. casadi/include/proxsuite/linalg/veg/util/index.hpp +6 -0
  1818. casadi/include/proxsuite/linalg/veg/util/unreachable.hpp +41 -0
  1819. casadi/include/proxsuite/linalg/veg/vec.hpp +1034 -0
  1820. casadi/include/proxsuite/proxqp/dense/dense.hpp +10 -0
  1821. casadi/include/proxsuite/proxqp/dense/fwd.hpp +55 -0
  1822. casadi/include/proxsuite/proxqp/dense/helpers.hpp +520 -0
  1823. casadi/include/proxsuite/proxqp/dense/linesearch.hpp +517 -0
  1824. casadi/include/proxsuite/proxqp/dense/model.hpp +147 -0
  1825. casadi/include/proxsuite/proxqp/dense/preconditioner/identity.hpp +113 -0
  1826. casadi/include/proxsuite/proxqp/dense/preconditioner/ruiz.hpp +571 -0
  1827. casadi/include/proxsuite/proxqp/dense/solver.hpp +1330 -0
  1828. casadi/include/proxsuite/proxqp/dense/utils.hpp +415 -0
  1829. casadi/include/proxsuite/proxqp/dense/views.hpp +1466 -0
  1830. casadi/include/proxsuite/proxqp/dense/workspace.hpp +264 -0
  1831. casadi/include/proxsuite/proxqp/dense/wrapper.hpp +491 -0
  1832. casadi/include/proxsuite/proxqp/results.hpp +212 -0
  1833. casadi/include/proxsuite/proxqp/settings.hpp +302 -0
  1834. casadi/include/proxsuite/proxqp/sparse/fwd.hpp +58 -0
  1835. casadi/include/proxsuite/proxqp/sparse/helpers.hpp +309 -0
  1836. casadi/include/proxsuite/proxqp/sparse/model.hpp +228 -0
  1837. casadi/include/proxsuite/proxqp/sparse/preconditioner/identity.hpp +64 -0
  1838. casadi/include/proxsuite/proxqp/sparse/preconditioner/ruiz.hpp +569 -0
  1839. casadi/include/proxsuite/proxqp/sparse/solver.hpp +1441 -0
  1840. casadi/include/proxsuite/proxqp/sparse/sparse.hpp +10 -0
  1841. casadi/include/proxsuite/proxqp/sparse/utils.hpp +815 -0
  1842. casadi/include/proxsuite/proxqp/sparse/views.hpp +63 -0
  1843. casadi/include/proxsuite/proxqp/sparse/workspace.hpp +790 -0
  1844. casadi/include/proxsuite/proxqp/sparse/wrapper.hpp +772 -0
  1845. casadi/include/proxsuite/proxqp/status.hpp +46 -0
  1846. casadi/include/proxsuite/proxqp/timings.hpp +101 -0
  1847. casadi/include/proxsuite/proxqp/utils/prints.hpp +47 -0
  1848. casadi/include/proxsuite/proxqp/utils/random_qp_problems.hpp +669 -0
  1849. casadi/include/proxsuite/serialization/archive.hpp +231 -0
  1850. casadi/include/proxsuite/serialization/eigen.hpp +107 -0
  1851. casadi/include/proxsuite/serialization/model.hpp +34 -0
  1852. casadi/include/proxsuite/serialization/results.hpp +74 -0
  1853. casadi/include/proxsuite/serialization/settings.hpp +60 -0
  1854. casadi/include/proxsuite/serialization/wrapper.hpp +24 -0
  1855. casadi/include/proxsuite/warning.hpp +35 -0
  1856. casadi/include/qdldl/qdldl.h +169 -0
  1857. casadi/include/qdldl/qdldl_types.h +23 -0
  1858. casadi/include/s_blas.h +78 -0
  1859. casadi/include/s_blas_64.h +73 -0
  1860. casadi/include/simde/arm/neon/aba.h +208 -0
  1861. casadi/include/simde/arm/neon/abd.h +384 -0
  1862. casadi/include/simde/arm/neon/abdl.h +147 -0
  1863. casadi/include/simde/arm/neon/abs.h +408 -0
  1864. casadi/include/simde/arm/neon/add.h +681 -0
  1865. casadi/include/simde/arm/neon/addl.h +127 -0
  1866. casadi/include/simde/arm/neon/addl_high.h +127 -0
  1867. casadi/include/simde/arm/neon/addlv.h +317 -0
  1868. casadi/include/simde/arm/neon/addv.h +447 -0
  1869. casadi/include/simde/arm/neon/addw.h +222 -0
  1870. casadi/include/simde/arm/neon/addw_high.h +193 -0
  1871. casadi/include/simde/arm/neon/and.h +552 -0
  1872. casadi/include/simde/arm/neon/bic.h +472 -0
  1873. casadi/include/simde/arm/neon/bsl.h +448 -0
  1874. casadi/include/simde/arm/neon/cagt.h +168 -0
  1875. casadi/include/simde/arm/neon/ceq.h +711 -0
  1876. casadi/include/simde/arm/neon/ceqz.h +335 -0
  1877. casadi/include/simde/arm/neon/cge.h +677 -0
  1878. casadi/include/simde/arm/neon/cgez.h +378 -0
  1879. casadi/include/simde/arm/neon/cgt.h +686 -0
  1880. casadi/include/simde/arm/neon/cgtz.h +380 -0
  1881. casadi/include/simde/arm/neon/cle.h +677 -0
  1882. casadi/include/simde/arm/neon/clez.h +378 -0
  1883. casadi/include/simde/arm/neon/cls.h +148 -0
  1884. casadi/include/simde/arm/neon/clt.h +679 -0
  1885. casadi/include/simde/arm/neon/cltz.h +263 -0
  1886. casadi/include/simde/arm/neon/clz.h +423 -0
  1887. casadi/include/simde/arm/neon/cnt.h +145 -0
  1888. casadi/include/simde/arm/neon/combine.h +343 -0
  1889. casadi/include/simde/arm/neon/create.h +186 -0
  1890. casadi/include/simde/arm/neon/cvt.h +492 -0
  1891. casadi/include/simde/arm/neon/dot.h +171 -0
  1892. casadi/include/simde/arm/neon/dot_lane.h +196 -0
  1893. casadi/include/simde/arm/neon/dup_lane.h +702 -0
  1894. casadi/include/simde/arm/neon/dup_n.h +534 -0
  1895. casadi/include/simde/arm/neon/eor.h +552 -0
  1896. casadi/include/simde/arm/neon/ext.h +887 -0
  1897. casadi/include/simde/arm/neon/get_high.h +260 -0
  1898. casadi/include/simde/arm/neon/get_lane.h +499 -0
  1899. casadi/include/simde/arm/neon/get_low.h +276 -0
  1900. casadi/include/simde/arm/neon/hadd.h +287 -0
  1901. casadi/include/simde/arm/neon/hsub.h +287 -0
  1902. casadi/include/simde/arm/neon/ld1.h +399 -0
  1903. casadi/include/simde/arm/neon/ld3.h +609 -0
  1904. casadi/include/simde/arm/neon/ld4.h +448 -0
  1905. casadi/include/simde/arm/neon/max.h +614 -0
  1906. casadi/include/simde/arm/neon/maxnm.h +215 -0
  1907. casadi/include/simde/arm/neon/maxv.h +400 -0
  1908. casadi/include/simde/arm/neon/min.h +660 -0
  1909. casadi/include/simde/arm/neon/minnm.h +215 -0
  1910. casadi/include/simde/arm/neon/minv.h +424 -0
  1911. casadi/include/simde/arm/neon/mla.h +530 -0
  1912. casadi/include/simde/arm/neon/mla_n.h +333 -0
  1913. casadi/include/simde/arm/neon/mlal.h +156 -0
  1914. casadi/include/simde/arm/neon/mlal_high.h +156 -0
  1915. casadi/include/simde/arm/neon/mlal_n.h +128 -0
  1916. casadi/include/simde/arm/neon/mls.h +264 -0
  1917. casadi/include/simde/arm/neon/mlsl.h +124 -0
  1918. casadi/include/simde/arm/neon/mlsl_high.h +124 -0
  1919. casadi/include/simde/arm/neon/mlsl_n.h +96 -0
  1920. casadi/include/simde/arm/neon/movl.h +208 -0
  1921. casadi/include/simde/arm/neon/movl_high.h +126 -0
  1922. casadi/include/simde/arm/neon/movn.h +195 -0
  1923. casadi/include/simde/arm/neon/movn_high.h +125 -0
  1924. casadi/include/simde/arm/neon/mul.h +594 -0
  1925. casadi/include/simde/arm/neon/mul_lane.h +472 -0
  1926. casadi/include/simde/arm/neon/mul_n.h +383 -0
  1927. casadi/include/simde/arm/neon/mull.h +236 -0
  1928. casadi/include/simde/arm/neon/mull_high.h +125 -0
  1929. casadi/include/simde/arm/neon/mull_n.h +158 -0
  1930. casadi/include/simde/arm/neon/mvn.h +426 -0
  1931. casadi/include/simde/arm/neon/neg.h +393 -0
  1932. casadi/include/simde/arm/neon/orn.h +505 -0
  1933. casadi/include/simde/arm/neon/orr.h +552 -0
  1934. casadi/include/simde/arm/neon/padal.h +211 -0
  1935. casadi/include/simde/arm/neon/padd.h +293 -0
  1936. casadi/include/simde/arm/neon/paddl.h +239 -0
  1937. casadi/include/simde/arm/neon/pmax.h +253 -0
  1938. casadi/include/simde/arm/neon/pmin.h +260 -0
  1939. casadi/include/simde/arm/neon/qabs.h +281 -0
  1940. casadi/include/simde/arm/neon/qadd.h +553 -0
  1941. casadi/include/simde/arm/neon/qdmulh.h +125 -0
  1942. casadi/include/simde/arm/neon/qdmull.h +125 -0
  1943. casadi/include/simde/arm/neon/qmovn.h +273 -0
  1944. casadi/include/simde/arm/neon/qmovn_high.h +127 -0
  1945. casadi/include/simde/arm/neon/qmovun.h +159 -0
  1946. casadi/include/simde/arm/neon/qneg.h +301 -0
  1947. casadi/include/simde/arm/neon/qrdmulh.h +165 -0
  1948. casadi/include/simde/arm/neon/qrdmulh_n.h +136 -0
  1949. casadi/include/simde/arm/neon/qshl.h +732 -0
  1950. casadi/include/simde/arm/neon/qsub.h +549 -0
  1951. casadi/include/simde/arm/neon/qtbl.h +455 -0
  1952. casadi/include/simde/arm/neon/qtbx.h +470 -0
  1953. casadi/include/simde/arm/neon/rbit.h +165 -0
  1954. casadi/include/simde/arm/neon/reinterpret.h +3101 -0
  1955. casadi/include/simde/arm/neon/rev16.h +137 -0
  1956. casadi/include/simde/arm/neon/rev32.h +235 -0
  1957. casadi/include/simde/arm/neon/rev64.h +358 -0
  1958. casadi/include/simde/arm/neon/rhadd.h +406 -0
  1959. casadi/include/simde/arm/neon/rnd.h +143 -0
  1960. casadi/include/simde/arm/neon/rndi.h +135 -0
  1961. casadi/include/simde/arm/neon/rndm.h +143 -0
  1962. casadi/include/simde/arm/neon/rndn.h +135 -0
  1963. casadi/include/simde/arm/neon/rndp.h +143 -0
  1964. casadi/include/simde/arm/neon/rshl.h +903 -0
  1965. casadi/include/simde/arm/neon/rshr_n.h +471 -0
  1966. casadi/include/simde/arm/neon/rsra_n.h +209 -0
  1967. casadi/include/simde/arm/neon/set_lane.h +422 -0
  1968. casadi/include/simde/arm/neon/shl.h +805 -0
  1969. casadi/include/simde/arm/neon/shl_n.h +560 -0
  1970. casadi/include/simde/arm/neon/shr_n.h +612 -0
  1971. casadi/include/simde/arm/neon/sra_n.h +202 -0
  1972. casadi/include/simde/arm/neon/st1.h +353 -0
  1973. casadi/include/simde/arm/neon/st1_lane.h +363 -0
  1974. casadi/include/simde/arm/neon/st3.h +426 -0
  1975. casadi/include/simde/arm/neon/st4.h +445 -0
  1976. casadi/include/simde/arm/neon/sub.h +659 -0
  1977. casadi/include/simde/arm/neon/subl.h +127 -0
  1978. casadi/include/simde/arm/neon/subw.h +221 -0
  1979. casadi/include/simde/arm/neon/subw_high.h +222 -0
  1980. casadi/include/simde/arm/neon/tbl.h +224 -0
  1981. casadi/include/simde/arm/neon/tbx.h +247 -0
  1982. casadi/include/simde/arm/neon/trn.h +252 -0
  1983. casadi/include/simde/arm/neon/trn1.h +500 -0
  1984. casadi/include/simde/arm/neon/trn2.h +499 -0
  1985. casadi/include/simde/arm/neon/tst.h +540 -0
  1986. casadi/include/simde/arm/neon/types.h +683 -0
  1987. casadi/include/simde/arm/neon/uqadd.h +325 -0
  1988. casadi/include/simde/arm/neon/uzp.h +252 -0
  1989. casadi/include/simde/arm/neon/uzp1.h +643 -0
  1990. casadi/include/simde/arm/neon/uzp2.h +647 -0
  1991. casadi/include/simde/arm/neon/zip.h +252 -0
  1992. casadi/include/simde/arm/neon/zip1.h +625 -0
  1993. casadi/include/simde/arm/neon/zip2.h +625 -0
  1994. casadi/include/simde/arm/neon.h +166 -0
  1995. casadi/include/simde/check.h +276 -0
  1996. casadi/include/simde/debug-trap.h +85 -0
  1997. casadi/include/simde/hedley.h +1971 -0
  1998. casadi/include/simde/simde-align.h +449 -0
  1999. casadi/include/simde/simde-arch.h +532 -0
  2000. casadi/include/simde/simde-common.h +890 -0
  2001. casadi/include/simde/simde-complex.h +148 -0
  2002. casadi/include/simde/simde-constify.h +397 -0
  2003. casadi/include/simde/simde-detect-clang.h +109 -0
  2004. casadi/include/simde/simde-diagnostic.h +428 -0
  2005. casadi/include/simde/simde-features.h +522 -0
  2006. casadi/include/simde/simde-math.h +1805 -0
  2007. casadi/include/simde/x86/avx.h +6193 -0
  2008. casadi/include/simde/x86/avx2.h +5660 -0
  2009. casadi/include/simde/x86/avx512/2intersect.h +250 -0
  2010. casadi/include/simde/x86/avx512/abs.h +562 -0
  2011. casadi/include/simde/x86/avx512/add.h +641 -0
  2012. casadi/include/simde/x86/avx512/adds.h +390 -0
  2013. casadi/include/simde/x86/avx512/and.h +305 -0
  2014. casadi/include/simde/x86/avx512/andnot.h +193 -0
  2015. casadi/include/simde/x86/avx512/avg.h +258 -0
  2016. casadi/include/simde/x86/avx512/blend.h +293 -0
  2017. casadi/include/simde/x86/avx512/broadcast.h +897 -0
  2018. casadi/include/simde/x86/avx512/cast.h +324 -0
  2019. casadi/include/simde/x86/avx512/cmp.h +587 -0
  2020. casadi/include/simde/x86/avx512/cmpeq.h +179 -0
  2021. casadi/include/simde/x86/avx512/cmpge.h +104 -0
  2022. casadi/include/simde/x86/avx512/cmpgt.h +189 -0
  2023. casadi/include/simde/x86/avx512/cmple.h +103 -0
  2024. casadi/include/simde/x86/avx512/cmplt.h +123 -0
  2025. casadi/include/simde/x86/avx512/copysign.h +86 -0
  2026. casadi/include/simde/x86/avx512/cvt.h +122 -0
  2027. casadi/include/simde/x86/avx512/cvts.h +723 -0
  2028. casadi/include/simde/x86/avx512/div.h +162 -0
  2029. casadi/include/simde/x86/avx512/extract.h +198 -0
  2030. casadi/include/simde/x86/avx512/fmadd.h +136 -0
  2031. casadi/include/simde/x86/avx512/fmsub.h +108 -0
  2032. casadi/include/simde/x86/avx512/fnmadd.h +108 -0
  2033. casadi/include/simde/x86/avx512/fnmsub.h +108 -0
  2034. casadi/include/simde/x86/avx512/insert.h +193 -0
  2035. casadi/include/simde/x86/avx512/kshift.h +152 -0
  2036. casadi/include/simde/x86/avx512/load.h +67 -0
  2037. casadi/include/simde/x86/avx512/loadu.h +113 -0
  2038. casadi/include/simde/x86/avx512/lzcnt.h +209 -0
  2039. casadi/include/simde/x86/avx512/madd.h +155 -0
  2040. casadi/include/simde/x86/avx512/maddubs.h +159 -0
  2041. casadi/include/simde/x86/avx512/max.h +587 -0
  2042. casadi/include/simde/x86/avx512/min.h +587 -0
  2043. casadi/include/simde/x86/avx512/mov.h +859 -0
  2044. casadi/include/simde/x86/avx512/mov_mask.h +372 -0
  2045. casadi/include/simde/x86/avx512/movm.h +460 -0
  2046. casadi/include/simde/x86/avx512/mul.h +279 -0
  2047. casadi/include/simde/x86/avx512/mulhi.h +65 -0
  2048. casadi/include/simde/x86/avx512/mulhrs.h +65 -0
  2049. casadi/include/simde/x86/avx512/mullo.h +117 -0
  2050. casadi/include/simde/x86/avx512/negate.h +88 -0
  2051. casadi/include/simde/x86/avx512/or.h +252 -0
  2052. casadi/include/simde/x86/avx512/packs.h +122 -0
  2053. casadi/include/simde/x86/avx512/packus.h +122 -0
  2054. casadi/include/simde/x86/avx512/permutex2var.h +1645 -0
  2055. casadi/include/simde/x86/avx512/permutexvar.h +1180 -0
  2056. casadi/include/simde/x86/avx512/sad.h +77 -0
  2057. casadi/include/simde/x86/avx512/set.h +477 -0
  2058. casadi/include/simde/x86/avx512/set1.h +331 -0
  2059. casadi/include/simde/x86/avx512/set4.h +140 -0
  2060. casadi/include/simde/x86/avx512/setone.h +66 -0
  2061. casadi/include/simde/x86/avx512/setr.h +144 -0
  2062. casadi/include/simde/x86/avx512/setr4.h +140 -0
  2063. casadi/include/simde/x86/avx512/setzero.h +90 -0
  2064. casadi/include/simde/x86/avx512/shuffle.h +176 -0
  2065. casadi/include/simde/x86/avx512/sll.h +247 -0
  2066. casadi/include/simde/x86/avx512/slli.h +179 -0
  2067. casadi/include/simde/x86/avx512/sllv.h +68 -0
  2068. casadi/include/simde/x86/avx512/sqrt.h +127 -0
  2069. casadi/include/simde/x86/avx512/sra.h +81 -0
  2070. casadi/include/simde/x86/avx512/srai.h +70 -0
  2071. casadi/include/simde/x86/avx512/srav.h +67 -0
  2072. casadi/include/simde/x86/avx512/srl.h +216 -0
  2073. casadi/include/simde/x86/avx512/srli.h +180 -0
  2074. casadi/include/simde/x86/avx512/srlv.h +282 -0
  2075. casadi/include/simde/x86/avx512/store.h +93 -0
  2076. casadi/include/simde/x86/avx512/storeu.h +93 -0
  2077. casadi/include/simde/x86/avx512/sub.h +351 -0
  2078. casadi/include/simde/x86/avx512/subs.h +222 -0
  2079. casadi/include/simde/x86/avx512/test.h +193 -0
  2080. casadi/include/simde/x86/avx512/types.h +380 -0
  2081. casadi/include/simde/x86/avx512/unpackhi.h +380 -0
  2082. casadi/include/simde/x86/avx512/unpacklo.h +104 -0
  2083. casadi/include/simde/x86/avx512/xor.h +263 -0
  2084. casadi/include/simde/x86/avx512/xorsign.h +72 -0
  2085. casadi/include/simde/x86/avx512.h +108 -0
  2086. casadi/include/simde/x86/clmul.h +414 -0
  2087. casadi/include/simde/x86/fma.h +724 -0
  2088. casadi/include/simde/x86/gfni.h +802 -0
  2089. casadi/include/simde/x86/mmx.h +2399 -0
  2090. casadi/include/simde/x86/sse.h +4471 -0
  2091. casadi/include/simde/x86/sse2.h +7389 -0
  2092. casadi/include/simde/x86/sse3.h +499 -0
  2093. casadi/include/simde/x86/sse4.1.h +2216 -0
  2094. casadi/include/simde/x86/sse4.2.h +347 -0
  2095. casadi/include/simde/x86/ssse3.h +1032 -0
  2096. casadi/include/simde/x86/svml.h +12139 -0
  2097. casadi/include/simde/x86/xop.h +3644 -0
  2098. casadi/include/sleqp/defs.h +58 -0
  2099. casadi/include/sleqp/export.h +42 -0
  2100. casadi/include/sleqp/pub_cmp.h +18 -0
  2101. casadi/include/sleqp/pub_dyn.h +140 -0
  2102. casadi/include/sleqp/pub_error.h +50 -0
  2103. casadi/include/sleqp/pub_func.h +257 -0
  2104. casadi/include/sleqp/pub_hess_struct.h +105 -0
  2105. casadi/include/sleqp/pub_iterate.h +88 -0
  2106. casadi/include/sleqp/pub_log.h +88 -0
  2107. casadi/include/sleqp/pub_lsq.h +158 -0
  2108. casadi/include/sleqp/pub_mem.h +52 -0
  2109. casadi/include/sleqp/pub_problem.h +213 -0
  2110. casadi/include/sleqp/pub_scale.h +150 -0
  2111. casadi/include/sleqp/pub_settings.h +162 -0
  2112. casadi/include/sleqp/pub_solver.h +155 -0
  2113. casadi/include/sleqp/pub_types.h +230 -0
  2114. casadi/include/sleqp/pub_working_set.h +135 -0
  2115. casadi/include/sleqp/sparse/pub_mat.h +153 -0
  2116. casadi/include/sleqp/sparse/pub_vec.h +336 -0
  2117. casadi/include/sleqp.h +38 -0
  2118. casadi/include/spral.h +13 -0
  2119. casadi/include/spral_lsmr.h +57 -0
  2120. casadi/include/spral_matrix_util.h +40 -0
  2121. casadi/include/spral_random.h +26 -0
  2122. casadi/include/spral_random_matrix.h +27 -0
  2123. casadi/include/spral_rutherford_boeing.h +51 -0
  2124. casadi/include/spral_scaling.h +139 -0
  2125. casadi/include/spral_ssids.h +121 -0
  2126. casadi/include/spral_ssmfe.h +268 -0
  2127. casadi/include/superscs/cones.h +185 -0
  2128. casadi/include/superscs/constants.h +144 -0
  2129. casadi/include/superscs/cs.h +109 -0
  2130. casadi/include/superscs/ctrlc.h +77 -0
  2131. casadi/include/superscs/directions.h +125 -0
  2132. casadi/include/superscs/glbopts.h +240 -0
  2133. casadi/include/superscs/linAlg.h +437 -0
  2134. casadi/include/superscs/linSys.h +205 -0
  2135. casadi/include/superscs/linsys/amatrix.h +77 -0
  2136. casadi/include/superscs/linsys/common.h +49 -0
  2137. casadi/include/superscs/normalize.h +138 -0
  2138. casadi/include/superscs/scs.h +656 -0
  2139. casadi/include/superscs/scs_blas.h +79 -0
  2140. casadi/include/superscs/scs_parser.h +187 -0
  2141. casadi/include/superscs/unit_test_util.h +210 -0
  2142. casadi/include/superscs/util.h +354 -0
  2143. casadi/include/trlib/trlib_eigen_inverse.h +118 -0
  2144. casadi/include/trlib/trlib_krylov.h +493 -0
  2145. casadi/include/trlib/trlib_leftmost.h +181 -0
  2146. casadi/include/trlib/trlib_private.h +109 -0
  2147. casadi/include/trlib/trlib_quadratic_zero.h +57 -0
  2148. casadi/include/trlib/trlib_tri_factor.h +409 -0
  2149. casadi/include/trlib/trlib_types.h +36 -0
  2150. casadi/include/trlib.h +44 -0
  2151. casadi/include/zconf.h +545 -0
  2152. casadi/include/zip.h +528 -0
  2153. casadi/include/zipconf.h +48 -0
  2154. casadi/include/zlib.h +1938 -0
  2155. casadi/ipopt.lib +0 -0
  2156. casadi/lapack.lib +0 -0
  2157. casadi/libCbc-3.dll +0 -0
  2158. casadi/libCbc.dll.a +0 -0
  2159. casadi/libCbc.la +35 -0
  2160. casadi/libCbcSolver-3.dll +0 -0
  2161. casadi/libCbcSolver.dll.a +0 -0
  2162. casadi/libCbcSolver.la +35 -0
  2163. casadi/libCgl-1.dll +0 -0
  2164. casadi/libCgl.dll.a +0 -0
  2165. casadi/libCgl.la +35 -0
  2166. casadi/libClp-1.dll +0 -0
  2167. casadi/libClp.dll.a +0 -0
  2168. casadi/libClp.la +35 -0
  2169. casadi/libClpSolver-1.dll +0 -0
  2170. casadi/libClpSolver.dll.a +0 -0
  2171. casadi/libClpSolver.la +35 -0
  2172. casadi/libCoinUtils-3.dll +0 -0
  2173. casadi/libCoinUtils.dll.a +0 -0
  2174. casadi/libCoinUtils.la +35 -0
  2175. casadi/libOsi-1.dll +0 -0
  2176. casadi/libOsi.dll.a +0 -0
  2177. casadi/libOsi.la +35 -0
  2178. casadi/libOsiCbc-3.dll +0 -0
  2179. casadi/libOsiCbc.dll.a +0 -0
  2180. casadi/libOsiCbc.la +35 -0
  2181. casadi/libOsiClp-1.dll +0 -0
  2182. casadi/libOsiClp.dll.a +0 -0
  2183. casadi/libOsiClp.la +35 -0
  2184. casadi/libOsiCommonTests-1.dll +0 -0
  2185. casadi/libOsiCommonTests.dll.a +0 -0
  2186. casadi/libOsiCommonTests.la +35 -0
  2187. casadi/libalpaqa.dll +0 -0
  2188. casadi/libalpaqa.dll.a +0 -0
  2189. casadi/libatomic-1.dll +0 -0
  2190. casadi/libblasfeo.dll +0 -0
  2191. casadi/libblasfeo.dll.a +0 -0
  2192. casadi/libbonmin-4.dll +0 -0
  2193. casadi/libbonmin.dll.a +0 -0
  2194. casadi/libbonmin.la +35 -0
  2195. casadi/libcasadi-tp-openblas.dll +0 -0
  2196. casadi/libcasadi-tp-openblas.dll.a +0 -0
  2197. casadi/libcasadi.dll +0 -0
  2198. casadi/libcasadi.dll.a +0 -0
  2199. casadi/libcasadi.lib +0 -0
  2200. casadi/libcasadi_archiver_libzip.dll +0 -0
  2201. casadi/libcasadi_archiver_libzip.dll.a +0 -0
  2202. casadi/libcasadi_conic_cbc.dll +0 -0
  2203. casadi/libcasadi_conic_cbc.dll.a +0 -0
  2204. casadi/libcasadi_conic_clp.dll +0 -0
  2205. casadi/libcasadi_conic_clp.dll.a +0 -0
  2206. casadi/libcasadi_conic_cplex.dll +0 -0
  2207. casadi/libcasadi_conic_cplex.dll.a +0 -0
  2208. casadi/libcasadi_conic_daqp.dll +0 -0
  2209. casadi/libcasadi_conic_daqp.dll.a +0 -0
  2210. casadi/libcasadi_conic_fatrop.dll +0 -0
  2211. casadi/libcasadi_conic_fatrop.dll.a +0 -0
  2212. casadi/libcasadi_conic_gurobi.dll +0 -0
  2213. casadi/libcasadi_conic_gurobi.dll.a +0 -0
  2214. casadi/libcasadi_conic_highs.dll +0 -0
  2215. casadi/libcasadi_conic_highs.dll.a +0 -0
  2216. casadi/libcasadi_conic_hpipm.dll +0 -0
  2217. casadi/libcasadi_conic_hpipm.dll.a +0 -0
  2218. casadi/libcasadi_conic_ipqp.dll +0 -0
  2219. casadi/libcasadi_conic_ipqp.dll.a +0 -0
  2220. casadi/libcasadi_conic_nlpsol.dll +0 -0
  2221. casadi/libcasadi_conic_nlpsol.dll.a +0 -0
  2222. casadi/libcasadi_conic_osqp.dll +0 -0
  2223. casadi/libcasadi_conic_osqp.dll.a +0 -0
  2224. casadi/libcasadi_conic_proxqp.dll +0 -0
  2225. casadi/libcasadi_conic_proxqp.dll.a +0 -0
  2226. casadi/libcasadi_conic_qpoases.dll +0 -0
  2227. casadi/libcasadi_conic_qpoases.dll.a +0 -0
  2228. casadi/libcasadi_conic_qrqp.dll +0 -0
  2229. casadi/libcasadi_conic_qrqp.dll.a +0 -0
  2230. casadi/libcasadi_conic_superscs.dll +0 -0
  2231. casadi/libcasadi_conic_superscs.dll.a +0 -0
  2232. casadi/libcasadi_filesystem_ghc.dll +0 -0
  2233. casadi/libcasadi_filesystem_ghc.dll.a +0 -0
  2234. casadi/libcasadi_importer_shell.dll +0 -0
  2235. casadi/libcasadi_importer_shell.dll.a +0 -0
  2236. casadi/libcasadi_integrator_collocation.dll +0 -0
  2237. casadi/libcasadi_integrator_collocation.dll.a +0 -0
  2238. casadi/libcasadi_integrator_cvodes.dll +0 -0
  2239. casadi/libcasadi_integrator_cvodes.dll.a +0 -0
  2240. casadi/libcasadi_integrator_idas.dll +0 -0
  2241. casadi/libcasadi_integrator_idas.dll.a +0 -0
  2242. casadi/libcasadi_integrator_rk.dll +0 -0
  2243. casadi/libcasadi_integrator_rk.dll.a +0 -0
  2244. casadi/libcasadi_interpolant_bspline.dll +0 -0
  2245. casadi/libcasadi_interpolant_bspline.dll.a +0 -0
  2246. casadi/libcasadi_interpolant_linear.dll +0 -0
  2247. casadi/libcasadi_interpolant_linear.dll.a +0 -0
  2248. casadi/libcasadi_linsol_csparse.dll +0 -0
  2249. casadi/libcasadi_linsol_csparse.dll.a +0 -0
  2250. casadi/libcasadi_linsol_csparsecholesky.dll +0 -0
  2251. casadi/libcasadi_linsol_csparsecholesky.dll.a +0 -0
  2252. casadi/libcasadi_linsol_lapacklu.dll +0 -0
  2253. casadi/libcasadi_linsol_lapacklu.dll.a +0 -0
  2254. casadi/libcasadi_linsol_lapackqr.dll +0 -0
  2255. casadi/libcasadi_linsol_lapackqr.dll.a +0 -0
  2256. casadi/libcasadi_linsol_ldl.dll +0 -0
  2257. casadi/libcasadi_linsol_ldl.dll.a +0 -0
  2258. casadi/libcasadi_linsol_lsqr.dll +0 -0
  2259. casadi/libcasadi_linsol_lsqr.dll.a +0 -0
  2260. casadi/libcasadi_linsol_ma27.dll +0 -0
  2261. casadi/libcasadi_linsol_ma27.dll.a +0 -0
  2262. casadi/libcasadi_linsol_mumps.dll +0 -0
  2263. casadi/libcasadi_linsol_mumps.dll.a +0 -0
  2264. casadi/libcasadi_linsol_qr.dll +0 -0
  2265. casadi/libcasadi_linsol_qr.dll.a +0 -0
  2266. casadi/libcasadi_linsol_symbolicqr.dll +0 -0
  2267. casadi/libcasadi_linsol_symbolicqr.dll.a +0 -0
  2268. casadi/libcasadi_linsol_tridiag.dll +0 -0
  2269. casadi/libcasadi_linsol_tridiag.dll.a +0 -0
  2270. casadi/libcasadi_nlpsol_alpaqa.dll +0 -0
  2271. casadi/libcasadi_nlpsol_alpaqa.dll.a +0 -0
  2272. casadi/libcasadi_nlpsol_ampl.dll +0 -0
  2273. casadi/libcasadi_nlpsol_ampl.dll.a +0 -0
  2274. casadi/libcasadi_nlpsol_blocksqp.dll +0 -0
  2275. casadi/libcasadi_nlpsol_blocksqp.dll.a +0 -0
  2276. casadi/libcasadi_nlpsol_bonmin.dll +0 -0
  2277. casadi/libcasadi_nlpsol_bonmin.dll.a +0 -0
  2278. casadi/libcasadi_nlpsol_fatrop.dll +0 -0
  2279. casadi/libcasadi_nlpsol_fatrop.dll.a +0 -0
  2280. casadi/libcasadi_nlpsol_feasiblesqpmethod.dll +0 -0
  2281. casadi/libcasadi_nlpsol_feasiblesqpmethod.dll.a +0 -0
  2282. casadi/libcasadi_nlpsol_ipopt.dll +0 -0
  2283. casadi/libcasadi_nlpsol_ipopt.dll.a +0 -0
  2284. casadi/libcasadi_nlpsol_knitro.dll +0 -0
  2285. casadi/libcasadi_nlpsol_knitro.dll.a +0 -0
  2286. casadi/libcasadi_nlpsol_madnlp.dll +0 -0
  2287. casadi/libcasadi_nlpsol_madnlp.dll.a +0 -0
  2288. casadi/libcasadi_nlpsol_qrsqp.dll +0 -0
  2289. casadi/libcasadi_nlpsol_qrsqp.dll.a +0 -0
  2290. casadi/libcasadi_nlpsol_scpgen.dll +0 -0
  2291. casadi/libcasadi_nlpsol_scpgen.dll.a +0 -0
  2292. casadi/libcasadi_nlpsol_sleqp.dll +0 -0
  2293. casadi/libcasadi_nlpsol_sleqp.dll.a +0 -0
  2294. casadi/libcasadi_nlpsol_snopt.dll +0 -0
  2295. casadi/libcasadi_nlpsol_snopt.dll.a +0 -0
  2296. casadi/libcasadi_nlpsol_sqpmethod.dll +0 -0
  2297. casadi/libcasadi_nlpsol_sqpmethod.dll.a +0 -0
  2298. casadi/libcasadi_nlpsol_worhp.dll +0 -0
  2299. casadi/libcasadi_nlpsol_worhp.dll.a +0 -0
  2300. casadi/libcasadi_rootfinder_fast_newton.dll +0 -0
  2301. casadi/libcasadi_rootfinder_fast_newton.dll.a +0 -0
  2302. casadi/libcasadi_rootfinder_kinsol.dll +0 -0
  2303. casadi/libcasadi_rootfinder_kinsol.dll.a +0 -0
  2304. casadi/libcasadi_rootfinder_newton.dll +0 -0
  2305. casadi/libcasadi_rootfinder_newton.dll.a +0 -0
  2306. casadi/libcasadi_rootfinder_nlpsol.dll +0 -0
  2307. casadi/libcasadi_rootfinder_nlpsol.dll.a +0 -0
  2308. casadi/libcasadi_sundials_common.dll +0 -0
  2309. casadi/libcasadi_sundials_common.dll.a +0 -0
  2310. casadi/libcasadi_xmlfile_tinyxml.dll +0 -0
  2311. casadi/libcasadi_xmlfile_tinyxml.dll.a +0 -0
  2312. casadi/libcoinmetis-2.dll +0 -0
  2313. casadi/libcoinmetis.dll.a +0 -0
  2314. casadi/libcoinmetis.la +41 -0
  2315. casadi/libcoinmumps-3.dll +0 -0
  2316. casadi/libcoinmumps.dll.a +0 -0
  2317. casadi/libcoinmumps.la +41 -0
  2318. casadi/libcplex_adaptor.dll +0 -0
  2319. casadi/libdaqp.dll +0 -0
  2320. casadi/libdaqp.dll.a +0 -0
  2321. casadi/libdaqpstat.a +0 -0
  2322. casadi/libdl.dll +0 -0
  2323. casadi/libdl.dll.a +0 -0
  2324. casadi/libfatrop.dll +0 -0
  2325. casadi/libfatrop.dll.a +0 -0
  2326. casadi/libgcc_s_seh-1.dll +0 -0
  2327. casadi/libgfortran-5.dll +0 -0
  2328. casadi/libgomp-1.dll +0 -0
  2329. casadi/libgurobi_adaptor.dll +0 -0
  2330. casadi/libhighs.dll +0 -0
  2331. casadi/libhighs.dll.a +0 -0
  2332. casadi/libhpipm.dll +0 -0
  2333. casadi/libhpipm.dll.a +0 -0
  2334. casadi/libindirect.a +0 -0
  2335. casadi/libipopt-3.dll +0 -0
  2336. casadi/libipopt.dll.a +0 -0
  2337. casadi/libipopt.la +41 -0
  2338. casadi/liblinsys.a +0 -0
  2339. casadi/libmatlab_ipc.dll +0 -0
  2340. casadi/libmatlab_ipc.dll.a +0 -0
  2341. casadi/libosqp.a +0 -0
  2342. casadi/libosqp.dll +0 -0
  2343. casadi/libosqp.dll.a +0 -0
  2344. casadi/libqdldl.a +0 -0
  2345. casadi/libqdldl.dll +0 -0
  2346. casadi/libqdldl.dll.a +0 -0
  2347. casadi/libquadmath-0.dll +0 -0
  2348. casadi/libsipopt-3.dll +0 -0
  2349. casadi/libsipopt.dll.a +0 -0
  2350. casadi/libsipopt.la +41 -0
  2351. casadi/libsleqp.dll +0 -0
  2352. casadi/libsleqp.dll.a +0 -0
  2353. casadi/libspral.a +0 -0
  2354. casadi/libssp-0.dll +0 -0
  2355. casadi/libstdc++-6.dll +0 -0
  2356. casadi/libsuperscs.a +0 -0
  2357. casadi/libtrlib.dll +0 -0
  2358. casadi/libtrlib.dll.a +0 -0
  2359. casadi/libwinpthread-1.dll +0 -0
  2360. casadi/libzip.a +0 -0
  2361. casadi/libzlib.dll +0 -0
  2362. casadi/libzlib.dll.a +0 -0
  2363. casadi/libzlibstatic.a +0 -0
  2364. casadi/matlab_ipc.lib +0 -0
  2365. casadi/osqp.lib +0 -0
  2366. casadi/pkgconfig/blas.pc +11 -0
  2367. casadi/pkgconfig/bonmin.pc +12 -0
  2368. casadi/pkgconfig/casadi.pc +12 -0
  2369. casadi/pkgconfig/cbc.pc +12 -0
  2370. casadi/pkgconfig/cgl.pc +12 -0
  2371. casadi/pkgconfig/clp.pc +12 -0
  2372. casadi/pkgconfig/coinmetis.pc +13 -0
  2373. casadi/pkgconfig/coinmumps.pc +15 -0
  2374. casadi/pkgconfig/coinutils.pc +12 -0
  2375. casadi/pkgconfig/highs.pc +12 -0
  2376. casadi/pkgconfig/ipopt.pc +15 -0
  2377. casadi/pkgconfig/lapack.pc +11 -0
  2378. casadi/pkgconfig/libzip.pc +14 -0
  2379. casadi/pkgconfig/openblas.pc +11 -0
  2380. casadi/pkgconfig/osi-cbc.pc +12 -0
  2381. casadi/pkgconfig/osi-clp.pc +12 -0
  2382. casadi/pkgconfig/osi-unittests.pc +12 -0
  2383. casadi/pkgconfig/osi.pc +12 -0
  2384. casadi/pkgconfig/proxsuite.pc +22 -0
  2385. casadi/pkgconfig/sleqp.pc +10 -0
  2386. casadi/sleqp.lib +0 -0
  2387. casadi/spral_ssids.exe +0 -0
  2388. casadi/std-e414687e404555e5.dll +0 -0
  2389. casadi/tools/__init__.py +54 -0
  2390. casadi/tools/bounds.py +107 -0
  2391. casadi/tools/graph/__init__.py +35 -0
  2392. casadi/tools/graph/graph.py +747 -0
  2393. casadi/tools/in_out.py +89 -0
  2394. casadi/tools/structure3.py +1441 -0
  2395. casadi-3.7.2.dist-info/METADATA +45 -0
  2396. casadi-3.7.2.dist-info/RECORD +2398 -0
  2397. casadi-3.7.2.dist-info/WHEEL +4 -0
  2398. dummy.txt +1 -0
@@ -0,0 +1,4321 @@
1
+ /* $Id$ */
2
+ // Copyright (C) 2002, International Business Machines
3
+ // Corporation and others. All Rights Reserved.
4
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
5
+
6
+ #include "CoinPragma.hpp"
7
+ #include "CoinTime.hpp"
8
+ #include "CbcOrClpParam.hpp"
9
+
10
+ #include <string>
11
+ #include <iostream>
12
+ #include <cassert>
13
+
14
+ #ifdef COIN_HAS_CBC
15
+ #ifdef COIN_HAS_CLP
16
+ #include "OsiClpSolverInterface.hpp"
17
+ #include "ClpSimplex.hpp"
18
+ #endif
19
+ #include "CbcModel.hpp"
20
+ #endif
21
+ #include "CoinHelperFunctions.hpp"
22
+ #ifdef COIN_HAS_CLP
23
+ #include "ClpSimplex.hpp"
24
+ #include "ClpFactorization.hpp"
25
+ #endif
26
+ #ifdef COIN_HAS_READLINE
27
+ #include <readline/readline.h>
28
+ #include <readline/history.h>
29
+ #endif
30
+ #ifdef COIN_HAS_CBC
31
+ // from CoinSolve
32
+ static char coin_prompt[] = "Coin:";
33
+ #else
34
+ static char coin_prompt[] = "Clp:";
35
+ #endif
36
+ #ifdef CLP_CILK
37
+ #ifndef CBC_THREAD
38
+ #define CBC_THREAD
39
+ #endif
40
+ #endif
41
+ #if defined(COIN_HAS_WSMP) && !defined(USE_EKKWSSMP)
42
+ #ifndef CBC_THREAD
43
+ #define CBC_THREAD
44
+ #endif
45
+ #endif
46
+ #include "ClpConfig.h"
47
+ #ifdef CLP_HAS_ABC
48
+ #include "AbcCommon.hpp"
49
+ #endif
50
+ static bool doPrinting = true;
51
+ static std::string afterEquals = "";
52
+ static char printArray[250];
53
+ #if COIN_INT_MAX == 0
54
+ #undef COIN_INT_MAX
55
+ #define COIN_INT_MAX 2147483647
56
+ #endif
57
+ #if FLUSH_PRINT_BUFFER > 2
58
+ int coinFlushBufferFlag = 0;
59
+ #endif
60
+ void setCbcOrClpPrinting(bool yesNo)
61
+ {
62
+ doPrinting = yesNo;
63
+ }
64
+ //#############################################################################
65
+ // Constructors / Destructor / Assignment
66
+ //#############################################################################
67
+
68
+ //-------------------------------------------------------------------
69
+ // Default Constructor
70
+ //-------------------------------------------------------------------
71
+ CbcOrClpParam::CbcOrClpParam()
72
+ : type_(CBC_PARAM_NOTUSED_INVALID)
73
+ , lowerDoubleValue_(0.0)
74
+ , upperDoubleValue_(0.0)
75
+ , lowerIntValue_(0)
76
+ , upperIntValue_(0)
77
+ , lengthName_(0)
78
+ , lengthMatch_(0)
79
+ , definedKeyWords_()
80
+ , name_()
81
+ , shortHelp_()
82
+ , longHelp_()
83
+ , action_(CBC_PARAM_NOTUSED_INVALID)
84
+ , currentKeyWord_(-1)
85
+ , display_(0)
86
+ , intValue_(-1)
87
+ , doubleValue_(-1.0)
88
+ , stringValue_("")
89
+ , whereUsed_(7)
90
+ , fakeKeyWord_(-1)
91
+ , fakeValue_(0)
92
+ {
93
+ }
94
+ // Other constructors
95
+ CbcOrClpParam::CbcOrClpParam(std::string name, std::string help,
96
+ double lower, double upper, CbcOrClpParameterType type,
97
+ int display)
98
+ : type_(type)
99
+ , lowerIntValue_(0)
100
+ , upperIntValue_(0)
101
+ , definedKeyWords_()
102
+ , name_(name)
103
+ , shortHelp_(help)
104
+ , longHelp_()
105
+ , action_(type)
106
+ , currentKeyWord_(-1)
107
+ , display_(display)
108
+ , intValue_(-1)
109
+ , doubleValue_(-1.0)
110
+ , stringValue_("")
111
+ , whereUsed_(7)
112
+ , fakeKeyWord_(-1)
113
+ , fakeValue_(0)
114
+ {
115
+ lowerDoubleValue_ = lower;
116
+ upperDoubleValue_ = upper;
117
+ gutsOfConstructor();
118
+ }
119
+ CbcOrClpParam::CbcOrClpParam(std::string name, std::string help,
120
+ int lower, int upper, CbcOrClpParameterType type,
121
+ int display)
122
+ : type_(type)
123
+ , lowerDoubleValue_(0.0)
124
+ , upperDoubleValue_(0.0)
125
+ , definedKeyWords_()
126
+ , name_(name)
127
+ , shortHelp_(help)
128
+ , longHelp_()
129
+ , action_(type)
130
+ , currentKeyWord_(-1)
131
+ , display_(display)
132
+ , intValue_(-1)
133
+ , doubleValue_(-1.0)
134
+ , stringValue_("")
135
+ , whereUsed_(7)
136
+ , fakeKeyWord_(-1)
137
+ , fakeValue_(0)
138
+ {
139
+ gutsOfConstructor();
140
+ lowerIntValue_ = lower;
141
+ upperIntValue_ = upper;
142
+ }
143
+ // Other strings will be added by append
144
+ CbcOrClpParam::CbcOrClpParam(std::string name, std::string help,
145
+ std::string firstValue,
146
+ CbcOrClpParameterType type, int whereUsed,
147
+ int display)
148
+ : type_(type)
149
+ , lowerDoubleValue_(0.0)
150
+ , upperDoubleValue_(0.0)
151
+ , lowerIntValue_(0)
152
+ , upperIntValue_(0)
153
+ , definedKeyWords_()
154
+ , name_(name)
155
+ , shortHelp_(help)
156
+ , longHelp_()
157
+ , action_(type)
158
+ , currentKeyWord_(0)
159
+ , display_(display)
160
+ , intValue_(-1)
161
+ , doubleValue_(-1.0)
162
+ , stringValue_("")
163
+ , whereUsed_(whereUsed)
164
+ , fakeKeyWord_(-1)
165
+ , fakeValue_(0)
166
+ {
167
+ gutsOfConstructor();
168
+ definedKeyWords_.push_back(firstValue);
169
+ }
170
+ // Action
171
+ CbcOrClpParam::CbcOrClpParam(std::string name, std::string help,
172
+ CbcOrClpParameterType type, int whereUsed,
173
+ int display)
174
+ : type_(type)
175
+ , lowerDoubleValue_(0.0)
176
+ , upperDoubleValue_(0.0)
177
+ , lowerIntValue_(0)
178
+ , upperIntValue_(0)
179
+ , definedKeyWords_()
180
+ , name_(name)
181
+ , shortHelp_(help)
182
+ , longHelp_()
183
+ , action_(type)
184
+ , currentKeyWord_(-1)
185
+ , display_(display)
186
+ , intValue_(-1)
187
+ , doubleValue_(-1.0)
188
+ , stringValue_("")
189
+ , fakeKeyWord_(-1)
190
+ , fakeValue_(0)
191
+ {
192
+ whereUsed_ = whereUsed;
193
+ gutsOfConstructor();
194
+ }
195
+
196
+ //-------------------------------------------------------------------
197
+ // Copy constructor
198
+ //-------------------------------------------------------------------
199
+ CbcOrClpParam::CbcOrClpParam(const CbcOrClpParam &rhs)
200
+ {
201
+ type_ = rhs.type_;
202
+ lowerDoubleValue_ = rhs.lowerDoubleValue_;
203
+ upperDoubleValue_ = rhs.upperDoubleValue_;
204
+ lowerIntValue_ = rhs.lowerIntValue_;
205
+ upperIntValue_ = rhs.upperIntValue_;
206
+ lengthName_ = rhs.lengthName_;
207
+ lengthMatch_ = rhs.lengthMatch_;
208
+ definedKeyWords_ = rhs.definedKeyWords_;
209
+ name_ = rhs.name_;
210
+ shortHelp_ = rhs.shortHelp_;
211
+ longHelp_ = rhs.longHelp_;
212
+ action_ = rhs.action_;
213
+ currentKeyWord_ = rhs.currentKeyWord_;
214
+ display_ = rhs.display_;
215
+ intValue_ = rhs.intValue_;
216
+ doubleValue_ = rhs.doubleValue_;
217
+ stringValue_ = rhs.stringValue_;
218
+ whereUsed_ = rhs.whereUsed_;
219
+ fakeKeyWord_ = rhs.fakeKeyWord_;
220
+ fakeValue_ = rhs.fakeValue_;
221
+ }
222
+
223
+ //-------------------------------------------------------------------
224
+ // Destructor
225
+ //-------------------------------------------------------------------
226
+ CbcOrClpParam::~CbcOrClpParam()
227
+ {
228
+ }
229
+
230
+ //----------------------------------------------------------------
231
+ // Assignment operator
232
+ //-------------------------------------------------------------------
233
+ CbcOrClpParam &
234
+ CbcOrClpParam::operator=(const CbcOrClpParam &rhs)
235
+ {
236
+ if (this != &rhs) {
237
+ type_ = rhs.type_;
238
+ lowerDoubleValue_ = rhs.lowerDoubleValue_;
239
+ upperDoubleValue_ = rhs.upperDoubleValue_;
240
+ lowerIntValue_ = rhs.lowerIntValue_;
241
+ upperIntValue_ = rhs.upperIntValue_;
242
+ lengthName_ = rhs.lengthName_;
243
+ lengthMatch_ = rhs.lengthMatch_;
244
+ definedKeyWords_ = rhs.definedKeyWords_;
245
+ name_ = rhs.name_;
246
+ shortHelp_ = rhs.shortHelp_;
247
+ longHelp_ = rhs.longHelp_;
248
+ action_ = rhs.action_;
249
+ currentKeyWord_ = rhs.currentKeyWord_;
250
+ display_ = rhs.display_;
251
+ intValue_ = rhs.intValue_;
252
+ doubleValue_ = rhs.doubleValue_;
253
+ stringValue_ = rhs.stringValue_;
254
+ whereUsed_ = rhs.whereUsed_;
255
+ fakeKeyWord_ = rhs.fakeKeyWord_;
256
+ fakeValue_ = rhs.fakeValue_;
257
+ }
258
+ return *this;
259
+ }
260
+ void CbcOrClpParam::gutsOfConstructor()
261
+ {
262
+ std::string::size_type shriekPos = name_.find('!');
263
+ lengthName_ = static_cast< unsigned int >(name_.length());
264
+ if (shriekPos == std::string::npos) {
265
+ //does not contain '!'
266
+ lengthMatch_ = lengthName_;
267
+ } else {
268
+ lengthMatch_ = static_cast< unsigned int >(shriekPos);
269
+ name_ = name_.substr(0, shriekPos) + name_.substr(shriekPos + 1);
270
+ lengthName_--;
271
+ }
272
+ }
273
+ // Sets value of fake keyword to current size of keywords
274
+ void CbcOrClpParam::setFakeKeyWord(int fakeValue)
275
+ {
276
+ fakeKeyWord_ = static_cast< int >(definedKeyWords_.size());
277
+ assert(fakeKeyWord_ > 0);
278
+ fakeValue_ = fakeValue;
279
+ assert(fakeValue_ >= 0);
280
+ }
281
+ /* Returns current parameter option position
282
+ but if fake keyword returns fakeValue_
283
+ */
284
+ int CbcOrClpParam::currentOptionAsInteger() const
285
+ {
286
+ int fakeInteger;
287
+ return currentOptionAsInteger(fakeInteger);
288
+ }
289
+ /* Returns current parameter option position
290
+ but if fake keyword returns fakeValue_ and sets
291
+ fakeInteger to value
292
+ */
293
+ int CbcOrClpParam::currentOptionAsInteger(int &fakeInteger) const
294
+ {
295
+ fakeInteger = -COIN_INT_MAX;
296
+ if (fakeKeyWord_ < 0) {
297
+ return currentKeyWord_;
298
+ } else if (currentKeyWord_ >= 0 && currentKeyWord_ < fakeKeyWord_) {
299
+ return currentKeyWord_;
300
+ } else {
301
+ // fake
302
+ if (currentKeyWord_ < 0)
303
+ fakeInteger = currentKeyWord_ + 1000;
304
+ else
305
+ fakeInteger = currentKeyWord_ - 1000;
306
+ return fakeValue_;
307
+ }
308
+ }
309
+ // Returns length of name for printing
310
+ int CbcOrClpParam::lengthMatchName() const
311
+ {
312
+ if (lengthName_ == lengthMatch_)
313
+ return lengthName_;
314
+ else
315
+ return lengthName_ + 2;
316
+ }
317
+ // Insert string (only valid for keywords)
318
+ void CbcOrClpParam::append(std::string keyWord)
319
+ {
320
+ definedKeyWords_.push_back(keyWord);
321
+ }
322
+
323
+ int CbcOrClpParam::matches(std::string input) const
324
+ {
325
+ // look up strings to do more elegantly
326
+ if (input.length() > lengthName_) {
327
+ return 0;
328
+ } else {
329
+ unsigned int i;
330
+ for (i = 0; i < input.length(); i++) {
331
+ if (tolower(name_[i]) != tolower(input[i]))
332
+ break;
333
+ }
334
+ if (i < input.length()) {
335
+ return 0;
336
+ } else if (i >= lengthMatch_) {
337
+ return 1;
338
+ } else {
339
+ // matched but too short
340
+ return 2;
341
+ }
342
+ }
343
+ }
344
+ // Returns name which could match
345
+ std::string
346
+ CbcOrClpParam::matchName() const
347
+ {
348
+ if (lengthMatch_ == lengthName_)
349
+ return name_;
350
+ else
351
+ return name_.substr(0, lengthMatch_) + "(" + name_.substr(lengthMatch_) + ")";
352
+ }
353
+
354
+ // Returns parameter option which matches (-1 if none)
355
+ int CbcOrClpParam::parameterOption(std::string check) const
356
+ {
357
+ int numberItems = static_cast< int >(definedKeyWords_.size());
358
+ if (!numberItems) {
359
+ return -1;
360
+ } else {
361
+ int whichItem = 0;
362
+ unsigned int it;
363
+ for (it = 0; it < definedKeyWords_.size(); it++) {
364
+ std::string thisOne = definedKeyWords_[it];
365
+ std::string::size_type shriekPos = thisOne.find('!');
366
+ size_t length1 = thisOne.length();
367
+ size_t length2 = length1;
368
+ if (shriekPos != std::string::npos) {
369
+ //contains '!'
370
+ length2 = shriekPos;
371
+ thisOne = thisOne.substr(0, shriekPos) + thisOne.substr(shriekPos + 1);
372
+ length1 = thisOne.length();
373
+ }
374
+ if (check.length() <= length1 && length2 <= check.length()) {
375
+ unsigned int i;
376
+ for (i = 0; i < check.length(); i++) {
377
+ if (tolower(thisOne[i]) != tolower(check[i]))
378
+ break;
379
+ }
380
+ if (i < check.length()) {
381
+ whichItem++;
382
+ } else if (i >= length2) {
383
+ break;
384
+ }
385
+ } else {
386
+ whichItem++;
387
+ }
388
+ }
389
+ if (whichItem < numberItems) {
390
+ return whichItem;
391
+ } else {
392
+ if (fakeKeyWord_ <= 0)
393
+ return -1;
394
+ // allow plus or minus
395
+ int n;
396
+ if (check.substr(0, 4) == "plus" || check.substr(0, 4) == "PLUS") {
397
+ n = 4;
398
+ } else if (check.substr(0, 5) == "minus" || check.substr(0, 5) == "MINUS") {
399
+ n = 5;
400
+ } else {
401
+ return -1;
402
+ }
403
+ int value = 0;
404
+ std::string field = check.substr(n);
405
+ if (field != "EOL") {
406
+ const char *start = field.c_str();
407
+ char *endPointer = NULL;
408
+ // check valid
409
+ value = static_cast< int >(strtol(start, &endPointer, 10));
410
+ if (*endPointer != '\0') {
411
+ return -1;
412
+ }
413
+ if (n == 4)
414
+ return value + 1000;
415
+ else
416
+ return -value - 1000;
417
+ } else {
418
+ return -1;
419
+ }
420
+ }
421
+ }
422
+ }
423
+ // Prints parameter options
424
+ void CbcOrClpParam::printOptions() const
425
+ {
426
+ std::cout << "<Possible options for " << name_ << " are:";
427
+ unsigned int it;
428
+ for (it = 0; it < definedKeyWords_.size(); it++) {
429
+ std::string thisOne = definedKeyWords_[it];
430
+ std::string::size_type shriekPos = thisOne.find('!');
431
+ if (shriekPos != std::string::npos) {
432
+ //contains '!'
433
+ thisOne = thisOne.substr(0, shriekPos) + "(" + thisOne.substr(shriekPos + 1) + ")";
434
+ }
435
+ std::cout << " " << thisOne;
436
+ }
437
+ assert(currentKeyWord_ >= 0 && currentKeyWord_ < static_cast< int >(definedKeyWords_.size()));
438
+ std::string current = definedKeyWords_[currentKeyWord_];
439
+ std::string::size_type shriekPos = current.find('!');
440
+ if (shriekPos != std::string::npos) {
441
+ //contains '!'
442
+ current = current.substr(0, shriekPos) + "(" + current.substr(shriekPos + 1) + ")";
443
+ }
444
+ std::cout << ";\n\tcurrent " << current << ">" << std::endl;
445
+ }
446
+ // Print action and string
447
+ void CbcOrClpParam::printString() const
448
+ {
449
+ if (name_ == "directory")
450
+ std::cout << "Current working directory is " << stringValue_ << std::endl;
451
+ else if (name_.substr(0, 6) == "printM")
452
+ std::cout << "Current value of printMask is " << stringValue_ << std::endl;
453
+ else
454
+ std::cout << "Current default (if $ as parameter) for " << name_
455
+ << " is " << stringValue_ << std::endl;
456
+ }
457
+ void CoinReadPrintit(const char *input)
458
+ {
459
+ int length = static_cast< int >(strlen(input));
460
+ assert(length <= 10000);
461
+ char temp[10001];
462
+ int i;
463
+ int n = 0;
464
+ for (i = 0; i < length; i++) {
465
+ if (input[i] == '\n') {
466
+ temp[n] = '\0';
467
+ std::cout << temp << std::endl;
468
+ n = 0;
469
+ } else if (n >= 65 && input[i] == ' ') {
470
+ temp[n] = '\0';
471
+ std::cout << temp << std::endl;
472
+ n = 0;
473
+ } else if (n || input[i] != ' ') {
474
+ temp[n++] = input[i];
475
+ }
476
+ }
477
+ if (n) {
478
+ temp[n] = '\0';
479
+ std::cout << temp << std::endl;
480
+ }
481
+ }
482
+ // Print Long help
483
+ void CbcOrClpParam::printLongHelp() const
484
+ {
485
+ if (type_ >= 1 && type_ < 600) {
486
+ CoinReadPrintit(longHelp_.c_str());
487
+ if (type_ < CLP_PARAM_INT_SOLVERLOGLEVEL) {
488
+ printf("<Range of values is %g to %g;\n\tcurrent %g>\n", lowerDoubleValue_, upperDoubleValue_, doubleValue_);
489
+ assert(upperDoubleValue_ > lowerDoubleValue_);
490
+ } else if (type_ < CLP_PARAM_STR_DIRECTION) {
491
+ printf("<Range of values is %d to %d;\n\tcurrent %d>\n", lowerIntValue_, upperIntValue_, intValue_);
492
+ assert(upperIntValue_ > lowerIntValue_);
493
+ } else if (type_ < CLP_PARAM_ACTION_DIRECTORY) {
494
+ printOptions();
495
+ }
496
+ }
497
+ }
498
+ #ifdef COIN_HAS_CBC
499
+ int CbcOrClpParam::setDoubleParameter(OsiSolverInterface *model, double value)
500
+ {
501
+ int returnCode;
502
+ setDoubleParameterWithMessage(model, value, returnCode);
503
+ if (doPrinting && strlen(printArray))
504
+ std::cout << printArray << std::endl;
505
+ return returnCode;
506
+ }
507
+ // Sets double parameter and returns printable string and error code
508
+ const char *
509
+ CbcOrClpParam::setDoubleParameterWithMessage(OsiSolverInterface *model, double value, int &returnCode)
510
+ {
511
+ if (value < lowerDoubleValue_ || value > upperDoubleValue_) {
512
+ sprintf(printArray, "%g was provided for %s - valid range is %g to %g",
513
+ value, name_.c_str(), lowerDoubleValue_, upperDoubleValue_);
514
+ std::cout << value << " was provided for " << name_ << " - valid range is " << lowerDoubleValue_ << " to " << upperDoubleValue_ << std::endl;
515
+ returnCode = 1;
516
+ } else {
517
+ double oldValue = doubleValue_;
518
+ doubleValue_ = value;
519
+ switch (type_) {
520
+ case CLP_PARAM_DBL_DUALTOLERANCE:
521
+ model->getDblParam(OsiDualTolerance, oldValue);
522
+ model->setDblParam(OsiDualTolerance, value);
523
+ break;
524
+ case CLP_PARAM_DBL_PRIMALTOLERANCE:
525
+ model->getDblParam(OsiPrimalTolerance, oldValue);
526
+ model->setDblParam(OsiPrimalTolerance, value);
527
+ break;
528
+ default:
529
+ break;
530
+ }
531
+ sprintf(printArray, "%s was changed from %g to %g",
532
+ name_.c_str(), oldValue, value);
533
+ returnCode = 0;
534
+ }
535
+ return printArray;
536
+ }
537
+ #endif
538
+ #ifdef COIN_HAS_CLP
539
+ int CbcOrClpParam::setDoubleParameter(ClpSimplex *model, double value)
540
+ {
541
+ int returnCode;
542
+ setDoubleParameterWithMessage(model, value, returnCode);
543
+ if (doPrinting && strlen(printArray))
544
+ std::cout << printArray << std::endl;
545
+ return returnCode;
546
+ }
547
+ // Sets int parameter and returns printable string and error code
548
+ const char *
549
+ CbcOrClpParam::setDoubleParameterWithMessage(ClpSimplex *model, double value, int &returnCode)
550
+ {
551
+ double oldValue = doubleValue_;
552
+ if (value < lowerDoubleValue_ || value > upperDoubleValue_) {
553
+ sprintf(printArray, "%g was provided for %s - valid range is %g to %g",
554
+ value, name_.c_str(), lowerDoubleValue_, upperDoubleValue_);
555
+ returnCode = 1;
556
+ } else {
557
+ sprintf(printArray, "%s was changed from %g to %g",
558
+ name_.c_str(), oldValue, value);
559
+ returnCode = 0;
560
+ doubleValue_ = value;
561
+ switch (type_) {
562
+ case CLP_PARAM_DBL_DUALTOLERANCE:
563
+ model->setDualTolerance(value);
564
+ break;
565
+ case CLP_PARAM_DBL_PRIMALTOLERANCE:
566
+ model->setPrimalTolerance(value);
567
+ break;
568
+ case CLP_PARAM_DBL_ZEROTOLERANCE:
569
+ model->setSmallElementValue(value);
570
+ break;
571
+ case CLP_PARAM_DBL_DUALBOUND:
572
+ model->setDualBound(value);
573
+ break;
574
+ case CLP_PARAM_DBL_PRIMALWEIGHT:
575
+ model->setInfeasibilityCost(value);
576
+ break;
577
+ #ifndef COIN_HAS_CBC
578
+ case CLP_PARAM_DBL_TIMELIMIT:
579
+ model->setMaximumSeconds(value);
580
+ break;
581
+ #endif
582
+ case CLP_PARAM_DBL_OBJSCALE:
583
+ model->setObjectiveScale(value);
584
+ break;
585
+ case CLP_PARAM_DBL_RHSSCALE:
586
+ model->setRhsScale(value);
587
+ break;
588
+ case CLP_PARAM_DBL_PRESOLVETOLERANCE:
589
+ model->setDblParam(ClpPresolveTolerance, value);
590
+ break;
591
+ default:
592
+ break;
593
+ }
594
+ }
595
+ return printArray;
596
+ }
597
+ double
598
+ CbcOrClpParam::doubleParameter(ClpSimplex *model) const
599
+ {
600
+ double value;
601
+ switch (type_) {
602
+ #ifndef COIN_HAS_CBC
603
+ case CLP_PARAM_DBL_DUALTOLERANCE:
604
+ value = model->dualTolerance();
605
+ break;
606
+ case CLP_PARAM_DBL_PRIMALTOLERANCE:
607
+ value = model->primalTolerance();
608
+ break;
609
+ #endif
610
+ case CLP_PARAM_DBL_ZEROTOLERANCE:
611
+ value = model->getSmallElementValue();
612
+ break;
613
+ case CLP_PARAM_DBL_DUALBOUND:
614
+ value = model->dualBound();
615
+ break;
616
+ case CLP_PARAM_DBL_PRIMALWEIGHT:
617
+ value = model->infeasibilityCost();
618
+ break;
619
+ #ifndef COIN_HAS_CBC
620
+ case CLP_PARAM_DBL_TIMELIMIT:
621
+ value = model->maximumSeconds();
622
+ break;
623
+ #endif
624
+ case CLP_PARAM_DBL_OBJSCALE:
625
+ value = model->objectiveScale();
626
+ break;
627
+ case CLP_PARAM_DBL_RHSSCALE:
628
+ value = model->rhsScale();
629
+ break;
630
+ case CLP_PARAM_DBL_PRESOLVETOLERANCE:
631
+ value = model->presolveTolerance();
632
+ break;
633
+ default:
634
+ value = doubleValue_;
635
+ break;
636
+ }
637
+ return value;
638
+ }
639
+ int CbcOrClpParam::setIntParameter(ClpSimplex *model, int value)
640
+ {
641
+ int returnCode;
642
+ setIntParameterWithMessage(model, value, returnCode);
643
+ if (doPrinting && strlen(printArray))
644
+ std::cout << printArray << std::endl;
645
+ return returnCode;
646
+ }
647
+ // Sets int parameter and returns printable string and error code
648
+ const char *
649
+ CbcOrClpParam::setIntParameterWithMessage(ClpSimplex *model, int value, int &returnCode)
650
+ {
651
+ int oldValue = intValue_;
652
+ if (value < lowerIntValue_ || value > upperIntValue_) {
653
+ sprintf(printArray, "%d was provided for %s - valid range is %d to %d",
654
+ value, name_.c_str(), lowerIntValue_, upperIntValue_);
655
+ returnCode = 1;
656
+ } else {
657
+ intValue_ = value;
658
+ sprintf(printArray, "%s was changed from %d to %d",
659
+ name_.c_str(), oldValue, value);
660
+ returnCode = 0;
661
+ switch (type_) {
662
+ case CLP_PARAM_INT_SOLVERLOGLEVEL:
663
+ model->setLogLevel(value);
664
+ if (value > 2)
665
+ model->factorization()->messageLevel(8);
666
+ else
667
+ model->factorization()->messageLevel(0);
668
+ break;
669
+ case CLP_PARAM_INT_MAXFACTOR:
670
+ model->factorization()->maximumPivots(value);
671
+ break;
672
+ case CLP_PARAM_INT_PERTVALUE:
673
+ model->setPerturbation(value);
674
+ break;
675
+ case CLP_PARAM_INT_MAXITERATION:
676
+ model->setMaximumIterations(value);
677
+ break;
678
+ case CLP_PARAM_INT_SPECIALOPTIONS:
679
+ model->setSpecialOptions(value);
680
+ break;
681
+ case CLP_PARAM_INT_RANDOMSEED: {
682
+ if (value == 0) {
683
+ double time = fabs(CoinGetTimeOfDay());
684
+ while (time >= COIN_INT_MAX)
685
+ time *= 0.5;
686
+ value = static_cast< int >(time);
687
+ sprintf(printArray, "using time of day %s was changed from %d to %d",
688
+ name_.c_str(), oldValue, value);
689
+ }
690
+ model->setRandomSeed(value);
691
+ } break;
692
+ case CLP_PARAM_INT_MORESPECIALOPTIONS:
693
+ model->setMoreSpecialOptions(value);
694
+ break;
695
+ case CLP_PARAM_INT_VECTOR_MODE:
696
+ model->setVectorMode(value);
697
+ break;
698
+ #ifndef COIN_HAS_CBC
699
+ #ifdef CBC_THREAD
700
+ case CBC_PARAM_INT_THREADS:
701
+ model->setNumberThreads(value);
702
+ break;
703
+ #endif
704
+ #endif
705
+ default:
706
+ break;
707
+ }
708
+ }
709
+ return printArray;
710
+ }
711
+ int CbcOrClpParam::intParameter(ClpSimplex *model) const
712
+ {
713
+ int value;
714
+ switch (type_) {
715
+ #ifndef COIN_HAS_CBC
716
+ case CLP_PARAM_INT_SOLVERLOGLEVEL:
717
+ value = model->logLevel();
718
+ break;
719
+ #endif
720
+ case CLP_PARAM_INT_MAXFACTOR:
721
+ value = model->factorization()->maximumPivots();
722
+ break;
723
+ break;
724
+ case CLP_PARAM_INT_PERTVALUE:
725
+ value = model->perturbation();
726
+ break;
727
+ case CLP_PARAM_INT_MAXITERATION:
728
+ value = model->maximumIterations();
729
+ break;
730
+ case CLP_PARAM_INT_SPECIALOPTIONS:
731
+ value = model->specialOptions();
732
+ break;
733
+ case CLP_PARAM_INT_RANDOMSEED:
734
+ value = model->randomNumberGenerator()->getSeed();
735
+ break;
736
+ case CLP_PARAM_INT_MORESPECIALOPTIONS:
737
+ value = model->moreSpecialOptions();
738
+ break;
739
+ case CLP_PARAM_INT_VECTOR_MODE:
740
+ value = model->vectorMode();
741
+ break;
742
+ #ifndef COIN_HAS_CBC
743
+ #ifdef CBC_THREAD
744
+ case CBC_PARAM_INT_THREADS:
745
+ value = model->numberThreads();
746
+ break;
747
+ #endif
748
+ #endif
749
+ default:
750
+ value = intValue_;
751
+ break;
752
+ }
753
+ return value;
754
+ }
755
+ #endif
756
+ int CbcOrClpParam::checkDoubleParameter(double value) const
757
+ {
758
+ if (value < lowerDoubleValue_ || value > upperDoubleValue_) {
759
+ std::cout << value << " was provided for " << name_ << " - valid range is " << lowerDoubleValue_ << " to " << upperDoubleValue_ << std::endl;
760
+ return 1;
761
+ } else {
762
+ return 0;
763
+ }
764
+ }
765
+ #ifdef COIN_HAS_CBC
766
+ double
767
+ CbcOrClpParam::doubleParameter(OsiSolverInterface *model) const
768
+ {
769
+ double value = 0.0;
770
+ switch (type_) {
771
+ case CLP_PARAM_DBL_DUALTOLERANCE:
772
+ model->getDblParam(OsiDualTolerance, value);
773
+ break;
774
+ case CLP_PARAM_DBL_PRIMALTOLERANCE:
775
+ model->getDblParam(OsiPrimalTolerance, value);
776
+ break;
777
+ default:
778
+ return doubleValue_;
779
+ break;
780
+ }
781
+ return value;
782
+ }
783
+ int CbcOrClpParam::setIntParameter(OsiSolverInterface *model, int value)
784
+ {
785
+ int returnCode;
786
+ setIntParameterWithMessage(model, value, returnCode);
787
+ if (doPrinting && strlen(printArray))
788
+ std::cout << printArray << std::endl;
789
+ return returnCode;
790
+ }
791
+ // Sets int parameter and returns printable string and error code
792
+ const char *
793
+ CbcOrClpParam::setIntParameterWithMessage(OsiSolverInterface *model, int value, int &returnCode)
794
+ {
795
+ if (value < lowerIntValue_ || value > upperIntValue_) {
796
+ sprintf(printArray, "%d was provided for %s - valid range is %d to %d",
797
+ value, name_.c_str(), lowerIntValue_, upperIntValue_);
798
+ returnCode = 1;
799
+ } else {
800
+ int oldValue = intValue_;
801
+ intValue_ = oldValue;
802
+ switch (type_) {
803
+ case CLP_PARAM_INT_SOLVERLOGLEVEL:
804
+ model->messageHandler()->setLogLevel(value);
805
+ break;
806
+ default:
807
+ break;
808
+ }
809
+ sprintf(printArray, "%s was changed from %d to %d",
810
+ name_.c_str(), oldValue, value);
811
+ returnCode = 0;
812
+ }
813
+ return printArray;
814
+ }
815
+ int CbcOrClpParam::intParameter(OsiSolverInterface *model) const
816
+ {
817
+ int value = 0;
818
+ switch (type_) {
819
+ case CLP_PARAM_INT_SOLVERLOGLEVEL:
820
+ value = model->messageHandler()->logLevel();
821
+ break;
822
+ default:
823
+ value = intValue_;
824
+ break;
825
+ }
826
+ return value;
827
+ }
828
+ int CbcOrClpParam::setDoubleParameter(CbcModel &model, double value)
829
+ {
830
+ int returnCode = 0;
831
+ setDoubleParameterWithMessage(model, value, returnCode);
832
+ if (doPrinting && strlen(printArray))
833
+ std::cout << printArray << std::endl;
834
+ return returnCode;
835
+ }
836
+ // Sets double parameter and returns printable string and error code
837
+ const char *
838
+ CbcOrClpParam::setDoubleParameterWithMessage(CbcModel &model, double value, int &returnCode)
839
+ {
840
+ if (value < lowerDoubleValue_ || value > upperDoubleValue_) {
841
+ sprintf(printArray, "%g was provided for %s - valid range is %g to %g",
842
+ value, name_.c_str(), lowerDoubleValue_, upperDoubleValue_);
843
+ returnCode = 1;
844
+ } else {
845
+ double oldValue = doubleValue_;
846
+ doubleValue_ = value;
847
+ switch (type_) {
848
+ case CBC_PARAM_DBL_INFEASIBILITYWEIGHT:
849
+ oldValue = model.getDblParam(CbcModel::CbcInfeasibilityWeight);
850
+ model.setDblParam(CbcModel::CbcInfeasibilityWeight, value);
851
+ break;
852
+ case CBC_PARAM_DBL_INTEGERTOLERANCE:
853
+ oldValue = model.getDblParam(CbcModel::CbcIntegerTolerance);
854
+ model.setDblParam(CbcModel::CbcIntegerTolerance, value);
855
+ break;
856
+ case CBC_PARAM_DBL_INCREMENT:
857
+ oldValue = model.getDblParam(CbcModel::CbcCutoffIncrement);
858
+ model.setDblParam(CbcModel::CbcCutoffIncrement, value);
859
+ case CBC_PARAM_DBL_ALLOWABLEGAP:
860
+ oldValue = model.getDblParam(CbcModel::CbcAllowableGap);
861
+ model.setDblParam(CbcModel::CbcAllowableGap, value);
862
+ break;
863
+ case CBC_PARAM_DBL_GAPRATIO:
864
+ oldValue = model.getDblParam(CbcModel::CbcAllowableFractionGap);
865
+ model.setDblParam(CbcModel::CbcAllowableFractionGap, value);
866
+ break;
867
+ case CBC_PARAM_DBL_CUTOFF:
868
+ oldValue = model.getCutoff();
869
+ model.setCutoff(value);
870
+ break;
871
+ case CBC_PARAM_DBL_TIMELIMIT_BAB:
872
+ oldValue = model.getDblParam(CbcModel::CbcMaximumSeconds);
873
+ {
874
+ //OsiClpSolverInterface * clpSolver = dynamic_cast< OsiClpSolverInterface*> (model.solver());
875
+ //ClpSimplex * lpSolver = clpSolver->getModelPtr();
876
+ //lpSolver->setMaximumSeconds(value);
877
+ model.setDblParam(CbcModel::CbcMaximumSeconds, value);
878
+ }
879
+ break;
880
+ case CLP_PARAM_DBL_DUALTOLERANCE:
881
+ case CLP_PARAM_DBL_PRIMALTOLERANCE:
882
+ setDoubleParameter(model.solver(), value);
883
+ return 0; // to avoid message
884
+ default:
885
+ break;
886
+ }
887
+ sprintf(printArray, "%s was changed from %g to %g",
888
+ name_.c_str(), oldValue, value);
889
+ returnCode = 0;
890
+ }
891
+ return printArray;
892
+ }
893
+ double
894
+ CbcOrClpParam::doubleParameter(CbcModel &model) const
895
+ {
896
+ double value;
897
+ switch (type_) {
898
+ case CBC_PARAM_DBL_INFEASIBILITYWEIGHT:
899
+ value = model.getDblParam(CbcModel::CbcInfeasibilityWeight);
900
+ break;
901
+ case CBC_PARAM_DBL_INTEGERTOLERANCE:
902
+ value = model.getDblParam(CbcModel::CbcIntegerTolerance);
903
+ break;
904
+ case CBC_PARAM_DBL_INCREMENT:
905
+ value = model.getDblParam(CbcModel::CbcCutoffIncrement);
906
+ break;
907
+ case CBC_PARAM_DBL_ALLOWABLEGAP:
908
+ value = model.getDblParam(CbcModel::CbcAllowableGap);
909
+ break;
910
+ case CBC_PARAM_DBL_GAPRATIO:
911
+ value = model.getDblParam(CbcModel::CbcAllowableFractionGap);
912
+ break;
913
+ case CBC_PARAM_DBL_CUTOFF:
914
+ value = model.getCutoff();
915
+ break;
916
+ case CBC_PARAM_DBL_TIMELIMIT_BAB:
917
+ value = model.getDblParam(CbcModel::CbcMaximumSeconds);
918
+ break;
919
+ case CLP_PARAM_DBL_DUALTOLERANCE:
920
+ case CLP_PARAM_DBL_PRIMALTOLERANCE:
921
+ value = doubleParameter(model.solver());
922
+ break;
923
+ default:
924
+ value = doubleValue_;
925
+ break;
926
+ }
927
+ return value;
928
+ }
929
+ int CbcOrClpParam::setIntParameter(CbcModel &model, int value)
930
+ {
931
+ int returnCode;
932
+ setIntParameterWithMessage(model, value, returnCode);
933
+ if (doPrinting && strlen(printArray))
934
+ std::cout << printArray << std::endl;
935
+ return returnCode;
936
+ }
937
+ // Sets int parameter and returns printable string and error code
938
+ const char *
939
+ CbcOrClpParam::setIntParameterWithMessage(CbcModel &model, int value, int &returnCode)
940
+ {
941
+ if (value < lowerIntValue_ || value > upperIntValue_) {
942
+ sprintf(printArray, "%d was provided for %s - valid range is %d to %d",
943
+ value, name_.c_str(), lowerIntValue_, upperIntValue_);
944
+ returnCode = 1;
945
+ } else {
946
+ printArray[0] = '\0';
947
+ if (value == intValue_)
948
+ return printArray;
949
+ int oldValue = intValue_;
950
+ intValue_ = value;
951
+ switch (type_) {
952
+ case CLP_PARAM_INT_LOGLEVEL:
953
+ oldValue = model.messageHandler()->logLevel();
954
+ model.messageHandler()->setLogLevel(CoinAbs(value));
955
+ break;
956
+ case CLP_PARAM_INT_SOLVERLOGLEVEL:
957
+ oldValue = model.solver()->messageHandler()->logLevel();
958
+ model.solver()->messageHandler()->setLogLevel(value);
959
+ break;
960
+ case CBC_PARAM_INT_MAXNODES:
961
+ oldValue = model.getIntParam(CbcModel::CbcMaxNumNode);
962
+ model.setIntParam(CbcModel::CbcMaxNumNode, value);
963
+ break;
964
+ case CBC_PARAM_INT_MAXSOLS:
965
+ oldValue = model.getIntParam(CbcModel::CbcMaxNumSol);
966
+ model.setIntParam(CbcModel::CbcMaxNumSol, value);
967
+ break;
968
+ case CBC_PARAM_INT_MAXSAVEDSOLS:
969
+ oldValue = model.maximumSavedSolutions();
970
+ model.setMaximumSavedSolutions(value);
971
+ break;
972
+ case CBC_PARAM_INT_STRONGBRANCHING:
973
+ oldValue = model.numberStrong();
974
+ model.setNumberStrong(value);
975
+ break;
976
+ case CBC_PARAM_INT_NUMBERBEFORE:
977
+ oldValue = model.numberBeforeTrust();
978
+ model.setNumberBeforeTrust(value);
979
+ break;
980
+ case CBC_PARAM_INT_NUMBERANALYZE:
981
+ oldValue = model.numberAnalyzeIterations();
982
+ model.setNumberAnalyzeIterations(value);
983
+ break;
984
+ case CBC_PARAM_INT_CUTPASSINTREE:
985
+ oldValue = model.getMaximumCutPasses();
986
+ model.setMaximumCutPasses(value);
987
+ break;
988
+ case CBC_PARAM_INT_CUTPASS:
989
+ oldValue = model.getMaximumCutPassesAtRoot();
990
+ model.setMaximumCutPassesAtRoot(value);
991
+ break;
992
+ #ifdef COIN_HAS_CBC
993
+ #ifdef CBC_THREAD
994
+ case CBC_PARAM_INT_THREADS:
995
+ oldValue = model.getNumberThreads();
996
+ model.setNumberThreads(value);
997
+ break;
998
+ #endif
999
+ case CBC_PARAM_INT_RANDOMSEED:
1000
+ oldValue = model.getRandomSeed();
1001
+ model.setRandomSeed(value);
1002
+ break;
1003
+ #endif
1004
+ default:
1005
+ break;
1006
+ }
1007
+ sprintf(printArray, "%s was changed from %d to %d",
1008
+ name_.c_str(), oldValue, value);
1009
+ returnCode = 0;
1010
+ }
1011
+ return printArray;
1012
+ }
1013
+ int CbcOrClpParam::intParameter(CbcModel &model) const
1014
+ {
1015
+ int value;
1016
+ switch (type_) {
1017
+ case CLP_PARAM_INT_LOGLEVEL:
1018
+ value = model.messageHandler()->logLevel();
1019
+ break;
1020
+ case CLP_PARAM_INT_SOLVERLOGLEVEL:
1021
+ value = model.solver()->messageHandler()->logLevel();
1022
+ break;
1023
+ case CBC_PARAM_INT_MAXNODES:
1024
+ value = model.getIntParam(CbcModel::CbcMaxNumNode);
1025
+ break;
1026
+ case CBC_PARAM_INT_MAXSOLS:
1027
+ value = model.getIntParam(CbcModel::CbcMaxNumSol);
1028
+ break;
1029
+ case CBC_PARAM_INT_MAXSAVEDSOLS:
1030
+ value = model.maximumSavedSolutions();
1031
+ break;
1032
+ case CBC_PARAM_INT_STRONGBRANCHING:
1033
+ value = model.numberStrong();
1034
+ break;
1035
+ case CBC_PARAM_INT_NUMBERBEFORE:
1036
+ value = model.numberBeforeTrust();
1037
+ break;
1038
+ case CBC_PARAM_INT_NUMBERANALYZE:
1039
+ value = model.numberAnalyzeIterations();
1040
+ break;
1041
+ case CBC_PARAM_INT_CUTPASSINTREE:
1042
+ value = model.getMaximumCutPasses();
1043
+ break;
1044
+ case CBC_PARAM_INT_CUTPASS:
1045
+ value = model.getMaximumCutPassesAtRoot();
1046
+ break;
1047
+ #ifdef COIN_HAS_CBC
1048
+ #ifdef CBC_THREAD
1049
+ case CBC_PARAM_INT_THREADS:
1050
+ value = model.getNumberThreads();
1051
+ break;
1052
+ #endif
1053
+ case CBC_PARAM_INT_RANDOMSEED:
1054
+ value = model.getRandomSeed();
1055
+ break;
1056
+ #endif
1057
+ default:
1058
+ value = intValue_;
1059
+ break;
1060
+ }
1061
+ return value;
1062
+ }
1063
+ #endif
1064
+ // Sets current parameter option using string
1065
+ void CbcOrClpParam::setCurrentOption(const std::string value)
1066
+ {
1067
+ int action = parameterOption(value);
1068
+ if (action >= 0)
1069
+ currentKeyWord_ = action;
1070
+ #if FLUSH_PRINT_BUFFER > 2
1071
+ if (name_ == "bufferedMode")
1072
+ coinFlushBufferFlag = action;
1073
+ #endif
1074
+ }
1075
+ // Sets current parameter option
1076
+ void CbcOrClpParam::setCurrentOption(int value, bool printIt)
1077
+ {
1078
+ if (printIt && value != currentKeyWord_)
1079
+ std::cout << "Option for " << name_ << " changed from "
1080
+ << definedKeyWords_[currentKeyWord_] << " to "
1081
+ << definedKeyWords_[value] << std::endl;
1082
+
1083
+ #if FLUSH_PRINT_BUFFER > 2
1084
+ if (name_ == "bufferedMode")
1085
+ coinFlushBufferFlag = value;
1086
+ #endif
1087
+ currentKeyWord_ = value;
1088
+ }
1089
+ // Sets current parameter option and returns printable string
1090
+ const char *
1091
+ CbcOrClpParam::setCurrentOptionWithMessage(int value)
1092
+ {
1093
+ if (value != currentKeyWord_) {
1094
+ char current[100];
1095
+ char newString[100];
1096
+ if (currentKeyWord_ >= 0 && (fakeKeyWord_ <= 0 || currentKeyWord_ < fakeKeyWord_))
1097
+ strcpy(current, definedKeyWords_[currentKeyWord_].c_str());
1098
+ else if (currentKeyWord_ < 0)
1099
+ sprintf(current, "minus%d", -currentKeyWord_ - 1000);
1100
+ else
1101
+ sprintf(current, "plus%d", currentKeyWord_ - 1000);
1102
+ if (value >= 0 && (fakeKeyWord_ <= 0 || value < fakeKeyWord_))
1103
+ strcpy(newString, definedKeyWords_[value].c_str());
1104
+ else if (value < 0)
1105
+ sprintf(newString, "minus%d", -value - 1000);
1106
+ else
1107
+ sprintf(newString, "plus%d", value - 1000);
1108
+ sprintf(printArray, "Option for %s changed from %s to %s",
1109
+ name_.c_str(), current, newString);
1110
+ #if FLUSH_PRINT_BUFFER > 2
1111
+ if (name_ == "bufferedMode")
1112
+ coinFlushBufferFlag = value;
1113
+ #endif
1114
+ currentKeyWord_ = value;
1115
+ } else {
1116
+ printArray[0] = '\0';
1117
+ }
1118
+ return printArray;
1119
+ }
1120
+ // Sets current parameter option using string with message
1121
+ const char *
1122
+ CbcOrClpParam::setCurrentOptionWithMessage(const std::string value)
1123
+ {
1124
+ int action = parameterOption(value);
1125
+ char current[100];
1126
+ printArray[0] = '\0';
1127
+ if (action >= 0) {
1128
+ #if FLUSH_PRINT_BUFFER > 2
1129
+ if (name_ == "bufferedMode")
1130
+ coinFlushBufferFlag = action;
1131
+ #endif
1132
+ if (action == currentKeyWord_)
1133
+ return NULL;
1134
+ if (currentKeyWord_ >= 0 && (fakeKeyWord_ <= 0 || currentKeyWord_ < fakeKeyWord_))
1135
+ strcpy(current, definedKeyWords_[currentKeyWord_].c_str());
1136
+ else if (currentKeyWord_ < 0)
1137
+ sprintf(current, "minus%d", -currentKeyWord_ - 1000);
1138
+ else
1139
+ sprintf(current, "plus%d", currentKeyWord_ - 1000);
1140
+ sprintf(printArray, "Option for %s changed from %s to %s",
1141
+ name_.c_str(), current, value.c_str());
1142
+ currentKeyWord_ = action;
1143
+ } else {
1144
+ sprintf(printArray, "Option for %s given illegal value %s",
1145
+ name_.c_str(), value.c_str());
1146
+ }
1147
+ return printArray;
1148
+ }
1149
+ void CbcOrClpParam::setIntValue(int value)
1150
+ {
1151
+ if (value < lowerIntValue_ || value > upperIntValue_) {
1152
+ std::cout << value << " was provided for " << name_ << " - valid range is " << lowerIntValue_ << " to " << upperIntValue_ << std::endl;
1153
+ } else {
1154
+ intValue_ = value;
1155
+ }
1156
+ }
1157
+ const char *
1158
+ CbcOrClpParam::setIntValueWithMessage(int value)
1159
+ {
1160
+ printArray[0] = '\0';
1161
+ if (value < lowerIntValue_ || value > upperIntValue_) {
1162
+ sprintf(printArray, "%d was provided for %s - valid range is %d to %d",
1163
+ value, name_.c_str(), lowerIntValue_, upperIntValue_);
1164
+ } else {
1165
+ if (value == intValue_)
1166
+ return NULL;
1167
+ sprintf(printArray, "%s was changed from %d to %d",
1168
+ name_.c_str(), intValue_, value);
1169
+ intValue_ = value;
1170
+ }
1171
+ return printArray;
1172
+ }
1173
+ void CbcOrClpParam::setDoubleValue(double value)
1174
+ {
1175
+ if (value < lowerDoubleValue_ || value > upperDoubleValue_) {
1176
+ std::cout << value << " was provided for " << name_ << " - valid range is " << lowerDoubleValue_ << " to " << upperDoubleValue_ << std::endl;
1177
+ } else {
1178
+ doubleValue_ = value;
1179
+ }
1180
+ }
1181
+ const char *
1182
+ CbcOrClpParam::setDoubleValueWithMessage(double value)
1183
+ {
1184
+ printArray[0] = '\0';
1185
+ if (value < lowerDoubleValue_ || value > upperDoubleValue_) {
1186
+ sprintf(printArray, "%g was provided for %s - valid range is %g to %g",
1187
+ value, name_.c_str(), lowerDoubleValue_, upperDoubleValue_);
1188
+ } else {
1189
+ if (value == doubleValue_)
1190
+ return NULL;
1191
+ sprintf(printArray, "%s was changed from %g to %g",
1192
+ name_.c_str(), doubleValue_, value);
1193
+ doubleValue_ = value;
1194
+ }
1195
+ return printArray;
1196
+ }
1197
+ void CbcOrClpParam::setStringValue(std::string value)
1198
+ {
1199
+ stringValue_ = value;
1200
+ }
1201
+ static char line[1000];
1202
+ static char *where = NULL;
1203
+ extern int CbcOrClpRead_mode;
1204
+ int CbcOrClpEnvironmentIndex = -1;
1205
+ // Alternative to environment
1206
+ char *alternativeEnvironment = NULL;
1207
+ static size_t fillEnv()
1208
+ {
1209
+ #if defined(_MSC_VER) || defined(__MSVCRT__)
1210
+ return 0;
1211
+ #else
1212
+ // Don't think it will work on Windows
1213
+ char *environ;
1214
+ if (!alternativeEnvironment)
1215
+ environ = getenv("CBC_CLP_ENVIRONMENT");
1216
+ else
1217
+ environ = alternativeEnvironment;
1218
+ size_t length = 0;
1219
+ if (environ) {
1220
+ length = strlen(environ);
1221
+ if (CbcOrClpEnvironmentIndex < static_cast< int >(length)) {
1222
+ // find next non blank
1223
+ char *whereEnv = environ + CbcOrClpEnvironmentIndex;
1224
+ // munch white space
1225
+ while (*whereEnv == ' ' || *whereEnv == '\t' || *whereEnv < ' ')
1226
+ whereEnv++;
1227
+ // copy
1228
+ char *put = line;
1229
+ while (*whereEnv != '\0') {
1230
+ if (*whereEnv == ' ' || *whereEnv == '\t' || *whereEnv < ' ') {
1231
+ break;
1232
+ }
1233
+ *put = *whereEnv;
1234
+ put++;
1235
+ assert(put - line < 1000);
1236
+ whereEnv++;
1237
+ }
1238
+ CbcOrClpEnvironmentIndex = static_cast< int >(whereEnv - environ);
1239
+ *put = '\0';
1240
+ length = strlen(line);
1241
+ } else {
1242
+ length = 0;
1243
+ }
1244
+ }
1245
+ if (!length) {
1246
+ CbcOrClpEnvironmentIndex = -1;
1247
+ if (alternativeEnvironment) {
1248
+ delete[] alternativeEnvironment;
1249
+ alternativeEnvironment = NULL;
1250
+ }
1251
+ }
1252
+ return length;
1253
+ #endif
1254
+ }
1255
+ extern FILE *CbcOrClpReadCommand;
1256
+ // Simple read stuff
1257
+ std::string
1258
+ CoinReadNextField()
1259
+ {
1260
+ std::string field;
1261
+ if (!where) {
1262
+ // need new line
1263
+ #ifdef COIN_HAS_READLINE
1264
+ if (CbcOrClpReadCommand == stdin) {
1265
+ // Get a line from the user.
1266
+ where = readline(coin_prompt);
1267
+
1268
+ // If the line has any text in it, save it on the history.
1269
+ if (where) {
1270
+ if (*where)
1271
+ add_history(where);
1272
+ strcpy(line, where);
1273
+ free(where);
1274
+ }
1275
+ } else {
1276
+ where = fgets(line, 1000, CbcOrClpReadCommand);
1277
+ }
1278
+ #else
1279
+ if (CbcOrClpReadCommand == stdin) {
1280
+ fputs(coin_prompt, stdout);
1281
+ fflush(stdout);
1282
+ }
1283
+ where = fgets(line, 1000, CbcOrClpReadCommand);
1284
+ #endif
1285
+ if (!where)
1286
+ return field; // EOF
1287
+ where = line;
1288
+ // clean image
1289
+ char *lastNonBlank = line - 1;
1290
+ while (*where != '\0') {
1291
+ if (*where != '\t' && *where < ' ') {
1292
+ break;
1293
+ } else if (*where != '\t' && *where != ' ') {
1294
+ lastNonBlank = where;
1295
+ }
1296
+ where++;
1297
+ }
1298
+ where = line;
1299
+ *(lastNonBlank + 1) = '\0';
1300
+ }
1301
+ // munch white space
1302
+ while (*where == ' ' || *where == '\t')
1303
+ where++;
1304
+ char *saveWhere = where;
1305
+ while (*where != ' ' && *where != '\t' && *where != '\0')
1306
+ where++;
1307
+ if (where != saveWhere) {
1308
+ char save = *where;
1309
+ *where = '\0';
1310
+ //convert to string
1311
+ field = saveWhere;
1312
+ *where = save;
1313
+ } else {
1314
+ where = NULL;
1315
+ field = "EOL";
1316
+ }
1317
+ return field;
1318
+ }
1319
+
1320
+ std::string
1321
+ CoinReadGetCommand(int argc, const char *argv[])
1322
+ {
1323
+ std::string field = "EOL";
1324
+ // say no =
1325
+ afterEquals = "";
1326
+ while (field == "EOL") {
1327
+ if (CbcOrClpRead_mode > 0) {
1328
+ if ((CbcOrClpRead_mode < argc && argv[CbcOrClpRead_mode]) || CbcOrClpEnvironmentIndex >= 0) {
1329
+ if (CbcOrClpEnvironmentIndex < 0) {
1330
+ field = argv[CbcOrClpRead_mode++];
1331
+ } else {
1332
+ if (fillEnv()) {
1333
+ field = line;
1334
+ } else {
1335
+ // not there
1336
+ continue;
1337
+ }
1338
+ }
1339
+ if (field == "-") {
1340
+ std::cout << "Switching to line mode" << std::endl;
1341
+ CbcOrClpRead_mode = -1;
1342
+ field = CoinReadNextField();
1343
+ } else if (field[0] != '-') {
1344
+ if (CbcOrClpRead_mode != 2) {
1345
+ // now allow std::cout<<"skipping non-command "<<field<<std::endl;
1346
+ // field="EOL"; // skip
1347
+ } else if (CbcOrClpEnvironmentIndex < 0) {
1348
+ // special dispensation - taken as -import name
1349
+ CbcOrClpRead_mode--;
1350
+ field = "import";
1351
+ }
1352
+ } else {
1353
+ if (field != "--") {
1354
+ // take off -
1355
+ field = field.substr(1);
1356
+ } else {
1357
+ // special dispensation - taken as -import --
1358
+ CbcOrClpRead_mode--;
1359
+ field = "import";
1360
+ }
1361
+ }
1362
+ } else {
1363
+ field = "";
1364
+ }
1365
+ } else {
1366
+ field = CoinReadNextField();
1367
+ }
1368
+ }
1369
+ // if = then modify and save
1370
+ std::string::size_type found = field.find('=');
1371
+ if (found != std::string::npos) {
1372
+ afterEquals = field.substr(found + 1);
1373
+ field = field.substr(0, found);
1374
+ }
1375
+ //std::cout<<field<<std::endl;
1376
+ return field;
1377
+ }
1378
+ std::string
1379
+ CoinReadGetString(int argc, const char *argv[])
1380
+ {
1381
+ std::string field = "EOL";
1382
+ if (afterEquals == "") {
1383
+ if (CbcOrClpRead_mode > 0) {
1384
+ if (CbcOrClpRead_mode < argc || CbcOrClpEnvironmentIndex >= 0) {
1385
+ if (CbcOrClpEnvironmentIndex < 0) {
1386
+ const char * input = argv[CbcOrClpRead_mode];
1387
+ if (strcmp(input,"--")&&strcmp(input,"stdin")&&
1388
+ strcmp(input,"stdin_lp")) {
1389
+ field = argv[CbcOrClpRead_mode++];
1390
+ } else {
1391
+ CbcOrClpRead_mode++;
1392
+ // -- means import from stdin
1393
+ // but allow for other than mps files
1394
+ // Clp does things in different way !!
1395
+ if (!strcmp(input,"--"))
1396
+ field = "-";
1397
+ else if (!strcmp(input,"stdin"))
1398
+ field = "-";
1399
+ else if (!strcmp(input,"stdin_lp"))
1400
+ field = "-lp";
1401
+ }
1402
+ } else {
1403
+ fillEnv();
1404
+ field = line;
1405
+ }
1406
+ }
1407
+ } else {
1408
+ field = CoinReadNextField();
1409
+ }
1410
+ } else {
1411
+ field = afterEquals;
1412
+ afterEquals = "";
1413
+ }
1414
+ //std::cout<<field<<std::endl;
1415
+ return field;
1416
+ }
1417
+ // valid 0 - okay, 1 bad, 2 not there
1418
+ int CoinReadGetIntField(int argc, const char *argv[], int *valid)
1419
+ {
1420
+ std::string field = "EOL";
1421
+ if (afterEquals == "") {
1422
+ if (CbcOrClpRead_mode > 0) {
1423
+ if (CbcOrClpRead_mode < argc || CbcOrClpEnvironmentIndex >= 0) {
1424
+ if (CbcOrClpEnvironmentIndex < 0) {
1425
+ // may be negative value so do not check for -
1426
+ field = argv[CbcOrClpRead_mode++];
1427
+ } else {
1428
+ fillEnv();
1429
+ field = line;
1430
+ }
1431
+ }
1432
+ } else {
1433
+ field = CoinReadNextField();
1434
+ }
1435
+ } else {
1436
+ field = afterEquals;
1437
+ afterEquals = "";
1438
+ }
1439
+ long int value = 0;
1440
+ //std::cout<<field<<std::endl;
1441
+ if (field != "EOL") {
1442
+ const char *start = field.c_str();
1443
+ char *endPointer = NULL;
1444
+ // check valid
1445
+ value = strtol(start, &endPointer, 10);
1446
+ if (*endPointer == '\0') {
1447
+ *valid = 0;
1448
+ } else {
1449
+ *valid = 1;
1450
+ std::cout << "String of " << field;
1451
+ }
1452
+ } else {
1453
+ *valid = 2;
1454
+ }
1455
+ return static_cast< int >(value);
1456
+ }
1457
+ double
1458
+ CoinReadGetDoubleField(int argc, const char *argv[], int *valid)
1459
+ {
1460
+ std::string field = "EOL";
1461
+ if (afterEquals == "") {
1462
+ if (CbcOrClpRead_mode > 0) {
1463
+ if (CbcOrClpRead_mode < argc || CbcOrClpEnvironmentIndex >= 0) {
1464
+ if (CbcOrClpEnvironmentIndex < 0) {
1465
+ // may be negative value so do not check for -
1466
+ field = argv[CbcOrClpRead_mode++];
1467
+ } else {
1468
+ fillEnv();
1469
+ field = line;
1470
+ }
1471
+ }
1472
+ } else {
1473
+ field = CoinReadNextField();
1474
+ }
1475
+ } else {
1476
+ field = afterEquals;
1477
+ afterEquals = "";
1478
+ }
1479
+ double value = 0.0;
1480
+ //std::cout<<field<<std::endl;
1481
+ if (field != "EOL") {
1482
+ const char *start = field.c_str();
1483
+ char *endPointer = NULL;
1484
+ // check valid
1485
+ value = strtod(start, &endPointer);
1486
+ if (*endPointer == '\0') {
1487
+ *valid = 0;
1488
+ } else {
1489
+ *valid = 1;
1490
+ std::cout << "String of " << field;
1491
+ }
1492
+ } else {
1493
+ *valid = 2;
1494
+ }
1495
+ return value;
1496
+ }
1497
+ /*
1498
+ Subroutine to establish the cbc parameter array. See the description of
1499
+ class CbcOrClpParam for details. Pulled from C..Main() for clarity.
1500
+ */
1501
+ void establishParams(std::vector< CbcOrClpParam > &parameters)
1502
+ {
1503
+ parameters.clear();
1504
+ parameters.push_back(CbcOrClpParam("?", "For help", CBC_PARAM_GENERALQUERY, 7, 0));
1505
+ parameters.push_back(CbcOrClpParam("???", "For help", CBC_PARAM_FULLGENERALQUERY, 7, 0));
1506
+ parameters.push_back(CbcOrClpParam("-", "From stdin", CLP_PARAM_ACTION_STDIN, 3, 0));
1507
+
1508
+ // some help strings that repeat for many options
1509
+ #define CUTS_LONGHELP \
1510
+ "Value 'on' enables the cut generator and CBC will try it in the branch and cut tree (see cutDepth on how to fine tune the behavior). " \
1511
+ "Value 'root' lets CBC run the cut generator generate only at the root node. " \
1512
+ "Value 'ifmove' lets CBC use the cut generator in the tree if it looks as if it is doing some good and moves the objective value. " \
1513
+ "Value 'forceon' turns on the cut generator and forces CBC to use it at every node."
1514
+ #define HEURISTICS_LONGHELP \
1515
+ "Value 'on' means to use the heuristic in each node of the tree, i.e. after preprocessing. " \
1516
+ "Value 'before' means use the heuristic only if option doHeuristics is used. " \
1517
+ "Value 'both' means to use the heuristic if option doHeuristics is used and during solve."
1518
+
1519
+ #if defined(ABC_INHERIT) || ABOCA_LITE
1520
+ CbcOrClpParam paramAboca("abc", "Whether to visit Aboca", "off", CLP_PARAM_STR_ABCWANTED, 7, 0);
1521
+ paramAboca.append("one");
1522
+ paramAboca.append("two");
1523
+ paramAboca.append("three");
1524
+ paramAboca.append("four");
1525
+ paramAboca.append("five");
1526
+ paramAboca.append("six");
1527
+ paramAboca.append("seven");
1528
+ paramAboca.append("eight");
1529
+ paramAboca.append("on");
1530
+ paramAboca.append("decide");
1531
+ paramAboca.setFakeKeyWord(10);
1532
+ paramAboca.setLonghelp(
1533
+ "Decide whether to use A Basic Optimization Code (Accelerated?) \
1534
+ and whether to try going parallel!");
1535
+ parameters.push_back(paramAboca);
1536
+ #endif
1537
+ {
1538
+ CbcOrClpParam p("allC!ommands", "Whether to print less used commands",
1539
+ "no", CLP_PARAM_STR_ALLCOMMANDS);
1540
+
1541
+ p.append("more");
1542
+ p.append("all");
1543
+ p.setLonghelp(
1544
+ "For the sake of your sanity, only the more useful and simple commands \
1545
+ are printed out on ?.");
1546
+ parameters.push_back(p);
1547
+ }
1548
+ #ifdef COIN_HAS_CBC
1549
+ {
1550
+ CbcOrClpParam p("allow!ableGap", "Stop when gap between best possible and \
1551
+ best less than this",
1552
+ 0.0, COIN_DBL_MAX, CBC_PARAM_DBL_ALLOWABLEGAP);
1553
+ p.setDoubleValue(0.0);
1554
+ p.setLonghelp(
1555
+ "If the gap between best known solution and the best possible solution is less than this \
1556
+ value, then the search will be terminated. Also see ratioGap.");
1557
+ parameters.push_back(p);
1558
+ }
1559
+ #endif
1560
+ #ifdef COIN_HAS_CLP
1561
+ {
1562
+ CbcOrClpParam p("allS!lack", "Set basis back to all slack and reset solution",
1563
+ CLP_PARAM_ACTION_ALLSLACK, 3);
1564
+ p.setLonghelp(
1565
+ "Mainly useful for tuning purposes. Normally the first dual or primal will be using an all slack \
1566
+ basis anyway.");
1567
+ parameters.push_back(p);
1568
+ }
1569
+ #endif
1570
+ #ifdef COIN_HAS_CBC
1571
+ {
1572
+ CbcOrClpParam p("artif!icialCost", "Costs >= this treated as artificials in feasibility pump",
1573
+ 0.0, COIN_DBL_MAX, CBC_PARAM_DBL_ARTIFICIALCOST, 1);
1574
+ p.setDoubleValue(0.0);
1575
+ p.setLonghelp(
1576
+ "A value of 0.0 means off. Otherwise, variables with costs >= this are treated as artificial variables and fixed to lower bound in feasibility pump.");
1577
+ parameters.push_back(p);
1578
+ }
1579
+ #endif
1580
+ #ifdef COIN_HAS_CLP
1581
+ {
1582
+ CbcOrClpParam p("auto!Scale", "Whether to scale objective, rhs and bounds of problem if they look odd",
1583
+ "off", CLP_PARAM_STR_AUTOSCALE, 7, 0);
1584
+ p.append("on");
1585
+ p.setLonghelp(
1586
+ "If you think you may get odd objective values or large equality rows etc then\
1587
+ it may be worth setting this true. It is still experimental and you may prefer\
1588
+ to use objective!Scale and rhs!Scale.");
1589
+ parameters.push_back(p);
1590
+ }
1591
+ {
1592
+ CbcOrClpParam p("barr!ier", "Solve using primal dual predictor corrector algorithm",
1593
+ CLP_PARAM_ACTION_BARRIER);
1594
+ p.setLonghelp(
1595
+ "This command solves the current model using the primal dual predictor \
1596
+ corrector algorithm. You may want to link in an alternative \
1597
+ ordering and factorization. It will also solve models \
1598
+ with quadratic objectives.");
1599
+ parameters.push_back(p);
1600
+ }
1601
+ {
1602
+ CbcOrClpParam p("basisI!n", "Import basis from bas file",
1603
+ CLP_PARAM_ACTION_BASISIN, 3);
1604
+ p.setLonghelp(
1605
+ "This will read an MPS format basis file from the given file name. It will use the default\
1606
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
1607
+ is initialized to '', i.e. it must be set. If you have libz then it can read compressed\
1608
+ files 'xxxxxxxx.gz' or xxxxxxxx.bz2.");
1609
+ parameters.push_back(p);
1610
+ }
1611
+ {
1612
+ CbcOrClpParam p("basisO!ut", "Export basis as bas file",
1613
+ CLP_PARAM_ACTION_BASISOUT);
1614
+
1615
+ p.setLonghelp(
1616
+ "This will write an MPS format basis file to the given file name. It will use the default\
1617
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
1618
+ is initialized to 'default.bas'.");
1619
+ parameters.push_back(p);
1620
+ }
1621
+ {
1622
+ CbcOrClpParam p("biasLU", "Whether factorization biased towards U",
1623
+ "UU", CLP_PARAM_STR_BIASLU, 2, 0);
1624
+
1625
+ p.append("UX");
1626
+ p.append("LX");
1627
+ p.append("LL");
1628
+ p.setCurrentOption("LX");
1629
+ parameters.push_back(p);
1630
+ }
1631
+ #endif
1632
+ #ifdef COIN_HAS_CBC
1633
+ {
1634
+ CbcOrClpParam p("branch!AndCut", "Do Branch and Cut",
1635
+ CBC_PARAM_ACTION_BAB);
1636
+ p.setLonghelp(
1637
+ "This does branch and cut. There are many parameters which can affect the performance. \
1638
+ First just try with default settings and look carefully at the log file. Did cuts help? Did they take too long? \
1639
+ Look at output to see which cuts were effective and then do some tuning. You will see that the \
1640
+ options for cuts are off, on, root and ifmove, forceon. Off is \
1641
+ obvious. " CUTS_LONGHELP " For probing, forceonbut just does fixing probing in tree - not strengthening etc. \
1642
+ If pre-processing reduced the size of the \
1643
+ problem or strengthened many coefficients then it is probably wise to leave it on. Switch off heuristics \
1644
+ which did not provide solutions. The other major area to look at is the search. Hopefully good solutions \
1645
+ were obtained fairly early in the search so the important point is to select the best variable to branch on. \
1646
+ See whether strong branching did a good job - or did it just take a lot of iterations. Adjust the strongBranching \
1647
+ and trustPseudoCosts parameters. If cuts did a good job, then you may wish to \
1648
+ have more rounds of cuts - see passC!uts and passT!ree.");
1649
+ parameters.push_back(p);
1650
+ }
1651
+ #endif
1652
+ {
1653
+ CbcOrClpParam p("bscale", "Whether to scale in barrier (and ordering speed)",
1654
+ "off", CLP_PARAM_STR_BARRIERSCALE, 7, 0);
1655
+ p.append("on");
1656
+ p.append("off1");
1657
+ p.append("on1");
1658
+ p.append("off2");
1659
+ p.append("on2");
1660
+ parameters.push_back(p);
1661
+ }
1662
+ #if FLUSH_PRINT_BUFFER > 2
1663
+ {
1664
+ CbcOrClpParam p("buff!eredMode", "Whether to flush print buffer",
1665
+ "on", CLP_PARAM_STR_BUFFER_MODE);
1666
+
1667
+ p.append("off");
1668
+ p.setLonghelp(
1669
+ "Default is on, off switches on unbuffered output");
1670
+ p.setIntValue(0);
1671
+ parameters.push_back(p);
1672
+ }
1673
+ #endif
1674
+ {
1675
+ CbcOrClpParam p("chol!esky", "Which cholesky algorithm",
1676
+ "native", CLP_PARAM_STR_CHOLESKY, 7);
1677
+
1678
+ p.append("dense");
1679
+ //#ifdef FOREIGN_BARRIER
1680
+ #ifdef COIN_HAS_WSMP
1681
+ p.append("fudge!Long");
1682
+ p.append("wssmp");
1683
+ #else
1684
+ p.append("fudge!Long_dummy");
1685
+ p.append("wssmp_dummy");
1686
+ #endif
1687
+ #if defined(COIN_HAS_AMD) || defined(COIN_HAS_CHOLMOD) || defined(COIN_HAS_GLPK)
1688
+ p.append("Uni!versityOfFlorida");
1689
+ #else
1690
+ p.append("Uni!versityOfFlorida_dummy");
1691
+ #endif
1692
+ #ifdef TAUCS_BARRIER
1693
+ p.append("Taucs");
1694
+ #else
1695
+ p.append("Taucs_dummy");
1696
+ #endif
1697
+ #ifdef COIN_HAS_MUMPS
1698
+ p.append("Mumps");
1699
+ #else
1700
+ p.append("Mumps_dummy");
1701
+ #endif
1702
+ #ifdef PARDISO_BARRIER
1703
+ p.append("Pardiso");
1704
+ #else
1705
+ p.append("Pardiso_dummy");
1706
+ #endif
1707
+ p.setLonghelp(
1708
+ "For a barrier code to be effective it needs a good Cholesky ordering and factorization. \
1709
+ The native ordering and factorization is not state of the art, although acceptable. \
1710
+ You may want to link in one from another source. See Makefile.locations for some \
1711
+ possibilities.");
1712
+
1713
+ parameters.push_back(p);
1714
+ }
1715
+ #ifdef COIN_HAS_CBC
1716
+ {
1717
+ CbcOrClpParam p("clique!Cuts", "Whether to use Clique cuts",
1718
+ "off", CBC_PARAM_STR_CLIQUECUTS);
1719
+ p.append("on");
1720
+ p.append("root");
1721
+ p.append("ifmove");
1722
+ p.append("forceOn");
1723
+ p.append("onglobal");
1724
+ p.setLonghelp(CUTS_LONGHELP
1725
+ " Reference: https://github.com/coin-or/Cgl/wiki/CglClique");
1726
+
1727
+ parameters.push_back(p);
1728
+ }
1729
+ {
1730
+ CbcOrClpParam p("combine!Solutions", "Whether to use combine solution heuristic",
1731
+ "off", CBC_PARAM_STR_COMBINE);
1732
+
1733
+ p.append("on");
1734
+ p.append("both");
1735
+ p.append("before");
1736
+ p.append("onquick");
1737
+ p.append("bothquick");
1738
+ p.append("beforequick");
1739
+ p.setLonghelp(
1740
+ "This heuristic does branch and cut on given problem by just \
1741
+ using variables which have appeared in one or more solutions. \
1742
+ It is obviously only tried after two or more solutions have been found. "
1743
+ HEURISTICS_LONGHELP);
1744
+
1745
+ parameters.push_back(p);
1746
+ }
1747
+ {
1748
+ CbcOrClpParam p("combine2!Solutions", "Whether to use crossover solution heuristic",
1749
+ "off", CBC_PARAM_STR_CROSSOVER2);
1750
+ p.append("on");
1751
+ p.append("both");
1752
+ p.append("before");
1753
+ p.setLonghelp(
1754
+ "This heuristic does branch and cut on the problem given by \
1755
+ fixing variables which have the same value in two or more solutions. \
1756
+ It obviously only tries after two or more solutions. "
1757
+ HEURISTICS_LONGHELP);
1758
+ parameters.push_back(p);
1759
+ }
1760
+ {
1761
+ CbcOrClpParam p("constraint!fromCutoff", "Whether to use cutoff as constraint",
1762
+ "off", CBC_PARAM_STR_CUTOFF_CONSTRAINT);
1763
+
1764
+ p.append("on");
1765
+ p.append("variable");
1766
+ p.append("forcevariable");
1767
+ p.append("conflict");
1768
+ p.setLonghelp(
1769
+ "For some problems, cut generators and general branching work better if the problem would be infeasible if the cost is too high. "
1770
+ "If this option is enabled, the objective function is added as a constraint which right hand side is set to the current cutoff value (objective value of best known solution)");
1771
+ parameters.push_back(p);
1772
+ }
1773
+ {
1774
+ CbcOrClpParam p("cost!Strategy", "How to use costs for branching priorities",
1775
+ "off", CBC_PARAM_STR_COSTSTRATEGY);
1776
+
1777
+ p.append("pri!orities");
1778
+ p.append("column!Order?");
1779
+ p.append("01f!irst?");
1780
+ p.append("01l!ast?");
1781
+ p.append("length!?");
1782
+ p.append("singletons");
1783
+ p.append("nonzero");
1784
+ p.append("general!Force?");
1785
+ p.setLonghelp(
1786
+ "Value 'priorities' assigns highest priority to variables with largest absolute cost. This primitive strategy can be surprisingly effective. "
1787
+ "Value 'columnorder' assigns the priorities 1, 2, 3, ... with respect to the column ordering. "
1788
+ "Value '01first' ('01last') assignes two sets of priorities such that binary variables get high (low) priority. "
1789
+ "Value 'length' assigns high priority to variables that occur in many equations. ");
1790
+
1791
+ parameters.push_back(p);
1792
+ }
1793
+ {
1794
+ CbcOrClpParam p("cplex!Use", "Whether to use Cplex!",
1795
+ "off", CBC_PARAM_STR_CPX);
1796
+ p.append("on");
1797
+ p.setLonghelp(
1798
+ " If the user has Cplex, but wants to use some of Cbc's heuristics \
1799
+ then you can! If this is on, then Cbc will get to the root node and then \
1800
+ hand over to Cplex. If heuristics find a solution this can be significantly \
1801
+ quicker. You will probably want to switch off Cbc's cuts as Cplex thinks \
1802
+ they are genuine constraints. It is also probable that you want to switch \
1803
+ off preprocessing, although for difficult problems it is worth trying \
1804
+ both.");
1805
+ parameters.push_back(p);
1806
+ }
1807
+ #endif
1808
+ {
1809
+ CbcOrClpParam p("cpp!Generate", "Generates C++ code",
1810
+ -1, 50000, CLP_PARAM_INT_CPP, 1);
1811
+ p.setLonghelp(
1812
+ "Once you like what the stand-alone solver does then this allows \
1813
+ you to generate user_driver.cpp which approximates the code. \
1814
+ 0 gives simplest driver, 1 generates saves and restores, 2 \
1815
+ generates saves and restores even for variables at default value. \
1816
+ 4 bit in cbc generates size dependent code rather than computed values. \
1817
+ This is now deprecated as you can call stand-alone solver - see \
1818
+ Cbc/examples/driver4.cpp.");
1819
+ parameters.push_back(p);
1820
+ }
1821
+ #ifdef COIN_HAS_CLP
1822
+ {
1823
+ CbcOrClpParam p("crash", "Whether to create basis for problem",
1824
+ "off", CLP_PARAM_STR_CRASH);
1825
+
1826
+ p.append("on");
1827
+ p.append("so!low_halim");
1828
+ p.append("lots");
1829
+ #ifdef CLP_INHERIT_MODE
1830
+ p.append("dual");
1831
+ p.append("dw");
1832
+ p.append("idiot");
1833
+ #else
1834
+ p.append("idiot1");
1835
+ p.append("idiot2");
1836
+ p.append("idiot3");
1837
+ p.append("idiot4");
1838
+ p.append("idiot5");
1839
+ p.append("idiot6");
1840
+ p.append("idiot7");
1841
+ #endif
1842
+ p.setLonghelp(
1843
+ "If crash is set to 'on' and there is an all slack basis then Clp will flip or put structural\
1844
+ variables into the basis with the aim of getting dual feasible. On average, dual simplex seems to perform\
1845
+ better without it and there are alternative types of 'crash' for primal simplex, e.g. 'idiot' or 'sprint'. \
1846
+ A variant due to Solow and Halim which is as 'on' but just flips is also available.");
1847
+
1848
+ parameters.push_back(p);
1849
+ }
1850
+ {
1851
+ CbcOrClpParam p("cross!over", "Whether to get a basic solution with the simplex algorithm after the barrier algorithm finished",
1852
+ "on", CLP_PARAM_STR_CROSSOVER);
1853
+ p.append("off");
1854
+ p.append("maybe");
1855
+ p.append("presolve");
1856
+ p.setLonghelp(
1857
+ "Interior point algorithms do not obtain a basic solution.\
1858
+ This option will crossover to a basic solution suitable for ranging or branch and cut. With the current state \
1859
+ of the solver for quadratic programs it may be a good idea to switch off crossover for this case (and maybe \
1860
+ presolve as well) - the option 'maybe' does this.");
1861
+ parameters.push_back(p);
1862
+ }
1863
+ #endif
1864
+ #ifdef COIN_HAS_CBC
1865
+ {
1866
+ CbcOrClpParam p("csv!Statistics", "Create one line of statistics",
1867
+ CLP_PARAM_ACTION_CSVSTATISTICS, 2, 1);
1868
+ p.setLonghelp(
1869
+ "This appends statistics to given file name. It will use the default\
1870
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
1871
+ is initialized to '', i.e. it must be set. Adds header if file empty or does not exist.");
1872
+ parameters.push_back(p);
1873
+ }
1874
+ {
1875
+ CbcOrClpParam p("cutD!epth", "Depth in tree at which to do cuts",
1876
+ -1, COIN_INT_MAX, CBC_PARAM_INT_CUTDEPTH);
1877
+ p.setLonghelp(
1878
+ "Cut generators may be off, on, on only at the root node, or on if they look useful. \
1879
+ Setting this option to a positive value K let CBC call a cutgenerator on a node whenever the depth in the tree is a multiple of K. \
1880
+ The default of -1 lets CBC decide.");
1881
+ p.setIntValue(-1);
1882
+ parameters.push_back(p);
1883
+ }
1884
+ {
1885
+ CbcOrClpParam p("cutL!ength", "Length of a cut",
1886
+ -1, COIN_INT_MAX, CBC_PARAM_INT_CUTLENGTH);
1887
+ p.setLonghelp("At present this only applies to Gomory cuts. -1 (default) leaves as is. \
1888
+ Any value >0 says that all cuts <= this length can be generated both at \
1889
+ root node and in tree. 0 says to use some dynamic lengths. If value >=10,000,000 \
1890
+ then the length in tree is value%10000000 - so 10000100 means unlimited length \
1891
+ at root and 100 in tree.");
1892
+ p.setIntValue(-1);
1893
+ parameters.push_back(p);
1894
+ }
1895
+ {
1896
+ CbcOrClpParam p("cuto!ff", "Bound on the objective value for all solutions",
1897
+ -COIN_DBL_MAX, COIN_DBL_MAX, CBC_PARAM_DBL_CUTOFF);
1898
+ p.setDoubleValue(1.0e50);
1899
+ p.setLonghelp(
1900
+ "All solutions must have a better objective value (in a minimization sense) than the value of this option. \
1901
+ CBC also updates this value whenever it obtains a solution to the value of \
1902
+ the objective function of the solution minus the cutoff increment.");
1903
+ parameters.push_back(p);
1904
+ }
1905
+ {
1906
+ CbcOrClpParam p("cuts!OnOff", "Switches all cut generators on or off",
1907
+ "off", CBC_PARAM_STR_CUTSSTRATEGY);
1908
+ p.append("on");
1909
+ p.append("root");
1910
+ p.append("ifmove");
1911
+ p.append("forceOn");
1912
+ p.setLonghelp(
1913
+ "This can be used to switch on or off all cut generators (apart from Reduce and Split). "
1914
+ "Then one can turn individual ones off or on. "
1915
+ CUTS_LONGHELP);
1916
+ parameters.push_back(p);
1917
+ }
1918
+ {
1919
+ CbcOrClpParam p("debug!In", "read valid solution from file",
1920
+ CLP_PARAM_ACTION_DEBUG, 7, 1);
1921
+
1922
+ p.setLonghelp(
1923
+ "This will read a solution file from the given file name. It will use the default\
1924
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
1925
+ is initialized to '', i.e. it must be set.\n\n\
1926
+ If set to create it will create a file called debug.file after search.\n\n\
1927
+ The idea is that if you suspect a bad cut generator \
1928
+ you can do a good run with debug set to 'create' and then switch on the cuts you suspect and \
1929
+ re-run with debug set to 'debug.file' The create case has same effect as saveSolution.");
1930
+ parameters.push_back(p);
1931
+ }
1932
+ #endif
1933
+ #ifdef COIN_HAS_CLP
1934
+ {
1935
+ CbcOrClpParam p("decomp!ose", "Whether to try decomposition",
1936
+ -COIN_INT_MAX, COIN_INT_MAX, CLP_PARAM_INT_DECOMPOSE_BLOCKS, 1);
1937
+ p.setLonghelp(
1938
+ "0 - off, 1 choose blocks >1 use as blocks \
1939
+ Dantzig Wolfe if primal, Benders if dual \
1940
+ - uses sprint pass for number of passes");
1941
+ p.setIntValue(0);
1942
+ parameters.push_back(p);
1943
+ }
1944
+ #if CLP_MULTIPLE_FACTORIZATIONS > 0
1945
+ {
1946
+ CbcOrClpParam p("dense!Threshold", "Threshold for using dense factorization",
1947
+ -1, 10000, CBC_PARAM_INT_DENSE, 1);
1948
+ p.setLonghelp(
1949
+ "If processed problem <= this use dense factorization");
1950
+ p.setIntValue(-1);
1951
+ parameters.push_back(p);
1952
+ }
1953
+ #endif
1954
+ #endif
1955
+ #ifdef COIN_HAS_CBC
1956
+ {
1957
+ CbcOrClpParam p("depth!MiniBab", "Depth at which to try mini branch-and-bound",
1958
+ -COIN_INT_MAX, COIN_INT_MAX, CBC_PARAM_INT_DEPTHMINIBAB);
1959
+
1960
+ p.setIntValue(-1);
1961
+ p.setLonghelp(
1962
+ "Rather a complicated parameter but can be useful. -1 means off for large problems but on as if -12 for problems where rows+columns<500, -2 \
1963
+ means use Cplex if it is linked in. Otherwise if negative then go into depth first complete search fast branch and bound when depth>= -value-2 \
1964
+ (so -3 will use this at depth>=1). This mode is only switched on after 500 nodes. If you really want to switch it off for small problems then set \
1965
+ this to -999. If >=0 the value doesn't matter very much. The code will do approximately 100 nodes of fast branch and bound every now and then at depth>=5. \
1966
+ The actual logic is too twisted to describe here.");
1967
+ parameters.push_back(p);
1968
+ }
1969
+ {
1970
+ CbcOrClpParam p("dextra3", "Extra double parameter 3",
1971
+ -COIN_DBL_MAX, COIN_DBL_MAX, CBC_PARAM_DBL_DEXTRA3, 0);
1972
+ p.setDoubleValue(0.0);
1973
+ parameters.push_back(p);
1974
+ }
1975
+ {
1976
+ CbcOrClpParam p("dextra4", "Extra double parameter 4",
1977
+ -COIN_DBL_MAX, COIN_DBL_MAX, CBC_PARAM_DBL_DEXTRA4, 0);
1978
+ p.setDoubleValue(0.0);
1979
+ parameters.push_back(p);
1980
+ }
1981
+ {
1982
+ CbcOrClpParam p("dextra4", "Extra double parameter 5",
1983
+ -COIN_DBL_MAX, COIN_DBL_MAX, CBC_PARAM_DBL_DEXTRA5, 0);
1984
+ p.setDoubleValue(0.0);
1985
+ parameters.push_back(p);
1986
+ }
1987
+ {
1988
+ CbcOrClpParam p("Dins", "Whether to try Distance Induced Neighborhood Search",
1989
+ "off", CBC_PARAM_STR_DINS);
1990
+
1991
+ p.append("on");
1992
+ p.append("both");
1993
+ p.append("before");
1994
+ p.append("often");
1995
+ p.setLonghelp(HEURISTICS_LONGHELP);
1996
+ parameters.push_back(p);
1997
+ }
1998
+ #endif
1999
+ {
2000
+ CbcOrClpParam p("direction", "Minimize or Maximize",
2001
+ "min!imize", CLP_PARAM_STR_DIRECTION);
2002
+ p.append("max!imize");
2003
+ p.append("zero");
2004
+ p.setLonghelp(
2005
+ "The default is minimize - use 'direction maximize' for maximization.\n\
2006
+ You can also use the parameters 'maximize' or 'minimize'.");
2007
+ parameters.push_back(p);
2008
+ }
2009
+ {
2010
+ CbcOrClpParam p("directory", "Set Default directory for import etc.",
2011
+ CLP_PARAM_ACTION_DIRECTORY);
2012
+ p.setLonghelp(
2013
+ "This sets the directory which import, export, saveModel, restoreModel etc will use.\
2014
+ It is initialized to './'");
2015
+ parameters.push_back(p);
2016
+ }
2017
+ {
2018
+ CbcOrClpParam p("dirSample", "Set directory where the COIN-OR sample problems are.",
2019
+ CLP_PARAM_ACTION_DIRSAMPLE, 7, 1);
2020
+
2021
+ p.setLonghelp(
2022
+ "This sets the directory where the COIN-OR sample problems reside. It is\
2023
+ used only when -unitTest is passed to clp. clp will pick up the test problems\
2024
+ from this directory.\
2025
+ It is initialized to '../../Data/Sample'");
2026
+ parameters.push_back(p);
2027
+ }
2028
+ {
2029
+ CbcOrClpParam p("dirNetlib", "Set directory where the netlib problems are.",
2030
+ CLP_PARAM_ACTION_DIRNETLIB, 7, 1);
2031
+
2032
+ p.setLonghelp(
2033
+ "This sets the directory where the netlib problems reside. One can get\
2034
+ the netlib problems from COIN-OR or from the main netlib site. This\
2035
+ parameter is used only when -netlib is passed to clp. clp will pick up the\
2036
+ netlib problems from this directory. If clp is built without zlib support\
2037
+ then the problems must be uncompressed.\
2038
+ It is initialized to '../../Data/Netlib'");
2039
+ parameters.push_back(p);
2040
+ }
2041
+ {
2042
+ CbcOrClpParam p("dirMiplib", "Set directory where the miplib 2003 problems are.",
2043
+ CBC_PARAM_ACTION_DIRMIPLIB, 7, 1);
2044
+
2045
+ p.setLonghelp(
2046
+ "This sets the directory where the miplib 2003 problems reside. One can\
2047
+ get the miplib problems from COIN-OR or from the main miplib site. This\
2048
+ parameter is used only when -miplib is passed to cbc. cbc will pick up the\
2049
+ miplib problems from this directory. If cbc is built without zlib support\
2050
+ then the problems must be uncompressed.\
2051
+ It is initialized to '../../Data/miplib3'");
2052
+ parameters.push_back(p);
2053
+ }
2054
+ #ifdef COIN_HAS_CBC
2055
+ {
2056
+ CbcOrClpParam p("diveO!pt", "Diving options",
2057
+ -1, 200000, CBC_PARAM_INT_DIVEOPT, 1);
2058
+ p.setLonghelp(
2059
+ "If >2 && <20 then modify diving options - \
2060
+ \n\t3 only at root and if no solution, \
2061
+ \n\t4 only at root and if this heuristic has not got solution, \
2062
+ \n\t5 decay only if no solution, \
2063
+ \n\t6 if depth <3 or decay, \
2064
+ \n\t7 run up to 2 times if solution found 4 otherwise, \
2065
+ \n\t>10 All only at root (DivingC normal as value-10), \
2066
+ \n\t>20 All with value-20).");
2067
+ p.setIntValue(-1);
2068
+ parameters.push_back(p);
2069
+ }
2070
+ {
2071
+ CbcOrClpParam p("diveS!olves", "Diving solve option",
2072
+ -1, 200000, CBC_PARAM_INT_DIVEOPTSOLVES, 1);
2073
+
2074
+ p.setLonghelp(
2075
+ "If >0 then do up to this many solves. However, the last digit is ignored \
2076
+ and used for extra options: \
2077
+ 1-3 enables fixing of satisfied integer variables (but not at bound), \
2078
+ where 1 switches this off for that dive if the dive goes infeasible, \
2079
+ and 2 switches it off permanently if the dive goes infeasible.");
2080
+ p.setIntValue(100);
2081
+ parameters.push_back(p);
2082
+ }
2083
+ {
2084
+ CbcOrClpParam p("DivingS!ome", "Whether to try Diving heuristics",
2085
+ "off", CBC_PARAM_STR_DIVINGS);
2086
+
2087
+ p.append("on");
2088
+ p.append("both");
2089
+ p.append("before");
2090
+ p.setLonghelp(
2091
+ "This switches on a random diving heuristic at various times. \
2092
+ One may prefer to individually turn diving heuristics on or off. "
2093
+ HEURISTICS_LONGHELP);
2094
+ // C - Coefficient, F - Fractional, G - Guided, L - LineSearch, P - PseudoCost, V - VectorLength.
2095
+ parameters.push_back(p);
2096
+ }
2097
+ {
2098
+ CbcOrClpParam p("DivingC!oefficient", "Whether to try Coefficient diving heuristic",
2099
+ "off", CBC_PARAM_STR_DIVINGC);
2100
+ p.append("on");
2101
+ p.append("both");
2102
+ p.append("before");
2103
+ p.setLonghelp(HEURISTICS_LONGHELP);
2104
+ parameters.push_back(p);
2105
+ }
2106
+ {
2107
+ CbcOrClpParam p("DivingF!ractional", "Whether to try Fractional diving heuristic",
2108
+ "off", CBC_PARAM_STR_DIVINGF);
2109
+ p.append("on");
2110
+ p.append("both");
2111
+ p.append("before");
2112
+ p.setLonghelp(HEURISTICS_LONGHELP);
2113
+ parameters.push_back(p);
2114
+ }
2115
+ {
2116
+ CbcOrClpParam p("DivingG!uided", "Whether to try Guided diving heuristic",
2117
+ "off", CBC_PARAM_STR_DIVINGG);
2118
+ p.append("on");
2119
+ p.append("both");
2120
+ p.append("before");
2121
+ p.setLonghelp(HEURISTICS_LONGHELP);
2122
+ parameters.push_back(p);
2123
+ }
2124
+ {
2125
+ CbcOrClpParam p("DivingL!ineSearch", "Whether to try Linesearch diving heuristic",
2126
+ "off", CBC_PARAM_STR_DIVINGL);
2127
+ p.append("on");
2128
+ p.append("both");
2129
+ p.append("before");
2130
+ p.setLonghelp(HEURISTICS_LONGHELP);
2131
+ parameters.push_back(p);
2132
+ }
2133
+ {
2134
+ CbcOrClpParam p("DivingP!seudoCost", "Whether to try Pseudocost diving heuristic",
2135
+ "off", CBC_PARAM_STR_DIVINGP);
2136
+ p.append("on");
2137
+ p.append("both");
2138
+ p.append("before");
2139
+ p.setLonghelp(HEURISTICS_LONGHELP);
2140
+ parameters.push_back(p);
2141
+ }
2142
+ {
2143
+ CbcOrClpParam p("DivingV!ectorLength", "Whether to try Vectorlength diving heuristic",
2144
+ "off", CBC_PARAM_STR_DIVINGV);
2145
+ p.append("on");
2146
+ p.append("both");
2147
+ p.append("before");
2148
+ p.setLonghelp(HEURISTICS_LONGHELP);
2149
+ parameters.push_back(p);
2150
+ }
2151
+ {
2152
+ CbcOrClpParam p("doH!euristic", "Do heuristics before any preprocessing",
2153
+ CBC_PARAM_ACTION_DOHEURISTIC, 3);
2154
+ p.setLonghelp(
2155
+ "Normally heuristics are done in branch and bound. It may be useful to do them outside. \
2156
+ Only those heuristics with 'both' or 'before' set will run. \
2157
+ Doing this may also set cutoff, which can help with preprocessing.");
2158
+ parameters.push_back(p);
2159
+ }
2160
+ #endif
2161
+ #ifdef COIN_HAS_CLP
2162
+ {
2163
+ CbcOrClpParam p("dualB!ound", "Initially algorithm acts as if no \
2164
+ gap between bounds exceeds this value",
2165
+ 1.0e-20, 1.0e12, CLP_PARAM_DBL_DUALBOUND);
2166
+ p.setLonghelp(
2167
+ "The dual algorithm in Clp is a single phase algorithm as opposed to a two phase\
2168
+ algorithm where you first get feasible then optimal. If a problem has both upper and\
2169
+ lower bounds then it is trivial to get dual feasible by setting non basic variables\
2170
+ to correct bound. If the gap between the upper and lower bounds of a variable is more\
2171
+ than the value of dualBound Clp introduces fake bounds so that it can make the problem\
2172
+ dual feasible. This has the same effect as a composite objective function in the\
2173
+ primal algorithm. Too high a value may mean more iterations, while too low a bound means\
2174
+ the code may go all the way and then have to increase the bounds. OSL had a heuristic to\
2175
+ adjust bounds, maybe we need that here.");
2176
+
2177
+ parameters.push_back(p);
2178
+ }
2179
+ {
2180
+ CbcOrClpParam p("dualize", "Solves dual reformulation",
2181
+ 0, 4, CLP_PARAM_INT_DUALIZE, 1);
2182
+ p.setLonghelp(
2183
+ "Don't even think about it.");
2184
+
2185
+ parameters.push_back(p);
2186
+ }
2187
+ {
2188
+ CbcOrClpParam p("dualP!ivot", "Dual pivot choice algorithm",
2189
+ "auto!matic", CLP_PARAM_STR_DUALPIVOT, 7, 1);
2190
+ p.append("dant!zig");
2191
+ p.append("partial");
2192
+ p.append("steep!est");
2193
+ p.append("PEsteep!est");
2194
+ p.append("PEdantzig");
2195
+ p.setLonghelp(
2196
+ "The Dantzig method is simple but its use is deprecated. Steepest is the method of choice and there\
2197
+ are two variants which keep all weights updated but only scan a subset each iteration.\
2198
+ Partial switches this on while automatic decides at each iteration based on information\
2199
+ about the factorization.\
2200
+ The PE variants add the Positive Edge criterion. \
2201
+ This selects incoming variables to try to avoid degenerate moves. See also option psi.");
2202
+ parameters.push_back(p);
2203
+ }
2204
+ {
2205
+ CbcOrClpParam p("dualS!implex", "Do dual simplex algorithm",
2206
+ CLP_PARAM_ACTION_DUALSIMPLEX);
2207
+ p.setLonghelp(
2208
+ "This command solves the continuous relaxation of the current model using the dual steepest edge algorithm.\
2209
+ The time and iterations may be affected by settings such as presolve, scaling, crash\
2210
+ and also by dual pivot method, fake bound on variables and dual and primal tolerances.");
2211
+ parameters.push_back(p);
2212
+ }
2213
+ #endif
2214
+ {
2215
+ CbcOrClpParam p("dualT!olerance", "For an optimal solution \
2216
+ no dual infeasibility may exceed this value",
2217
+ 1.0e-20, COIN_DBL_MAX, CLP_PARAM_DBL_DUALTOLERANCE);
2218
+ p.setLonghelp(
2219
+ "Normally the default tolerance is fine, but one may want to increase it a\
2220
+ bit if the dual simplex algorithm seems to be having a hard time. One method which can be faster is \
2221
+ to use a large tolerance e.g. 1.0e-4 and the dual simplex algorithm and then to clean up the problem using the primal simplex algorithm with the \
2222
+ correct tolerance (remembering to switch off presolve for this final short clean up phase).");
2223
+ parameters.push_back(p);
2224
+ }
2225
+ #ifdef COIN_HAS_CBC
2226
+ {
2227
+ CbcOrClpParam p("dw!Heuristic", "Whether to try Dantzig Wolfe heuristic",
2228
+ "off", CBC_PARAM_STR_DW);
2229
+ p.append("on");
2230
+ p.append("both");
2231
+ p.append("before");
2232
+ p.setLonghelp(
2233
+ "This heuristic is very very compute intensive. It tries to find a Dantzig Wolfe structure and use that. "
2234
+ HEURISTICS_LONGHELP);
2235
+ parameters.push_back(p);
2236
+ }
2237
+ #endif
2238
+ #ifdef COIN_HAS_CLP
2239
+ {
2240
+ CbcOrClpParam p("either!Simplex", "Do dual or primal simplex algorithm",
2241
+ CLP_PARAM_ACTION_EITHERSIMPLEX);
2242
+ p.setLonghelp(
2243
+ "This command solves the continuous relaxation of the current model using the dual or primal algorithm,\
2244
+ based on a dubious analysis of model.");
2245
+ parameters.push_back(p);
2246
+ }
2247
+ #endif
2248
+ {
2249
+ CbcOrClpParam p("end", "Stops clp execution",
2250
+ CLP_PARAM_ACTION_EXIT);
2251
+ p.setLonghelp(
2252
+ "This stops execution ; end, exit, quit and stop are synonyms");
2253
+ parameters.push_back(p);
2254
+ }
2255
+ {
2256
+ CbcOrClpParam p("environ!ment", "Read commands from environment",
2257
+ CLP_PARAM_ACTION_ENVIRONMENT, 7, 0);
2258
+ p.setLonghelp(
2259
+ "This starts reading from environment variable CBC_CLP_ENVIRONMENT.");
2260
+ parameters.push_back(p);
2261
+ }
2262
+ {
2263
+ CbcOrClpParam p("error!sAllowed", "Whether to allow import errors",
2264
+ "off", CLP_PARAM_STR_ERRORSALLOWED, 3);
2265
+
2266
+ p.append("on");
2267
+ p.setLonghelp(
2268
+ "The default is not to use any model which had errors when reading the mps file.\
2269
+ Setting this to 'on' will allow all errors from which the code can recover\
2270
+ simply by ignoring the error. There are some errors from which the code can not recover \
2271
+ e.g. no ENDATA. This has to be set before import i.e. -errorsAllowed on -import xxxxxx.mps.");
2272
+ parameters.push_back(p);
2273
+ }
2274
+ {
2275
+ CbcOrClpParam p("exit", "Stops clp execution",
2276
+ CLP_PARAM_ACTION_EXIT);
2277
+ p.setLonghelp(
2278
+ "This stops the execution of Clp, end, exit, quit and stop are synonyms");
2279
+ parameters.push_back(p);
2280
+ }
2281
+ #ifdef COIN_HAS_CBC
2282
+ {
2283
+ CbcOrClpParam p("exper!iment", "Whether to use testing features",
2284
+ -1, 200000, CBC_PARAM_INT_EXPERIMENT, 0);
2285
+ p.setLonghelp(
2286
+ "Defines how adventurous you want to be in using new ideas. \
2287
+ 0 then no new ideas, 1 fairly sensible, 2 a bit dubious, 3 you are on your own!");
2288
+
2289
+ p.setIntValue(0);
2290
+ parameters.push_back(p);
2291
+ }
2292
+ {
2293
+ CbcOrClpParam p("expensive!Strong", "Whether to do even more strong branching",
2294
+ 0, COIN_INT_MAX, CBC_PARAM_INT_STRONG_STRATEGY, 0);
2295
+
2296
+ p.setLonghelp(
2297
+ "Strategy for extra strong branching. \
2298
+ 0 is normal strong branching. \
2299
+ 1, 2, 4, and 6 does strong branching on all fractional variables if \
2300
+ at the root node (1), \
2301
+ at depth less than modifier (2), \
2302
+ objective equals best possible (4), or \
2303
+ at depth less than modifier and objective equals best possible (6). \
2304
+ 11, 12, 14, and 16 are like 1, 2, 4, and 6, respecitively, but do strong branching on all integer (incl. non-fractional) variables. \
2305
+ Values >= 100 are used to specify a depth limit (value/100), otherwise 5 is used. \
2306
+ If the values >= 100, then above rules are applied to value%100.");
2307
+ p.setIntValue(0);
2308
+ parameters.push_back(p);
2309
+ }
2310
+ #endif
2311
+ {
2312
+ CbcOrClpParam p("export", "Export model as mps file",
2313
+ CLP_PARAM_ACTION_EXPORT);
2314
+
2315
+ p.setLonghelp(
2316
+ "This will write an MPS format file to the given file name. It will use the default\
2317
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
2318
+ is initialized to 'default.mps'. \
2319
+ It can be useful to get rid of the original names and go over to using Rnnnnnnn and Cnnnnnnn. This can be done by setting 'keepnames' off before importing mps file.");
2320
+ parameters.push_back(p);
2321
+ }
2322
+ #ifdef COIN_HAS_CBC
2323
+ {
2324
+ CbcOrClpParam p("extra1", "Extra integer parameter 1",
2325
+ -COIN_INT_MAX, COIN_INT_MAX, CBC_PARAM_INT_EXTRA1, 0);
2326
+ p.setIntValue(-1);
2327
+ parameters.push_back(p);
2328
+ }
2329
+ {
2330
+ CbcOrClpParam p("extra2", "Extra integer parameter 2",
2331
+ -COIN_INT_MAX, COIN_INT_MAX, CBC_PARAM_INT_EXTRA2, 0);
2332
+ p.setIntValue(-1);
2333
+ parameters.push_back(p);
2334
+ }
2335
+ {
2336
+ CbcOrClpParam p("extra3", "Extra integer parameter 3",
2337
+ -COIN_INT_MAX, COIN_INT_MAX, CBC_PARAM_INT_EXTRA3, 0);
2338
+ p.setIntValue(-1);
2339
+ parameters.push_back(p);
2340
+ }
2341
+ {
2342
+ CbcOrClpParam p("extra4", "Extra integer parameter 4",
2343
+ -1, COIN_INT_MAX, CBC_PARAM_INT_EXTRA4, 0);
2344
+
2345
+ p.setIntValue(-1);
2346
+ p.setLonghelp(
2347
+ "This switches on yet more special options!! \
2348
+ The bottom digit is a strategy when to used shadow price stuff e.g. 3 \
2349
+ means use until a solution is found. The next two digits say what sort \
2350
+ of dual information to use. After that it goes back to powers of 2 so -\n\
2351
+ \n\t1000 - switches on experimental hotstart\n\
2352
+ \n\t2,4,6000 - switches on experimental methods of stopping cuts\n\
2353
+ \n\t8000 - increase minimum drop gradually\n\
2354
+ \n\t16000 - switches on alternate gomory criterion");
2355
+ parameters.push_back(p);
2356
+ }
2357
+ {
2358
+ CbcOrClpParam p("extraV!ariables", "Allow creation of extra integer variables",
2359
+ -COIN_INT_MAX, COIN_INT_MAX, CBC_PARAM_INT_EXTRA_VARIABLES, 0);
2360
+ p.setIntValue(0);
2361
+ p.setLonghelp(
2362
+ "Switches on a trivial re-formulation that introduces extra integer variables to group together variables with same cost.");
2363
+ parameters.push_back(p);
2364
+ }
2365
+ #endif
2366
+ #ifdef COIN_HAS_CLP
2367
+ {
2368
+ CbcOrClpParam p("fact!orization", "Which factorization to use",
2369
+ "normal", CLP_PARAM_STR_FACTORIZATION);
2370
+ p.append("dense");
2371
+ p.append("simple");
2372
+ p.append("osl");
2373
+ p.setLonghelp(
2374
+ #ifndef ABC_INHERIT
2375
+ "The default is to use the normal CoinFactorization, but \
2376
+ other choices are a dense one, OSL's, or one designed for small problems."
2377
+ #else
2378
+ "Normally the default is to use the normal CoinFactorization, but \
2379
+ other choices are a dense one, OSL's, or one designed for small problems. \
2380
+ However if at Aboca then the default is CoinAbcFactorization and other choices are \
2381
+ a dense one, one designed for small problems or if enabled a long factorization."
2382
+ #endif
2383
+ );
2384
+ parameters.push_back(p);
2385
+ }
2386
+ {
2387
+ CbcOrClpParam p("fakeB!ound", "All bounds <= this value - DEBUG",
2388
+ 1.0, 1.0e15, CLP_PARAM_ACTION_FAKEBOUND, 0);
2389
+ parameters.push_back(p);
2390
+ }
2391
+ #ifdef COIN_HAS_CBC
2392
+ {
2393
+ CbcOrClpParam p("feas!ibilityPump", "Whether to try the Feasibility Pump heuristic",
2394
+ "off", CBC_PARAM_STR_FPUMP);
2395
+
2396
+ p.append("on");
2397
+ p.append("both");
2398
+ p.append("before");
2399
+ p.setLonghelp(
2400
+ "This heuristic is due to Fischetti, Glover, and Lodi \
2401
+ and uses a sequence of LPs to try and get an integer feasible solution. \
2402
+ Some fine tuning is available by options passFeasibilityPump and pumpTune. "
2403
+ HEURISTICS_LONGHELP);
2404
+ parameters.push_back(p);
2405
+ }
2406
+ {
2407
+ CbcOrClpParam p("fix!OnDj", "Try heuristic based on fixing variables with \
2408
+ reduced costs greater than this",
2409
+ -COIN_DBL_MAX, COIN_DBL_MAX, CBC_PARAM_DBL_DJFIX, 1);
2410
+ p.setLonghelp(
2411
+ "If this is set integer variables with reduced costs greater than this will be fixed \
2412
+ before branch and bound - use with extreme caution!");
2413
+ parameters.push_back(p);
2414
+ }
2415
+ {
2416
+ CbcOrClpParam p("flow!CoverCuts", "Whether to use Flow Cover cuts",
2417
+ "off", CBC_PARAM_STR_FLOWCUTS);
2418
+ p.append("on");
2419
+ p.append("root");
2420
+ p.append("ifmove");
2421
+ p.append("forceOn");
2422
+ p.append("onglobal");
2423
+ p.setFakeKeyWord(3);
2424
+ p.setLonghelp(CUTS_LONGHELP
2425
+ " Reference: https://github.com/coin-or/Cgl/wiki/CglFlowCover"); // Can also enter testing values by plusnn (==ifmove)
2426
+ parameters.push_back(p);
2427
+ }
2428
+ {
2429
+ CbcOrClpParam p("force!Solution", "Whether to use given solution as crash for BAB",
2430
+ -1, 20000000, CLP_PARAM_INT_USESOLUTION);
2431
+ p.setIntValue(-1);
2432
+ p.setLonghelp(
2433
+ "-1 off. If 1 then tries to branch to solution given by AMPL or priorities file. \
2434
+ If 0 then just tries to set as best solution \
2435
+ If >1 then also does that many nodes on fixed problem.");
2436
+ parameters.push_back(p);
2437
+ }
2438
+ {
2439
+ CbcOrClpParam p("fraction!forBAB", "Fraction in feasibility pump",
2440
+ 1.0e-5, 1.1, CBC_PARAM_DBL_SMALLBAB, 1);
2441
+ p.setDoubleValue(0.5);
2442
+ p.setLonghelp(
2443
+ "After a pass in the feasibility pump, variables which have not moved \
2444
+ about are fixed and if the preprocessed model is smaller than this fraction of the original problem, \
2445
+ a few nodes of branch and bound are done on the reduced problem.");
2446
+ parameters.push_back(p);
2447
+ }
2448
+ #endif
2449
+ {
2450
+ CbcOrClpParam p("gamma!(Delta)", "Whether to regularize barrier",
2451
+ "off", CLP_PARAM_STR_GAMMA, 7, 1);
2452
+ p.append("on");
2453
+ p.append("gamma");
2454
+ p.append("delta");
2455
+ p.append("onstrong");
2456
+ p.append("gammastrong");
2457
+ p.append("deltastrong");
2458
+ parameters.push_back(p);
2459
+ }
2460
+ #endif
2461
+ #ifdef COIN_HAS_CBC
2462
+ {
2463
+ CbcOrClpParam p("GMI!Cuts", "Whether to use alternative Gomory cuts",
2464
+ "off", CBC_PARAM_STR_GMICUTS);
2465
+
2466
+ p.append("on");
2467
+ p.append("root");
2468
+ p.append("ifmove");
2469
+ p.append("forceOn");
2470
+ p.append("endonly");
2471
+ p.append("long");
2472
+ p.append("longroot");
2473
+ p.append("longifmove");
2474
+ p.append("forceLongOn");
2475
+ p.append("longendonly");
2476
+ p.setLonghelp(CUTS_LONGHELP
2477
+ " This version is by Giacomo Nannicini and may be more robust than gomoryCuts.");
2478
+ parameters.push_back(p);
2479
+ }
2480
+ {
2481
+ CbcOrClpParam p("gomory!Cuts", "Whether to use Gomory cuts",
2482
+ "off", CBC_PARAM_STR_GOMORYCUTS);
2483
+
2484
+ p.append("on");
2485
+ p.append("root");
2486
+ p.append("ifmove");
2487
+ p.append("forceOn");
2488
+ p.append("onglobal");
2489
+ p.append("forceandglobal");
2490
+ p.append("forceLongOn");
2491
+ p.append("long");
2492
+ p.setLonghelp(
2493
+ "The original cuts - beware of imitations! Having gone out of favor, \
2494
+ they are now more fashionable as LP solvers are more robust and they interact well \
2495
+ with other cuts. They will almost always give cuts (although in this executable \
2496
+ they are limited as to number of variables in cut). However the cuts may be dense \
2497
+ so it is worth experimenting (Long allows any length). "
2498
+ CUTS_LONGHELP
2499
+ " Reference: https://github.com/coin-or/Cgl/wiki/CglGomory");
2500
+ parameters.push_back(p);
2501
+ }
2502
+ {
2503
+ CbcOrClpParam p("greedy!Heuristic", "Whether to use a greedy heuristic",
2504
+ "off", CBC_PARAM_STR_GREEDY);
2505
+
2506
+ p.append("on");
2507
+ p.append("both");
2508
+ p.append("before");
2509
+ //p.append("root");
2510
+ p.setLonghelp(
2511
+ "This heuristic tries to obtain a feasible solution by just fixing a percentage of variables and then try a small branch and cut run. "
2512
+ HEURISTICS_LONGHELP);
2513
+ parameters.push_back(p);
2514
+ }
2515
+ #endif
2516
+ {
2517
+ CbcOrClpParam p("gsolu!tion", "Puts glpk solution to file",
2518
+ CLP_PARAM_ACTION_GMPL_SOLUTION);
2519
+
2520
+ p.setLonghelp(
2521
+ "Will write a glpk solution file to the given file name. It will use the default \
2522
+ directory given by 'directory'. A name of '$' will use the previous value for the \
2523
+ name. This is initialized to 'stdout' (this defaults to ordinary solution if stdout). \
2524
+ If problem created from gmpl model - will do any reports.");
2525
+ parameters.push_back(p);
2526
+ }
2527
+ {
2528
+ CbcOrClpParam p("guess", "Guesses at good parameters", CLP_PARAM_ACTION_GUESS, 7);
2529
+ p.setLonghelp(
2530
+ "This looks at model statistics and does an initial solve \
2531
+ setting some parameters which may help you to think of possibilities.");
2532
+ parameters.push_back(p);
2533
+ }
2534
+ #ifdef COIN_HAS_CBC
2535
+ {
2536
+ CbcOrClpParam p("heur!isticsOnOff", "Switches most primal heuristics on or off",
2537
+ "off", CBC_PARAM_STR_HEURISTICSTRATEGY);
2538
+ p.append("on");
2539
+ p.setLonghelp(
2540
+ "This option can be used to switch on or off all heuristics that search for feasible solutions,\
2541
+ except for the local tree search, as it dramatically alters the search.\
2542
+ Then individual heuristics can be turned off or on.");
2543
+ parameters.push_back(p);
2544
+ }
2545
+ {
2546
+ CbcOrClpParam p("help", "Print out version, non-standard options and some help",
2547
+ CLP_PARAM_ACTION_HELP, 3);
2548
+ p.setLonghelp(
2549
+ "This prints out some help to get user started. If you have printed this then \
2550
+ you should be past that stage:-)");
2551
+ parameters.push_back(p);
2552
+ }
2553
+ #endif
2554
+ #ifdef COIN_HAS_CBC
2555
+ {
2556
+ CbcOrClpParam p("hOp!tions", "Heuristic options",
2557
+ -COIN_INT_MAX, COIN_INT_MAX, CBC_PARAM_INT_HOPTIONS, 1);
2558
+ p.setIntValue(0);
2559
+ p.setLonghelp(
2560
+ "Value 1 stops heuristics immediately if the allowable gap has been reached. \
2561
+ Other values are for the feasibility pump - \
2562
+ 2 says do exact number of passes given, \
2563
+ 4 only applies if an initial cutoff has been given and says relax after 50 passes, \
2564
+ while 8 will adapt the cutoff rhs after the first solution if it looks as if the code is stalling.");
2565
+ parameters.push_back(p);
2566
+ }
2567
+ {
2568
+ CbcOrClpParam p("hot!StartMaxIts", "Maximum iterations on hot start",
2569
+ 0, COIN_INT_MAX, CBC_PARAM_INT_MAXHOTITS);
2570
+ parameters.push_back(p);
2571
+ }
2572
+ #endif
2573
+ #ifdef COIN_HAS_CLP
2574
+ {
2575
+ CbcOrClpParam p("idiot!Crash", "Whether to try idiot crash",
2576
+ -1, COIN_INT_MAX, CLP_PARAM_INT_IDIOT);
2577
+
2578
+ p.setLonghelp(
2579
+ "This is a type of 'crash' which works well on some homogeneous problems.\
2580
+ It works best on problems with unit elements and rhs but will do something to any \
2581
+ model. It should only be used before the primal simplex algorithm. It can be set to -1 when the code \
2582
+ decides for itself whether to use it, 0 to switch off, or n > 0 to do n passes.");
2583
+ parameters.push_back(p);
2584
+ }
2585
+ #endif
2586
+ {
2587
+ CbcOrClpParam p("import", "Import model from mps file",
2588
+ CLP_PARAM_ACTION_IMPORT, 3);
2589
+ p.setLonghelp(
2590
+ "This will read an MPS format file from the given file name. It will use the default\
2591
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
2592
+ is initialized to '', i.e. it must be set. If you have libgz then it can read compressed\
2593
+ files 'xxxxxxxx.gz' or 'xxxxxxxx.bz2'. \
2594
+ If 'keepnames' is off, then names are dropped -> Rnnnnnnn and Cnnnnnnn.");
2595
+ parameters.push_back(p);
2596
+ }
2597
+ #ifdef COIN_HAS_CBC
2598
+ {
2599
+ CbcOrClpParam p("inc!rement", "A valid solution must be at least this \
2600
+ much better than last integer solution",
2601
+ -COIN_DBL_MAX, COIN_DBL_MAX, CBC_PARAM_DBL_INCREMENT);
2602
+
2603
+ p.setLonghelp(
2604
+ "Whenever a solution is found the bound on the objective value for new solutions is set to the\
2605
+ objective function of the found solution (in a minimization sense) plus this. If it is not set then CBC will try and work one out, e.g. if \
2606
+ all objective coefficients are multiples of 0.01 and only integer variables have entries in \
2607
+ the objective function, then the increment can be set to 0.01. Be careful if setting this to a negative value!");
2608
+
2609
+ parameters.push_back(p);
2610
+ }
2611
+ {
2612
+ CbcOrClpParam p("inf!easibilityWeight", "Each integer infeasibility is expected \
2613
+ to cost this much",
2614
+ 0.0, COIN_DBL_MAX, CBC_PARAM_DBL_INFEASIBILITYWEIGHT, 1);
2615
+ p.setLonghelp(
2616
+ "A primitive way of deciding which node to explore next. Satisfying each integer infeasibility is \
2617
+ expected to cost this much.");
2618
+ parameters.push_back(p);
2619
+ }
2620
+ {
2621
+ CbcOrClpParam p("initialS!olve", "Solve to continuous",
2622
+ CLP_PARAM_ACTION_SOLVECONTINUOUS);
2623
+
2624
+ p.setLonghelp(
2625
+ "This just solves the problem to continuous - without adding any cuts");
2626
+ parameters.push_back(p);
2627
+ }
2628
+ {
2629
+ CbcOrClpParam p("integerT!olerance", "For a feasible solution \
2630
+ no integer variable may be more than this away from an integer value",
2631
+ 1.0e-20, 0.5, CBC_PARAM_DBL_INTEGERTOLERANCE);
2632
+ p.setLonghelp(
2633
+ "Beware of setting this smaller than the primal feasibility tolerance.");
2634
+ parameters.push_back(p);
2635
+ }
2636
+ #endif
2637
+ #ifdef COIN_HAS_CLP
2638
+ {
2639
+ CbcOrClpParam p("keepN!ames", "Whether to keep names from import",
2640
+ "on", CLP_PARAM_STR_KEEPNAMES);
2641
+ p.append("off");
2642
+ p.setLonghelp(
2643
+ "It saves space to get rid of names so if you need to you can set this to off. \
2644
+ This needs to be set before the import of model - so -keepnames off -import xxxxx.mps.");
2645
+ parameters.push_back(p);
2646
+ }
2647
+ {
2648
+ CbcOrClpParam p("KKT", "Whether to use KKT factorization in barrier",
2649
+ "off", CLP_PARAM_STR_KKT, 7, 1);
2650
+ p.append("on");
2651
+ parameters.push_back(p);
2652
+ }
2653
+ #endif
2654
+ #ifdef COIN_HAS_CBC
2655
+ {
2656
+ CbcOrClpParam p("knapsack!Cuts", "Whether to use Knapsack cuts",
2657
+ "off", CBC_PARAM_STR_KNAPSACKCUTS);
2658
+
2659
+ p.append("on");
2660
+ p.append("root");
2661
+ p.append("ifmove");
2662
+ p.append("forceOn");
2663
+ p.append("onglobal");
2664
+ p.append("forceandglobal");
2665
+ p.setLonghelp(CUTS_LONGHELP
2666
+ " Reference: https://github.com/coin-or/Cgl/wiki/CglKnapsackCover");
2667
+ parameters.push_back(p);
2668
+ }
2669
+ {
2670
+ CbcOrClpParam p("lagomory!Cuts", "Whether to use Lagrangean Gomory cuts",
2671
+ "off", CBC_PARAM_STR_LAGOMORYCUTS);
2672
+ p.append("endonlyroot");
2673
+ p.append("endcleanroot");
2674
+ p.append("root");
2675
+ p.append("endonly");
2676
+ p.append("endclean");
2677
+ p.append("endboth");
2678
+ p.append("onlyaswell");
2679
+ p.append("cleanaswell");
2680
+ p.append("bothaswell");
2681
+ p.append("onlyinstead");
2682
+ p.append("cleaninstead");
2683
+ p.append("bothinstead");
2684
+ p.append("onlyaswellroot");
2685
+ p.append("cleanaswellroot");
2686
+ p.append("bothaswellroot");
2687
+ p.setLonghelp(
2688
+ "This is a gross simplification of 'A Relax-and-Cut Framework for Gomory's Mixed-Integer Cuts' \
2689
+ by Matteo Fischetti & Domenico Salvagnin. This simplification \
2690
+ just uses original constraints while modifying objective using other cuts. \
2691
+ So you don't use messy constraints generated by Gomory etc. \
2692
+ A variant is to allow non messy cuts e.g. clique cuts. \
2693
+ So 'only' does this while 'clean' also allows integral valued cuts. \
2694
+ 'End' is recommended and waits until other cuts have finished before it \
2695
+ does a few passes. \
2696
+ The length options for gomory cuts are used.");
2697
+ parameters.push_back(p);
2698
+ }
2699
+ {
2700
+ CbcOrClpParam p("latwomir!Cuts", "Whether to use Lagrangean TwoMir cuts",
2701
+ "off", CBC_PARAM_STR_LATWOMIRCUTS);
2702
+
2703
+ p.append("endonlyroot");
2704
+ p.append("endcleanroot");
2705
+ p.append("endbothroot");
2706
+ p.append("endonly");
2707
+ p.append("endclean");
2708
+ p.append("endboth");
2709
+ p.append("onlyaswell");
2710
+ p.append("cleanaswell");
2711
+ p.append("bothaswell");
2712
+ p.append("onlyinstead");
2713
+ p.append("cleaninstead");
2714
+ p.append("bothinstead");
2715
+ p.setLonghelp(
2716
+ "This is a Lagrangean relaxation for TwoMir cuts. See \
2717
+ lagomoryCuts for description of options.");
2718
+ parameters.push_back(p);
2719
+ }
2720
+ {
2721
+ CbcOrClpParam p("lift!AndProjectCuts", "Whether to use Lift and Project cuts",
2722
+ "off", CBC_PARAM_STR_LANDPCUTS);
2723
+
2724
+ p.append("on");
2725
+ p.append("root");
2726
+ p.append("ifmove");
2727
+ p.append("forceOn");
2728
+ p.setLonghelp(
2729
+ "These cuts may be expensive to compute. "
2730
+ CUTS_LONGHELP
2731
+ " Reference: https://github.com/coin-or/Cgl/wiki/CglLandP");
2732
+ parameters.push_back(p);
2733
+ }
2734
+ {
2735
+ CbcOrClpParam p("local!TreeSearch", "Whether to use local tree search when a solution is found",
2736
+ "off", CBC_PARAM_STR_LOCALTREE);
2737
+ p.append("on");
2738
+ p.setLonghelp(
2739
+ "The heuristic is from Fischetti and Lodi and is not really a heuristic although it can be used as one \
2740
+ (with limited functionality). It is not switched on when heuristics are switched on.");
2741
+ parameters.push_back(p);
2742
+ }
2743
+ #endif
2744
+ {
2745
+ #ifndef COIN_HAS_CBC
2746
+ CbcOrClpParam p("log!Level", "Level of detail in Solver output",
2747
+ -1, COIN_INT_MAX, CLP_PARAM_INT_SOLVERLOGLEVEL);
2748
+ parameters.push_back(p);
2749
+ #else
2750
+ CbcOrClpParam p("log!Level", "Level of detail in Coin branch and Cut output",
2751
+ -63, 63, CLP_PARAM_INT_LOGLEVEL);
2752
+ p.setIntValue(1);
2753
+ #endif
2754
+ p.setLonghelp(
2755
+ "If 0 then there should be no output in normal circumstances. 1 is probably the best\
2756
+ value for most uses, while 2 and 3 give more information.");
2757
+ parameters.push_back(p);
2758
+ }
2759
+ {
2760
+ CbcOrClpParam p("max!imize", "Set optimization direction to maximize",
2761
+ CLP_PARAM_ACTION_MAXIMIZE, 7);
2762
+ p.setLonghelp(
2763
+ "The default is minimize - use 'maximize' for maximization.\n\
2764
+ You can also use the parameters 'direction maximize'.");
2765
+ parameters.push_back(p);
2766
+ }
2767
+ #ifdef COIN_HAS_CLP
2768
+ {
2769
+ CbcOrClpParam p("maxF!actor", "Maximum number of iterations between \
2770
+ refactorizations",
2771
+ 1, COIN_INT_MAX, CLP_PARAM_INT_MAXFACTOR);
2772
+ p.setLonghelp(
2773
+ "If this is left at its default value of 200 then CLP will guess a\
2774
+ value to use. CLP may decide to re-factorize earlier for accuracy.");
2775
+ parameters.push_back(p);
2776
+ }
2777
+ {
2778
+ CbcOrClpParam p("maxIt!erations", "Maximum number of iterations before \
2779
+ stopping",
2780
+ 0, COIN_INT_MAX, CLP_PARAM_INT_MAXITERATION);
2781
+ p.setLonghelp(
2782
+ "This can be used for testing purposes. The corresponding library call\n\
2783
+ \tsetMaximumIterations(value)\n can be useful. If the code stops on\
2784
+ seconds or by an interrupt this will be treated as stopping on maximum iterations. This is ignored in branchAndCut - use maxN!odes.");
2785
+ parameters.push_back(p);
2786
+ }
2787
+ #endif
2788
+ #ifdef COIN_HAS_CBC
2789
+ {
2790
+ CbcOrClpParam p("maxN!odes", "Maximum number of nodes to do",
2791
+ -1, COIN_INT_MAX, CBC_PARAM_INT_MAXNODES);
2792
+ p.setLonghelp(
2793
+ "This is a repeatable way to limit search. Normally using time is easier \
2794
+ but then the results may not be repeatable.");
2795
+ parameters.push_back(p);
2796
+ }
2797
+ {
2798
+ CbcOrClpParam p("maxSaved!Solutions", "Maximum number of solutions to save",
2799
+ 0, COIN_INT_MAX, CBC_PARAM_INT_MAXSAVEDSOLS);
2800
+ p.setLonghelp(
2801
+ "Number of solutions to save.");
2802
+ parameters.push_back(p);
2803
+ }
2804
+ {
2805
+ CbcOrClpParam p("maxSo!lutions", "Maximum number of feasible solutions to get",
2806
+ 1, COIN_INT_MAX, CBC_PARAM_INT_MAXSOLS);
2807
+ p.setLonghelp(
2808
+ "You may want to stop after (say) two solutions or an hour. \
2809
+ This is checked every node in tree, so it is possible to get more solutions from heuristics.");
2810
+ parameters.push_back(p);
2811
+ }
2812
+ #endif
2813
+ {
2814
+ CbcOrClpParam p("min!imize", "Set optimization direction to minimize",
2815
+ CLP_PARAM_ACTION_MINIMIZE, 7);
2816
+ p.setLonghelp(
2817
+ "The default is minimize - use 'maximize' for maximization.\n\
2818
+ This should only be necessary if you have previously set maximization \
2819
+ You can also use the parameters 'direction minimize'.");
2820
+ parameters.push_back(p);
2821
+ }
2822
+ #ifdef COIN_HAS_CBC
2823
+ {
2824
+ CbcOrClpParam p("mipO!ptions", "Dubious options for mip",
2825
+ 0, COIN_INT_MAX, CBC_PARAM_INT_MIPOPTIONS, 0);
2826
+ p.setIntValue(1057);
2827
+ parameters.push_back(p);
2828
+ }
2829
+ {
2830
+ CbcOrClpParam p("more!MipOptions", "More dubious options for mip",
2831
+ -1, COIN_INT_MAX, CBC_PARAM_INT_MOREMIPOPTIONS, 0);
2832
+ parameters.push_back(p);
2833
+ }
2834
+ {
2835
+ CbcOrClpParam p("more2!MipOptions", "More more dubious options for mip",
2836
+ -1, COIN_INT_MAX, CBC_PARAM_INT_MOREMOREMIPOPTIONS, 0);
2837
+ p.setIntValue(0);
2838
+ parameters.push_back(p);
2839
+ }
2840
+ {
2841
+ CbcOrClpParam p("mixed!IntegerRoundingCuts", "Whether to use Mixed Integer Rounding cuts",
2842
+ "off", CBC_PARAM_STR_MIXEDCUTS);
2843
+
2844
+ p.append("on");
2845
+ p.append("root");
2846
+ p.append("ifmove");
2847
+ p.append("forceOn");
2848
+ p.append("onglobal");
2849
+ p.setLonghelp(CUTS_LONGHELP
2850
+ " Reference: https://github.com/coin-or/Cgl/wiki/CglMixedIntegerRounding2");
2851
+ parameters.push_back(p);
2852
+ }
2853
+ #endif
2854
+ {
2855
+ CbcOrClpParam p("mess!ages", "Controls if Clpnnnn is printed",
2856
+ "off", CLP_PARAM_STR_MESSAGES);
2857
+
2858
+ p.append("on");
2859
+ p.setLonghelp("The default behavior is to put out messages such as:\n\
2860
+ Clp0005 2261 Objective 109.024 Primal infeas 944413 (758)\n\
2861
+ but this program turns this off to make it look more friendly. It can be useful\
2862
+ to turn them back on if you want to be able to 'grep' for particular messages or if\
2863
+ you intend to override the behavior of a particular message. This only affects Clp not Cbc.");
2864
+ parameters.push_back(p);
2865
+ }
2866
+ {
2867
+ CbcOrClpParam p("miplib", "Do some of miplib test set",
2868
+ CBC_PARAM_ACTION_MIPLIB, 3, 1);
2869
+ parameters.push_back(p);
2870
+ }
2871
+ #ifdef COIN_HAS_CBC
2872
+ {
2873
+ CbcOrClpParam p("mips!tart", "reads an initial feasible solution from file",
2874
+ CBC_PARAM_ACTION_MIPSTART);
2875
+ p.setLonghelp("\
2876
+ The MIPStart allows one to enter an initial integer feasible solution \
2877
+ to CBC. Values of the main decision variables which are active (have \
2878
+ non-zero values) in this solution are specified in a text file. The \
2879
+ text file format used is the same of the solutions saved by CBC, but \
2880
+ not all fields are required to be filled. First line may contain the \
2881
+ solution status and will be ignored, remaining lines contain column \
2882
+ indexes, names and values as in this example:\n\
2883
+ \n\
2884
+ Stopped on iterations - objective value 57597.00000000\n\
2885
+ 0 x(1,1,2,2) 1 \n\
2886
+ 1 x(3,1,3,2) 1 \n\
2887
+ 5 v(5,1) 2 \n\
2888
+ 33 x(8,1,5,2) 1 \n\
2889
+ ...\n\
2890
+ \n\
2891
+ Column indexes are also ignored since pre-processing can change them. \
2892
+ There is no need to include values for continuous or integer auxiliary \
2893
+ variables, since they can be computed based on main decision variables. \
2894
+ Starting CBC with an integer feasible solution can dramatically improve \
2895
+ its performance: several MIP heuristics (e.g. RINS) rely on having at \
2896
+ least one feasible solution available and can start immediately if the \
2897
+ user provides one. Feasibility Pump (FP) is a heuristic which tries to \
2898
+ overcome the problem of taking too long to find feasible solution (or \
2899
+ not finding at all), but it not always succeeds. If you provide one \
2900
+ starting solution you will probably save some time by disabling FP. \
2901
+ \n\n\
2902
+ Knowledge specific to your problem can be considered to write an \
2903
+ external module to quickly produce an initial feasible solution - some \
2904
+ alternatives are the implementation of simple greedy heuristics or the \
2905
+ solution (by CBC for example) of a simpler model created just to find \
2906
+ a feasible solution. \
2907
+ \n\n\
2908
+ Silly options added. If filename ends .low then integers not mentioned \
2909
+ are set low - also .high, .lowcheap, .highcheap, .lowexpensive, .highexpensive \
2910
+ where .lowexpensive sets costed ones to make expensive others low. Also if \
2911
+ filename starts empty. then no file is read at all - just actions done. \
2912
+ \n\n\
2913
+ Question and suggestions regarding MIPStart can be directed to\n\
2914
+ haroldo.santos@gmail.com. ");
2915
+ parameters.push_back(p);
2916
+ }
2917
+ #endif
2918
+ {
2919
+ CbcOrClpParam p("moreS!pecialOptions", "Yet more dubious options for Simplex - see ClpSimplex.hpp",
2920
+ 0, COIN_INT_MAX, CLP_PARAM_INT_MORESPECIALOPTIONS, 0);
2921
+ parameters.push_back(p);
2922
+ }
2923
+ #ifdef COIN_HAS_CBC
2924
+ {
2925
+ CbcOrClpParam p("moreT!une", "Yet more dubious ideas for feasibility pump",
2926
+ 0, 100000000, CBC_PARAM_INT_FPUMPTUNE2, 0);
2927
+
2928
+ p.setLonghelp(
2929
+ "Yet more ideas for Feasibility Pump \n\
2930
+ \t/100000 == 1 use box constraints and original obj in cleanup\n\
2931
+ \t/1000 == 1 Pump will run twice if no solution found\n\
2932
+ \t/1000 == 2 Pump will only run after root cuts if no solution found\n\
2933
+ \t/1000 >10 as above but even if solution found\n\
2934
+ \t/100 == 1,3.. exact 1.0 for objective values\n\
2935
+ \t/100 == 2,3.. allow more iterations per pass\n\
2936
+ \t n fix if value of variable same for last n iterations.");
2937
+ p.setIntValue(0);
2938
+ parameters.push_back(p);
2939
+ }
2940
+ {
2941
+ CbcOrClpParam p("multiple!RootPasses", "Do multiple root passes to collect cuts and solutions",
2942
+ 0, COIN_INT_MAX, CBC_PARAM_INT_MULTIPLEROOTS, 0);
2943
+ p.setIntValue(0);
2944
+ p.setLonghelp(
2945
+ "Solve (in parallel, if enabled) the root phase this number of times, \
2946
+ each with its own different seed, and collect all solutions and cuts generated. \
2947
+ The actual format is aabbcc where aa is the number of extra passes; \
2948
+ if bb is non zero, then it is number of threads to use (otherwise uses threads setting); \
2949
+ and cc is the number of times to do root phase. \
2950
+ The solvers do not interact with each other. However if extra passes are specified \
2951
+ then cuts are collected and used in later passes - so there is interaction there. \
2952
+ Some parts of this implementation have their origin in idea of \
2953
+ Andrea Lodi, Matteo Fischetti, Michele Monaci, Domenico Salvagnin, and Andrea Tramontani.");
2954
+ parameters.push_back(p);
2955
+ }
2956
+ {
2957
+ CbcOrClpParam p("naive!Heuristics", "Whether to try some stupid heuristic",
2958
+ "off", CBC_PARAM_STR_NAIVE, 7, 1);
2959
+
2960
+ p.append("on");
2961
+ p.append("both");
2962
+ p.append("before");
2963
+ p.setLonghelp(
2964
+ "This is naive heuristics which, e.g., fix all integers with costs to zero!. "
2965
+ HEURISTICS_LONGHELP);
2966
+ parameters.push_back(p);
2967
+ }
2968
+ #endif
2969
+ #ifdef COIN_HAS_CLP
2970
+ {
2971
+ CbcOrClpParam p("netlib", "Solve entire netlib test set",
2972
+ CLP_PARAM_ACTION_NETLIB_EITHER, 3, 1);
2973
+ p.setLonghelp(
2974
+ "This exercises the unit test for clp and then solves the netlib test set using dual or primal.\
2975
+ The user can set options before e.g. clp -presolve off -netlib");
2976
+ parameters.push_back(p);
2977
+ }
2978
+ {
2979
+ CbcOrClpParam p("netlibB!arrier", "Solve entire netlib test set with barrier",
2980
+ CLP_PARAM_ACTION_NETLIB_BARRIER, 3, 1);
2981
+ p.setLonghelp(
2982
+ "This exercises the unit test for clp and then solves the netlib test set using barrier.\
2983
+ The user can set options before e.g. clp -kkt on -netlib");
2984
+ parameters.push_back(p);
2985
+ }
2986
+ {
2987
+ CbcOrClpParam p("netlibD!ual", "Solve entire netlib test set (dual)",
2988
+ CLP_PARAM_ACTION_NETLIB_DUAL, 3, 1);
2989
+
2990
+ p.setLonghelp(
2991
+ "This exercises the unit test for clp and then solves the netlib test set using dual.\
2992
+ The user can set options before e.g. clp -presolve off -netlib");
2993
+ parameters.push_back(p);
2994
+ }
2995
+ {
2996
+ CbcOrClpParam p("netlibP!rimal", "Solve entire netlib test set (primal)",
2997
+ CLP_PARAM_ACTION_NETLIB_PRIMAL, 3, 1);
2998
+ p.setLonghelp(
2999
+ "This exercises the unit test for clp and then solves the netlib test set using primal.\
3000
+ The user can set options before e.g. clp -presolve off -netlibp");
3001
+ parameters.push_back(p);
3002
+ }
3003
+ {
3004
+ CbcOrClpParam p("netlibT!une", "Solve entire netlib test set with 'best' algorithm",
3005
+ CLP_PARAM_ACTION_NETLIB_TUNE, 3, 1);
3006
+ p.setLonghelp(
3007
+ "This exercises the unit test for clp and then solves the netlib test set using whatever \
3008
+ works best. I know this is cheating but it also stresses the code better by doing a \
3009
+ mixture of stuff. The best algorithm was chosen on a Linux ThinkPad using native cholesky \
3010
+ with University of Florida ordering.");
3011
+ parameters.push_back(p);
3012
+ }
3013
+ {
3014
+ CbcOrClpParam p("network", "Tries to make network matrix",
3015
+ CLP_PARAM_ACTION_NETWORK, 7, 0);
3016
+ p.setLonghelp(
3017
+ "Clp will go faster if the matrix can be converted to a network. The matrix\
3018
+ operations may be a bit faster with more efficient storage, but the main advantage\
3019
+ comes from using a network factorization. It will probably not be as fast as a \
3020
+ specialized network code.");
3021
+ parameters.push_back(p);
3022
+ }
3023
+ #ifdef COIN_HAS_CBC
3024
+ {
3025
+ CbcOrClpParam p("nextB!estSolution", "Prints next best saved solution to file",
3026
+ CLP_PARAM_ACTION_NEXTBESTSOLUTION);
3027
+
3028
+ p.setLonghelp(
3029
+ "To write best solution, just use solution. This prints next best (if exists) \
3030
+ and then deletes it. \
3031
+ This will write a primitive solution file to the given file name. It will use the default\
3032
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
3033
+ is initialized to 'stdout'. The amount of output can be varied using printi!ngOptions or printMask.");
3034
+ parameters.push_back(p);
3035
+ }
3036
+ {
3037
+ CbcOrClpParam p("node!Strategy", "What strategy to use to select the next node from the branch and cut tree",
3038
+ "hybrid", CBC_PARAM_STR_NODESTRATEGY);
3039
+ p.append("fewest");
3040
+ p.append("depth");
3041
+ p.append("upfewest");
3042
+ p.append("downfewest");
3043
+ p.append("updepth");
3044
+ p.append("downdepth");
3045
+ p.setLonghelp(
3046
+ "Normally before a feasible solution is found, CBC will choose a node with fewest infeasibilities. \
3047
+ Alternatively, one may choose tree-depth as the criterion. This requires the minimal amount of memory, but may take a long time to find the best solution.\
3048
+ Additionally, one may specify whether up or down branches must \
3049
+ be selected first (the up-down choice will carry on after a first solution has been bound). \
3050
+ The default choice 'hybrid' does breadth first on small depth nodes and then switches to 'fewest'.");
3051
+ parameters.push_back(p);
3052
+ }
3053
+ {
3054
+ CbcOrClpParam p("numberA!nalyze", "Number of analysis iterations",
3055
+ -COIN_INT_MAX, COIN_INT_MAX, CBC_PARAM_INT_NUMBERANALYZE, 0);
3056
+ p.setLonghelp(
3057
+ "This says how many iterations to spend at root node analyzing problem. \
3058
+ This is a first try and will hopefully become more sophisticated.");
3059
+ parameters.push_back(p);
3060
+ }
3061
+ #endif
3062
+ {
3063
+ CbcOrClpParam p("objective!Scale", "Scale factor to apply to objective",
3064
+ -COIN_DBL_MAX, COIN_DBL_MAX, CLP_PARAM_DBL_OBJSCALE, 1);
3065
+ p.setLonghelp(
3066
+ "If the objective function has some very large values, you may wish to scale them\
3067
+ internally by this amount. It can also be set by autoscale. It is applied after scaling. You are unlikely to need this.");
3068
+ p.setDoubleValue(1.0);
3069
+ parameters.push_back(p);
3070
+ }
3071
+ #endif
3072
+ #ifdef COIN_HAS_CBC
3073
+ #ifdef COIN_HAS_NTY
3074
+ {
3075
+ CbcOrClpParam p("Orbit!alBranching", "Whether to try orbital branching",
3076
+ "off", CBC_PARAM_STR_ORBITAL);
3077
+ p.append("on");
3078
+ p.append("strong");
3079
+ p.append("force");
3080
+ p.append("simple");
3081
+ p.append("fastish");
3082
+ p.append("lightweight");
3083
+ p.append("moreprinting");
3084
+ p.append("cuts");
3085
+ p.append("cutslight");
3086
+ p.setLonghelp(
3087
+ "This switches on Orbital branching. \
3088
+ Value 'on' just adds orbital, 'strong' tries extra fixing in strong branching. \
3089
+ 'cuts' just adds global cuts to break symmetry. \
3090
+ 'fastish' only computes symmetry at root. \
3091
+ 'lightweight' is as on where computation seems cheap");
3092
+ parameters.push_back(p);
3093
+ }
3094
+ #endif
3095
+ {
3096
+ CbcOrClpParam p("PrepN!ames", "If column names will be kept in pre-processed model",
3097
+ "off", CBC_PARAM_STR_PREPROCNAMES);
3098
+ p.append("on");
3099
+ p.setLonghelp(
3100
+ "Normally the preprocessed model has column names replaced by new names C0000...\
3101
+ Setting this option to on keeps original names in variables which still exist in the preprocessed problem");
3102
+ parameters.push_back(p);
3103
+ }
3104
+
3105
+ {
3106
+ CbcOrClpParam p("outDup!licates", "takes duplicate rows etc out of integer model",
3107
+ CLP_PARAM_ACTION_OUTDUPROWS, 7, 0);
3108
+ parameters.push_back(p);
3109
+ }
3110
+ #endif
3111
+ {
3112
+ CbcOrClpParam p("output!Format", "Which output format to use",
3113
+ 1, 6, CLP_PARAM_INT_OUTPUTFORMAT);
3114
+ p.setLonghelp(
3115
+ "Normally export will be done using normal representation for numbers and two values\
3116
+ per line. You may want to do just one per line (for grep or suchlike) and you may wish\
3117
+ to save with absolute accuracy using a coded version of the IEEE value. A value of 2 is normal.\
3118
+ otherwise odd values gives one value per line, even two. Values 1,2 give normal format, 3,4\
3119
+ gives greater precision, while 5,6 give IEEE values. When used for exporting a basis 1 does not save \
3120
+ values, 2 saves values, 3 with greater accuracy and 4 in IEEE.");
3121
+ parameters.push_back(p);
3122
+ }
3123
+ #ifdef COIN_HAS_CLP
3124
+ {
3125
+ CbcOrClpParam p("para!metrics", "Import data from file and do parametrics",
3126
+ CLP_PARAM_ACTION_PARAMETRICS, 3);
3127
+ p.setLonghelp(
3128
+ "This will read a file with parametric data from the given file name \
3129
+ and then do parametrics. It will use the default\
3130
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
3131
+ is initialized to '', i.e. it must be set. This can not read from compressed files. \
3132
+ File is in modified csv format - a line ROWS will be followed by rows data \
3133
+ while a line COLUMNS will be followed by column data. The last line \
3134
+ should be ENDATA. The ROWS line must exist and is in the format \
3135
+ ROWS, inital theta, final theta, interval theta, n where n is 0 to get \
3136
+ CLPI0062 message at interval or at each change of theta \
3137
+ and 1 to get CLPI0063 message at each iteration. If interval theta is 0.0 \
3138
+ or >= final theta then no interval reporting. n may be missed out when it is \
3139
+ taken as 0. If there is Row data then \
3140
+ there is a headings line with allowed headings - name, number, \
3141
+ lower(rhs change), upper(rhs change), rhs(change). Either the lower and upper \
3142
+ fields should be given or the rhs field. \
3143
+ The optional COLUMNS line is followed by a headings line with allowed \
3144
+ headings - name, number, objective(change), lower(change), upper(change). \
3145
+ Exactly one of name and number must be given for either section and \
3146
+ missing ones have value 0.0.");
3147
+ parameters.push_back(p);
3148
+ }
3149
+ #endif
3150
+ #ifdef COIN_HAS_CBC
3151
+ {
3152
+ CbcOrClpParam p("passC!uts", "Number of rounds that cut generators are applied in the root node",
3153
+ -COIN_INT_MAX, COIN_INT_MAX, CBC_PARAM_INT_CUTPASS);
3154
+
3155
+ p.setIntValue(20);
3156
+ p.setLonghelp(
3157
+ "The default is to do 100 passes if the problem has less than 500 columns, 100 passes (but \
3158
+ stop if the drop in the objective function value is small) if the problem has less than 5000 columns, and 20 passes otherwise. \
3159
+ A negative value -n means that n passes are also applied if the objective does not drop.");
3160
+ parameters.push_back(p);
3161
+ }
3162
+ {
3163
+ CbcOrClpParam p("passF!easibilityPump", "How many passes to do in the Feasibility Pump heuristic",
3164
+ 0, 10000, CBC_PARAM_INT_FPUMPITS);
3165
+ p.setIntValue(20);
3166
+ parameters.push_back(p);
3167
+ }
3168
+ #endif
3169
+ #ifdef COIN_HAS_CLP
3170
+ {
3171
+ CbcOrClpParam p("passP!resolve", "How many passes in presolve",
3172
+ -200, 100, CLP_PARAM_INT_PRESOLVEPASS, 1);
3173
+ p.setLonghelp(
3174
+ "Normally Presolve does 10 passes but you may want to do less to make it\
3175
+ more lightweight or do more if improvements are still being made. As Presolve will return\
3176
+ if nothing is being taken out, you should not normally need to use this fine tuning.");
3177
+ parameters.push_back(p);
3178
+ }
3179
+ #endif
3180
+ #ifdef COIN_HAS_CBC
3181
+ {
3182
+ CbcOrClpParam p("passT!reeCuts", "Number of rounds that cut generators are applied in the tree",
3183
+ -COIN_INT_MAX, COIN_INT_MAX, CBC_PARAM_INT_CUTPASSINTREE);
3184
+ p.setIntValue(1);
3185
+ p.setLonghelp("The default is to do one pass. A negative value -n means that n passes are also applied if the objective does not drop.");
3186
+ parameters.push_back(p);
3187
+ }
3188
+ #endif
3189
+ #ifdef COIN_HAS_CLP
3190
+ {
3191
+ CbcOrClpParam p("pertV!alue", "Method of perturbation",
3192
+ -5000, 102, CLP_PARAM_INT_PERTVALUE, 1);
3193
+ parameters.push_back(p);
3194
+ }
3195
+ {
3196
+ CbcOrClpParam p("perturb!ation", "Whether to perturb the problem",
3197
+ "on", CLP_PARAM_STR_PERTURBATION);
3198
+ p.append("off");
3199
+ p.setLonghelp(
3200
+ "Perturbation helps to stop cycling, but CLP uses other measures for this.\
3201
+ However, large problems and especially ones with unit elements and unit right hand sides or costs\
3202
+ benefit from perturbation. Normally CLP tries to be intelligent, but one can switch this off.");
3203
+ // The Clp library has this off by default. This program has it on by default.
3204
+ parameters.push_back(p);
3205
+ }
3206
+ {
3207
+ CbcOrClpParam p("PFI", "Whether to use Product Form of Inverse in simplex",
3208
+ "off", CLP_PARAM_STR_PFI, 7, 0);
3209
+ p.append("on");
3210
+ p.setLonghelp(
3211
+ "By default clp uses Forrest-Tomlin L-U update. If you are masochistic you can switch it off.");
3212
+ parameters.push_back(p);
3213
+ }
3214
+ #endif
3215
+ #ifdef COIN_HAS_CBC
3216
+ {
3217
+ CbcOrClpParam p("pivotAndC!omplement", "Whether to try Pivot and Complement heuristic",
3218
+ "off", CBC_PARAM_STR_PIVOTANDCOMPLEMENT);
3219
+
3220
+ p.append("on");
3221
+ p.append("both");
3222
+ p.append("before");
3223
+ p.setLonghelp(HEURISTICS_LONGHELP);
3224
+ parameters.push_back(p);
3225
+ }
3226
+ {
3227
+ CbcOrClpParam p("pivotAndF!ix", "Whether to try Pivot and Fix heuristic",
3228
+ "off", CBC_PARAM_STR_PIVOTANDFIX);
3229
+ p.append("on");
3230
+ p.append("both");
3231
+ p.append("before");
3232
+ p.setLonghelp(HEURISTICS_LONGHELP);
3233
+ parameters.push_back(p);
3234
+ }
3235
+ #endif
3236
+ #ifdef COIN_HAS_CLP
3237
+ {
3238
+ CbcOrClpParam p("plus!Minus", "Tries to make +- 1 matrix",
3239
+ CLP_PARAM_ACTION_PLUSMINUS, 7, 0);
3240
+ p.setLonghelp(
3241
+ "Clp will go slightly faster if the matrix can be converted so that the elements are\
3242
+ not stored and are known to be unit. The main advantage is memory use. Clp may automatically\
3243
+ see if it can convert the problem so you should not need to use this.");
3244
+ parameters.push_back(p);
3245
+ }
3246
+ {
3247
+ CbcOrClpParam p("pO!ptions", "Dubious print options",
3248
+ 0, COIN_INT_MAX, CLP_PARAM_INT_PRINTOPTIONS, 1);
3249
+ p.setIntValue(0);
3250
+ p.setLonghelp(
3251
+ "If this is > 0 then presolve will give more information and branch and cut will give statistics");
3252
+ parameters.push_back(p);
3253
+ }
3254
+ {
3255
+ CbcOrClpParam p("preO!pt", "Presolve options",
3256
+ 0, COIN_INT_MAX, CLP_PARAM_INT_PRESOLVEOPTIONS, 0);
3257
+ parameters.push_back(p);
3258
+ }
3259
+ #endif
3260
+ {
3261
+ CbcOrClpParam p("presolve", "Whether to presolve problem",
3262
+ "on", CLP_PARAM_STR_PRESOLVE);
3263
+ p.append("off");
3264
+ p.append("more");
3265
+ p.append("file");
3266
+ p.setLonghelp("Presolve analyzes the model to find such things as redundant equations, equations\
3267
+ which fix some variables, equations which can be transformed into bounds, etc. For the\
3268
+ initial solve of any problem this is worth doing unless one knows that it will have no effect. \
3269
+ Option 'on' will normally do 5 passes, while using 'more' will do 10. If the problem is very large one can \
3270
+ let CLP write the original problem to file by using 'file'.");
3271
+ parameters.push_back(p);
3272
+ }
3273
+ #ifdef COIN_HAS_CBC
3274
+ {
3275
+ CbcOrClpParam p("preprocess", "Whether to use integer preprocessing",
3276
+ "off", CBC_PARAM_STR_PREPROCESS);
3277
+
3278
+ p.append("on");
3279
+ p.append("save");
3280
+ p.append("equal");
3281
+ p.append("sos");
3282
+ p.append("trysos");
3283
+ p.append("equalall");
3284
+ p.append("strategy");
3285
+ p.append("aggregate");
3286
+ p.append("forcesos");
3287
+ p.append("stop!aftersaving");
3288
+ p.setLonghelp(
3289
+ "This tries to reduce size of model in a similar way to presolve and \
3290
+ it also tries to strengthen the model - this can be very useful and is worth trying. \
3291
+ Value 'save' saves the presolved problem to a file presolved.mps.\
3292
+ Value 'equal' will turn inequality-cliques into equalities.\
3293
+ Value 'sos' lets CBC search for rows with upper bound 1 and where all nonzero coefficients are 1 and creates special ordered sets if the sets are not overlapping and all integer variables (except for at most one) are in the sets.\
3294
+ Value 'trysos' is same as 'sos', but allows any number of integer variables outside of sets.\
3295
+ Value 'equalall' lets CBC turn all valid inequalities into equalities by adding integer slack variables."); // Value 'strategy' is as on but uses CbcStrategy.
3296
+ parameters.push_back(p);
3297
+ }
3298
+ #endif
3299
+ #ifdef COIN_HAS_CLP
3300
+ {
3301
+ CbcOrClpParam p("preT!olerance", "Tolerance to use in presolve",
3302
+ 1.0e-20, COIN_DBL_MAX, CLP_PARAM_DBL_PRESOLVETOLERANCE);
3303
+ p.setLonghelp(
3304
+ "One may want to increase this tolerance if presolve says the problem is \
3305
+ infeasible and one has awkward numbers and is sure that the problem is really feasible.");
3306
+ parameters.push_back(p);
3307
+ }
3308
+ {
3309
+ CbcOrClpParam p("primalP!ivot", "Primal pivot choice algorithm",
3310
+ "auto!matic", CLP_PARAM_STR_PRIMALPIVOT, 7, 1);
3311
+
3312
+ p.append("exa!ct");
3313
+ p.append("dant!zig");
3314
+ p.append("part!ial");
3315
+ p.append("steep!est");
3316
+ p.append("change");
3317
+ p.append("sprint");
3318
+ p.append("PEsteep!est");
3319
+ p.append("PEdantzig");
3320
+ p.setLonghelp(
3321
+ "The Dantzig method is simple but its use is deprecated. Exact devex is the method of choice and there\
3322
+ are two variants which keep all weights updated but only scan a subset each iteration.\
3323
+ Partial switches this on while 'change' initially does 'dantzig' until the factorization\
3324
+ becomes denser. This is still a work in progress.\
3325
+ The PE variants add the Positive Edge criterion.\
3326
+ This selects incoming variables to try to avoid degenerate moves. \
3327
+ See also Towhidi, M., Desrosiers, J., Soumis, F., The positive edge criterion within COIN-OR's CLP;\
3328
+ Omer, J., Towhidi, M., Soumis, F., The positive edge pricing rule for the dual simplex.");
3329
+
3330
+ parameters.push_back(p);
3331
+ }
3332
+ {
3333
+ CbcOrClpParam p("primalS!implex", "Do primal simplex algorithm",
3334
+ CLP_PARAM_ACTION_PRIMALSIMPLEX);
3335
+
3336
+ p.setLonghelp(
3337
+ "This command solves the continuous relaxation of the current model using the primal algorithm.\
3338
+ The default is to use exact devex.\
3339
+ The time and iterations may be affected by settings such as presolve, scaling, crash\
3340
+ and also by column selection method, infeasibility weight and dual and primal tolerances.");
3341
+ parameters.push_back(p);
3342
+ }
3343
+ #endif
3344
+ {
3345
+ CbcOrClpParam p("primalT!olerance", "For a feasible solution \
3346
+ no primal infeasibility, i.e., constraint violation, may exceed this value",
3347
+ 1.0e-20, COIN_DBL_MAX, CLP_PARAM_DBL_PRIMALTOLERANCE);
3348
+ p.setLonghelp(
3349
+ "Normally the default tolerance is fine, but one may want to increase it a\
3350
+ bit if the primal simplex algorithm seems to be having a hard time.");
3351
+ parameters.push_back(p);
3352
+ }
3353
+ #ifdef COIN_HAS_CLP
3354
+ {
3355
+ CbcOrClpParam p("primalW!eight", "Initially algorithm acts as if it \
3356
+ costs this much to be infeasible",
3357
+ 1.0e-20, COIN_DBL_MAX, CLP_PARAM_DBL_PRIMALWEIGHT);
3358
+ p.setLonghelp(
3359
+ "The primal algorithm in Clp is a single phase algorithm as opposed to a two phase\
3360
+ algorithm where you first get feasible then optimal. So Clp is minimizing this weight times\
3361
+ the sum of primal infeasibilities plus the true objective function (in minimization sense).\
3362
+ Too high a value may mean more iterations, while too low a value means\
3363
+ the algorithm may iterate into the wrong directory for long and then has to increase the weight in order to get feasible."); // OSL had a heuristic to adjust bounds, maybe we need that here.
3364
+ parameters.push_back(p);
3365
+ }
3366
+ {
3367
+ CbcOrClpParam p("psi", "Two-dimension pricing factor for Positive Edge criterion",
3368
+ -1.1, 1.1, CLP_PARAM_DBL_PSI);
3369
+
3370
+ p.setDoubleValue(-0.5);
3371
+ p.setLonghelp(
3372
+ "The Positive Edge criterion has been added to \
3373
+ select incoming variables to try and avoid degenerate moves. \
3374
+ Variables not in the promising set have their infeasibility weight multiplied by psi, \
3375
+ so 0.01 would mean that if there were any promising variables, then they would always be chosen, \
3376
+ while 1.0 effectively switches the algorithm off. \
3377
+ There are two ways of switching this feature on. One way is to set psi to a positive value and then \
3378
+ the Positive Edge criterion will be used for both primal and dual simplex. The other way is to select PEsteepest \
3379
+ in dualpivot choice (for example), then the absolute value of psi is used. \
3380
+ Code donated by Jeremy Omer. See \
3381
+ Towhidi, M., Desrosiers, J., Soumis, F., The positive edge criterion within COIN-OR's CLP; \
3382
+ Omer, J., Towhidi, M., Soumis, F., The positive edge pricing rule for the dual simplex."); // Until this settles down it is only implemented in CLP.
3383
+ parameters.push_back(p);
3384
+ }
3385
+ #endif
3386
+ {
3387
+ CbcOrClpParam p("printi!ngOptions", "Print options",
3388
+ "normal", CLP_PARAM_STR_INTPRINT, 3);
3389
+ p.append("integer");
3390
+ p.append("special");
3391
+ p.append("rows");
3392
+ p.append("all");
3393
+ p.append("csv");
3394
+ p.append("bound!ranging");
3395
+ p.append("rhs!ranging");
3396
+ p.append("objective!ranging");
3397
+ p.append("stats");
3398
+ p.append("boundsint");
3399
+ p.append("boundsall");
3400
+ p.append("fixint");
3401
+ p.append("fixall");
3402
+ p.setLonghelp(
3403
+ "This changes the amount and format of printing a solution:\nnormal - nonzero column variables \n\
3404
+ integer - nonzero integer column variables\n\
3405
+ special - in format suitable for OsiRowCutDebugger\n\
3406
+ rows - nonzero column variables and row activities\n\
3407
+ all - all column variables and row activities.\n\
3408
+ \nFor non-integer problems 'integer' and 'special' act like 'normal'. \
3409
+ Also see printMask for controlling output.");
3410
+ parameters.push_back(p);
3411
+ }
3412
+ {
3413
+ CbcOrClpParam p("printM!ask", "Control printing of solution on a mask",
3414
+ CLP_PARAM_ACTION_PRINTMASK, 3);
3415
+
3416
+ p.setLonghelp(
3417
+ "If set then only those names which match mask are printed in a solution. \
3418
+ '?' matches any character and '*' matches any set of characters. \
3419
+ The default is '' i.e. unset so all variables are printed. \
3420
+ This is only active if model has names.");
3421
+ parameters.push_back(p);
3422
+ }
3423
+
3424
+ #ifdef COIN_HAS_CBC
3425
+ {
3426
+ CbcOrClpParam p("prio!rityIn", "Import priorities etc from file",
3427
+ CBC_PARAM_ACTION_PRIORITYIN, 3);
3428
+ p.setLonghelp(
3429
+ "This will read a file with priorities from the given file name. It will use the default\
3430
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
3431
+ is initialized to '', i.e. it must be set. This can not read from compressed files. \
3432
+ File is in csv format with allowed headings - name, number, priority, direction, up, down, solution. Exactly one of\
3433
+ name and number must be given.");
3434
+ parameters.push_back(p);
3435
+ }
3436
+
3437
+ {
3438
+ CbcOrClpParam p("probing!Cuts", "Whether to use Probing cuts",
3439
+ "off", CBC_PARAM_STR_PROBINGCUTS);
3440
+ p.append("on");
3441
+ p.append("root");
3442
+ p.append("ifmove");
3443
+ p.append("forceOn");
3444
+ p.append("onglobal");
3445
+ p.append("forceonglobal");
3446
+ p.append("forceOnBut");
3447
+ p.append("forceOnStrong");
3448
+ p.append("forceOnButStrong");
3449
+ p.append("strongRoot");
3450
+ p.setLonghelp(CUTS_LONGHELP
3451
+ " Value 'forceOnBut' turns on probing and forces CBC to do probing at every node, but does only probing, not strengthening etc. \
3452
+ Value 'strong' forces CBC to strongly do probing at every node, that is, also when CBC would usually turn it off because it hasn't found something. \
3453
+ Value 'forceonbutstrong' is like 'forceonstrong', but does only probing (column fixing) and turns off row strengthening, so the matrix will not change inside the branch and bound. \
3454
+ Reference: https://github.com/coin-or/Cgl/wiki/CglProbing");
3455
+ parameters.push_back(p);
3456
+ }
3457
+ {
3458
+ CbcOrClpParam p("proximity!Search", "Whether to do proximity search heuristic",
3459
+ "off", CBC_PARAM_STR_PROXIMITY);
3460
+
3461
+ p.append("on");
3462
+ p.append("both");
3463
+ p.append("before");
3464
+ p.append("10");
3465
+ p.append("100");
3466
+ p.append("300");
3467
+ // but allow numbers after this (returning 1)
3468
+ p.setFakeKeyWord(1);
3469
+ p.setLonghelp(
3470
+ "This heuristic looks for a solution close to the incumbent solution (Fischetti and Monaci, 2012). \
3471
+ The idea is to define a sub-MIP without additional constraints but with a modified objective function intended to attract the search \
3472
+ in the proximity of the incumbent. \
3473
+ The approach works well for 0-1 MIPs whose solution landscape is not too irregular (meaning the there is reasonable probability of \
3474
+ finding an improved solution by flipping a small number of binary variables), in particular when it is applied to the first heuristic solutions \
3475
+ found at the root node. "
3476
+ HEURISTICS_LONGHELP); // Can also set different maxNode settings by plusnnnn (and are 'on'(on==30)).
3477
+ parameters.push_back(p);
3478
+ }
3479
+ {
3480
+ CbcOrClpParam p("pumpC!utoff", "Fake cutoff for use in feasibility pump",
3481
+ -COIN_DBL_MAX, COIN_DBL_MAX, CBC_PARAM_DBL_FAKECUTOFF);
3482
+ p.setDoubleValue(0.0);
3483
+ p.setLonghelp(
3484
+ "A value of 0.0 means off. Otherwise, add a constraint forcing objective below this value\
3485
+ in feasibility pump");
3486
+ parameters.push_back(p);
3487
+ }
3488
+ {
3489
+ CbcOrClpParam p("pumpI!ncrement", "Fake increment for use in feasibility pump",
3490
+ -COIN_DBL_MAX, COIN_DBL_MAX, CBC_PARAM_DBL_FAKEINCREMENT, 1);
3491
+ p.setDoubleValue(0.0);
3492
+ p.setLonghelp(
3493
+ "A value of 0.0 means off. Otherwise use as absolute increment to cutoff \
3494
+ when solution found in feasibility pump");
3495
+ parameters.push_back(p);
3496
+ }
3497
+ {
3498
+ CbcOrClpParam p("pumpT!une", "Dubious ideas for feasibility pump",
3499
+ 0, 100000000, CBC_PARAM_INT_FPUMPTUNE);
3500
+ p.setIntValue(1003);
3501
+ p.setLonghelp(
3502
+ "This fine tunes Feasibility Pump \n\
3503
+ \t>=10000000 use as objective weight switch\n\
3504
+ \t>=1000000 use as accumulate switch\n\
3505
+ \t>=1000 use index+1 as number of large loops\n\
3506
+ \t==100 use objvalue +0.05*fabs(objvalue) as cutoff OR fakeCutoff if set\n\
3507
+ \t%100 == 10,20 affects how each solve is done\n\
3508
+ \t1 == fix ints at bounds, 2 fix all integral ints, 3 and continuous at bounds. \
3509
+ If accumulate is on then after a major pass, variables which have not moved \
3510
+ are fixed and a small branch and bound is tried.");
3511
+ p.setIntValue(0);
3512
+ parameters.push_back(p);
3513
+ }
3514
+ #endif
3515
+ {
3516
+ CbcOrClpParam p("quit", "Stops clp execution",
3517
+ CLP_PARAM_ACTION_EXIT);
3518
+ p.setLonghelp(
3519
+ "This stops the execution of Clp, end, exit, quit and stop are synonyms");
3520
+
3521
+ parameters.push_back(p);
3522
+ }
3523
+ #ifdef COIN_HAS_CBC
3524
+ {
3525
+ CbcOrClpParam p("randomC!bcSeed", "Random seed for Cbc",
3526
+ -1, COIN_INT_MAX, CBC_PARAM_INT_RANDOMSEED);
3527
+
3528
+ p.setLonghelp(
3529
+ "Allows initialization of the random seed for pseudo-random numbers used in heuristics such as the Feasibility Pump to decide whether to round up or down. "
3530
+ "The special value of 0 lets Cbc use the time of the day for the initial seed.");
3531
+ p.setIntValue(-1);
3532
+ parameters.push_back(p);
3533
+ }
3534
+ {
3535
+ CbcOrClpParam p("randomi!zedRounding", "Whether to try randomized rounding heuristic",
3536
+ "off", CBC_PARAM_STR_RANDROUND);
3537
+ p.append("on");
3538
+ p.append("both");
3539
+ p.append("before");
3540
+ p.setLonghelp(HEURISTICS_LONGHELP);
3541
+ parameters.push_back(p);
3542
+ }
3543
+ #endif
3544
+ #ifdef COIN_HAS_CLP
3545
+ {
3546
+ CbcOrClpParam p("randomS!eed", "Random seed for Clp",
3547
+ 0, COIN_INT_MAX, CLP_PARAM_INT_RANDOMSEED);
3548
+
3549
+ p.setLonghelp(
3550
+ "Initialization of the random seed for pseudo-random numbers used to break ties in degenerate problems. "
3551
+ "This may yield a different continuous optimum and, in the context of Cbc, different cuts and heuristic solutions. "
3552
+ "The special value of 0 lets CLP use the time of the day for the initial seed.");
3553
+ p.setIntValue(1234567);
3554
+ parameters.push_back(p);
3555
+ }
3556
+ #endif
3557
+ #ifdef COIN_HAS_CBC
3558
+ {
3559
+ CbcOrClpParam p("ratio!Gap", "Stop when gap between best possible and \
3560
+ best known is less than this fraction of larger of two",
3561
+ 0.0, COIN_DBL_MAX, CBC_PARAM_DBL_GAPRATIO);
3562
+ p.setDoubleValue(0.0);
3563
+ p.setLonghelp(
3564
+ "If the gap between the best known solution and the best possible solution is less than this fraction \
3565
+ of the objective value at the root node then the search will terminate. See 'allowableGap' for a \
3566
+ way of using absolute value rather than fraction.");
3567
+ parameters.push_back(p);
3568
+ }
3569
+ #endif
3570
+ {
3571
+ CbcOrClpParam p("restoreS!olution", "reads solution from file",
3572
+ CLP_PARAM_ACTION_RESTORESOL);
3573
+
3574
+ p.setLonghelp(
3575
+ "This will read a binary solution file from the given file name. It will use the default\
3576
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
3577
+ is initialized to 'solution.file'. This reads in a file from saveSolution");
3578
+ parameters.push_back(p);
3579
+ }
3580
+ #ifdef COIN_HAS_CBC
3581
+ {
3582
+ CbcOrClpParam p("readSt!ored", "Import stored cuts from file",
3583
+ CLP_PARAM_ACTION_STOREDFILE, 3, 0);
3584
+ parameters.push_back(p);
3585
+ }
3586
+ #endif
3587
+ #ifdef COIN_HAS_CLP
3588
+ {
3589
+ CbcOrClpParam p("reallyO!bjectiveScale", "Scale factor to apply to objective in place",
3590
+ -COIN_DBL_MAX, COIN_DBL_MAX, CLP_PARAM_DBL_OBJSCALE2, 0);
3591
+ p.setLonghelp("You can set this to -1.0 to test maximization or other to stress code");
3592
+ p.setDoubleValue(1.0);
3593
+ parameters.push_back(p);
3594
+ }
3595
+ {
3596
+ CbcOrClpParam p("reallyS!cale", "Scales model in place",
3597
+ CLP_PARAM_ACTION_REALLY_SCALE, 7, 0);
3598
+ parameters.push_back(p);
3599
+ }
3600
+ #endif
3601
+ #ifdef COIN_HAS_CBC
3602
+ {
3603
+ CbcOrClpParam p("reduce!AndSplitCuts", "Whether to use Reduce-and-Split cuts",
3604
+ "off", CBC_PARAM_STR_REDSPLITCUTS);
3605
+
3606
+ p.append("on");
3607
+ p.append("root");
3608
+ p.append("ifmove");
3609
+ p.append("forceOn");
3610
+ p.setLonghelp(
3611
+ "These cuts may be expensive to generate. "
3612
+ CUTS_LONGHELP
3613
+ " Reference: https://github.com/coin-or/Cgl/wiki/CglRedSplit");
3614
+ parameters.push_back(p);
3615
+ }
3616
+ {
3617
+ CbcOrClpParam p("reduce2!AndSplitCuts", "Whether to use Reduce-and-Split cuts - style 2",
3618
+ "off", CBC_PARAM_STR_REDSPLIT2CUTS);
3619
+ p.append("on");
3620
+ p.append("root");
3621
+ p.append("longOn");
3622
+ p.append("longRoot");
3623
+ p.setLonghelp("This switches on reduce and split cuts (either at root or in entire tree). \
3624
+ This version is by Giacomo Nannicini based on Francois Margot's version. \
3625
+ Standard setting only uses rows in tableau <= 256, long uses all. \
3626
+ These cuts may be expensive to generate. \
3627
+ See option cuts for more information on the possible values.");
3628
+ parameters.push_back(p);
3629
+ }
3630
+ {
3631
+ CbcOrClpParam p("residual!CapacityCuts", "Whether to use Residual Capacity cuts",
3632
+ "off", CBC_PARAM_STR_RESIDCUTS);
3633
+ p.append("on");
3634
+ p.append("root");
3635
+ p.append("ifmove");
3636
+ p.append("forceOn");
3637
+ p.setLonghelp(CUTS_LONGHELP
3638
+ " Reference: https://github.com/coin-or/Cgl/wiki/CglResidualCapacity");
3639
+
3640
+ parameters.push_back(p);
3641
+ }
3642
+ #endif
3643
+ #ifdef COIN_HAS_CLP
3644
+ {
3645
+ CbcOrClpParam p("restore!Model", "Restore model from binary file",
3646
+ CLP_PARAM_ACTION_RESTORE, 7, 1);
3647
+ p.setLonghelp(
3648
+ "This reads data save by saveModel from the given file. It will use the default\
3649
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
3650
+ is initialized to 'default.prob'.");
3651
+
3652
+ parameters.push_back(p);
3653
+ }
3654
+ {
3655
+ CbcOrClpParam p("reverse", "Reverses sign of objective",
3656
+ CLP_PARAM_ACTION_REVERSE, 7, 0);
3657
+ p.setLonghelp(
3658
+ "Useful for testing if maximization works correctly");
3659
+ parameters.push_back(p);
3660
+ }
3661
+ {
3662
+ CbcOrClpParam p("rhs!Scale", "Scale factor to apply to rhs and bounds",
3663
+ -COIN_DBL_MAX, COIN_DBL_MAX, CLP_PARAM_DBL_RHSSCALE, 0);
3664
+ p.setLonghelp(
3665
+ "If the rhs or bounds have some very large meaningful values, you may wish to scale them\
3666
+ internally by this amount. It can also be set by autoscale. This should not be needed.");
3667
+ p.setDoubleValue(1.0);
3668
+ parameters.push_back(p);
3669
+ }
3670
+ #endif
3671
+ #ifdef COIN_HAS_CBC
3672
+ {
3673
+ CbcOrClpParam p("Rens", "Whether to try Relaxation Enforced Neighborhood Search",
3674
+ "off", CBC_PARAM_STR_RENS);
3675
+ p.append("on");
3676
+ p.append("both");
3677
+ p.append("before");
3678
+ p.append("200");
3679
+ p.append("1000");
3680
+ p.append("10000");
3681
+ p.append("dj");
3682
+ p.append("djbefore");
3683
+ p.append("usesolution");
3684
+ p.setLonghelp(HEURISTICS_LONGHELP
3685
+ " Value 'on' just does 50 nodes. 200, 1000, and 10000 does that many nodes.");
3686
+ parameters.push_back(p);
3687
+ }
3688
+ {
3689
+ CbcOrClpParam p("Rins", "Whether to try Relaxed Induced Neighborhood Search",
3690
+ "off", CBC_PARAM_STR_RINS);
3691
+ p.append("on");
3692
+ p.append("both");
3693
+ p.append("before");
3694
+ p.append("often");
3695
+ p.setLonghelp(HEURISTICS_LONGHELP);
3696
+ parameters.push_back(p);
3697
+ }
3698
+ {
3699
+ CbcOrClpParam p("round!ingHeuristic", "Whether to use simple (but effective) Rounding heuristic",
3700
+ "off", CBC_PARAM_STR_ROUNDING);
3701
+ p.append("on");
3702
+ p.append("both");
3703
+ p.append("before");
3704
+ p.setLonghelp(HEURISTICS_LONGHELP);
3705
+ parameters.push_back(p);
3706
+ }
3707
+ #endif
3708
+ {
3709
+ CbcOrClpParam p("saveM!odel", "Save model to binary file",
3710
+ CLP_PARAM_ACTION_SAVE, 7, 1);
3711
+ p.setLonghelp(
3712
+ "This will save the problem to the given file name for future use\
3713
+ by restoreModel. It will use the default\
3714
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
3715
+ is initialized to 'default.prob'.");
3716
+ parameters.push_back(p);
3717
+ }
3718
+ {
3719
+ CbcOrClpParam p("saveS!olution", "saves solution to file",
3720
+ CLP_PARAM_ACTION_SAVESOL);
3721
+
3722
+ p.setLonghelp(
3723
+ "This will write a binary solution file to the given file name. It will use the default\
3724
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
3725
+ is initialized to 'solution.file'. To read the file use fread(int) twice to pick up number of rows \
3726
+ and columns, then fread(double) to pick up objective value, then pick up row activities, row duals, column \
3727
+ activities and reduced costs - see bottom of CbcOrClpParam.cpp for code that reads or writes file. \
3728
+ If name contains '_fix_read_' then does not write but reads and will fix all variables");
3729
+ parameters.push_back(p);
3730
+ }
3731
+ {
3732
+ CbcOrClpParam p("scal!ing", "Whether to scale problem",
3733
+ "off", CLP_PARAM_STR_SCALING);
3734
+ p.append("equi!librium");
3735
+ p.append("geo!metric");
3736
+ p.append("auto!matic");
3737
+ p.append("dynamic");
3738
+ p.append("rows!only");
3739
+ p.setLonghelp(
3740
+ "Scaling can help in solving problems which might otherwise fail because of lack of\
3741
+ accuracy. It can also reduce the number of iterations. It is not applied if the range\
3742
+ of elements is small. When the solution is evaluated in the unscaled problem, it is possible that small primal and/or\
3743
+ dual infeasibilities occur. "
3744
+ "Option 'equilibrium' uses the largest element for scaling. "
3745
+ "Option 'geometric' uses the squareroot of the product of largest and smallest element. "
3746
+ "Option 'auto' let CLP choose a method that gives the best ratio of the largest element to the smallest one.");
3747
+ p.setCurrentOption(3); // say auto
3748
+ parameters.push_back(p);
3749
+ }
3750
+ #ifndef COIN_HAS_CBC
3751
+ {
3752
+ CbcOrClpParam p("sec!onds", "Maximum seconds",
3753
+ -1.0, COIN_DBL_MAX, CLP_PARAM_DBL_TIMELIMIT);
3754
+
3755
+ p.setLonghelp("After this many seconds clp will act as if maximum iterations had been reached \
3756
+ (if value >=0).");
3757
+ parameters.push_back(p);
3758
+ }
3759
+ #else
3760
+ {
3761
+ CbcOrClpParam p("sec!onds", "maximum seconds",
3762
+ -1.0, COIN_DBL_MAX, CBC_PARAM_DBL_TIMELIMIT_BAB);
3763
+ p.setLonghelp(
3764
+ "After this many seconds coin solver will act as if maximum nodes had been reached.");
3765
+ parameters.push_back(p);
3766
+ }
3767
+ #endif
3768
+ {
3769
+ CbcOrClpParam p("sleep", "for debug",
3770
+ CLP_PARAM_ACTION_DUMMY, 7, 0);
3771
+
3772
+ p.setLonghelp(
3773
+ "If passed to solver fom ampl, then ampl will wait so that you can copy .nl file for debug.");
3774
+ parameters.push_back(p);
3775
+ }
3776
+ #ifdef COIN_HAS_CBC
3777
+ {
3778
+ CbcOrClpParam p("slow!cutpasses", "Maximum number of rounds for slower cut generators",
3779
+ -1, COIN_INT_MAX, CBC_PARAM_INT_MAX_SLOW_CUTS);
3780
+ p.setLonghelp(
3781
+ "Some cut generators are fairly slow - this limits the number of times they are tried.\
3782
+ The cut generators identified as 'may be slow' at present are Lift and project cuts and both versions of Reduce and Split cuts.");
3783
+ p.setIntValue(10);
3784
+ parameters.push_back(p);
3785
+ }
3786
+ #endif
3787
+ #ifdef COIN_HAS_CLP
3788
+ {
3789
+ CbcOrClpParam p("slp!Value", "Number of slp passes before primal",
3790
+ -50000, 50000, CLP_PARAM_INT_SLPVALUE, 1);
3791
+ p.setLonghelp(
3792
+ "If you are solving a quadratic problem using primal then it may be helpful to do some \
3793
+ sequential Lps to get a good approximate solution.");
3794
+ parameters.push_back(p);
3795
+ }
3796
+ #if CLP_MULTIPLE_FACTORIZATIONS > 0
3797
+ {
3798
+ CbcOrClpParam p("small!Factorization", "Threshold for using small factorization",
3799
+ -1, 10000, CBC_PARAM_INT_SMALLFACT, 1);
3800
+ p.setLonghelp(
3801
+ "If processed problem <= this use small factorization");
3802
+ p.setIntValue(-1);
3803
+ parameters.push_back(p);
3804
+ }
3805
+ #endif
3806
+ #endif
3807
+ {
3808
+ CbcOrClpParam p("solu!tion", "Prints solution to file",
3809
+ CLP_PARAM_ACTION_SOLUTION);
3810
+ p.setLonghelp(
3811
+ "This will write a primitive solution file to the given file name. It will use the default\
3812
+ directory given by 'directory'. A name of '$' will use the previous value for the name. This\
3813
+ is initialized to 'stdout'. The amount of output can be varied using printi!ngOptions or printMask.");
3814
+ parameters.push_back(p);
3815
+ }
3816
+ #ifdef COIN_HAS_CLP
3817
+ #ifdef COIN_HAS_CBC
3818
+ {
3819
+ CbcOrClpParam p("solv!e", "Solve problem",
3820
+ CBC_PARAM_ACTION_BAB);
3821
+ p.setLonghelp(
3822
+ "If there are no integer variables then this just solves LP. If there are integer variables \
3823
+ this does branch and cut." );
3824
+ parameters.push_back( p );
3825
+ }
3826
+ {
3827
+ CbcOrClpParam p("sosO!ptions", "Whether to use SOS from AMPL", "off", CBC_PARAM_STR_SOS);
3828
+ p.append("on");
3829
+ p.setCurrentOption("on");
3830
+ p.setLonghelp(
3831
+ "Normally if AMPL says there are SOS variables they should be used, but sometime sthey should\
3832
+ be turned off - this does so." );
3833
+ parameters.push_back( p );
3834
+ }
3835
+ {
3836
+ CbcOrClpParam p("slog!Level", "Level of detail in (LP) Solver output", -1, 63, CLP_PARAM_INT_SOLVERLOGLEVEL);
3837
+ p.setLonghelp(
3838
+ "If 0 then there should be no output in normal circumstances. 1 is probably the best\
3839
+ value for most uses, while 2 and 3 give more information. This parameter is only used inside MIP - for Clp use 'log'");
3840
+ parameters.push_back(p);
3841
+ }
3842
+ {
3843
+ // Due to James Howey
3844
+ CbcOrClpParam p("sosP!rioritize", "How to deal with SOS priorities",
3845
+ "off", CBC_PARAM_STR_SOSPRIORITIZE);
3846
+ p.append("high");
3847
+ p.append("low");
3848
+ p.append("orderhigh");
3849
+ p.append("orderlow");
3850
+ p.setLonghelp(
3851
+ "This sets priorities for SOS. Values 'high' and 'low' just set a priority \
3852
+ relative to the for integer variables. Value 'orderhigh' gives first highest priority to the first SOS and integer variables \
3853
+ a low priority. Value 'orderlow' gives integer variables a high priority then SOS in order.");
3854
+ parameters.push_back(p);
3855
+ }
3856
+ #else
3857
+ // allow solve as synonym for possible dual
3858
+ {
3859
+ CbcOrClpParam p("solv!e", "Solve problem using dual simplex (probably)",
3860
+ CLP_PARAM_ACTION_EITHERSIMPLEX);
3861
+ p.setLonghelp(
3862
+ "Just so can use solve for clp as well as in cbc");
3863
+ parameters.push_back(p);
3864
+ }
3865
+ #endif
3866
+ #endif
3867
+ #ifdef COIN_HAS_CLP
3868
+ {
3869
+ CbcOrClpParam p("spars!eFactor", "Whether factorization treated as sparse",
3870
+ "on", CLP_PARAM_STR_SPARSEFACTOR, 7, 0);
3871
+ p.append("off");
3872
+ parameters.push_back(p);
3873
+ }
3874
+ {
3875
+ CbcOrClpParam p("special!Options", "Dubious options for Simplex - see ClpSimplex.hpp",
3876
+ 0, COIN_INT_MAX, CLP_PARAM_INT_SPECIALOPTIONS, 0);
3877
+ parameters.push_back(p);
3878
+ }
3879
+ {
3880
+ CbcOrClpParam p("sprint!Crash", "Whether to try sprint crash",
3881
+ -1, COIN_INT_MAX, CLP_PARAM_INT_SPRINT);
3882
+ p.setLonghelp(
3883
+ "For long and thin problems this method may solve a series of small problems\
3884
+ created by taking a subset of the columns. The idea as 'Sprint' was introduced by J. Forrest after\
3885
+ an LP code of that name of the 60's which tried the same tactic (not totally successfully).\
3886
+ CPLEX calls it 'sifting'. -1 lets CLP automatically choose the number of passes, 0 is off, n is number of passes");
3887
+ parameters.push_back(p);
3888
+ }
3889
+ {
3890
+ CbcOrClpParam p("stat!istics", "Print some statistics",
3891
+ CLP_PARAM_ACTION_STATISTICS);
3892
+ p.setLonghelp(
3893
+ "This command prints some statistics for the current model.\
3894
+ If log level >1 then more is printed.\
3895
+ These are for presolved model if presolve on (and unscaled).");
3896
+ parameters.push_back(p);
3897
+ }
3898
+ #endif
3899
+ {
3900
+ CbcOrClpParam p("stop", "Stops clp execution",
3901
+ CLP_PARAM_ACTION_EXIT);
3902
+ p.setLonghelp(
3903
+ "This stops the execution of Clp, end, exit, quit and stop are synonyms");
3904
+ parameters.push_back(p);
3905
+ }
3906
+ #ifdef COIN_HAS_CBC
3907
+ {
3908
+ CbcOrClpParam p("strat!egy", "Switches on groups of features",
3909
+ 0, 2, CBC_PARAM_INT_STRATEGY);
3910
+ p.setLonghelp(
3911
+ "This turns on newer features. \
3912
+ Use 0 for easy problems, 1 is default, 2 is aggressive. \
3913
+ 1 uses Gomory cuts with a tolerance of 0.01 at the root node, \
3914
+ does a possible restart after 100 nodes if many variables could be fixed, \
3915
+ activates a diving and RINS heuristic, and makes the feasibility pump \
3916
+ more aggressive."); // This does not apply to unit tests (where 'experiment' may have similar effects
3917
+ p.setIntValue(1);
3918
+ parameters.push_back(p);
3919
+ }
3920
+ #ifdef CBC_KEEP_DEPRECATED
3921
+ {
3922
+ CbcOrClpParam p("strengthen", "Create strengthened problem",
3923
+ CBC_PARAM_ACTION_STRENGTHEN, 3);
3924
+ p.setLonghelp(
3925
+ "This creates a new problem by applying the root node cuts. All tight constraints \
3926
+ will be in resulting problem");
3927
+ parameters.push_back(p);
3928
+ }
3929
+ #endif
3930
+ {
3931
+ CbcOrClpParam p("strong!Branching", "Number of variables to look at in strong branching",
3932
+ 0, COIN_INT_MAX, CBC_PARAM_INT_STRONGBRANCHING);
3933
+ p.setIntValue(20);
3934
+ p.setLonghelp(
3935
+ "In order to decide which variable to branch on, the code will choose up to this number \
3936
+ of unsatisfied variables to try minimal up and down branches on. Then the most effective one is chosen. \
3937
+ If a variable is branched on many times then the previous average up and down costs may be used - \
3938
+ see also option trustPseudoCosts.");
3939
+ parameters.push_back(p);
3940
+ }
3941
+ #endif
3942
+ #ifdef COIN_HAS_CLP
3943
+ {
3944
+ CbcOrClpParam p("subs!titution", "How long a column to substitute for in presolve",
3945
+ 0, 10000, CLP_PARAM_INT_SUBSTITUTION, 0);
3946
+ p.setLonghelp(
3947
+ "Normally Presolve gets rid of 'free' variables when there are no more than 3 \
3948
+ coefficients in a row. If you increase this, the number of rows may decrease but the number of \
3949
+ coefficients may increase.");
3950
+ parameters.push_back(p);
3951
+ }
3952
+ #endif
3953
+ #ifdef COIN_HAS_CBC
3954
+ {
3955
+ CbcOrClpParam p("testO!si", "Test OsiObject stuff",
3956
+ -1, COIN_INT_MAX, CBC_PARAM_INT_TESTOSI, 0);
3957
+ parameters.push_back(p);
3958
+ }
3959
+ #endif
3960
+ #ifdef CBC_THREAD
3961
+ {
3962
+ CbcOrClpParam p("thread!s", "Number of threads to try and use",
3963
+ -100, 100000, CBC_PARAM_INT_THREADS, 1);
3964
+ p.setIntValue(0);
3965
+ p.setLonghelp(
3966
+ "To use multiple threads, set threads to number wanted. It may be better \
3967
+ to use one or two more than number of cpus available. If 100+n then n threads and \
3968
+ search is repeatable (maybe be somewhat slower), \
3969
+ if 200+n use threads for root cuts, 400+n threads used in sub-trees.");
3970
+ parameters.push_back(p);
3971
+ }
3972
+ #endif
3973
+ #ifdef COIN_HAS_CBC
3974
+ {
3975
+ CbcOrClpParam p("tighten!Factor", "Tighten bounds using this times largest \
3976
+ activity at continuous solution",
3977
+ 1.0e-3, COIN_DBL_MAX, CBC_PARAM_DBL_TIGHTENFACTOR, 0);
3978
+ p.setLonghelp(
3979
+ "This sleazy trick can help on some problems.");
3980
+ parameters.push_back(p);
3981
+ }
3982
+
3983
+ #endif
3984
+ #ifdef COIN_HAS_CLP
3985
+ {
3986
+ CbcOrClpParam p("tightLP", "Poor person's preSolve for now",
3987
+ CLP_PARAM_ACTION_TIGHTEN, 7, 0);
3988
+ parameters.push_back(p);
3989
+ }
3990
+ #endif
3991
+ {
3992
+ CbcOrClpParam p("timeM!ode", "Whether to use CPU or elapsed time",
3993
+ "cpu", CLP_PARAM_STR_TIME_MODE);
3994
+ p.append("elapsed");
3995
+ p.setLonghelp(
3996
+ "cpu uses CPU time for stopping, while elapsed uses elapsed time. \
3997
+ (On Windows, elapsed time is always used).");
3998
+ parameters.push_back(p);
3999
+ }
4000
+ #ifdef COIN_HAS_CBC
4001
+ {
4002
+ CbcOrClpParam p("trust!PseudoCosts", "Number of branches before we trust pseudocosts",
4003
+ -3, COIN_INT_MAX, CBC_PARAM_INT_NUMBERBEFORE);
4004
+ p.setLonghelp(
4005
+ "Using strong branching computes pseudo-costs. This parameter determines after how many branches for a variable we just \
4006
+ trust the pseudo costs and do not do any more strong branching.");
4007
+ p.setIntValue(10);
4008
+ parameters.push_back(p);
4009
+ }
4010
+ #endif
4011
+ #ifdef COIN_HAS_CBC
4012
+ {
4013
+ CbcOrClpParam p("tune!PreProcess", "Dubious tuning parameters for preprocessing",
4014
+ 0, COIN_INT_MAX, CLP_PARAM_INT_PROCESSTUNE, 1);
4015
+ p.setLonghelp(
4016
+ "Format aabbcccc - \n If aa then this is number of major passes (i.e. with presolve) \n \
4017
+ If bb and bb>0 then this is number of minor passes (if unset or 0 then 10) \n \
4018
+ cccc is bit set \n 0 - 1 Heavy probing \n 1 - 2 Make variables integer if possible (if obj value)\n \
4019
+ 2 - 4 As above but even if zero objective value\n \
4020
+ 7 - 128 Try and create cliques\n 8 - 256 If all +1 try hard for dominated rows\n \
4021
+ 10 - 1024 Use a larger feasibility tolerance in presolve\n \
4022
+ 11 - 2048 Try probing before creating cliques\n \
4023
+ 12 - 4096 Switch off duplicate column checking for integers \n \n \
4024
+ Now aa 99 has special meaning i.e. just one simple presolve.");
4025
+ parameters.push_back(p);
4026
+ }
4027
+ {
4028
+ CbcOrClpParam p("two!MirCuts", "Whether to use Two phase Mixed Integer Rounding cuts",
4029
+ "off", CBC_PARAM_STR_TWOMIRCUTS);
4030
+ p.append("on");
4031
+ p.append("root");
4032
+ p.append("ifmove");
4033
+ p.append("forceOn");
4034
+ p.append("onglobal");
4035
+ p.append("forceandglobal");
4036
+ p.append("forceLongOn");
4037
+ p.setLonghelp(CUTS_LONGHELP
4038
+ " Reference: https://github.com/coin-or/Cgl/wiki/CglTwomir");
4039
+ parameters.push_back(p);
4040
+ }
4041
+ #endif
4042
+ {
4043
+ CbcOrClpParam p("unitTest", "Do unit test",
4044
+ CLP_PARAM_ACTION_UNITTEST, 3, 1);
4045
+ p.setLonghelp(
4046
+ "This exercises the unit test for clp");
4047
+ parameters.push_back(p);
4048
+ }
4049
+ {
4050
+ CbcOrClpParam p("userClp", "Hand coded Clp stuff",
4051
+ CLP_PARAM_ACTION_USERCLP, 0, 0);
4052
+ p.setLonghelp(
4053
+ "There are times e.g. when using AMPL interface when you may wish to do something unusual. \
4054
+ Look for USERCLP in main driver and modify sample code.");
4055
+ parameters.push_back(p);
4056
+ }
4057
+ #ifdef COIN_HAS_CBC
4058
+ {
4059
+ CbcOrClpParam p("userCbc", "Hand coded Cbc stuff",
4060
+ CBC_PARAM_ACTION_USERCBC, 0, 0);
4061
+ p.setLonghelp(
4062
+ "There are times e.g. when using AMPL interface when you may wish to do something unusual. \
4063
+ Look for USERCBC in main driver and modify sample code. \
4064
+ It is possible you can get same effect by using example driver4.cpp.");
4065
+ parameters.push_back(p);
4066
+ }
4067
+ #endif
4068
+ #ifdef COIN_AVX2
4069
+ {
4070
+ CbcOrClpParam p("vector!Mode", "Try and use vector instructions",
4071
+ 0, 11, CLP_PARAM_INT_VECTOR_MODE);
4072
+ p.setLonghelp(
4073
+ "At present only for Intel architectures - but could be extended. \
4074
+ Uses avx2 or avx512 instructions. Uses different storage for matrix - can be \
4075
+ of benefit without instruction set on some problems. \
4076
+ Being lazy I have used 10 to switch on a pool matrix (11 may come later)");
4077
+ p.setIntValue(0);
4078
+ parameters.push_back(p);
4079
+ }
4080
+ #endif
4081
+ #ifdef COIN_HAS_CBC
4082
+ {
4083
+ CbcOrClpParam p("Vnd!VariableNeighborhoodSearch", "Whether to try Variable Neighborhood Search",
4084
+ "off", CBC_PARAM_STR_VND);
4085
+ p.append("on");
4086
+ p.append("both");
4087
+ p.append("before");
4088
+ p.append("intree");
4089
+ p.setLonghelp(HEURISTICS_LONGHELP);
4090
+ parameters.push_back(p);
4091
+ }
4092
+ #endif
4093
+ {
4094
+ CbcOrClpParam p("vector", "Whether to use vector? Form of matrix in simplex",
4095
+ "off", CLP_PARAM_STR_VECTOR, 7, 0);
4096
+ p.append("on");
4097
+ p.setLonghelp(
4098
+ "If this is on ClpPackedMatrix uses extra column copy in odd format.");
4099
+ parameters.push_back(p);
4100
+ }
4101
+ {
4102
+ CbcOrClpParam p("verbose", "Switches on longer help on single ?",
4103
+ 0, 31, CLP_PARAM_INT_VERBOSE, 0);
4104
+ p.setLonghelp(
4105
+ "Set to 1 to get short help with ? list, 2 to get long help, 3 for both. (add 4 to just get ampl ones).");
4106
+ p.setIntValue(0);
4107
+ parameters.push_back(p);
4108
+ }
4109
+ #ifdef COIN_HAS_CBC
4110
+ {
4111
+ CbcOrClpParam p("vub!heuristic", "Type of VUB heuristic",
4112
+ -2, 20, CBC_PARAM_INT_VUBTRY, 0);
4113
+ p.setLonghelp(
4114
+ "This heuristic tries and fix some integer variables.");
4115
+ p.setIntValue(-1);
4116
+ parameters.push_back(p);
4117
+ }
4118
+ {
4119
+ CbcOrClpParam p("zero!HalfCuts", "Whether to use zero half cuts",
4120
+ "off", CBC_PARAM_STR_ZEROHALFCUTS);
4121
+ p.append("on");
4122
+ p.append("root");
4123
+ p.append("ifmove");
4124
+ p.append("forceOn");
4125
+ p.append("onglobal");
4126
+ p.setLonghelp(CUTS_LONGHELP
4127
+ " This implementation was written by Alberto Caprara.");
4128
+ parameters.push_back(p);
4129
+ }
4130
+ #endif
4131
+ {
4132
+ CbcOrClpParam p("zeroT!olerance", "Kill all coefficients \
4133
+ whose absolute value is less than this value",
4134
+ 1.0e-100, 1.0e-5, CLP_PARAM_DBL_ZEROTOLERANCE);
4135
+ p.setLonghelp(
4136
+ "This applies to reading mps files (and also lp files \
4137
+ if KILL_ZERO_READLP defined)");
4138
+ p.setDoubleValue(1.0e-20);
4139
+ parameters.push_back(p);
4140
+ }
4141
+ }
4142
+ // Given a parameter type - returns its number in list
4143
+ int whichParam(const CbcOrClpParameterType &name,
4144
+ const std::vector< CbcOrClpParam > &parameters)
4145
+ {
4146
+ for (int i = 0; i < (int)parameters.size(); i++) {
4147
+ if (parameters[i].type() == name)
4148
+ return i;
4149
+ }
4150
+ return std::numeric_limits< int >::max(); // should not arrive here
4151
+ }
4152
+ #ifdef COIN_HAS_CLP
4153
+ /* Restore a solution from file.
4154
+ mode 0 normal, 1 swap rows and columns and primal and dual
4155
+ if 2 set then also change signs
4156
+ */
4157
+ void restoreSolution(ClpSimplex *lpSolver, std::string fileName, int mode)
4158
+ {
4159
+ FILE *fp = fopen(fileName.c_str(), "rb");
4160
+ if (fp) {
4161
+ int numberRows = lpSolver->numberRows();
4162
+ int numberColumns = lpSolver->numberColumns();
4163
+ int numberRowsFile;
4164
+ int numberColumnsFile;
4165
+ double objectiveValue;
4166
+ size_t nRead;
4167
+ nRead = fread(&numberRowsFile, sizeof(int), 1, fp);
4168
+ if (nRead != 1)
4169
+ throw("Error in fread");
4170
+ nRead = fread(&numberColumnsFile, sizeof(int), 1, fp);
4171
+ if (nRead != 1)
4172
+ throw("Error in fread");
4173
+ nRead = fread(&objectiveValue, sizeof(double), 1, fp);
4174
+ if (nRead != 1)
4175
+ throw("Error in fread");
4176
+ double *dualRowSolution = lpSolver->dualRowSolution();
4177
+ double *primalRowSolution = lpSolver->primalRowSolution();
4178
+ double *dualColumnSolution = lpSolver->dualColumnSolution();
4179
+ double *primalColumnSolution = lpSolver->primalColumnSolution();
4180
+ if (mode) {
4181
+ // swap
4182
+ int k = numberRows;
4183
+ numberRows = numberColumns;
4184
+ numberColumns = k;
4185
+ double *temp;
4186
+ temp = dualRowSolution;
4187
+ dualRowSolution = primalColumnSolution;
4188
+ primalColumnSolution = temp;
4189
+ temp = dualColumnSolution;
4190
+ dualColumnSolution = primalRowSolution;
4191
+ primalRowSolution = temp;
4192
+ }
4193
+ if (numberRows > numberRowsFile || numberColumns > numberColumnsFile) {
4194
+ std::cout << "Mismatch on rows and/or columns - giving up" << std::endl;
4195
+ } else {
4196
+ lpSolver->setObjectiveValue(objectiveValue);
4197
+ if (numberRows == numberRowsFile && numberColumns == numberColumnsFile) {
4198
+ nRead = fread(primalRowSolution, sizeof(double), numberRows, fp);
4199
+ if (nRead != static_cast< size_t >(numberRows))
4200
+ throw("Error in fread");
4201
+ nRead = fread(dualRowSolution, sizeof(double), numberRows, fp);
4202
+ if (nRead != static_cast< size_t >(numberRows))
4203
+ throw("Error in fread");
4204
+ nRead = fread(primalColumnSolution, sizeof(double), numberColumns, fp);
4205
+ if (nRead != static_cast< size_t >(numberColumns))
4206
+ throw("Error in fread");
4207
+ nRead = fread(dualColumnSolution, sizeof(double), numberColumns, fp);
4208
+ if (nRead != static_cast< size_t >(numberColumns))
4209
+ throw("Error in fread");
4210
+ } else {
4211
+ std::cout << "Mismatch on rows and/or columns - truncating" << std::endl;
4212
+ double *temp = new double[CoinMax(numberRowsFile, numberColumnsFile)];
4213
+ nRead = fread(temp, sizeof(double), numberRowsFile, fp);
4214
+ if (nRead != static_cast< size_t >(numberRowsFile))
4215
+ throw("Error in fread");
4216
+ CoinMemcpyN(temp, numberRows, primalRowSolution);
4217
+ nRead = fread(temp, sizeof(double), numberRowsFile, fp);
4218
+ if (nRead != static_cast< size_t >(numberRowsFile))
4219
+ throw("Error in fread");
4220
+ CoinMemcpyN(temp, numberRows, dualRowSolution);
4221
+ nRead = fread(temp, sizeof(double), numberColumnsFile, fp);
4222
+ if (nRead != static_cast< size_t >(numberColumnsFile))
4223
+ throw("Error in fread");
4224
+ CoinMemcpyN(temp, numberColumns, primalColumnSolution);
4225
+ nRead = fread(temp, sizeof(double), numberColumnsFile, fp);
4226
+ if (nRead != static_cast< size_t >(numberColumnsFile))
4227
+ throw("Error in fread");
4228
+ CoinMemcpyN(temp, numberColumns, dualColumnSolution);
4229
+ delete[] temp;
4230
+ }
4231
+ if (mode == 3) {
4232
+ int i;
4233
+ for (i = 0; i < numberRows; i++) {
4234
+ primalRowSolution[i] = -primalRowSolution[i];
4235
+ dualRowSolution[i] = -dualRowSolution[i];
4236
+ }
4237
+ for (i = 0; i < numberColumns; i++) {
4238
+ primalColumnSolution[i] = -primalColumnSolution[i];
4239
+ dualColumnSolution[i] = -dualColumnSolution[i];
4240
+ }
4241
+ }
4242
+ }
4243
+ fclose(fp);
4244
+ } else {
4245
+ std::cout << "Unable to open file " << fileName << std::endl;
4246
+ }
4247
+ }
4248
+ // Dump a solution to file
4249
+ void saveSolution(const ClpSimplex *lpSolver, std::string fileName)
4250
+ {
4251
+ if (strstr(fileName.c_str(), "_fix_read_")) {
4252
+ FILE *fp = fopen(fileName.c_str(), "rb");
4253
+ if (fp) {
4254
+ ClpSimplex *solver = const_cast< ClpSimplex * >(lpSolver);
4255
+ restoreSolution(solver, fileName, 0);
4256
+ // fix all
4257
+ int logLevel = solver->logLevel();
4258
+ int iColumn;
4259
+ int numberColumns = solver->numberColumns();
4260
+ double *primalColumnSolution = solver->primalColumnSolution();
4261
+ double *columnLower = solver->columnLower();
4262
+ double *columnUpper = solver->columnUpper();
4263
+ for (iColumn = 0; iColumn < numberColumns; iColumn++) {
4264
+ double value = primalColumnSolution[iColumn];
4265
+ if (value > columnUpper[iColumn]) {
4266
+ if (value > columnUpper[iColumn] + 1.0e-6 && logLevel > 1)
4267
+ printf("%d value of %g - bounds %g %g\n",
4268
+ iColumn, value, columnLower[iColumn], columnUpper[iColumn]);
4269
+ value = columnUpper[iColumn];
4270
+ } else if (value < columnLower[iColumn]) {
4271
+ if (value < columnLower[iColumn] - 1.0e-6 && logLevel > 1)
4272
+ printf("%d value of %g - bounds %g %g\n",
4273
+ iColumn, value, columnLower[iColumn], columnUpper[iColumn]);
4274
+ value = columnLower[iColumn];
4275
+ }
4276
+ columnLower[iColumn] = value;
4277
+ columnUpper[iColumn] = value;
4278
+ }
4279
+ return;
4280
+ }
4281
+ }
4282
+ FILE *fp = fopen(fileName.c_str(), "wb");
4283
+ if (fp) {
4284
+ int numberRows = lpSolver->numberRows();
4285
+ int numberColumns = lpSolver->numberColumns();
4286
+ double objectiveValue = lpSolver->objectiveValue();
4287
+ size_t nWrite;
4288
+ nWrite = fwrite(&numberRows, sizeof(int), 1, fp);
4289
+ if (nWrite != 1)
4290
+ throw("Error in fwrite");
4291
+ nWrite = fwrite(&numberColumns, sizeof(int), 1, fp);
4292
+ if (nWrite != 1)
4293
+ throw("Error in fwrite");
4294
+ nWrite = fwrite(&objectiveValue, sizeof(double), 1, fp);
4295
+ if (nWrite != 1)
4296
+ throw("Error in fwrite");
4297
+ double *dualRowSolution = lpSolver->dualRowSolution();
4298
+ double *primalRowSolution = lpSolver->primalRowSolution();
4299
+ nWrite = fwrite(primalRowSolution, sizeof(double), numberRows, fp);
4300
+ if (nWrite != static_cast< size_t >(numberRows))
4301
+ throw("Error in fwrite");
4302
+ nWrite = fwrite(dualRowSolution, sizeof(double), numberRows, fp);
4303
+ if (nWrite != static_cast< size_t >(numberRows))
4304
+ throw("Error in fwrite");
4305
+ double *dualColumnSolution = lpSolver->dualColumnSolution();
4306
+ double *primalColumnSolution = lpSolver->primalColumnSolution();
4307
+ nWrite = fwrite(primalColumnSolution, sizeof(double), numberColumns, fp);
4308
+ if (nWrite != static_cast< size_t >(numberColumns))
4309
+ throw("Error in fwrite");
4310
+ nWrite = fwrite(dualColumnSolution, sizeof(double), numberColumns, fp);
4311
+ if (nWrite != static_cast< size_t >(numberColumns))
4312
+ throw("Error in fwrite");
4313
+ fclose(fp);
4314
+ } else {
4315
+ std::cout << "Unable to open file " << fileName << std::endl;
4316
+ }
4317
+ }
4318
+ #endif
4319
+
4320
+ /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
4321
+ */