Не для разработчиков МТ! Чем заменить INIT_PARAMETERS_INCORRECT ? - страница 8

 
Aleksey Vyazmikin:

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

Это как?

Если каждый парам_ может принимать 3 корректных значения, то при использовать_параметр   = true получается 81 проход, а если = false, то 80 проходов получаются бесполезными.

Ну и как же "как то" это организовать?

 
Сергей Таболин:

Это как?

Если каждый парам_ может принимать 3 корректных значения, то при использовать_параметр   = true получается 81 проход, а если = false, то 80 проходов получаются бесполезными.

Ну и как же "как то" это организовать?

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

У Вас 4 параметра взаимозависимых или по две пары?

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

 
Сергей Таболин:

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

у вас 1953 валидных комбинации. выносите настройку int от 0 до 1952 и по порядковому номеру генерите правильную комбинацию. это как вариант.

 
Alexey Navoykov:

Вот в этом и состоит ваша ошибка.  "Лишних" проходов в генетике нет. Она сама всё раскладывает по полочкам, отсеивая лишнее, за счёт чего в итоге и достигается экономия времени и ресурсов.  А вы только мешаете ей.

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

Короче, теперь всё проясняется:

Не нужно ничего отсеивать по INIT_PARAMETERS_INCORRECT, вычисляйте 121 в соответствии с логикой вашей программы, а генетика сделает своё дело, и результат будет получен менее, чем за 1953 прохода.

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

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

Так вот именно там мне и подсказали использовать INIT_PARAMETERS_INCORRECT 

И да, я не понимаю зачем нужно заниматься заведомо бесполезными прогонами:

  • 100000
  • 010000
  • 001000
  • 000100
  • 000010
  • 000001
  • 110000
  • 011000
  • 001100
  • 000110
  • 000011
  • и т.д. 

если это, по сути, одно и то же?

А из того, что я знаю про генетику, получается что будут крутиться эти повторяющиеся цепочки, а наилучшие вообще могут в поле зрения этого алгоритма не попасть... Разве не так?

 
TheXpert:

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

у вас 1953 валидных комбинации. выносите настройку int от 0 до 1952 и по порядковому номеру генерите правильную комбинацию. это как вариант.

В итоге я так и сделал...

 
Сергей Таболин:

И да, я не понимаю зачем нужно заниматься заведомо бесполезными прогонами:

  • 100000
  • 010000
  • 001000
  • 000100
  • 000010
  • 000001
  • 110000
  • 011000
  • 001100
  • 000110
  • 000011
  • и т.д. 

если это, по сути, одно и то же?

А из того, что я знаю про генетику, получается что будут крутиться эти повторяющиеся цепочки, а наилучшие вообще могут в поле зрения этого алгоритма не попасть... Разве не так?

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

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

В общем, я вам всё-таки рекомендую разобраться, как работает генетический алгоритм.  Иначе бесполезно вам что-то объяснять.

 
Alexey Navoykov:

Так а что такое наилучшие цепочки?  ...

Если бы я знал, то и оптимизация была бы не нужна.

Возможно наилучшая это 326000, 514300 или 346215? 

 
Сергей Таболин:

Если бы я знал, то и оптимизация была бы не нужна.

Возможно наилучшая это 326000, 514300 или 346215? 

То был просто вводный вопрос, на который я давал объяснение.

Поэтому не "наилучшая", а "наилучшИЕ, учитывая всевозможные копии этой цепочки.

Вы не понимаете простую вещь, что отсеивая цепочку по INIT_PARAMETERS_INCORRECT, вы возможно упускаете именно одну из этих успешных цепочек, или близкую к ним. Поэтому поиск короче не становится.

 
Alexey Navoykov:

То был просто вводный вопрос, на который я давал объяснение.

Поэтому не "наилучшая", а "наилучшИЕ, учитывая всевозможные копии этой цепочки.

Вы не понимаете простую вещь, что отсеивая цепочку по INIT_PARAMETERS_INCORRECT, вы возможно упускаете именно одну из этих успешных цепочек, или близкую к ним. Поэтому поиск короче не становится.

Я отсеиваю ИСКЛЮЧИТЕЛЬНО повторяющиеся! В примере отмечены красным фоном.

Чем может быть лучше цепочка 120000 цепочки 010020 ??? Это одна и та же цепочка! И 100002, и 000012! Так нафига эти повторения одного и того же?

 
Сергей Таболин:

Я отсеиваю ИСКЛЮЧИТЕЛЬНО повторяющиеся! В примере отмечены красным фоном.

Чем может быть лучше цепочка 120000 цепочки 010020 ??? Это одна и та же цепочка! И 100002, и 000012! Так нафига эти повторения одного и того же?

Ладно, вы не понимаете, но это и ожидаемо.  Для слышащих людей я уже сказал всё, что хотел донести.  Более не вижу смысла продолжать

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