TEST_F(DynamicOracleTest, OracleTest) { while (state_->GetStackLen() > 1 || state_->GetQIndex() < nodes_.size()) { int id = BestAction(*state_, nodes_); int label = 0; CIDMap::ACTION_TYPE action = CIDMap::Interprate(id, label); if (action == CIDMap::SHIFT) { state_->Shift(pool_, sentence_); } else if (action == CIDMap::LEFT_REDUCE) { state_->ReduceLeft(label); } else { state_->ReduceRight(label); } } vector<CDepTree *> nodes; state_->GetTopStack()->CollectTreeNodes(nodes); ASSERT_EQ(nodes_.size(), nodes.size()); for (size_t i = 0; i < nodes.size(); ++i) { if (nodes_[i]->HIndex() >= 0) { EXPECT_EQ(nodes_[i]->HIndex(), nodes[i]->HIndex()); } else { EXPECT_LT(nodes[i]->HIndex(), 0); } } }
Action UCTAgent::UCT(const State& state) { const int trials = std::pow(2, 10); state_counts_[state] = 1; for (int i = 0; i < trials; ++i) { #if DEBUG double reward = MCTS(state, 0); std::cerr << ": " << reward <<std::endl; std::cerr << std::endl; #else MCTS(state, 0); #endif } return BestAction(state); }
void CAutoplayerTrace::LogBasicInfo(const char *action_taken) { CString pcards, comcards, temp, rank, pokerhand; CString fcra_formula_status; int userchair = p_symbol_engine_userchair->userchair(); int betround = p_betround_calculator->betround(); // player cards if (p_symbol_engine_userchair->userchair_confirmed()) { for (int i=0; i<=1; i++) { Card card = p_table_state->User()->_hole_cards[i]; pcards.Append(card.ToString()); } } else { pcards = "...."; } // common cards comcards = ""; if (betround >= kBetroundFlop) { for (int i=0; i<kNumberOfFlopCards; i++) { if (p_table_state->_common_cards[i].IsKnownCard()) { comcards.Append(p_table_state->_common_cards[i].ToString()); } } } if (betround >= kBetroundTurn) { comcards.Append(p_table_state->_common_cards[3].ToString()); } if (betround >= kBetroundRiver) { comcards.Append(p_table_state->_common_cards[4].ToString()); } comcards.Append(".........."); comcards = comcards.Left(10); // Always use handrank169 here rank.Format("%.0f", p_symbol_engine_handrank->handrank169()); // poker hand pokerhand = p_symbol_engine_pokerval->HandType(); // fcra_seen CString fcra_seen = p_symbol_engine_autoplayer->GetFCKRAString(); // fcra formula status fcra_formula_status.Format("%s%s%s%s%s", p_function_collection->EvaluateAutoplayerFunction(k_autoplayer_function_fold) ? "F" : ".", p_function_collection->EvaluateAutoplayerFunction(k_autoplayer_function_call) ? "C" : ".", p_function_collection->EvaluateAutoplayerFunction(k_autoplayer_function_check) ? "K" : ".", p_function_collection->EvaluateAutoplayerFunction(k_autoplayer_function_raise) ? "R" : ".", p_function_collection->EvaluateAutoplayerFunction(k_autoplayer_function_allin) ? "A" : "."); // More verbose summary in the log // The old WinHoldem format was a complete mess write_log_separator(true, "Basic Info"); write_log(k_always_log_basic_information, " Version: %s\n", VERSION_TEXT); write_log(k_always_log_basic_information, " Chairs: %5d\n", p_tablemap->nchairs()); write_log(k_always_log_basic_information, " Userchair: %5d\n", userchair); write_log(k_always_log_basic_information, " Holecards: %s\n", pcards.GetString()); write_log(k_always_log_basic_information, " Community: %s\n", comcards.GetString()); write_log(k_always_log_basic_information, " Handrank: %s\n", rank.GetString()); write_log(k_always_log_basic_information, " Hand: %s\n", pokerhand.GetString()); write_log(k_always_log_basic_information, " My balance: %9.2f\n", p_table_state->User()->_balance); write_log(k_always_log_basic_information, " My currentbet: %9.2f\n", p_table_state->User()->_bet); write_log(k_always_log_basic_information, " To call: %9.2f\n", p_symbol_engine_chip_amounts->call()); write_log(k_always_log_basic_information, " Pot: %9.2f\n", p_symbol_engine_chip_amounts->pot()); write_log(k_always_log_basic_information, " Big blind: %9.2f\n", p_symbol_engine_tablelimits->bblind()); write_log(k_always_log_basic_information, " Big bet (FL): %9.2f\n", p_symbol_engine_tablelimits->bigbet()); write_log(k_always_log_basic_information, " f$betsize: %9.2f\n", p_function_collection->EvaluateAutoplayerFunction(k_autoplayer_function_betsize)); write_log(k_always_log_basic_information, " Formulas: %s\n", fcra_formula_status.GetString()); write_log(k_always_log_basic_information, " Buttons: %s\n", fcra_seen.GetString()); write_log(k_always_log_basic_information, " Best action: %s\n", BestAction().GetString()); write_log(k_always_log_basic_information, " Action taken: %s\n", action_taken); write_log_separator(true, ""); // Also show "BestAction" in the statusbar. // This needs to be set exactly once to avoid multiple evaluations // of the autoplayer functions p_openholdem_statusbar->SetLastAction(BestAction()); }