Нейронная сеть, работает. Нейронная сеть представляет из себя аппарат для принятия решений о действиях, который будет совершать бот. На вход подается количество врагов, наличие и качества ножа, наличие и качество огнестрельного оружия и количество врагов. Бот может принять следующие решения: атаковать, убегать, гулять и прятаться.
При обучении подразумевалось, что подаваемые на вход значения - целые число от нуля до двух. При значениях не попадающих в промежуток, ответ может быть некорректный. Например если дать боту слишком много здоровья, слишком хороший нож и отличную пушку то он будет принимать решение атаковать, даже когда нет поблизости врагов. Хотя на самом деле реальные люди ведут себя очень похоже в таких условиях(вспомните, когда вы получили какую- нибудь очень хорошую, вам очень интересную вещь, применительную только в определенной ситуации - вы неимяю подходящей ситуации все равно будете пытаться ее применить, в особенности так ведут себя дети, что логично - они мало думают и делают решения на основе эмоций и чувств).
Скачайте, соберите с помощью make.
При запуске программы нейронная сеть начинает обучаться с помощью встроенных в код программы примеров(массив пар samples). Во время обучения программа будет записывать среднюю квадратичную ошибку вывода(при каждой итерации). Запись происходит в файл, который называется info.txt. Так как итераций целых сто тысяч, файл будет весить прилично. Но не надо обращать на это внимания, даже при этом обучение происходит меньше чем за секунду (лично у меня, а у меня хороший процессор...). После обучения программа пытается открыть файл с входными данными, он должен называться input.txt. Если такой файл пресутствует, то используя его она заполняет ею созданный файл output.txt. Откройте, там все красиво оформлено. Вход должен представлять из себя четыре числа (возможно вещественных, но обучалась сеть на целых, хотя ведет себя сеть даже с вещественными числами крайне адекватно). Далее программа запрашивает ввод с клавиатуры, сначала здоровье, нож, огнестрел, враги. И тут же выдает результат. Весь процесс ввода красиво оформлен.
Примечания: хороший нож повышает вероятность, того что бот решит прятаться. При целых числах, бот почти всегда уверен в своем решении (выход близок к еденице - > 0.7), при вещественных числах у бота начинаются сомнения. Хотя и главное решение(то есть решение, число рядом с которым самое большое) адекватное.
И зачем я это все пишу? Все равно никто читать не будтет :) Но мне это нравится.