Files
AIM-PIbd-31-Anisin-R-S/lab_6/lab6.ipynb
2024-12-21 00:34:09 +04:00

78 KiB
Raw Blame History

Лабораторная 6

Задание:

  • Развернуть и запустить проект по реализации обучения с подкреплением для игры "Крестики-нолики".
  • Перевести проект на библиотеку gymnasium и современную версию Python.
  • Реализовать агента для игры "Крестики-нолики" в виде отдельного класса (по примеру из лекции).
  • Переписать основной цикл обучения для работы с отдельным классом агента (по примеру из лекции). Выполнить тестирование новой версии программы.

Исходный проект: https://github.com/nczempin/gym-tic-tac-toe

Перевод проекта на Gymnasium

Gymnasium — библиотека Python для разработки, обучения и тестирования моделей обучения с подкреплением (Reinforcement Learning). Это обновлённая версия OpenAI Gym с улучшенной функциональностью и совместимостью.

Основные компоненты Gymnasium:

  1. Action Space (пространство действий):

    • Определяет возможные действия, которые агент может предпринимать. Например:
      • spaces.Discrete(9) — дискретные действия от 0 до 8 (например, выбор клетки на игровом поле).
  2. Observation Space (пространство наблюдений):

    • Определяет, какие данные агент получает о текущем состоянии среды.
      • Например, состояние игрового поля: spaces.Discrete(9 * 3 * 2).
  3. Методы среды:

    • reset(): Сбрасывает среду и возвращает её начальное состояние.
    • step(action): Выполняет действие агента и возвращает следующую информацию:
      • Новое состояние среды.
      • Награду за действие.
      • Флаг завершения (True/False).
      • Дополнительные данные.
    • render(): Отображает состояние среды (например, визуализация игрового поля).
    • close(): Закрывает среду.
In [13]:
import gymnasium as gym
from gymnasium import spaces
import random

class TicTacToeEnv(gym.Env):
    metadata = {'render.modes': ['human']}
    
    symbols = ['O', ' ', 'X']

    def __init__(self):
        super().__init__()
        self.action_space = spaces.Discrete(9)
        self.observation_space = spaces.Discrete(9 * 3 * 2) 
        self.reset()

    def step(self, action):
        done = False
        reward = 0

        p, square = action

        board = self.state['board']
        proposed = board[square] 
        om = self.state['on_move'] 
        if proposed != 0:
            print(f"Незаконный ход: Квадрат {square} уже занят.")
            done = True
            reward = -1 * om 
        if p != om: 
            print(f"Незаконный ход: игрок {p} не находится в движении")
            done = True
            reward = -1 * om
        else:
            board[square] = p
            self.state['on_move'] = -p

        for i in range(3):
            if (board[i * 3] == p and board[i * 3 + 1] == p and board[i * 3 + 2] == p) or \
               (board[i] == p and board[i + 3] == p and board[i + 6] == p):
                reward = p
                done = True
                break

        if (board[0] == p and board[4] == p and board[8] == p) or \
           (board[2] == p and board[4] == p and board[6] == p):
            reward = p
            done = True
                
        return self.state, reward, done, {}

    def reset(self):
        self.state = {}
        self.state['board'] = [0, 0, 0, 0, 0, 0, 0, 0, 0] 
        self.state['on_move'] = 1 
        return self.state, {}

    def render(self, close=False):
        if close:
            return
        print("шаг: " , self.symbols[self.state['on_move']+1])
        for i in range (9):
            print (self.symbols[self.state['board'][i]+1], end=" ")
            if ((i % 3) == 2):
                print()

    def move_generator(self):
        moves = []
        for i in range(9):
            if self.state['board'][i] == 0:
                p = self.state['on_move']
                m = [p, i]
                moves.append(m)
        return moves

Агент

  1. Взаимодействие со средой:

    • Агент передаёт свои действия через метод step(action), где:
      • action — кортеж (p, square), где:
        • p: текущий игрок (1 для "X", -1 для "O").
        • square: номер клетки (08).
    • Среда проверяет, допустимо ли действие, обновляет состояние игры, вычисляет награду и определяет, завершилась ли игра.
  2. Решение задач агента:

    • Агент должен:
      • Выбирать клетку на игровом поле, соблюдая правила.
      • Стремиться к победе, формируя вертикальные, горизонтальные или диагональные линии из своих символов.
      • Избегать неправильных действий, которые приводят к штрафам (например, выбор занятой клетки).
  3. Система наград:

    • Агент получает:
      • Положительную награду за победу (соответствует значению игрока p).
      • Отрицательную награду за ошибочные действия (например, попытка занять уже занятую клетку).
      • Нулевую награду за допустимые, но не победные ходы.
In [14]:
class Agent:
    def __init__(self, symbol):
        self.symbol = symbol
    
    def get_action(self, moves):
        return random.choice(moves)

Цикл обучения

In [15]:
environment = TicTacToeEnv()

agent = Agent(symbol=1)

num_episodes = 100 
collected_rewards = [] 

oom = 1

for i in range(num_episodes):
    state, _ = environment.reset() 

    total_reward = 0

    done = False
    om = oom 

    for j in range(9): 
        moves = environment.move_generator() 

        if not moves:
            break

        
        if len(moves) == 1:
            move = moves[0]
        else:
            move = agent.get_action(moves)

        next_state, reward, done, info = environment.step(move)
        total_reward += reward
        state = next_state

        environment.render()

        if done:
            break

        om = -om

    collected_rewards.append(total_reward)

    print(f"Эпизод {i+1}, Общая награда: {total_reward}")
    average_reward = sum(collected_rewards) / len(collected_rewards)
    print(f"Средняя награда: {average_reward}")
шаг:  O
      
      
X     
шаг:  X
      
      
X O   
шаг:  O
  X   
      
X O   
шаг:  X
  X   
O     
X O   
шаг:  O
  X X 
O     
X O   
шаг:  X
  X X 
O     
X O O 
шаг:  O
  X X 
O X   
X O O 
Эпизод 1, Общая награда: 1
Средняя награда: 1.0
шаг:  O
      
      
    X 
шаг:  X
O     
      
    X 
шаг:  O
O     
  X   
    X 
шаг:  X
O O   
  X   
    X 
шаг:  O
O O   
  X   
X   X 
шаг:  X
O O   
O X   
X   X 
шаг:  O
O O   
O X X 
X   X 
шаг:  X
O O O 
O X X 
X   X 
Эпизод 2, Общая награда: -1
Средняя награда: 0.0
шаг:  O
      
X     
      
шаг:  X
O     
X     
      
шаг:  O
O     
X X   
      
шаг:  X
O     
X X O 
      
шаг:  O
O     
X X O 
    X 
шаг:  X
O   O 
X X O 
    X 
шаг:  O
O   O 
X X O 
  X X 
шаг:  X
O   O 
X X O 
O X X 
шаг:  O
O X O 
X X O 
O X X 
Эпизод 3, Общая награда: 1
Средняя награда: 0.3333333333333333
шаг:  O
X     
      
      
шаг:  X
X     
O     
      
шаг:  O
X   X 
O     
      
шаг:  X
X   X 
O     
O     
шаг:  O
X   X 
O     
O X   
шаг:  X
X   X 
O O   
O X   
шаг:  O
X   X 
O O   
O X X 
шаг:  X
X O X 
O O   
O X X 
шаг:  O
X O X 
O O X 
O X X 
Эпизод 4, Общая награда: 1
Средняя награда: 0.5
шаг:  O
      
      
X     
шаг:  X
      
O     
X     
шаг:  O
    X 
O     
X     
шаг:  X
O   X 
O     
X     
шаг:  O
O   X 
O X   
X     
Эпизод 5, Общая награда: 1
Средняя награда: 0.6
шаг:  O
    X 
      
      
шаг:  X
    X 
      
  O   
шаг:  O
    X 
  X   
  O   
шаг:  X
    X 
  X   
  O O 
шаг:  O
    X 
  X X 
  O O 
шаг:  X
    X 
  X X 
O O O 
Эпизод 6, Общая награда: -1
Средняя награда: 0.3333333333333333
шаг:  O
  X   
      
      
шаг:  X
  X   
    O 
      
шаг:  O
  X X 
    O 
      
шаг:  X
O X X 
    O 
      
шаг:  O
O X X 
    O 
    X 
шаг:  X
O X X 
    O 
O   X 
шаг:  O
O X X 
    O 
O X X 
шаг:  X
O X X 
O   O 
O X X 
Эпизод 7, Общая награда: -1
Средняя награда: 0.14285714285714285
шаг:  O
      
      
  X   
шаг:  X
      
O     
  X   
шаг:  O
      
O   X 
  X   
шаг:  X
O     
O   X 
  X   
шаг:  O
O   X 
O   X 
  X   
шаг:  X
O   X 
O O X 
  X   
шаг:  O
O X X 
O O X 
  X   
шаг:  X
O X X 
O O X 
  X O 
Эпизод 8, Общая награда: -1
Средняя награда: 0.0
шаг:  O
      
  X   
      
шаг:  X
  O   
  X   
      
шаг:  O
  O   
  X   
X     
шаг:  X
  O   
O X   
X     
шаг:  O
  O   
O X X 
X     
шаг:  X
  O   
O X X 
X O   
шаг:  O
  O   
O X X 
X O X 
шаг:  X
  O O 
O X X 
X O X 
шаг:  O
X O O 
O X X 
X O X 
Эпизод 9, Общая награда: 1
Средняя награда: 0.1111111111111111
шаг:  O
      
      
  X   
шаг:  X
      
    O 
  X   
шаг:  O
X     
    O 
  X   
шаг:  X
X     
O   O 
  X   
шаг:  O
X X   
O   O 
  X   
шаг:  X
X X   
O   O 
  X O 
шаг:  O
X X X 
O   O 
  X O 
Эпизод 10, Общая награда: 1
Средняя награда: 0.2
шаг:  O
      
      
    X 
шаг:  X
  O   
      
    X 
шаг:  O
  O   
    X 
    X 
шаг:  X
  O   
    X 
O   X 
шаг:  O
  O   
    X 
O X X 
шаг:  X
O O   
    X 
O X X 
шаг:  O
O O   
X   X 
O X X 
шаг:  X
O O O 
X   X 
O X X 
Эпизод 11, Общая награда: -1
Средняя награда: 0.09090909090909091
шаг:  O
      
X     
      
шаг:  X
      
X O   
      
шаг:  O
      
X O   
X     
шаг:  X
      
X O O 
X     
шаг:  O
  X   
X O O 
X     
шаг:  X
  X   
X O O 
X O   
шаг:  O
  X X 
X O O 
X O   
шаг:  X
  X X 
X O O 
X O O 
шаг:  O
X X X 
X O O 
X O O 
Эпизод 12, Общая награда: 1
Средняя награда: 0.16666666666666666
шаг:  O
      
      
    X 
шаг:  X
    O 
      
    X 
шаг:  O
    O 
      
X   X 
шаг:  X
    O 
      
X O X 
шаг:  O
    O 
X     
X O X 
шаг:  X
    O 
X   O 
X O X 
шаг:  O
    O 
X X O 
X O X 
шаг:  X
O   O 
X X O 
X O X 
шаг:  O
O X O 
X X O 
X O X 
Эпизод 13, Общая награда: 0
Средняя награда: 0.15384615384615385
шаг:  O
      
      
    X 
шаг:  X
    O 
      
    X 
шаг:  O
    O 
X     
    X 
шаг:  X
O   O 
X     
    X 
шаг:  O
O   O 
X X   
    X 
шаг:  X
O O O 
X X   
    X 
Эпизод 14, Общая награда: -1
Средняя награда: 0.07142857142857142
шаг:  O
X     
      
      
шаг:  X
X     
    O 
      
шаг:  O
X     
X   O 
      
шаг:  X
X     
X   O 
  O   
шаг:  O
X     
X   O 
  O X 
шаг:  X
X O   
X   O 
  O X 
шаг:  O
X O X 
X   O 
  O X 
шаг:  X
X O X 
X   O 
O O X 
шаг:  O
X O X 
X X O 
O O X 
Эпизод 15, Общая награда: 1
Средняя награда: 0.13333333333333333
шаг:  O
      
      
  X   
шаг:  X
    O 
      
  X   
шаг:  O
    O 
      
X X   
шаг:  X
  O O 
      
X X   
шаг:  O
  O O 
  X   
X X   
шаг:  X
O O O 
  X   
X X   
Эпизод 16, Общая награда: -1
Средняя награда: 0.0625
шаг:  O
      
      
  X   
шаг:  X
      
      
O X   
шаг:  O
    X 
      
O X   
шаг:  X
    X 
O     
O X   
шаг:  O
X   X 
O     
O X   
шаг:  X
X   X 
O   O 
O X   
шаг:  O
X X X 
O   O 
O X   
Эпизод 17, Общая награда: 1
Средняя награда: 0.11764705882352941
шаг:  O
      
      
X     
шаг:  X
    O 
      
X     
шаг:  O
    O 
      
X   X 
шаг:  X
    O 
  O   
X   X 
шаг:  O
    O 
X O   
X   X 
шаг:  X
  O O 
X O   
X   X 
шаг:  O
  O O 
X O X 
X   X 
шаг:  X
O O O 
X O X 
X   X 
Эпизод 18, Общая награда: -1
Средняя награда: 0.05555555555555555
шаг:  O
      
      
  X   
шаг:  X
      
O     
  X   
шаг:  O
      
O   X 
  X   
шаг:  X
      
O   X 
O X   
шаг:  O
      
O X X 
O X   
шаг:  X
  O   
O X X 
O X   
шаг:  O
X O   
O X X 
O X   
шаг:  X
X O O 
O X X 
O X   
шаг:  O
X O O 
O X X 
O X X 
Эпизод 19, Общая награда: 1
Средняя награда: 0.10526315789473684
шаг:  O
X     
      
      
шаг:  X
X     
      
    O 
шаг:  O
X     
X     
    O 
шаг:  X
X     
X   O 
    O 
шаг:  O
X     
X X O 
    O 
шаг:  X
X     
X X O 
O   O 
шаг:  O
X   X 
X X O 
O   O 
шаг:  X
X   X 
X X O 
O O O 
Эпизод 20, Общая награда: -1
Средняя награда: 0.05
шаг:  O
      
  X   
      
шаг:  X
      
  X   
O     
шаг:  O
      
  X   
O   X 
шаг:  X
      
  X O 
O   X 
шаг:  O
    X 
  X O 
O   X 
шаг:  X
  O X 
  X O 
O   X 
шаг:  O
X O X 
  X O 
O   X 
Эпизод 21, Общая награда: 1
Средняя награда: 0.09523809523809523
шаг:  O
X     
      
      
шаг:  X
X     
      
O     
шаг:  O
X     
X     
O     
шаг:  X
X O   
X     
O     
шаг:  O
X O   
X     
O X   
шаг:  X
X O   
X   O 
O X   
шаг:  O
X O X 
X   O 
O X   
шаг:  X
X O X 
X   O 
O X O 
шаг:  O
X O X 
X X O 
O X O 
Эпизод 22, Общая награда: 0
Средняя награда: 0.09090909090909091
шаг:  O
      
    X 
      
шаг:  X
      
    X 
O     
шаг:  O
X     
    X 
O     
шаг:  X
X     
O   X 
O     
шаг:  O
X   X 
O   X 
O     
шаг:  X
X   X 
O   X 
O   O 
шаг:  O
X   X 
O X X 
O   O 
шаг:  X
X O X 
O X X 
O   O 
шаг:  O
X O X 
O X X 
O X O 
Эпизод 23, Общая награда: 0
Средняя награда: 0.08695652173913043
шаг:  O
    X 
      
      
шаг:  X
    X 
      
    O 
шаг:  O
X   X 
      
    O 
шаг:  X
X O X 
      
    O 
шаг:  O
X O X 
X     
    O 
шаг:  X
X O X 
X   O 
    O 
шаг:  O
X O X 
X   O 
X   O 
Эпизод 24, Общая награда: 1
Средняя награда: 0.125
шаг:  O
      
      
    X 
шаг:  X
      
  O   
    X 
шаг:  O
      
X O   
    X 
шаг:  X
      
X O   
O   X 
шаг:  O
X     
X O   
O   X 
шаг:  X
X   O 
X O   
O   X 
Эпизод 25, Общая награда: -1
Средняя награда: 0.08
шаг:  O
      
      
    X 
шаг:  X
      
      
O   X 
шаг:  O
      
X     
O   X 
шаг:  X
    O 
X     
O   X 
шаг:  O
  X O 
X     
O   X 
шаг:  X
  X O 
X   O 
O   X 
шаг:  O
X X O 
X   O 
O   X 
шаг:  X
X X O 
X O O 
O   X 
Эпизод 26, Общая награда: -1
Средняя награда: 0.038461538461538464
шаг:  O
      
  X   
      
шаг:  X
      
  X O 
      
шаг:  O
      
  X O 
    X 
шаг:  X
O     
  X O 
    X 
шаг:  O
O X   
  X O 
    X 
шаг:  X
O X   
  X O 
  O X 
шаг:  O
O X   
  X O 
X O X 
шаг:  X
O X O 
  X O 
X O X 
шаг:  O
O X O 
X X O 
X O X 
Эпизод 27, Общая награда: 0
Средняя награда: 0.037037037037037035
шаг:  O
      
  X   
      
шаг:  X
      
O X   
      
шаг:  O
    X 
O X   
      
шаг:  X
O   X 
O X   
      
шаг:  O
O   X 
O X   
  X   
шаг:  X
O   X 
O X O 
  X   
шаг:  O
O X X 
O X O 
  X   
Эпизод 28, Общая награда: 1
Средняя награда: 0.07142857142857142
шаг:  O
      
      
  X   
шаг:  X
      
O     
  X   
шаг:  O
      
O X   
  X   
шаг:  X
    O 
O X   
  X   
шаг:  O
X   O 
O X   
  X   
шаг:  X
X   O 
O X O 
  X   
шаг:  O
X   O 
O X O 
  X X 
