25 #include <gtest/gtest.h>
31 #define private public
51 double abs_diff = 1.0;
52 while (abs_diff > eps) {
53 mic::types::MatrixPtr<double> dx = fun.calculateGradient(x);
58 double value = fun.calculateValue(x);
59 ASSERT_EQ(
true, std::isfinite(value)) <<
" at iteration i=" << iteration;
62 abs_diff = std::abs(value - fun.minValue());
65 ASSERT_GE(eps, std::abs(fun.calculateValue(x) - fun.minValue()));
66 std::cout <<
" -> Converged after " << iteration <<
" iterations\n";
80 double abs_diff = 1.0;
81 while (abs_diff > eps) {
82 mic::types::MatrixPtr<double> dx = fun.calculateGradient(x);
87 double value = fun.calculateValue(x);
88 ASSERT_EQ(
true, std::isfinite(value)) <<
" at iteration i=" << iteration;
91 abs_diff = std::abs(value - fun.minValue());
94 ASSERT_GE(eps, std::abs(fun.calculateValue(x) - fun.minValue()));
95 std::cout <<
" -> Converged after " << iteration <<
" iterations\n";
108 size_t iteration = 0;
109 double abs_diff = 1.0;
110 while (abs_diff > eps) {
111 mic::types::MatrixPtr<double> dx = fun.calculateGradient(x);
116 double value = fun.calculateValue(x);
117 ASSERT_EQ(
true, std::isfinite(value)) <<
" at iteration i=" << iteration;
120 abs_diff = std::abs(value - fun.minValue());
123 ASSERT_GE(eps, std::abs(fun.calculateValue(x) - fun.minValue()));
124 std::cout <<
" -> Converged after " << iteration <<
" iterations\n";
140 size_t iteration = 0;
141 double abs_diff = 1.0;
142 while (abs_diff > eps) {
143 mic::types::MatrixPtr<double> dx = fun.calculateGradient(x);
153 double value = fun.calculateValue(x);
155 ASSERT_EQ(
true, std::isfinite(value)) <<
" at iteration i=" << iteration <<
" for ni =" << ni;
158 abs_diff = std::abs(value - fun.minValue());
163 ASSERT_GE(eps, std::abs(fun.calculateValue(x) - fun.minValue()));
164 std::cout <<
" -> Converged after " << iteration <<
" iterations\n";
Test fixture - artificial landscape - sphere function 20D (square function).
TEST_F(Sphere1DLandscape, GradientDescent_Convergence)
Test fixture - artificial landscape - Rosenbrock function 2D.
Test fixture - artificial landscape - sphere function 1D (square function).
Test fixture - artificial landscape - Beale's function 2D.
virtual void update(mic::types::MatrixPtr< eT > p_, mic::types::MatrixPtr< eT > dp_, eT learning_rate_, eT decay_=0.0)
Update in the direction of gradient descent.