Skip to content

Commit 72fe6ce

Browse files
committed
avoid back calculation when not needed
1 parent 9a77053 commit 72fe6ce

6 files changed

Lines changed: 19 additions & 13 deletions

File tree

include/stats.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace parameters
1616
Solution global_best = {};
1717
bool has_improved = false;
1818
Float success_ratio = 2.0 / 11.0;
19-
Float cs = 1.0 / 12.0;
19+
Float cp = 1.0 / 12.0;
2020
size_t last_update = 0;
2121
size_t n_updates = 0;
2222

@@ -32,7 +32,7 @@ namespace parameters
3232

3333
has_improved = true;
3434
}
35-
success_ratio = (1 - cs) * success_ratio + (cs * has_improved);
35+
success_ratio = (1 - cp) * success_ratio + (cp * has_improved);
3636
}
3737
};
3838
}

src/bounds.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ namespace bounds
3333

3434
void BoundCorrection::correct(const Eigen::Index i, parameters::Parameters& p)
3535
{
36-
if (!has_bounds)
36+
if (!has_bounds or p.settings.modules.bound_correction == parameters::CorrectionMethod::NONE)
3737
return;
3838

3939
const auto oob = is_out_of_bounds(p.pop.X.col(i));

src/main.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,11 @@ int main()
130130
{
131131
auto ssa = parameters::StepSizeAdaptation::CSA;
132132

133-
//run_modcma(parameters::MatrixAdaptationType::NONE, ssa);
134-
//run_modcma(parameters::MatrixAdaptationType::SEPERABLE, ssa);
133+
run_modcma(parameters::MatrixAdaptationType::NONE, ssa);
134+
run_modcma(parameters::MatrixAdaptationType::SEPERABLE, ssa);
135135
run_modcma(parameters::MatrixAdaptationType::MATRIX, ssa);
136-
//run_modcma(parameters::MatrixAdaptationType::CHOLESKY, ssa);
137-
//run_modcma(parameters::MatrixAdaptationType::COVARIANCE, ssa);
138-
//run_modcma(parameters::MatrixAdaptationType::COVARIANCE_NO_EIGV, ssa);
136+
run_modcma(parameters::MatrixAdaptationType::CHOLESKY, ssa);
137+
run_modcma(parameters::MatrixAdaptationType::COVARIANCE, ssa);
138+
run_modcma(parameters::MatrixAdaptationType::COVARIANCE_NO_EIGV, ssa);
139139
run_modcma(parameters::MatrixAdaptationType::NATURAL_GRADIENT, ssa);
140140
}

src/matrix_adaptation.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,8 @@ namespace matrix_adaptation
208208
void MatrixAdaptation::adapt_evolution_paths_inner(const Population& pop, const Weights& w,
209209
const Stats& stats, const parameters::Settings& settings, const size_t mu, const size_t lambda)
210210
{
211+
if (settings.one_plus_one && !stats.has_improved)
212+
return;
211213
ps = (1.0 - w.cs) * ps + (w.sqrt_cs_mueff * dz);
212214
}
213215

@@ -241,7 +243,7 @@ namespace matrix_adaptation
241243
+ (popY * (tau_m * weights).asDiagonal() * popZ.transpose());
242244

243245

244-
if (settings.modules.elitist)
246+
if (settings.modules.elitist && !settings.one_plus_one)
245247
M_inv = (decay_m * M_inv)
246248
+ (tau_1 * ps * (ps.transpose() * M_inv))
247249
+ ((popY * (tau_m * weights).asDiagonal()) * (popZ.transpose() * M_inv));

src/selection.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,14 @@ namespace selection
4040
if (p.stats.t != 0)
4141
{
4242
p.old_pop.resize_cols(k);
43-
for (Eigen::Index i = 0; i < static_cast<Eigen::Index>(p.old_pop.n); i++)
43+
44+
if (!p.settings.one_plus_one)
4445
{
45-
p.old_pop.Y.col(i).noalias() = p.adaptation->invert_x(p.old_pop.X.col(i), p.old_pop.s(i));
46-
p.old_pop.Z.col(i).noalias() = p.adaptation->invert_y(p.old_pop.Y.col(i));
46+
for (Eigen::Index i = 0; i < static_cast<Eigen::Index>(p.old_pop.n); i++)
47+
{
48+
p.old_pop.Y.col(i).noalias() = p.adaptation->invert_x(p.old_pop.X.col(i), p.old_pop.s(i));
49+
p.old_pop.Z.col(i).noalias() = p.adaptation->invert_y(p.old_pop.Y.col(i));
50+
}
4751
}
4852
p.pop += p.old_pop;
4953
}

src/weights.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ namespace parameters
1818
case StepSizeAdaptation::PSR:
1919
return 0.9;
2020
case StepSizeAdaptation::SR:
21-
return 1.0 / 12.0;
21+
return 2.0 / (d + 2.0);
2222
case StepSizeAdaptation::CSA:
2323
return (mueff + 2.0) / (d + mueff + 5.0);
2424
default:

0 commit comments

Comments
 (0)