Skip to content
Snippets Groups Projects
Commit 824908b9 authored by Caron Olivier's avatar Caron Olivier
Browse files

add comments to adaptive

parent d2737637
No related branches found
No related tags found
No related merge requests found
......@@ -197,13 +197,14 @@ int main(void) {
std::vector<std::function<void(opt::singleSolution::localsearch::SimulatedAnnealing<SOL>&)>> vec_functions2 = {setToSwap,setToShift};
// Step 4, encapsulation of the algorithm to the adaptive time windows
opt::adaptive::ChangeIfSlowImprovementWindow<SOL,opt::singleSolution::localsearch::SimulatedAnnealing<SOL> > adaptiveWindow(*sa, vec_functions2, 4, 5, 10,eval);
opt::adaptive::ChangeIfSlowImprovementWindow<SOL,opt::singleSolution::localsearch::SimulatedAnnealing<SOL> > adaptiveWindow(*sa, vec_functions2, 4, 0.02, 10,eval);
std::cout << "using ChangeIfSlowImprovementWindow strategy during " << vec_functions.size()*criterion_length << std::endl;
std::cout << "every 4 seconds, alternate the neighbor operators: swap and shift if the fitness improves less than 0.02 %" << std::endl;
std::cout << "repeat 10 times, so 40 seconds for the complete run "<< std::endl;
std::cout << "INITIAL SOLUTION AFTER NEH" << std::endl;
std::cout << sol3 << std::endl;
std::cout << "using TimeWindow strategy during " << vec_functions.size()*criterion_length << std::endl;
std::cout << "every " << criterion_length <<" seconds, alternate the neighbor operators: swap and shift" << std::endl;
adaptiveWindow(sol3);
......
......@@ -51,7 +51,7 @@ namespace opt::adaptive {
* @param _eval The eval function
*/
ChangeIfSlowImprovementWindow(ALGO &_algorithm, std::vector<std::function<void(ALGO &)>> &_functions,
int _duration, int _improvement_percentage, int _max_iterations, core::Eval<IN> &_eval)
int _duration, double _improvement_percentage, int _max_iterations, core::Eval<IN> &_eval)
: opt::adaptive::AdaptiveWindow<IN,ALGO>(_algorithm, _functions),
duration(_duration),improvement_percentage(_improvement_percentage),
max_iterations(_max_iterations), eval(_eval) {}
......@@ -71,13 +71,14 @@ namespace opt::adaptive {
while (counter <= this->max_iterations ) {
auto current_fitness_value = _in.fitness().scalar() ;
std::cout << "Iteration no " << counter << ": " << fitness_scalar_value << " - " << current_fitness_value << std::endl;
if (abs(fitness_scalar_value-current_fitness_value) <
fitness_scalar_value/this->improvement_percentage) {
std::cout << "current percentage improvement:" << (abs(fitness_scalar_value-current_fitness_value)*100)/fitness_scalar_value << std::endl;
if ((abs(fitness_scalar_value-current_fitness_value)*100)/fitness_scalar_value <
this->improvement_percentage) {
std::cout << "modify algorithm !" << (select_function % this->functions.size()) << std::endl ;
fitness_scalar_value = current_fitness_value ;
this->functions[select_function % this->functions.size()](this->algorithm);
select_function++ ;
} else std::cout << "NO modify algorithm !" << std::endl;
fitness_scalar_value = current_fitness_value ;
timeCriterion.init();
this->algorithm(_in, timeCriterion);
counter++ ;
......@@ -86,15 +87,10 @@ namespace opt::adaptive {
protected:
int duration ;
int improvement_percentage ;
double improvement_percentage ;
int max_iterations ;
core::Eval<IN> &eval ;
};
}
#endif //MH_BUILDER_CHANGE_IF_SLOW_IMPROVEMENT_WINDOW_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment