Minimum Finder  1.0
Find the minimum of one multi-dimss function
Loading...
Searching...
No Matches
functions.cpp
Go to the documentation of this file.
1/*
2@Author: Gilbert Young
3@Time: 2024/09/19 08:56
4@File_name: functions.cpp
5@Description:
6Implementation file containing the definitions of the mathematical functions used in the optimization algorithms.
7*/
8
9#include "functions.h"
10#include <cmath>
11
12// Function to minimize
13double functionToMinimize(double x, double y)
14{
15 return sin(x + y) + cos(x + 2 * y);
16}
17
18// Compute gradient of the function
19void computeGradient(double x, double y, double &dx, double &dy)
20{
21 dx = cos(x + y) - sin(x + 2 * y);
22 dy = cos(x + y) - 2 * sin(x + 2 * y);
23}
24
25// Backtracking Line Search
26double lineSearchBacktracking(double x, double y, double d_x, double d_y, double alpha_init, double rho, double c)
27{
28 double alpha = alpha_init;
29 double f0 = functionToMinimize(x, y);
30 double grad_dot_dir = d_x * d_x + d_y * d_y; // Since d is -grad
31 while (functionToMinimize(x + alpha * d_x, y + alpha * d_y) > f0 + c * alpha * grad_dot_dir)
32 {
33 alpha *= rho;
34 if (alpha < 1e-8)
35 break;
36 }
37 return alpha;
38}
void computeGradient(double x, double y, double &dx, double &dy)
Definition functions.cpp:19
double functionToMinimize(double x, double y)
Definition functions.cpp:13
double lineSearchBacktracking(double x, double y, double d_x, double d_y, double alpha_init, double rho, double c)
Definition functions.cpp:26