yat/utility/MultiMinimizer.cc

Code
Comments
Other
Rev Date Author Line
4172 12 May 22 peter 1 // $Id$
4172 12 May 22 peter 2
4172 12 May 22 peter 3 /*
4172 12 May 22 peter 4   Copyright (C) 2022 Peter Johansson
4172 12 May 22 peter 5
4172 12 May 22 peter 6   This file is part of the yat library, https://dev.thep.lu.se/yat
4172 12 May 22 peter 7
4172 12 May 22 peter 8   The yat library is free software; you can redistribute it and/or
4172 12 May 22 peter 9   modify it under the terms of the GNU General Public License as
4172 12 May 22 peter 10   published by the Free Software Foundation; either version 3 of the
4172 12 May 22 peter 11   License, or (at your option) any later version.
4172 12 May 22 peter 12
4172 12 May 22 peter 13   The yat library is distributed in the hope that it will be useful,
4172 12 May 22 peter 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
4172 12 May 22 peter 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4172 12 May 22 peter 16   General Public License for more details.
4172 12 May 22 peter 17
4172 12 May 22 peter 18   You should have received a copy of the GNU General Public License
4172 12 May 22 peter 19   along with yat. If not, see <https://www.gnu.org/licenses/>.
4172 12 May 22 peter 20 */
4172 12 May 22 peter 21
4172 12 May 22 peter 22 #include <config.h>
4172 12 May 22 peter 23
4172 12 May 22 peter 24 #include "MultiMinimizer.h"
4172 12 May 22 peter 25
4172 12 May 22 peter 26 #include <cassert>
4172 12 May 22 peter 27
4172 12 May 22 peter 28 namespace theplu {
4172 12 May 22 peter 29 namespace yat {
4172 12 May 22 peter 30 namespace utility {
4172 12 May 22 peter 31
4172 12 May 22 peter 32   MultiMinimizer::MultiMinimizer(const gsl_multimin_fminimizer_type* t,
4172 12 May 22 peter 33                                  size_t size)
4172 12 May 22 peter 34     : type_(t), size_(size),
4172 12 May 22 peter 35       solver_(gsl_multimin_fminimizer_alloc(t, size)),
4172 12 May 22 peter 36       step_size_(size, 1.0)
4172 12 May 22 peter 37   {
4172 12 May 22 peter 38     assert(solver_);
4172 12 May 22 peter 39   }
4172 12 May 22 peter 40
4172 12 May 22 peter 41
4172 12 May 22 peter 42   unsigned int MultiMinimizer::epochs(void) const
4172 12 May 22 peter 43   {
4172 12 May 22 peter 44     return epochs_;
4172 12 May 22 peter 45   }
4172 12 May 22 peter 46
4172 12 May 22 peter 47
4338 14 Apr 23 peter 48   const Vector& MultiMinimizer::step(void) const
4172 12 May 22 peter 49   {
4172 12 May 22 peter 50     return step_size_;
4172 12 May 22 peter 51   }
4172 12 May 22 peter 52
4172 12 May 22 peter 53
4338 14 Apr 23 peter 54   Vector& MultiMinimizer::step(void)
4172 12 May 22 peter 55   {
4172 12 May 22 peter 56     return step_size_;
4172 12 May 22 peter 57   }
4172 12 May 22 peter 58
4172 12 May 22 peter 59
4252 18 Nov 22 peter 60   MultiMinimizer::Size::Size(double epsabs)
4252 18 Nov 22 peter 61     : epsabs_(epsabs)
4252 18 Nov 22 peter 62   {}
4252 18 Nov 22 peter 63
4252 18 Nov 22 peter 64
4252 18 Nov 22 peter 65   bool MultiMinimizer::Size::operator()(const gsl_multimin_fminimizer* m)
4252 18 Nov 22 peter 66   {
4252 18 Nov 22 peter 67     double size = gsl_multimin_fminimizer_size(m);
4252 18 Nov 22 peter 68     return gsl_multimin_test_size(size, epsabs_) != GSL_CONTINUE;
4252 18 Nov 22 peter 69   }
4252 18 Nov 22 peter 70
4252 18 Nov 22 peter 71
4172 12 May 22 peter 72   void
4172 12 May 22 peter 73   MultiMinimizer::GslFree::operator()(gsl_multimin_fminimizer* p) const
4172 12 May 22 peter 74   {
4172 12 May 22 peter 75     gsl_multimin_fminimizer_free(p);
4172 12 May 22 peter 76   }
4172 12 May 22 peter 77
4172 12 May 22 peter 78 }}}