casadi 3.6.4__cp37-none-manylinux2014_i686.whl → 3.6.6__cp37-none-manylinux2014_i686.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (494) hide show
  1. casadi/_casadi.so +0 -0
  2. casadi/casadi.py +984 -500
  3. casadi/cbc +0 -0
  4. casadi/clp +0 -0
  5. casadi/cmake/casadi-config-version.cmake +1 -1
  6. casadi/cmake/highs/highs-config.cmake +6 -13
  7. casadi/cmake/highs/highs-targets-release.cmake +13 -13
  8. casadi/cmake/highs/highs-targets.cmake +13 -10
  9. casadi/highs +0 -0
  10. casadi/include/casadi/casadi.i +33 -15
  11. casadi/include/casadi/casadi_c.h +2 -0
  12. casadi/include/casadi/config.h +8 -8
  13. casadi/include/casadi/core/casadi_common.hpp +1 -0
  14. casadi/include/casadi/core/casadi_misc.hpp +13 -0
  15. casadi/include/casadi/core/casadi_types.hpp +3 -2
  16. casadi/include/casadi/core/code_generator.hpp +59 -2
  17. casadi/include/casadi/core/core.hpp +1 -0
  18. casadi/include/casadi/core/generic_expression.hpp +1 -1
  19. casadi/include/casadi/core/generic_type.hpp +25 -1
  20. casadi/include/casadi/core/global_options.hpp +2 -0
  21. casadi/include/casadi/core/matrix_decl.hpp +15 -0
  22. casadi/include/casadi/core/mx.hpp +13 -3
  23. casadi/include/casadi/core/optistack.hpp +23 -0
  24. casadi/include/casadi/core/runtime/casadi_nlp.hpp +133 -6
  25. casadi/include/casadi/core/runtime/casadi_ocp_block.hpp +55 -0
  26. casadi/include/casadi/core/runtime/casadi_oracle.hpp +44 -0
  27. casadi/include/casadi/core/runtime/casadi_oracle_callback.hpp +39 -0
  28. casadi/include/casadi/core/runtime/casadi_runtime.hpp +4 -1
  29. casadi/include/casadi/core/runtime/casadi_scaled_copy.hpp +31 -0
  30. casadi/include/casadi/core/runtime/casadi_sqpmethod.hpp +11 -1
  31. casadi/include/casadi/core/serializing_stream.hpp +2 -2
  32. casadi/include/casadi/core/sparsity.hpp +12 -3
  33. casadi/include/casadi/core/tools.hpp +67 -0
  34. casadi/include/casadi/doc.i +2283 -1491
  35. casadi/include/casadi/doc_merged.i +1522 -1065
  36. casadi/include/casadi/mem.h +1 -0
  37. casadi/include/coin-or/IpAlgBuilder.hpp +417 -0
  38. casadi/include/coin-or/IpAlgStrategy.hpp +201 -0
  39. casadi/include/coin-or/IpAlgTypes.hpp +64 -0
  40. casadi/include/coin-or/IpAugSystemSolver.hpp +212 -0
  41. casadi/include/coin-or/IpBlas.hpp +426 -0
  42. casadi/include/coin-or/IpCachedResults.hpp +897 -0
  43. casadi/include/coin-or/IpCompoundMatrix.hpp +423 -0
  44. casadi/include/coin-or/IpCompoundSymMatrix.hpp +348 -0
  45. casadi/include/coin-or/IpCompoundVector.hpp +395 -0
  46. casadi/include/coin-or/IpConvCheck.hpp +97 -0
  47. casadi/include/coin-or/IpDebug.hpp +167 -0
  48. casadi/include/coin-or/IpDenseVector.hpp +626 -0
  49. casadi/include/coin-or/IpDiagMatrix.hpp +158 -0
  50. casadi/include/coin-or/IpEqMultCalculator.hpp +76 -0
  51. casadi/include/coin-or/IpException.hpp +156 -0
  52. casadi/include/coin-or/IpExpansionMatrix.hpp +245 -0
  53. casadi/include/coin-or/IpGenTMatrix.hpp +290 -0
  54. casadi/include/coin-or/IpHessianUpdater.hpp +73 -0
  55. casadi/include/coin-or/IpIdentityMatrix.hpp +167 -0
  56. casadi/include/coin-or/IpIpoptAlg.hpp +257 -0
  57. casadi/include/coin-or/IpIpoptApplication.hpp +367 -0
  58. casadi/include/coin-or/IpIpoptCalculatedQuantities.hpp +1009 -0
  59. casadi/include/coin-or/IpIpoptData.hpp +966 -0
  60. casadi/include/coin-or/IpIpoptNLP.hpp +328 -0
  61. casadi/include/coin-or/IpIterateInitializer.hpp +68 -0
  62. casadi/include/coin-or/IpIteratesVector.hpp +840 -0
  63. casadi/include/coin-or/IpIterationOutput.hpp +78 -0
  64. casadi/include/coin-or/IpJournalist.hpp +573 -0
  65. casadi/include/coin-or/IpLapack.hpp +227 -0
  66. casadi/include/coin-or/IpLibraryLoader.hpp +76 -0
  67. casadi/include/coin-or/IpLineSearch.hpp +106 -0
  68. casadi/include/coin-or/IpLinearSolvers.h +46 -0
  69. casadi/include/coin-or/IpMatrix.hpp +434 -0
  70. casadi/include/coin-or/IpMuUpdate.hpp +77 -0
  71. casadi/include/coin-or/IpNLP.hpp +306 -0
  72. casadi/include/coin-or/IpNLPScaling.hpp +582 -0
  73. casadi/include/coin-or/IpObserver.hpp +422 -0
  74. casadi/include/coin-or/IpOptionsList.hpp +412 -0
  75. casadi/include/coin-or/IpOrigIpoptNLP.hpp +603 -0
  76. casadi/include/coin-or/IpPDSystemSolver.hpp +137 -0
  77. casadi/include/coin-or/IpReferenced.hpp +262 -0
  78. casadi/include/coin-or/IpRegOptions.hpp +1152 -0
  79. casadi/include/coin-or/IpReturnCodes.h +23 -0
  80. casadi/include/coin-or/IpReturnCodes.hpp +18 -0
  81. casadi/include/coin-or/IpReturnCodes.inc +71 -0
  82. casadi/include/coin-or/IpReturnCodes_inc.h +45 -0
  83. casadi/include/coin-or/IpScaledMatrix.hpp +291 -0
  84. casadi/include/coin-or/IpSearchDirCalculator.hpp +72 -0
  85. casadi/include/coin-or/IpSmartPtr.hpp +865 -0
  86. casadi/include/coin-or/IpSolveStatistics.hpp +210 -0
  87. casadi/include/coin-or/IpSparseSymLinearSolverInterface.hpp +260 -0
  88. casadi/include/coin-or/IpStdAugSystemSolver.cpp +555 -0
  89. casadi/include/coin-or/IpStdCInterface.h +428 -0
  90. casadi/include/coin-or/IpSumSymMatrix.hpp +186 -0
  91. casadi/include/coin-or/IpSymLinearSolver.hpp +141 -0
  92. casadi/include/coin-or/IpSymMatrix.hpp +167 -0
  93. casadi/include/coin-or/IpSymScaledMatrix.hpp +255 -0
  94. casadi/include/coin-or/IpSymTMatrix.hpp +275 -0
  95. casadi/include/coin-or/IpTNLP.hpp +820 -0
  96. casadi/include/coin-or/IpTNLPAdapter.hpp +648 -0
  97. casadi/include/coin-or/IpTNLPReducer.hpp +274 -0
  98. casadi/include/coin-or/IpTaggedObject.hpp +128 -0
  99. casadi/include/coin-or/IpTimedTask.hpp +218 -0
  100. casadi/include/coin-or/IpTimingStatistics.hpp +323 -0
  101. casadi/include/coin-or/IpTripletHelper.hpp +308 -0
  102. casadi/include/coin-or/IpTypes.h +81 -0
  103. casadi/include/coin-or/IpTypes.hpp +30 -0
  104. casadi/include/coin-or/IpUtils.hpp +166 -0
  105. casadi/include/coin-or/IpVector.hpp +892 -0
  106. casadi/include/coin-or/IpZeroSymMatrix.hpp +155 -0
  107. casadi/include/coin-or/IpoptConfig.h +45 -0
  108. casadi/include/coin-or/SensAlgorithm.hpp +114 -0
  109. casadi/include/coin-or/SensApplication.hpp +188 -0
  110. casadi/include/coin-or/SensBacksolver.hpp +36 -0
  111. casadi/include/coin-or/SensMeasurement.hpp +56 -0
  112. casadi/include/coin-or/SensPCalculator.hpp +137 -0
  113. casadi/include/coin-or/SensRegOp.hpp +21 -0
  114. casadi/include/coin-or/SensSchurData.hpp +182 -0
  115. casadi/include/coin-or/SensSchurDriver.hpp +118 -0
  116. casadi/include/coin-or/SensSimpleBacksolver.hpp +49 -0
  117. casadi/include/coin-or/SensStepCalc.hpp +85 -0
  118. casadi/include/coin-or/SensUtils.hpp +63 -0
  119. casadi/include/coin-or/metis/defs.h +161 -0
  120. casadi/include/coin-or/metis/macros.h +143 -0
  121. casadi/include/coin-or/metis/metis.h +37 -0
  122. casadi/include/coin-or/metis/proto.h +505 -0
  123. casadi/include/coin-or/metis/rename.h +418 -0
  124. casadi/include/coin-or/metis/struct.h +251 -0
  125. casadi/include/coin-or/mumps/dmumps_c.h +142 -0
  126. casadi/include/coin-or/mumps/mumps_c_types.h +72 -0
  127. casadi/include/coin-or/mumps/mumps_compat.h +27 -0
  128. casadi/include/coin-or/mumps/mumps_int_def.h +11 -0
  129. casadi/include/coin-or/mumps/mumps_mpi.h +67 -0
  130. casadi/include/daqp/api.h +46 -0
  131. casadi/include/daqp/auxiliary.h +29 -0
  132. casadi/include/daqp/bnb.h +32 -0
  133. casadi/include/daqp/codegen.h +18 -0
  134. casadi/include/daqp/constants.h +92 -0
  135. casadi/include/daqp/daqp.h +22 -0
  136. casadi/include/daqp/daqp_prox.h +18 -0
  137. casadi/include/daqp/factorization.h +18 -0
  138. casadi/include/daqp/types.h +161 -0
  139. casadi/include/daqp/utils.h +44 -0
  140. casadi/include/highs/HConfig.h +6 -5
  141. casadi/include/highs/Highs.h +93 -23
  142. casadi/include/highs/filereaderlp/def.hpp +19 -0
  143. casadi/include/highs/interfaces/highs_c_api.h +200 -24
  144. casadi/include/highs/io/Filereader.h +1 -1
  145. casadi/include/highs/io/FilereaderEms.h +1 -1
  146. casadi/include/highs/io/FilereaderLp.h +1 -1
  147. casadi/include/highs/io/FilereaderMps.h +1 -1
  148. casadi/include/highs/io/HMPSIO.h +1 -1
  149. casadi/include/highs/io/HMpsFF.h +5 -3
  150. casadi/include/highs/io/HighsIO.h +18 -8
  151. casadi/include/highs/io/LoadOptions.h +1 -1
  152. casadi/include/highs/ipm/IpxSolution.h +35 -0
  153. casadi/include/highs/ipm/IpxWrapper.h +1 -1
  154. casadi/include/highs/ipm/basiclu/basiclu.h +161 -0
  155. casadi/include/highs/ipm/basiclu/basiclu_factorize.h +247 -0
  156. casadi/include/highs/ipm/basiclu/basiclu_get_factors.h +108 -0
  157. casadi/include/highs/ipm/basiclu/basiclu_initialize.h +119 -0
  158. casadi/include/highs/ipm/basiclu/basiclu_obj_factorize.h +34 -0
  159. casadi/include/highs/ipm/basiclu/basiclu_obj_free.h +19 -0
  160. casadi/include/highs/ipm/basiclu/basiclu_obj_get_factors.h +34 -0
  161. casadi/include/highs/ipm/basiclu/basiclu_obj_initialize.h +46 -0
  162. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_dense.h +29 -0
  163. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_for_update.h +42 -0
  164. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_sparse.h +32 -0
  165. casadi/include/highs/ipm/basiclu/basiclu_obj_update.h +31 -0
  166. casadi/include/highs/ipm/basiclu/basiclu_object.h +30 -0
  167. casadi/include/highs/ipm/basiclu/basiclu_solve_dense.h +75 -0
  168. casadi/include/highs/ipm/basiclu/basiclu_solve_for_update.h +169 -0
  169. casadi/include/highs/ipm/basiclu/basiclu_solve_sparse.h +112 -0
  170. casadi/include/highs/ipm/basiclu/basiclu_update.h +125 -0
  171. casadi/include/highs/ipm/basiclu/lu_def.h +39 -0
  172. casadi/include/highs/ipm/basiclu/lu_file.h +21 -0
  173. casadi/include/highs/ipm/basiclu/lu_internal.h +220 -0
  174. casadi/include/highs/ipm/basiclu/lu_list.h +168 -0
  175. casadi/include/highs/ipm/ipx/basiclu_kernel.h +20 -0
  176. casadi/include/highs/ipm/ipx/basiclu_wrapper.h +47 -0
  177. casadi/include/highs/ipm/ipx/basis.h +351 -0
  178. casadi/include/highs/ipm/ipx/conjugate_residuals.h +74 -0
  179. casadi/include/highs/ipm/ipx/control.h +163 -0
  180. casadi/include/highs/ipm/ipx/crossover.h +157 -0
  181. casadi/include/highs/ipm/ipx/diagonal_precond.h +45 -0
  182. casadi/include/highs/ipm/ipx/forrest_tomlin.h +102 -0
  183. casadi/include/highs/ipm/ipx/guess_basis.h +21 -0
  184. casadi/include/highs/ipm/ipx/indexed_vector.h +113 -0
  185. casadi/include/highs/ipm/ipx/info.h +27 -0
  186. casadi/include/highs/ipm/ipx/ipm.h +94 -0
  187. casadi/include/highs/ipm/ipx/ipx_c.h +47 -0
  188. casadi/include/highs/ipm/ipx/ipx_config.h +9 -0
  189. casadi/include/highs/ipm/ipx/ipx_info.h +111 -0
  190. casadi/include/highs/ipm/ipx/ipx_internal.h +88 -0
  191. casadi/include/highs/ipm/ipx/ipx_parameters.h +75 -0
  192. casadi/include/highs/ipm/ipx/ipx_status.h +57 -0
  193. casadi/include/highs/ipm/ipx/iterate.h +328 -0
  194. casadi/include/highs/ipm/ipx/kkt_solver.h +70 -0
  195. casadi/include/highs/ipm/ipx/kkt_solver_basis.h +66 -0
  196. casadi/include/highs/ipm/ipx/kkt_solver_diag.h +48 -0
  197. casadi/include/highs/ipm/ipx/linear_operator.h +26 -0
  198. casadi/include/highs/ipm/ipx/lp_solver.h +201 -0
  199. casadi/include/highs/ipm/ipx/lu_factorization.h +79 -0
  200. casadi/include/highs/ipm/ipx/lu_update.h +129 -0
  201. casadi/include/highs/ipm/ipx/maxvolume.h +54 -0
  202. casadi/include/highs/ipm/ipx/model.h +409 -0
  203. casadi/include/highs/ipm/ipx/multistream.h +52 -0
  204. casadi/include/highs/ipm/ipx/normal_matrix.h +44 -0
  205. casadi/include/highs/ipm/ipx/power_method.h +44 -0
  206. casadi/include/highs/ipm/ipx/sparse_matrix.h +195 -0
  207. casadi/include/highs/ipm/ipx/sparse_utils.h +58 -0
  208. casadi/include/highs/ipm/ipx/splitted_normal_matrix.h +63 -0
  209. casadi/include/highs/ipm/ipx/starting_basis.h +39 -0
  210. casadi/include/highs/ipm/ipx/symbolic_invert.h +29 -0
  211. casadi/include/highs/ipm/ipx/timer.h +24 -0
  212. casadi/include/highs/ipm/ipx/utils.h +39 -0
  213. casadi/include/highs/lp_data/HConst.h +20 -10
  214. casadi/include/highs/lp_data/HStruct.h +23 -1
  215. casadi/include/highs/lp_data/HighsAnalysis.h +1 -1
  216. casadi/include/highs/lp_data/HighsCallback.h +10 -3
  217. casadi/include/highs/lp_data/HighsCallbackStruct.h +31 -5
  218. casadi/include/highs/lp_data/HighsDebug.h +1 -1
  219. casadi/include/highs/lp_data/HighsInfo.h +20 -2
  220. casadi/include/highs/lp_data/HighsInfoDebug.h +1 -1
  221. casadi/include/highs/lp_data/HighsLp.h +17 -1
  222. casadi/include/highs/lp_data/HighsLpSolverObject.h +1 -1
  223. casadi/include/highs/lp_data/HighsLpUtils.h +19 -19
  224. casadi/include/highs/lp_data/HighsModelUtils.h +1 -1
  225. casadi/include/highs/lp_data/HighsOptions.h +237 -10
  226. casadi/include/highs/lp_data/HighsRanging.h +1 -1
  227. casadi/include/highs/lp_data/HighsRuntimeOptions.h +2 -2
  228. casadi/include/highs/lp_data/HighsSolution.h +2 -2
  229. casadi/include/highs/lp_data/HighsSolutionDebug.h +1 -1
  230. casadi/include/highs/lp_data/HighsSolve.h +3 -1
  231. casadi/include/highs/lp_data/HighsStatus.h +1 -1
  232. casadi/include/highs/mip/HighsCliqueTable.h +4 -4
  233. casadi/include/highs/mip/HighsConflictPool.h +1 -1
  234. casadi/include/highs/mip/HighsCutGeneration.h +1 -1
  235. casadi/include/highs/mip/HighsCutPool.h +2 -2
  236. casadi/include/highs/mip/HighsDebugSol.h +22 -29
  237. casadi/include/highs/mip/HighsDomain.h +10 -2
  238. casadi/include/highs/mip/HighsDomainChange.h +1 -1
  239. casadi/include/highs/mip/HighsDynamicRowMatrix.h +5 -3
  240. casadi/include/highs/mip/HighsGFkSolve.h +3 -3
  241. casadi/include/highs/mip/HighsImplications.h +3 -3
  242. casadi/include/highs/mip/HighsLpAggregator.h +1 -1
  243. casadi/include/highs/mip/HighsLpRelaxation.h +6 -1
  244. casadi/include/highs/mip/HighsMipSolver.h +4 -2
  245. casadi/include/highs/mip/HighsMipSolverData.h +47 -4
  246. casadi/include/highs/mip/HighsModkSeparator.h +2 -2
  247. casadi/include/highs/mip/HighsNodeQueue.h +5 -3
  248. casadi/include/highs/mip/HighsObjectiveFunction.h +1 -1
  249. casadi/include/highs/mip/HighsPathSeparator.h +2 -2
  250. casadi/include/highs/mip/HighsPrimalHeuristics.h +1 -1
  251. casadi/include/highs/mip/HighsPseudocost.h +35 -23
  252. casadi/include/highs/mip/HighsRedcostFixing.h +1 -1
  253. casadi/include/highs/mip/HighsSearch.h +2 -1
  254. casadi/include/highs/mip/HighsSeparation.h +1 -1
  255. casadi/include/highs/mip/HighsSeparator.h +1 -1
  256. casadi/include/highs/mip/HighsTableauSeparator.h +1 -1
  257. casadi/include/highs/mip/HighsTransformedLp.h +1 -1
  258. casadi/include/highs/model/HighsHessian.h +5 -0
  259. casadi/include/highs/model/HighsHessianUtils.h +2 -0
  260. casadi/include/highs/model/HighsModel.h +10 -1
  261. casadi/include/highs/parallel/HighsMutex.h +2 -1
  262. casadi/include/highs/parallel/HighsParallel.h +7 -2
  263. casadi/include/highs/parallel/HighsTask.h +1 -2
  264. casadi/include/highs/pdlp/CupdlpWrapper.h +93 -0
  265. casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +41 -0
  266. casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +423 -0
  267. casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +183 -0
  268. casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +19 -0
  269. casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +31 -0
  270. casadi/include/highs/pdlp/cupdlp/cupdlp_scaling_cuda.h +28 -0
  271. casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +98 -0
  272. casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +33 -0
  273. casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +1726 -0
  274. casadi/include/highs/pdqsort/pdqsort.h +532 -0
  275. casadi/include/highs/presolve/HPresolve.h +27 -14
  276. casadi/include/highs/presolve/HPresolveAnalysis.h +1 -1
  277. casadi/include/highs/presolve/HighsPostsolveStack.h +92 -68
  278. casadi/include/highs/presolve/HighsSymmetry.h +6 -5
  279. casadi/include/highs/presolve/ICrash.h +8 -2
  280. casadi/include/highs/presolve/ICrashUtil.h +1 -1
  281. casadi/include/highs/presolve/ICrashX.h +1 -1
  282. casadi/include/highs/presolve/PresolveComponent.h +1 -1
  283. casadi/include/highs/qpsolver/a_asm.hpp +23 -12
  284. casadi/include/highs/qpsolver/a_quass.hpp +8 -1
  285. casadi/include/highs/qpsolver/basis.hpp +150 -0
  286. casadi/include/highs/qpsolver/crashsolution.hpp +12 -0
  287. casadi/include/highs/qpsolver/dantzigpricing.hpp +72 -0
  288. casadi/include/highs/qpsolver/devexpricing.hpp +99 -0
  289. casadi/include/highs/qpsolver/eventhandler.hpp +23 -0
  290. casadi/include/highs/qpsolver/factor.hpp +400 -0
  291. casadi/include/highs/qpsolver/feasibility_bounded.hpp +105 -0
  292. casadi/include/highs/qpsolver/feasibility_highs.hpp +270 -0
  293. casadi/include/highs/qpsolver/gradient.hpp +39 -0
  294. casadi/include/highs/qpsolver/instance.hpp +63 -0
  295. casadi/include/highs/qpsolver/matrix.hpp +335 -0
  296. casadi/include/highs/qpsolver/pricing.hpp +15 -0
  297. casadi/include/highs/qpsolver/qpconst.hpp +27 -0
  298. casadi/include/highs/qpsolver/{vector.hpp → qpvector.hpp} +25 -25
  299. casadi/include/highs/qpsolver/quass.hpp +1 -1
  300. casadi/include/highs/qpsolver/ratiotest.hpp +19 -0
  301. casadi/include/highs/qpsolver/runtime.hpp +38 -0
  302. casadi/include/highs/qpsolver/settings.hpp +57 -0
  303. casadi/include/highs/qpsolver/snippets.hpp +29 -0
  304. casadi/include/highs/qpsolver/statistics.hpp +23 -0
  305. casadi/include/highs/qpsolver/steepestedgepricing.hpp +167 -0
  306. casadi/include/highs/simplex/HApp.h +1 -1
  307. casadi/include/highs/simplex/HEkk.h +52 -18
  308. casadi/include/highs/simplex/HEkkDual.h +1 -1
  309. casadi/include/highs/simplex/HEkkDualRHS.h +6 -7
  310. casadi/include/highs/simplex/HEkkDualRow.h +2 -2
  311. casadi/include/highs/simplex/HEkkPrimal.h +6 -1
  312. casadi/include/highs/simplex/HSimplex.h +1 -3
  313. casadi/include/highs/simplex/HSimplexDebug.h +1 -1
  314. casadi/include/highs/simplex/HSimplexNla.h +1 -1
  315. casadi/include/highs/simplex/HSimplexReport.h +1 -1
  316. casadi/include/highs/simplex/HighsSimplexAnalysis.h +228 -100
  317. casadi/include/highs/simplex/SimplexConst.h +1 -1
  318. casadi/include/highs/simplex/SimplexStruct.h +2 -2
  319. casadi/include/highs/simplex/SimplexTimer.h +1 -1
  320. casadi/include/highs/test/DevKkt.h +1 -1
  321. casadi/include/highs/test/KktCh2.h +1 -1
  322. casadi/include/highs/util/FactorTimer.h +1 -1
  323. casadi/include/highs/util/HFactor.h +35 -6
  324. casadi/include/highs/util/HFactorConst.h +1 -1
  325. casadi/include/highs/util/HFactorDebug.h +1 -1
  326. casadi/include/highs/util/HSet.h +1 -1
  327. casadi/include/highs/util/HVector.h +1 -1
  328. casadi/include/highs/util/HVectorBase.h +1 -1
  329. casadi/include/highs/util/HighsCDouble.h +3 -3
  330. casadi/include/highs/util/HighsComponent.h +1 -1
  331. casadi/include/highs/util/HighsDataStack.h +4 -4
  332. casadi/include/highs/util/HighsDisjointSets.h +1 -1
  333. casadi/include/highs/util/HighsHash.h +28 -21
  334. casadi/include/highs/util/HighsHashTree.h +63 -63
  335. casadi/include/highs/util/HighsInt.h +1 -1
  336. casadi/include/highs/util/HighsIntegers.h +8 -9
  337. casadi/include/highs/util/HighsLinearSumBounds.h +1 -1
  338. casadi/include/highs/util/HighsMatrixPic.h +1 -1
  339. casadi/include/highs/util/HighsMatrixSlice.h +9 -6
  340. casadi/include/highs/util/HighsMatrixUtils.h +1 -1
  341. casadi/include/highs/util/HighsMemoryAllocation.h +55 -0
  342. casadi/include/highs/util/HighsRandom.h +27 -15
  343. casadi/include/highs/util/HighsRbTree.h +2 -2
  344. casadi/include/highs/util/HighsSort.h +7 -7
  345. casadi/include/highs/util/HighsSparseMatrix.h +5 -2
  346. casadi/include/highs/util/HighsSparseVectorSum.h +2 -2
  347. casadi/include/highs/util/HighsSplay.h +1 -1
  348. casadi/include/highs/util/HighsTimer.h +18 -9
  349. casadi/include/highs/util/HighsUtils.h +15 -8
  350. casadi/include/highs/util/stringutil.h +9 -4
  351. casadi/include/highs/zstr/strict_fstream.hpp +237 -0
  352. casadi/include/highs/zstr/zstr.hpp +472 -0
  353. casadi/include/licenses/daqp-external/LICENSE +21 -0
  354. casadi/include/licenses/highs-external/{LICENSE → LICENSE.txt} +1 -1
  355. casadi/include/osqp/constants.h +2 -3
  356. casadi/include/osqp/version.h +9 -0
  357. casadi/lib/libtinyxml2.a +0 -0
  358. casadi/libCbc.so +0 -0
  359. casadi/libCbc.so.3 +0 -0
  360. casadi/libCbc.so.3.10.11 +0 -0
  361. casadi/libCbcSolver.so +0 -0
  362. casadi/libCbcSolver.so.3 +0 -0
  363. casadi/libCbcSolver.so.3.10.11 +0 -0
  364. casadi/libCgl.so +0 -0
  365. casadi/libCgl.so.1 +0 -0
  366. casadi/libCgl.so.1.10.8 +0 -0
  367. casadi/libClp.so +0 -0
  368. casadi/libClp.so.1 +0 -0
  369. casadi/libClp.so.1.14.9 +0 -0
  370. casadi/libClpSolver.so +0 -0
  371. casadi/libClpSolver.so.1 +0 -0
  372. casadi/libClpSolver.so.1.14.9 +0 -0
  373. casadi/libCoinUtils.so +0 -0
  374. casadi/libCoinUtils.so.3 +0 -0
  375. casadi/libCoinUtils.so.3.11.10 +0 -0
  376. casadi/libOsi.so +0 -0
  377. casadi/libOsi.so.1 +0 -0
  378. casadi/libOsi.so.1.13.9 +0 -0
  379. casadi/libOsiCbc.so +0 -0
  380. casadi/libOsiCbc.so.3 +0 -0
  381. casadi/libOsiCbc.so.3.10.11 +0 -0
  382. casadi/libOsiClp.so +0 -0
  383. casadi/libOsiClp.so.1 +0 -0
  384. casadi/libOsiClp.so.1.14.9 +0 -0
  385. casadi/libOsiCommonTests.so +0 -0
  386. casadi/libOsiCommonTests.so.1 +0 -0
  387. casadi/libOsiCommonTests.so.1.13.9 +0 -0
  388. casadi/libbonmin.so +0 -0
  389. casadi/libbonmin.so.4 +0 -0
  390. casadi/libbonmin.so.4.8.9 +0 -0
  391. casadi/libcasadi.so +0 -0
  392. casadi/libcasadi.so.3.7 +0 -0
  393. casadi/libcasadi_conic_cbc.so +0 -0
  394. casadi/libcasadi_conic_cbc.so.3.7 +0 -0
  395. casadi/libcasadi_conic_clp.so +0 -0
  396. casadi/libcasadi_conic_clp.so.3.7 +0 -0
  397. casadi/libcasadi_conic_daqp.so +0 -0
  398. casadi/libcasadi_conic_daqp.so.3.7 +0 -0
  399. casadi/libcasadi_conic_gurobi.so +0 -0
  400. casadi/libcasadi_conic_gurobi.so.3.7 +0 -0
  401. casadi/libcasadi_conic_highs.so +0 -0
  402. casadi/libcasadi_conic_highs.so.3.7 +0 -0
  403. casadi/libcasadi_conic_ipqp.so +0 -0
  404. casadi/libcasadi_conic_ipqp.so.3.7 +0 -0
  405. casadi/libcasadi_conic_nlpsol.so +0 -0
  406. casadi/libcasadi_conic_nlpsol.so.3.7 +0 -0
  407. casadi/libcasadi_conic_osqp.so +0 -0
  408. casadi/libcasadi_conic_osqp.so.3.7 +0 -0
  409. casadi/libcasadi_conic_proxqp.so +0 -0
  410. casadi/libcasadi_conic_proxqp.so.3.7 +0 -0
  411. casadi/libcasadi_conic_qpoases.so +0 -0
  412. casadi/libcasadi_conic_qpoases.so.3.7 +0 -0
  413. casadi/libcasadi_conic_qrqp.so +0 -0
  414. casadi/libcasadi_conic_qrqp.so.3.7 +0 -0
  415. casadi/libcasadi_conic_superscs.so +0 -0
  416. casadi/libcasadi_conic_superscs.so.3.7 +0 -0
  417. casadi/libcasadi_integrator_collocation.so +0 -0
  418. casadi/libcasadi_integrator_collocation.so.3.7 +0 -0
  419. casadi/libcasadi_integrator_cvodes.so +0 -0
  420. casadi/libcasadi_integrator_cvodes.so.3.7 +0 -0
  421. casadi/libcasadi_integrator_idas.so +0 -0
  422. casadi/libcasadi_integrator_idas.so.3.7 +0 -0
  423. casadi/libcasadi_integrator_rk.so +0 -0
  424. casadi/libcasadi_integrator_rk.so.3.7 +0 -0
  425. casadi/libcasadi_nlpsol_alpaqa.so +0 -0
  426. casadi/libcasadi_nlpsol_alpaqa.so.3.7 +0 -0
  427. casadi/libcasadi_nlpsol_ampl.so +0 -0
  428. casadi/libcasadi_nlpsol_ampl.so.3.7 +0 -0
  429. casadi/libcasadi_nlpsol_blocksqp.so +0 -0
  430. casadi/libcasadi_nlpsol_blocksqp.so.3.7 +0 -0
  431. casadi/libcasadi_nlpsol_bonmin.so +0 -0
  432. casadi/libcasadi_nlpsol_bonmin.so.3.7 +0 -0
  433. casadi/libcasadi_nlpsol_feasiblesqpmethod.so +0 -0
  434. casadi/libcasadi_nlpsol_feasiblesqpmethod.so.3.7 +0 -0
  435. casadi/libcasadi_nlpsol_ipopt.so +0 -0
  436. casadi/libcasadi_nlpsol_ipopt.so.3.7 +0 -0
  437. casadi/libcasadi_nlpsol_knitro.so +0 -0
  438. casadi/libcasadi_nlpsol_knitro.so.3.7 +0 -0
  439. casadi/libcasadi_nlpsol_madnlp.so +0 -0
  440. casadi/libcasadi_nlpsol_madnlp.so.3.7 +0 -0
  441. casadi/libcasadi_nlpsol_qrsqp.so +0 -0
  442. casadi/libcasadi_nlpsol_qrsqp.so.3.7 +0 -0
  443. casadi/libcasadi_nlpsol_scpgen.so +0 -0
  444. casadi/libcasadi_nlpsol_scpgen.so.3.7 +0 -0
  445. casadi/libcasadi_nlpsol_sleqp.so +0 -0
  446. casadi/libcasadi_nlpsol_sleqp.so.3.7 +0 -0
  447. casadi/libcasadi_nlpsol_snopt.so +0 -0
  448. casadi/libcasadi_nlpsol_snopt.so.3.7 +0 -0
  449. casadi/libcasadi_nlpsol_sqpmethod.so +0 -0
  450. casadi/libcasadi_nlpsol_sqpmethod.so.3.7 +0 -0
  451. casadi/libcasadi_nlpsol_worhp.so +0 -0
  452. casadi/libcasadi_nlpsol_worhp.so.3.7 +0 -0
  453. casadi/libcasadi_rootfinder_fast_newton.so +0 -0
  454. casadi/libcasadi_rootfinder_fast_newton.so.3.7 +0 -0
  455. casadi/libcasadi_rootfinder_kinsol.so +0 -0
  456. casadi/libcasadi_rootfinder_kinsol.so.3.7 +0 -0
  457. casadi/libcasadi_rootfinder_newton.so +0 -0
  458. casadi/libcasadi_rootfinder_newton.so.3.7 +0 -0
  459. casadi/libcasadi_rootfinder_nlpsol.so +0 -0
  460. casadi/libcasadi_rootfinder_nlpsol.so.3.7 +0 -0
  461. casadi/libcasadi_sundials_common.so +0 -0
  462. casadi/libcasadi_sundials_common.so.3.7 +0 -0
  463. casadi/libdaqp.so +0 -0
  464. casadi/libdaqpstat.a +0 -0
  465. casadi/libhighs.so +0 -0
  466. casadi/libhighs.so.1 +0 -0
  467. casadi/libhighs.so.1.7.2 +0 -0
  468. casadi/libindirect.a +0 -0
  469. casadi/libipopt.so +0 -0
  470. casadi/libipopt.so.3 +0 -0
  471. casadi/libipopt.so.3.14.11 +0 -0
  472. casadi/liblinsys.a +0 -0
  473. casadi/libmatlab_ipc.so +0 -0
  474. casadi/libosqp.a +0 -0
  475. casadi/libosqp.so +0 -0
  476. casadi/libqdldl.a +0 -0
  477. casadi/libsipopt.so +0 -0
  478. casadi/libsipopt.so.3 +0 -0
  479. casadi/libsipopt.so.3.14.11 +0 -0
  480. casadi/libsleqp.so +0 -0
  481. casadi/libsleqp.so.1.0.1 +0 -0
  482. casadi/libspral.a +0 -0
  483. casadi/libsuperscs.a +0 -0
  484. casadi/pkgconfig/casadi.pc +1 -1
  485. casadi/pkgconfig/highs.pc +1 -1
  486. casadi/tools/__init__.py +4 -0
  487. casadi/tools/bounds.py +3 -3
  488. {casadi-3.6.4.dist-info → casadi-3.6.6.dist-info}/METADATA +12 -4
  489. {casadi-3.6.4.dist-info → casadi-3.6.6.dist-info}/RECORD +490 -281
  490. casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
  491. casadi/libFortranHighs.so +0 -0
  492. casadi/libhighs.so.1.6 +0 -0
  493. casadi/libhighs.so.1.6.0 +0 -0
  494. {casadi-3.6.4.dist-info → casadi-3.6.6.dist-info}/WHEEL +0 -0
