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

Генетический алгоритм. Шаг 2. Матмодель

Все статьи по данной теме.

И так, приступим к созданию матмодели.  Как я уже писал в предыдущей статье, все будет вертится вокруг параметров Health (Здоровье) и Rang (ранговый потенциал). И так, у нас имеется популяция роботов в количестве N. Что бы компьютер не подвис, нам нужно ограничить количество одновременно эмулируемых роботов. Пусть это будет Nmax. Тогда, если N>Nmax то контейнер должен удалить из системы N-Nmax роботов. Для этого ему необходимо отсортировать их по Health  и "убить" самых слабых. 

Теперь нужно решить еще вот такие вопросы: "Каким образом заработанный роботом профит, просадка и нестабильность графика будут влиять на Health?", "Сколько запросов на спаривание должен послать робот-самец в зависимости от Health?", "Как определить ранговый потенциал?" и "И как будет передавать потомству генетический материал".

И так, давайте по порядку. Как управлять параметром Health? Давайте сначала поставим цель. Пусть мы хотим достигнуть доходности 100% годовых. Идеальный график доходности - экспонента:

Генетический алгоритм. Шаг 2. Матмодель

Исходя из желаемой доходности определим норму доходности на за период - извлечем из 2 корень степени количество периодов в году. Для месяца это будет 5,95%. Если робот выполняет норму доходности, то он получает "питание" и может жить. Если нет - то его "паек" будет урезан. Сначала робот "голодает", затем у него начинает уменьшаться Health. Если робот перевыполняет план, то он получает больше питания, и у него начинаются "жировые отложения".  Возникает вопрос, а нужно ли робота поощрять за "жир"? С одной стороны, чем больше прибыль, тем лучше. С другой, хотя большой профит - это хорошо, но это отклонение от идеального графика, нестабильность. Поэтому, поощрять перевыполнения плана сильно не будем. Наше поощрение будет состоять только в том, что в случае голода "жирный" робот дольше проживет. Кстати, немного наказать за нестабильность, даже за хорошую, робота все же нужно (наряду с поощрением): "жирный" робот будет получать большие удары по Health в случае просадки, чем его собраться, точно выполняющие норму прибыли. 

Просадка (убыток) явление крайне нежелательно, поэтому, если робот допустит это, то у него сразу же отнимается часть Health, не будем даже ждать, когда он "проголодается". Сколько Health  будем отнимать, выясним, когда будем писать программу, экспериментальным путем. Сейчас лишь решим, что "отнимание" будет пропорционально допущенному убытку. 

Теперь перейдем к спариванию. Думаю, что бы определить, с каким количество "самок" будет спариваться робот, будет определяться путем умножения Health  на коэффициент, который мы так же выясним эмпирически. Какую "самку" выбрать для спаривания? В целях упрощения задачи, "самец" выбирает самку по рандому (случайно). А вот уже "самка" выбирает партнера исходя из рангового потенциала. Как его определить? Думаю, на него не сколько должен влиять высокий Health, сколько способность робота сохранять этот параметр стабильно высоким длительное время.  Значит, каждое увеличение здоровья должно поднимать и ранговый потенциал. А вот его падение снижать Rang гораздо сильнее, чем повышает повышение. Если Health не меняется, то ранговый потенциал тоже должен немного расти,  при чем тем быстрее, чем выше Health. Допустим, сначала Health  был 100%. Затем стало 105%. А потом упало до 100%.  Потом снова поднялось до 105%. А у другого робота Health  был 100%, затем 102%, потом 103%, затем 105%. У последнего при таком алгоритме ранг будет выше. И это правильно, потому что если стабильно повышение Health  говорит о том, что робот исправно выполняет норму прибыли и его график доходности стабильный, что соответствует нашей цели. 

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

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