В этой статье я преследую три цели: показать еще разок тем, кто не сталкивался с математической оптимизацией, как она может пригодиться при выборе из большого числа вариантов на примере назначения членам команды ролей для решения некоторых командных задач; проговорить для сообщества людей, работающих над развитием алтимата (или других процессов, функциональными единицами которых являются команды людей), некоторые полезные последствия стандартизации; ну и повысить узнаваемость алтимата, раз я по стечению обстоятельств над его развитием тоже работаю.

Алтимат — это отличная командная спортивная игра с летающей тарелкой, в России в нее играет несколько тысяч человек, есть своя федерация (тг‑канал), ведущие отечественные игроки и команды очень достойно выступают на международном уровне, но первостепенной задачей остается увеличение числа команд по всей стране. К вопросам стратегического развития алтимата я вернусь в конце статьи, а для более широкого круга читателей сначала, как и анонсировал, покажу небольшое упражнение по оптимизационному моделированию, которое может натолкнуть размышляющих над организацией командной работы на что-нибудь новенькое.

Рассмотрим спортивную команду, планирующую подготовку к соревнованиям. Будем говорить о любительском уровне, где помимо тонких материй не решено еще много вопросов. К примеру, не все игроки способны свободно выполнять определенные технические элементы. Процесс планирования разделим на три этапа: выбор приоритетов и постановка тактических целей, определение исполнителей в выбранных тактических построениях, и наконец формирование оптимального плана тренировок, подчиненного результатам первого этапа. Вопросы, решаемые на первом этапе, являются сложно формализуемыми, поэтому в данной статье мы не станем их рассматривать в деталях, а вместо этого будем исходить из того, что этапы планирования взаимосвязаны, и следовательно каждая из рассматриваемых на первом этапе альтернатив требует развертывания подчиненного ей плана второго и третьего этапа для определения перспектив и оценки ее результатов. Возможность оперативного построения такого плана упростит решение задачи первого этапа, а потом является достойной целью для исследований. В настоящей статье сконцентрируемся на втором этапе.

Задача выбора исполнителей

Предположим, что на на первом этапе определены
T --- множество игровых тактик;
R_t, t\in T --- множество ролей в тактике t, положим R = \cup_{t\in T}R_t;
S --- множество индивидуальных навыков или просто навыков;
S_r, r\in R --- множество навыков, необходимых для исполнения роли r;
P --- множество игроков.

Считаем заданными параметры \bar{y}_{ps}, s\in S, p \in P, равные единице, если игрок p владеет навыком s и нулю в противном случае.

Введем бинарные переменные u_{ptr}, p\in P, t\in T, r\in R_t, принимающие значение один, если игрок p назначается на роль r в тактике t и нулю в противном случае. С использованием данных переменных выпишем соотношение для переменных v_t, t\in T, равных единице, если тактика t может быть реализована и нулю в противном случае.

Каждый игрок может быть задействован в рамках тактики лишь в одной роли:

\sum_{r\in R_t} u_{ptr} \leq 1, \quad p\in P, t\in T;

При этом игрок не может быть задействован в роли, для которой необходимы навыки, которыми он не обладает:

u_{ptr} \leq \bar{y}_{ps}, \quad p\in P, t\in T, r\in R_t, s\in S_r;

Наконец, тактика не может быть реализована, если хотя бы для одной из ролей не нашлось исполнителя:

v_t\leq \sum_{p\in P} u_{ptr}, \quad t\in T, r\in R_t.

В качестве иллюстрации рассмотрим пример с комбинацией в игре алтимат фрисби. Зеленым отмечен игрок атаки владеющий диском, игроки защиты на схеме не отображаются для упрощения восприятия. Задача атакующих довести диск до голевой зоны, обозначенной светло-серой заливкой. Игроку, владеющему диском, по правилам запрещено перемещаться, поэтому игровой процесс со стороны атаки состоит в создании полевыми игроками возможностей передать диск далее.

Комбинация из построения диагональным стэком в алтимат фрисби
Комбинация из построения диагональным стэком в алтимат фрисби

Рассмотрим построение игроков, называемое диагональным стэком, и возможные варианты развития атаки из данного построения, отраженные на иллюстрациях. Предполагается поочередное создание возможностей для передачи от игрока 1 игроку 3 через его перемещение как на иллюстрации 1, либо игроку 4 как на иллюстрации 2, либо игроку 2 как на иллюстрации 3, если варианты с иллюстрации 1 и 2 не сработали. В каждом из этих вариантов далее действия игроков описываются двумя дальнейшими шагами, изображенными на иллюстрациях ниже. К примеру, ситуация на иллюстрации 1 развивается в ситуацию на иллюстрации 1.1, и далее 1.2.