@@ -0,0 +1,141 @@
1
+ // Copyright (C) 2004, 2006 International Business Machines and others.
2
+ // All Rights Reserved.
3
+ // This code is published under the Eclipse Public License.
4
+ //
5
+ // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
6
+
7
+ #ifndef __IPSYMLINEARSOLVER_HPP__
8
+ #define __IPSYMLINEARSOLVER_HPP__
9
+
10
+ #include "IpUtils.hpp"
11
+ #include "IpSymMatrix.hpp"
12
+ #include "IpAlgStrategy.hpp"
13
+ #include <vector>
14
+
15
+ namespace Ipopt
16
+ {
17
+
18
+ /** Enum to report outcome of a linear solve */
19
+ enum ESymSolverStatus
20
+ {
21
+ /** Successful solve */
22
+ SYMSOLVER_SUCCESS,
23
+ /** Matrix seems to be singular; solve was aborted */
24
+ SYMSOLVER_SINGULAR,
25
+ /** The number of negative eigenvalues is not correct */
26
+ SYMSOLVER_WRONG_INERTIA,
27
+ /** Call the solver interface again after the matrix values have been restored */
28
+ SYMSOLVER_CALL_AGAIN,
29
+ /** Unrecoverable error in linear solver occurred.
30
+ * The optimization will be aborted.
31
+ */
32
+ SYMSOLVER_FATAL_ERROR
33
+ };
34
+
35
+ /** Base class for all derived symmetric linear solvers.
36
+ *
37
+ * In the full space version of Ipopt a large linear
38
+ * system has to be solved for the augmented system. This case is
39
+ * meant to be the base class for all derived linear solvers for
40
+ * symmetric matrices (of type SymMatrix).
41
+ *
42
+ * A linear solver can be used repeatedly for matrices with
43
+ * identical structure of nonzero elements. The nonzero structure
44
+ * of those matrices must not be changed between calls.
45
+ *
46
+ * The called might ask the solver to only solve the linear system
47
+ * if the system is nonsingular, and if the number of negative
48
+ * eigenvalues matches a given number.
49
+ */
50
+ class IPOPTLIB_EXPORT SymLinearSolver: public AlgorithmStrategyObject
51
+ {
52
+ public:
53
+ /** @name Constructor/Destructor */
54
+ ///@{
55
+ SymLinearSolver()
56
+ { }
57
+
58
+ virtual ~SymLinearSolver()
59
+ { }
60
+ ///@}
61
+
62
+ virtual bool InitializeImpl(
63
+ const OptionsList& options,
64
+ const std::string& prefix
65
+ ) = 0;
66
+
67
+ /** @name Methods for requesting solution of the linear system. */
68
+ ///@{
69
+ /** Solve operation for multiple right hand sides.
70
+ *
71
+ * Solves the linear system A * Sol = Rhs with multiple right hand sides.
72
+ * If necessary, A is factorized. Correct solutions are only
73
+ * guaranteed if the return values is SYMSOLVER_SUCCESS. The
74
+ * solver will return SYMSOLVER_SINGULAR if the linear system is
75
+ * singular, and it will return SYMSOLVER_WRONG_INERTIA if
76
+ * check_NegEVals is true and the number of negative eigenvalues
77
+ * in the matrix does not match numberOfNegEVals.
78
+ *
79
+ * check_NegEVals cannot be chosen true, if ProvidesInertia()
80
+ * returns false.
81
+ */
82
+ virtual ESymSolverStatus MultiSolve(
83
+ const SymMatrix& A,
84
+ std::vector<SmartPtr<const Vector> >& rhsV,
85
+ std::vector<SmartPtr<Vector> >& solV,
86
+ bool check_NegEVals,
87
+ Index numberOfNegEVals
88
+ ) = 0;
89
+
90
+ /** Solve operation for a single right hand side.
91
+ *
92
+ * Solves the linear system A * Sol = Rhs.
93
+ * See MultiSolve for more details.
94
+ */
95
+ ESymSolverStatus Solve(
96
+ const SymMatrix& A,
97
+ const Vector& rhs,
98
+ Vector& sol,
99
+ bool check_NegEVals,
100
+ Index numberOfNegEVals
101
+ )
102
+ {
103
+ std::vector<SmartPtr<const Vector> > rhsV(1);
104
+ rhsV[0] = &rhs;
105
+ std::vector<SmartPtr<Vector> > solV(1);
106
+ solV[0] = &sol;
107
+ return MultiSolve(A, rhsV, solV, check_NegEVals, numberOfNegEVals);
108
+ }
109
+
110
+ /** Number of negative eigenvalues detected during last factorization.
111
+ *
112
+ * @return the number of negative eigenvalues of the most recent factorized matrix
113
+ *
114
+ * This must not be called if the linear solver does not compute this quantities
115
+ * (see ProvidesInertia).
116
+ */
117
+ virtual Index NumberOfNegEVals() const = 0;
118
+ ///@}
119
+
120
+ //* @name Options of Linear solver */
121
+ ///@{
122
+ /** Request to increase quality of solution for next solve.
123
+ *
124
+ * Ask linear solver to increase quality of solution for the next
125
+ * solve (e.g. increase pivot tolerance).
126
+ *
127
+ * @return false, if this is not possible, e.g. maximal pivot tolerance already used.
128
+ */
129
+ virtual bool IncreaseQuality() = 0;
130
+
131
+ /** Query whether inertia is computed by linear solver.
132
+ *
133
+ * @return true, if linear solver provides inertia
134
+ */
135
+ virtual bool ProvidesInertia() const = 0;
136
+ ///@}
137
+ };
138
+
139
+ } // namespace Ipopt
140
+
141
+ #endif
@@ -0,0 +1,167 @@
1
+ // Copyright (C) 2004, 2008 International Business Machines and others.
2
+ // All Rights Reserved.
3
+ // This code is published under the Eclipse Public License.
4
+ //
5
+ // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
6
+
7
+ #ifndef __IPSYMMATRIX_HPP__
8
+ #define __IPSYMMATRIX_HPP__
9
+
10
+ #include "IpUtils.hpp"
11
+ #include "IpMatrix.hpp"
12
+
13
+ namespace Ipopt
14
+ {
15
+
16
+ /* forward declarations */
17
+ class SymMatrixSpace;
18
+
19
+ /** This is the base class for all derived symmetric matrix types. */
20
+ class IPOPTLIB_EXPORT SymMatrix: public Matrix
21
+ {
22
+ public:
23
+ /** @name Constructor/Destructor */
24
+ ///@{
25
+ /** Constructor, taking the owner_space.
26
+ */
27
+ inline SymMatrix(
28
+ const SymMatrixSpace* owner_space
29
+ );
30
+
31
+ /** Destructor */
32
+ virtual ~SymMatrix()
33
+ { }
34
+ ///@}
35
+
36
+ /** @name Information about the size of the matrix */
37
+ ///@{
38
+ /** Dimension of the matrix (number of rows and columns) */
39
+ inline Index Dim() const;
40
+ ///@}
41
+
42
+ inline SmartPtr<const SymMatrixSpace> OwnerSymMatrixSpace() const;
43
+
44
+ protected:
45
+ /** @name Overloaded methods from Matrix. */
46
+ ///@{
47
+ /** Implementation of TransMultVectorImpl, which calls MultVectorImpl.
48
+ *
49
+ * Since the matrix is symmetric, it is only necessary to implement the
50
+ * MultVectorImpl method in a class that inherits from this base
51
+ * class.
52
+ */
53
+ virtual void TransMultVectorImpl(
54
+ Number alpha,
55
+ const Vector& x,
56
+ Number beta,
57
+ Vector& y
58
+ ) const
59
+ {
60
+ // Since this matrix is symmetric, this is the same operation as MultVector
61
+ MultVector(alpha, x, beta, y);
62
+ }
63
+
64
+ /** Implementation of ComputeColAMaxImpl, which calls ComputeRowAMaxImpl.
65
+ *
66
+ * Since the matrix is symmetric, the row and column max norms are identical.
67
+ */
68
+ virtual void ComputeColAMaxImpl(
69
+ Vector& cols_norms,
70
+ bool init
71
+ ) const
72
+ {
73
+ ComputeRowAMaxImpl(cols_norms, init);
74
+ }
75
+ ///@}
76
+
77
+ private:
78
+ /** Copy of the owner space ptr as a SymMatrixSpace instead
79
+ * of a MatrixSpace
80
+ */
81
+ const SymMatrixSpace* owner_space_;
82
+ };
83
+
84
+ /** SymMatrixSpace base class, corresponding to the SymMatrix base class. */
85
+ class IPOPTLIB_EXPORT SymMatrixSpace: public MatrixSpace
86
+ {
87
+ public:
88
+ /** @name Constructors/Destructors */
89
+ ///@{
90
+ /** Constructor, given the dimension (identical to the number of
91
+ * rows and columns).
92
+ */
93
+ SymMatrixSpace(
94
+ Index dim
95
+ )
96
+ : MatrixSpace(dim, dim)
97
+ { }
98
+
99
+ /** Destructor */
100
+ virtual ~SymMatrixSpace()
101
+ { }
102
+ ///@}
103
+
104
+ /** Pure virtual method for creating a new matrix of this specific type. */
105
+ virtual SymMatrix* MakeNewSymMatrix() const = 0;
106
+
107
+ virtual Matrix* MakeNew() const
108
+ {
109
+ return MakeNewSymMatrix();
110
+ }
111
+
112
+ /** Accessor method for the dimension of the matrices in this
113
+ * matrix space.
114
+ */
115
+ Index Dim() const
116
+ {
117
+ DBG_ASSERT(NRows() == NCols());
118
+ return NRows();
119
+ }
120
+
121
+ private:
122
+ /**@name Default Compiler Generated Methods
123
+ * (Hidden to avoid implicit creation/calling).
124
+ * These methods are not implemented and
125
+ * we do not want the compiler to implement
126
+ * them for us, so we declare them private
127
+ * and do not define them. This ensures that
128
+ * they will not be implicitly created/called.
129
+ */
130
+ ///@{
131
+ /** Default constructor */
132
+ SymMatrixSpace();
133
+
134
+ /* Copy constructor */
135
+ SymMatrixSpace(
136
+ const SymMatrixSpace&
137
+ );
138
+
139
+ /** Default Assignment Operator */
140
+ SymMatrixSpace& operator=(
141
+ const SymMatrixSpace&
142
+ );
143
+ ///@}
144
+
145
+ };
146
+
147
+ /* inline methods */
148
+ inline SymMatrix::SymMatrix(
149
+ const SymMatrixSpace* owner_space
150
+ )
151
+ : Matrix(owner_space),
152
+ owner_space_(owner_space)
153
+ { }
154
+
155
+ inline Index SymMatrix::Dim() const
156
+ {
157
+ return owner_space_->Dim();
158
+ }
159
+
160
+ inline SmartPtr<const SymMatrixSpace> SymMatrix::OwnerSymMatrixSpace() const
161
+ {
162
+ return owner_space_;
163
+ }
164
+
165
+ } // namespace Ipopt
166
+
167
+ #endif
@@ -0,0 +1,255 @@
1
+ // Copyright (C) 2004, 2008 International Business Machines and others.
2
+ // All Rights Reserved.
3
+ // This code is published under the Eclipse Public License.
4
+ //
5
+ // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
6
+
7
+ #ifndef __IPSYMSCALEDMATRIX_HPP__
8
+ #define __IPSYMSCALEDMATRIX_HPP__
9
+
10
+ #include "IpUtils.hpp"
11
+ #include "IpSymMatrix.hpp"
12
+
13
+ namespace Ipopt
14
+ {
15
+
16
+ /* forward declarations */
17
+ class SymScaledMatrixSpace;
18
+
19
+ /** Class for a Matrix in conjunction with its scaling factors for
20
+ * row and column scaling.
21
+ *
22
+ * Operations on the matrix are performed using
23
+ * the scaled matrix. You can pull out the pointer to the
24
+ * unscaled matrix for unscaled calculations.
25
+ */
26
+ class IPOPTLIB_EXPORT SymScaledMatrix: public SymMatrix
27
+ {
28
+ public:
29
+ /**@name Constructors / Destructors */
30
+ ///@{
31
+ /** Constructor, taking the owner_space.
32
+ */
33
+ SymScaledMatrix(
34
+ const SymScaledMatrixSpace* owner_space
35
+ );
36
+
37
+ /** Destructor */
38
+ ~SymScaledMatrix();
39
+ ///@}
40
+
41
+ /** Set the unscaled matrix */
42
+ void SetUnscaledMatrix(
43
+ const SmartPtr<const SymMatrix> unscaled_matrix
44
+ );
45
+
46
+ /** Set the unscaled matrix in a non-const version */
47
+ void SetUnscaledMatrixNonConst(
48
+ const SmartPtr<SymMatrix>& unscaled_matrix
49
+ );
50
+
51
+ /** Return the unscaled matrix in const form */
52
+ SmartPtr<const SymMatrix> GetUnscaledMatrix() const;
53
+
54
+ /** Return the unscaled matrix in non-const form */
55
+ SmartPtr<SymMatrix> GetUnscaledMatrixNonConst();
56
+
57
+ /** return the vector for the row and column scaling */
58
+ SmartPtr<const Vector> RowColScaling() const;
59
+
60
+ protected:
61
+ /**@name Methods overloaded from Matrix */
62
+ ///@{
63
+ virtual void MultVectorImpl(
64
+ Number alpha,
65
+ const Vector& x,
66
+ Number beta,
67
+ Vector& y
68
+ ) const;
69
+
70
+ virtual bool HasValidNumbersImpl() const;
71
+
72
+ virtual void ComputeRowAMaxImpl(
73
+ Vector& rows_norms,
74
+ bool init
75
+ ) const;
76
+
77
+ virtual void PrintImpl(
78
+ const Journalist& jnlst,
79
+ EJournalLevel level,
80
+ EJournalCategory category,
81
+ const std::string& name,
82
+ Index indent,
83
+ const std::string& prefix
84
+ ) const;
85
+ ///@}
86
+
87
+ private:
88
+ /**@name Default Compiler Generated Methods
89
+ * (Hidden to avoid implicit creation/calling).
90
+ * These methods are not implemented and
91
+ * we do not want the compiler to implement
92
+ * them for us, so we declare them private
93
+ * and do not define them. This ensures that
94
+ * they will not be implicitly created/called.
95
+ */
96
+ ///@{
97
+ /** Default Constructor */
98
+ SymScaledMatrix();
99
+
100
+ /** Copy Constructor */
101
+ SymScaledMatrix(
102
+ const SymScaledMatrix&
103
+ );
104
+
105
+ /** Default Assignment Operator */
106
+ void operator=(
107
+ const SymScaledMatrix&
108
+ );
109
+ ///@}
110
+
111
+ /** const version of the unscaled matrix */
112
+ SmartPtr<const SymMatrix> matrix_;
113
+
114
+ /** non-const version of the unscaled matrix */
115
+ SmartPtr<SymMatrix> nonconst_matrix_;
116
+
117
+ /** Matrix space stored as a SymScaledMatrixSpace */
118
+ SmartPtr<const SymScaledMatrixSpace> owner_space_;
119
+ };
120
+
121
+ /** This is the matrix space for SymScaledMatrix.
122
+ */
123
+ class IPOPTLIB_EXPORT SymScaledMatrixSpace: public SymMatrixSpace
124
+ {
125
+ public:
126
+ /** @name Constructors / Destructors */
127
+ ///@{
128
+ /** Constructor, given the number of row and columns blocks, as
129
+ * well as the total number of rows and columns.
130
+ */
131
+ SymScaledMatrixSpace(
132
+ const SmartPtr<const Vector>& row_col_scaling,
133
+ bool row_col_scaling_reciprocal,
134
+ const SmartPtr<const SymMatrixSpace>& unscaled_matrix_space
135
+ )
136
+ : SymMatrixSpace(unscaled_matrix_space->Dim()),
137
+ scaling_(row_col_scaling->MakeNewCopy()),
138
+ unscaled_matrix_space_(unscaled_matrix_space)
139
+ {
140
+ if( row_col_scaling_reciprocal )
141
+ {
142
+ scaling_->ElementWiseReciprocal();
143
+ }
144
+ }
145
+
146
+ /** Destructor */
147
+ ~SymScaledMatrixSpace()
148
+ { }
149
+ ///@}
150
+
151
+ /** Method for creating a new matrix of this specific type. */
152
+ SymScaledMatrix* MakeNewSymScaledMatrix(
153
+ bool allocate_unscaled_matrix = false
154
+ ) const
155
+ {
156
+ SymScaledMatrix* ret = new SymScaledMatrix(this);
157
+ if( allocate_unscaled_matrix )
158
+ {
159
+ SmartPtr<SymMatrix> unscaled_matrix = unscaled_matrix_space_->MakeNewSymMatrix();
160
+ ret->SetUnscaledMatrixNonConst(unscaled_matrix);
161
+ }
162
+ return ret;
163
+ }
164
+
165
+ virtual SymMatrix* MakeNewSymMatrix() const
166
+ {
167
+ return MakeNewSymScaledMatrix();
168
+ }
169
+
170
+ virtual Matrix* MakeNew() const
171
+ {
172
+ return MakeNewSymScaledMatrix();
173
+ }
174
+
175
+ /** return the vector for the row and column scaling */
176
+ SmartPtr<const Vector> RowColScaling() const
177
+ {
178
+ return ConstPtr(scaling_);
179
+ }
180
+
181
+ /** return the matrix space for the unscaled matrix */
182
+ SmartPtr<const SymMatrixSpace> UnscaledMatrixSpace() const
183
+ {
184
+ return unscaled_matrix_space_;
185
+ }
186
+
187
+ private:
188
+ /**@name Default Compiler Generated Methods
189
+ * (Hidden to avoid implicit creation/calling).
190
+ * These methods are not implemented and
191
+ * we do not want the compiler to implement
192
+ * them for us, so we declare them private
193
+ * and do not define them. This ensures that
194
+ * they will not be implicitly created/called.
195
+ */
196
+ ///@{
197
+ /** Default constructor */
198
+ SymScaledMatrixSpace();
199
+
200
+ /** Copy Constructor */
201
+ SymScaledMatrixSpace(
202
+ const SymScaledMatrixSpace&
203
+ );
204
+
205
+ /** Default Assignment Operator */
206
+ SymScaledMatrixSpace& operator=(
207
+ const SymScaledMatrixSpace&
208
+ );
209
+ ///@}
210
+
211
+ /** Row scaling vector */
212
+ SmartPtr<Vector> scaling_;
213
+
214
+ /** unscaled matrix space */
215
+ SmartPtr<const SymMatrixSpace> unscaled_matrix_space_;
216
+ };
217
+
218
+ inline void SymScaledMatrix::SetUnscaledMatrix(
219
+ const SmartPtr<const SymMatrix> unscaled_matrix
220
+ )
221
+ {
222
+ matrix_ = unscaled_matrix;
223
+ nonconst_matrix_ = NULL;
224
+ ObjectChanged();
225
+ }
226
+
227
+ inline void SymScaledMatrix::SetUnscaledMatrixNonConst(
228
+ const SmartPtr<SymMatrix>& unscaled_matrix
229
+ )
230
+ {
231
+ nonconst_matrix_ = unscaled_matrix;
232
+ matrix_ = GetRawPtr(unscaled_matrix);
233
+ ObjectChanged();
234
+ }
235
+
236
+ inline SmartPtr<const SymMatrix> SymScaledMatrix::GetUnscaledMatrix() const
237
+ {
238
+ return matrix_;
239
+ }
240
+
241
+ inline SmartPtr<SymMatrix> SymScaledMatrix::GetUnscaledMatrixNonConst()
242
+ {
243
+ DBG_ASSERT(IsValid(nonconst_matrix_));
244
+ ObjectChanged();
245
+ return nonconst_matrix_;
246
+ }
247
+
248
+ inline SmartPtr<const Vector> SymScaledMatrix::RowColScaling() const
249
+ {
250
+ return ConstPtr(owner_space_->RowColScaling());
251
+ }
252
+
253
+ } // namespace Ipopt
254
+
255
+ #endif