コード例 #1
0
ファイル: DynamicOracleTest.cpp プロジェクト: majineu/Parser
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);
    }
  }
}
コード例 #2
0
ファイル: uct.cpp プロジェクト: aijunbai/maxq-op
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);
}
コード例 #3
0
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());
}