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

 
Andrey Dik:
Не, фигня получится. Нужно брать в качестве ключа весь алфавит, включая прописные и строчные буквы, и знаки все знаки препинания включая пробел.
Да можно и урезанный алфавит, задача же все равно не из жизни. Для сравнения нужно только соблюсти идентичность входных условий.
 
Andrey Dik:
Клиника просто глубокомысленно сказать "Клиника" и поставить точку. В чем по Вашему мнению заключается клиника?, тема "Клиника" вообще не раскрыта.
Андрей, вопрос на засыпку. Возьмем вашу изначальную задачку с символами. Алфавит длиной 41. Цель длиной 49. Если тупо - жадно - перебирать на каждой из 49 позиций 41 элемент алфавита и замерять наткаждом ходе целевку, это всего лишь 41*49 ходов. Не кажется, что задачка будет решена так просто? Здесь же нет взаимодействий... Угадали символ под номером n получили +1 к целевке. Все линейно суммируется. Даже если 41*705=28905. Банально решается...
 
fxsaber:

MQL и R могут еще давать серьезные отличия из-за работы со строками.

Например, если сделать замену

// if(GetCode(param [i]) == StringSubstr(Code, i, 1))
if(GetCode(param [i]) == Code[i]) // новые возможности работы со строками

будет быстрее. Поэтому, предлагаю внутри MQL перед запуском ГА сделать предобработку, чтобы со строками совсем не иметь дело.

Строка "abcd" заменяется на целочисленный массив {0, 1, 2, 3}. Думаю, понятно.

Тогда условие выше станет супер-быстрым и не зависимым от реализации строк в MQL

if(MathRound(param[i]) == IntCode[i])

Если непонятно написал, то предъобработку сам добавлю в Ваш исходник.
 

Что бы было быстрее? Так и так же быстро. Зато текст можно распечатать и увидеть проблемные места.

Тормоза в сходимости при 705 символов будут другого плана, не из за работы с текстом, а из за сложной ФФ (слова Бурнакова о "легкости" задачи - чистая бравада).

А пока мы видим забег R и МТ ноздря в ноздрю, хотя условия и не идентичны, сравнивать некорректно. Посмотрим что получится с 705-ю символами.

 
Andrey Dik:

Что бы было быстрее? Так и так же быстро. Зато текст можно распечатать и увидеть проблемные места.

По окончании работы ГА восстановить полученный текст очень просто. Напишу взаимный конвертер.

Ускорение должно быть существенным на самом деле. Нам же важно и скорость померить, а не только график совпадений от количества итераций построить.

Что касается мар. режима ГА штатного оптимизатора - требуются там существенные изменения. Ну не должен он по количеству итераций уступать R с открытым исходным кодом. По скорости - допускается из-за агентской модели.

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

 
Andrey Dik:

Что бы было быстрее? Так и так же быстро. Зато текст можно распечатать и увидеть проблемные места.

Тормоза в сходимости при 705 символов будут другого плана, не из за работы с текстом, а из за сложной ФФ (слова Бурнакова о "легкости" задачи - чистая бравада).

А пока мы видим забег R и МТ ноздря в ноздрю, хотя условия и не идентичны, сравнивать некорректно. Посмотрим что получится с 705-ю символами.

Ок. Но вы почитайте мой комментарий. Вы задачу выбрали не ту. Она решается за n*k итераций.
Это НЕ NP полная задача вообще. Смысл то ее решать вообще. Я ее решил только что...
 
Alexey Burnakov:
Андрей, вопрос на засыпку. Возьмем вашу изначальную задачку с символами. Алфавит длиной 41. Цель длиной 49. Если тупо - жадно - перебирать на каждой из 49 позиций 41 элемент алфавита и замерять наткаждом ходе целевку, это всего лишь 41*49 ходов. Не кажется, что задачка будет решена так просто? Здесь же нет взаимодействий... Угадали символ под номером n получили +1 к целевке. Все линейно суммируется. Даже если 41*705=28905. Банально решается...

Комбинаций значительно больше чем 41*49. Если я правильно помню комбинаторику, то 49^41. 

Подумайте лучше.

Пример:

Исходный текст из 6-ти букв:

правдо

попробуем такой вариант:

пгавщо

ФФ возвратила ответ 4 совпадения

бравди

 ФФ возвратила ответ 4 совпадения

И какой из этих вариантов лучше? И какие буквы стоят на своём месте? 

Алгоритму оптимизации не за что зацепится. Эта задача сложнее, чем может показаться на первый взгляд. Без знания ключа и текста решить её в лоб невозможно.

 
Alexey Burnakov:
Ок. Но вы почитайте мой комментарий. Вы задачу выбрали не ту. Она решается за n*k итераций.
Это НЕ NP полная задача вообще. Смысл то ее решать вообще. Я ее решил только что...
Совсем не очевидно. Количество всех комбинаций равно AlphabetLength^StringLength.
 
Andrey Dik:

Комбинаций значительно больше чем 41*49. Если я правильно помню комбинаторику, то 49^41. 

Подумайте лучше.

Пример:

Исходный текст из 6-ти букв:

правдо

попробуем такой вариант:

пгавщо

ФФ возвратила ответ 4 совпадения

бравди

 ФФ возвратила ответ 4 совпадения

И какой из этих вариантов лучше? И какие буквы стоят на своём месте? 

Алгоритму оптимизации не за что зацепится. Эта задача сложнее, чем может показаться на первый взгляд. Без знания ключа и текста решить её в лоб невозможно.

Подумайте еще раз над моими словами. По очереди для каждого элемента перебираем все возможные буквы. Угадали +1. И идем далее. Здесь нет смысла оптимизировать ВСЮ последовательность сразу.
 
fxsaber:
Совсем не очевидно. Количество всех комбинаций равно AlphabetLength^StringLength.

Очевидно для этого случая...
 
Alexey Burnakov:
Подумайте еще раз над моими словами. По очереди для каждого элемента перебираем все возможные буквы. Угадали +1. И идем далее. Здесь нет смысла оптимизировать ВСЮ последовательность сразу.
В R Вы именно так решали задачу?
Причина обращения: