Pull to refresh
25
0
Alexander Kolganov @ALEX_k_s

Программист высокопроизводительных вычислений

Send message

Нейросетка играет в Доту

Reading time8 min
Views38K


Всем привет! На самом деле нейросетка играет не в привычную Dota 2, а в RussianAICup 2016 CodeWizards. RussianAICup — это ежегодное открытое соревнование по программированию искусственного интеллекта. Участвовать в этом соревновании довольно интересно. В этом году темой была игра похожая на Доту. Так как я уже какое-то время занимаюсь обучением с подкреплением, то мне хотелось попробовать применить это в RussianAICup. Главной целью было научить нейронную сеть играть в эту игру, хотя занятие призового места — это, конечно, было бы приятно. В итоге нейросеть держится в районе 700 места. Что, я считаю, неплохо, ввиду ограничений соревнования. В этой статье речь пойдет скорее об обучении с подкреплением и алгоритмах DDPG и DQN, а не о самом соревновании.
Но обо всем по-порядку
Total votes 46: ↑44 and ↓2+42
Comments63

История участия (и почти победы) в ежегодном соревновании Russian AI Cup 2016

Reading time25 min
Views25K
Привет, Хабр! Меня зовут Дичковский Алексей, и я хочу вам рассказать о том, как я потратил полтора месяца своей жизни на написание бота для упрощённой версии DotA.

Ежегодно компания Mail.ru проводит онлайн-чемпионат по программированию игровых стратегий (Russian AI Cup 2016). Я принимал участие в данном соревновании в 2012 году (СodeTanks) и, совсем немного, в 2013 (СodeTroopers). В этом году, изрядно наевшись веб разработкой, я решил попробовать принять участие ещё раз. Я изначально не надеялся (но, конечно же, очень хотел) занять какое-либо призовое место и в целом для меня это был скорее тест, насколько я ещё могу реализовать нечто интересное. О том, что из этого получилось, можно прочитать под катом.


Читать дальше →
Total votes 63: ↑61 and ↓2+59
Comments32

Использование потенциальных полей в сценарии стратегии реального времени

Reading time8 min
Views41K
Реализация поведения юнитов в RTS играх может стать серьезной проблемой. Компьютер, зачастую, контролирует огромное количество юнитов, в том числе и принадлежащих игроку, которые должны передвигаться в большом динамическом мире, попутно избегая столкновения друг с другом, выискивая врагов, защищая собственные базы и координируя атаки для истребления противника. Стратегии реального времени работают в реальном времени, что делает довольно сложным слежение за планированием действий и навигацией.

Этот урок описывает метод планирования течения игры и навигации юнитов, который использует многоагентные потенциальные поля. Он основан на работах под номерами [1, 2, 3]. (Смотри в конце статьи ссылки на используемые материалы)



Читать дальше →
Total votes 57: ↑56 and ↓1+55
Comments17

FreeNAS 9.1.1 — создаем сетевое хранилище. Часть 1. Установка

Reading time5 min
Views349K

Вступление


FreeNAS 9.1.1 — дистрибутив для быстрого развёртывания сетевого хранилища, основан на базе FreeBSD, отличается интегрированной поддержкой ZFS и полностью настраивается через веб-интерфейс. Для организации доступа к хранилищу поддерживается FTP, NFS, Samba, AFP, rsync и iSCSI, для повышения надежности хранения может применяться программный RAID (0,1,5), для авторизации клиентов реализована поддержка LDAP/Active Directory.

Версия FreeNAS 9.1.1 примечательна переходом на кодовую базу FreeBSD 9, (прошлый выпуск был основана на FreeBSD 8.3), а также проведением огромной работы по улучшению удобства использования, стабильности и производительности. Улучшения затронули практически все подсистемы дистрибутива, от web-интерфейса до системы подключения плагинов. Инфраструктура разработки проекта переведена на использование Git.

FreeNAS можно установить на жесткий диск или USB-флешку. При этом система занимает весь объем носителя на который устанавливается, не зависимо от емкости, а все сетевые ресурсы для хранения информации размещаются на других жестких дисках.
т.е. сама система freenas занимает 1 жёсткий диск на котором нельзя ничего хранить, а на втором уже может хранится вся наша инфа!

Надеюсь, я вас не сильно утомил таким длинным вступлением, поэтому давайте уже перейдем к установке. Предварительно скачайте iso-образ FreeNAS и запишите его например компакт-диск.

Установка.


Вставляем CD-диск с FreeNAS в привод, и загружается с него. Видим такую картину

Читать дальше →
Total votes 19: ↑14 and ↓5+9
Comments14

FreeNAS 9.1.1 — создаем сетевое хранилище. Часть 2. Установка transmission

Reading time4 min
Views100K
В первой части мы установили и частично настроили наш FreeNAS надо двигаться дальше. Почему бы не поставить на него какой то BitTorrent-клиент? например Transmission. Мы не будем использовать встроенные плагины FreeNAS, а немного потренируемся используя консоль, и текстовый редактор vi :)

Примечание: Если вы крутой мега гуру юникса, то не думаю что вам стоит читать дальше, в статье я попытался максимально просто описать по шагам что и как, возможно вы увидите много очевидных вещей. Этот топик скорее шпаргалка для новичков на будущее…
Читать дальше →
Total votes 9: ↑6 and ↓3+3
Comments3

Облака — белогривые лошадки или безопасный ownCloud для «маленьких» в FreeNAS

Reading time13 min
Views60K
image
ownCloud, как утверждает Википедия — это Свободное и открытое веб-приложение для синхронизации данных, расшаривания файлов и удалённого хранения документов в «облаке». И, как мне кажется, довольно интересное решение для организации собственного домашнего облака.

Однако, ownCloud, устанавливающийся в виде плагина в системе FreeNAS, да и просто из коробки, имеет ряд недостатков, от которых хотелось бы избавится даже при использовании дома:
  • Во-первых, устанавливается в связке с SQLite, что подходит только если у вас небольшое кол-во файлов и пользователей, и абсолютно не подходит, если вы планируете синхронизацию с помощью клиента. У меня же хранилище уже расползлось почти на 5Tb и установленный таким образом ownCloud просто отказывался видеть часть файлов. Да и без синхронизации отдача от облака не велика. Заменим базу данных на MariaDB.
  • Во-вторых, отсутствует работа по https, а мне совсем не нравится мысль о том, что кто-то может перехватить мои файлы. Включим https.
  • В-третьих, начисто отсутствует защита от банального подбора пароля методом брутфорса. Защитимся от брутфорса с помощью fail2ban.
  • В-четвёртых, мне лень часто просматривать логи на предмет взлома, но очень хочется оперативно узнавать о таких попытках. Настроим push-оповещения о попытках подбора пароля с помощью сервиса pushover.net.

Как же это всё сделать
Total votes 26: ↑23 and ↓3+20
Comments48

История 5-го места на Russian AI Cup 2015

Reading time9 min
Views16K
Игра #418086

Сначала этот текст был написан в виде комментария к теме победителя данного конкурса. Но в итоге объем текста стал таким большим, что было решено выделить его в отдельную тему. Так что предполагается, что читатель в курсе о конкурсе и прочёл тему победителя. Также можете почитать историю 30-го места.

Сразу дам ссылку на репозиторий с исходным кодом — помимо непосредственно исходников там же есть вся история коммитов. Например, интересным может показаться время, в которое был совершён коммит с комментарием «спать пора».

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

Так что в данной теме я расскажу чуть подробнее о том, как эти идеи были реализованы в моём случае.
Читать дальше →
Total votes 47: ↑44 and ↓3+41
Comments1

История победы на ежегодном соревновании Russian AI Cup 2015

Reading time15 min
Views31K
Хочу рассказать о своем участии и победе в ежегодном соревновании по программированию ИИ «Russian AI Cup 2015» от Mail.Ru Group. Посмотреть подробные правила соревнования и записи игры желающие могут на сайте соревнования russianaicup.ru.

image

В этом году соревнование было организовано на совершенно новом уровне. Изменения произошли как в масштабности игрового мира, в котором действует ИИ, так и на сайте соревнования. Благодаря трехмерной визуализации, игры смотрелись гораздо увлекательнее. По зрелищности, на мой взгляд, соревнование значительно превзошло прошлогодний хоккей, и «солдатиков» 2013 года.

Участнику предлагалось написать ИИ для управления автомобилем в гонках на выживание. Как и в прошлом году, задача была «с физикой». Но на это раз исходники «физического движка» были открыты. Еще, в отличие от прошлого года, на этот раз все случайные явления в игровом мире были наглядны — случайная карта, случайно расставленные бонусы. Сразу было видно — когда удача на твоей стороне, а когда она от тебя отвернулась. В прошлогоднем хоккее, даже наблюдая за игрой значительно отличающихся по силе противников, было трудно понять произошел выигрыш благодаря случаю или мастерству. Думаю, это положительно сказалось на зрелищности соревнования.

Краткое описание правил


Цель — проехать 2 круга по замкнутой трассе быстрее всех. Точнее надо набрать больше всех очков, но приехать первым — это основной способ заработать очки. Еще очки дают за сбор бонусов по дороге и нанесение урона противникам. Трасса, как конструктор, собирается из квадратных «тайлов», это прямолинейные участки трассы, углы (поворот трассы на 90 градусов), или перекрестки (Т образные и обычные). Нужно ехать по ключевым точкам («тайлам») трассы в определенном порядке – иногда приходится делать петли, иногда вообще ехать назад. Еще у машинок есть возможность разливать за собой лужи мазута, стрелять друг в друга специальными снарядами (шины и шайбы), и использовать особый ускоритель «нитро». Заряды для всех этих приспособлений ограничены, и пополняются подбиранием случайно разбросанных по карте бонусов.

Расскажу, как устроен мой ИИ, и благодаря чему (как я думаю) удалось победить.
Читать дальше →
Total votes 93: ↑93 and ↓0+93
Comments45

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity