leanpoker


Иван Немытченко - организатор первого в России турнира по leanpoker 1 августа 2015 года в городе Омске состоялся первый в России турнир по leanpoker, организатором которого выступил Иван Немытченко. Турнир по leanpoker прошёл в IT Loft по адресу г.Омск, ул. Учебная 83.
Leanpoker — это не простое состязание игроков в Безлимитный Техасский Холдем. Это соревнование программистов, которые должны были написать покерного бота, целью которого было переиграть ботов-соперников. Особенностью турнира также является и то, что нет принципиальной разницы в том, на каком языке программирования пишет команда. Следовательно и языков программирования в турнире было представлено несколько, чуть меньше, чем число команд. А всего в турнире приняли участие 6 команд:

  • sevenbits — JavaScript
  • JBot — Java
  • Awesome incredible Poker Bot — Ruby
  • PythonPokerTeam — Python
  • Boris — Ruby
  • LeanNodeJS — JavaScript

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

Команда JBot Все эти шесть часов между ботами запускались мини-турниры, поначалу каждые две минуты, ботом всё чаще и чаще, пока интервал между мини-турнирами не достиг 10 секунд. Логика ботов в начале турнира была самой простой. Некоторые из ботов просто постоянно выставляли на ставку весь стек и балом правил полный рандом. Некоторые боты постоянно делали ставку в 50 фишек, что, к слову говоря, с самого начала принесло успех команде sevenbits и сохраняло им лидерские позиции длительное время. Пока вперёд не начала вырываться команда JBot. Участники этой самой малочисленной команды применили, как оказалось, довольно успешную стратегию. Их бот дожидался, когда другие соперники выбьют друг друга из игры и он не останется один на один с оставшимся игроком, ну а дальше дело техники. Особенностью начисления балов за выигранный ботом мини-турнир было то, что бот, занявший первое место приносил команде 5 очков, а бот занявший второе место приносил команде 3 очка. Таким образом, команда стабильно зарабатывала очки, лишь корректируя нюансы стратегии в зависимости от того, как изменялось поведение ботов противника.

Команда sevenbits Говоря о поведении ботов противника, хотелось бы упомянуть тот факт, что командам была доступна история всех раздач, в том числе и то, с какими картами играли боты соперников. Таким образом, проанализировав стратегию и поведение ботов противника, команда корректировала алгоритм собственного бота.
Хотя не все команды использовали полностью историю раздач, а некоторые принимали решение о поведении ботов лишь на основании карманных карт. И… команда sevenbits в конце матча вырвалась вперёд, руководствуясь как раз именно этой стратегией.
Хотелось бы отметить, что было очень интересно наблюдать, как команды, особенно те, которые не имели большого опыта в покере, или не имели его вообще, приходили к классическим приёмам покера. Например, воровство блайндов в поздней позиции или корректировка агрессивности игры в зависимости от размера стека своего бота.

Команда PythonPokerTeamНекоторые из команд, несмотря на сложности, незнание некоторых участников целевого языка, на котором писался бот команды и даже полное переписывание ботов с нуля, показали достойную игру и жажду к победе. Некоторые из участников открыли удивительный мир новых для себя языков и проявили желание впоследствии ближе познакомиться с этими языками. А некоторые из участников осознали, что их собственное мнение о своих способностях занижено, что также является также плюсом данного турнира.
Но не подумайте, что команды бились без перерыва все шесть часов. Естественно, что турнир был разбит на временные отрезки по часу, между которыми команды отдыхали и рассказывали о том, какие приемы они применяют и какие сложности они испытывают со своими ботами. Кому-то это может показаться странным, что команды делились своими стратегиями, но на самом деле суть турнира заключалась не в том, чтобы кто-то выиграл, а в том, чтобы участники команд научились чему-то новому, иначе взглянули на свои методы работы, и впоследствии перенесли полученный опыт на свою рабочую деятельность.

Команда LeanNodeJS Так участники команды LeanNodeJS признались, что на JavaSripct в подобный условиях постоянных коммитов в мастер ветку, которая сразу «идёт в продакшн», можно очень здорово поотстрелять себе все ноги. Но несмотря ни на что, они остались очень довольны турниром, поскольку взглянули на свою работу под иным углом.
Команда Boris была той командой, которая высказывала интересные идеи по построению алгоритма работы ботов и постоянно искала новые приёмы, которые позволили бы совершенствовать игру бота. Но, конечно, другие команды также не дремали и старались сделать всё возможное для своей победы.

Команда Boris Длительность же турнира должна была состоять из четырех часовых секций, но команды изъявили желание провести пятую секцию, мотивируя это тем, что у них осталось лишь немного пофиксить баги своих ботов. Ни Иван, ни я не думали, что что-то кардинально изменится в расстановке сил между командами, поскольку команды все-таки уже устали за всё время, и скорее наделали бы ошибок, которые привели бы к краху их игры.
Но на 15-ю минуту пятой секции команда Awesome incredible Poker Bot закоммитила что-то взрывное в своего бота и он начал резко идти к первым двум местам, сильно сбивая с позиций команду JBot, что заставило их посылать коммит за коммитом, чтобы исправить ситуацию.

Команда Awesome incredible Poker Bot А чуть позже и команда sevenbits привнесла изменения в программный код своего бота, что вывело их на первую позицию по итогам турнира.
В самом конце наблюдение за турниром ботов было приостановлено, но сама баталия между ботами не была поставлена на паузу, как это делалось во время перерывов. Вместо этого ботов оставили биться друг с другом, а экран проектора и мониторы ноутбуков были погашены. Некоторое время все участники турнира рассказали свои впечатления о турнире и чему они научились. А потом был просмотр результатов, который весьма удивил всех участников крутым графиком бота команды sevenbits после их последнего коммита.
В итоге все участники мероприятия получили массу положительных эмоций и весьма интересный опыт разработки. И это будет не последний турнир по leanpoker.

Участники турнира по leanpoker

