BotName: CSE
Race: Protoss
Authors: Junge Zhang, Wei Guo, Qiyue Yin, Dong Zhan, Qiwei Wang, Yihui Hu, Shengqi Shen, Kaiqi Huang
Description: Out bot is based on hard-coded rules, with some machine learning algorithms as a supplement.
BWAPI Version: 4.1.2

How to Compile:
- Set environment variable BWAPI_DIR to your BWAPI 4.1.2 install directory.
- Set environment variable BWTA_DIR to your BWTA 2.2 install directory.
- Copy BWTA dependences libgmp-10.dll and libmpfr-d.dll to C:\Windows directory.
- Use Visual Studio 2017 to open src/Steamhammer/VisualStudio/UAlbertaBot.sln.
- Select release mode.
- Build the whole solution. the CSE.dll will be output into src/Steamhammer/bin directory.

Tournament Setup:
- Copy bin/CSE.dll (or the above compiled dll) to the tournament CSE/AI folder
- Copy bin/CSE.json to the tournament CSE/AI folder
- Set bots: {"BotName": "CSE", "Race": "Protoss", "BotType": "dll", "BWAPIVersion": "BWAPI_412"}

Introduction:
- Based on Locutus by Bruce Mackenzie Nielsen

Description of machine learning methods
- We use a multilayer perceptron network and several rules to predict units or buildings when the building order queue is empty.
- Used dataset. From "A Dataset for StarCraft AI & an Example of Armies Clustering" by Gabriel Synnaeve and Pierre Bessière.The URL is http://www.starcraftai.com/wiki/StarCraft_Brood_War_Data_Mining. 
- Model training:
    - Features: We extract features using the .rgd files. The detailed description is listed in StrategyBossZerg.cpp. 
    - Training: It is a classical classification problem with the input being (state, label), where the state is features of a frame, and the label is a predicted unit (eight labels listed above).
    - Model: The model parameters are listed in src/Steamhammer/Source/ModelWeightInit.