Небольшие программы на Delphi и Pascal с исходниками.
TinyGame
Небольшая головоломка, название которой придумать не удалось. Писалась под впечатлением от анализа исходников библиотеки TurboVision. Имеет иерархию объектов: прямоугольники, панели, интерьер, кнопки, кнопки с рисунком, строки ввода и т.д. Все объекты статические. Написано под DOS на TMT Pascal 3.90 с использованием его графической библиотеки. Работает под DosBox.
Исходный код и EXE-файл здесь tinygame.zip
Live. Жизнь как она есть.
Классическая игра "Жизнь" придуманная Конуэем в 1972 году с небольшими расширениями: количество соседей инициирующих рождение и выживание организма можно варьировать от 0 до 8, поле может быть плоским или тороидальным (выглядит оно как плоское, но каждая сторона соединена с противоположной) и цвет организма зависит от возраста. При симметричной начальной фигуре в центре поля и больших множествах рождения и выживания получается своеобразный "генератор ковров". Игра сохраняется в файлах *.LIV, изображение, где каждый организм отображается пикселем можно сохранить в BMP. Игра написана на Delphi 7.0.
Исходный код, откомпилированный EXE-файл и примеры здесь Live.zip
Нейронные сети.
ООП библиотека нейросетей. Классическая нейросеть обратного распространения TBPNeuroNet. При ее создании активно читались исходники http://www.basegroup.ru/download/freecomponents/neuralbase/, поэтому многие названия переменных, констант, процедур и функций заимствованы оттуда. TBPNeuroNet создается по одномерному массиву-остову, который передается конструктору Create в момент создания сети. Первая ячейка массива содержит количество входов сети, вторая количество синапсов второго слоя и соответственно количество нейронов в первом слое и т.д. Последняя ячейка должна содержать 1 и соответствовать выходному синапсу сети и выходному нейрону в последнем слое. Нейроны и синапсы организованы в двумерные динамические массивы, а не в классы-слои.
Такая организация позволила с минимальными добавлениями и переделками создать сеть TBeerNeuroNet, описанную в книге
"Мозг фирмы" Стаффорда Бира http://www.vitaeauct.narod.ru/009/mng/bk_0001/0314.htm. Поэкспериментировав с этой сетью я не получил каких-либо преимуществ по сравнению с сетью обратного распространения - возможно что-то не так делал. В исходниках демонстрационной программы и фрейме контроля нейросетью оставлены заремаренные переменные для работы с TBeerNeuroNet.
Контроль нейросетью вынесен в отдельный фрейм, где можно задавать топологию сети, функции активации, скорость обучения, инерцию, способы и параметры инициализации весов, а также сохранять и загружать сеть. На других вкладках фрейма отображается топология сети и график обучения.
В качестве примеров приведены обучение нейросети брать производную зашумленного периодического сигнала и обучение логическим операциям XOR, OR и AND.
Следующий пример нейросети TPNN - вероятностная нейронная сеть. Пример ее обучения и работы взят из книги Роберта Каллана "Основные концепции нейронных сетей".
27.06.2016 исправлена ошибка возникающая при загрузке сохраненной сети.
Исходный код, откомпилированный EXE-файл и примеры здесь NewNNet.zip
Небольшой анонс. Программа, находящаяся сейчас в разработке. 100-клеточные шашки.
E-Mail: alvgor@gmail.com