Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Alexey Burnakov:
Очевидно для этого случая...
Вы совершенно правы, что именно этот случай может любой школьник решить алгоритмом, что привели
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
MetaTrader 5 Strategy Tester!
Alexey Burnakov, 2016.11.21 21:19
Возьмем вашу изначальную задачку с символами. Алфавит длиной 41. Цель длиной 49. Если тупо - жадно - перебирать на каждой из 49 позиций 41 элемент алфавита и замерять наткаждом ходе целевку, это всего лишь 41*49 ходов. Не кажется, что задачка будет решена так просто? Здесь же нет взаимодействий... Угадали символ под номером n получили +1 к целевке. Все линейно суммируется. Даже если 41*705=28905. Банально решается...Но только задача сводится к тому, что ничего про природу целевой функции не известно. Вы же предлагаете читерский способ.
По окончании работы ГА восстановить полученный текст очень просто. Напишу взаимный конвертер.
Ускорение должно быть существенным на самом деле. Нам же важно и скорость померить, а не только график совпадений от количества итераций построить.
Что касается мар. режима ГА штатного оптимизатора - требуются там существенные изменения. Ну не должен он по количеству итераций уступать R с открытым исходным кодом. По скорости - допускается из-за агентской модели.
Но, как выяснили, ГА-синхронизация сводит полностью на нет смысл мультиагентного подхода. Для ГА нужен только один агент. Для полного перебора - Облако.
Вы совершенно правы, что именно этот случай может любой школьник решить алгоритмом, что привели
Но только задача сводится к тому, что ничего про природу целевой функции не известно. Вы же предлагаете читерский способ.
Какие требуются изменения? Есть же советник для решения задачи с текстом, он оперирует числами, а не текстом. Текст внутри ФФ и советник не должен видеть что внутри ФФ.
Речь идет об алгоритме ГА от разработчиков. Он объективно по количеству итераций уступает Вашему. Ваш советник для проверки штатного оптимизатора корректен как раз таки. Дорабатывать нужно не Ваш советник, а сам штатный ГА.
А, ну там всего лишь один параметр в штатный оптимизатор добавить бы надо - количество вызовов ФФ.
0 - на выбор оптимизатора
N - указанное пользователем.
Больше в принципе ничего не нужно, а то сейчас оптимизатор сам по себе считает сколько ему кажется целесообразным, а может быть пользователь хочет 50000 раз посчитать, или 100000 раз, ли 500 раз.
А, ну там всего лишь один параметр в штатный оптимизатор добавить бы надо - количество вызовов ФФ.
0 - на выбор оптимизатора
N - указанное пользователем.
Больше в принципе ничего не нужно, а то сейчас оптимизатор сам по себе считает сколько ему кажется целесообразным, а может быть пользователь хочет 50000 раз посчитать, или 100000 раз, ли 500 раз.
Да, это безусловно нужно!
Однако, уже сейчас мы можем построить вышеупомянутый график для штатного ГА, Вашего ГА и R. И совершенно объективно сравнить. Чей график будет ниже/выше всех, того алгоритм совершенней.
Оптимизационных алгоритмов много. По-хорошему, должен быть выбор.
Доступ к штатному алгоритму ГА надо делать через MQL! Тогда не надо будет изобретать велосипеды, а сразу можно будет реализовывать автооптимизации.
Т.е. доступ не к оптимизатору ТС через ГА, а только к алгоритму.
Вы совершенно правы, что именно этот случай может любой школьник решить алгоритмом, что привели
Но только задача сводится к тому, что ничего про природу целевой функции не известно. Вы же предлагаете читерский способ.
я говорю еще раз очевидное. это задача имеет жадное решение, которое опередит по скорости все остальные. Задача не обладает NP-полнотой. Полный бред, вообще-то.
Вот код решения на медленном и тупом R. Словарь размером 41. целевая последовательность длиной 705.
rm(list=ls());gc()
alphabet <- 41
target <- 705
letters_s <- 1:alphabet # alphabet
print(letters_s)
strings <- round(runif(target, 1, alphabet)) # target sequence
print(strings)
par_arr <- round(runif(target, 1, alphabet)) #set first index set
run_strings <- letters_s[par_arr] #first sequence
print(sum(strings == run_strings)) #first ff_value
found_sequence <- integer()
run_indexes <- data.frame()
start <- Sys.time()
for (i in 1:target){
for (j in 1:alphabet){
run_strings[i] <- letters_s[j]
run_indexes[i, j] <- sum(strings == run_strings)
}
}
par_arr <- apply(run_indexes, 1, which.max)
print(sum(strings == letters_s[par_arr]))
Sys.time() - start
print(strings)
print(letters_s[par_arr])
> print(sum(strings == letters_s[par_arr]))
[1] 705
>
> Sys.time() - start
Time difference of 2.08812 secs
>
> print(strings)
[1] 20 6 24 20 30 9 14 34 10 25 5 28 27 5 7 22 32 25 19 41 4 27 31 29 40 11 28 26 28 4 17 28 29 27 10 22 13 26 37 24 17 34 40 21 36 24 24 29 15 19 10 27
[53] 16 29 25 22 21 17 23 27 7 11 36 7 10 17 35 35 32 3 6 39 5 8 18 3 20 13 10 4 4 18 13 38 10 38 34 26 38 37 7 18 36 27 33 23 17 31 6 11 10 10 13 31
[105] 37 27 27 23 28 25 21 40 5 35 36 2 6 8 3 31 37 14 27 17 19 31 40 18 25 13 21 11 12 22 26 30 29 41 16 7 36 10 9 17 17 30 19 35 38 9 5 27 19 20 27 36
[157] 35 4 39 12 9 8 17 31 3 26 34 20 18 28 25 10 17 19 20 23 28 19 10 28 33 30 30 18 15 37 11 11 2 7 21 33 8 32 28 26 29 9 36 9 32 27 29 4 14 27 3 25
[209] 19 1 31 26 24 15 25 7 3 12 28 2 31 16 16 23 40 4 30 24 34 27 31 30 12 32 38 26 25 3 37 10 25 18 9 36 37 15 18 11 26 11 4 28 27 34 29 3 33 10 11 19
[261] 5 32 28 34 28 30 14 7 14 26 21 41 11 6 13 30 32 6 20 24 10 31 12 18 7 27 9 5 18 4 18 35 27 37 29 31 4 29 24 9 22 37 18 30 14 36 7 35 19 5 21 32
[313] 16 25 4 33 14 23 5 15 28 17 17 31 4 35 24 26 5 19 6 23 41 27 30 7 30 20 38 20 39 38 35 10 1 16 17 2 6 28 2 9 2 35 37 39 39 22 2 12 17 1 12 3
[365] 20 9 22 36 4 15 18 7 19 33 14 36 11 34 10 24 16 39 5 22 4 13 27 6 41 28 15 12 39 32 34 3 35 38 9 40 10 26 18 36 20 37 10 12 30 4 1 39 38 19 38 2
[417] 8 31 15 19 7 27 4 11 9 8 6 40 2 41 3 20 29 5 8 14 34 24 6 4 29 31 9 26 27 10 11 19 16 19 3 37 12 17 29 6 19 11 22 28 25 25 7 18 30 6 16 22
[469] 11 35 31 34 2 14 10 17 29 38 33 41 37 23 20 30 36 11 38 4 35 6 33 1 4 28 34 29 10 41 30 30 10 17 39 36 36 33 38 33 10 10 23 11 10 24 20 2 28 35 7 11
[521] 7 6 34 1 30 26 13 21 39 26 28 32 27 12 11 13 12 5 24 31 23 26 18 25 2 21 2 27 12 32 28 17 32 14 4 38 28 11 16 7 29 21 33 32 25 27 38 30 3 6 6 20
[573] 32 23 24 19 6 40 36 17 18 38 6 7 29 15 6 31 21 1 17 30 38 14 8 28 22 3 14 7 14 37 10 37 41 36 26 29 31 12 6 41 31 36 27 12 20 18 25 13 40 34 15 5
[625] 27 40 12 29 7 15 37 38 23 36 19 34 40 15 38 25 11 15 33 34 2 15 33 37 9 34 3 35 13 8 17 19 26 34 15 13 38 19 21 15 35 39 20 4 14 13 11 20 2 20 34 24
[677] 40 29 13 20 24 30 16 29 27 15 11 29 34 16 31 15 40 3 8 8 16 32 30 14 16 31 13 41 11
> print(letters_s[par_arr])
[1] 20 6 24 20 30 9 14 34 10 25 5 28 27 5 7 22 32 25 19 41 4 27 31 29 40 11 28 26 28 4 17 28 29 27 10 22 13 26 37 24 17 34 40 21 36 24 24 29 15 19 10 27
[53] 16 29 25 22 21 17 23 27 7 11 36 7 10 17 35 35 32 3 6 39 5 8 18 3 20 13 10 4 4 18 13 38 10 38 34 26 38 37 7 18 36 27 33 23 17 31 6 11 10 10 13 31
[105] 37 27 27 23 28 25 21 40 5 35 36 2 6 8 3 31 37 14 27 17 19 31 40 18 25 13 21 11 12 22 26 30 29 41 16 7 36 10 9 17 17 30 19 35 38 9 5 27 19 20 27 36
[157] 35 4 39 12 9 8 17 31 3 26 34 20 18 28 25 10 17 19 20 23 28 19 10 28 33 30 30 18 15 37 11 11 2 7 21 33 8 32 28 26 29 9 36 9 32 27 29 4 14 27 3 25
[209] 19 1 31 26 24 15 25 7 3 12 28 2 31 16 16 23 40 4 30 24 34 27 31 30 12 32 38 26 25 3 37 10 25 18 9 36 37 15 18 11 26 11 4 28 27 34 29 3 33 10 11 19
[261] 5 32 28 34 28 30 14 7 14 26 21 41 11 6 13 30 32 6 20 24 10 31 12 18 7 27 9 5 18 4 18 35 27 37 29 31 4 29 24 9 22 37 18 30 14 36 7 35 19 5 21 32
[313] 16 25 4 33 14 23 5 15 28 17 17 31 4 35 24 26 5 19 6 23 41 27 30 7 30 20 38 20 39 38 35 10 1 16 17 2 6 28 2 9 2 35 37 39 39 22 2 12 17 1 12 3
[365] 20 9 22 36 4 15 18 7 19 33 14 36 11 34 10 24 16 39 5 22 4 13 27 6 41 28 15 12 39 32 34 3 35 38 9 40 10 26 18 36 20 37 10 12 30 4 1 39 38 19 38 2
[417] 8 31 15 19 7 27 4 11 9 8 6 40 2 41 3 20 29 5 8 14 34 24 6 4 29 31 9 26 27 10 11 19 16 19 3 37 12 17 29 6 19 11 22 28 25 25 7 18 30 6 16 22
[469] 11 35 31 34 2 14 10 17 29 38 33 41 37 23 20 30 36 11 38 4 35 6 33 1 4 28 34 29 10 41 30 30 10 17 39 36 36 33 38 33 10 10 23 11 10 24 20 2 28 35 7 11
[521] 7 6 34 1 30 26 13 21 39 26 28 32 27 12 11 13 12 5 24 31 23 26 18 25 2 21 2 27 12 32 28 17 32 14 4 38 28 11 16 7 29 21 33 32 25 27 38 30 3 6 6 20
[573] 32 23 24 19 6 40 36 17 18 38 6 7 29 15 6 31 21 1 17 30 38 14 8 28 22 3 14 7 14 37 10 37 41 36 26 29 31 12 6 41 31 36 27 12 20 18 25 13 40 34 15 5
[625] 27 40 12 29 7 15 37 38 23 36 19 34 40 15 38 25 11 15 33 34 2 15 33 37 9 34 3 35 13 8 17 19 26 34 15 13 38 19 21 15 35 39 20 4 14 13 11 20 2 20 34 24
[677] 40 29 13 20 24 30 16 29 27 15 11 29 34 16 31 15 40 3 8 8 16 32 30 14 16 31 13 41 11
2 секунды.
Это задача вообще для школьной олимпиады по программированию. Я не сразу заметил.... Какие там сложные алгоритмы? Очнитесь! Я ее сначала решал симуляцией отжига. Но это нафиг не нужно. Все.
Это задача вообще для школьной олимпиады по программированию. Я не сразу заметил.... Какие там сложные алгоритмы? Очнитесь! Я ее сначала решал симуляцией отжига. Но это нафиг не нужно. Все.
Это я виноват, что не дал полные вводные изначально. Представьте, что Вам неизвестно, что из себя представляет целевая функция. Так и было задумано. Просто я по дурости взял и выдал все нагора. Но нужно было сравнить именно оптимизационные алгоритмы, а не решить конкретно эту задачу. В общем, я виноват.
То, что сделали отжигом - самое то, что нужно. Школьный алгоритм не волнует совсем, т.к. школьник знает все о природе целевой функции. А на самом деле она неизвестна.
Короче, сравниваем оптимизационные алгоритмы для универсальных целевых функций любой природы.
я говорю еще раз очевидное. это задача имеет жадное решение, которое опередит по скорости все остальные. Задача не обладает NP-полнотой. Полный бред, вообще-то.
Вот код решения на медленном и тупом R. Словарь размером 41. целевая последовательность длиной 705.
2 секунды.
Это задача вообще для школьной олимпиады по программированию. Я не сразу заметил.... Какие там сложные алгоритмы? Очнитесь! Я ее сначала решал симуляцией отжига. Но это нафиг не нужно. Все.
Вот это - действительно клиника. Полный R мозга, извините.
Вы б почитали что ли, что Вам пишут - не имеет алгоритм к задаче доступа! - не имеет! - алгоритм может получить только ответ ФФ, и всё, а Вы про школьные олимпиады глаголите...
Вот это - действительно клиника. Полный R мозга, извините.
Вы б почитали что ли, что Вам пишут - не имеет алгоритм к задаче доступа! - не имеет! - алгоритм может получить только ответ ФФ, и всё, а Вы про школьные олимпиады глаголите...