Генетический алгоритм

 
Здравствуйте уважаемые! Можно ли изменять параметры самого генетического алгоритма при оптимизации? Я имею ввиду параметры самого алгоритма, которые зашиты по умолчанию. Например: количество проходов на первом шаге и т.д.
 
Mikhail Simakov:
Здравствуйте уважаемые! Можно ли изменять параметры самого генетического алгоритма при оптимизации? Я имею ввиду параметры самого алгоритма, которые зашиты по умолчанию. Например: количество проходов на первом шаге и т.д.

Здравствуйте! К сожалению - нет. И к сожалению алгоритм единственный. Поищите по ресурсу где-то были авторские разработки, но для надежности и уверенности, да и практичности(исправление чужих ошибок) лучше пользовать свои алгоритмы. Обратите внимание на оптимизацию - математические вычисления.

 
Mikhail Mishanin:

Здравствуйте! К сожалению - нет. И к сожалению алгоритм единственный. Поищите по ресурсу где-то были авторские разработки, но для надежности и уверенности, да и практичности(исправление чужих ошибок) лучше пользовать свои алгоритмы. Обратите внимание на оптимизацию - математические вычисления.

Ситуация следующая: оптимизирую советник по 10 параметрам, получаю результат, например по максимальному балансу. Потом, оставляю 5 параметров и далее оптимизирую, результат еще выше, потом другие пять параметров, и т.д. танцы с бубнами по выбору параметров и их количеству и в итоге хороший результат. Хотелось бы за один проход это сделать, пусть продолжительный, а не тыкать в ручную в параметры.

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

 
Mikhail Simakov:

Ситуация следующая: оптимизирую советник по 10 параметрам, получаю результат, например по максимальному балансу. Потом, оставляю 5 параметров и далее оптимизирую, результат еще выше, потом другие пять параметров, и т.д. танцы с бубнами по выбору параметров и их количеству и в итоге хороший результат. Хотелось бы за один проход это сделать, пусть продолжительный, а не тыкать в ручную в параметры.

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

Думайте, фантазируйте)

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

—  Альберт Эйнштейн

Набор оптимизируемых параметров ограничен во встроенном алгоритме 16-ю.(если ничего не изменилось) Мой опыт - обучаю/эволюционирую с помощью встроенного генетического алгоритма нейронные сети своей авторской структуры. Параметров конечно для обучения значительно больше 16-ти. Параметры+результат сохранены в файл/файлы. При оптимизации/обучении подгружаются из файла, 16-ть из них могут быть изменены. Изменены самим встроенным генетическим алгоритмом, и/или с дополнительными условиями. По условиям/алгоритму лучшие новые параметры+результат пишутся в файл/файлы в конце очередного прохода. Одно чтение/запись файла в начале/конце прохода скорость оптимизации снижает мало.
 

Mikhail Mishanin:

Здравствуйте! К сожалению - нет. И к сожалению алгоритм единственный. Поищите по ресурсу где-то были авторские разработки, но для надежности и уверенности, да и практичности(исправление чужих ошибок) лучше пользовать свои алгоритмы. Обратите внимание на оптимизацию - математические вычисления.

Для управления оптимизацией  генетикой используйте Ontester. Соп мощью него можно отфильтровать допустим результаты с низким количеством сделок. 
 Либо используйте прямой перебор. 

Генетика ограничена не количеством переменных а количеством вариантов. если будет много переменных с большим количеством принимаемых значений то оптимизация не запустится. Придется увеличить шаг у одного или нескольких переменных или уменьшить пределы. иными словами уменьшить количество вариантов. 

Например можно сделать 1 000 000 переменных типа bool и их оптимизировать. и все нормально будет оптимизироваться (хотя я и не проверял такой подход). 

Получить более высокие результаты можно если прогнать несколько раз оптимизацию, но практичность такого подхода весьма сомнительна. Рынок не веет себя себя одинаково на истории и в будущем. Брокер может изменить поток котировок. Например перестроить фильтры или убрать /добавить  поставщика ликвидности. общий график практически не изменится, а вот поведение цена на тиковом графике может сильно измениться. 

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

 
Dmitiry Ananiev:

Для управления оптимизацией  генетикой используйте Ontester. Соп мощью него можно отфильтровать допустим результаты с низким количеством сделок. 
 Либо используйте прямой перебор. 

Генетика ограничена не количеством переменных а количеством вариантов. если будет много переменных с большим количеством принимаемых значений то оптимизация не запустится. Придется увеличить шаг у одного или нескольких переменных или уменьшить пределы. иными словами уменьшить количество вариантов. 

Например можно сделать 1 000 000 переменных типа bool и их оптимизировать. и все нормально будет оптимизироваться (хотя я и не проверял такой подход). 

Получить более высокие результаты можно если прогнать несколько раз оптимизацию, но практичность такого подхода весьма сомнительна. Рынок не веет себя себя одинаково на истории и в будущем. Брокер может изменить поток котировок. Например перестроить фильтры или убрать /добавить  поставщика ликвидности. общий график практически не изменится, а вот поведение цена на тиковом графике может сильно измениться. 

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

Привет Дмитрий, так мы с Вами и не пообщались)

Вполне возможно что колво опт переменных ограничено не количеством, а ресурсом, попробую варианты.

И в моем случае речь идет не о оптимизации, а о обучении/эволюции, т.к. нейронные сети, ещё и своей(авторской) архитектуры, некоторые саму архитектуру эволюционируют.

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

 
Проблема генетического алгоритма в том, что он может "забраться" в локальный максимум. Эту проблему частично можно решить, если на первом шаге оптимизации брать больше комбинаций переменных, а они, их количество, я полагаю, жестко зашиты. Первый шаг- это случайным образом сформированные комбинации переменных. Может все-таки как-нибудь можно их поднастроить ?))
 
Mikhail Simakov:
Проблема генетического алгоритма в том, что он может "забраться" в локальный максимум. Эту проблему частично можно решить, если на первом шаге оптимизации брать больше комбинаций переменных, а они, их количество, я полагаю, жестко зашиты. Первый шаг- это случайным образом сформированные комбинации переменных. Может все-таки как-нибудь можно их поднастроить ?))

Что есть тестер в режиме оптимизации? "Прохождение" раз за разом в указанном интервале дат алгоритмом эксперта по графику цены, эмуляция торговли, сбор торговой статистики. Естественно каждый раз с новыми параметрами, при полном переборе - полный перебор параметров, при генетическом алгоритме - выбор параметров за генетическим алгоритмом. Включайте полный перебор по одному параметру - "ШАГ ЦИКЛА" и генерируйте внутри эксперта хоть бесконечный набор параметров. Посмотрите таки режим тестера - "Расчет математики". В "Расчет математики" можете написать свой тестер, в "Полная оптимизация" - не придется писать тестер, но можно реализовать любой оптимизационный алгоритм.

 
Mikhail Simakov:

Ситуация следующая: оптимизирую советник по 10 параметрам, получаю результат, например по максимальному балансу. Потом, оставляю 5 параметров и далее оптимизирую, результат еще выше, потом другие пять параметров, и т.д. танцы с бубнами по выбору параметров и их количеству и в итоге хороший результат. Хотелось бы за один проход это сделать, пусть продолжительный, а не тыкать в ручную в параметры.

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

Все это возможно, но весьма сложно, через создание файлов установок внутри эксперта, и использование пакетного режима, запускающего терминал с этими установками.

 
Georgiy Merts:

Все это возможно, но весьма сложно, через создание файлов установок внутри эксперта, и использование пакетного режима, запускающего терминал с этими установками.

О чем вы, какие сложности? Файлы - да, читается один файл по алгоритму или случайно. О каком пакетном режиме речь вообще не понятно. В OnInit на каждом проходе читается файл, при генетическом режиме часть параметров из настроек заменяют считанные параметры из файла, по завершению прохода сравнивается результат целевой функции полученный и из файла, если результат прохода улучшил целевую - новые параметры и новое значение целевой сохраняются в файл. Всё. Ну при полном переборе чуть сложнее, свой оптимизационный алгоритм, хотя можно просто тупо можно генерировать полный/частичный новый набор параметров, и при улучшении целевой - сохранять.

 
Mikhail Mishanin:

О чем вы, какие сложности? Файлы - да, читается один файл по алгоритму или случайно. О каком пакетном режиме речь вообще не понятно. В OnInit на каждом проходе читается файл, при генетическом режиме часть параметров из настроек заменяют считанные параметры из файла, по завершению прохода сравнивается результат целевой функции полученный и из файла, если результат прохода улучшил целевую - новые параметры и новое значение целевой сохраняются в файл. Всё. Ну при полном переборе чуть сложнее, свой оптимизационный алгоритм, хотя можно просто тупо можно генерировать полный/частичный новый набор параметров, и при улучшении целевой - сохранять.


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

А во-вторых, задача вроде была несколько другой. 

Надо провести полную оптимизацию, после чего отделить часть входных параметров, снова провести оптимизацию. Опять отделить часть входных параметров... И так далее. А это делается именно с помощью пакетного .bat файла. У меня, по крайней мере, именно так сделано. 

Причина обращения: