Skip to content

Commit 314f9ec

Browse files
committed
Make CEC2014 basic problem compliant
1 parent 9cc09ae commit 314f9ec

File tree

5 files changed

+44
-10
lines changed

5 files changed

+44
-10
lines changed

include/cecxx/benchmark/cec_2014/basic_problems.hpp

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,77 +30,100 @@ static constexpr auto basic_2 = detail::basic_problem_invoker{
3030
cecxx::functions::unimodal::bent_cigar,
3131
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
3232
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::rotation{}}};
33+
3334
static constexpr auto basic_3 = detail::basic_problem_invoker{
3435
cecxx::functions::multimodal::discus,
3536
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
3637
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::rotation{}}};
38+
3739
static constexpr auto basic_4
3840
= detail::basic_problem_invoker{cecxx::functions::multimodal::rosenbrock,
3941
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
4042
std::tuple{
4143
cecxx::benchmark::detail::shift{},
4244
cecxx::benchmark::detail::scale{2.048, 100.0},
4345
cecxx::benchmark::detail::rotation{},
46+
detail::shift_by_scalar{1.0},
4447
}};
48+
4549
static constexpr auto basic_5 = detail::basic_problem_invoker{
4650
cecxx::functions::multimodal::ackley,
4751
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
4852
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::rotation{}}};
53+
4954
static constexpr auto basic_6 = detail::basic_problem_invoker{
5055
cecxx::functions::multimodal::weierstrass,
5156
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
5257
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{0.5, 100.0},
5358
cecxx::benchmark::detail::rotation{}}};
59+
5460
static constexpr auto basic_7 = detail::basic_problem_invoker{
5561
cecxx::functions::multimodal::griewank,
5662
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
5763
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{600.0, 100.0},
5864
cecxx::benchmark::detail::rotation{}}};
65+
5966
static constexpr auto basic_8
6067
= detail::basic_problem_invoker{cecxx::functions::multimodal::rastrigin,
6168
{.rot = do_affine_trans::no, .shift = do_affine_trans::yes},
6269
std::tuple{
6370
cecxx::benchmark::detail::shift{},
6471
cecxx::benchmark::detail::scale{5.12, 100.0},
6572
}};
73+
6674
static constexpr auto basic_9 = detail::basic_problem_invoker{
6775
cecxx::functions::multimodal::rastrigin,
6876
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
6977
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{5.12, 100.0},
7078
cecxx::benchmark::detail::rotation{}}};
79+
7180
static constexpr auto basic_10
7281
= detail::basic_problem_invoker{cecxx::functions::multimodal::schwefel,
7382
{.rot = do_affine_trans::no, .shift = do_affine_trans::yes},
7483
std::tuple{
7584
cecxx::benchmark::detail::shift{},
7685
cecxx::benchmark::detail::scale{1000.0, 100.0},
86+
cecxx::benchmark::detail::shift_by_scalar{4.209687462275036e+002},
87+
}};
88+
89+
static constexpr auto basic_11
90+
= detail::basic_problem_invoker{cecxx::functions::multimodal::schwefel,
91+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
92+
std::tuple{
93+
cecxx::benchmark::detail::shift{},
94+
cecxx::benchmark::detail::scale{1000.0, 100.0},
95+
cecxx::benchmark::detail::rotation{},
96+
cecxx::benchmark::detail::shift_by_scalar{4.209687462275036e+002},
7797
}};
7898

79-
static constexpr auto basic_11 = detail::basic_problem_invoker{
80-
cecxx::functions::multimodal::schwefel,
81-
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
82-
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{1000.0, 100.0},
83-
cecxx::benchmark::detail::rotation{}}};
8499
static constexpr auto basic_12 = detail::basic_problem_invoker{
85100
cecxx::functions::multimodal::katsuura,
86101
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
87102
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{5.0, 100.0},
88103
cecxx::benchmark::detail::rotation{}}};
104+
89105
static constexpr auto basic_13 = detail::basic_problem_invoker{
90106
cecxx::functions::multimodal::happycat,
91107
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
92108
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{5.0, 100.0},
93109
cecxx::benchmark::detail::rotation{}}};
110+
94111
static constexpr auto basic_14 = detail::basic_problem_invoker{
95112
cecxx::functions::multimodal::hgbat,
96113
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
97114
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{5.0, 100.0},
98115
cecxx::benchmark::detail::rotation{}}};
116+
99117
static constexpr auto basic_15 = detail::basic_problem_invoker{
100118
cecxx::functions::multimodal::grie_rosen,
101119
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
102-
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{5.0, 100.0},
103-
cecxx::benchmark::detail::rotation{}}};
120+
std::tuple{
121+
cecxx::benchmark::detail::shift{},
122+
cecxx::benchmark::detail::scale{5.0 / 100.0, 1.0},
123+
cecxx::benchmark::detail::rotation{},
124+
cecxx::benchmark::detail::shift_by_scalar{1.0},
125+
}};
126+
104127
static constexpr auto basic_16 = detail::basic_problem_invoker{
105128
cecxx::functions::multimodal::escaffer,
106129
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},

include/cecxx/benchmark/detail/problem_invokers/basic_problem_invoker.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ auto apply_geom_fns(std::span<const double> input, problem_context_view_t ctx, a
214214
auto &&fn = std::get<i>(affine_fns);
215215
fn(output, ctx, mask, partial);
216216
partial[fn.name] = output;
217-
// std::println("{}", fn.name);
217+
// std::println("output {}", fn.name);
218218
// print_vec(output);
219219
});
220220
return output;

src/benchmark/cec_2014/problem_evaluation_mappings.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include <cecxx/benchmark/cec_2014/complex_problems.hpp>
33
#include <cecxx/benchmark/cec_2014/hybrid_problems.hpp>
44
#include <cecxx/benchmark/cec_2014/problem_evaluation_mappings.hpp>
5+
#include <print>
56
#include <utility>
67

78
namespace cecxx::benchmark::cec_2014 {

src/benchmark/detail/evaluate.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <cecxx/benchmark/cec_2013/problem_evaluation_mappings.hpp>
2-
// #include <cecxx/benchmark/cec_2014/problem_evaluation_mappings.hpp>
2+
#include <cecxx/benchmark/cec_2014/problem_evaluation_mappings.hpp>
33
// #include <cecxx/benchmark/cec_2017/problem_evaluation_mappings.hpp>
44
#include <cecxx/benchmark/detail/evaluate.hpp>
55

@@ -12,7 +12,7 @@ auto evaluate_selected_problem(cec_edition_t cec, problem_context_view_t ctx, co
1212
case cec2013:
1313
return cec_2013::evaluate(ctx, fn, input);
1414
case cec2014:
15-
return cec_2013::evaluate(ctx, fn, input);
15+
return cec_2014::evaluate(ctx, fn, input);
1616
case cec2017:
1717
return cec_2013::evaluate(ctx, fn, input);
1818
}

test/compliance/oracle/cec2014.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "cec2014.h"
2+
#include <print>
23
#include <string>
34

45
namespace oracle::cec2014 {
@@ -269,6 +270,14 @@ void sphere_func(double *x, double *f, int nx, double *Os, double *Mr, int s_fla
269270
}
270271
}
271272

273+
auto print_vec(auto *v, auto s, auto msg = "") {
274+
std::print("[{}] [ ", msg);
275+
for (auto i{0}; i < s; ++i) {
276+
std::print("({}) {}, ", i, v[i]);
277+
}
278+
std::print("]\n");
279+
}
280+
272281
void ellips_func(double *x, double *f, int nx, double *Os, double *Mr, int s_flag, int r_flag) /* Ellipsoidal */
273282
{
274283
int i;
@@ -551,6 +560,7 @@ void grie_rosen_func(double *x, double *f, int nx, double *Os, double *Mr, int s
551560

552561
sr_func(x, z, nx, Os, Mr, 5.0 / 100.0, s_flag, r_flag); /* shift and rotate */
553562

563+
554564
z[0] += 1.0; // shift to orgin
555565
for (i = 0; i < nx - 1; i++) {
556566
z[i + 1] += 1.0; // shift to orgin

0 commit comments

Comments
 (0)