Skip to content

Commit c75b9a2

Browse files
committed
add partially working cec 2017
1 parent 191c789 commit c75b9a2

File tree

3 files changed

+159
-84
lines changed

3 files changed

+159
-84
lines changed
Lines changed: 107 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22

3+
#include "cecxx/functions/multimodal/schaffer.hpp"
34
#include <cecxx/benchmark/detail/legacy/functions/multimodal/bi_rastrigin.hpp>
4-
#include <cecxx/benchmark/detail/legacy/functions/multimodal/schaffer.hpp>
55
#include <cecxx/benchmark/detail/problem_invokers/basic_problem_invoker.hpp>
66
#include <cecxx/functions/multimodal/ackley.hpp>
77
#include <cecxx/functions/multimodal/discus.hpp>
@@ -23,73 +23,113 @@
2323
#include <cecxx/functions/unimodal/sum_diff_pow.hpp>
2424

2525
namespace cecxx::benchmark::cec_2017 {
26-
static constexpr auto basic_1 = detail::basic_problem_invoker{
27-
cecxx::functions::unimodal::bent_cigar, 1.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
28-
29-
static constexpr auto basic_2 = detail::basic_problem_invoker{
30-
cecxx::functions::unimodal::sum_diff_pow, 1.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
31-
32-
static constexpr auto basic_3 = detail::basic_problem_invoker{
33-
cecxx::functions::unimodal::ellips, 1.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
34-
35-
static constexpr auto basic_4 = detail::basic_problem_invoker{
36-
cecxx::functions::multimodal::discus, 1.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
37-
38-
static constexpr auto basic_5 = detail::basic_problem_invoker{
39-
cecxx::functions::multimodal::zakharov, 1.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
40-
41-
static constexpr auto basic_6
26+
static constexpr auto bent_cigar = detail::basic_problem_invoker{
27+
cecxx::functions::unimodal::bent_cigar,
28+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
29+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::rotation{}}};
30+
31+
static constexpr auto sum_diff_pow = detail::basic_problem_invoker{
32+
cecxx::functions::unimodal::sum_diff_pow,
33+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
34+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::rotation{}}};
35+
36+
static constexpr auto zakharov = detail::basic_problem_invoker{
37+
cecxx::functions::multimodal::zakharov,
38+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
39+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::rotation{}}};
40+
41+
static constexpr auto rosenbrock
4242
= detail::basic_problem_invoker{cecxx::functions::multimodal::rosenbrock,
43-
2.048 / 100.0,
44-
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
45-
46-
static constexpr auto basic_7
47-
= detail::basic_problem_invoker{cecxx::functions::multimodal::rastrigin,
48-
5.12 / 100.0,
49-
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
50-
51-
static constexpr auto basic_8 = detail::basic_problem_invoker{
52-
cecxx::functions::multimodal::legacy::schaffer, 1.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
53-
54-
static constexpr auto basic_9
55-
= detail::basic_problem_invoker{cecxx::functions::multimodal::legacy::bi_rastrigin,
56-
1.0,
57-
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
58-
59-
static constexpr auto basic_10
43+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
44+
std::tuple{
45+
cecxx::benchmark::detail::shift{},
46+
cecxx::benchmark::detail::scale{2.048, 100.0},
47+
cecxx::benchmark::detail::rotation{},
48+
detail::shift_by_scalar{1.0},
49+
}};
50+
51+
static constexpr auto rastrigin = detail::basic_problem_invoker{
52+
cecxx::functions::multimodal::rastrigin,
53+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
54+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::rotation{}}};
55+
56+
static constexpr auto schaffer = detail::basic_problem_invoker{
57+
cecxx::functions::multimodal::schaffer,
58+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
59+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{0.5, 100.0},
60+
cecxx::benchmark::detail::rotation{}}};
61+
62+
static constexpr auto bi_rastrigin = detail::basic_problem_invoker{
63+
cecxx::functions::multimodal::legacy::bi_rastrigin,
64+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
65+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{600.0, 100.0},
66+
cecxx::benchmark::detail::rotation{}}};
67+
68+
static constexpr auto step_rastrigin
6069
= detail::basic_problem_invoker{cecxx::functions::multimodal::step_rastrigin,
61-
5.12 / 100.0,
62-
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
63-
64-
static constexpr auto basic_11 = detail::basic_problem_invoker{
65-
cecxx::functions::multimodal::levy, 1.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
66-
static constexpr auto basic_12 = detail::basic_problem_invoker{
67-
cecxx::functions::multimodal::schwefel, 10.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
68-
69-
static constexpr auto basic_13 = detail::basic_problem_invoker{
70-
cecxx::functions::multimodal::ackley, 1.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
71-
static constexpr auto basic_14 = detail::basic_problem_invoker{
72-
cecxx::functions::multimodal::hgbat, 5.0 / 100.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
73-
74-
static constexpr auto basic_15 = detail::basic_problem_invoker{
75-
cecxx::functions::multimodal::happycat, 5.0 / 100.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
76-
77-
static constexpr auto basic_16 = detail::basic_problem_invoker{
78-
cecxx::functions::multimodal::escaffer, 1.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
79-
static constexpr auto basic_17 = detail::basic_problem_invoker{
80-
cecxx::functions::multimodal::katsuura, 5.0 / 100.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
81-
82-
static constexpr auto basic_18
83-
= detail::basic_problem_invoker{cecxx::functions::multimodal::grie_rosen,
84-
5.0 / 100.0,
85-
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
86-
87-
static constexpr auto basic_19
88-
= detail::basic_problem_invoker{cecxx::functions::multimodal::weierstrass,
89-
0.5 / 100.0,
90-
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
91-
92-
static constexpr auto basic_20 = detail::basic_problem_invoker{
93-
cecxx::functions::multimodal::griewank, 6.0, {.rot = do_affine_trans::yes, .shift = do_affine_trans::yes}};
70+
{.rot = do_affine_trans::no, .shift = do_affine_trans::yes},
71+
std::tuple{
72+
cecxx::benchmark::detail::shift{},
73+
cecxx::benchmark::detail::scale{5.12 / 100.0, 1.0},
74+
}};
75+
76+
static constexpr auto levy = detail::basic_problem_invoker{
77+
cecxx::functions::multimodal::levy,
78+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
79+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{5.12, 100.0},
80+
cecxx::benchmark::detail::rotation{}}};
81+
82+
static constexpr auto schwefel
83+
= detail::basic_problem_invoker{cecxx::functions::multimodal::schwefel,
84+
{.rot = do_affine_trans::no, .shift = do_affine_trans::yes},
85+
std::tuple{
86+
cecxx::benchmark::detail::shift{},
87+
cecxx::benchmark::detail::scale{1000.0 / 100.0, 1.0},
88+
cecxx::benchmark::detail::shift_by_scalar{4.209687462275036e+002},
89+
}};
90+
static constexpr auto ellips = detail::basic_problem_invoker{
91+
cecxx::functions::unimodal::ellips,
92+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
93+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::rotation{}}};
94+
95+
static constexpr auto hgbat = detail::basic_problem_invoker{
96+
cecxx::functions::multimodal::hgbat,
97+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
98+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{5.0, 100.0},
99+
cecxx::benchmark::detail::rotation{}}};
100+
101+
static constexpr auto escaffer = detail::basic_problem_invoker{
102+
cecxx::functions::multimodal::escaffer,
103+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
104+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::rotation{}}};
105+
106+
static constexpr auto katsuura = detail::basic_problem_invoker{
107+
cecxx::functions::multimodal::katsuura,
108+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
109+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{5.0, 100.0},
110+
cecxx::benchmark::detail::rotation{}}};
111+
112+
static constexpr auto discus = detail::basic_problem_invoker{
113+
cecxx::functions::multimodal::discus,
114+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
115+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::rotation{}}};
116+
117+
static constexpr auto weierstrass = detail::basic_problem_invoker{
118+
cecxx::functions::multimodal::weierstrass,
119+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
120+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{0.5, 100.0},
121+
cecxx::benchmark::detail::rotation{}}};
122+
123+
static constexpr auto happycat = detail::basic_problem_invoker{
124+
cecxx::functions::multimodal::happycat,
125+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
126+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::scale{5.0, 100.0},
127+
cecxx::benchmark::detail::rotation{}}};
128+
129+
static constexpr auto ackley = detail::basic_problem_invoker{
130+
cecxx::functions::multimodal::ackley,
131+
{.rot = do_affine_trans::yes, .shift = do_affine_trans::yes},
132+
std::tuple{cecxx::benchmark::detail::shift{}, cecxx::benchmark::detail::rotation{}}};
133+
94134

95135
} // namespace cecxx::benchmark::cec_2017

include/cecxx/benchmark/cec_2017/hybrid_problems.hpp

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,56 @@
44
#include <cecxx/benchmark/detail/problem_invokers/hybrid_problem_invoker.hpp>
55

66
namespace cecxx::benchmark::cec_2017 {
7-
const auto hybrid_1 = detail::hybrid_problem_invoker{std::tuple{basic_5, basic_6, basic_7}, {0.2, 0.4, 0.4}};
8-
const auto hybrid_2 = detail::hybrid_problem_invoker{std::tuple{basic_3, basic_12, basic_1}, {0.3, 0.3, 0.4}};
9-
const auto hybrid_3 = detail::hybrid_problem_invoker{std::tuple{basic_1, basic_6, basic_9}, {0.3, 0.3, 0.4}};
10-
const auto hybrid_4
11-
= detail::hybrid_problem_invoker{std::tuple{basic_3, basic_13, basic_8, basic_7}, {0.2, 0.2, 0.2, 0.4}};
12-
const auto hybrid_5
13-
= detail::hybrid_problem_invoker{std::tuple{basic_1, basic_14, basic_7, basic_6}, {0.2, 0.2, 0.3, 0.3}};
14-
const auto hybrid_6
15-
= detail::hybrid_problem_invoker{std::tuple{basic_16, basic_14, basic_6, basic_12}, {0.2, 0.2, 0.3, 0.3}};
16-
const auto hybrid_7 = detail::hybrid_problem_invoker{std::tuple{basic_17, basic_13, basic_18, basic_12, basic_7},
7+
8+
const auto hybrid_1 = detail::hybrid_problem_invoker{std::tuple{
9+
cecxx::benchmark::detail::shift{},
10+
cecxx::benchmark::detail::rotation{},
11+
cecxx::benchmark::detail::shuffle{},
12+
13+
},
14+
std::tuple{zakharov, rosenbrock, rastrigin},
15+
{0.2, 0.4, 0.4}};
16+
17+
const auto hybrid_2 = detail::hybrid_problem_invoker{std::tuple{
18+
cecxx::benchmark::detail::shift{},
19+
cecxx::benchmark::detail::rotation{},
20+
cecxx::benchmark::detail::shuffle{},
21+
},
22+
std::tuple{ellips, schwefel, bent_cigar},
23+
{0.3, 0.3, 0.4}};
24+
25+
26+
const auto hybrid_3 = detail::hybrid_problem_invoker{std::tuple{
27+
cecxx::benchmark::detail::shift{},
28+
cecxx::benchmark::detail::rotation{},
29+
cecxx::benchmark::detail::shuffle{},
30+
},
31+
std::tuple{bent_cigar, rosenbrock, bi_rastrigin},
32+
{0.3, 0.3, 0.4}};
33+
34+
const auto hybrid_4 = detail::hybrid_problem_invoker{std::tuple{
35+
cecxx::benchmark::detail::shift{},
36+
cecxx::benchmark::detail::rotation{},
37+
cecxx::benchmark::detail::shuffle{},
38+
},
39+
std::tuple{ellips, ackley, schaffer, rastrigin},
40+
{0.2, 0.2, 0.2, 0.4}};
41+
42+
const auto hybrid_5 = detail::hybrid_problem_invoker{std::tuple{
43+
cecxx::benchmark::detail::shift{},
44+
cecxx::benchmark::detail::rotation{},
45+
cecxx::benchmark::detail::shuffle{},
46+
},
47+
std::tuple{basic_16, basic_14, basic_4, basic_10, basic_1},
48+
{0.1, 0.2, 0.2, 0.2, 0.3}};
49+
const auto hybrid_6 = detail::hybrid_problem_invoker{std::tuple{
50+
cecxx::benchmark::detail::shift{},
51+
cecxx::benchmark::detail::rotation{},
52+
cecxx::benchmark::detail::shuffle{},
53+
},
54+
55+
std::tuple{basic_12, basic_13, basic_15, basic_11, basic_5},
1756
{0.1, 0.2, 0.2, 0.2, 0.3}};
18-
const auto hybrid_8 = detail::hybrid_problem_invoker{std::tuple{basic_3, basic_13, basic_7, basic_14, basic_4},
19-
{0.2, 0.2, 0.2, 0.2, 0.2}};
20-
const auto hybrid_9 = detail::hybrid_problem_invoker{std::tuple{basic_1, basic_7, basic_18, basic_19, basic_16},
21-
{0.2, 0.2, 0.2, 0.2, 0.2}};
22-
const auto hybrid_10 = detail::hybrid_problem_invoker{
23-
std::tuple{basic_14, basic_17, basic_13, basic_7, basic_12, basic_8}, {0.1, 0.1, 0.2, 0.2, 0.2, 0.2}};
57+
58+
2459
} // namespace cecxx::benchmark::cec_2017

scripts/run_compliance_tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def run_test(
4545
) -> tuple[FuzzTest, ExitCode]:
4646
print(f"Running compliance test [{test}] for next {duration}s...")
4747
p = subprocess.run(
48-
[f"{target}", "--gtest_filter", str(test), "--fuzz_for", f"{duration}s"],
48+
[f"{target}","--gtest_filter", str(test), "--fuzz_for", f"{duration}s", "--gtest_brief", "1",],
4949
env=os.environ | _DISABLE_ASAN,
5050
stdout=subprocess.DEVNULL,
5151
stderr=subprocess.STDOUT

0 commit comments

Comments
 (0)