Комментарии (27)


  1. kenoma
    01.08.2015 21:12
    +1

    И насколько хорош получился бот-победитель для реального рума?


    1. Legotckoi
      01.08.2015 21:17

      Считаю, что для реального рума он бы не подошёл. За шесть часов для реального рума такое не наваяешь.


      1. kenoma
        01.08.2015 21:46

        Но все равно, было бы интересно оценить уровень по сравнению с реальным человеком.


        1. Legotckoi
          01.08.2015 22:13

          Многие участники начали задаваться подобным вопросом к концу турнира. Мне тоже это было бы интересно. Но только тестирование с человеком даст реальную оценку, чего не делалось.


          1. AnnieOmsk
            02.08.2015 12:27

            Там все же была реализована стратегия реального человека. Поэтому, вполне возможно, что нормально бы он с людьми играл :-)


            1. Legotckoi
              02.08.2015 15:13

              Проверить бы всё-таки… А то там такие порой странные олл-ин проскакивали, что так обычно фиши играют.


    1. Trueteller
      01.08.2015 22:32

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


      1. kenoma
        01.08.2015 22:52
        -1

        Алгоритм CFRM ( h t t p ://modelai.gettysburg.edu/2013/cfr/cfr.pdf) пишется за пару часов любым кодером, который знаком со структурами данных вроде деревьев. Остальное время можно потратить на обучение бота и будет вполне себе средненький бот для игры в покер.


        1. Trueteller
          01.08.2015 23:01
          +2

          Я так понимаю, это теоретический комментарий? Попробуйте на досуге составить
          «Si is a finite set of actions or choices for player i
          A = S1 ?... ? Sn is the set of all possible combination of simultaneous actions of all players»
          для безлимитного текасского покера.
          Готов сыграть против вашего бота (я менее чем средненький игрок).


          1. kenoma
            01.08.2015 23:31

            Насколько сильными вы находите ботов из Poker Academy? Если слабыми, то и мой бот будет слабым.
            Размер cfr-таблиц у такого бота с грубой абстракцией занимает порядка 20-30 Гигов. На тот момент, когда я этим интересовался, процесс обучения до вненяемого результата в PA занимал порядка двух-трех суток в один поток с использованием memory mapped files и без всяких монте-карло.


            1. Trueteller
              02.08.2015 00:01

              Не знаком с ними, но
              1. Думаю, потратили на них значительно больше времени.
              2. В румах против людей они не побьют вообще ничего. Тем более, гугл говорит они 2006 года.


          1. aydinka
            14.08.2015 21:01

            Если вы тот самый Trueteller из PS, то ни один покер бот не сможет вас выиграть.


      1. AnnieOmsk
        02.08.2015 12:31

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


        1. Trueteller
          02.08.2015 13:04

          Да я понимаю и не против. Просто отвечал на вопрос. Вы молодцы :)


  1. mifki
    02.08.2015 08:11

    Я вот давно думал, а почему нет покеррумов, где были бы официально разрешены боты?


    1. Legotckoi
      02.08.2015 08:24

      мм… никогда об этом не задумывался… А есть где официально запрещены? Я немного не в курсе этого аспекта вопроса


      1. zTrue
        02.08.2015 11:24
        +2

        Официально запрещены [практически] в любом руме.


    1. edogs
      02.08.2015 14:48

      Я вот давно думал, а почему нет покеррумов, где были бы официально разрешены боты?
      А зачем покерруму конкуренты?:)
      Вроде бы была где-то статистика, что до 75% игроков в покеррумах в инете это боты самого заведения.


      1. dozent
        03.08.2015 17:22

        Можно пруф?


  1. mikka
    02.08.2015 10:48
    +2

    Не так давно проходил матч между очень сильным ботом и профессиональными игроками, при поддержке MS, в том числе — www.gipsyteam.ru/news/4528-hedz-ap-protiv-bota-lyudi-poka-silnee

    Играли один на один, с зеркальным отражением рук на две пары человек-компьютер. Люди пока выигрывают.

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


    1. Legotckoi
      02.08.2015 10:57

      Остаётся только этого бота запустить в турнир на микролимитах, где 20000 человек и в первых раундах за столом из 9ти человек 4 идёт олл-ин. В общем полный рандом… сомневаюсь, что в таком случае бот тоже будет успешен. Его в итоге задавит повышение блайндов.


      1. edogs
        02.08.2015 15:01

        Так в таких лимитах и старые покерные волки не всегда доходят даже до середины. Именно потому что рандом.


  1. stepik777
    02.08.2015 11:38

    То есть выходят игроки не готовятся к турниру? А тот, кто заранее подготовится всех сделает.


    1. AnnieOmsk
      02.08.2015 12:30
      +1

      Игрокам заранее было выслано все, что необходимо. Кроме того, это не был турнир по покеру! Автор статьи немного сместил акценты с того, ради чего на самом деле все это затевалось.

      Смысл мероприятия не в создании лучшего покерного бота! А в понимании на практике Continuous delivery, покрытия тестами и многих других практик командной разработки. Очень жаль, что статья вообще не упоминает об этом. Именно эти вещи по итогу больше всего запомнились участникам. Многие говорили, что по-другому взглянули на командную работу, оценили, насколько могут помочь тесты и т.д.


  1. MaxFactor
    02.08.2015 14:18

    Живу в Омске — слышу впервые про данное мероприятие, а так бы или поучаствовал или хотелось бы посмотреть.


    1. AnnieOmsk
      02.08.2015 14:39

      Мы как могли трубили о нем в группах ИТ-субботников, IT-лофта, репостили все, кто мог. Подпишитесь на группы и будет вам счастье, у нас и не только это мероприятие проходило :-)


  1. nem
    04.08.2015 16:59

    О, всем привет в этом чате. У меня есть возможность провести Lean Poker в Москве 27 сентября.
    Дело за малым — нужно помещение на 25 программистов с ноутбуками. Если у вас есть подходящая площадка, дайте мне знать в личку. Спасибо.