Логотип Логотип Логотип Логотип
Интервью

Календарь РПЛ теперь умен. Нам рассказали, как именно его разработали

Спасибо Высшей школе экономики и ее алгоритму.

Российская премьер-лига только что шагнула из конца девяностых в 2019 год: календарь нового сезона наконец-то составлен не по устаревшей таблице Бергера, где командам просто присваивается номер в табличке, а потом руками выставляются ограничения. Теперь все решает алгоритм.

Обновиться лиге помогла Высшая школа экономики, у которой с 2018 года работает профильная спортивная лаборатория. В ней трудятся не только над вечными академическими текстами, но и поднимают актуальные темы: например, объясняют феномен Криштиану Роналду или влияние медийности на оценки фигуристов. Первый громкий реализованный на практике спортивный проект ВШЭ – как раз календарь РПЛ.

Сотрудник Лаборатории исследований спорта Арсений Столяров, который активно участвовал в проекте, подробно рассказал Sport Connect, как разрабатывался календарь РПЛ-2019/20 и что в нем еще можно улучшить.

Вдохновение, эксперименты и письмо в РПЛ

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

Еще 10-15 лет назад за границей периодически проводили такие разработки, потом публиковали статьи о том, какие методы использовали, какие задачи решали. Мы поняли, что даже на основе открытой информации продукт можно сделать лучше, чем было в российском футболе ранее. В июле 2018-го в Москве на конференции ВШЭ и Российской экономической школы выступал бельгийский профессор Дрис Гусинс, который рассказывал о разработке календаря для своей лиги. Я подумал: обидно, что даже в Бельгии уже работает такой подход, а у нас все еще нет. Это первая мотивация к началу работы.

Сначала мы решили просто поиграть с этим: попробовать писать код и, если что-то получится, предлагать кому-либо. Осенью и зимой экспериментировали сами, а в начале марта отправили письмо в РПЛ. К тому моменту у нас уже был алгоритм, который учитывал основные ограничения – правда, варианты он тогда просчитывал довольно долго.

РПЛ мы предлагали два формата сотрудничества: составление календаря с учетом ограничений, которые формулируют лига и клубы, или разработка ограничений на основе наших исследований. Остановились на первом.

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

Метафора работы алгоритма и самые жесткие ограничения

Работу нашего алгоритма объясню метафорой. Есть задача построить дом. Решить ее можно многими способами. Вот мы сначала наняли много не особо квалифицированных строителей, то есть использовали не очень актуальный код. Поиск оптимального календаря – это перебор огромного количества вариантов, их больше, чем атомов во вселенной. Поначалу наш код долго, потихонечку перебирал их, учился строить этот дом. Мы внедряли условия (окна круглые, окна квадратные, здание повыше или пониже), адаптировали под них алгоритм.

Когда увидели конкретный интерес РПЛ, было два пути: нанять больше строителей (то есть использовать более мощное железо) или вместо ручного труда внедрять экскаваторы, тракторы (в нашем случае – оптимизировать алгоритм, чтобы он работал быстрее). С марта по июнь мы работали в обоих направлениях. Сейчас система не ищет все возможные варианты календаря, а как только находит один неподходящий, сразу же отбраковывает еще несколько миллионов схожих – поиск ускорился.

Как только появляется подходящий вариант, поиск останавливается: например, если на самом деле существует тысяча удовлетворяющих условиям, он найдет первый и не будет искать оставшиеся 999. В то же время есть задачи, у которых нет решения – когда какие-либо ограничения противоречат друг другу. На начальном этапе алгоритм мог перебирать варианты сутки или даже дольше, итоговая версия справляется с самыми сложными условиями за несколько часов.

В общей сложности разных ограничений – под сотню. Часть из них, естественно, базовые: каждая команда проводит по 30 матчей, у каждой 15 игр дома и столько же на выезде – человеку это кажется очевидным, а компьютеру в равной степени нужно прописать и это, и не самые очевидные параметры.

