Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Виртуальная биржа. Битва роботов arrow Проект "Битва роботов". Шаг 5. А как будет реализован генетический алгоритм.
27.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Проект "Битва роботов". Шаг 5. А как будет реализован генетический алгоритм. Печать E-mail
Автор megabax   
01.12.2013 г.
Структура программы на примере простейшей программы

Проект "Битва роботов". Шаг 5. А как будет реализован генетический алгоритм.

Прежде чем идти дальше, я решил немного подумать над тем, каким образом будут реализовывать роботов, основанных на генетическом алгоритме. Для начала у меня возникла идея запрограммировать некие примитивные объекты, "кирпичики", из которых будет строиться робот. Между этими объектами, которые я решил обозвать "Атом" будет передаваться информация. В самом же атоме информация будет определенным образом обрабатываться. В общем, похоже на некоторую искусственную нейронную сеть. В общей сложности, пока я вижу следующие типа атомов:

  • Сенсор. Получает информацию с биржевого терминала или от менеджера соревнующихся роботов.

  • Нейрон. Применяет к полученной информации какую либо функцию (список так же будет в будущем разработан).

  • Ячейка памяти.  Хранит информацию.

  • Торговый привод. Совершает биржевую операцию (выставление, удаление заявок).

Принцип генетического алгоритма я подробно описывать не будут, об этом уже написано здесь (ГА, шаг 1). Скажу только о том, как будут кодироваться роботы в ген. Разумеется, каждый тип атома будет иметь свой код. Параметры атомов - так же свой код. Таким образом, путем последовательности кодов можно закодировать все атомы в роботе. Если у каждого атома будет свой ИД, то можно закодировать и связи между ними.

И так, что получается? Ген это последовательность чисел. Как они будут скрещиваться? Если длины одинаковые, то берется случайная часть от первого гена и случайная от второго. Например, пусть длина гена сто чисел. Берем, допустим, первые 30 от одного гена, а остальные 70 от второго. Так они скрестились. Как будут мутировать? Либо случайное изменение одного из элемента гена, либо добавление (удаление) одного случайного элемента.

Теперь о целевой функции. Разумеется, это не только результатирующий профит. Надо учитывать еще и стабильность (подробнее шаг 2 ГА). Кроме того, робот не должен "отжирать" слишком много ресурсов компьютера. Поэтому целесообразно ухудшать значение целевой функции, если алгоритм слишком долго выполняется. В общем, все сводиться к тому, что у робота, как я ранее придумал в статье ГА, шаг 1, должен быть параметр Health, который растет, если робот стабильно приносит профит, и падает, когда робот в просадка, а так же если потребляет много ресурсов компьютера. Естественно, если робот дает большой профит, и отжирает много ресурсов, то тут зависит от того, что больше - профит или торможения робота. И тот и тот параметр будет иметь какой то весовой коэффициент.

Разумеется, прежде чем приступить программированию роботов на генетическом алгоритме, нужно как то "оживить" торговлю на виртуальной бирже, которую я создал на предыдущем шаге. Решение этой проблемы оказалось донельзя простым: я просто ввел возможность установить срок действия заявки. Таким образом, роботы выставляли заявки со сроком действия несколько секунд (тоже случайное число). И, торговля пошла. Я сделал даже возможность простора графика:

Проект "Битва роботов". Шаг 5. А как будет реализован генетический алгоритм.

Последнее обновление ( 01.12.2013 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги