My Project
ptypeEval.h
Go to the documentation of this file.
1/* pieceEval.h
2 */
3#ifndef OSL_PTYPEEVAL_H
4#define OSL_PTYPEEVAL_H
5
9#include <cassert>
10
11namespace osl
12{
13 namespace eval
14 {
16 {
17 protected:
21 public:
24 void init();
25 public:
29 int value(PtypeO ptypeO) const{
30 assert(isValidPtypeO(ptypeO));
31 return ptypeO2Val[ptypeO-PTYPEO_MIN];
32 }
36 int value(Ptype ptype) const{
37 assert(isValid(ptype));
38 return ptypeO2Val[ptype-PTYPEO_MIN];
39 }
43 int promoteValue(PtypeO ptypeO) const{
44 assert(isPromoted(ptypeO));
45 return promoteVal[ptypeO-PTYPEO_MIN];
46 }
50 int captureValue(PtypeO ptypeO) const{
51 assert(isValidPtypeO(ptypeO));
52 return captureVal[ptypeO-PTYPEO_MIN];
53 }
54 int diffWithMove(const NumEffectState&, Move move) const {
55 int ret = 0;
56 if (move.capturePtype() != PTYPE_EMPTY)
57 ret += captureValue(move.capturePtypeO());
58 if (move.isPromotion())
59 ret+=promoteValue(move.ptypeO());
60 return ret;
61 }
62
63 void reset(const CArray<int, PTYPE_SIZE>& values);
64 };
65 extern const PtypeEvalTable Ptype_Eval_Table;
66 } // namespace eval
67} // namespace osl
68
69#endif /* OSL_PTYPEEVAL_H */
70
71#ifndef EVAL_ML_PIECEEVAL_H
72#define EVAL_ML_PIECEEVAL_H
73
74#include "osl/eval/weights.h"
75
76namespace osl
77{
78 namespace eval
79 {
80 namespace ml
81 {
83 {
85 public:
86 static void setUp(const Weights &weights);
87 static int eval(const NumEffectState &state);
88 template<Player P>
89 static int evalWithUpdate(const NumEffectState &,
90 Move moved, int last_value)
91 {
92 assert(moved.player()==P);
93 int value = last_value;
94 if (moved.isPass() || moved.isDrop())
95 return last_value;
96 if (moved.isPromotion())
97 {
98 value -= table[moved.oldPtypeO() - PTYPEO_MIN];
99 value += table[moved.ptypeO() - PTYPEO_MIN];
100 }
101 Ptype captured = moved.capturePtype();
102 if (captured != PTYPE_EMPTY)
103 {
106 }
107 return value;
108 }
109 static int value(PtypeO ptypeO);
110 };
111 }
112 }
113}
114#endif // EVAL_ML_PIECEEVAL_H
115// ;;; Local Variables:
116// ;;; mode:c++
117// ;;; c-basic-offset:2
118// ;;; End:
119
120
121// ;;; Local Variables:
122// ;;; mode:c++
123// ;;; c-basic-offset:2
124// ;;; End:
圧縮していない moveの表現 .
PtypeO ptypeO() const
移動後のPtype, i.e., 成る手だった場合成った後
bool isPromotion() const
Player player() const
PtypeO oldPtypeO() const
移動前のPtypeO, i.e., 成る手だった場合成る前
bool isDrop() const
bool isPass() const
Ptype capturePtype() const
PtypeO capturePtypeO() const
利きを持つ局面
CArray< int, PTYPEO_SIZE > ptypeO2Val
Definition ptypeEval.h:18
CArray< int, PTYPEO_SIZE > captureVal
Definition ptypeEval.h:20
int captureValue(PtypeO ptypeO) const
ownerのptypeOがcaptureされた時の評価値の増減
Definition ptypeEval.h:50
int diffWithMove(const NumEffectState &, Move move) const
Definition ptypeEval.h:54
int promoteValue(PtypeO ptypeO) const
ptypeOにpromoteした時の評価値の増減
Definition ptypeEval.h:43
int value(Ptype ptype) const
ptypeの駒の価値
Definition ptypeEval.h:36
CArray< int, PTYPEO_SIZE > promoteVal
Definition ptypeEval.h:19
void reset(const CArray< int, PTYPE_SIZE > &values)
Definition ptypeEval.cc:26
int value(PtypeO ptypeO) const
先手から見たptypeOの駒の価値
Definition ptypeEval.h:29
static void setUp(const Weights &weights)
Definition ptypeEval.cc:63
static CArray< int, PTYPEO_SIZE > table
Definition ptypeEval.h:84
static int evalWithUpdate(const NumEffectState &, Move moved, int last_value)
Definition ptypeEval.h:89
static int value(PtypeO ptypeO)
Definition ptypeEval.cc:89
static int eval(const NumEffectState &state)
Definition ptypeEval.cc:77
const PtypeEvalTable Ptype_Eval_Table
Definition tables.cc:103
Ptype
駒の種類を4ビットでコード化する
Definition basic_type.h:84
@ PTYPE_EMPTY
Definition basic_type.h:85
bool isValidPtypeO(int ptypeO)
Definition basic_type.cc:30
Ptype unpromote(Ptype ptype)
ptypeがpromote後の型の時に,promote前の型を返す. promoteしていない型の時はそのまま返す
Definition basic_type.h:157
bool isValid(Player player)
cast等で作られたplayerが正しいかどうかを返す
Definition basic_type.cc:9
bool isPromoted(Ptype ptype)
ptypeがpromote後の型かどうかのチェック
Definition basic_type.h:137
PtypeO
Player + Ptype [-15, 15] PtypeO の O は Owner の O.
Definition basic_type.h:199
@ PTYPEO_MIN
Definition basic_type.h:200
constexpr Player alt(Player player)
Definition basic_type.h:13
PtypeO newPtypeO(Player player, Ptype ptype)
Definition basic_type.h:211
PtypeO captured(PtypeO ptypeO)
unpromoteすると共に,ownerを反転する.
Definition basic_type.h:264