Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Пишем ИИ для Russian AI Cup

Пишем ИИ для Russian AI Cup

Артём Безукладичный (Sevenquark)
Russian AI Cup — крупнейший в России ежегодный чемпионат по программированию искусственного интеллекта. В докладе будут рассмотрены общие теоретические и практические методы программирования ИИ, а так же частные решения для условий конкурса этого года. Я расскажу о проблемах, возникших при программировании, и о том, как TDD помогло мне их преодолеть.

Avatar for Moscow Python Meetup

Moscow Python Meetup

December 10, 2013
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Онлайн курсы ИИ:  Определение ИИ  Поиск пути 

    Игровое дерево (Game tree)  Минимакс  Оценочная функция (Evaluation function)  И многое другое
  2. Определение ИИ  Иску́сственный интелле́кт – это наука о создании

    машин, которые действуют рациональн  Быть рациональным значит максимизировать ожидаемую полезность.
  3. Игровое дерево (Game tree)  Ориентированный граф  Узлы –

    позиции  Ребра – ходы  Экспоненциальный рост
  4. Оценочная функция  Принимает и оценивает состояние мира  Не

    зависит от выбранного хода  Состоит из параметров  U(s) = w1*f1(s) + w2*f2(s) + w3*f3(s) + ...
  5. Пути улучшения ИИ  Минимакс (сокращение ненужных узлов, правильная последователь

    ходов, увеличение гл  Оценочная функция (добавление параметров, которые качественно оценивают состояние  Подготовка окружения (тесты, логи, визуализация информации)  И другие
  6. Улучшение минимакса  Считать до определенной глубины  Динамически определять

    глубину просчета  Считать эффективность  Не просчитывать противников
  7. До определенной глубины  Граната, Ход, Лечение  Считаем только

    на 1 ход  Разное количество затраченных очков  Различное количество раскрываемых нод
  8. Расчет эффективности  E = ( f(end) – f(start)) /

    cost  f(start) – результат оценочной функции в начале  f(end) – результат оценочной функции после перебора  Cost – количество затраченных очков
  9. Не перебирать варианты противника  Последовательность ходов внутри одного типа

    случайна  Нет информации, доступной противнику  Большая вероятность ошибиться  Ограниченные вычислительные ресурсы
  10. Параметры оценочной функции. Передвижение:  Температура зон  Температура каждой

    точки  Бонус за открытие новых точек  Штраф за остановку в новой точке  Расстояние до команды (лидер)  Расстояние до лидера  Нахождение на пути лидера  Нахождение опасных мест  Количество бонусов, минимальное растояние до нужного бонуса  Расстояние до раненого (Медик)  Расстояние до атакуемого члена команды  Невидимый враг  Тактическое отступление (бегство)  Не линейное количество жизней (лечить слабейшего)
  11. Параметры оценочной функции. Противник:  Запоминание в памяти противников 

    Добавление призраков  Не линейное количество жизней (бить слабейшего и медика)  Предполагаемый нанесенный урон  Предполагаемый полученный урон  Нанесенный урон, вылечено жизней
  12. TDD:  Большое количество изменений  Множество взаимосвязанных параметров, огромный

    side effect  Необходимость моделирования и проверки множества различных ситуаций  Высокие требования к качеству кода
  13. Russian AI Cup:  Не сложно  Интересно и весело

     Марафон, а не спринт  Ближе к реальному программированию, а не к олимпиадному.  Повышает навык программирования(баги, ограниченное время, описание мира)  Затраченное время зависит от навыка  Всем рекомендую попробовать