casadi 3.6.7__cp35-none-win_amd64.whl → 3.7.0__cp35-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.
- casadi/_casadi.pyd +0 -0
- casadi/blasfeo.lib +0 -0
- casadi/casadi-cli.exe +0 -0
- casadi/casadi.lib +0 -0
- casadi/casadi.py +6070 -3038
- casadi/cbc.exe +0 -0
- casadi/clp.exe +0 -0
- casadi/cmake/casadi-config-version.cmake +1 -1
- casadi/cmake/casadi-targets-release.cmake +5 -5
- casadi/cmake/casadi-targets.cmake +5 -5
- casadi/{lib/cmake/tinyxml2/tinyxml2-config-version.cmake → cmake/ghc_filesystem/ghc_filesystem-config-version.cmake} +19 -10
- casadi/cmake/ghc_filesystem/ghc_filesystem-config.cmake +30 -0
- casadi/cmake/ghc_filesystem/ghc_filesystem-targets.cmake +99 -0
- casadi/cmake/highs/highs-config.cmake +1 -0
- casadi/cmake/highs/highs-targets.cmake +2 -2
- casadi/cmake/libzip/libzip-config-version.cmake +48 -0
- casadi/cmake/libzip/libzip-config.cmake +69 -0
- casadi/cmake/libzip/libzip-targets-release.cmake +19 -0
- casadi/{lib/cmake/tinyxml2/tinyxml2-shared-targets.cmake → cmake/libzip/libzip-targets.cmake} +11 -7
- casadi/cmake/libzip/modules/FindMbedTLS.cmake +141 -0
- casadi/cmake/libzip/modules/FindNettle.cmake +141 -0
- casadi/cmake/libzip/modules/Findzstd.cmake +186 -0
- casadi/daqp.lib +0 -0
- casadi/fatrop.lib +0 -0
- casadi/highs.exe +0 -0
- casadi/highs.lib +0 -0
- casadi/hpipm.lib +0 -0
- casadi/include/casadi/casadi.i +194 -44
- casadi/include/casadi/config.h +11 -11
- casadi/include/casadi/core/archiver.hpp +58 -0
- casadi/include/casadi/core/blazing_spline.hpp +47 -0
- casadi/include/casadi/core/calculus.hpp +57 -2
- casadi/include/casadi/core/casadi_common.hpp +37 -0
- casadi/include/casadi/core/casadi_meta.hpp +15 -0
- casadi/include/casadi/core/casadi_misc.hpp +7 -0
- casadi/include/casadi/core/code_generator.hpp +95 -17
- casadi/include/casadi/core/core.hpp +5 -0
- casadi/include/casadi/core/dae_builder.hpp +283 -141
- casadi/include/casadi/core/dm.hpp +3 -0
- casadi/include/casadi/core/filesystem.hpp +58 -0
- casadi/include/casadi/core/fmu.hpp +51 -16
- casadi/include/casadi/core/function.hpp +19 -0
- casadi/include/casadi/core/generic_matrix.hpp +214 -7
- casadi/include/casadi/core/generic_shared.hpp +318 -0
- casadi/include/casadi/core/generic_shared_impl.hpp +214 -0
- casadi/include/casadi/core/generic_shared_internal.hpp +215 -0
- casadi/include/casadi/core/generic_type.hpp +3 -0
- casadi/include/casadi/core/global_options.hpp +10 -0
- casadi/include/casadi/core/integrator.hpp +41 -7
- casadi/include/casadi/core/matrix_decl.hpp +67 -0
- casadi/include/casadi/core/mx.hpp +63 -2
- casadi/include/casadi/core/options.hpp +6 -3
- casadi/include/casadi/core/optistack.hpp +43 -9
- casadi/include/casadi/core/printable.hpp +8 -0
- casadi/include/casadi/core/resource.hpp +107 -0
- casadi/include/casadi/core/runtime/casadi_blazing_1d_boor_eval.hpp +112 -0
- casadi/include/casadi/core/runtime/casadi_blazing_2d_boor_eval.hpp +311 -0
- casadi/include/casadi/core/runtime/casadi_blazing_3d_boor_eval.hpp +645 -0
- casadi/include/casadi/core/runtime/casadi_blazing_de_boor.hpp +101 -0
- casadi/include/casadi/core/runtime/casadi_nlp.hpp +8 -2
- casadi/include/casadi/core/runtime/casadi_printme.hpp +25 -0
- casadi/include/casadi/core/serializer.hpp +12 -4
- casadi/include/casadi/core/serializing_stream.hpp +3 -0
- casadi/include/casadi/core/shared_object.hpp +73 -161
- casadi/include/casadi/core/sparsity.hpp +13 -1
- casadi/include/casadi/core/sparsity_interface.hpp +19 -1
- casadi/include/casadi/core/sx.hpp +41 -0
- casadi/include/casadi/core/sx_elem.hpp +25 -0
- casadi/include/casadi/core/xml_node.hpp +5 -0
- casadi/include/casadi/doc.i +9703 -6539
- casadi/include/casadi/doc_merged.i +6483 -4447
- casadi/include/casadi/valgrind-casadi.supp +138 -0
- casadi/include/casadi/valgrind-python.supp +2470 -0
- casadi/include/fatrop/blasfeo_wrapper/LinearAlgebraBlasfeo.hpp +4 -1
- casadi/include/ghc/filesystem.hpp +6083 -0
- casadi/include/ghc/fs_fwd.hpp +38 -0
- casadi/include/ghc/fs_impl.hpp +35 -0
- casadi/include/ghc/fs_std.hpp +60 -0
- casadi/include/ghc/fs_std_fwd.hpp +63 -0
- casadi/include/ghc/fs_std_impl.hpp +46 -0
- casadi/include/highs/HConfig.h +7 -5
- casadi/include/highs/Highs.h +260 -86
- casadi/include/highs/filereaderlp/reader.hpp +10 -10
- casadi/include/highs/interfaces/highs_c_api.h +195 -22
- casadi/include/highs/io/Filereader.h +4 -6
- casadi/include/highs/io/FilereaderEms.h +0 -3
- casadi/include/highs/io/FilereaderLp.h +0 -3
- casadi/include/highs/io/FilereaderMps.h +0 -3
- casadi/include/highs/io/HMPSIO.h +1 -4
- casadi/include/highs/io/HMpsFF.h +8 -5
- casadi/include/highs/io/HighsIO.h +10 -5
- casadi/include/highs/io/LoadOptions.h +0 -3
- casadi/include/highs/ipm/IpxSolution.h +0 -3
- casadi/include/highs/ipm/IpxWrapper.h +4 -7
- casadi/include/highs/ipm/ipx/control.h +1 -0
- casadi/include/highs/ipm/ipx/ipx_parameters.h +1 -0
- casadi/include/highs/ipm/ipx/lp_solver.h +3 -2
- casadi/include/highs/ipm/ipx/model.h +7 -3
- casadi/include/highs/lp_data/HConst.h +21 -6
- casadi/include/highs/lp_data/HStruct.h +40 -4
- casadi/include/highs/lp_data/HighsAnalysis.h +0 -3
- casadi/include/highs/lp_data/HighsCallback.h +10 -3
- casadi/include/highs/lp_data/HighsCallbackStruct.h +3 -3
- casadi/include/highs/lp_data/HighsDebug.h +0 -3
- casadi/include/highs/lp_data/HighsIis.h +62 -0
- casadi/include/highs/lp_data/HighsInfo.h +50 -43
- casadi/include/highs/lp_data/HighsInfoDebug.h +0 -3
- casadi/include/highs/lp_data/HighsLp.h +2 -3
- casadi/include/highs/lp_data/HighsLpSolverObject.h +0 -3
- casadi/include/highs/lp_data/HighsLpUtils.h +38 -6
- casadi/include/highs/lp_data/HighsModelUtils.h +21 -18
- casadi/include/highs/lp_data/HighsOptions.h +134 -22
- casadi/include/highs/lp_data/HighsRanging.h +0 -3
- casadi/include/highs/lp_data/HighsSolution.h +10 -3
- casadi/include/highs/lp_data/HighsSolutionDebug.h +0 -3
- casadi/include/highs/lp_data/HighsSolve.h +0 -3
- casadi/include/highs/lp_data/HighsStatus.h +0 -3
- casadi/include/highs/mip/HighsCliqueTable.h +3 -3
- casadi/include/highs/mip/HighsConflictPool.h +0 -3
- casadi/include/highs/mip/HighsCutGeneration.h +13 -3
- casadi/include/highs/mip/HighsCutPool.h +0 -3
- casadi/include/highs/mip/HighsDebugSol.h +0 -3
- casadi/include/highs/mip/HighsDomain.h +16 -4
- casadi/include/highs/mip/HighsDomainChange.h +0 -3
- casadi/include/highs/mip/HighsDynamicRowMatrix.h +0 -3
- casadi/include/highs/mip/HighsGFkSolve.h +3 -6
- casadi/include/highs/mip/HighsImplications.h +29 -5
- casadi/include/highs/mip/HighsLpAggregator.h +0 -3
- casadi/include/highs/mip/HighsLpRelaxation.h +0 -3
- casadi/include/highs/mip/HighsMipAnalysis.h +52 -0
- casadi/include/highs/mip/HighsMipSolver.h +11 -4
- casadi/include/highs/mip/HighsMipSolverData.h +67 -6
- casadi/include/highs/mip/HighsModkSeparator.h +1 -4
- casadi/include/highs/mip/HighsNodeQueue.h +0 -3
- casadi/include/highs/mip/HighsObjectiveFunction.h +0 -3
- casadi/include/highs/mip/HighsPathSeparator.h +1 -4
- casadi/include/highs/mip/HighsPrimalHeuristics.h +7 -5
- casadi/include/highs/mip/HighsPseudocost.h +0 -3
- casadi/include/highs/mip/HighsRedcostFixing.h +0 -3
- casadi/include/highs/mip/HighsSearch.h +0 -3
- casadi/include/highs/mip/HighsSeparation.h +0 -3
- casadi/include/highs/mip/HighsSeparator.h +1 -5
- casadi/include/highs/mip/HighsTableauSeparator.h +1 -4
- casadi/include/highs/mip/HighsTransformedLp.h +0 -3
- casadi/include/highs/mip/MipTimer.h +471 -0
- casadi/include/highs/parallel/HighsBinarySemaphore.h +1 -1
- casadi/include/highs/parallel/HighsCacheAlign.h +1 -1
- casadi/include/highs/parallel/HighsCombinable.h +1 -1
- casadi/include/highs/parallel/HighsMutex.h +1 -1
- casadi/include/highs/parallel/HighsRaceTimer.h +1 -1
- casadi/include/highs/parallel/HighsSchedulerConstants.h +1 -1
- casadi/include/highs/parallel/HighsSplitDeque.h +1 -1
- casadi/include/highs/parallel/HighsTaskExecutor.h +68 -55
- casadi/include/highs/pdlp/CupdlpWrapper.h +18 -7
- casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +2 -3
- casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +16 -6
- casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +10 -4
- casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +3 -3
- casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +6 -6
- casadi/include/highs/pdlp/cupdlp/cupdlp_scaling.h +26 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +11 -11
- casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +8 -4
- casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +253 -172
- casadi/include/highs/presolve/HPresolve.h +50 -10
- casadi/include/highs/presolve/HPresolveAnalysis.h +0 -3
- casadi/include/highs/presolve/HighsPostsolveStack.h +39 -6
- casadi/include/highs/presolve/HighsSymmetry.h +0 -3
- casadi/include/highs/presolve/ICrash.h +0 -3
- casadi/include/highs/presolve/ICrashUtil.h +1 -4
- casadi/include/highs/presolve/ICrashX.h +0 -3
- casadi/include/highs/presolve/PresolveComponent.h +0 -3
- casadi/include/highs/qpsolver/a_asm.hpp +20 -17
- casadi/include/highs/qpsolver/a_quass.hpp +5 -9
- casadi/include/highs/qpsolver/basis.hpp +12 -10
- casadi/include/highs/qpsolver/crashsolution.hpp +4 -3
- casadi/include/highs/qpsolver/dantzigpricing.hpp +3 -2
- casadi/include/highs/qpsolver/devexpricing.hpp +3 -1
- casadi/include/highs/qpsolver/factor.hpp +6 -5
- casadi/include/highs/qpsolver/feasibility_bounded.hpp +31 -29
- casadi/include/highs/qpsolver/feasibility_highs.hpp +94 -70
- casadi/include/highs/qpsolver/gradient.hpp +1 -1
- casadi/include/highs/qpsolver/instance.hpp +1 -1
- casadi/include/highs/qpsolver/pricing.hpp +2 -2
- casadi/include/highs/qpsolver/qpconst.hpp +2 -2
- casadi/include/highs/qpsolver/quass.hpp +2 -2
- casadi/include/highs/qpsolver/runtime.hpp +2 -2
- casadi/include/highs/qpsolver/settings.hpp +20 -8
- casadi/include/highs/qpsolver/steepestedgepricing.hpp +38 -39
- casadi/include/highs/simplex/HApp.h +88 -34
- casadi/include/highs/simplex/HEkk.h +24 -11
- casadi/include/highs/simplex/HEkkDual.h +2 -4
- casadi/include/highs/simplex/HEkkDualRHS.h +0 -3
- casadi/include/highs/simplex/HEkkDualRow.h +0 -3
- casadi/include/highs/simplex/HEkkPrimal.h +1 -5
- casadi/include/highs/simplex/HSimplex.h +0 -3
- casadi/include/highs/simplex/HSimplexDebug.h +0 -3
- casadi/include/highs/simplex/HSimplexNla.h +0 -26
- casadi/include/highs/simplex/HSimplexReport.h +0 -3
- casadi/include/highs/simplex/HighsSimplexAnalysis.h +5 -8
- casadi/include/highs/simplex/SimplexConst.h +10 -11
- casadi/include/highs/simplex/SimplexStruct.h +9 -12
- casadi/include/highs/simplex/SimplexTimer.h +83 -101
- casadi/include/highs/test/DevKkt.h +0 -3
- casadi/include/highs/test/KktCh2.h +0 -3
- casadi/include/highs/util/FactorTimer.h +39 -64
- casadi/include/highs/util/HFactor.h +4 -4
- casadi/include/highs/util/HFactorConst.h +0 -3
- casadi/include/highs/util/HFactorDebug.h +0 -3
- casadi/include/highs/util/HSet.h +0 -3
- casadi/include/highs/util/HVector.h +0 -3
- casadi/include/highs/util/HVectorBase.h +1 -4
- casadi/include/highs/util/HighsCDouble.h +12 -3
- casadi/include/highs/util/HighsComponent.h +0 -3
- casadi/include/highs/util/HighsDataStack.h +0 -3
- casadi/include/highs/util/HighsDisjointSets.h +0 -3
- casadi/include/highs/util/HighsHash.h +9 -12
- casadi/include/highs/util/HighsHashTree.h +15 -11
- casadi/include/highs/util/HighsInt.h +0 -3
- casadi/include/highs/util/HighsIntegers.h +0 -3
- casadi/include/highs/util/HighsLinearSumBounds.h +0 -3
- casadi/include/highs/util/HighsMatrixPic.h +0 -3
- casadi/include/highs/util/HighsMatrixSlice.h +3 -6
- casadi/include/highs/util/HighsMatrixUtils.h +0 -3
- casadi/include/highs/util/HighsMemoryAllocation.h +11 -3
- casadi/include/highs/util/HighsRandom.h +3 -6
- casadi/include/highs/util/HighsRbTree.h +0 -3
- casadi/include/highs/util/HighsSort.h +0 -3
- casadi/include/highs/util/HighsSparseMatrix.h +6 -3
- casadi/include/highs/util/HighsSparseVectorSum.h +0 -3
- casadi/include/highs/util/HighsSplay.h +0 -3
- casadi/include/highs/util/HighsTimer.h +94 -56
- casadi/include/highs/util/HighsUtils.h +10 -3
- casadi/include/highs/util/stringutil.h +14 -12
- casadi/include/licenses/ghc-external/LICENSE +19 -0
- casadi/include/licenses/libz-external/LICENSE +22 -0
- casadi/include/licenses/libz-external/contrib/dotzlib/LICENSE_1_0.txt +23 -0
- casadi/include/licenses/libzip-external/LICENSE +31 -0
- casadi/include/zconf.h +545 -0
- casadi/include/zip.h +528 -0
- casadi/include/zipconf.h +48 -0
- casadi/include/zlib.h +1938 -0
- casadi/ipopt.lib +0 -0
- casadi/lapack.lib +0 -0
- casadi/libCbc-3.dll +0 -0
- casadi/libCbc.dll.a +0 -0
- casadi/libCbcSolver-3.dll +0 -0
- casadi/libCbcSolver.dll.a +0 -0
- casadi/libCgl-1.dll +0 -0
- casadi/libCgl.dll.a +0 -0
- casadi/libClp-1.dll +0 -0
- casadi/libClp.dll.a +0 -0
- casadi/libClpSolver-1.dll +0 -0
- casadi/libClpSolver.dll.a +0 -0
- casadi/libCoinUtils-3.dll +0 -0
- casadi/libCoinUtils.dll.a +0 -0
- casadi/libOsi-1.dll +0 -0
- casadi/libOsi.dll.a +0 -0
- casadi/libOsiCbc-3.dll +0 -0
- casadi/libOsiCbc.dll.a +0 -0
- casadi/libOsiClp-1.dll +0 -0
- casadi/libOsiClp.dll.a +0 -0
- casadi/libOsiCommonTests-1.dll +0 -0
- casadi/libOsiCommonTests.dll.a +0 -0
- casadi/libalpaqa.dll +0 -0
- casadi/libalpaqa.dll.a +0 -0
- casadi/libblasfeo.dll +0 -0
- casadi/libblasfeo.dll.a +0 -0
- casadi/libbonmin-4.dll +0 -0
- casadi/libbonmin.dll.a +0 -0
- casadi/libcasadi-tp-openblas.dll +0 -0
- casadi/libcasadi-tp-openblas.dll.a +0 -0
- casadi/libcasadi.dll +0 -0
- casadi/libcasadi.dll.a +0 -0
- casadi/libcasadi.lib +0 -0
- casadi/libcasadi_archiver_libzip.dll +0 -0
- casadi/libcasadi_archiver_libzip.dll.a +0 -0
- casadi/libcasadi_conic_cbc.dll +0 -0
- casadi/libcasadi_conic_cbc.dll.a +0 -0
- casadi/libcasadi_conic_clp.dll +0 -0
- casadi/libcasadi_conic_clp.dll.a +0 -0
- casadi/libcasadi_conic_cplex.dll +0 -0
- casadi/libcasadi_conic_cplex.dll.a +0 -0
- casadi/libcasadi_conic_daqp.dll +0 -0
- casadi/libcasadi_conic_daqp.dll.a +0 -0
- casadi/libcasadi_conic_fatrop.dll +0 -0
- casadi/libcasadi_conic_fatrop.dll.a +0 -0
- casadi/libcasadi_conic_gurobi.dll +0 -0
- casadi/libcasadi_conic_gurobi.dll.a +0 -0
- casadi/libcasadi_conic_highs.dll +0 -0
- casadi/libcasadi_conic_highs.dll.a +0 -0
- casadi/libcasadi_conic_hpipm.dll +0 -0
- casadi/libcasadi_conic_hpipm.dll.a +0 -0
- casadi/libcasadi_conic_ipqp.dll +0 -0
- casadi/libcasadi_conic_ipqp.dll.a +0 -0
- casadi/libcasadi_conic_nlpsol.dll +0 -0
- casadi/libcasadi_conic_nlpsol.dll.a +0 -0
- casadi/libcasadi_conic_osqp.dll +0 -0
- casadi/libcasadi_conic_osqp.dll.a +0 -0
- casadi/libcasadi_conic_proxqp.dll +0 -0
- casadi/libcasadi_conic_proxqp.dll.a +0 -0
- casadi/libcasadi_conic_qpoases.dll +0 -0
- casadi/libcasadi_conic_qpoases.dll.a +0 -0
- casadi/libcasadi_conic_qrqp.dll +0 -0
- casadi/libcasadi_conic_qrqp.dll.a +0 -0
- casadi/libcasadi_conic_superscs.dll +0 -0
- casadi/libcasadi_conic_superscs.dll.a +0 -0
- casadi/libcasadi_filesystem_ghc.dll +0 -0
- casadi/libcasadi_filesystem_ghc.dll.a +0 -0
- casadi/libcasadi_importer_shell.dll +0 -0
- casadi/libcasadi_importer_shell.dll.a +0 -0
- casadi/libcasadi_integrator_collocation.dll +0 -0
- casadi/libcasadi_integrator_collocation.dll.a +0 -0
- casadi/libcasadi_integrator_cvodes.dll +0 -0
- casadi/libcasadi_integrator_cvodes.dll.a +0 -0
- casadi/libcasadi_integrator_idas.dll +0 -0
- casadi/libcasadi_integrator_idas.dll.a +0 -0
- casadi/libcasadi_integrator_rk.dll +0 -0
- casadi/libcasadi_integrator_rk.dll.a +0 -0
- casadi/libcasadi_interpolant_bspline.dll +0 -0
- casadi/libcasadi_interpolant_bspline.dll.a +0 -0
- casadi/libcasadi_interpolant_linear.dll +0 -0
- casadi/libcasadi_interpolant_linear.dll.a +0 -0
- casadi/libcasadi_linsol_csparse.dll +0 -0
- casadi/libcasadi_linsol_csparse.dll.a +0 -0
- casadi/libcasadi_linsol_csparsecholesky.dll +0 -0
- casadi/libcasadi_linsol_csparsecholesky.dll.a +0 -0
- casadi/libcasadi_linsol_lapacklu.dll +0 -0
- casadi/libcasadi_linsol_lapacklu.dll.a +0 -0
- casadi/libcasadi_linsol_lapackqr.dll +0 -0
- casadi/libcasadi_linsol_lapackqr.dll.a +0 -0
- casadi/libcasadi_linsol_ldl.dll +0 -0
- casadi/libcasadi_linsol_ldl.dll.a +0 -0
- casadi/libcasadi_linsol_lsqr.dll +0 -0
- casadi/libcasadi_linsol_lsqr.dll.a +0 -0
- casadi/libcasadi_linsol_ma27.dll +0 -0
- casadi/libcasadi_linsol_ma27.dll.a +0 -0
- casadi/libcasadi_linsol_mumps.dll +0 -0
- casadi/libcasadi_linsol_mumps.dll.a +0 -0
- casadi/libcasadi_linsol_qr.dll +0 -0
- casadi/libcasadi_linsol_qr.dll.a +0 -0
- casadi/libcasadi_linsol_symbolicqr.dll +0 -0
- casadi/libcasadi_linsol_symbolicqr.dll.a +0 -0
- casadi/libcasadi_linsol_tridiag.dll +0 -0
- casadi/libcasadi_linsol_tridiag.dll.a +0 -0
- casadi/libcasadi_nlpsol_alpaqa.dll +0 -0
- casadi/libcasadi_nlpsol_alpaqa.dll.a +0 -0
- casadi/libcasadi_nlpsol_ampl.dll +0 -0
- casadi/libcasadi_nlpsol_ampl.dll.a +0 -0
- casadi/libcasadi_nlpsol_blocksqp.dll +0 -0
- casadi/libcasadi_nlpsol_blocksqp.dll.a +0 -0
- casadi/libcasadi_nlpsol_bonmin.dll +0 -0
- casadi/libcasadi_nlpsol_bonmin.dll.a +0 -0
- casadi/libcasadi_nlpsol_fatrop.dll +0 -0
- casadi/libcasadi_nlpsol_fatrop.dll.a +0 -0
- casadi/libcasadi_nlpsol_feasiblesqpmethod.dll +0 -0
- casadi/libcasadi_nlpsol_feasiblesqpmethod.dll.a +0 -0
- casadi/libcasadi_nlpsol_ipopt.dll +0 -0
- casadi/libcasadi_nlpsol_ipopt.dll.a +0 -0
- casadi/libcasadi_nlpsol_knitro.dll +0 -0
- casadi/libcasadi_nlpsol_knitro.dll.a +0 -0
- casadi/libcasadi_nlpsol_madnlp.dll +0 -0
- casadi/libcasadi_nlpsol_madnlp.dll.a +0 -0
- casadi/libcasadi_nlpsol_qrsqp.dll +0 -0
- casadi/libcasadi_nlpsol_qrsqp.dll.a +0 -0
- casadi/libcasadi_nlpsol_scpgen.dll +0 -0
- casadi/libcasadi_nlpsol_scpgen.dll.a +0 -0
- casadi/libcasadi_nlpsol_sleqp.dll +0 -0
- casadi/libcasadi_nlpsol_sleqp.dll.a +0 -0
- casadi/libcasadi_nlpsol_snopt.dll +0 -0
- casadi/libcasadi_nlpsol_snopt.dll.a +0 -0
- casadi/libcasadi_nlpsol_sqpmethod.dll +0 -0
- casadi/libcasadi_nlpsol_sqpmethod.dll.a +0 -0
- casadi/libcasadi_nlpsol_worhp.dll +0 -0
- casadi/libcasadi_nlpsol_worhp.dll.a +0 -0
- casadi/libcasadi_rootfinder_fast_newton.dll +0 -0
- casadi/libcasadi_rootfinder_fast_newton.dll.a +0 -0
- casadi/libcasadi_rootfinder_kinsol.dll +0 -0
- casadi/libcasadi_rootfinder_kinsol.dll.a +0 -0
- casadi/libcasadi_rootfinder_newton.dll +0 -0
- casadi/libcasadi_rootfinder_newton.dll.a +0 -0
- casadi/libcasadi_rootfinder_nlpsol.dll +0 -0
- casadi/libcasadi_rootfinder_nlpsol.dll.a +0 -0
- casadi/libcasadi_sundials_common.dll +0 -0
- casadi/libcasadi_sundials_common.dll.a +0 -0
- casadi/libcasadi_xmlfile_tinyxml.dll +0 -0
- casadi/libcasadi_xmlfile_tinyxml.dll.a +0 -0
- casadi/libcoinmetis-2.dll +0 -0
- casadi/libcoinmetis.dll.a +0 -0
- casadi/libcoinmumps-3.dll +0 -0
- casadi/libcoinmumps.dll.a +0 -0
- casadi/libcplex_adaptor.dll +0 -0
- casadi/libdaqp.dll +0 -0
- casadi/libdaqp.dll.a +0 -0
- casadi/libdl.dll +0 -0
- casadi/libdl.dll.a +0 -0
- casadi/libfatrop.dll +0 -0
- casadi/libfatrop.dll.a +0 -0
- casadi/libgurobi_adaptor.dll +0 -0
- casadi/libhighs.dll +0 -0
- casadi/libhighs.dll.a +0 -0
- casadi/libhpipm.dll +0 -0
- casadi/libhpipm.dll.a +0 -0
- casadi/libipopt-3.dll +0 -0
- casadi/libipopt.dll.a +0 -0
- casadi/libmatlab_ipc.dll +0 -0
- casadi/libmatlab_ipc.dll.a +0 -0
- casadi/libosqp.dll +0 -0
- casadi/libosqp.dll.a +0 -0
- casadi/libqdldl.dll +0 -0
- casadi/libqdldl.dll.a +0 -0
- casadi/libsipopt-3.dll +0 -0
- casadi/libsipopt.dll.a +0 -0
- casadi/libsleqp.dll +0 -0
- casadi/libsleqp.dll.a +0 -0
- casadi/libtrlib.dll +0 -0
- casadi/libtrlib.dll.a +0 -0
- casadi/libzip.a +0 -0
- casadi/libzlib.dll +0 -0
- casadi/libzlib.dll.a +0 -0
- casadi/libzlibstatic.a +0 -0
- casadi/matlab_ipc.lib +0 -0
- casadi/osqp.lib +0 -0
- casadi/pkgconfig/casadi.pc +1 -1
- casadi/pkgconfig/highs.pc +1 -1
- casadi/pkgconfig/libzip.pc +14 -0
- casadi/sleqp.lib +0 -0
- casadi/spral_ssids.exe +0 -0
- casadi/std-e414687e404555e5.dll +0 -0
- casadi/tools/__init__.py +3 -1
- casadi/tools/graph/graph.py +1 -1
- casadi/tools/structure3.py +2 -2
- {casadi-3.6.7.dist-info → casadi-3.7.0.dist-info}/METADATA +1 -1
- {casadi-3.6.7.dist-info → casadi-3.7.0.dist-info}/RECORD +434 -393
- casadi/bin/libtinyxml2.dll +0 -0
- casadi/include/tinyxml2.h +0 -2380
- casadi/lib/cmake/tinyxml2/tinyxml2-config.cmake +0 -57
- casadi/lib/cmake/tinyxml2/tinyxml2-shared-targets-release.cmake +0 -19
- casadi/lib/libtinyxml2.dll.a +0 -0
- casadi/lib/pkgconfig/tinyxml2.pc +0 -10
- casadi/libtinyxml2.dll +0 -0
- casadi/tools/structure.py +0 -1446
- {casadi-3.6.7.dist-info → casadi-3.7.0.dist-info}/WHEEL +0 -0
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -113,17 +110,20 @@ class HighsHashTree {
|
|
113
110
|
// to do a linear scan and key comparisons at all
|
114
111
|
Occupation occupation;
|
115
112
|
int size;
|
116
|
-
uint64_t
|
117
|
-
Entry
|
113
|
+
std::array<uint64_t, capacity() + 1> hashes;
|
114
|
+
std::array<Entry, capacity()> entries;
|
118
115
|
|
119
116
|
InnerLeaf() : occupation(0), size(0) { hashes[0] = 0; }
|
120
117
|
|
121
118
|
template <int kOtherSize>
|
122
119
|
InnerLeaf(InnerLeaf<kOtherSize>&& other) {
|
123
120
|
assert(other.size <= capacity());
|
124
|
-
|
125
|
-
|
126
|
-
std::
|
121
|
+
occupation = other.occupation;
|
122
|
+
size = other.size;
|
123
|
+
std::copy(other.hashes.cbegin(),
|
124
|
+
std::next(other.hashes.cbegin(), size + 1), hashes.begin());
|
125
|
+
std::move(other.entries.begin(), std::next(other.entries.begin(), size),
|
126
|
+
entries.begin());
|
127
127
|
}
|
128
128
|
|
129
129
|
int get_num_entries() const { return size; }
|
@@ -190,7 +190,9 @@ class HighsHashTree {
|
|
190
190
|
|
191
191
|
--size;
|
192
192
|
if (pos < size) {
|
193
|
-
std::move(
|
193
|
+
std::move(std::next(entries.begin(), pos + 1),
|
194
|
+
std::next(entries.begin(), size + 1),
|
195
|
+
std::next(entries.begin(), pos));
|
194
196
|
memmove(&hashes[pos], &hashes[pos + 1],
|
195
197
|
sizeof(hashes[0]) * (size - pos));
|
196
198
|
if (get_first_chunk16(hashes[startPos]) != hashChunk)
|
@@ -254,7 +256,9 @@ class HighsHashTree {
|
|
254
256
|
|
255
257
|
void move_backward(const int& first, const int& last) {
|
256
258
|
// move elements backwards
|
257
|
-
std::move_backward(
|
259
|
+
std::move_backward(std::next(entries.begin(), first),
|
260
|
+
std::next(entries.begin(), last),
|
261
|
+
std::next(entries.begin(), last + 1));
|
258
262
|
memmove(&hashes[first + 1], &hashes[first],
|
259
263
|
sizeof(hashes[0]) * (last - first));
|
260
264
|
}
|
@@ -836,7 +840,7 @@ class HighsHashTree {
|
|
836
840
|
hash, hashPos + 1, entry);
|
837
841
|
} else {
|
838
842
|
// there are many collisions, determine the exact sizes first
|
839
|
-
uint8_t
|
843
|
+
std::array<uint8_t, InnerLeaf<4>::capacity() + 1> sizes = {};
|
840
844
|
sizes[occupation.num_set_until(hashChunk) - 1] += 1;
|
841
845
|
for (int i = 0; i < leaf->size; ++i) {
|
842
846
|
int pos =
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -13,15 +10,15 @@
|
|
13
10
|
* underlying matrix storage formats
|
14
11
|
*/
|
15
12
|
|
13
|
+
#ifndef UTIL_HIGHS_MATRIX_SLICE_H_
|
14
|
+
#define UTIL_HIGHS_MATRIX_SLICE_H_
|
15
|
+
|
16
16
|
#include <cstddef>
|
17
17
|
#include <iterator>
|
18
18
|
#include <vector>
|
19
19
|
|
20
20
|
#include "util/HighsInt.h"
|
21
21
|
|
22
|
-
#ifndef UTIL_HIGHS_MATRIX_SLICE_H_
|
23
|
-
#define UTIL_HIGHS_MATRIX_SLICE_H_
|
24
|
-
|
25
22
|
template <typename StorageFormat>
|
26
23
|
class HighsMatrixSlice;
|
27
24
|
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -41,6 +38,17 @@ bool okReserve(std::vector<T>& use_vector, HighsInt dimension) {
|
|
41
38
|
return true;
|
42
39
|
}
|
43
40
|
|
41
|
+
template <typename T, typename T2>
|
42
|
+
bool okReserve(std::unordered_map<T, T2>& use_map, HighsInt dimension) {
|
43
|
+
try {
|
44
|
+
use_map.reserve(dimension);
|
45
|
+
} catch (const std::bad_alloc& e) {
|
46
|
+
printf("HighsMemoryAllocation::okReserve fails with %s\n", e.what());
|
47
|
+
return false;
|
48
|
+
}
|
49
|
+
return true;
|
50
|
+
}
|
51
|
+
|
44
52
|
template <typename T>
|
45
53
|
bool okAssign(std::vector<T>& use_vector, HighsInt dimension, T value = T{}) {
|
46
54
|
try {
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -169,7 +166,7 @@ class HighsRandom {
|
|
169
166
|
// or the 64bit version
|
170
167
|
if (sup <= 1) return 0;
|
171
168
|
int nbits = HighsHashHelpers::log2i(HighsUInt(sup - 1)) + 1;
|
172
|
-
return drawUniform(HighsUInt(sup), nbits);
|
169
|
+
return static_cast<HighsInt>(drawUniform(HighsUInt(sup), nbits));
|
173
170
|
}
|
174
171
|
|
175
172
|
/**
|
@@ -192,7 +189,7 @@ class HighsRandom {
|
|
192
189
|
static_cast<uint32_t>(state), state >> 32) >>
|
193
190
|
(64 - 26));
|
194
191
|
// compute (1+output) / (2^52+1) which is strictly between 0 and 1
|
195
|
-
return (1 + output) * 2.2204460492503125e-16;
|
192
|
+
return static_cast<double>(1 + output) * 2.2204460492503125e-16;
|
196
193
|
}
|
197
194
|
|
198
195
|
/**
|
@@ -209,7 +206,7 @@ class HighsRandom {
|
|
209
206
|
32);
|
210
207
|
// compute output / (2^53-1) in double precision which is in the closed
|
211
208
|
// interval [0,1]
|
212
|
-
return output * 1.1102230246251566e-16;
|
209
|
+
return static_cast<double>(output) * 1.1102230246251566e-16;
|
213
210
|
}
|
214
211
|
|
215
212
|
/**
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -66,6 +63,9 @@ class HighsSparseMatrix {
|
|
66
63
|
void deleteRows(const HighsIndexCollection& index_collection);
|
67
64
|
HighsStatus assessDimensions(const HighsLogOptions& log_options,
|
68
65
|
const std::string matrix_name);
|
66
|
+
HighsStatus assessStart(const HighsLogOptions& log_options);
|
67
|
+
HighsStatus assessIndexBounds(const HighsLogOptions& log_options);
|
68
|
+
|
69
69
|
HighsStatus assess(const HighsLogOptions& log_options,
|
70
70
|
const std::string matrix_name,
|
71
71
|
const double small_matrix_value,
|
@@ -94,6 +94,9 @@ class HighsSparseMatrix {
|
|
94
94
|
void productTranspose(vector<double>& result, const vector<double>& x) const;
|
95
95
|
void productQuad(vector<double>& result, const vector<double>& x,
|
96
96
|
const HighsInt debug_report = kDebugReportOff) const;
|
97
|
+
void productTransposeQuad(
|
98
|
+
vector<double>& result_value, const vector<double>& x,
|
99
|
+
const HighsInt debug_report = kDebugReportOff) const;
|
97
100
|
void productTransposeQuad(
|
98
101
|
vector<double>& result_value, vector<HighsInt>& result_index,
|
99
102
|
const HVector& x, const HighsInt debug_report = kDebugReportOff) const;
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -24,6 +21,10 @@
|
|
24
21
|
|
25
22
|
#include "util/HighsInt.h"
|
26
23
|
|
24
|
+
const HighsInt check_clock = -46;
|
25
|
+
const HighsInt ipm_clock = 9;
|
26
|
+
const bool kNoClockCalls = false;
|
27
|
+
|
27
28
|
/**
|
28
29
|
* @brief Clock record structure
|
29
30
|
*/
|
@@ -33,7 +34,6 @@ struct HighsClockRecord {
|
|
33
34
|
double start;
|
34
35
|
double time;
|
35
36
|
std::string name;
|
36
|
-
std::string ch3_name;
|
37
37
|
};
|
38
38
|
*/
|
39
39
|
/**
|
@@ -43,28 +43,25 @@ class HighsTimer {
|
|
43
43
|
public:
|
44
44
|
HighsTimer() {
|
45
45
|
num_clock = 0;
|
46
|
-
HighsInt i_clock = clock_def("Run HiGHS"
|
46
|
+
HighsInt i_clock = clock_def("Run HiGHS");
|
47
47
|
assert(i_clock == 0);
|
48
|
-
run_highs_clock = i_clock;
|
49
48
|
|
50
|
-
presolve_clock = clock_def("Presolve"
|
51
|
-
solve_clock = clock_def("Solve"
|
52
|
-
postsolve_clock = clock_def("Postsolve"
|
49
|
+
presolve_clock = clock_def("Presolve");
|
50
|
+
solve_clock = clock_def("Solve");
|
51
|
+
postsolve_clock = clock_def("Postsolve");
|
53
52
|
}
|
54
53
|
|
55
54
|
/**
|
56
55
|
* @brief Define a clock
|
57
56
|
*/
|
58
57
|
HighsInt clock_def(
|
59
|
-
const char* name
|
60
|
-
|
61
|
-
) {
|
58
|
+
const char* name) //!< Full-length name (<=16 characters) for the clock
|
59
|
+
{
|
62
60
|
HighsInt i_clock = num_clock;
|
63
61
|
clock_num_call.push_back(0);
|
64
62
|
clock_start.push_back(initial_clock_start);
|
65
63
|
clock_time.push_back(0);
|
66
64
|
clock_names.push_back(name);
|
67
|
-
clock_ch3_names.push_back(ch3_name);
|
68
65
|
num_clock++;
|
69
66
|
return i_clock;
|
70
67
|
}
|
@@ -79,7 +76,6 @@ class HighsTimer {
|
|
79
76
|
x_clock.start = 0;
|
80
77
|
x_clock.time = 0;
|
81
78
|
x_clock.name = "";
|
82
|
-
x_clock.ch3_name = "";
|
83
79
|
}
|
84
80
|
*/
|
85
81
|
|
@@ -104,13 +100,11 @@ class HighsTimer {
|
|
104
100
|
this->clock_num_call.clear();
|
105
101
|
this->clock_start.clear();
|
106
102
|
this->clock_names.clear();
|
107
|
-
|
108
|
-
HighsInt i_clock = clock_def("Run HiGHS", "RnH");
|
103
|
+
HighsInt i_clock = clock_def("Run HiGHS");
|
109
104
|
assert(i_clock == 0);
|
110
|
-
this->
|
111
|
-
this->
|
112
|
-
this->
|
113
|
-
this->postsolve_clock = clock_def("Postsolve", "Pst");
|
105
|
+
this->presolve_clock = clock_def("Presolve");
|
106
|
+
this->solve_clock = clock_def("Solve");
|
107
|
+
this->postsolve_clock = clock_def("Postsolve");
|
114
108
|
}
|
115
109
|
|
116
110
|
/**
|
@@ -124,47 +118,86 @@ class HighsTimer {
|
|
124
118
|
}
|
125
119
|
}
|
126
120
|
|
121
|
+
/**
|
122
|
+
* @brief write all clocks
|
123
|
+
*/
|
124
|
+
void writeAllClocks() {
|
125
|
+
for (HighsInt i = 0; i < num_clock; i++)
|
126
|
+
if (clock_num_call[i])
|
127
|
+
printf("Time %7.5f for %9d calls of clock %3d: %s\n", clock_time[i],
|
128
|
+
int(clock_num_call[i]), int(i), clock_names[i].c_str());
|
129
|
+
}
|
130
|
+
|
127
131
|
/**
|
128
132
|
* @brief Start a clock
|
129
133
|
*/
|
130
|
-
void start(HighsInt i_clock //!< Index of the clock to be started
|
134
|
+
void start(const HighsInt i_clock = 0 //!< Index of the clock to be started
|
131
135
|
) {
|
132
136
|
assert(i_clock >= 0);
|
133
137
|
assert(i_clock < num_clock);
|
134
138
|
// Check that the clock's been stopped. It should be set to
|
135
139
|
// getWallTime() >= 0 (or initialised to initial_clock_start > 0)
|
136
|
-
|
140
|
+
const bool clock_stopped = clock_start[i_clock] > 0;
|
141
|
+
if (i_clock != ipm_clock) {
|
142
|
+
// Sometimes the analytic centre clock isn't stopped - because
|
143
|
+
// it runs on a separate thread. Although it would be good to
|
144
|
+
// understand this better, for now don't assert that this clock
|
145
|
+
// has stopped
|
146
|
+
if (!clock_stopped) {
|
147
|
+
printf("Clock %d - %s - still running\n", int(i_clock),
|
148
|
+
clock_names[i_clock].c_str());
|
149
|
+
}
|
150
|
+
assert(clock_stopped);
|
151
|
+
}
|
137
152
|
// Set the start to be the negation of the WallTick to check that
|
138
153
|
// the clock's been started when it's next stopped
|
154
|
+
if (i_clock == check_clock) {
|
155
|
+
printf("HighsTimer: starting clock %d: %s\n", int(check_clock),
|
156
|
+
this->clock_names[check_clock].c_str());
|
157
|
+
}
|
139
158
|
clock_start[i_clock] = -getWallTime();
|
140
159
|
}
|
141
160
|
|
142
161
|
/**
|
143
162
|
* @brief Stop a clock
|
144
163
|
*/
|
145
|
-
void stop(HighsInt i_clock //!< Index of the clock to be stopped
|
164
|
+
void stop(const HighsInt i_clock = 0 //!< Index of the clock to be stopped
|
146
165
|
) {
|
147
166
|
assert(i_clock >= 0);
|
148
167
|
assert(i_clock < num_clock);
|
149
168
|
// Check that the clock's been started. It should be set to
|
150
169
|
// -getWallTime() <= 0
|
151
|
-
|
170
|
+
const bool clock_stopped = clock_start[i_clock] > 0;
|
171
|
+
if (clock_stopped) {
|
172
|
+
printf("Clock %d - %s - not running\n", int(i_clock),
|
173
|
+
clock_names[i_clock].c_str());
|
174
|
+
}
|
175
|
+
assert(!clock_stopped);
|
152
176
|
double wall_time = getWallTime();
|
153
177
|
double callClockTimes = wall_time + clock_start[i_clock];
|
154
178
|
clock_time[i_clock] += callClockTimes;
|
155
179
|
clock_num_call[i_clock]++;
|
156
180
|
// Set the start to be the WallTick to check that the clock's been
|
157
181
|
// stopped when it's next started
|
182
|
+
if (i_clock == check_clock) {
|
183
|
+
printf("HighsTimer: stopping clock %d: %s\n", int(check_clock),
|
184
|
+
this->clock_names[check_clock].c_str());
|
185
|
+
}
|
158
186
|
clock_start[i_clock] = wall_time;
|
159
187
|
}
|
160
188
|
|
161
189
|
/**
|
162
190
|
* @brief Read the time of a clock
|
163
191
|
*/
|
164
|
-
double read(HighsInt i_clock //!< Index of the clock to be read
|
165
|
-
) {
|
192
|
+
double read(const HighsInt i_clock = 0 //!< Index of the clock to be read
|
193
|
+
) const {
|
166
194
|
assert(i_clock >= 0);
|
167
195
|
assert(i_clock < num_clock);
|
196
|
+
if (i_clock == check_clock) {
|
197
|
+
std::string clock_name = this->clock_names[check_clock];
|
198
|
+
printf("HighsTimer: reading clock %d: %s\n", int(check_clock),
|
199
|
+
clock_name.c_str());
|
200
|
+
}
|
168
201
|
double read_time;
|
169
202
|
if (clock_start[i_clock] < 0) {
|
170
203
|
// The clock's been started, so find the current time
|
@@ -180,32 +213,28 @@ class HighsTimer {
|
|
180
213
|
/**
|
181
214
|
* @brief Return whether a clock is running
|
182
215
|
*/
|
183
|
-
bool running(HighsInt i_clock //!< Index of the clock to be read
|
216
|
+
bool running(const HighsInt i_clock = 0 //!< Index of the clock to be read
|
184
217
|
) {
|
185
218
|
assert(i_clock >= 0);
|
186
219
|
assert(i_clock < num_clock);
|
220
|
+
if (i_clock == check_clock) {
|
221
|
+
printf("HighsTimer: querying clock %d: %s - with start record %g\n",
|
222
|
+
int(check_clock), this->clock_names[check_clock].c_str(),
|
223
|
+
clock_start[i_clock]);
|
224
|
+
}
|
187
225
|
return clock_start[i_clock] < 0;
|
188
226
|
}
|
189
227
|
|
190
228
|
/**
|
191
|
-
* @brief
|
229
|
+
* @brief Return number of calls to a clock
|
192
230
|
*/
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
/**
|
201
|
-
* @brief Read the RunHighs clock
|
202
|
-
*/
|
203
|
-
double readRunHighsClock() { return read(run_highs_clock); }
|
204
|
-
|
205
|
-
/**
|
206
|
-
* @brief Test whether the RunHighs clock is running
|
207
|
-
*/
|
208
|
-
bool runningRunHighsClock() { return running(run_highs_clock); }
|
231
|
+
HighsInt numCall(
|
232
|
+
const HighsInt i_clock = 0 //!< Index of the clock to be read
|
233
|
+
) {
|
234
|
+
assert(i_clock >= 0);
|
235
|
+
assert(i_clock < num_clock);
|
236
|
+
return clock_num_call[i_clock];
|
237
|
+
}
|
209
238
|
|
210
239
|
/**
|
211
240
|
* @brief Report timing information for the clock indices in the list
|
@@ -230,7 +259,7 @@ class HighsTimer {
|
|
230
259
|
//!< before an individual clock is reported
|
231
260
|
) {
|
232
261
|
size_t num_clock_list_entries = clock_list.size();
|
233
|
-
double current_run_highs_time =
|
262
|
+
double current_run_highs_time = read();
|
234
263
|
bool non_null_report = false;
|
235
264
|
|
236
265
|
// Check validity of the clock list and check no clocks are still
|
@@ -244,7 +273,12 @@ class HighsTimer {
|
|
244
273
|
assert(iClock < num_clock);
|
245
274
|
// Check that the clock's not still running. It should be set to
|
246
275
|
// getWallTime() >= 0 (or initialised to initial_clock_start > 0)
|
247
|
-
|
276
|
+
const bool clock_stopped = clock_start[iClock] > 0;
|
277
|
+
if (!clock_stopped) {
|
278
|
+
printf("Clock %d - %s - still running\n", int(iClock),
|
279
|
+
clock_names[iClock].c_str());
|
280
|
+
}
|
281
|
+
assert(clock_stopped);
|
248
282
|
sum_calls += clock_num_call[iClock];
|
249
283
|
sum_clock_times += clock_time[iClock];
|
250
284
|
}
|
@@ -265,7 +299,7 @@ class HighsTimer {
|
|
265
299
|
non_null_report = true;
|
266
300
|
|
267
301
|
// Report one line per clock, the time, number of calls and time per call
|
268
|
-
printf("%s-time Operation : Time ( Total",
|
302
|
+
printf("\n%s-time Operation : Time ( Total",
|
269
303
|
grep_stamp);
|
270
304
|
if (ideal_sum_time > 0) printf("; Ideal");
|
271
305
|
printf("; Local): Calls Time/Call\n");
|
@@ -278,7 +312,11 @@ class HighsTimer {
|
|
278
312
|
double time_per_call = 0;
|
279
313
|
if (clock_num_call[iClock] > 0) {
|
280
314
|
time_per_call = time / clock_num_call[iClock];
|
281
|
-
|
315
|
+
const bool report_time =
|
316
|
+
tolerance_percent_report > 0
|
317
|
+
? percent_sum_clock_times[i] >= tolerance_percent_report
|
318
|
+
: clock_num_call[iClock] > 0;
|
319
|
+
if (report_time) {
|
282
320
|
printf("%s-time %-32s: %11.4e (%5.1f%%", grep_stamp,
|
283
321
|
clock_names[iClock].c_str(), time, percent_run_highs);
|
284
322
|
if (ideal_sum_time > 0) {
|
@@ -309,11 +347,14 @@ class HighsTimer {
|
|
309
347
|
/**
|
310
348
|
* @brief Return the current wall-clock time
|
311
349
|
*/
|
312
|
-
double getWallTime() {
|
350
|
+
double getWallTime() const {
|
313
351
|
using namespace std::chrono;
|
314
|
-
|
315
|
-
|
316
|
-
|
352
|
+
const double wall_time = kNoClockCalls
|
353
|
+
? 0
|
354
|
+
: duration_cast<duration<double> >(
|
355
|
+
wall_clock::now().time_since_epoch())
|
356
|
+
.count();
|
357
|
+
return wall_time;
|
317
358
|
}
|
318
359
|
|
319
360
|
virtual ~HighsTimer() = default;
|
@@ -331,10 +372,7 @@ class HighsTimer {
|
|
331
372
|
std::vector<double> clock_start;
|
332
373
|
std::vector<double> clock_time;
|
333
374
|
std::vector<std::string> clock_names;
|
334
|
-
|
335
|
-
// The index of the RunHighsClock - should always be 0
|
336
|
-
HighsInt run_highs_clock;
|
337
|
-
// Fundamental Highs clocks
|
375
|
+
// Fundamental clocks
|
338
376
|
HighsInt presolve_clock;
|
339
377
|
HighsInt solve_clock;
|
340
378
|
HighsInt postsolve_clock;
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -207,4 +204,14 @@ void highsAssert(const bool assert_condition, const std::string message = "");
|
|
207
204
|
// If pause_condition is true, then keyboard input is required. Allows
|
208
205
|
// breakpoints in VScode where optimization might prevent them.
|
209
206
|
bool highsPause(const bool pause_condition, const std::string message = "");
|
207
|
+
|
208
|
+
// Utility for computing fractional part
|
209
|
+
template <typename T>
|
210
|
+
inline T fractionality(T input, T* intval = nullptr) {
|
211
|
+
using std::abs;
|
212
|
+
using std::round;
|
213
|
+
T val = round(input);
|
214
|
+
if (intval != nullptr) *intval = val;
|
215
|
+
return abs(input - val);
|
216
|
+
}
|
210
217
|
#endif // UTIL_HIGHSUTILS_H_
|
@@ -2,9 +2,6 @@
|
|
2
2
|
/* */
|
3
3
|
/* This file is part of the HiGHS linear optimization suite */
|
4
4
|
/* */
|
5
|
-
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
|
6
|
-
/* Leona Gottwald and Michael Feldmeier */
|
7
|
-
/* */
|
8
5
|
/* Available as open-source under the MIT License */
|
9
6
|
/* */
|
10
7
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
@@ -26,15 +23,20 @@ void strTrim(char* str);
|
|
26
23
|
// std::string& str_tolower(std::string s);
|
27
24
|
|
28
25
|
void tolower(std::string& str);
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
std::string&
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
26
|
+
void toupper(std::string& str);
|
27
|
+
|
28
|
+
const std::string default_non_chars = "\t\n\v\f\r ";
|
29
|
+
std::string& ltrim(std::string& str,
|
30
|
+
const std::string& chars = default_non_chars);
|
31
|
+
std::string& rtrim(std::string& str,
|
32
|
+
const std::string& chars = default_non_chars);
|
33
|
+
std::string& trim(std::string& str,
|
34
|
+
const std::string& chars = default_non_chars);
|
35
|
+
|
36
|
+
bool is_empty(std::string& str, const std::string& chars = default_non_chars);
|
37
|
+
bool is_empty(char c, const std::string& chars = default_non_chars);
|
38
|
+
bool is_end(std::string& str, size_t end,
|
39
|
+
const std::string& chars = default_non_chars);
|
38
40
|
|
39
41
|
// todo: replace with pair of references rather than string ret value to avoid
|
40
42
|
// copy and also using function below. or do it properly with iterators.
|