@@ -23,20 +23,12 @@ namespace matrix_adaptation
2323 {
2424 }
2525
26- bool adapt (const parameters::Weights& w, const parameters::Modules& m, const Population& pop,
27- size_t mu, const parameters::Settings& settings, const parameters::Stats& stats)
28- {
29- if (settings.lambda0 == 1 && !stats.has_improved )
30- return true ;
31- return adapt_matrix (w, m, pop, mu, settings);
32- }
33-
3426 virtual void adapt_evolution_paths (const Population& pop, const parameters::Weights& w,
3527 const std::shared_ptr<mutation::Strategy>& mutation,
3628 const parameters::Stats& stats, size_t mu, size_t lambda) = 0;
3729
3830 virtual bool adapt_matrix (const parameters::Weights& w, const parameters::Modules& m, const Population& pop,
39- size_t mu, const parameters::Settings& settings) = 0;
31+ size_t mu, const parameters::Settings& settings, const parameters::Stats& stats ) = 0;
4032
4133 virtual void restart (const parameters::Settings& settings) = 0;
4234
@@ -55,7 +47,7 @@ namespace matrix_adaptation
5547 }
5648
5749 bool adapt_matrix (const parameters::Weights& w, const parameters::Modules& m, const Population& pop,
58- const size_t mu, const parameters::Settings& settings) override
50+ const size_t mu, const parameters::Settings& settings, const parameters::Stats& stats ) override
5951 {
6052 return true ;
6153 }
@@ -88,17 +80,17 @@ namespace matrix_adaptation
8880 {
8981 }
9082
83+ void adapt_covariance_matrix (const parameters::Weights& w, const parameters::Modules& m, const Population& pop,
84+ size_t mu);
85+
9186 virtual bool perform_eigendecomposition (const parameters::Settings& settings);
9287
9388 void adapt_evolution_paths (const Population& pop, const parameters::Weights& w,
9489 const std::shared_ptr<mutation::Strategy>& mutation, const parameters::Stats& stats,
9590 size_t mu, size_t lambda) override ;
9691
97- void adapt_covariance_matrix (const parameters::Weights& w, const parameters::Modules& m, const Population& pop,
98- size_t mu);
99-
10092 bool adapt_matrix (const parameters::Weights& w, const parameters::Modules& m, const Population& pop, size_t mu,
101- const parameters::Settings& settings) override ;
93+ const parameters::Settings& settings, const parameters::Stats& stats ) override ;
10294
10395 void restart (const parameters::Settings& settings) override ;
10496
@@ -115,6 +107,22 @@ namespace matrix_adaptation
115107 };
116108
117109
110+ struct OnePlusOneAdaptation : CovarianceAdaptation
111+ {
112+ constexpr static double max_success_ratio = 0.44 ;
113+
114+ using CovarianceAdaptation::CovarianceAdaptation;
115+
116+ void adapt_evolution_paths (const Population& pop, const parameters::Weights& w,
117+ const std::shared_ptr<mutation::Strategy>& mutation, const parameters::Stats& stats,
118+ size_t mu, size_t lambda) override ;
119+
120+ bool adapt_matrix (const parameters::Weights& w, const parameters::Modules& m, const Population& pop, size_t mu,
121+ const parameters::Settings& settings, const parameters::Stats& stats) override ;
122+
123+ };
124+
125+
118126 struct MatrixAdaptation final : Adaptation
119127 {
120128 Matrix M;
@@ -131,7 +139,7 @@ namespace matrix_adaptation
131139 size_t mu, size_t lambda) override ;
132140
133141 bool adapt_matrix (const parameters::Weights& w, const parameters::Modules& m, const Population& pop, size_t mu,
134- const parameters::Settings& settings) override ;
142+ const parameters::Settings& settings, const parameters::Stats& stats ) override ;
135143
136144 void restart (const parameters::Settings& settings) override ;
137145
@@ -151,6 +159,8 @@ namespace matrix_adaptation
151159 return std::make_shared<None>(dim, x0, expected_z);
152160 case MatrixAdaptationType::SEPERABLE:
153161 return std::make_shared<SeperableAdaptation>(dim, x0, expected_z);
162+ case MatrixAdaptationType::ONEPLUSONE:
163+ return std::make_shared<OnePlusOneAdaptation>(dim, x0, expected_z);
154164 default :
155165 case MatrixAdaptationType::COVARIANCE:
156166 return std::make_shared<CovarianceAdaptation>(dim, x0, expected_z);
0 commit comments