LINUX.ORG.RU

Сообщения rishard

 

Artificial Intelligence для игры в крестики-нолики

Вторая итерация разработки самообучающейся нейронной сети для игры в Tic Tac Toe (на основе рубиновой обертки библиотеки FANN), которую и хочу сегодня представить вашему вниманию.

Круто прозвучало, аж самому понравилось. Но, помнится, в бытность первого релиза были на Хабре и иронические реплики, типа хаха, из пушки по воробьям. Сходу предупреждая подобного рода - «можно было и на if-ах склепать» - аффекты: можно-то оно, знамо дело, многое, в том числе Яндекс открыть и поиграть, но практического опыта разработки игровой логики у вас не будет, да и к пониманию основ нейронных сетей не приблизитесь никоим образом. А, самое главное - вай нот, почему нет? - практика моей когда-то офисной карьеры ехидно напоминает, увы, что значительно большие, нежели в контексте данной разработки, человеческие ресурсы сплошь и рядом у нас тратятся на достижение гораздо менее значимых целей, чем написание программы, призванной проиллюстрировать не только опыт разработчика, создающего полностью эксклюзивный (#аналаговнет) алгоритм Artificial Intelligence, но и некоторую его склонность к юмору.

ОК, с этим разобрались. Теперь - коротко по сабжу. И да, если заинтересовал, позвольте адресовать к подробным докам на тему, здесь же - ремарка короткой строкой и ссылка на гитхаб для тех, кто пожелает попробовать обучить и обыграть нейронку (вам понадобится установить Ruby, далее ровно никаких технических проблем и плясок с бубнами). Итак:

gem install csv ruby-fann progress_bar tty-pie
git clone https://github.com/cmirnow/Tic-Tac-Toe-AI-with-Neural-Network-Resurrections.git
cd Tic-Tac-Toe-AI-with-Neural-Network-Resurrections
ruby start.rb

После первого запуска программа, не знающая правил и абсолютно не умеющая играть в Tic Tac Toe - проигрывает рандомно несколько десяткой тысяч партий (определено в настройках, меняйте и экспериментируйте, при желании), что занимает, в зависимости от ресурсов вашего рабочего компьютера, одну-две минуты. В качестве итога будет создан расширенный лог-файл в формате csv, о чем приложение известит соответствующим мессаджем консоли, пригласив к игре.

Следующий запуск (также все последующие, пока в директории приложения находится единожды сформированный лог) начнется так же, как в обиходе у большинства современных компьютерных игрушек - с загрузки данных (здесь все значительно быстрее) в оперативную память, что визуально сопровождено бегущей строкой терминала. В скобках: логика программки исправно отрабатывает в консолях Linux и Windows, но в винде процесс игры визуально способен выглядеть несколько хуже (пробовал пару раз на виртуалке, я очень не любитель поделий M$; отпишитесь, please, если заметите иные проблемы). По окончании чего Artificial Intelligence готов играть: после окончания каждой партии тут же начинается новая, очередность ходов (нейронка умеет играть как первым, так и вторым номером) выбирается случайным образом.

Алгоритм был несколько изменен по сравнению с предыдущим релизом, что позволило ощутимо улучшить уровень игры виртуального оппонента. На самом деле, мне практически теперь не удается обыграть своего маленького франкенштейна, который всегда сводит игру как минимум к ничьей, если не всегда к выигрышу. Если сумеете хотя бы раз выиграть, либо же программка откажется продолжить игру - это явно нештатная ситуация (не забываем, ваш виртуальный игрок вполне успешно обучает сам себя и полностью с нуля, что не очень просто и неким образом иллюстрирует историю Мюнхгаузена, сумевшего вытащить самого себя из болота за волосы), вам необходимо выйти из приложения (q + Enter), удалить лог и запустить процесс обучения заново.

 , , , ,

rishard
()

Покер на ruby

Был бы благодарен за конструктивную критику; правила техасского холдема изучал, когда лепил логику, т.к. в карты не играю совершенно. Получилось что-то наподобие deterministic poker, покера в открытую.

Бэкенд, таким образом, написан практически полностью с нуля - так, как «легло на перо» (только class CardComparable представляет из себя более-менее известный паттерн), классы (если кого-то заинтересуют) - https://github.com/cmirnow/Poker/tree/master/app/services Фронт построен на четвертом бутстрапе, простенькая анимация раздачи карт - liffect.js .

Вот что в итоге получилось: https://masterpro.herokuapp.com/poker_determ/index

Если есть здесь покеристы, их мнение представляет наибольший интерес... что добавить в стратегию игры бота? - которая на данный момент крайне несложна: оставляет после первой раздачи карты, составляющие законченную комбинацию, остальные карты меняет, предпочитая накрайняк сбросить все: рисковать не пробует совершенно. Затем следуют подсчет и сравнение комбинаций, при необходимости для определения выигравшего учитываются high card и kicker, в самом редком случае идет split pot.

 , ,

rishard
()

Fedora, openSUSE, PPPoE. ИДИОТЫ

Прочел на ЛОРе, в статье с броским названием - Fedora, PPPoE, идиотизм - что-то о злоключениях очередного гениального линуксмэна под ником pelmeshechka, обнаружившего в популярных rpm-based дистрибутивах чудовищную несуразность, а именно - неспособность работать с PPPoE... ну, что здесь можно сказать, оставаясь в рамках корректной беседы на техническом форуме. Много лет работаю именно с этими двумя дистрибами; затрудняюсь сказать, насколько давно было (и было ли вообще) время, когда в официальные коробки Fedora и OpenSUSE не входил по умолчанию пакет rp-pppoe:

zypper info rp-pppoe
Загрузка данных о репозиториях...
Чтение установленных пакетов...


Сведения — пакет rp-pppoe:
--------------------------
Репозиторий            : openSUSE-Leap-15.1-Oss                 
Имя                    : rp-pppoe                               
Версия                 : 3.12-lp151.5.60                        
Архитектура            : x86_64                                 
Поставщик              : openSUSE                               
Размер после установки : 410,9 KiB                              
Установлено            : Да                                     
Состояние              : актуален                               
Пакет с исходным кодом : rp-pppoe-3.12-lp151.5.60.src           
Заключение             : A PPP Over Ethernet Redirector for PPPD
Описание               :                                        
    rp-pppoe is a user-space redirector which permits the use of PPPoE
    (Point-to-Point Protocol Over Ethernet) with Linux. PPPoE is used by
    many ADSL service providers.

Короткой строкой How to start? как запустить; по ссылке. Подтверждение сказанному несложно найти, погуглив всего несколько секунд, вопросы о работе пакета rp-pppoe на Fedora 27, скажем, вообще лежат на поверхности. Выйду, таким образом, из немалого затруднения, слегка перефразировав терминологию автора вышеназванных двух постов, несколько более объемных, чем этот... получится примерно так:

Откуда Берутся Идиоты?

P.S. Вот эти перлы -

TL;DR: в федоре из коробки невозможно подключиться по PPPoE.
pppoe-setup тоже отстутствует

- не соответствуют действительности. Попросту говоря, это бред.

 , ,

rishard
()

RSS подписка на новые темы