Ограничениям мы присвоили приоритеты: сначала требования лиги, клубов, МВД, погодные условия, затем задачи по сбалансированности календаря. Например, при разработке был вариант, который технически удовлетворял всем условиям, но в нем «Краснодару» нужно было бы сыграть со всеми топ-соперниками за последние шесть или семь туров. Постепенно мы формализовывали и такие ограничения. Использовали отдельные маркеры для топ-5, потому что очень много требований в отношении участников еврокубков: чтобы, например, сразу же не встречались команды, сыгравшие во вторник в Лиге чемпионов и в четверг в Лиге Европы. Для алгоритма это требование выглядело так: нужен календарь, где в таких-то турах нет матчей топ-команд между собой. К тому же мы распределили матчи внутри топ-5 по разным турам, чтобы они не наслаивались.

Это, кстати, одно из самых жестких требований. Возьмем одну топ-команду, у нее 4 топ-соперника, то есть 8 таких игр в течение сезона. С учетом всех условий для размещения этих 8 игр вместо 30 туров оставалось 10 или 11. Ограничения ради сбалансированности календаря – тоже одни из самых сложных, они выедают огромное количество возможных вариантов. Если сотрудничество [с РПЛ] продолжится, у нас есть идеи, как еще лучше сбалансировать расписание.

Как стадионы становились теплыми и холодными, в чем календарь можно улучшать

Некоторые ограничения мы в первой разработке не учитывали, потому что просто не знали о них: например, нам нужно было обойтись без матчей между топовыми соперниками перед играми сборных. Еще на протяжении всего сезона мы не разрешали команде больше двух матчей подряд дома или в гостях, единственное послабление – зимние туры: там на теплых стадионах возможны три игры подряд, а для команд с холодными аренами – три матча на выезде.

Когда мы только приходили в РПЛ, предлагали в том числе определять холодные и теплые стадионы с помощью статистики погодных показателей. В итоге пока это не реализовали, потому что оказалась важна экспертиза РПЛ – например, между Казанью и Самарой разница не такая уж большая, но так как «Рубин» сыграет не на «Казань Арене», а на «Центральном», а в Самаре более комфортный стадион чемпионата мира, именно его классифицировали как теплый, а казанский – как холодный (ожидается, что «Рубин» будет играть на «Центральном» как минимум до середины осени из-за проведения на «Казань Арене» чемпионата мира по рабочим профессиям WorldSkills – Sport Connect). В итоге теплыми мы считали Сочи, Краснодар, Грозный и Санкт-Петербург – из-за крыши.

Если мы продолжим работу над календарем, на мой взгляд, его стоит делать более размеренным для команд из середины таблицы – чтобы и у них матчи с топ-соперниками распределялись по сезону равномерно. В нынешней версии это не учитывалось почти никак (например, «Арсенал» в ноябре-декабре сыграет подряд со «Спартаком», «Зенитом», «Краснодаром», ЦСКА и «Локомотивом» – Sport Connect).

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

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

Итоговый состав участников РПЛ-2019/20 мы узнали буквально за несколько дней до презентации календаря. Помогло, что в стыковых матчах между собой играли Уфа и Томск в одной паре, а в другой – два стадиона чемпионата мира, Самара и Нижний Новгород. Поэтому от исхода переходных игр мало что менялось, мы учли только индивидуальные просьбы клубов.

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

Мы видели вопросы, которые возникли у болельщиков после публикации календаря: например, о том, что в Петербурге между концертом Rammstein и матчем «Зенит» – «Краснодар» всего один день, или о пересечении одного из домашних матчей «Сочи» с уик-эндом «Формулы-1». Ответ прост: мы не отказывались ни от каких ограничений, в момент разработки календаря, к сожалению, у нас их просто не было.

***

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

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

Автор: Андрей Васильев