Обсуждение статьи "Генетические алгоритмы - это просто!"

 

Опубликована статья Генетические алгоритмы - это просто!:

В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.

Автор: Андрей

 

Приветствую всех!

Надеюсь, вам понравилась статья.

Буду рад выслушать советы по переводу UGA на рельсы ООП.


 

Проверить-бы, будет ли вот это 

 MathSrand((int)TimeLocal());

работать при оптимизации? 

Вы не запускали свою библиотеку в тестере? 

 
zigan :

1) Проверить-бы, будет ли вот это 

MathSrand((int)TimeLocal());

работать при оптимизации? 

2) Вы не запускали свою библиотеку в тестере? 

1) Не вижу причин, что бы не работало.

2) В двух словах на этот простой вопрос исчерпывающего ответа дать не получится.

Трейдерские задачи оптимизации можно условно разделить на 2 типа: а) "Локальные задачи" и б)"Глобальные задачи".

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

б) Глобальные задачи - оптимизация некоей функции от всех локальных задач (это может быть итоговая за отчетный период прибыль, просадка, МО и т.д.). Требуется вся ценовая история на оптимизируемом периоде времени. Штатный тестер выполняет задачи именно этого типа.

UGA проектировался так, что бы никак не зависеть от штатного тестера и может быть использован как для глобальных, так и для локальных задач без изменения кода алгоритма, в том числе и в "самодельных" тестерах. В рамках же штатного тестера UGA может быть использован без изменений только в локальных задачах. Для глобальных задач в тестере его нужно модифицировать.

У меня пока не было необходимости использовать алгоритм оптимизации в тестере, имеющий свой алгоритм оптимизации.

Опишите Вашу задачу в общих чертах и мы рассмотрим здесь пути её решения.

 

Спасибо, joo, - интересная работа!

Появились вопросы о практическом применении генетического алгоритма

В статье описаны: 

- поиск максимума/минимума функция двух переменных на заданном интервале

- поиск максимума функции Profit (пример с ЗигЗаг'ом) 

Приведите, плз, примеры практических задач трейдинга, где по Вашему мнению алгоритм может быть полезен

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
joo :

Опишите Вашу задачу в общих чертах и мы рассмотрим здесь пути её решения.

 

Задача простая: Хочу чтобы функ. srand()  устанавливала генератор в случайную отправную точку при каждом прогоне тестера.

Окзалось что  MathSrand((int)TimeLocal()) устанавливает генератор в предыдущее(одно и тоже) начальное состояние при различных многократных прогонах тестера. 

 
zigan :

 

Задача простая: Хочу чтобы функ. srand()  устанавливала генератор в случайную отправную точку при каждом прогоне тестера.

Окзалось что  MathSrand((int)TimeLocal()) устанавливает генератор в предыдущее(одно и тоже) начальное состояние при различных многократных прогонах тестера. 

TimeLocal отдаёт время в секундах. При тестировании это будет одно и то же сгенерированное тестовое время.

Попробуйте использовать GetTickCount. Он честно отдаёт миллисекунды и ничего не эмулирует.

 
stringo :

При тестировании это будет одно и то же сгенерированное тестовое время.

О! Спасибо. 

 
yu-sha :

Спасибо, joo, - интересная работа!

Появились вопросы о практическом применении генетического алгоритма

В статье описаны: 

- поиск максимума/минимума функция двух переменных на заданном интервале

- поиск максимума функции Profit (пример с ЗигЗаг'ом) 

Приведите, плз, примеры практических задач трейдинга, где по Вашему мнению алгоритм может быть полезен

Экономические задачи вообще и задачи трейдера в частности в большинстве своем имеют оптимизационный характер.

Трейдеры находятся в постоянном поиске оптимальных параметров своих ТС. Вот далеко неполный список видов задач, в решении которых поможет UGA:

-поиск оптимальных параметров индикаторов

-поиск оптимальных параметров ММ

-поиск оптимальных настроек фильтров (любых, в том числе и поиск коэффициентов в цифровых фильтрах)  в индикаторах

-обучение нейронных сетей любой топологии и произвольного размера

-обучение комитетов сетей  любых топологий и произвольных размеров. (комитет - группа независимых от друг друга сетей)

UGA можно использовать как для решения отдельных приведенных выше задач, так и все вместе сразу.  Так, для того, чтобы помочь понять всю мощь UGA, скажу, что возможность решения последнего в списке вида задач, позволяет создавать модели мозга (как известно, мозг состоит из отделов).

Список задач можно продолжать долго, достаточно взглянуть на ветки форума.

Можно ещё находить корни уравнений. :)
 

Классная штука и грамотно написана. Я сам тоже игрался с генетической оптимизацией, но к сожалению выгод мало нашёл. ГА обычно рассматривают как метод глобальной оптимизации. Это всё так если у вас уйма времени чтобы иметь дело с очень большим колониями. Но при ограничении времени (размера колоний), ГА как и методы градиентного спуска сходится к локальному миниму, причём довольно медленно. Конечно, по сравнению с методами тупого перебора всех возможных комбинаций входных параметров ГА даёт неоспоримое преимущество в скорости. Одним из широких применений ГА является обучение многослойных нейронных сетей с их большим количеством коэффициентов. Такие сети имеют огромное количество локальных минимумов. ГА почему-то считают понацеей этого зла. Но на самом деле понацеей является применяемый инструмент, т.е. многослойная сеть в данном случае. Намного проще выбрать другой инструмент способный на высокую точность классификации (типа buy/sell/hold) или регрессивной экстраполяции при простой и однозначной оптимизации ;-)

 
gpwr :

