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

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

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

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

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:  Не сложно  Интересно и весело

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