Эпизод 29, Общая награда: 1
Средняя награда: 0.10344827586206896
шаг:  O
      
      
    X 
шаг:  X
      
    O 
    X 
шаг:  O
    X 
    O 
    X 
шаг:  X
O   X 
    O 
    X 
шаг:  O
O   X 
X   O 
    X 
шаг:  X
O O X 
X   O 
    X 
шаг:  O
O O X 
X   O 
X   X 
шаг:  X
O O X 
X O O 
X   X 
шаг:  O
O O X 
X O O 
X X X 
Эпизод 30, Общая награда: 1
Средняя награда: 0.13333333333333333
шаг:  O
    X 
      
      
шаг:  X
    X 
      
O     
шаг:  O
  X X 
      
O     
шаг:  X
  X X 
      
O O   
шаг:  O
X X X 
      
O O   
Эпизод 31, Общая награда: 1
Средняя награда: 0.16129032258064516
шаг:  O
    X 
      
      
шаг:  X
    X 
O     
      
шаг:  O
    X 
O   X 
      
шаг:  X
    X 
O   X 
O     
шаг:  O
    X 
O   X 
O   X 
Эпизод 32, Общая награда: 1
Средняя награда: 0.1875
шаг:  O
      
      
X     
шаг:  X
    O 
      
X     
шаг:  O
  X O 
      
X     
шаг:  X
  X O 
      
X O   
шаг:  O
  X O 
  X   
X O   
шаг:  X
  X O 
  X O 
X O   
шаг:  O
X X O 
  X O 
X O   
шаг:  X
X X O 
O X O 
X O   
шаг:  O
X X O 
O X O 
X O X 
Эпизод 33, Общая награда: 1
Средняя награда: 0.21212121212121213
шаг:  O
      
    X 
      
шаг:  X
      
    X 
O     
шаг:  O
X     
    X 
O     
шаг:  X
X     
    X 
O   O 
шаг:  O
X X   
    X 
O   O 
шаг:  X
X X   
O   X 
O   O 
шаг:  O
X X   
O X X 
O   O 
шаг:  X
X X   
O X X 
O O O 
Эпизод 34, Общая награда: -1
Средняя награда: 0.17647058823529413
шаг:  O
X     
      
      
шаг:  X
X     
    O 
      
шаг:  O
X     
X   O 
      
шаг:  X
X     
X   O 
  O   
шаг:  O
X X   
X   O 
  O   
шаг:  X
X X O 
X   O 
  O   
шаг:  O
X X O 
X   O 
  O X 
шаг:  X
X X O 
X O O 
  O X 
шаг:  O
X X O 
X O O 
X O X 
Эпизод 35, Общая награда: 1
Средняя награда: 0.2
шаг:  O
      
  X   
      
шаг:  X
O     
  X   
      
шаг:  O
O     
  X   
  X   
шаг:  X
O     
  X   
O X   
шаг:  O
O     
X X   
O X   
шаг:  X
O     
X X   
O X O 
шаг:  O
O   X 
X X   
O X O 
шаг:  X
O   X 
X X O 
O X O 
шаг:  O
O X X 
X X O 
O X O 
Эпизод 36, Общая награда: 1
Средняя награда: 0.2222222222222222
шаг:  O
      
      
X     
шаг:  X
      
    O 
X     
шаг:  O
      
X   O 
X     
шаг:  X
    O 
X   O 
X     
шаг:  O
    O 
X   O 
X X   
шаг:  X
    O 
X   O 
X X O 
Эпизод 37, Общая награда: -1
Средняя награда: 0.1891891891891892
шаг:  O
      
      
  X   
шаг:  X
      
  O   
  X   
шаг:  O
      
X O   
  X   
шаг:  X
      
X O   
O X   
шаг:  O
      
X O X 
O X   
шаг:  X
O     
X O X 
O X   
шаг:  O
O X   
X O X 
O X   
шаг:  X
O X O 
X O X 
O X   
Эпизод 38, Общая награда: -1
Средняя награда: 0.15789473684210525
шаг:  O
      
X     
      
шаг:  X
    O 
X     
      
шаг:  O
    O 
X     
    X 
шаг:  X
    O 
X O   
    X 
шаг:  O
    O 
X O   
  X X 
шаг:  X
O   O 
X O   
  X X 
шаг:  O
O   O 
X O X 
  X X 
шаг:  X
O O O 
X O X 
  X X 
Эпизод 39, Общая награда: -1
Средняя награда: 0.1282051282051282
шаг:  O
X     
      
      
шаг:  X
X     
      
    O 
шаг:  O
X   X 
      
    O 
шаг:  X
X O X 
      
    O 
шаг:  O
X O X 
      
X   O 
шаг:  X
X O X 
  O   
X   O 
шаг:  O
X O X 
X O   
X   O 
Эпизод 40, Общая награда: 1
Средняя награда: 0.15
шаг:  O
    X 
      
      
шаг:  X
    X 
      
  O   
шаг:  O
    X 
    X 
  O   
шаг:  X
    X 
  O X 
  O   
шаг:  O
    X 
  O X 
  O X 
Эпизод 41, Общая награда: 1
Средняя награда: 0.17073170731707318
шаг:  O
  X   
      
      
шаг:  X
  X   
    O 
      
шаг:  O
  X   
    O 
  X   
шаг:  X
  X   
O   O 
  X   
шаг:  O
  X X 
O   O 
  X   
шаг:  X
  X X 
O   O 
  X O 
шаг:  O
  X X 
O X O 
  X O 
Эпизод 42, Общая награда: 1
Средняя награда: 0.19047619047619047
шаг:  O
    X 
      
      
шаг:  X
O   X 
      
      
шаг:  O
O   X 
      
  X   
шаг:  X
O   X 
      
  X O 
шаг:  O
O   X 
X     
  X O 
шаг:  X
O   X 
X   O 
  X O 
шаг:  O
O   X 
X X O 
  X O 
шаг:  X
O O X 
X X O 
  X O 
шаг:  O
O O X 
X X O 
X X O 
Эпизод 43, Общая награда: 1
Средняя награда: 0.20930232558139536
шаг:  O
    X 
      
      