1) Классная штука и грамотно написана.

2) Я сам тоже игрался с генетической оптимизацией, но к сожалению выгод мало нашёл. ГА обычно рассматривают как метод глобальной оптимизации. Это всё так если у вас уйма времени чтобы иметь дело с очень большим колониями. Но при ограничении времени (размера колоний), ГА как и методы градиентного спуска сходится к локальному миниму, причём довольно медленно. Конечно, по сравнению с методами тупого перебора всех возможных комбинаций входных параметров ГА даёт неоспоримое преимущество в скорости. Одним из широких применений ГА является обучение многослойных нейронных сетей с их большим количеством коэффициентов. Такие сети имеют огромное количество локальных минимумов. ГА почему-то считают понацеей этого зла. Но на самом деле понацеей является применяемый инструмент, т.е. многослойная сеть в данном случае. Намного проще выбрать другой инструмент способный на высокую точность классификации (типа buy/sell/hold) или регрессивной экстраполяции при простой и однозначной оптимизации ;-)

1) Спасибо за добрые слова.

2) Не сомневаюсь в Вашем знании предмета разговора, но, всё же, требуется некая сноровка в работе с генетическими алгоритмами (4-й совет в разделе статьи "Рекомендации по работе с UGA" )

UGA разрабатывался как универсальный инструмент, который можно использовать для любых задач оптимизации (раздел статьи "Немного истории") без каких либо доработок алгоритма. Максимально доступен для дальнейших модификаций и добавлении специфичных операторов. Много ли Вы  знаете алгоритмов оптимизации с такими свойствами?

Не знаю, почему GA считают панацеей от различных проблем оптимизации, я лично так не считаю и нигде этого не заявлял. Безусловно, для каждой конкретной задачи можно подобрать наилучший инструмент оптимизации как по скорости выполнения так и по итоговому результату. У UGA же цель другая - быть универсальным.

В ветке на MQL4 форума "Тестовая многопеременная многоэкстремальная функция"   я выкладывал некоторые интересные тестовые функции, одна из них представлена в статье.

Если есть желание, можете попробовать найти экстремумы предлагаемых функций другими алгоритмами оптимизации отличными от GA и выложить результаты здесь. Милости прошу. Всем будет интересно и мне в первую очередь.

PS Рекомендую всё же поближе познакомится с алгоритмом, предлагаемым в статье, что бы убедится в обратном (выделено жирным), хотя у меня нет цели убеждать в чем то кого либо.

Удачи в Ваших исследованиях!

Тестовая многопеременная многоэкстремальная функция. - MQL4 форум
  • www.mql5.com
Тестовая многопеременная многоэкстремальная функция. - MQL4 форум
Причина обращения: