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

 
Доброго времени суток!
Прочитал статью про использование генетических алгоритмов. Очень впечатался!!!

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

у индикатора шаг переменный.
Заранее благодарен.
 
Debugger:
1) Прочитал статью про использование генетических алгоритмов. Очень впечатался!!!

2) Каким образом ты Вы подаёшьте сигналы от индикатора на обучение?

3) У индикатора шаг переменный.

Прошу прощения за мою небольшую корректировку Вашего сообщения. Надеюсь на Ваше понимание. Заранее благодарен. :)

Итак:

1) Спасибо.

2) Никак не подаю. В статье идет поиск экстремумов Альтернативного ZZ, и сравнивается суммарный профит в пипсах с профитом индикатора ZZ (предварительно который настроен скриптом специальным на максимальный показатель профита с учетом спреда).

3) А это не имеет значения для демонстрации возможностей UGA. :)


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

 

Отличная статья, как раз ищу что-то подобное.

Одно уточнение:

3.10 GenoMerging. Заимствование генов

Данный оператор ГА не имеет природного эквивалента 

Это не совсем так.  

Данный процесс в природе называется горизонтальный перенос генов.

В целом - респект и уважуха автору, только надо обернуть данную библиотеку в класс, для обеспечения мобильности использования.

Из замечаний по поводу конверсии bool в double - не сильно ли это увеличивает объем вычислений ? 

Как я понял, для всех генов задается одинаковый диапазон изменения и одинаковая точность.  Диапазон - особой роли не играет, любой желаемый диапазон можно "втиснуть" в требуемый. А вот с точностью - сложнее, ее придется брать по максимуму. И если для какой-то переменной требуется перебрать 1000 различных значений, то такой же диапазон перебора автоматически присвоится и всем остальным переменным, даже переменным bool. Не выйдет ли так, что довольно большую часть вычислительных ресурсов алгоритм потратит на то, чтобы вычислять значения вот такой переменной ? Скажем, если у нас переменная bool, диапазон от -10 до 10, и точность 0,1 - то, получается, что для алгоритма по этой переменной будет сто РАЗНЫХ значений "истина" и 100 РАЗНЫХ значений "ложь", дающих одинаковые два значения фитнес-функции. Кроме того, сама популяция может содержать много различных особей, отличающихся по данной переменной по мнению самого алгоритма, но одинаковых из-за того, что реально за значением double скрывается bool.

 Не следует ли ввести еще один массив, как минимум, задающий точности для каждого гена ?  

 
Laryx:

1. Отличная статья, как раз ищу что-то подобное.

2. Как я понял, для всех генов задается одинаковый диапазон изменения и одинаковая точность.  Диапазон - особой роли не играет, любой желаемый диапазон можно "втиснуть" в требуемый. А вот с точностью - сложнее, ее придется брать по максимуму. И если для какой-то переменной требуется перебрать 1000 различных значений, то такой же диапазон перебора автоматически присвоится и всем остальным переменным, даже переменным bool. Не выйдет ли так, что довольно большую часть вычислительных ресурсов алгоритм потратит на то, чтобы вычислять значения вот такой переменной ? Скажем, если у нас переменная bool, диапазон от -10 до 10, и точность 0,1 - то, получается, что для алгоритма по этой переменной будет сто РАЗНЫХ значений "истина" и 100 РАЗНЫХ значений "ложь", дающих одинаковые два значения фитнес-функции. Кроме того, сама популяция может содержать много различных особей, отличающихся по данной переменной по мнению самого алгоритма, но одинаковых из-за того, что реально за значением double скрывается bool.

 3. Не следует ли ввести еще один массив, как минимум, задающий точности для каждого гена ?  

1. Спасибо.

2. В статье максимально простой (открытый проект), на сколько это возможно, алгоритм для простоты понимания читателем. Это отправная точка для улучшений и украшательств по желанию.

3. Конечно, сам я использую настраиваемый шаг (точность) для каждого гена (закрытый проект).

 

Данная разработка ГА несомненно заслуживает почётного внимания).

И ещё более, так как в отличие от МТ4 в МТ5 оптимизация возможна лишь до предпоследних суток. Учитывая этот нюанс, данная тема будет всё более актуальной для пользователей и разработчиков нейросоветников. Ну и конечно нет сомнения в том, что геналгоритмы также не отделимы от мат. моделей нейросетей как левый от правого башмака.)

Поэтому мне хочется задать вопрос. Андрей, скажите, исходя из тех тестов и экспериментов (а я не сомневаюсь что Вы их сделали в достаточном количестве), что на Ваш взгляд, и применительно к вашему советнику (а может и не только к одному вашему) даёт лучшие результаты в оптимизации? Ваш ГА или внутренний ГА терминала?

Заранее благодарю за ответ.

 
wiantin:

...что на Ваш взгляд, и применительно к вашему советнику (а может и не только к одному вашему) даёт лучшие результаты в оптимизации? Ваш ГА или внутренний ГА терминала?

У моего ГА результаты лучше. Он более настраиваем.

А в последних версиях реализован многокритериальный поиск с элементами элитного отбора.

Но штатный оптимизатор тоже очень хорош, настроек бы побольше да  многокритериальный поиск - вообще бы цены ему не было.

 
joo:

 

А в последних версиях реализован многокритериальный поиск с элементами элитного отбора.

 

Есть ли возможность ознакомиться с ними?
 

array out of range in 'UGAlib.mqh' (264,24)

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

upd ошибка стала появляться не только при повышении количества генов...

upd 2 разобрался, дело не в библиотеке, mql5 не принимает массивы задаваемых мной размеров.

 
wiantin:
Есть ли возможность ознакомиться с ними?
Нет. Только если надумаю написать статью-продолжение.
 
ozer-man:

array out of range in 'UGAlib.mqh' (264,24)

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

upd ошибка стала появляться не только при повышении количества генов...

upd 2 разобрался, дело не в библиотеке, mql5 не принимает массивы задаваемых мной размеров.

Ошибка связана с тем, что размер второго измерения фиксирован array[][const].

Что бы уйти от этого ограничения необходимо использовать структуры (или классы), что то типа такого:

struct Сhromosome //хромосома
  {
    float Gene[]; //гены
  };
Сhromosome Population[]; // Популяция


ps. и как это я пропустил целых два сообщения. :)

Причина обращения: