Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 KB | None | 0 0
  1. void BuildOrderTrackerClass::recordWinningBuild(bool isWinner)
  2. {
  3.     ofstream config("bwapi-data/write/" + Broodwar->enemy()->getName() + ".txt", ios::trunc);
  4.     string token;
  5.  
  6.     bool update;
  7.     int offset = !isWinner;
  8.     while (ss >> token)
  9.     {
  10.         if (update)
  11.         {
  12.             if (offset == 0)
  13.             {
  14.                 update = false;
  15.                 config << stoi(token) + 1;
  16.                 continue;
  17.             }
  18.             else
  19.             {
  20.                 offset--;
  21.             }
  22.         }
  23.         if (token == currentBuild)
  24.         {
  25.             update = true;
  26.         }
  27.         config << token;
  28.     }
  29.     return;
  30. }
  31.  
  32. void BuildOrderTrackerClass::loadConfig()
  33. {
  34.     string build, buffer;
  35.     int wins, losses, gamesPlayed;
  36.     double best;
  37.     ifstream config("bwapi-data/read/" + Broodwar->enemy()->getName() + ".txt");
  38.  
  39.     if (!config)
  40.     {
  41.         config.open("bwapi-data/write/" + Broodwar->enemy()->getName() + ".txt");
  42.     }
  43.  
  44.     while (config >> buffer)
  45.     {
  46.         ss << buffer << " ";
  47.     }
  48.  
  49.     stringstream ss2;
  50.     ss2 << ss.rdbuf();
  51.     while (!ss2.eof())
  52.     {
  53.         ss2 >> build >> wins >> losses;
  54.         gamesPlayed += wins + losses;
  55.     }
  56.  
  57.     ss2 << ss.rdbuf();
  58.     while (!ss2.eof())
  59.     {
  60.         ss2 >> build >> wins >> losses;
  61.         if ((wins + losses) <= 0)
  62.         {
  63.             currentBuild = build;
  64.             return;
  65.         }
  66.         else
  67.         {
  68.             double winRate = gamesPlayed > 0 ? wins / static_cast<double>(gamesPlayed) : 0;
  69.             double ucbVal = 0.5 * sqrt(log((double)gamesPlayed / gamesPlayed));
  70.             double val = winRate + ucbVal;
  71.             if (val > best)
  72.             {
  73.                 best = val;
  74.                 currentBuild = build;
  75.             }
  76.         }
  77.     }
  78.     return;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement