/* * Fatrop - A fast trajectory optimization solver * Copyright (C) 2022 - 2024 Lander Vanroye, KU Leuven. All rights reserved. * * This file is part of Fatrop. * * Fatrop is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Fatrop is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Fatrop. If not, see . */ #ifndef FATROPITERATIONDATAINCLUDED #define FATROPITERATIONDATAINCLUDED #include #include #include #include #include "fatrop/auxiliary/Common.hpp" #include namespace fatrop { struct IterationData { fatrop_int iter = 0; double mu = 0.0; double objective = 0.0; double constraint_violation = 0.0; double du_inf = 0.0; fatrop_int ls = 0; double reg = 0.0; double alpha_pr = 0.0; double alpha_du = 0.0; char type = 'x'; bool resto = false; }; class Journaller { public: Journaller(const fatrop_int maxiter, const std::shared_ptr &printer); void print_iterations(bool no_header = false); void push(); void reset(); fatrop_int print_count = 0; std::vector iterationdata; IterationData it_curr; std::shared_ptr printer_; }; } // namespace fatrop #endif // FATROPITERATIONDATAINCLUDED