Terminology: Agents and Environments ==================================== Unfortunately, the terminology definitions are a bit circular, but you should get the idea. It is inspired by the idea of intelligent agents in AI. As an example, we will assume that the task for the students is to implement code for playing chess. * An **agent** an entity that perceives its environment through sensors and performs actions. In the example, the agent would the implemented by the student's code. * An **action** is something the agent does. In the example, it would be a move in the game of chess. * An **environment** is the world in which the agent operates. In the example, it would be the chess board, but also the opponent. It could make sense to have multiple environments, each with a different opponent strength. * A **state** is the current situation of the environment. In the example, it would be the current position of the pieces on the board. * A **run** is one execution of the agent in the environment, often involving multiple actions. In the example, it would be one game of chess. * The **outcome** is the result of a run that describes the performance of the agent. In the example, it would be the result of the game, i.e., win, loss, or draw. Typically, we would use a numerical value to describe the outcome, e.g., 1 for a win, 0 for a loss, and 0.5 for a draw. * The **rating** of an agent describes its performance over many runs. It is computed from the outcomes. In the example, it would be the average outcome over many games. * An **action request** is a request from the environment to the agent to perform an action. In the example, it would be a request to make a move. The request usually contains further information about the current state of the environment. * An **agent configuration** is a JSON object/file that contains the credentials of an agent, i.e. its user name, its password (set by the server), its environment, and the server URL.