Skip to content

Commit acd71c4

Browse files
Fixed tpe test
Signed-off-by: Shintaro Sakoda <shintaro.sakoda@tier4.jp>
1 parent e51a74a commit acd71c4

File tree

1 file changed

+32
-26
lines changed
  • localization/tree_structured_parzen_estimator/test

1 file changed

+32
-26
lines changed

localization/tree_structured_parzen_estimator/test/test_tpe.cpp

+32-26
Original file line numberDiff line numberDiff line change
@@ -28,38 +28,44 @@ TEST(TreeStructuredParzenEstimatorTest, TPE_is_better_than_random_search_on_sphe
2828
return value;
2929
};
3030

31-
constexpr int64_t kOuterTrialsNum = 10;
32-
constexpr int64_t kInnerTrialsNum = 100;
31+
constexpr int64_t kOuterTrialsNum = 20;
32+
constexpr int64_t kInnerTrialsNum = 200;
3333
std::cout << std::fixed;
3434
std::vector<double> mean_scores;
3535
const int64_t n_startup_trials = kInnerTrialsNum / 10;
3636
const std::string method = ((n_startup_trials == kInnerTrialsNum) ? "Random" : "TPE");
3737

38-
std::vector<double> scores;
39-
for (int64_t i = 0; i < kOuterTrialsNum; i++) {
40-
double best_score = std::numeric_limits<double>::lowest();
41-
const std::vector<double> sample_mean(5, 0.0);
42-
const std::vector<double> sample_stddev(5, 2.0);
43-
TreeStructuredParzenEstimator estimator(
44-
TreeStructuredParzenEstimator::Direction::MAXIMIZE, n_startup_trials, sample_mean,
45-
sample_stddev);
46-
for (int64_t trial = 0; trial < kInnerTrialsNum; trial++) {
47-
const TreeStructuredParzenEstimator::Input input = estimator.get_next_input();
48-
const double score = -sphere_function(input);
49-
estimator.add_trial({input, score});
50-
best_score = std::max(best_score, score);
38+
const std::vector<double> sample_mean(5, 0.0);
39+
const std::vector<double> sample_stddev {1.0, 1.0, 0.1, 0.1, 0.1};
40+
41+
for (const int64_t n_startup_trials : {kInnerTrialsNum, kInnerTrialsNum / 2}) {
42+
const std::string method = ((n_startup_trials == kInnerTrialsNum) ? "Random" : "TPE");
43+
44+
std::vector<double> scores;
45+
for (int64_t i = 0; i < kOuterTrialsNum; i++) {
46+
double best_score = std::numeric_limits<double>::lowest();
47+
TreeStructuredParzenEstimator estimator(
48+
TreeStructuredParzenEstimator::Direction::MAXIMIZE, n_startup_trials, sample_mean,
49+
sample_stddev);
50+
for (int64_t trial = 0; trial < kInnerTrialsNum; trial++) {
51+
const TreeStructuredParzenEstimator::Input input = estimator.get_next_input();
52+
const double score = -sphere_function(input);
53+
estimator.add_trial({input, score});
54+
best_score = std::max(best_score, score);
55+
}
56+
scores.push_back(best_score);
5157
}
52-
scores.push_back(best_score);
53-
}
5458

55-
const double sum = std::accumulate(scores.begin(), scores.end(), 0.0);
56-
const double mean = sum / scores.size();
57-
mean_scores.push_back(mean);
58-
double sq_sum = 0.0;
59-
for (const double score : scores) {
60-
sq_sum += (score - mean) * (score - mean);
61-
}
62-
const double stddev = std::sqrt(sq_sum / scores.size());
59+
const double sum = std::accumulate(scores.begin(), scores.end(), 0.0);
60+
const double mean = sum / scores.size();
61+
mean_scores.push_back(mean);
62+
double sq_sum = 0.0;
63+
for (const double score : scores) {
64+
sq_sum += (score - mean) * (score - mean);
65+
}
66+
const double stddev = std::sqrt(sq_sum / scores.size());
6367

64-
std::cout << method << ", mean = " << mean << ", stddev = " << stddev << std::endl;
68+
std::cout << method << ", mean = " << mean << ", stddev = " << stddev << std::endl;
69+
}
70+
ASSERT_LT(mean_scores[0], mean_scores[1]);
6571
}

0 commit comments

Comments
 (0)