Minimum Finder  1.0
Find the minimum of one multi-dimss function
Loading...
Searching...
No Matches
utils.cpp File Reference
#include "utils.h"
#include "methods.h"
#include <iostream>
#include <iomanip>
+ Include dependency graph for utils.cpp:

Go to the source code of this file.

Functions

void displayDefaultParameters (const DefaultParameters &params, int option)
 
void compareMethods (const DefaultParameters &params)
 

Function Documentation

◆ compareMethods()

void compareMethods ( const DefaultParameters & params)

Definition at line 56 of file utils.cpp.

57{
58 std::cout << "\nComparing All Methods with Default Parameters...\n";
59
60 // Display default parameters
61 std::cout << "\nDefault Parameters:\n";
62 std::cout << "Initial x: " << std::fixed << std::setprecision(4) << params.x0
63 << ", Initial y: " << params.y0 << "\n";
64 std::cout << "Steepest Descent alpha: " << params.alpha_sd
65 << ", maxIter: " << params.maxIter_sd
66 << ", tol: " << std::scientific << std::setprecision(3) << params.tol_sd << std::fixed << "\n";
67 std::cout << "Conjugate Gradient maxIter: " << params.maxIter_cg
68 << ", tol: " << std::scientific << std::setprecision(3) << params.tol_cg << std::fixed << "\n";
69 std::cout << "Simulated Annealing T0: " << params.T0_sa
70 << ", Tmin: " << std::scientific << std::setprecision(3) << params.Tmin_sa
71 << std::fixed << ", alpha: " << params.alpha_sa
72 << ", maxIter: " << params.maxIter_sa << "\n";
73 std::cout << "Genetic Algorithm populationSize: " << params.populationSize_ga
74 << ", generations: " << params.generations_ga
75 << ", mutationRate: " << std::fixed << std::setprecision(4) << params.mutationRate_ga
76 << ", crossoverRate: " << params.crossoverRate_ga << "\n";
77
78 // Run all methods
79 Result res_sd = steepestDescent(params.x0, params.y0, params.alpha_sd, params.maxIter_sd, params.tol_sd);
80 Result res_cg = conjugateGradient(params.x0, params.y0, params.maxIter_cg, params.tol_cg);
81 Result res_sa = simulatedAnnealing(params.x0, params.y0, params.T0_sa, params.Tmin_sa, params.alpha_sa, params.maxIter_sa);
83
84 // Display results
85 std::cout << "\nResults:\n";
86
87 // Steepest Descent
88 std::cout << "Steepest Descent Method:\n";
89 std::cout << "Minimum at (" << std::fixed << std::setprecision(5) << res_sd.x << ", " << res_sd.y << ")\n";
90 std::cout << "Minimum value: " << std::fixed << std::setprecision(5) << res_sd.f << "\n";
91 std::cout << "Total iterations: " << res_sd.iterations << "\n";
92 std::cout << "Execution Time: " << std::scientific << std::setprecision(3) << res_sd.duration << " seconds\n\n";
93
94 // Conjugate Gradient
95 std::cout << "Conjugate Gradient Method:\n";
96 std::cout << "Minimum at (" << std::fixed << std::setprecision(5) << res_cg.x << ", " << res_cg.y << ")\n";
97 std::cout << "Minimum value: " << std::fixed << std::setprecision(5) << res_cg.f << "\n";
98 std::cout << "Total iterations: " << res_cg.iterations << "\n";
99 std::cout << "Execution Time: " << std::scientific << std::setprecision(3) << res_cg.duration << " seconds\n\n";
100
101 // Simulated Annealing
102 std::cout << "Simulated Annealing:\n";
103 std::cout << "Minimum at (" << std::fixed << std::setprecision(5) << res_sa.x << ", " << res_sa.y << ")\n";
104 std::cout << "Minimum value: " << std::fixed << std::setprecision(5) << res_sa.f << "\n";
105 std::cout << "Total iterations: " << res_sa.iterations << "\n";
106 std::cout << "Execution Time: " << std::scientific << std::setprecision(3) << res_sa.duration << " seconds\n\n";
107
108 // Genetic Algorithm
109 std::cout << "Genetic Algorithm:\n";
110 std::cout << "Minimum at (" << std::fixed << std::setprecision(5) << res_ga.x << ", " << res_ga.y << ")\n";
111 std::cout << "Minimum value: " << std::fixed << std::setprecision(5) << res_ga.f << "\n";
112 std::cout << "Total iterations: " << res_ga.iterations << "\n";
113 std::cout << "Execution Time: " << std::scientific << std::setprecision(3) << res_ga.duration << " seconds\n";
114}
Result simulatedAnnealing(double x0, double y0, double T0, double Tmin, double alpha, int maxIter)
Definition methods.cpp:100
Result steepestDescent(double x0, double y0, double alpha, int maxIter, double tol)
Definition methods.cpp:22
Result conjugateGradient(double x0, double y0, int maxIter, double tol)
Definition methods.cpp:53
Result geneticAlgorithm(int populationSize, int generations, double mutationRate, double crossoverRate)
Definition methods.cpp:138
double crossoverRate_ga
Definition structs.h:54
int populationSize_ga
Definition structs.h:51
double alpha_sd
Definition structs.h:36
double alpha_sa
Definition structs.h:47
double mutationRate_ga
Definition structs.h:53
double duration
Definition structs.h:64
double f
Definition structs.h:62
double y
Definition structs.h:61
double x
Definition structs.h:60
int iterations
Definition structs.h:63

