Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я веду полную перепроверку на MQL5 и опубликую тут полные результаты с прямыми кодами для воспроизведения.
Поставим задачу просто и чисто для проверки способностей тестера подбирать целевую функцию:
В первую очередь надо понять область просчета - это 26(сколько символов в алфавите) в степени 50(символов в тексте). Это 5.6061+e70 вариантов переборов - такое безумное число в реальности.
Генетическому алгоритму нужно умудриться в пределах 1-2 десятков тысяч попыток уложиться и найти приемлемые результаты. Я бы сказал четче - задача экстремально сложна(безнадежна) и все зависит от функции фитнеса.
1) Шаг первый, вот исходный эксперт (TestFitness.mq5) с простейшей фитнес-функцией, предложенной @Andrey Dik:
{
double ffValue=0;
//---
for(int i=0;i<ArraySize(ExtTarget);i++)
if(ExtTarget[i]==ExtOriginal[i])
ffValue++;
//--- вернем результат
return(ffValue);
}
TestFitness.set файл приложен в аттачах, его надо положить в каталог /%datafolder%/tester до запуска терминала.
Так как фитнесс функция простая и содержит ряд проблем(малый размах дискретных результатов 0-50, нет мелких приращений, постоянный обман генетического тестера за счет срыва результатов, когда 1 и 10 совпавший символ равнозначны для оптимизатора), то тестер смог достичь результатов 39 подобранных результатов из 50:
В системе с локальными 8 ядрами тест проходит за 57 секунд:
2016.11.26 01:48:19 Statistics local 14665 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2016.11.26 01:48:19 Statistics optimization done in 0 minutes 57 seconds
2016.11.26 01:48:19 Tester genetic optimization finished on pass 21760
2016.11.26 01:48:19 Tester result cache used 7095 times
2016.11.26 01:48:18 Tester 14491 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\TestFitness.3.xml
2016.11.26 01:48:18 Tester genetic calculation is over
2016.11.26 01:48:17 Tester Best result 39 produced at generation 72. Next generation 83
оригинал: millions of residents chinas northwestern regions
жирным выделено 11 ошибок из 50 позиций, это 22%. не забывайте, что вместо пробелов поставлены x.
2) Шаг второй, пробуем исправить проблему с исходной фитнес функцией.
Как я и предложил выше на уровне теоретического рассуждения, сделаем зависимость угадывания символа зависимо от позиции символа:
{
double ffValue=0;
//---
for(int i=0;i<ArraySize(ExtTarget);i++)
if(ExtTarget[i]==ExtOriginal[i])
ffValue+= 1 + i * 0.01;
//--- вернем результат
return(ffValue);
}
Тем самым мы избавляемся от чудовищно дискретного результата и делаем результирующую кривую более гладкой. Это приводит нас к результату 86%.
Использованный коэффициент i * 0.01 хотя очень мал, но оказался очень важным - он дал слабое направление оптимизации генетическому алгоритму, а не заставил его кружиться в цикле самообмана как в исходной формуле.
2016.11.26 02:26:56 Statistics optimization done in 0 minutes 56 seconds
2016.11.26 02:26:56 Tester genetic optimization finished on pass 22272
2016.11.26 02:26:56 Tester result cache used 6246 times
2016.11.26 02:26:55 Tester 15779 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\TestFitnessBetter.3.xml
2016.11.26 02:26:55 Tester genetic calculation is over
2016.11.26 02:26:55 Tester Best result 54.03999999999999 produced at generation 74. Next generation 85
оригинал: millions of residents chinas northwestern regions
жирным выделено 7 ошибок из 50 позиций, это 14%.
В чем проблемы и что я показал:
Я выполнил главные требования к замерам тестов:
Что я концептуально показал:
Когда выходишь заявлять преимущества, вы(Андрей) обязаны обложиться десятикратной защитой и обложить все тоннами защит перед ударом.
Чтобы лично понимали: когда мы готовим ударные позиции, мы тратим 3-4 месяца на внутреннее собственное убийство любых шансов нас переиграть. Мы не выпускаем и не заявляем ударные позиции, пока на 100% не будем уверены, что мы себя не обманываем себя и что мы выдержим любую стороннюю критику.
Я лично не выпускаю по несколько месяцев ударные позиции, потому что я не верю в полную реализацию и возможность защиты наших позиций. Но когда выпустили, мы всегда в полном пакете доказательств.
Еще важно, что у меня не было времени (потратил всего час на исследования), чтобы лучше подобрать фитнес функцию. Я просто остановился на своем теоретическом слабо обоснованном варианте 1 + i * 0.01 и даже при нем получил серьезное улучшение результата (86% вместо 78%).
Ну и чтобы не забывали - генетика для быстрого поиска, а не для получения 100% точного результата. С помощью генетического оптимизатора вы сначала ищите области за 0.0000000х% затрат, а уже потом сужая область или продолжаете генетический поиск или просто перебираете потенциально важные области.
Если кто-то пытается с первого удара в генетике требовать 100% гарантий, то он явно не понимает принципа поиска.
Еще важно, что у меня не было времени (потратил всего час на исследования), чтобы лучше подобрать фитнес функцию. Я просто остановился на своем теоретическом слабо обоснованном варианте 1 + i * 0.01 и даже при нем получил серьезное улучшение результата (86% вместо 78%).
Ни это ли называется читингом? Задача была не восстановить текст, а найти максимум ФФ. Точно так же, как задача перед оптимизатором стоит не найти робастые параметры ТС, а найти максимум критерия оптимизации ТС. Самообман же выдаете. Красиво написали про доказательную базу, удары и прочие бла. Но сделали не больше, чем Андрей. Конструктива не больше. Обвинений с Вашей стороны не просто много, они зашкаливают и не отличаются рассудительностью. Причем, я отлично смог воспроизвести оба варианта: Ваш и Андрея.
Критические замечания в адрес Вашего ГА звучали только из моих уст. Поэтому наезды на Андрея, как перевод стрелок.
И давайте, если способны держать удар, попробовать держать его без админ. ресурса. Сейчас выходной, потратили много своего времени на обеливание того, что никто и не пачкал. Очень много оскорбительных выпадов в адрес Андрея написали. Да что дипломатничать, оскорбляли. Но сопли оставим и вернемся к баранам - алгоритмам.
Читинг или самообман - не доказательная база. Алгоритмы сравниваются на поиск максимума ФФ, а не на возможность подбора удобной для себя ФФ. Никто не находит удобную для ГА ТС.
Опровергните технически мои доводы и тогда ваши слова будут что-то значить.
Слишком много страниц группа людей радостно потратила в словестной игре без воспроизводимых доказательств. Андрей красиво провел столько времени в обсуждениях, балансируя на грани фактического(не надо рассказывать про куски и словестную поддержку идей) непредоставления исходных данных.
Не забывайте, что если я захожу в обсуждения, то там все быстро превращается в доказательства каждого слова. Лично за вами большущий долг доказательств стоит по массе заявлений и эти долги не забыты.
Опровергните технически мои доводы и тогда ваши слова будут что-то значить.
После написания этого поста пойду спать, т.к. очень поздно уже. Готов сыграть по Вашим правилам. Вы их только четко сформулируйте. Давайте все ФФ, по которым нужно тягаться с Вашим ГА - найти максимум.
Слишком много страниц группа люде радостно потратила в словестной игре без воспроизводимых доказательств. Андрей красиво провел столько времени в обсуждениях, балансируя на грани фактического(не надо рассказывать про куски и словестную поддержку идей) непредоставления исходных данных.
Странно все это, т.к. я сразу смог все воспроизвести. И фактически вовлек его в это крайне неприятное для него обсуждение. За что искренне перед ним извиняюсь.
Не забывайте, что если я захожу в обсуждения, то там все быстро превращается в доказательства каждого слова. Лично за вами большущий долг доказательств стоит по массе заявлений и эти долги не забыты.
Долги надо помнить! Помню свои недавние заявления и доказательную базу, с которой Вы соглашались (не сразу) и вносили соответствующие правки в билды. И никогда не воспринимал это, как некую победу над Вами. Если баг или недоработка исчезла - это хорошо и мне и Вам. Самоутверждаться за счет Вас - никогда.
Но если, действительно, есть какие-то долги, озвучьте, пожалуйста. Если отвечать за свои слова, то без двойных стандартов.
Вижу только слова, но не единого технического заявления или опровержения.
Долги за xrenfx такие, что их невозможно покрыть.
Жутко сильно хочу спать, но раз почти мгновенно ответили, напишу еще и завалюсь, наконец.
Нет никакого с вами противостояния. Возможно, вам хочется, но мне - нет.
Какие технические заявления или опровержения мне нужно доказать?
Давайте четко их сформулируем. И либо извинюсь перед вами, либо предоставлю четкую техническую воспроизводимую аргументацию. А то, что умею это делать, вы ни раз были тому свидетелем.
Жутко сильно хочу спать, но раз почти мгновенно ответили, напишу еще и завалюсь, наконец.
Нет никакого с вами противостояния. Возможно, вам хочется, но мне - нет.
Какие технические заявления или опровержения мне нужно доказать?
Давайте четко их сформулируем. И либо извинюсь перед вами, либо предоставлю четкую техническую воспроизводимую аргументацию. А то, что умею это делать, вы ни раз были тому свидетелем.
Вопрос не о вас и с вами.
Вы категорически далеки от темы генетических оптимизаторов.
Я показал, что заявления Андрея по поводу штатного генетического оптимизатора заведомо ошибочны и что Андрей использовал массу методов затуманить тему.
Что я концептуально показал:
Замечательно! Вы переделали ФФ, вставили другую строку - очевидно, что мой алгоритм эту строку не знает и читерить не может. Проведите этот же тест с моим алгоритмом, сравним результаты на ВАШЕЙ задаче. Потом перечитаем заново эти 4 пункта.
Почему Вы привели результаты Вашей задачи только для своего алгоритма и умолчали результаты моего? Это и есть результаты объективного расследования?