Оптимизация генетического алгоритма. Оптимизация сайта генетическим алгоритмом


optimization - Оптимизация генетического алгоритма

Я задал вопрос несколько недель назад о том, как сделать оптимизацию в R (Оптимизация для Vector Using Optimize R). Теперь, когда я правильно справился с базовой оптимизацией в R, я хотел бы начать использовать GA для решения проблем.

Учитывая целевую функцию:

div.ratio <- function(weight, vol, cov.mat){ weight <- weight / sum(weight) dr <- (t(weight) %*% vol) / (sqrt(t(weight) %*% cov.mat %*% (weight))) return(-dr) }

Я использую пакет genalg для оптимизации, в частности функцию "rbga.bin". Но дело в том, что, похоже, не может пройти более одного параметра, т.е. Не может проходить в vol и cov.mat. Я что-то упустил или понял это неправильно.

Изменить: В пакете genalg существует функция, называемая rbga.bin, которую я использую.

Вот простой код из предыдущего вопроса, который может вас запустить:

rm(list=ls()) require(RCurl) sit = getURLContent('https://github.com/systematicinvestor/SIT/raw/master/sit.gz', binary=TRUE, followlocation = TRUE, ssl.verifypeer = FALSE) con = gzcon(rawConnection(sit, 'rb')) source(con) close(con) load.packages('quantmod') data <- new.env() tickers<-spl("VTI,VGK,VWO,GLD,VNQ,TIP,TLT,AGG,LQD") getSymbols(tickers, src = 'yahoo', from = '1980-01-01', env = data, auto.assign = T) for(i in ls(data)) data[[i]] = adjustOHLC(data[[i]], use.Adjusted=T) bt.prep(data, align='remove.na', dates='1990::2013') prices<-data$prices[,-10] ret<-na.omit(prices/mlag(prices) - 1) vol<-apply(ret,2,sd) cov.mat<-cov(ret) out <- optim(par = rep(1 / length(vol), length(vol)), # initial guess fn = div.ratio, vol = vol, cov.mat = cov.mat, method = "L-BFGS-B", lower = 0, upper = 1) opt.weights <- out$par / sum(out$par) #optimal weights

В то время как вышеописанная функция оптимизации работает нормально, я думал, можно ли воспроизвести ее с использованием алгоритма GA. Поэтому в будущем, если я ищу несколько целей, я смогу сделать это быстрее по сравнению с GA. (Я не уверен, что это быстрее, но это шаг, который нужно выяснить)

GAmodel <- rbga.bin(size = 7, #genes popSize = 200, #initial number of chromosomes iters = 100, #number of iterations mutationChance = 0.01, #chance of mutation evalFunc = div.ratio) #objective function

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

Спасибо

qaru.site

Ссылки Трубаров АА Организация обучения нейронной сети с помощью генетического алгоритма оптимизации

Факультет вычислительной техники и информатики
Специальность: Системное программирование
Тема выпускной работы:

Организация обучения нейронной сети с помощью генетического алгоритма оптимизации

Научный руководитель: Святный Владимир Андреевич

Ссылки по теме выпускной работы

    Материалы магистров ДонНТУ

  1. http://masters.donntu.org/2004/fvti/solomka/diss/index.htm Реферат к магистерской работе по теме: "Исследование применимости генетических алгоритмов для оптимизации нейросетевых систем" Автор: Соломка Ю.И. Научный руководитель: Федяев О.И.
  2. http://www.masters.donntu.org/2004/fvti/solomka/library/article2.htm Применение генетических алгоритмов для обучения нейронных сетей Федяев О.И., Соломка Ю.И.
  3. http://masters.donntu.org/2003/fvti/paukov/library/neurow.htm Нейронные сети: прогнозирование как задача распознавания образов О. И. Федяев, Д. П. Пауков
  4. http://masters.donntu.org/2003/fvti/paukov/library/neurow.htm Нейронные сети: прогнозирование как задача распознавания образов О. И. Федяев, Д. П. Пауков
  5. http://masters.donntu.org/2003/kita/tupikina/diss/index.htm Реферат к магистерской работе по теме: "Разработка специализированной системы обработки изображений на базе нейронных сетей Кохонена" Автор: Тупикина С.В. Научный руководитель: Скобцов Ю. А.
  6. http://masters.donntu.org/2005/fvti/trubarov/library/index.htm Реферат к магистерской работе по теме: "Исследование генетических алгоритмов оптимизации в параллельной моделирующей системе" Автор: Трубаров В.А. Научный руководитель: проф. Святный В. А.
  7. http://masters.donntu.org/2005/fvti/trubarov/library/KEM2005.htm Підсистема оптимізації на базі еволюційних обчислень для паралельного моделюючого середовища Трубаров В.А., Гоголенко С.Ю., Теплинський К.С.
  8. Сайты, посвященные нейронным сетям

  9. http://en.wikipedia.org/wiki/Neural_network Страница нейронных сетей на Википедии
  10. http://www.intuit.ru/department/ds/neuronnets/ Курс лекций "Основы теории нейронных сетей" Автор: Г.Э. Яхъяева Целью курса является познакомить слушателей с основными нейроно-сетевыми парадигмами, показать область применения этого направления.

    http://www.intuit.ru/department/expert/neuro/ Курс лекций "Нейрокомпьютерные системы" Автор: М.С. Тарков Излагаются основы построения нейрокомпьютеров. Дается детальный обзор и описание важнейших методов обучения нейронных сетей различной структуры, а также задач, решаемых этими сетями. Рассмотрены вопросы реализации нейронных сетей.

  11. http://www.orc.ru/~stasson/neurox.html Введение в теорию нейронных сетей На сайте находятся статьи по теории нейронных сетей, программные пакеты для построения нейронных сетей, нейросимуляторы, а также большое число ссылок на русскоязычные ресурсы по нейросетевой тематике.
  12. http://www.basegroup.ru/library/analysis/neural/ Введение в теорию нейронных сетей, методы оптимизайии и генетические алгоритмы Сайт посвящен интеллектуальным средствам анализа и прогнозирования данных. На сайте имеются научно-популярные статьи по нейронным сетям и генетическим алгоритмам.
  13. http://www.softcraft.ru/neuro/index.shtml/ SoftCraft. Нейроинформатика (учебное пособие) Автор: Миркес Е.М.
  14. http://www.neuroproject.ru Компания НейроПроект Несколько коммерческих программ для практического применения НС и генетических алгоритмов, а также общедоступное изложение основ нейросетевой теории. Имеется много программ-примеров, наглядно демонстрирующих возможности нейронных сетей.
  15. http://ai.obrazec.ru/ AI.Образец Статьи, ссылки и форум по ИИ.
  16. http://ai.h26.ru/ Сайт alife-soft Статьи, ссылки и программы по НС.
  17. http://dushkin.boom.ru/AI.htm Домашняя страница Артема Душкина Подборка материалов по искусственному интеллекту и нейронным сетям.
  18. http://www.inftech.webservis.ru/ InfTech - Информационные Технологии Сайт Информационных Технологий предоставляет довольно много интересных теоретических материалов и статей, в том числе с конференций по мягким вычислениям (SCM) и интеллектуальным системам и информационным технологиям управления.
  19. http://prof9.narod.ru/ Искусственный Интеллект от Prof'а Сайт посвящен Искуственному Интеллекту и всему что с ним связано. Библиотека статей, программы, ссылки.
  20. http://www.aicommunity.org ИИ-сообщество На сайте собраны новости, статьи, доклады с конференций, коллекции ссылок по нейросетевой тематике. Один из проектов сайта - проект интеллектуальной игры. Цель проекта – найти задачу-игру, и организовать турниры людей или коллективов, ее решающих, т.е. осуществить «мозговой штурм», где идеи выражены не в словах, а в алгоритмах и методах разработки.
  21. http://cache.rcom.ru/~dap/nneng/nnlinks/index.html Подборка материалов по нейронным сетям на русском языке. На сайте выложены электронные версии книг: Теоретический курс-энциклопедия. Отчет по научно-исследовательской работе "Создание аналитического обзора информационных источников по применению нейронных сетей для задач газовой технологии"; Копосов А.И., Щербаков И.Б., Кисленко Н.А., Кисленко О.П., Варивода Ю.В. и др., ВНИИГАЗ, 1995. Нейрокибернетика, нейроинформатика, нейрокомпьютеры. А.Н.Горбань, В.Л.Дунин-Барковский, А.Н.Кирдин, Е.М.Миркес, А.Ю.Новоходько, Д.А.Россиев, С.А.Терехов, М.Ю.Сенашова, В.Г.Царегородцев. Ассоциативные Нейроподобные Структуры. Э.М.Куссуль.
  22. http://www.gotai.net/ Логические подходы, нейронные сети и генетические алгоритмы Сборник публикаций, книг, докладов, новостей мира искусственного интеллекта. На сайте представлены некоторые алгоритмы как в словесном описании, так и с исходным кодом.
  23. http://iai.dn.ua/ Донецкий государственный университет информатики и искусственного интеллекта
  24. http://www.raai.org/ Российская ассоциация искусственного интеллекта Статьи, книги, журналы, публикации, информация о конференциях и семинарах, посвященных проблемам искусственного интеллекта и нейронным сетям. Подборка статей из журнала "Новости Искусственного Интеллекта". Толковый словарь по искусственному интеллекту. Авторы-составители: А.Н. Аверкин, М.Г. Гаазе-Рапопорт, Д.А. Поспелов
  25. http://habrahabr.ru/blogs/artificial_intelligence/ Групповой блог "Искусственный интеллект" на Хабрахабре Тематика блога включает в себя проблемы искусственного интеллекта, нейронные сети и генетические алгоритмы.
  26. Сайты, посвященные генетическим алгоритмам

  27. http://en.wikipedia.org/wiki/Genetic_algorithm Страница генетического алгоритма на Википедии
  28. http://www.scholar.ru/catalog.php?topic_id=121 Научные статьи по генетическим алгоритмам На сайте подобраны более 30 различных публикаций.
  29. http://www.illigal.uiuc.edu/web/wp-signup.php?new=index.php3 Illinois Genetic Algorithms Laboratory Сайт лаборатории генетических алгоритмов. Изучаются методы применеия генетических алгоритмов для решения сложных задач на компьютере.
  30. http://www.cs.colostate.edu/~genitor/Pubs.html Сборник статей и публикаций университета Колорадо Тематика статей: генетические алгоритмы, эволюционные вычисления, нейронные сети.
  31. http://algolist.manual.ru/ai/ga/ Алголист: алгоритмы, методы, исходники Тематика: генетические алгоритмы, нейронные сети. Теория генетических алгоритмов, примеры реализации и их применение.
  32. http://g-u-t.chat.ru/ga/refer.htm Генетический алгоритм - полезные ссылки На сайте собрано большое число ссылок на научные статьи, электронные версии книг, публикации из журналов и других источников.
  33. http://network-journal.mpei.ac.ru/cgi-bin/main.pl?l=ru&n=13&pa=10&ar=3 Обучение больших нейронных сетей с помощью генетического алгоритма Авторы: Васенко С. М., Кабак И. С.
  34. Персональные сайты специалистов в области нейронных сетей и генетических алгоритмов

  35. http://www.neuropro.ru/ Персональный сайт Виктора Царегородцева Предложение услуг в области анализа данных и разработки интеллектуального программного обеспечения для задач поддержки принятия решения.
  36. http://www.shuklin.com/ai/ht/ru/default.aspx Домашняя страница Шуклина Дмитрия Разработки систем понимания текстов естественного языка на основе семантической нейронной сети, объектно-ориентированных систем управления базами знаний, а также материалы по искусственному интеллекту и биоадаптивному управлению.
  37. http://mahotilo.narod.ru/publications.htm Персональная страница Махотило К.В. На сайте представлены публикацмм на тему применения нейронных сетей в решеннии задач различных промышленных областей.
  38. http://nnet.chat.ru/ Нейронные сети: приложения, термины, реализации Страница Олега Курцева, посвященная теории НС и их программной реализации. Доступна программа NeurEx и библиотека классов NeuroLib (написанная на MS VC++ с использованием MFC), реализующая сеть обратного распространения и сеть со стохастическим обучением по распределению Коши. Решаются задачи распознавания образов, прогнозирования.
  39. http://nuweb.jinr.ru/~nazaren/unc/nn_ru.html Курс лекций Максима Назаренко Теория и практика нейронных сетей.
  40. http://users.kpi.kharkov.ua/mahotilo/Docs/Diss/diss_ch2_intr.html Диссертация Махотило К.В. "Разработка методик эволюционного синтеза нейросетевых компонентов систем управления"
  41. http://alife.narod.ru/ Нейронные сети и их приложения - Сергей Александрович Терехов На сайте собраны более 50 лекций автора, публикаций и докладов. Область основных научных интересов - анализ данных при помощи искусственных нейронных сетей, генетические алгоритмы, Марковские модели, методы оптимизации, моделирование сложных систем.
  42. http://www.aha.ru/~pvad/f0.htm Книга "Интеллектуальная квазибиологическая система" Автор: Л.Б.Емельянов-Ярославский. В монографии описывается нейронный автомат, в котором решается задача о выживаемости нейронов в условиях ограниченного питания. В качестве побочных следствий (эпифеноменов) при решении задачи о минимизации потребления у системы возникают: память, механизм поведения, механизм самочувствия. В терминах нейронно-энергетической логики интерпретируются: интеллектуальность, механизм интуиции, вторая сигнальная система и другие целостные свойства человека. Описываются эксперименты с программными моделями.
  43. http://kes.narod.ru/projects/InterSearch/index.html Дипломная работа "Поисковая система, основанная на нейронной сети" Автор: Елена Романова. Целью работы является исследование, проектирование и кодирование системы поиска в Интернете, использующей нейросетевые технологии.
  44. http://neuronet.narod.ru/ Адаптивные сети и системы Страница Ланкина Юлия Петровича, научного сотрудника Института биофизики СО РАН. Здесь, в частности, представлены некоторые статьи с нейросетевых конференций, проводимых в МИФИ.
  45. http://qai.narod.ru/ Генетические и нейроэволюционные алгоритмы Автор: Цой Юрий. На сайте собрано большое число статей, докладов не только автора, но и других ученых. Также на сайте находится архив рассылки "Evolutionary Computations Digest".
  46. Программное обеспечение по нейронным сетям и генетическому алгоритму

  47. http://ann.thwien.de/index.php/Main_Page Artificial Neural Network for PHP 5.x проект по разработке нейронных сетей на языке программирования PHP 5.X
  48. http://chipnews.gaw.ru/html.cgi/arhiv/01_08/1.htm Статья: "Нейронные сети: графический интерфейс пользователя" В данной статье дано описание NNTool (Matlab) и показана техника его применения в ряде задач синтеза цепей и цифровой обработки сигналов.
  49. http://www.generation5.org/articles.asp?Action=List&Topic=Genetic%20Algorithms Сборник статей на английском языке, исходные коды программ и готовые решения по генетическому алгоритму На сайте присутствуют как статьи для новичков, так и для профессионалов, изучающих генетический алгоритм. Имеется исходный код программ, решающих с помощью генетического алгоритма самые разные задачи.
  50. http://jenyay.net/index.php?n=Programming.Genetic Библиотека для реализации генетических алгоритмов в .NET Framework 2.0
  51. http://amebas.ru/ Эволюция искусственной жизни на ПК С сайта можно скачать программу «Амёбы: Борьба Видов». На компьютере "поселится" популяция виртуальных живых существ. Основной смысл жизни компьютерных организмов – сражаться с себе подобными и размножаться
  52. http://gaul.sourceforge.net/documentation.html Genetic Algorithm Utility Library Нетривиальная обобщенная свободная реализация GA.
  53. http://andyceo.ruware.com/study/ispolzovanie-geneticheskih-algoritmov-v-probleme-avtomaticheskogo-napisaniya-programm Использование генетических алгоритмов в проблеме автоматического написания программ Идея: перед ЭВМ ставится задача самой отыскать необходимый алгоритм для решения той или иной задачи.

masters.donntu.org

Генетические алгоритмы в MetaTrader 4. Сравнение с прямым перебором оптимизатора

1.     Что такое генетические алгоритмы?

В MetaTrader 4 стали доступны генетические алгоритмы оптимизации входных параметров экспертов. Они значительно сокращают время оптимизации, практически не искажая результаты тестирования. Принцип их работы подробно описан в статье Генетические алгоритмы - математический аппарат.

Данная статья посвящена сравнению оптимизации входных параметров экспертов с использованием генетических алгоритмов  и оптимизации с использованием прямого, полного перебора значений параметров.

 

2.     Эксперт

       Для проведения экспериментов я немного доработал уже знакомого вам по статье Управление ордерами - это просто  эксперта CrossMACD:

Теперь это практически полноценный эксперт. Его будет удобно оптимизировать и использовать для торговли. Вы можете скачать эксперта  CrossMACD_DeLuxe.mq4 к себе на компьютер и провести все тесты самостоятельно.

3.     Оптимизация

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

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

Для сравнения результатов оптимизация с использованием генетических алгоритмов будет проводиться дважды: первый раз – с целью найти максимальную прибыль (Profit), а второй – с целью найти лучшую прибыльность (Profit Factor). После этого три лучшие результата для обоих методов оптимизации будут представлены в сводной таблице отчёта, отсортированной по указанным колонкам.

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

Тест 1

Имя переменной

Стартовое значение

Шаг

Конечное значение

StopLoss

0

10

100

TakeProfit

0

10

150

TrailingStop

0

10

100

OpenLuft

0

5

50

CloseLuft

0

5

50

Количество переборов

234 256

 

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

Прямой перебор

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

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

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

 

       Теперь подробно рассмотрим результаты обоих методов оптимизации.

Таблица результатов:

 

Прямой перебор

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

Общее времяоптимизации

4 ч. 13 мин. 28 сек.

3 мин. 50 сек.

 

SL

TP

TS

Open Luft

Close Luft

Profit

SL

TP

TS

Open Luft

Close Luft

Profit

1

70

140

0

20

30

1248.08

70

140

0

20

30

1248.08

2

70

140

0

20

35

1220.06

70

140

0

20

35

1220.06

3

70

150

0

20

30

1176.54

70

150

0

20

30

1176.54

 

SL

TP

TS

Open Luft

Close Luft

Profit Factor

SL

TP

TS

Open Luft

Close Luft

Profit Factor

1

100

50

40

50

5

4.72

0

50

40

50

5

4.72

2

90

50

40

50

5

4.72

90

50

40

50

5

4.72

3

80

50

40

50

5

4.72

80

50

40

50

0

4.72

 

Как видно из таблицы, скорость оптимизации с использованием генетических алгоритмов выше в несколько десятков раз! Результаты при этом практически идентичны. Результатов с максимальной прибыльностью равной 4.72 несколько, поэтому в отчёты попали разные комбинации параметров, но это не принципиально.

Теперь попробуем уменьшить количество переборов, но увеличить время тестирования. Для этого будем использовать модель "все тики".

Тест 2

 

 

Имя переменной

Стартовое значение

Шаг

Конечное значение

StopLoss

0

10

100

TakeProfit

0

10

150

TrailingStop

0

10

100

OpenLuft

0

10

50

Количество переборов

11 616

 

Таблица результатов:

 

Прямой перебор

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

Общее время оптимизации

32 ч. 32 мин. 37 сек.

1 ч. 18 мин. 51 сек.

 

SL

TP

TS

Open Luft

Profit

SL

TP

TS

Open Luft

Profit

1

50

0

0

20

1137.89

50

0

0

20

1137.89

2

70

0

0

20

1097.87

70

0

0

20

1097.87

3

60

0

0

20

1019.95

60

0

0

20

1019.95

 

SL

TP

TS

Open Luft

Profit Factor

SL

TP

TS

Open Luft

Profit Factor

1

50

90

60

50

4.65

50

90

60

50

4.65

2

50

140

60

50

4.59

50

140

60

50

4.59

3

100

90

60

50

4.46

70

90

60

50

4.46

 

При таком количестве переборов скорость отличается в 25 раз, что тоже очень неплохо. Результаты совпадают практически на 100%, единственное отличие в значении СтопЛосс в третьем тесте. Прибыльность при этом опять же осталась максимальной.

Теперь попробуем уменьшить количество переборов и уменьшить время тестирования. Для этого будем использовать модель "контрольные точки".

Тест 3

 

Имя переменной

Стартовое значение

Шаг

Конечное значение

StopLoss

0

10

100

OpenLuft

0

5

50

CloseLuft

0

5

50

Количество переборов

1 331

 

Таблица результатов:

 

Прямой перебор

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

Общее время оптимизации

33 мин. 25 сек.

31 мин. 55 сек.

 

SL

Open Luft

Close Luft

Profit

SL

Open Luft

Close Luft

Profit

1

0

0

45

1078.03

0

0

45

1078.03

2

70

20

15

1063.94

70

20

15

1063.94

3

70

20

25

1020.19

70

20

25

1020.19

 

SL

Open Luft

Close Luft

Profit Factor

SL

Open Luft

Close Luft

Profit Factor

1

80

50

15

2.73

80

50

15

2.73

2

70

50

15

2.73

70

50

15

2.73

3

90

50

15

2.65

90

50

15

2.65

 

Тут ситуация изменилась. Время оптимизации совпадает (небольшая погрешность допускается), а результаты идентичны. Это связано с тем, что оптимизация состояла всего из 1331 перебора, а такого количества тестов для применения генетических алгоритмов просто мало. Они не успевают "разогнаться" - выигрыш в скорости оптимизации достигается за счёт отсеивания заведомо убыточных комбинаций параметров, а при таком количестве вариантов генетические алгоритмы не могут определить, какие "родители" (комбинации параметров) дадут плохое "потомство". Использовать их, соответственно, смысла нет.

4.     Выводы

    Генетические алгоритмы - прекрасное дополнение к оптимизатору стратегий МТ 4. Ускорение оптимизации при большом количестве переборов просто фантастическое, результаты совпадают с результатами обычной оптимизации.

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

5.     Послесловие

    Уже после написания статьи я для удовлетворения собственного любопытства запустил оптимизацию CrossMACD_DeLuxe по всем параметрам. Количество комбинаций составило более ста миллионов (103 306 896). С использованием генетических алгоритмов оптимизация заняла всего 17 часов, в то время как оптимизация с перебором всех параметров закончилась бы, предположительно, через 35 лет (301 223 часа).

    Делайте выводы.

www.mql5.com


Prostoy-Site | Все права защищены © 2018 | Карта сайта