Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Реально смешно наблюдать как люди своей предобработкой и человеческой эвристикой на порядки снижают сложность задач, а потом пытаются сравнивать упрощенную донельзя функцию с универсальным решателем ;)))
Я опираюсь на свой практический опыт написания га оптимизаторов. Первый написали еще в 2006 году.
Вы не теорию читайте про "успешный обмен генами", а подумайте об стоимости. ГА снижает затраты. И сейчас он может грубо за 8000-10000 проходов выдать приемлемый результат. Вы же предлагаете параллельно основной ветке расчетов стрелять в молоко(ибо еще нет скрещивания текущей популяции) по сторонам, увеличивая стоимость расчетов(проходов) вплоть до 1.5-2.0 раз при слабом (мое мнение, что близком к нулю) влиянии на конечный результат.
Практика без теории слепа, к сожалению. Я ставлю вопросы математической эффективности (а без неё не может быть и финансовой эффективности очевидно), а у вас всё сводится к какой-то демагогии. Мол в гробу я видел вашу математику, я с 2006 года пишу оптимизаторы и сам лучше знаю. Так мы вряд ли придём к какому-то конструктиву...
Что такое "стрелять в молоко"? Надо бы яснее выражаться. Видимо вы не поняли идею о которой я говорю. Поясню ещё раз. Основа системы, как мы знаем, это скрещивание и мутации особей с хорошими генами, ожидая получить от них потомка с лучшими генами. Только у вас эти скрещивания происходит для всей популяции одномоментно. Зачем нужно это ограничение? Чем плох вариант постепенного скрещивания особей по мере их появления (независимо от поколения)? Повторюсь, скрещиваются только особи с хорошими генами (высокой целевой функцией), а не кто попало. Главное соблюдать тот же баланс по количеству скрестившихся особей, количеству мутировавших, и количеству умерших.
Я этот алгоритм не высасываю из пальца, а беру на примере живой природы. А вы, не имея никаких конкретных доказательств и расчётов, голословно критикуете его. Мол он там увеличит какую-то стоимость и т.д. Просто потому, что вам так хочется думать.
Все таки вы совершенно на теоретическом уровне в этом вопросе. Ошибаетесь и даже не понимаете реальной механики генетического алгоритма, раз делаете такие заявления.
Например, у вас область решений 1 млрд вариантов, вы сделали целевую ГА пристрелку в 5 000 проходов с приемлемым результатом, а потом должны доказать себе, что дальше лучшего результата нет. Для этого вы обязаны продолжить генетику и еще с десяток генераций порыскать вокруг.
Скорее это вы не очень понимаете математического обоснования данного механизма, пытаясь подменить их какими-то домыслами, основанными на наблюдении за работой программы.
Эти частные случаи реализации (рысканье или ещё что-то) в данном случае не имеют значения. Ибо выходы бывают разные, например по достижении требуемой точности - там незачем рыскать, если требуемая точность уже достигнута. И т.д. Речь шла о том, что все лучшие результаты могут оказаться уже в первом поколении (и рыскай не рыскай - их не улучшишь). Т.е. смысл такой, что для попадания особи в топ она необязательно должна была выведена путём кучи скрещиваний.
Таким образом, задача состоит из 705 символов, каждый из символов может иметь 60 вариантов (строка 705 символов, ключ 60 символов).
Соответственно максимально возможное число ФФ может выдать: 705, что означает 100% совпадение.
Прошу учесть, что это только мы знаем, какое максимальное число может выдать ФФ, поэтому ориентирование на число 705 в алгоритме недопустимо. Алгоритм должен считать, что максимальное число в ФФ ничем не ограничено и может быть любым.
ps. шибко сомневаюсь, что какой бы то ни было алгоритм сможет набрать больше 200 совпадений, это унриал... тем более будет интересно.
В общем, мой результат таков:
на максимум 20 000 обращений к фф, на 100 прогонах (я сделал 100 вместо 20 для более точной статистики) получилось:
> ######### analyze
>
> results_all <- -as.integer(lapply(descent_path, min))
>
> hist(results_all, breaks = 'fd')
>
> print(mean(results_all))
[1] 24.54 #среднее
> print(median(results_all))
[1] 24 #медиана
это гистограмма значений фф
Но я заметил, что алгоритм стабильно начинает спускаться после 20 000 итераций. Было бы интересно еще сравнить сколько итераций нужно до полного решения.
Как здесь:
Практика без теории слепа, к сожалению. Я ставлю вопросы математической эффективности (а без неё не может быть и финансовой эффективности очевидно), а у вас всё сводится к какой-то демагогии. Мол в гробу я видел вашу математику, я с 2006 года пишу оптимизаторы и сам лучше знаю. Так мы вряд ли придём к какому-то конструктиву...
Что такое "стрелять в молоко"? Надо бы яснее выражаться. Видимо вы не поняли идею о которой я говорю. Поясню ещё раз. Основа системы, как мы знаем, это скрещивание и мутации особей с хорошими генами, ожидая получить от них потомка с лучшими генами. Только у вас эти скрещивания происходит для всей популяции одномоментно. Зачем нужно это ограничение? Чем плох вариант постепенного скрещивания особей по мере их появления (независимо от поколения)? Повторюсь, скрещиваются только особи с хорошими генами (высокой целевой функцией), а не кто попало. Главное соблюдать тот же баланс по количеству скрестившихся особей, количеству мутировавших, и количеству умерших.
Я этот алгоритм не высасываю из пальца, а беру на примере живой природы. А вы, не имея никаких конкретных доказательств и расчётов, голословно критикуете его. Мол он там увеличит какую-то стоимость и т.д. Просто потому, что вам так хочется думать.
Скорее это вы не очень понимаете математического обоснования данного механизма, пытаясь подменить их какими-то домыслами, основанными на наблюдении за работой программы.
Эти частные случаи реализации (рысканье или ещё что-то) в данном случае не имеют значения. Ибо выходы бывают разные, например по достижении требуемой точности - там незачем рыскать, если требуемая точность уже достигнута. И т.д. Речь шла о том, что все лучшие результаты могут оказаться уже в первом поколении (и рыскай не рыскай - их не улучшишь). Т.е. смысл такой, что для попадания особи в топ она необязательно должна была выведена путём кучи скрещиваний.
Вы в своей жизни написали хотя бы один какой нибудь алгоритм оптимизации? Пробовали воплотить свои идеи?
В курсе вообще, для чего нужна избыточность в популяции в природе? Почему избыточность неприемлема при оптимизации?
Ваша теория ничего не стоит без практики. Попробуйте взять простейший ГА из Википедии, там всего несколько строчек кода, и реализуйте свою теорию на практике. Быстро спадут розовые очки.
В общем, мой результат таков:
на максимум 20 000 обращений к фф, на 100 прогонах (я сделал 100 вместо 20 для более точной статистики) получилось:
> ######### analyze
>
> results_all <- -as.integer(lapply(descent_path, min))
>
> hist(results_all, breaks = 'fd')
>
> print(mean(results_all))
[1] 24.54 #среднее
> print(median(results_all))
[1] 24 #медиана
это гистограмма значений фф
Но я заметил, что алгоритм стабильно начинает спускаться после 20 000 итераций. Было бы интересно еще сравнить сколько итераций нужно до полного решения.
Как здесь:
24,5 - это что такое, проценты? или в среднем 24,5 из 705? Это даже не 200, а просто 24,5?
Это даже не 200, а просто 24,5?
Да. из 705.
Что то как то не впечатляет для "слабенькой задачи", не так ли?
Я не издеваюсь. Хотя не, издеваюсь, извини.
Ок, в какие цифры ты оцениваешь примерно штатный алгоритм? Давай ради забавы, получится число больше или меньше?Что то как то не впечатляет для "слабенькой задачи", не так ли?
Ок, в какие цифры ты оцениваешь примерно штатный алгоритм? Давай ради забавы, получится число больше или меньше?Все относительно. А у вас какой результат? У меня метрика доходит до 200 (если уж это число упомянули) за 50 000 обращений к фф. Это много или мало, я не знаю.
Пока не знаю, не пробовал ещё. Я не люблю говорить голословно, да и цифра 200 была упомянута не с потолка, R его не достиг даже близко. Эта задача чудовищно быстро усложняется с каждым добавлением одного символа к тексту. Это даже хуже, чем потерять иголку на околоземной орбите а потом пытаться её отыскать.
Нужно подготовить штатный советник, пример для ALGLIB и мой алго для публикации и начала тестов.
Кстати, подготовь свой алго таким образом, что бы к нему можно было подключать любые ФФ в качестве отдельной функции или ещё как, но тесты должны иметь возможность свободно подключатся и заменяться другими.