MetaTrader 5 Strategy Tester! - страница 56

 
Renat Fatkhullin:

Тем самым вы увеличите объем просчетов, но безрезультатно. Бесцельно по сути, так как вы не дождались скрещенного поколения, а выстрелили в молоко.

Можно конечно предиктивно на неполном результате текущей считаемой популяции делать попытки смешения, но там промахов будет запросто близко к 100%. В общем, увеличение объема вычисления налицо, а ускорения - нет.

Вы опираетесь на какие-то математические доказательства или просто вам так кажется?

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

Или другими словами, если все успешные особи окажутся уже в первом поколении, то оптимизация может сразу же завершится.  Поэтому единственное что имеет значение - это набор генов. И в этом наборе нет гена возраста.

 
Alexey Burnakov:
Ок.

За 20000 обращений имитация отжига точно не сойдется при дефолтных настройках. Просто сравнить с генетикой для интереса...

Не переживай. Ни у кого не сойдется. Ни у тебя, ни у меня, ни в штатном ГА. Это реальный вынос мозга для оптимизации, говорю же, что сомневаюсь что како либо алгоритм сможет победить хотя бы 200 совпадений в пределах 20К обращений, не говоря уже о 100% попадании. 

Но у кого сойдется лучше - это очень большой вопрос сейчас. 

 
Andrey Dik:

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

Нет, облако тут не причем.

Это реально необходимое количество особей (от 128, лучше 256, но можно и больше) в популяции и при его снижении вы получите отвратительный результат.

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

 
Renat Fatkhullin:

Вот простой тест с генетическим алгоритмом по максимуму баланса на Moving Averages: EURUSD H1, 2016.01.01-2016.11.21, все тики, MetaQuotes-Demo

На локальном компе с 24 ядрами показал оценочное время расчета около 32 минут (тест до конца не довел, время бы меньше получилось, так как часть расчетов пропустилась бы как дубли). В клауде показал точно 3 минуты (тест прошел до конца).

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

Очень хорошо. Вопрос только в том, во сколько обошлась эта оптимизация?
 
Renat Fatkhullin:

Нет, облако тут не причем.

Это реально необходимое количество особей (от 128, лучше 256, но можно и больше) в популяции и при его снижении вы получите отвратительный результат.

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

Наоборот, получаю замечательные результаты.

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

 
Alexey Navoykov:

Вы опираетесь на какие-то математические доказательства или просто вам так кажется?

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

Я опираюсь на свой практический опыт написания га оптимизаторов. Первый написали еще в 2006 году.

Вы не теорию читайте про "успешный обмен генами", а подумайте об стоимости. ГА снижает затраты. И сейчас он может грубо за 8000-10000 проходов выдать приемлемый результат. Вы же предлагаете параллельно основной ветке расчетов стрелять в молоко(ибо еще нет скрещивания текущей популяции) по сторонам, увеличивая стоимость расчетов(проходов) вплоть до 1.5-2.0 раз при слабом (мое мнение, что близком к нулю) влиянии на конечный результат.


Или другими словами, если все успешные особи окажутся уже в первом поколении, то оптимизация может сразу же завершится.  Поэтому единственное что имеет значение - это набор генов. И в этом наборе нет гена возраста.

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

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


Вот как выглядит добивка результатов генетического алгоритма - все это в штатном ГА визуализируется и легко понятно:

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

Вот когда на протяжении N популяций критерий оценки перестает улучшаться, ГА останавливается. Причем иногда во время финальной добивки он вылезает из неожиданной локальной ямы и ловит прирост результата, то он раскручивает генетику дальше. Это позволяет нам дать автоматически подстраивающийся ГА движок, который избавляет начинающих на 90% от стандартных ошибок и дает очень хорошие результаты без необходимости крутить 10 ручек настроек своего собственного га алгоритма.


Вот как это в логах выглядит:

2016.11.22 10:07:15     Tester  genetic calculation is over
2016.11.22 10:07:12     Tester  Best result 19012.4 produced at generation 8. Next generation 32
2016.11.22 10:07:08     Tester  Best result 19012.4 produced at generation 8. Next generation 31
2016.11.22 10:07:04     Tester  Best result 19012.4 produced at generation 8. Next generation 30
2016.11.22 10:07:00     Tester  Best result 19012.4 produced at generation 8. Next generation 29
2016.11.22 10:06:57     Tester  Best result 19012.4 produced at generation 8. Next generation 28
2016.11.22 10:06:53     Tester  Best result 19012.4 produced at generation 8. Next generation 27
2016.11.22 10:06:42     Tester  Best result 19012.4 produced at generation 8. Next generation 26
2016.11.22 10:06:29     Tester  Best result 19012.4 produced at generation 8. Next generation 25
2016.11.22 10:06:26     Tester  Best result 19012.4 produced at generation 8. Next generation 24
2016.11.22 10:06:22     Tester  Best result 19012.4 produced at generation 8. Next generation 23
2016.11.22 10:06:18     Tester  Best result 19012.4 produced at generation 8. Next generation 22
2016.11.22 10:06:14     Tester  Best result 19012.4 produced at generation 8. Next generation 21
2016.11.22 10:06:09     Tester  Best result 19012.4 produced at generation 8. Next generation 20
2016.11.22 10:06:04     Tester  Best result 19012.4 produced at generation 8. Next generation 19
2016.11.22 10:05:59     Tester  Best result 19012.4 produced at generation 8. Next generation 18
2016.11.22 10:05:53     Tester  Best result 19012.4 produced at generation 8. Next generation 17
2016.11.22 10:05:49     Tester  Best result 19012.4 produced at generation 8. Next generation 16
2016.11.22 10:05:45     Tester  Best result 19012.4 produced at generation 8. Next generation 15
2016.11.22 10:05:38     Tester  Best result 19012.4 produced at generation 8. Next generation 14
2016.11.22 10:05:34     Tester  Best result 19012.4 produced at generation 8. Next generation 13
2016.11.22 10:05:30     Tester  Best result 19012.4 produced at generation 8. Next generation 12
2016.11.22 10:05:25     Tester  Best result 19012.4 produced at generation 8. Next generation 11
2016.11.22 10:05:20     Tester  Best result 19012.4 produced at generation 8. Next generation 10
2016.11.22 10:05:16     Tester  Best result 19012.4 produced at generation 8. Next generation 9
2016.11.22 10:05:09     Tester  Best result 18455.36 produced at generation 6. Next generation 8
2016.11.22 10:05:04     Tester  Best result 18455.36 produced at generation 6. Next generation 7
2016.11.22 10:04:59     Tester  Best result 18035.1 produced at generation 4. Next generation 6
2016.11.22 10:04:53     Tester  Best result 18035.1 produced at generation 4. Next generation 5
2016.11.22 10:04:48     Tester  Best result 17796.7 produced at generation 3. Next generation 4
2016.11.22 10:04:43     Tester  Best result 17508.26 produced at generation 2. Next generation 3
2016.11.22 10:04:37     Tester  Best result 17373.5 produced at generation 0. Next generation 2
 
Andrey Dik:
Очень хорошо. Вопрос только в том, во сколько обошлась эта оптимизация?

Ровно в 10 центов.

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

 
Renat Fatkhullin:
Ровно в 10 центов.
Не знаю... когда я последний раз пользовался облаком 2-3 месяца назад (под другим ником) получались раз в 100 большие денюжки, 15-20$ за одну оптимизацию это мягко говоря дорого. При интенсивных расчетах и частых оптимизациях целесообразнее купить машину с 24-мя ядрами.
 
Andrey Dik:

Наоборот, получаю замечательные результаты.

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

Я верю в самообман и человеческий curve fitting (что и есть самообман).

 
Andrey Dik:
Не знаю... когда я последний раз пользовался облаком 2-3 месяца назад (под другим ником) получались раз в 100 большие денюжки, 15-20$ за одну оптимизацию это мягко говоря дорого. При интенсивных расчетах и частых оптимизациях целесообразнее купить машину с 24-мя ядрами.

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

Получить результаты в 100-300 раз быстрее за время выпивания чашки кофе и по цене чашки кофе - это нормально.