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

 
joo:

Время выполнения алгоритма ГА несоизмеримо мало, по сравнению с выполнением FF. Поэтому нет особого смысла ломать голову над ещё большим ускорением алгоритма, так же как и нет смысла переносить ГА в dll например.

Нужно стараться сократить количество запусков FF при требуемой точности результата. Для этого алгоритм имеет гибкие настройки. Кроме того, время поиска можно ещё уменьшить за счет совершенствования поисковых качеств ГА вообще и операторов в частности. Рекомендую исследовательский потенциал направить именно в этих направлениях.


Вроде dll теперь не будет быстрее mql 5.
Ладно, как напишу библиотеку проведу тесты, потом напишу что вышло))

 

Важное замечание к статье.

Не используйте параметры алгоритма

FFNormalizeDigits и GeneNormalizeDigits

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

Другими словами введение операции нормализации в алгоритм было ошибкой.

Не путать с операцией дискретизации управляемой параметром Precision!

 
joo:

Важное замечание к статье.

Не используйте параметры алгоритма

FFNormalizeDigits и GeneNormalizeDigits

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

Другими словами введение операции нормализации в алгоритм было ошибкой.

Не путать с операцией дискретизации управляемой параметром Precision!

Так в сомой библиотеке UGAlib тоже лучше убрать нормализацию или только в FF.
 
Serj_Che:
Так в сомой библиотеке UGAlib тоже лучше убрать нормализацию или только в FF.
FFNormalizeDigits  используется в FF для нормализации значения приспособленности а GeneNormalizeDigits  используется  в самом алгоритме для нормализации генов. И там и там нормализацию делать не нужно.
 
joo:
FFNormalizeDigits  используется в FF для нормализации значения приспособленности а GeneNormalizeDigits  используется  в самом алгоритме для нормализации генов. И там и там нормализацию делать не нужно.

Понятно. Я конечно сам подправлю, но если не трудно выложи подправленную версию UGAlib.

Боюсь ошибок наделаю. 

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

 

Большое спасибо автору за библиотеку!

Добавьте строчку "cnt++;" в цикле функции поиска родителей, а то может в вечный цикл уйти!

 //Отбор двух родителей.

void SelectTwoParents

(

int &address_mama,

int &address_papa

)

{

  //-----------------------Переменные-------------------------------------

  int cnt=1;

  address_mama=0;//адрес материнской особи в популяции

  address_papa=0;//адрес отцовской особи в популяции

  //----------------------------------------------------------------------

  //----------------------------Отбор родителей--------------------------

  //Десять попыток выбрать разных родителей.

  while (cnt<=10)

  {

    //Для материнской особи

    address_mama=NaturalSelection();

    //Для отцовской особи

    address_papa=NaturalSelection();

    if (address_mama!=address_papa)

      break;

    cnt++; 

  }

  //---------------------------------------------------------------------

}


 
shurick:

Большое спасибо автору за библиотеку!

Добавьте строчку "cnt++;" в цикле функции поиска родителей, а то может в вечный цикл уйти!

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

Спасибо за сообщение, в ближайшее время внесу изменения.

PS Скорее всего, я элементарно забыл вставить cnt++, Ведь для чего то же я ввел эту переменную. :)

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

Документация по MQL5: Основы языка / Операторы / Оператор цикла for
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
  • www.mql5.com
Основы языка / Операторы / Оператор цикла for - Документация по MQL5
 
@joo Возможно ли Вашу библиотеку использовать для подборки параметров индикаторов Ишимоку, МАКД и др?
 
Graff:
@joo Возможно ли Вашу библиотеку использовать для подборки параметров индикаторов Ишимоку, МАКД и др?

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

Конечно можно.

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