51 srand(
static_cast<unsigned int>(time(0)));
57 std::cout <<
"\nOptimization Algorithms Menu:\n";
58 std::cout <<
"1. Steepest Descent Method\n";
59 std::cout <<
"2. Conjugate Gradient Method\n";
60 std::cout <<
"3. Simulated Annealing\n";
61 std::cout <<
"4. Genetic Algorithm\n";
62 std::cout <<
"5. Compare All Methods\n";
63 std::cout <<
"Enter your choice (1-5): ";
67 if (option >= 1 && option <= 4)
70 std::cout <<
"\n1. Use default parameters\n";
71 std::cout <<
"2. Customize parameters\n";
72 std::cout <<
"Enter your choice (1-2): ";
74 std::cin >> subOption;
90 std::cout <<
"\nResults:\n";
91 std::cout <<
"Minimum at (" << std::fixed << std::setprecision(4) << res.
x <<
", " << res.
y <<
")\n";
92 std::cout <<
"Minimum value: " << std::fixed << std::setprecision(4) << res.
f <<
"\n";
93 std::cout <<
"Total iterations: " << res.
iterations <<
"\n";
94 std::cout <<
"Execution Time: " << std::scientific << std::setprecision(3) << res.
duration <<
" seconds\n";
96 else if (subOption == 2)
99 std::cout <<
"Enter initial x (default " << std::fixed << std::setprecision(4) << params.
x0 <<
"): ";
100 std::cin >> params.
x0;
101 std::cout <<
"Enter initial y (default " << std::fixed << std::setprecision(4) << params.
y0 <<
"): ";
102 std::cin >> params.
y0;
106 std::cout <<
"Enter learning rate alpha (default " << std::fixed << std::setprecision(4) << params.
alpha_sd <<
"): ";
108 std::cout <<
"Enter maximum iterations (default " << params.
maxIter_sd <<
"): ";
110 std::cout <<
"Enter tolerance (default " << std::scientific << std::setprecision(3) << params.
tol_sd <<
"): ";
111 std::cin >> params.
tol_sd;
114 else if (option == 2)
116 std::cout <<
"Enter maximum iterations (default " << params.
maxIter_cg <<
"): ";
118 std::cout <<
"Enter tolerance (default " << std::scientific << std::setprecision(3) << params.
tol_cg <<
"): ";
119 std::cin >> params.
tol_cg;
122 else if (option == 3)
124 std::cout <<
"Enter initial temperature T0 (default " << std::fixed << std::setprecision(4) << params.
T0_sa <<
"): ";
125 std::cin >> params.
T0_sa;
126 std::cout <<
"Enter minimum temperature Tmin (default " << std::scientific << std::setprecision(6) << params.
Tmin_sa <<
"): ";
128 std::cout <<
"Enter cooling rate alpha (default " << std::fixed << std::setprecision(4) << params.
alpha_sa <<
"): ";
130 std::cout <<
"Enter maximum iterations (default " << params.
maxIter_sa <<
"): ";
134 else if (option == 4)
136 std::cout <<
"Enter population size (default " << params.
populationSize_ga <<
"): ";
138 std::cout <<
"Enter number of generations (default " << params.
generations_ga <<
"): ";
140 std::cout <<
"Enter mutation rate (default " << std::fixed << std::setprecision(4) << params.
mutationRate_ga <<
"): ";
142 std::cout <<
"Enter crossover rate (default " << std::fixed << std::setprecision(4) << params.
crossoverRate_ga <<
"): ";
148 std::cout <<
"\nResults:\n";
149 std::cout <<
"Minimum at (" << std::fixed << std::setprecision(4) << res.
x <<
", " << res.
y <<
")\n";
150 std::cout <<
"Minimum value: " << std::fixed << std::setprecision(4) << res.
f <<
"\n";
151 std::cout <<
"Total iterations: " << res.
iterations <<
"\n";
152 std::cout <<
"Execution Time: " << std::scientific << std::setprecision(3) << res.
duration <<
" seconds\n";
156 std::cout <<
"Invalid sub-option. Please select 1 or 2.\n";
159 else if (option == 5)
166 std::cout <<
"Invalid option. Please select 1-5.\n";
170 std::cout <<
"\nDo you want to run the program again? (y/n): ";
172 }
while (choice ==
'y' || choice ==
'Y');
175 std::cout <<
"\nPress Enter to exit...";
176 std::cin.ignore(std::numeric_limits<std::streamsize>::max(),
'\n');