Learning to use reinforcement
Imagine that we need to come up with an enemy that needs to select different actions over time as the player progresses through the game and his or her patterns change, or a game for training different types of pets that have free will to some extent.
For these types of tasks, we can use a series of techniques aimed at modeling learning based on experience. One of these algorithms is Q-learning, which will be implemented in this recipe.
Getting ready…
Before delving into the main algorithm, it is necessary to have certain data structures implemented. We need to define a structure for game state, another for game actions, and a class for defining an instance of the problem. They can coexist in the same file.
The following is an example of the data structure for defining a game state:
public struct GameState { // TODO // your state definition here }
Next is an example of the data structure for defining a game action:
public struct GameAction { // TODO ...