You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1018 B
47 lines
1018 B
#pragma once
|
|
|
|
class search_function {
|
|
|
|
public:
|
|
|
|
function func;
|
|
|
|
search_function(function f) : func(f) {
|
|
};
|
|
|
|
virtual double search(int permutations, int dimensionality) = 0;
|
|
|
|
protected:
|
|
|
|
std::vector<double> generate_solution(int dimensionality){
|
|
|
|
std::vector<double> tmp;
|
|
for (int i = 0; i < dimensionality; i++) {
|
|
tmp.push_back(fmod(randomMT(), (func.upper_bound * 2)) + func.lower_bound);
|
|
}
|
|
return tmp;
|
|
}
|
|
|
|
std::vector<std::vector<double>> generate_population(int dimensionality, int population_count){
|
|
|
|
std::vector<std::vector<double>> tmp;
|
|
for (int i = 0; i < dimensionality; i++) {
|
|
tmp.push_back(generate_solution(dimensionality));
|
|
}
|
|
return tmp;
|
|
}
|
|
|
|
double check_bounds(double input){
|
|
if (input > func.upper_bound)
|
|
return func.upper_bound;
|
|
else if (input < func.lower_bound)
|
|
return func.lower_bound;
|
|
else
|
|
return input;
|
|
}
|
|
|
|
|
|
|
|
|
|
};
|