◆ displayDefaultParameters()

void displayDefaultParameters ( const DefaultParameters & params,
int option )

Definition at line 16 of file utils.cpp.

17{
18 if (option == 1)
19 {
20 std::cout << "\nCurrent Default Parameters for Steepest Descent:\n";
21 std::cout << "Initial x: " << std::fixed << std::setprecision(4) << params.x0
22 << ", Initial y: " << params.y0 << "\n";
23 std::cout << "Learning rate alpha: " << params.alpha_sd
24 << "\nMaximum iterations: " << params.maxIter_sd
25 << "\nTolerance: " << std::scientific << std::setprecision(3) << params.tol_sd << std::fixed << "\n";
26 }
27 else if (option == 2)
28 {
29 std::cout << "\nCurrent Default Parameters for Conjugate Gradient:\n";
30 std::cout << "Initial x: " << std::fixed << std::setprecision(4) << params.x0
31 << ", Initial y: " << params.y0 << "\n";
32 std::cout << "Maximum iterations: " << params.maxIter_cg
33 << "\nTolerance: " << std::scientific << std::setprecision(3) << params.tol_cg << std::fixed << "\n";
34 }
35 else if (option == 3)
36 {
37 std::cout << "\nCurrent Default Parameters for Simulated Annealing:\n";
38 std::cout << "Initial x: " << std::fixed << std::setprecision(4) << params.x0
39 << ", Initial y: " << params.y0 << "\n";
40 std::cout << "Initial temperature T0: " << params.T0_sa
41 << "\nMinimum temperature Tmin: " << std::scientific << std::setprecision(3) << params.Tmin_sa << std::fixed
42 << "\nCooling rate alpha: " << params.alpha_sa
43 << "\nMaximum iterations: " << params.maxIter_sa << "\n";
44 }
45 else if (option == 4)
46 {
47 std::cout << "\nCurrent Default Parameters for Genetic Algorithm:\n";
48 std::cout << "Population size: " << params.populationSize_ga
49 << "\nGenerations: " << params.generations_ga
50 << "\nMutation rate: " << std::fixed << std::setprecision(4) << params.mutationRate_ga
51 << "\nCrossover rate: " << params.crossoverRate_ga << "\n";
52 }
53}