GaitGeneration by Graph Search
読み取り中…
検索中…
一致する文字列を見つけられません
graph_search_evaluator.h
[詳解]
1
3
4// Copyright(c) 2023-2025 Design Engineering Laboratory, Saitama University
5// Released under the MIT license
6// https://opensource.org/licenses/mit-license.php
7
8#ifndef DESIGNLAB_GRAPH_SEARCH_EVALUATOR_H_
9#define DESIGNLAB_GRAPH_SEARCH_EVALUATOR_H_
10
11#include <map>
12#include <vector>
13
14
15namespace designlab
16{
17
21{
22 using Tag = int;
23
24 constexpr static float kMaxEvaluationValue = 1.0e+7f;
25 constexpr static float kMinEvaluationValue = -1.0e+7f;
26
27 std::map<Tag, float> value;
28};
29
30
34{
35 using Tag = GraphSearchEvaluationValue::Tag; // 読みやすさのため,別名をつける.
36
37public:
40 struct EvaluationMethod final
41 {
43
44 float margin;
45 };
46
48
52 GraphSearchEvaluator(const std::map<Tag, EvaluationMethod>& evaluation_method_map,
53 const std::vector<Tag>& evaluation_priority_list);
54
56
57
64 const GraphSearchEvaluationValue& right,
65 bool return_true_case_of_equal = true) const;
66
73 const GraphSearchEvaluationValue& right,
74 Tag tag,
75 bool return_true_case_of_equal = true) const;
76
81
82private:
83 const std::map<Tag, EvaluationMethod> evaluation_method_map_;
84
86 const std::vector<Tag> evaluation_priority_list_;
87};
88
89} // namespace designlab
90
91
92#endif // DESIGNLAB_GRAPH_SEARCH_EVALUATOR_H_
グラフ探索の評価値を評価するクラス.
bool LeftIsBetterWithTag(const GraphSearchEvaluationValue &left, const GraphSearchEvaluationValue &right, Tag tag, bool return_true_case_of_equal=true) const
2つの評価値を比較する.左側の評価値が良い場合は true を返す.
GraphSearchEvaluator(const std::map< Tag, EvaluationMethod > &evaluation_method_map, const std::vector< Tag > &evaluation_priority_list)
コンストラクタ.
bool LeftIsBetter(const GraphSearchEvaluationValue &left, const GraphSearchEvaluationValue &right, bool return_true_case_of_equal=true) const
2つの評価値を比較する.左側の評価値が良い場合は true を返す.
GraphSearchEvaluator()=delete
デフォルトコンストラクタは禁止.
GraphSearchEvaluationValue InitializeEvaluationValue() const
評価値を初期化する. 自身の持つ評価方法を用いて,評価値を初期化する.
グラフ探索の評価値を格納する構造体.
float margin
この値よりも違いが小さい場合は,評価値が同じとみなす.
bool is_lower_better
評価値が小さいほど良い場合は true.