Для простоты примера ограничимся навыками передачи и приема диска. Исходя из действий, требуемых от игроков в каждой из ситуаций, сформируем список навыков, требуемых на каждой из игровых позиций. Игрок 1 в ситуации 1.1 делает передачу вдоль поля на среднюю дистанцию; в ситуации 2.1 делает передачу поперек поля -- перевод диска; в ситуации 3 делает короткую передачу в руки набегающему игроку; в ситуации 2.2 ловит дальнюю диагональную передачу; в ситуации 3.2 ловит прямую передачу либо диагональную передачу на среднюю дистанцию.

В результате подобного анализа приходим к следующему списку необходимых навыков:

Роль

Навыки

1

1.1 пас прямой; 2.1 пас перевод; 2.2 и 3.1 прием диагональный дальний; 3 пас короткий; 3.2 прием прямой; 3.2 прием диагональный средний

2

3.1 пас диагональный дальний; 3.1 пас диагональный средний; 3 прием короткий

3

1.2 и 3.2 пас прямой; 1.2 и 3.2 пас диагональный средний; 1.1 прием прямой; 3.1 прием диагональный средний

4

2.2 пас прямой; 2.2 пас диагональный дальний; 2.1 прием перевода; 1.2 прием прямой; 1.2 прием диагональный средний

Рассмотрим команду из пяти игроков со следующим состоянием навыков

Игрок 1

Игрок 2

Игрок 3

Игрок 4

Игрок 5

пас прямой

+

+

+

+

+

пас перевод

+

+

пас короткий

+

+

+

+

+

пас диагональный средний

+

+

+

+

пас диагональный дальний

+

+

прием прямой

+

+

+

+

+

прием перевод

+

+

+

+

прием короткий

+

+

+

+

+

прием диагональный средний

+

+

+

+

прием диагональный дальний

+

+

+

Внимательно изучив входные данные, можно прийти к заключению, что тактика "Диагональный стек" не может быть реализована в данном составе, поскольку Роль 1 может выполнять лишь Игрок 2, Игрок 1 не может выполнять ни одну из ролей, а Игрок 3 и Игрок 4 могут выполнять лишь Роль 3, поэтому для закрытия двух ролей - Роли 2 и Роли 4 - остается лишь один игрок - Игрок 5.

Чтобы определить минимальный набор навыков, требуемый к освоению для реализации тактики "Диагональный стек", введем дополнительные бинарные переменные \Delta y_{ps}, p\in P, s\in S, равные единице, если при распределении ролей будем считать, что игрок p в дополнение к имеющимся навыкам освоил также и навык s.

Тогда ограничением

v_t = 1, \quad t\in T

установим требование реализовать рассматриваемые тактики и зададимся целью минимизировать суммарное количество навыков, которые необходимо освоить

\sum_{p\in P}\sum_{s\in S}\Delta y_{ps} \to \min

Оптимальное решение, возвращаемое моделью, выглядит следующим образом:

Диагональный стэк Роль 1: Игрок 3 + прием диагональный дальний Роль 2: Игрок 5 Роль 3: Игрок 4 Роль 4: Игрок 2

На основе вывода модели приходим к решению предложить Игроку 3 освоить прием диагональный дальний, чтобы расширенный таким образом набор его навыков позволял ему выполнять Роль 1. При этом остальные игроки состава способны выполнять возложенные на них роли с их текущими наборами навыков.

Дальнейшие шаги и послесловие

Начинающие команды могут испытывать нехватку тренерских компетенций и игровых навыков, и частично справиться с этой задачей может помочь накопление и систематизация эффективных игровых приемов. Экспертное сообщество опытных игроков и тренеров способно сформулировать список игровых навыков, а также игровых тактик, разложив их на составные части, как в настоящей статье. Взяв готовые тактики и проведя внутреннюю аттестацию на предмет владения навыками, команда получит конкретный список индивидуальных задач, работа над которыми является уже менее абстрактной задачей, и может быть решена более эффективно людьми без надлежащего опыта. Целенаправленная работа над конкретными вопросами позволяет прогрессировать и отслеживать данный прогресс, а также, следует надеяться, будет способствовать закреплению игроков в командах.

На технических деталях настоящей работы я не останавливался, но пару слов скажу. Модель, описанная в статье, может быть решена с использованием бесплатных программных средств. Я пользовался пакетом JuMP для языка Julia, но альтернатив достаточно, в том числе и для других популярных языков. В рамках возможностей алгоритмов модель можно усложнять, что, правда, приведет и к росту объема необходимых для модели данных, которые чаще всего и становятся камнем преткновения. Спасибо за внимание, играйте в алтимат и оптимизируйте!