шаг:  X
  O X 
      
      
шаг:  O
  O X 
  X   
      
шаг:  X
O O X 
  X   
      
шаг:  O
O O X 
X X   
      
шаг:  X
O O X 
X X   
    O 
шаг:  O
O O X 
X X   
  X O 
шаг:  X
O O X 
X X   
O X O 
шаг:  O
O O X 
X X X 
O X O 
Эпизод 44, Общая награда: 1
Средняя награда: 0.22727272727272727
шаг:  O
      
      
  X   
шаг:  X
    O 
      
  X   
шаг:  O
    O 
  X   
  X   
шаг:  X
    O 
  X   
  X O 
шаг:  O
    O 
  X   
X X O 
шаг:  X
    O 
O X   
X X O 
шаг:  O
X   O 
O X   
X X O 
шаг:  X
X O O 
O X   
X X O 
шаг:  O
X O O 
O X X 
X X O 
Эпизод 45, Общая награда: 0
Средняя награда: 0.2222222222222222
шаг:  O
X     
      
      
шаг:  X
X     
      
    O 
шаг:  O
X   X 
      
    O 
шаг:  X
X   X 
  O   
    O 
шаг:  O
X   X 
  O   
X   O 
шаг:  X
X   X 
  O   
X O O 
шаг:  O
X   X 
  O X 
X O O 
шаг:  X
X   X 
O O X 
X O O 
шаг:  O
X X X 
O O X 
X O O 
Эпизод 46, Общая награда: 1
Средняя награда: 0.2391304347826087
шаг:  O
      
X     
      
шаг:  X
      
X   O 
      
шаг:  O
    X 
X   O 
      
шаг:  X
    X 
X   O 
  O   
шаг:  O
    X 
X   O 
X O   
шаг:  X
    X 
X O O 
X O   
шаг:  O
    X 
X O O 
X O X 
шаг:  X
  O X 
X O O 
X O X 
Эпизод 47, Общая награда: -1
Средняя награда: 0.2127659574468085
шаг:  O
      
    X 
      
шаг:  X
      
    X 
  O   
шаг:  O
      
    X 
  O X 
шаг:  X
      
  O X 
  O X 
шаг:  O
  X   
  O X 
  O X 
шаг:  X
O X   
  O X 
  O X 
шаг:  O
O X   
  O X 
X O X 
шаг:  X
O X   
O O X 
X O X 
шаг:  O
O X X 
O O X 
X O X 
Эпизод 48, Общая награда: 1
Средняя награда: 0.22916666666666666
шаг:  O
      
X     
      
шаг:  X
O     
X     
      
шаг:  O
O     
X     
X     
шаг:  X
O   O 
X     
X     
шаг:  O
O   O 
X X   
X     
шаг:  X
O   O 
X X   
X   O 
шаг:  O
O   O 
X X X 
X   O 
Эпизод 49, Общая награда: 1
Средняя награда: 0.24489795918367346
шаг:  O
      
      
    X 
шаг:  X
O     
      
    X 
шаг:  O
O   X 
      
    X 
шаг:  X
O   X 
O     
    X 
шаг:  O
O X X 
O     
    X 
шаг:  X
O X X 
O   O 
    X 
шаг:  O
O X X 
O   O 
X   X 
шаг:  X
O X X 
O   O 
X O X 
шаг:  O
O X X 
O X O 
X O X 
Эпизод 50, Общая награда: 1
Средняя награда: 0.26
шаг:  O
      
      
X     
шаг:  X
    O 
      
X     
шаг:  O
  X O 
      
X     
шаг:  X
  X O 
      
X   O 
шаг:  O
  X O 
  X   
X   O 
шаг:  X
O X O 
  X   
X   O 
шаг:  O
O X O 
  X   
X X O 
Эпизод 51, Общая награда: 1
Средняя награда: 0.27450980392156865
шаг:  O
      
      
X     
шаг:  X
  O   
      
X     
шаг:  O
  O   
      
X   X 
шаг:  X
  O   
  O   
X   X 
шаг:  O
  O X 
  O   
X   X 
шаг:  X
  O X 
  O   
X O X 
Эпизод 52, Общая награда: -1
Средняя награда: 0.25
шаг:  O
      
      
X     
шаг:  X
O     
      
X     
шаг:  O
O X   
      
X     
шаг:  X
O X   
  O   
X     
шаг:  O
O X   
  O   
X   X 
шаг:  X
O X   
O O   
X   X 
шаг:  O
O X   
O O   
X X X 
Эпизод 53, Общая награда: 1
Средняя награда: 0.2641509433962264
шаг:  O
      
X     
      
шаг:  X
      
X     
  O   
шаг:  O
    X 
X     
  O   
шаг:  X
    X 
X     
  O O 
шаг:  O
    X 
X X   
  O O 
шаг:  X
  O X 
X X   
  O O 
шаг:  O
  O X 
X X   
X O O 
Эпизод 54, Общая награда: 1
Средняя награда: 0.2777777777777778
шаг:  O
    X 
      
      
шаг:  X
    X 
      
  O   
шаг:  O
X   X 
      
  O   
шаг:  X
X   X 
  O   
  O   
шаг:  O
X   X 
  O X 
  O   
шаг:  X
X   X 
  O X 
O O   
шаг:  O
X X X 
  O X 
O O   
Эпизод 55, Общая награда: 1
Средняя награда: 0.2909090909090909
шаг:  O
  X   
      
      
шаг:  X
  X O 
      
      
шаг:  O
  X O 
      
    X 
шаг:  X
  X O 
  O   
    X 
шаг:  O
  X O 
  O   
X   X 
шаг:  X
  X O 
  O   
X O X 
шаг:  O
  X O 
  O X 
X O X 
шаг:  X
O X O 
  O X 
X O X 
шаг:  O
O X O 
X O X 
X O X 
Эпизод 56, Общая награда: 0
Средняя награда: 0.2857142857142857
шаг:  O
X     
      
      
шаг:  X
X     
O     
      
шаг:  O
X     
O     
  X   
шаг:  X
X   O 
O     
  X   
шаг:  O
X   O 
O   X 
  X   
шаг:  X
X   O 
O O X 
  X   
шаг:  O
X   O 
O O X 
X X   
шаг:  X
X   O 
O O X 
X X O 
шаг:  O
X X O 
O O X 
X X O 
Эпизод 57, Общая награда: 0
Средняя награда: 0.2807017543859649
шаг:  O
      
      
    X 
шаг:  X
  O   
      
    X 
шаг:  O
X O   
      
    X 
шаг:  X
X O O 
      
    X 
шаг:  O
X O O 
X     
    X 
шаг:  X
X O O 
X   O 
    X 
шаг:  O
X O O 
X   O 
X   X 
Эпизод 58, Общая награда: 1
Средняя награда: 0.29310344827586204
шаг:  O
      
    X 
      
шаг:  X
O     
    X 
      
шаг:  O
O     
    X 
    X 
шаг:  X
O O   
    X 
    X 
шаг:  O
O O   
X   X 
    X 
шаг:  X
O O   
X   X 
O   X 
шаг:  O
O O   
X X X 
O   X 
Эпизод 59, Общая награда: 1
Средняя награда: 0.3050847457627119
шаг:  O
      
X     
      
шаг:  X
O     
X     
      
шаг:  O
O   X 
X     
      
шаг:  X
O   X 
X     
  O   
шаг:  O
O   X 
X     
X O   
шаг:  X
O   X 
X   O 
X O   
шаг:  O
O   X 
X X O 
X O   
Эпизод 60, Общая награда: 1
Средняя награда: 0.31666666666666665
шаг:  O
      
    X 
      
шаг:  X
      
O   X 
      
шаг:  O
    X 
O   X 
      
шаг:  X
    X 
O O X 
      
шаг:  O
    X 
O O X 
X     
шаг:  X
O   X 
O O X 
X     
шаг:  O
O   X 
O O X 
X   X 
Эпизод 61, Общая награда: 1
Средняя награда: 0.32786885245901637
шаг:  O
    X 
      
      
шаг:  X
    X 
      
  O   
шаг:  O
    X 
X     
  O   
шаг:  X
    X 
X     
  O O 
шаг:  O
X   X 
X     
  O O 
шаг:  X
X   X 
X O   
  O O 
шаг:  O
X X X 
X O   
  O O 
Эпизод 62, Общая награда: 1
Средняя награда: 0.3387096774193548
шаг:  O
      
      
  X   
шаг:  X
      
  O   
  X   
шаг:  O
  X   
  O   
  X   
шаг:  X
  X O 
  O   
  X   
шаг:  O
X X O 
  O   
  X   
шаг:  X
X X O 
  O O 
  X   
шаг:  O
X X O 
X O O 
  X   
шаг:  X
X X O 
X O O 
O X   
Эпизод 63, Общая награда: -1
Средняя награда: 0.31746031746031744
шаг:  O
      
  X   
      
шаг:  X
    O 
  X   
      
шаг:  O
    O 
  X   
X     
шаг:  X
    O 
  X   
X   O 
шаг:  O
    O 
  X X 
X   O 
шаг:  X
  O O 
  X X 
X   O 
шаг:  O
  O O 
  X X 
X X O 
шаг:  X
O O O 
  X X 
X X O 
Эпизод 64, Общая награда: -1
Средняя награда: 0.296875
шаг:  O
      
    X 
      
шаг:  X
      
    X 
    O 
шаг:  O
  X   
    X 
    O 
шаг:  X
  X O 
    X 
    O 
шаг:  O
  X O 
X   X 
    O 
шаг:  X
  X O 
X   X 
  O O 
шаг:  O
X X O 
X   X 
  O O 
шаг:  X
X X O 
X   X 
O O O 
Эпизод 65, Общая награда: -1
Средняя награда: 0.27692307692307694
шаг:  O
      
  X   
      
шаг:  X
      
  X   
    O 
шаг:  O
    X 
  X   
    O 
шаг:  X
    X 
O X   
    O 
шаг:  O
    X 
O X X 
    O 
шаг:  X
O   X 
O X X 
    O 
шаг:  O
O   X 
O X X 
X   O 
Эпизод 66, Общая награда: 1
Средняя награда: 0.2878787878787879
шаг:  O
      
      
    X 
шаг:  X
      
      
  O X 
шаг:  O
X     
      
  O X 
шаг:  X
X     
    O 
  O X 
шаг:  O
X     
  X O 
  O X 
Эпизод 67, Общая награда: 1
Средняя награда: 0.29850746268656714
шаг:  O
X     
      
      
шаг:  X
X     
  O   
      
шаг:  O
X     
  O   
  X   
шаг:  X
X   O 
  O   
  X   
шаг:  O
X   O 
  O   
  X X 
шаг:  X
X   O 
O O   
  X X 
шаг:  O
X   O 
O O X 
  X X 
шаг:  X
X O O 
O O X 
  X X 
шаг:  O
X O O 
O O X 
X X X 
Эпизод 68, Общая награда: 1
Средняя награда: 0.3088235294117647
шаг:  O
      
      
X     
шаг:  X
      
  O   
X     
шаг:  O
      
  O X 
X     
шаг:  X
O     
  O X 
X     
шаг:  O
O     
  O X 
X X   
шаг:  X
O O   
  O X 
X X   
шаг:  O
O O   
  O X 
X X X 
Эпизод 69, Общая награда: 1
Средняя награда: 0.3188405797101449
шаг:  O
      
X     
      
шаг:  X
      
X   O 
      
шаг:  O
    X 
X   O 
      
шаг:  X
    X 
X   O 
O     
шаг:  O
X   X 
X   O 
O     
шаг:  X
X O X 
X   O 
O     
шаг:  O
X O X 
X X O 
O     
шаг:  X
X O X 
X X O 
O O   
шаг:  O
X O X 
X X O 
O O X 
Эпизод 70, Общая награда: 1
Средняя награда: 0.32857142857142857
шаг:  O
      
      
    X 
шаг:  X
      
  O   
    X 
шаг:  O
      
  O   
  X X 
шаг:  X
      
O O   
  X X 
шаг:  O
  X   
O O   
  X X 
шаг:  X
  X O 
