Вы когда-нибудь использовали генетический алгоритм в реальных приложениях? - PullRequest
37 голосов
/ 20 ноября 2008

Мне было интересно, как часто можно найти подходы генетического алгоритма в коммерческом коде.

Мне всегда казалось, что некоторые виды планировщиков могли бы использовать движок GA в качестве дополнения к основному алгоритму.

Ответы [ 6 ]

20 голосов
/ 23 января 2009

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

Многие проблемы вряд ли выиграют от ГА. Я не согласен с Томасом, что их слишком сложно понять. А на самом деле очень просто. Мы обнаружили, что от оптимизации GA до конкретной проблемы можно получить огромное количество знаний, которые могут быть трудными, и, как всегда, управление большими объемами параллельных вычислений продолжает оставаться проблемой для многих программистов.

У проблемы, которая выиграет от GA, будут следующие характеристики:

  • Хороший способ кодирования потенциальных решений
  • Способ вычисления числовой оценки для оценки качества решения
  • Большое многомерное пространство поиска, где ответ неочевиден
  • Хорошее решение достаточно хорошее, и идеальное решение не требуется

Есть много проблем, которые, вероятно, могли бы извлечь выгоду из GA, и в будущем они, вероятно, будут более широко развернуты. Я считаю, что ГА используются в передовых разработках больше, чем думают люди, однако большинство людей (как и моя компания) очень тщательно охраняют эти секреты. Это только после того, как выяснилось, что ГА использовались.

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

10 голосов
/ 20 ноября 2008

Если вы хотите найти пример, посмотрите на Планировщик запросов Postgres. Он использует много техник, и одна из них оказывается генетической.

http://developer.postgresql.org/pgdocs/postgres/geqo-pg-intro.html

4 голосов
/ 20 ноября 2008

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

3 голосов
/ 20 ноября 2008

Не знаю, но я слышал об этой компании (не помню ее названия), которая использует мутирующие генетические алгоритмы для расчета размещения и длины антенн (или чего-то другого) от моего друга. И они должны (по словам моего друга) иметь огромный успех в этом. Я думаю, что GA слишком сложен для "среднего разработчика Джо", чтобы стать господствующим. Вроде как Map Reduce - потрясающе круто, но ПУТЬ слишком продвинут, чтобы попасть в «мейнстрим» ...

2 голосов
/ 31 декабря 2010

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

Вы можете найти код здесь .

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

Вы можете найти его здесь .

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

Мой тезис, который применяет эту структуру к проблеме выбора проекта: http://www.ub.tuwien.ac.at/dipl/2008/AC05038968.pdf

После этого я работал в отделе управления портфелем в одном из Fortune 500, где они использовали коммерческое программное обеспечение, которое также применило GA к проблеме выбора проекта / оптимизации портфеля.

Дополнительные ресурсы:

Документация по каркасу: http://thomaskremmel.com/mpoems/mpoems_in_java_documentation.pdf

презентационная бумага mPOEMS: http://portal.acm.org/citation.cfm?id=1792634.1792653

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

2 голосов
/ 20 марта 2009

Я не думаю, что в обычном коммерческом коде можно найти генетические алгоритмы. Они чаще встречаются в академическом / исследовательском кодексе, где необходимость найти «лучший алгоритм» менее важна, чем просто найти хорошее решение проблемы.

Тем не менее, я консультировался по нескольким коммерческим проектам, которые используют GA (главным образом, в результате моего участия в GAUL ). Я думаю, что самый интересный пример был в биотехнологической компании. Они использовали GA для оптимизации функций оценки, которые использовались для виртуального скрининга, как часть их приложения для обнаружения лекарств.

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

...