Artificial Intelligence для игры в Tic Tac Toe — как способ бегства из российских реалий

Новый релиз Tic-Tac-Toe-AI-with-Neural-Network ознаменован небольшим пиаром этой написанной на Ruby игрушки — на форумах Сети.

Artificial Intelligence на основе Neural Network для игры в Tic Tac Toe
Artificial Intelligence на основе Neural Network для игры в Tic Tac Toe

Говорю об этом без малейшего стеснения, так как самопиар в инете напрямую коррелирует с моим заработком фрилансера и IT-предпринимателя, который я довольно давно предпочитаю позорищу российской gray salary… а вот уже этой знаковой особенности рынка труда в России — серые зарплаты, черный нал, «работодатель, выплаты на ИП», прочая юридически безграмотная херня — действительно впору стыдиться; только, к счастью, не мне. Но это так, реплика в сторону, как сказали бы в театре.


AI на основе Neural Network для игры в Tic Tac Toe - как способ бегства из российских реалий
Artificial Intelligence на основе Neural Network для игры в Tic Tac Toe — как способ бегства из российских реалий

Далее републикация материала, написанного в контексте означенной выше задачи. Здесь — очень короткой строкой, подробнее же, с примерами кода и пространными комментариями тут.



…два противоречия для начала.

Написал игрушку, не имеющую к основной тематике форума (js) ни малейшего отношения. Т.к. запускается игрушка в CLI. Даже и не знаю, что может быть более интересным и романтичным способом поиграться на ПК, чем старая добрая консоль.

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


AI на основе Neural Network для игры в Tic Tac Toe - как способ бегства из российских реалий
Artificial Intelligence на основе Neural Network для игры в Tic Tac Toe — как способ бегства из российских реалий

Объясню, как могу коротенько. Игрушка — моя попытка написать простенький Artificial Intelligence для игры в крестики-нолики как полностью эксклюзивное решение, без повторений и ссылок на уже сделанное ранее. Навряд ли получившуюся логику можно назвать прогрессивной и многообещающей, но это всяко не клон и не парафраз того, что уже многажды описано в Сети: раздумывал и кодил сугубо самостоятельно, подробно тестируя и выявляя слабые места логики. Здесь не обостренное самолюбие, которым нередко страдают программисты, а, скорее, простота общепринятого варианта игры, в котором увиделся некий вызов: хотелось сделать самому, не все ж на гитхабах/кодепенах рыться в поисках аналогов, по обыкновению моих коллег.

Скажу больше: немаловажной частью наикрутейшего этого AI является нейронная сеть, выстроенная на основе FANN. Да, вот такой прикольный гибрид получился, из пушки по воробьям. Впрочем, почему нет? — игрушка ведь. Вполне можно рассматривать данный проект как некую иронию, или даже самоиронию. В IT я давно, и ровно так же давно и безнадежно перегорел, выслушивая в бытность голимую поебень офисного планктона на совещаниях; кто в теме, знает, что зачастую обсуждаются там вопросы значительно более забавные и значительно менее значимые, нежели построение нейронной сети для игры в крестики-нолики. For example, кто не в курсах, почитайте Честное резюме программиста на Хабре, и для вас прояснится многое.


Artificial Intelligence на основе Neural Network для игры в Tic Tac Toe — как способ бегства из российских реалий

Ну вот как-то так. Суть логики в следующем: после первого запуска cli-app в течение пары минут проигрывает полностью вслепую (ходы делаются рандомно) несколько десятков тысяч партий, подробно логируя все это в csv. Далее начинается игра с пользователем: протокол игр преобразуется в массив, и AI, играющий вторым номером (ноликами) решает философическую, до странности в чем-то очень российскую задачку, пытаясь выудить из абсурда и хаоса случайных ходов те, которые позволят выиграть или как минимум свести к ничьей игру с живым и вполне логично мыслящим противником.

Вопреки ожиданию, это удается. Если у кого-то из читателей данного материала присутствует ruby на ПК (или не лениво поставить), вполне сможете убедиться: выиграть почти 100% невозможно, максимум ничья. Редкие исключения бывают, учитывая, что лог-файл формируется у каждого свой, но, учитывая количество включаемых в лог партий — это именно исключение; если удалось выиграть — удалите старый csv и сформируйте новый, вот и все. Нейронка также привносит интересные особенности в игру Artificial Intelligence: в одной и той же ситуации на доске, с одним и тем же csv-логом порой случаются различные ходы. Забавно, не правда ли? — особенно с учетом того, что, поскольку имеет место быть крайне шаткий фундамент,на котором AI строит свою логику — сделано все возможное, чтобы максимально упростить для Neural Network задачу.

Если заинтересует описание и возникнет интерес опробовать Tic-Tac-Toe-AI-with-Neural-Network — буду рад выслушать реплики и/или критику, ответить на вопросы, также любые замечания по делу. Гитхаб по ссылке.

Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *