My Project
openMidEndingEval.h
Go to the documentation of this file.
1 /* openMidEndingEval.h
2  */
3 
4 #ifndef EVAL_ML_OPENMIDENDINGEVAL_H
5 #define EVAL_ML_OPENMIDENDINGEVAL_H
6 
7 #include "osl/eval/weights.h"
8 #include "osl/eval/ptypeEval.h"
10 #include "osl/eval/evalTraits.h"
11 #include "osl/eval/ptypeEval.h"
12 #include "osl/numEffectState.h"
13 #include "osl/progress.h"
14 #include "osl/bits/align16New.h"
15 #include "osl/oslConfig.h"
16 #include <cstring>
17 
18 #define USE_TEST_PROGRESS
19 // NewProgressが学習可能な場合に定義 (現在はosl側に変更はないので常に定義)
20 #define LEARN_TEST_PROGRESS
21 
22 namespace osl
23 {
24  namespace eval
25  {
26  namespace ml
27  {
28  using namespace osl::progress::ml;
30  {
31  public:
33  };
34 
36  {
38  {
100  STAGE_FEATURE_LIMIT
101  };
103  {
105  BISHOP_EXCHANGE_SILVER_KING, // recalculated_value
107  KING25_EFFECT_ATTACK, // end recalculated_value
110  PROGRESS_INDEPENDENT_FEATURE_LIMIT
111  };
112  int value;
113  int progress;
116 
117  static const char *name(ProgressIndependentFeature);
118  static const char *name(StageFeature);
119  };
120 
122 #if OSL_WORDSIZE == 32
123  : public misc::Align16New
124 #endif
125  {
126  private:
127  enum { INVALID=EvalTraits<BLACK>::MAX_VALUE+1 };
128  enum {
130  ProgressIndependentValueLimit = 4000
131  };
132  enum LoadStatus { Zero=0, Loaded, Random };
133  static volatile LoadStatus initialized_flag;
137  MultiIntPair kingx_blocked, king25_effect_each;
138  MultiIntPair king25_both_side,king_rook_bishop;
139  MultiIntPair piece_stand_turn, non_pawn_attacked,
140  non_pawn_attacked_ptype, piece_fork_turn;
141  MultiInt ptypey, ptypex, king_table_value;
142  MultiInt piece_stand_value, recalculated_stage_value, pawn_advance;
143  MultiInt rook_mobility, bishop_mobility, lance_mobility;
144  MultiInt knight_advance, pawn_drop, promoted_minor_piece, rook_pawn,
145  rook_effect, bishop_effect, bishop_head, nosupport, ptype_yy, king3pieces;
147  MultiInt piece_stand_combination, piece_stand_y, knight_check,
148  knight_head, pawn_ptypeo, ptype_count_value, lance_effect_piece,
149  ptype_y_pawn_y, bishop_and_king, rook_silver_knight, bishop_silver_knight;
151  CArray<PieceMask, 2> effect25; // index: owner of king
152  CArray<PieceMask, 2> effect25_supported; // index: owner of king
157  black_king_vertical, white_king_vertical;
158  // flat
163  CArray<std::pair<Square,int>, 2> knight_drop, silver_drop, bishop_drop, rook_drop;
165  int progress_independent_value, // should be renamed to piece
166  recalculated_value, piece_pair_value;
168  int black_major_count, black_gold_count;
169  int black_attack_effect, black_attack_piece,
170  white_attack_effect, white_attack_piece,
171  black_attack_supported_piece, white_attack_supported_piece;
172  int black_defense_effect, black_defense_piece,
173  white_defense_effect, white_defense_piece;
174  mutable int cache;
176  unsigned int ptypeo_mask;
177  CArray<bool, 2> can_check; // king is defense
179  static const int ROUND_UP = 2;
180  static int roundUp(int v)
181  {
182  return v & (~(ROUND_UP-1));
183  }
185  {
186  const CArray<Square,2> kings = {{
187  state.kingSquare(BLACK),
188  state.kingSquare(WHITE),
189  }};
190  gs_near_king_count.fill(0);
191  for (int i = PtypeTraits<GOLD>::indexMin;
192  i < PtypeTraits<GOLD>::indexLimit; ++i)
193  {
194  const Piece p = state.pieceOf(i);
195  if (p.isOnBoard())
196  {
197  const Square pos = p.square();
198  const int y_diff = std::abs(pos.y() - kings[p.owner()].y());
199  const int x_diff = std::abs(pos.x() - kings[p.owner()].x());
200  if (y_diff <= 2 && x_diff <= 3)
201  {
202  ++gs_near_king_count[p.owner()][std::max(x_diff, y_diff) - 1];
203  }
204  }
205  }
206  for (int i = PtypeTraits<SILVER>::indexMin;
207  i < PtypeTraits<SILVER>::indexLimit; ++i)
208  {
209  const Piece p = state.pieceOf(i);
210  if (p.isOnBoard())
211  {
212  const Square pos = p.square();
213  const int y_diff = std::abs(pos.y() - kings[p.owner()].y());
214  const int x_diff = std::abs(pos.x() - kings[p.owner()].x());
215  if (y_diff <= 2 && x_diff <= 3)
216  {
217  ++gs_near_king_count[p.owner()][std::max(x_diff, y_diff) - 1];
218  }
219  }
220  }
221  }
222  public:
223  explicit OpenMidEndingEval
224  (const NumEffectState &state=NumEffectState(),
225  bool limit_progress_independent_value=! OslConfig::hasByoyomi());
227  {
228  if (this != &src)
229  memcpy(this, &src, sizeof(OpenMidEndingEval));
230  return *this;
231  }
232  void changeTurn() { }
233  static bool initialized()
234  {
235  return initialized_flag;
236  }
237  static bool setUp(const char *filename);
238  static bool setUp();
239  static std::string defaultFilename();
241  {
242  return progress_independent_value + recalculated_value + piece_pair_value
243  + piece_pair_king_value[BLACK] + piece_pair_king_value[WHITE];
244  }
245  void debug() const;
247  {
248  return king_table_value + piece_stand_value +
249  king25_effect_each[BLACK] + king25_effect_each[WHITE] +
250  ptypex + ptypey + rook_mobility + bishop_mobility + lance_mobility +
251  rook_effect + bishop_effect +
252  piece_stand_combination + piece_stand_turn[turn] +
253  rook_pawn + pawn_drop + piece_stand_y + knight_check +
254  pawn_advance + pawn_ptypeo + promoted_minor_piece +
255  nosupport +
256  non_pawn_attacked[turn] + non_pawn_attacked_ptype[turn] +
257  ptype_yy + king3pieces + bishop_head + knight_head
258  + rook_promote_defense +
259  ptype_count_value + lance_effect_piece + ptype_y_pawn_y +
260  bishop_and_king + piece_fork_turn[turn] + rook_silver_knight + bishop_silver_knight +
261  recalculated_stage_value;
262  }
263  int openingValue() const
264  {
265  return stageValue()[0];
266  }
267  int midgameValue() const
268  {
269  return stageValue()[1];
270  }
271  int midgame2Value() const
272  {
273  return stageValue()[2];
274  }
275  int endgameValue() const
276  {
277  return stageValue()[EndgameIndex];
278  }
279  void invalidateCache() { cache=INVALID; }
280  static int progressIndependentValueAdjusted(int value, int progress,
281  int progress_max)
282  {
283  if (value > ProgressIndependentValueLimit) {
284  int diff = value - ProgressIndependentValueLimit;
285  value = ProgressIndependentValueLimit
286  + diff * progress/progress_max;
287  }
288  else if (value < -ProgressIndependentValueLimit) {
289  int diff = value + ProgressIndependentValueLimit;
290  value = -ProgressIndependentValueLimit
291  + diff * progress/progress_max;
292  }
293  return value;
294  }
296  {
297  const int progress_max = NewProgress::maxProgress(), c = progress_max/2;
298  const int progress = this->progress.progress();
299  int progress_independent = use_progress_independent_value_limit
300  ? progressIndependentValueAdjusted
301  (progressIndependentValue(), progress, progress_max)
302  : progressIndependentValue();
303  int sum = progress_independent * progress_max;
304  if (progress < c)
305  {
306  sum += openingValue() * 2*(c - progress);
307  sum += midgameValue() * 2*progress;
308  }
309  else
310  {
311  sum += midgameValue() * 2*(progress_max - progress);
312  sum += endgameValue() * 2*(progress - c);
313  }
314  return sum;
315  }
316 #ifdef EVAL_QUAD
317  int composeOpenMid2Endgame() const
318  {
319  const int progress_max = NewProgress::maxProgress();
320  const int progress = this->progress.progress();
321  const int c0 = progress_max/3, c1 = c0*2;
322 #ifndef NDEBUG
323  const int w2 = progress_max - c1;
324 #endif
325  assert(c0 == w2);
326  int progress_independent = use_progress_independent_value_limit
327  ? progressIndependentValueAdjusted
328  (progressIndependentValue(), progress, progress_max)
329  : progressIndependentValue();
330  int sum = progress_independent * c0;
331  const MultiInt stage_sum = stageValue();
332  if (progress < c0)
333  {
334  sum += stage_sum[0] * (c0 - progress);
335  sum += stage_sum[1] * progress;
336  }
337  else if (progress < c1)
338  {
339  sum += stage_sum[1] * (c1 - progress);
340  sum += stage_sum[2] * (progress-c0);
341  }
342  else
343  {
344  sum += stage_sum[2] * (progress_max - progress);
345  sum += stage_sum[3] * (progress - c1);
346  }
347  return sum;
348  }
349 #endif
350  int value() const
351  {
352  if (cache==INVALID)
353  {
354 #ifdef EVAL_QUAD
355  cache = roundUp(composeOpenMid2Endgame());
356 #else
357  cache = roundUp(composeOpenMidEndgame());
358 #endif
359  }
360  return cache;
361  }
362  const Move suggestMove(const NumEffectState& state) const
363  {
364  assert(turn == state.turn());
365  Move suggest;
366  int best_value = 0;
367  if (! rook_drop[turn].first.isPieceStand()) {
368  assert(state.hasPieceOnStand(turn, ROOK));
369  suggest = Move(rook_drop[turn].first, ROOK, turn);
370  best_value = rook_drop[turn].second;
371  }
372  assert(best_value >= 0);
373  if (bishop_drop[turn].second > best_value) {
374  assert(! bishop_drop[turn].first.isPieceStand());
375  assert(state.hasPieceOnStand(turn, BISHOP));
376  suggest = Move(bishop_drop[turn].first, BISHOP, turn);
377  best_value = bishop_drop[turn].second;
378  }
379  if (silver_drop[turn].second > best_value) {
380  assert(! silver_drop[turn].first.isPieceStand());
381  assert(state.hasPieceOnStand(turn, SILVER));
382  suggest = Move(silver_drop[turn].first, SILVER, turn);
383  best_value = silver_drop[turn].second;
384  }
385  if (knight_drop[turn].second > best_value
386  && state.hasPieceOnStand(turn, KNIGHT)) {
387  assert(! knight_drop[turn].first.isPieceStand());
388  suggest = Move(knight_drop[turn].first, KNIGHT, turn);
389  best_value = knight_drop[turn].second;
390  }
391  return suggest;
392  }
393  int expect(const NumEffectState &state, Move move) const;
394  template<Player P>
395  void updateSub(const NumEffectState &new_state, Move last_move);
396  void update(const NumEffectState &new_state, Move last_move);
397  const Progress32 progress32() const
398  {
399  return Progress32(progress.progress16(BLACK).value()
400  + progress.progress16(WHITE).value());
401  }
402  const Progress16 progress16() const { return progress.progress16(); }
403  int progressValue() const { return progress.progress(); }
404  int progressMax() const { return progress.maxProgress(); }
405  public:
406  static int infty()
407  {
408 #ifdef EVAL_QUAD
409  assert(NewProgress::maxProgress() % 3 == 0);
410  return 57984 * (NewProgress::maxProgress()/3);
411 #else
412  return 57984 * NewProgress::maxProgress();
413 #endif
414  }
415  static int captureValue(PtypeO ptypeO) {
416  assert(isValidPtypeO(ptypeO));
417  return roundUp((-PieceEval::value(ptypeO) +
418  PieceEval::value(captured(ptypeO))) * seeScale());
419  }
420  static int seeScale() {
421 #ifdef EVAL_QUAD
422  assert(NewProgress::maxProgress() % 3 == 0);
423  return (NewProgress::maxProgress()/3);
424 #else
425  return NewProgress::maxProgress();
426 #endif
427  }
428 
429  OpenMidEndingEvalDebugInfo debugInfo(const NumEffectState &state);
430  static void setRandom();
431  static void resetWeights(const int *w, size_t length);
434  return use_progress_independent_value_limit;
435  }
436  private:
437  template <class Reader>
438  static void doResetWeights(Reader& reader);
439  };
440  }
441  using ml::OpenMidEndingEval;
442  }
443  using eval::OpenMidEndingEval;
444 }
445 
446 #endif // EVAL_ML_OPENMIDENDINGEVAL_H
447 // ;;; Local Variables:
448 // ;;; mode:c++
449 // ;;; c-basic-offset:2
450 // ;;; coding:utf-8
451 // ;;; End:
osl::eval::ml::OpenMidEndingEvalDebugInfo::ROOK_PROMOTE_DEFENSE
@ ROOK_PROMOTE_DEFENSE
Definition: openMidEndingEval.h:65
osl::eval::ml::OpenMidEndingEvalDebugInfo::ROOK_PAWN
@ ROOK_PAWN
Definition: openMidEndingEval.h:51
osl::eval::ml::OpenMidEndingEvalDebugInfo::BISHOP_HEAD
@ BISHOP_HEAD
Definition: openMidEndingEval.h:63
osl::eval::ml::OpenMidEndingEvalDebugInfo::KNIGHT_HEAD
@ KNIGHT_HEAD
Definition: openMidEndingEval.h:64
osl::eval::ml::OpenMidEndingEval::infty
static int infty()
Definition: openMidEndingEval.h:406
osl::eval::ml::OpenMidEndingEval::silver_drop
CArray< std::pair< Square, int >, 2 > silver_drop
Definition: openMidEndingEval.h:163
evalTraits.h
osl::eval::ml::OpenMidEndingEval::effected_mask_for_attacked
CArray< PieceMask, 2 > effected_mask_for_attacked
Definition: openMidEndingEval.h:154
osl::eval::ml::OpenMidEndingEvalDebugInfo::PAWN_DROP
@ PAWN_DROP
Definition: openMidEndingEval.h:52
osl::progress::Progress16
ProgressN< 16 > Progress16
Definition: progress.h:42
osl::eval::ml::OpenMidEndingEval::updateGoldSilverNearKing
void updateGoldSilverNearKing(const NumEffectState &state)
Definition: openMidEndingEval.h:184
osl::eval::ml::OpenMidEndingEval::white_defense_piece
int white_defense_piece
Definition: openMidEndingEval.h:173
osl::Square
Definition: basic_type.h:532
osl::eval::ml::OpenMidEndingEvalDebugInfo::PIECE_STAND
@ PIECE_STAND
Definition: openMidEndingEval.h:40
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING25_EFFECT3
@ KING25_EFFECT3
Definition: openMidEndingEval.h:93
osl::eval::ml::OpenMidEndingEval::effect25_supported
CArray< PieceMask, 2 > effect25_supported
Definition: openMidEndingEval.h:152
osl::eval::ml::OpenMidEndingEval::progress
progress_t progress
Definition: openMidEndingEval.h:136
OSL_WORDSIZE
#define OSL_WORDSIZE
Definition: config.h:6
osl::eval::ml::OpenMidEndingEvalDebugInfo::BISHOP_SILVER_KNIGHT
@ BISHOP_SILVER_KNIGHT
Definition: openMidEndingEval.h:72
osl::eval::ml::OpenMidEndingEval::kingx_blocked
MultiIntPair kingx_blocked
Definition: openMidEndingEval.h:137
osl::eval::ml::OpenMidEndingEval::white_attack_supported_piece
int white_attack_supported_piece
Definition: openMidEndingEval.h:171
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING_ROOK_BISHOP
@ KING_ROOK_BISHOP
Definition: openMidEndingEval.h:74
osl::eval::ml::OpenMidEndingEval::initialized
static bool initialized()
Definition: openMidEndingEval.h:233
osl::progress::ml::NewProgress::maxProgress
static int maxProgress()
Definition: progress.h:243
osl::container::QuadInt
Definition: quadInt.h:43
osl::eval::ml::OpenMidEndingEval::piece_pair_weights
static Weights piece_pair_weights
Definition: openMidEndingEval.h:134
osl::eval::ml::OpenMidEndingEval::piece_pair_king_value
CArray< int, 2 > piece_pair_king_value
Definition: openMidEndingEval.h:159
osl::WHITE
@ WHITE
Definition: basic_type.h:10
osl::container::QuadIntPair
Definition: quadInt.h:155
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING25_EFFECT_EACH
@ KING25_EFFECT_EACH
Definition: openMidEndingEval.h:41
osl::eval::ml::OpenMidEndingEval::effected_mask
CArray< PieceMask, 2 > effected_mask
Definition: openMidEndingEval.h:153
osl::eval::ml::OpenMidEndingEvalDebugInfo::BISHOP_EFFECT
@ BISHOP_EFFECT
Definition: openMidEndingEval.h:48
osl::eval::ml::OpenMidEndingEvalDebugInfo::PAWN_PTYPEO
@ PAWN_PTYPEO
Definition: openMidEndingEval.h:56
osl::eval::ml::OpenMidEndingEvalDebugInfo::StageFeature
StageFeature
Definition: openMidEndingEval.h:38
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING25_MOBILITY
@ KING25_MOBILITY
Definition: openMidEndingEval.h:89
osl::eval::ml::OpenMidEndingEval::openingValue
int openingValue() const
Definition: openMidEndingEval.h:263
osl::eval::ml::OpenMidEndingEval::white_king_vertical
CArray< int, 5 > white_king_vertical
Definition: openMidEndingEval.h:157
osl::eval::ml::OpenMidEndingEval::operator=
OpenMidEndingEval & operator=(const OpenMidEndingEval &src)
Definition: openMidEndingEval.h:226
osl::progress::ml::NewProgress::progress
int progress() const
Definition: progress.h:225
osl::eval::ml::OpenMidEndingEval::ptype_count_value
MultiInt ptype_count_value
Definition: openMidEndingEval.h:148
osl::eval::ml::OpenMidEndingEval::progressIndependentValue
int progressIndependentValue() const
Definition: openMidEndingEval.h:240
osl::eval::ml::OpenMidEndingEval::rook_promote_defense
MultiInt rook_promote_defense
Definition: openMidEndingEval.h:146
osl::eval::ml::OpenMidEndingEval::progress_independent_value
int progress_independent_value
Definition: openMidEndingEval.h:165
osl::eval::ml::OpenMidEndingEvalDebugInfo::PTYPE_YY
@ PTYPE_YY
Definition: openMidEndingEval.h:61
evalStagePair.h
eval
weights.h
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING25_EFFECT_DEFENSE
@ KING25_EFFECT_DEFENSE
Definition: openMidEndingEval.h:80
osl::eval::PtypeEvalTable
Definition: ptypeEval.h:16
osl::isValidPtypeO
bool isValidPtypeO(int ptypeO)
Definition: basic_type.cc:30
osl::eval::ml::OpenMidEndingEval::attacked_mask
CArray< PieceMask, 40 > attacked_mask
Definition: openMidEndingEval.h:155
osl::eval::ml::OpenMidEndingEvalDebugInfo::ENTER_KING_DEFENSE
@ ENTER_KING_DEFENSE
Definition: openMidEndingEval.h:106
osl::eval::ml::OpenMidEndingEvalDebugInfo::ANAGUMA_EMPTY
@ ANAGUMA_EMPTY
Definition: openMidEndingEval.h:81
osl::eval::ml::OpenMidEndingEval::suggestMove
const Move suggestMove(const NumEffectState &state) const
Definition: openMidEndingEval.h:362
osl::eval::ml::OpenMidEndingEvalDebugInfo::ROOK_SILVER_KNIGHT
@ ROOK_SILVER_KNIGHT
Definition: openMidEndingEval.h:71
osl::eval::ml::OpenMidEndingEvalDebugInfo::BISHOP_BISHOP_PIECE
@ BISHOP_BISHOP_PIECE
Definition: openMidEndingEval.h:94
osl::eval::ml::OpenMidEndingEval::effect25
CArray< PieceMask, 2 > effect25
Definition: openMidEndingEval.h:151
osl::eval::ml::OpenMidEndingEval::cache
int cache
Definition: openMidEndingEval.h:174
osl::eval::ml::OpenMidEndingEval::recalculated_value
int recalculated_value
Definition: openMidEndingEval.h:166
osl::eval::ml::PieceEval::value
static int value(PtypeO ptypeO)
Definition: ptypeEval.cc:89
osl::eval::ml::OpenMidEndingEval::value
int value() const
Definition: openMidEndingEval.h:350
osl::Move
圧縮していない moveの表現 .
Definition: basic_type.h:1052
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING25_EFFECT_SUPPORTED
@ KING25_EFFECT_SUPPORTED
Definition: openMidEndingEval.h:73
osl::eval::ml::OpenMidEndingEvalDebugInfo::BISHOP_EXCHANGE_SILVER_KING
@ BISHOP_EXCHANGE_SILVER_KING
Definition: openMidEndingEval.h:105
osl::eval::ml::OpenMidEndingEval::rook_pawn
MultiInt rook_pawn
Definition: openMidEndingEval.h:144
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING_PIECE_RELATIVE
@ KING_PIECE_RELATIVE
Definition: openMidEndingEval.h:39
osl::eval::ml::OpenMidEndingEval::gs_near_king_count
CArray2d< int, 2, 3 > gs_near_king_count
Definition: openMidEndingEval.h:161
osl::eval::ml::OpenMidEndingEvalDebugInfo
Definition: openMidEndingEval.h:36
osl::eval::ml::OpenMidEndingEval::initialized_flag
static volatile LoadStatus initialized_flag
Definition: openMidEndingEval.h:133
osl::eval::ml::Weights
Definition: weights.h:18
osl::PtypeTraits
Definition: ptypeTraits.h:12
osl::eval::ml::OpenMidEndingEvalDebugInfo::stage_values
CArray< MultiInt, STAGE_FEATURE_LIMIT > stage_values
Definition: openMidEndingEval.h:115
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING_MOBILITY
@ KING_MOBILITY
Definition: openMidEndingEval.h:85
osl::eval::ml::OpenMidEndingEvalDebugInfo::ALL_GOLD
@ ALL_GOLD
Definition: openMidEndingEval.h:78
osl::eval::ml::OpenMidEndingEvalDebugInfo::PTYPE_COUNT
@ PTYPE_COUNT
Definition: openMidEndingEval.h:66
osl::eval::ml::OpenMidEndingEval::non_pawn_stand_count
CArray< int, 2 > non_pawn_stand_count
Definition: openMidEndingEval.h:160
osl::eval::ml::OpenMidEndingEvalDebugInfo::MAJOR_CHECK_WITH_CAPTURE
@ MAJOR_CHECK_WITH_CAPTURE
Definition: openMidEndingEval.h:91
osl::eval::ml::OpenMidEndingEval::white_vertical
CArray< int, 5 > white_vertical
Definition: openMidEndingEval.h:156
osl::progress::ml
Definition: progress.cc:756
osl::eval::ml::OpenMidEndingEvalDebugInfo::NO_PAWN_ON_STAND
@ NO_PAWN_ON_STAND
Definition: openMidEndingEval.h:82
osl::eval::ml::OpenMidEndingEval::roundUp
static int roundUp(int v)
Definition: openMidEndingEval.h:180
osl::eval::ml::OpenMidEndingEvalDebugInfo::PIECE_STAND_COMBINATION
@ PIECE_STAND_COMBINATION
Definition: openMidEndingEval.h:49
osl::eval::ml::OpenMidEndingEvalDebugInfo::NON_PAWN_ATTACKED_PTYPE
@ NON_PAWN_ATTACKED_PTYPE
Definition: openMidEndingEval.h:60
osl::eval::ml::OpenMidEndingEvalDebugInfo::GOLD_AND_SILVER_NEAR_KING
@ GOLD_AND_SILVER_NEAR_KING
Definition: openMidEndingEval.h:86
osl::eval::ml::OpenMidEndingEval::use_progress_independent_value_limit
bool use_progress_independent_value_limit
Definition: openMidEndingEval.h:178
osl::eval::ml::OpenMidEndingEvalDebugInfo::ROOK_EFFECT
@ ROOK_EFFECT
Definition: openMidEndingEval.h:47
osl::eval::ml::OpenMidEndingEval::seeScale
static int seeScale()
Definition: openMidEndingEval.h:420
osl::Piece
駒.
Definition: basic_type.h:788
osl::eval::ml::OpenMidEndingEval::progress16
const Progress16 progress16() const
Definition: openMidEndingEval.h:402
osl::eval::ml::OpenMidEndingEvalDebugInfo::ROOK_MOBILITY
@ ROOK_MOBILITY
Definition: openMidEndingEval.h:44
osl::misc::Align16New
Definition: align16New.h:12
osl::eval::ml::OpenMidEndingEval::midgameValue
int midgameValue() const
Definition: openMidEndingEval.h:267
osl::eval::ml::OpenMidEndingEvalDebugInfo::PIN_PTYPE_ALL
@ PIN_PTYPE_ALL
Definition: openMidEndingEval.h:84
osl::eval::ml::OpenMidEndingEval::midgame2Value
int midgame2Value() const
Definition: openMidEndingEval.h:271
osl::eval::ml::OpenMidEndingEval::progressMax
int progressMax() const
Definition: openMidEndingEval.h:404
osl::eval::max
int max(Player p, int v1, int v2)
Definition: evalTraits.h:84
osl::eval::ml::OpenMidEndingEval::progressValue
int progressValue() const
Definition: openMidEndingEval.h:403
osl::SimpleState::pieceOf
const Piece pieceOf(int num) const
Definition: simpleState.h:76
osl::EndgameIndex
const int EndgameIndex
Definition: midgame.h:16
osl::progress::ml::NewProgress
Definition: progress.h:76
osl::eval::ml::OpenMidEndingEvalDebugInfo::PAWN_ADVANCE
@ PAWN_ADVANCE
Definition: openMidEndingEval.h:55
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING25_EFFECT_ATTACK
@ KING25_EFFECT_ATTACK
Definition: openMidEndingEval.h:107
osl::eval::ml::OpenMidEndingEval::turn
Player turn
Definition: openMidEndingEval.h:175
osl::eval::ml::OpenMidEndingEval::recalculated_stage_value
MultiInt recalculated_stage_value
Definition: openMidEndingEval.h:142
osl::eval::ml::OpenMidEndingEval::black_pawn_count
int black_pawn_count
Definition: openMidEndingEval.h:167
osl::eval::ml::OpenMidEndingEvalDebugInfo::LANCE_MOBILITY
@ LANCE_MOBILITY
Definition: openMidEndingEval.h:46
osl::eval::ml::OpenMidEndingEvalDebugInfo::ALL_MAJOR
@ ALL_MAJOR
Definition: openMidEndingEval.h:79
osl::eval::ml::OpenMidEndingEval::progress32
const Progress32 progress32() const
Definition: openMidEndingEval.h:397
osl::eval::ml::OpenMidEndingEval::pawns
CArray2d< int, 2, 9 > pawns
Definition: openMidEndingEval.h:164
osl::eval::ml::OpenMidEndingEval::can_check
CArray< bool, 2 > can_check
Definition: openMidEndingEval.h:177
osl::eval::ml::OpenMidEndingEvalDebugInfo::KNIGHT_CHECK
@ KNIGHT_CHECK
Definition: openMidEndingEval.h:54
osl::eval::ml::OpenMidEndingEvalDebugInfo::PIECE_FORK_TURN
@ PIECE_FORK_TURN
Definition: openMidEndingEval.h:70
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING3PIECES
@ KING3PIECES
Definition: openMidEndingEval.h:62
osl::OslConfig::hasByoyomi
static bool hasByoyomi()
Definition: oslConfig.cc:175
osl::BISHOP
@ BISHOP
Definition: basic_type.h:99
osl::eval::ml::OpenMidEndingEvalDebugInfo::PTYPE_Y_PAWN_Y
@ PTYPE_Y_PAWN_Y
Definition: openMidEndingEval.h:68
osl::eval::ml::OpenMidEndingEvalDebugInfo::PIECE_PAIR
@ PIECE_PAIR
Definition: openMidEndingEval.h:108
osl::eval::ml::OpenMidEndingEval::LoadStatus
LoadStatus
Definition: openMidEndingEval.h:132
osl::eval::ml::OpenMidEndingEval::ptypey
MultiInt ptypey
Definition: openMidEndingEval.h:141
ptypeEval.h
osl::eval::ml::OpenMidEndingEval::black_attack_piece
int black_attack_piece
Definition: openMidEndingEval.h:169
osl::eval::ml::OpenMidEndingEval::piece_stand_y
MultiInt piece_stand_y
Definition: openMidEndingEval.h:147
osl::eval::ml::OpenMidEndingEval::ptypeo_mask
unsigned int ptypeo_mask
Definition: openMidEndingEval.h:176
osl::CArray::fill
void fill(const T_simple &value=T_simple())
Definition: container.h:67
osl::eval::ml::OpenMidEndingEvalDebugInfo::PTYPEY
@ PTYPEY
Definition: openMidEndingEval.h:43
osl::eval::ml::OpenMidEndingEval::rook_effect
MultiInt rook_effect
Definition: openMidEndingEval.h:145
osl::eval::ml::OpenMidEndingEvalDebugInfo::BISHOP_AND_KING
@ BISHOP_AND_KING
Definition: openMidEndingEval.h:69
oslConfig.h
osl::Piece::owner
Player owner() const
Definition: basic_type.h:963
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING_PIECE_RELATIVE_NOSUPPORT
@ KING_PIECE_RELATIVE_NOSUPPORT
Definition: openMidEndingEval.h:58
osl::eval::ml::OpenMidEndingEvalDebugInfo::NON_PAWN_ATTACKED_PTYPE_PAIR
@ NON_PAWN_ATTACKED_PTYPE_PAIR
Definition: openMidEndingEval.h:98
osl::eval::ml::OpenMidEndingEvalDebugInfo::BISHOP_STAND_FILE5
@ BISHOP_STAND_FILE5
Definition: openMidEndingEval.h:90
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING25_BOTH_SIDE
@ KING25_BOTH_SIDE
Definition: openMidEndingEval.h:88
osl::eval::ml::OpenMidEndingEval::ptype_count
CArray2d< int, 2, PTYPE_SIZE > ptype_count
Definition: openMidEndingEval.h:162
osl::eval::ml::OpenMidEndingEvalDebugInfo::SILVER_RETREAT
@ SILVER_RETREAT
Definition: openMidEndingEval.h:77
osl::SimpleState::hasPieceOnStand
bool hasPieceOnStand(Player player, Ptype ptype) const
Definition: simpleState.h:191
osl::Square::x
int x() const
将棋としてのX座標を返す.
Definition: basic_type.h:563
osl::eval::ml::OpenMidEndingEval::stageValue
MultiInt stageValue() const
Definition: openMidEndingEval.h:246
osl::PtypeO
PtypeO
Player + Ptype [-15, 15] PtypeO の O は Owner の O.
Definition: basic_type.h:199
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING_X_BLOCKED3
@ KING_X_BLOCKED3
Definition: openMidEndingEval.h:75
osl::captured
PtypeO captured(PtypeO ptypeO)
unpromoteすると共に,ownerを反転する.
Definition: basic_type.h:264
osl::NumEffectState
利きを持つ局面
Definition: numEffectState.h:34
osl::eval::ml::OpenMidEndingEval::rook_silver_knight
MultiInt rook_silver_knight
Definition: openMidEndingEval.h:149
osl::ROOK
@ ROOK
Definition: basic_type.h:100
osl::eval::ml::OpenMidEndingEval
Definition: openMidEndingEval.h:125
osl::eval::ml::OpenMidEndingEval::Piece_Value
static OpenMidEndingPtypeTable Piece_Value
Definition: openMidEndingEval.h:432
osl::SimpleState::kingSquare
Square kingSquare() const
Definition: simpleState.h:94
osl::eval::ml::OpenMidEndingEvalDebugInfo::GOLD_RETREAT
@ GOLD_RETREAT
Definition: openMidEndingEval.h:76
osl::Square::y
int y() const
将棋としてのY座標を返す.
Definition: basic_type.h:567
osl::eval::ml::OpenMidEndingEvalDebugInfo::ROOK_ROOK
@ ROOK_ROOK
Definition: openMidEndingEval.h:95
align16New.h
osl::eval::ml::OpenMidEndingEval::black_defense_piece
int black_defense_piece
Definition: openMidEndingEval.h:172
osl::eval::ml::OpenMidEndingEvalDebugInfo::value
int value
Definition: openMidEndingEval.h:112
osl::Piece::square
const Square square() const
Definition: basic_type.h:832
osl::eval::ml::OpenMidEndingEval::knight_fork_squares
CArray< BoardMask, 2 > knight_fork_squares
Definition: openMidEndingEval.h:150
progress.h
osl::eval::ml::OpenMidEndingEvalDebugInfo::BISHOP_MOBILITY
@ BISHOP_MOBILITY
Definition: openMidEndingEval.h:45
osl::eval::ml::OpenMidEndingEval::king_rook_bishop
MultiIntPair king_rook_bishop
Definition: openMidEndingEval.h:138
osl::eval::ml::OpenMidEndingEvalDebugInfo::SILVER_ADVANCE26
@ SILVER_ADVANCE26
Definition: openMidEndingEval.h:92
osl::BLACK
@ BLACK
Definition: basic_type.h:9
osl::eval::ml::OpenMidEndingEval::endgameValue
int endgameValue() const
Definition: openMidEndingEval.h:275
osl::eval::ml::OpenMidEndingEvalDebugInfo::LANCE_EFFECT_PIECE
@ LANCE_EFFECT_PIECE
Definition: openMidEndingEval.h:67
osl::eval::ml::OpenMidEndingEvalDebugInfo::progress
int progress
Definition: openMidEndingEval.h:113
osl::eval::ml::OpenMidEndingEvalDebugInfo::NON_PAWN_PIECE_STAND
@ NON_PAWN_PIECE_STAND
Definition: openMidEndingEval.h:83
osl::eval::ml::OpenMidEndingEvalDebugInfo::ProgressIndependentFeature
ProgressIndependentFeature
Definition: openMidEndingEval.h:103
osl::SILVER
@ SILVER
Definition: basic_type.h:98
osl::eval::ml::OpenMidEndingEvalDebugInfo::PROMOTED_MINOR_PIECE
@ PROMOTED_MINOR_PIECE
Definition: openMidEndingEval.h:57
osl::eval::ml::OpenMidEndingEval::rook_mobility
MultiInt rook_mobility
Definition: openMidEndingEval.h:143
osl::eval::ml::OpenMidEndingEval::invalidateCache
void invalidateCache()
Definition: openMidEndingEval.h:279
osl::eval::ml::OpenMidEndingEvalDebugInfo::KING25_EFFECT_COUNT_COMBINATION
@ KING25_EFFECT_COUNT_COMBINATION
Definition: openMidEndingEval.h:97
osl::eval::ml::OpenMidEndingEvalDebugInfo::NON_PAWN_ATTACKED
@ NON_PAWN_ATTACKED
Definition: openMidEndingEval.h:59
osl::eval::ml::OpenMidEndingEval::piece_fork_turn
MultiIntPair piece_fork_turn
Definition: openMidEndingEval.h:140
osl::eval::ml::OpenMidEndingEvalDebugInfo::PIECE_STAND_TURN
@ PIECE_STAND_TURN
Definition: openMidEndingEval.h:50
osl::eval::ml::OpenMidEndingEvalDebugInfo::PIECE_PAIR_KING
@ PIECE_PAIR_KING
Definition: openMidEndingEval.h:109
osl::eval::ml::OpenMidEndingEvalDebugInfo::ATTACK_MAJORS_IN_BASE
@ ATTACK_MAJORS_IN_BASE
Definition: openMidEndingEval.h:99
osl::SimpleState::turn
Player turn() const
Definition: simpleState.h:220
osl::eval::ml::OpenMidEndingEval::progressIndependentValueAdjusted
static int progressIndependentValueAdjusted(int value, int progress, int progress_max)
Definition: openMidEndingEval.h:280
osl::eval::ml::OpenMidEndingEvalDebugInfo::progress_independent_values
CArray< int, PROGRESS_INDEPENDENT_FEATURE_LIMIT > progress_independent_values
Definition: openMidEndingEval.h:114
osl::eval::ml::OpenMidEndingEval::progress_t
osl::progress::ml::NewProgress progress_t
Definition: openMidEndingEval.h:135
osl::eval::ml::OpenMidEndingEval::piece_stand_turn
MultiIntPair piece_stand_turn
Definition: openMidEndingEval.h:139
osl::eval::ml::OpenMidEndingEvalDebugInfo::PIECE
@ PIECE
Definition: openMidEndingEval.h:104
osl::Player
Player
Definition: basic_type.h:8
numEffectState.h
osl::eval::ml::OpenMidEndingEvalDebugInfo::PTYPEX
@ PTYPEX
Definition: openMidEndingEval.h:42
osl::eval::EvalTraits
Definition: evalTraits.h:13
osl::CArray< int, PROGRESS_INDEPENDENT_FEATURE_LIMIT >
osl::eval::ml::OpenMidEndingEvalDebugInfo::PIECE_STAND_Y
@ PIECE_STAND_Y
Definition: openMidEndingEval.h:53
osl::progress::Progress32
ProgressN< 32 > Progress32
Definition: progress.h:43
osl::eval::ml::OpenMidEndingEval::changeTurn
void changeTurn()
Definition: openMidEndingEval.h:232
osl::eval::ml::OpenMidEndingEval::captureValue
static int captureValue(PtypeO ptypeO)
Definition: openMidEndingEval.h:415
osl::Piece::isOnBoard
bool isOnBoard() const
Definition: basic_type.h:985
osl::eval::ml::OpenMidEndingEvalDebugInfo::PTYPE_COMBINATION
@ PTYPE_COMBINATION
Definition: openMidEndingEval.h:87
osl::eval::ml::OpenMidEndingEval::black_major_count
int black_major_count
Definition: openMidEndingEval.h:168
osl::eval::ml::OpenMidEndingEval::white_attack_piece
int white_attack_piece
Definition: openMidEndingEval.h:170
osl::eval::ml::OpenMidEndingEvalDebugInfo::ROOK_ROOK_PIECE
@ ROOK_ROOK_PIECE
Definition: openMidEndingEval.h:96
osl
Definition: additionalEffect.h:6
osl::eval::ml::OpenMidEndingEval::progressIndependentValueLimit
bool progressIndependentValueLimit() const
Definition: openMidEndingEval.h:433
osl::eval::ml::OpenMidEndingEval::composeOpenMidEndgame
int composeOpenMidEndgame() const
Definition: openMidEndingEval.h:295
osl::eval::ml::OpenMidEndingPtypeTable
Definition: openMidEndingEval.h:30
osl::KNIGHT
@ KNIGHT
Definition: basic_type.h:97