Технологии: Python, GLPK
Длительность: 2 месяца
Бизнес-целью этого проекта было создание инструмента, который мог бы создать наилучший возможный состав игроков в фэнтези-спорт с учетом их предполагаемых фэнтези-очков для следующей игры. Составы были созданы для нескольких спортивных лиг, таких как NBA, NFL и MLB, а также для нескольких ежедневных фэнтези-спорт веб-сайтов (DFS), таких как Fanduel и DraftKings. Инструмент может составить список оптимальных составов на основе одного и того же набора игроков и их предполагаемых фэнтези-очков.
Среди других вариантов можно создать лучшие составы с одним или несколькими игроками, уже присутствующими (заблокированными) в составе. Также можно ограничить выставление каждого игрока в списке оптимальных составов, минимальное и максимальное количество игроков от каждой команды в составе и многое другое.
Среди технических задач, которые мы решали, был поиск модели линейного программирования, которая наиболее правильно и эффективно описывает модельный ряд и все соответствующие ограничения. В проекте была реализована смешанная целочисленная модель линейного программирования, которая была решена с помощью GNU Linear Programming Kit (GLPK) через библиотеку интерфейса Python Pyomo. Инструмент был реализован в виде веб-сервиса. Параметры модели динамически заполнялись данными JSON через REST-подобный интерфейс API конечным пользователем, и лучшие составы также отправлялись пользователю в виде данных JSON. Модель линейного программирования фактически состояла из шести моделей, по одной для каждого вида спорта (NBA, NFL, MLB) и веб-сайта DFS (Fanduel, DraftKings).