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

 
Обновил библиотеку UGA и примеры к статье. Текущая свободная авторская версия 1.3.0.

Файлы:
ugalib_ru.zip  56 kb
ugalib_eng.zip  57 kb
 

Обновил библиотеку UGA и примеры к статье. Текущая свободная авторская версия 1.3.1.


Выражаю благодарность shurick, mrProF, Serj_Che, Urain за найденные ошибки, ценные советы и пожелания. Вы очень помогли сделать алгоритм лучше, спасибо.

Файлы:
ugalib_ru.zip  56 kb
ugalib_eng.zip  56 kb
 
Господа! Кому не трудно - подбросьте примеры использования библиотеки UGA.
 
Graff:
Господа! Кому не трудно - подбросьте примеры использования библиотеки UGA.
Какие именно примеры (на какую тему) Вас интересуют?
 
joo:
Какие именно примеры (на какую тему) Вас интересуют?
любые, использующие UGA, а то из примеров в статье не совсем понятно как работает. в статье пример с зиг-загом, можно примеры с другими индикаторами(RSI, CCI....)?
 
Graff:
любые, использующие UGA, а то из примеров в статье не совсем понятно как работает. в статье пример с зиг-загом, можно примеры с другими индикаторами(RSI, CCI....)?

Напишите скрипт, в котором:

1) загрузка в массив данных необходимого инструмента для расчета индикатора

2) расчет индикатора/-ов с каким то набором параметров (эти параметры индикаторов нужно оптимизировать).

3) определение точек входа/выхода по сигналам индикатора

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


Пункты 2), 3), 4) являются шагами в одной итерации ГА - расчет FF для особи. Напишите такой скрипт, а я в свою очередь постараюсь помочь "прикрутить" к нему UGA.


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

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 

Андрей, доброго Вам. Спасибо за ЮГА. Пытаюсь методом "научного тыка" (на примере предложенных Вами UGA_script.mq5 и skin.mqh) научится использовать Вашу библиотеку. Если Вас не затруднит, дайте дополнительно вводную как правильно задать входные праметры для решения задачи обучения сети Кохонена, когда мы имеем множество точек на плоскости, которые нужно отнести (классифицировать) к определенным ядрам. Т.е. дано N точек с координатами (х,у), М ядер (котрые после обучения "сдвинутся"), FF функция- "мера близости". Как я понимаю в UGA_script.mq5 параметры нужно задать так: ChromosomeCount_P= ??? (не понимаю как задать), GeneCount_P=2*M (2 координаты для каждого ядра), Epoch_P= ??? (не понимаю как задать). Заранее спасибо.

 
kogriv:

Андрей, доброго Вам. Спасибо за ЮГА. Пытаюсь методом "научного тыка" (на примере предложенных Вами UGA_script.mq5 и skin.mqh) научится использовать Вашу библиотеку. Если Вас не затруднит, дайте дополнительно вводную как правильно задать входные праметры для решения задачи обучения сети Кохонена, когда мы имеем множество точек на плоскости, которые нужно отнести (классифицировать) к определенным ядрам. Т.е. дано N точек с координатами (х,у), М ядер (котрые после обучения "сдвинутся"), FF функция- "мера близости". Как я понимаю в UGA_script.mq5 параметры нужно задать так:

1) ChromosomeCount_P= ??? (не понимаю как задать),

2) GeneCount_P=2*M (2 координаты для каждого ядра),

3) Epoch_P= ??? (не понимаю как задать).

Заранее спасибо.

1) Задайте для начала 50, если окажется недостаточным, увеличить значение (не переборщите, до 200-300, иначе рискуете не дождаться результата)

2) Да.

3)  Задайте для начала 50-100, если окажется недостаточным, увеличить значение (не переборщите, до 200-1000, иначе рискуете не дождаться результата)

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

 


Ковыряюсь в библиотечке.

Андрей, я вот никак не могу понять, зачем вычислять фитнес-функцию ДО удаления дубликатов из популяции. Дорогое удовольствие. 

void CycleOfOperators
(
...........
.......
)
{
 ................................
...............

  //Определим приспособленность каждой особи в колонии потомков
  GetFitness(historyHromosomes);
................................
..........................
  //Подготовим популяцию к следующему размножению
  RemovalDuplicates();
}//конец ф-ии

Я бы контролировал наличие клонов ещё на этапе генерации потомков. (Что и сделаю, собсно.)

 
MetaDriver:

1) Андрей, я вот никак не могу понять, зачем вычислять фитнес-функцию ДО удаления дубликатов из популяции. Дорогое удовольствие. 

2) Я бы контролировал наличие клонов ещё на этапе генерации потомков. (Что и сделаю, собсно.)

1) Повторных вычислений ФФ не происходит, так как выполняется проверка по исторической базе хромосом - если хоть раз ФФ выполнялась ранее для такой особи то значение берётся из базы.

2) Здесь есть один нюанс с поселением новой колонии в популяцию. Но о нем я, пожалуй, умолчу. :) Сделай так, как тебе представляется более правильным и о результатах расскажи пожалуйста - после этого я расскажу о нюансе.


PS Вообще, а не применительно к данному комментарию, можно придерживаться самых разных стратегий случайного поиска ГА, каждый вариант в какой то степени заслуживает внимания. Результаты (скорость сходимости, точность поиска, застревание в локальных экстремумах) почти напрямую будут зависеть от применяемых стратегий поиска. 

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