O O   
  X X 
шаг:  O
  X O 
O O X 
  X X 
шаг:  X
  X O 
O O X 
O X X 
Эпизод 71, Общая награда: -1
Средняя награда: 0.30985915492957744
шаг:  O
    X 
      
      
шаг:  X
O   X 
      
      
шаг:  O
O   X 
    X 
      
шаг:  X
O   X 
    X 
O     
шаг:  O
O   X 
  X X 
O     
шаг:  X
O   X 
O X X 
O     
Эпизод 72, Общая награда: -1
Средняя награда: 0.2916666666666667
шаг:  O
X     
      
      
шаг:  X
X O   
      
      
шаг:  O
X O   
      
X     
шаг:  X
X O   
O     
X     
шаг:  O
X O   
O   X 
X     
шаг:  X
X O O 
O   X 
X     
шаг:  O
X O O 
O   X 
X X   
шаг:  X
X O O 
O   X 
X X O 
шаг:  O
X O O 
O X X 
X X O 
Эпизод 73, Общая награда: 0
Средняя награда: 0.2876712328767123
шаг:  O
      
  X   
      
шаг:  X
    O 
  X   
      
шаг:  O
    O 
X X   
      
шаг:  X
    O 
X X   
  O   
шаг:  O
    O 
X X X 
  O   
Эпизод 74, Общая награда: 1
Средняя награда: 0.2972972972972973
шаг:  O
      
      
X     
шаг:  X
  O   
      
X     
шаг:  O
X O   
      
X     
шаг:  X
X O   
O     
X     
шаг:  O
X O   
O     
X   X 
шаг:  X
X O   
O O   
X   X 
шаг:  O
X O   
O O   
X X X 
Эпизод 75, Общая награда: 1
Средняя награда: 0.30666666666666664
шаг:  O
      
X     
      
шаг:  X
      
X     
O     
шаг:  O
    X 
X     
O     
шаг:  X
    X 
X   O 
O     
шаг:  O
  X X 
X   O 
O     
шаг:  X
  X X 
X   O 
O O   
шаг:  O
  X X 
X   O 
O O X 
шаг:  X
  X X 
X O O 
O O X 
шаг:  O
X X X 
X O O 
O O X 
Эпизод 76, Общая награда: 1
Средняя награда: 0.3157894736842105
шаг:  O
      
      
  X   
шаг:  X
      
      
O X   
шаг:  O
X     
      
O X   
шаг:  X
X O   
      
O X   
шаг:  O
X O   
      
O X X 
шаг:  X
X O   
  O   
O X X 
шаг:  O
X O X 
  O   
O X X 
шаг:  X
X O X 
O O   
O X X 
шаг:  O
X O X 
O O X 
O X X 
Эпизод 77, Общая награда: 1
Средняя награда: 0.3246753246753247
шаг:  O
X     
      
      
шаг:  X
X     
      
    O 
шаг:  O
X X   
      
    O 
шаг:  X
X X   
O     
    O 
шаг:  O
X X   
O X   
    O 
шаг:  X
X X   
O X   
O   O 
шаг:  O
X X   
O X   
O X O 
Эпизод 78, Общая награда: 1
Средняя награда: 0.3333333333333333
шаг:  O
      
X     
      
шаг:  X
      
X     
O     
шаг:  O
    X 
X     
O     
шаг:  X
  O X 
X     
O     
шаг:  O
  O X 
X     
O   X 
шаг:  X
O O X 
X     
O   X 
шаг:  O
O O X 
X X   
O   X 
шаг:  X
O O X 
X X O 
O   X 
шаг:  O
O O X 
X X O 
O X X 
Эпизод 79, Общая награда: 0
Средняя награда: 0.3291139240506329
шаг:  O
      
  X   
      
шаг:  X
      
  X   
    O 
шаг:  O
X     
  X   
    O 
шаг:  X
X O   
  X   
    O 
шаг:  O
X O   
X X   
    O 
шаг:  X
X O O 
X X   
    O 
шаг:  O
X O O 
X X   
  X O 
шаг:  X
X O O 
X X   
O X O 
шаг:  O
X O O 
X X X 
O X O 
Эпизод 80, Общая награда: 1
Средняя награда: 0.3375
шаг:  O
X     
      
      
шаг:  X
X     
      
  O   
шаг:  O
X     
      
X O   
шаг:  X
X   O 
      
X O   
шаг:  O
X   O 
    X 
X O   
шаг:  X
X   O 
    X 
X O O 
шаг:  O
X   O 
X   X 
X O O 
Эпизод 81, Общая награда: 1
Средняя награда: 0.345679012345679
шаг:  O
      
      
    X 
шаг:  X
      
      
O   X 
шаг:  O
X     
      
O   X 
шаг:  X
X     
    O 
O   X 
шаг:  O
X   X 
    O 
O   X 
шаг:  X
X O X 
    O 
O   X 
шаг:  O
X O X 
X   O 
O   X 
шаг:  X
X O X 
X   O 
O O X 
шаг:  O
X O X 
X X O 
O O X 
Эпизод 82, Общая награда: 1
Средняя награда: 0.35365853658536583
шаг:  O
      
X     
      
шаг:  X
      
X O   
      
шаг:  O
      
X O X 
      
шаг:  X
O     
X O X 
      
шаг:  O
O     
X O X 
    X 
шаг:  X
O O   
X O X 
    X 
шаг:  O
O O X 
X O X 
    X 
Эпизод 83, Общая награда: 1
Средняя награда: 0.3614457831325301
шаг:  O
      
      
X     
шаг:  X
      
      
X O   
шаг:  O
      
X     
X O   
шаг:  X
      
X O   
X O   
шаг:  O
  X   
X O   
X O   
шаг:  X
  X   
X O   
X O O 
шаг:  O
X X   
X O   
X O O 
Эпизод 84, Общая награда: 1
Средняя награда: 0.36904761904761907
шаг:  O
      
      
  X   
шаг:  X
  O   
      
  X   
шаг:  O
  O X 
      
  X   
шаг:  X
  O X 
      
O X   
шаг:  O
  O X 
X     
O X   
шаг:  X
O O X 
X     
O X   
шаг:  O
O O X 
X     
O X X 
шаг:  X
O O X 
X O   
O X X 
шаг:  O
O O X 
X O X 
O X X 
Эпизод 85, Общая награда: 1
Средняя награда: 0.3764705882352941
шаг:  O
      
      
  X   
шаг:  X
  O   
      
  X   
шаг:  O
  O   
X     
  X   
шаг:  X
O O   
X     
  X   
шаг:  O
O O   
X     
X X   
шаг:  X
O O O 
X     
X X   
Эпизод 86, Общая награда: -1
Средняя награда: 0.36046511627906974
шаг:  O
      
X     
      
шаг:  X
O     
X     
      
шаг:  O
O     
X     
X     
шаг:  X
O     
X O   
X     
шаг:  O
O     
X O   
X X   
шаг:  X
O     
X O O 
X X   
шаг:  O
O   X 
X O O 
X X   
шаг:  X
O   X 
X O O 
X X O 
Эпизод 87, Общая награда: -1
Средняя награда: 0.3448275862068966
шаг:  O
      
  X   
      
шаг:  X
      
  X   
O     
шаг:  O
      
  X   
O   X 
шаг:  X
  O   
  X   
O   X 
шаг:  O
  O   
  X X 
O   X 
шаг:  X
  O   
O X X 
O   X 
шаг:  O
X O   
O X X 
O   X 
Эпизод 88, Общая награда: 1
Средняя награда: 0.3522727272727273
шаг:  O
      
      
  X   
шаг:  X
      
    O 
  X   
шаг:  O
      
X   O 
  X   
шаг:  X
O     
X   O 
  X   
шаг:  O
O X   
X   O 
  X   
шаг:  X
O X   
X   O 
  X O 
шаг:  O
O X   
X X O 
  X O 
Эпизод 89, Общая награда: 1
Средняя награда: 0.3595505617977528
шаг:  O
      
  X   
      
шаг:  X
      
  X   
O     
шаг:  O
      
  X   
O   X 
шаг:  X
      
  X O 
O   X 
шаг:  O
X     
  X O 
O   X 
Эпизод 90, Общая награда: 1
Средняя награда: 0.36666666666666664
шаг:  O
      
  X   
      
шаг:  X
  O   
  X   
      
шаг:  O
  O   
  X   
  X   
шаг:  X
O O   
  X   
  X   
шаг:  O
O O   
X X   
  X   
шаг:  X
O O O 
X X   
  X   
Эпизод 91, Общая награда: -1
Средняя награда: 0.3516483516483517
шаг:  O
      
  X   
      
шаг:  X
    O 
  X   
      
шаг:  O
    O 
  X   
  X   
шаг:  X
  O O 
  X   
  X   
шаг:  O
  O O 
  X   
  X X 
шаг:  X
  O O 
  X   
O X X 
шаг:  O
  O O 
X X   
O X X 
шаг:  X
O O O 
X X   
O X X 
Эпизод 92, Общая награда: -1
Средняя награда: 0.33695652173913043
шаг:  O
      
  X   
      
шаг:  X
      
O X   
      
шаг:  O
    X 
O X   
      
шаг:  X
    X 
O X O 
      
шаг:  O
    X 
O X O 
X     
Эпизод 93, Общая награда: 1
Средняя награда: 0.34408602150537637
шаг:  O
X     
      
      
шаг:  X
X     
      
  O   
шаг:  O
X     
  X   
  O   
шаг:  X
X     
  X   
O O   
шаг:  O
X     
  X   
O O X 
Эпизод 94, Общая награда: 1
Средняя награда: 0.35106382978723405
шаг:  O
      
X     
      
шаг:  X
      
X     
O     
шаг:  O
      
X   X 
O     
шаг:  X
  O   
X   X 
O     
шаг:  O
  O X 
X   X 
O     
шаг:  X
  O X 
X O X 
O     
шаг:  O
  O X 
X O X 
O   X 
Эпизод 95, Общая награда: 1
Средняя награда: 0.35789473684210527
шаг:  O
      
      
    X 
шаг:  X
      
  O   
    X 
шаг:  O
X     
  O   
    X 
шаг:  X
X     
  O   
  O X 
шаг:  O
X     
  O X 
  O X 
шаг:  X
X     
  O X 
O O X 
шаг:  O
X X   
  O X 
O O X 
шаг:  X
X X O 
  O X 
O O X 
Эпизод 96, Общая награда: -1
Средняя награда: 0.34375
шаг:  O
    X 
      
      
шаг:  X
    X 
    O 
      
шаг:  O
X   X 
    O 
      
шаг:  X
X   X 
    O 
O     
шаг:  O
X   X 
    O 
O X   
шаг:  X
X   X 
  O O 
O X   
шаг:  O
X   X 
  O O 
O X X 
шаг:  X
X   X 
O O O 
O X X 
Эпизод 97, Общая награда: -1
Средняя награда: 0.32989690721649484
шаг:  O
    X 
      
      
шаг:  X
    X 
    O 
      
шаг:  O
    X 
    O 
    X 
шаг:  X
O   X 
    O 
    X 
шаг:  O
O   X 
  X O 
    X 
шаг:  X
O   X 
  X O 
  O X 
шаг:  O
O   X 
  X O 
X O X 
Эпизод 98, Общая награда: 1
Средняя награда: 0.336734693877551
шаг:  O
      
      
X     
шаг:  X
      
O     
X     
шаг:  O
      
O     
X   X 
шаг:  X
    O 
O     
X   X 
шаг:  O
    O 
O     
X X X 
Эпизод 99, Общая награда: 1
Средняя награда: 0.3434343434343434
шаг:  O
      
      
    X 
шаг:  X
O     
      
    X 
шаг:  O
O   X 
      
    X 
шаг:  X
O   X 
  O   
    X 
шаг:  O
O X X 
  O   
    X 
шаг:  X
O X X 
  O   
  O X 
шаг:  O
O X X 
  O   
X O X 
шаг:  X
O X X 
O O   
X O X 
шаг:  O
O X X 
O O X 
X O X 
Эпизод 100, Общая награда: 1
Средняя награда: 0.35