/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* */ /* This file is part of the HiGHS linear optimization suite */ /* */ /* Written and engineered 2008-2021 at the University of Edinburgh */ /* */ /* Available as open-source under the MIT License */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /**@file presolve/ICrashUtil.h * @brief * @author Julian Hall, Ivet Galabova, Qi Huangfu and Michael Feldmeier */ #ifndef PRESOLVE_ICRASH_UTIL_H_ #define PRESOLVE_ICRASH_UTIL_H_ #include #include "io/HighsIO.h" class HighsLp; struct HighsSolution; void convertToMinimization(HighsLp& lp); bool isEqualityProblem(const HighsLp& lp); double vectorProduct(const std::vector& v1, const std::vector& v2); // Calculates value of A^t*v in result. void muptiplyByTranspose(const HighsLp& lp, const std::vector& v, std::vector& result); void printMinorIterationDetails(const double iteration, const double col, const double old_value, const double update, const double ctx, const std::vector& r, const double quadratic_objective, HighsLogOptions options); bool initialize(const HighsLp& lp, HighsSolution& solution, std::vector& lambda); double minimizeComponentQP(const int col, const double mu, const HighsLp& lp, double& objective, std::vector& residual, HighsSolution& sol); double minimizeComponentIca(const int col, const double mu, const std::vector& lambda, const HighsLp& lp, double& objective, std::vector& residual, HighsSolution& sol); // todo: double minimizeComponentBreakpoints(); void updateResidual(bool piecewise, const HighsLp& lp, const HighsSolution& sol, std::vector& residual); void updateResidualFast(const HighsLp& lp, const HighsSolution& sol, std::vector& residual); // Allows negative residuals void updateResidualIca(const HighsLp& lp, const HighsSolution& sol, std::vector& residual); #endif