Мне было интересно, насколько распространено найти подходы к генетическому алгоритму в коммерческом коде.
Мне всегда казалось, что некоторые виды планировщиков могут извлечь выгоду из механизма GA, как дополнение к основному алгоритму.
Мне было интересно, насколько распространено найти подходы к генетическому алгоритму в коммерческом коде.
Мне всегда казалось, что некоторые виды планировщиков могут извлечь выгоду из механизма GA, как дополнение к основному алгоритму.
Генетические алгоритмы широко используются в коммерческих целях. Оптимизация маршрута поездов была ранним применением. Совсем недавно истребители использовали GA для оптимизации конструкции крыла. Я широко использовал GA для работы над проблемами, имеющими чрезвычайно большое пространство поиска.
Многие проблемы вряд ли выиграют от GA. Я не согласен с Томасом, что их слишком сложно понять. GA на самом деле очень проста. Мы обнаружили, что от оптимизации GA требуется огромное количество знаний для конкретной проблемы, которая может быть сложной, и, как всегда, управление большими объемами параллельных вычислений по-прежнему является проблемой для многих программистов.
Проблема, которая принесет пользу GA, будет иметь следующие характеристики:
Есть много проблем, которые, вероятно, могут извлечь выгоду из GA, и в будущем они, вероятно, будут более широко развернуты. Я считаю, что GAs используются в передовой технике больше, чем люди думают, однако большинство людей (например, моя компания) очень тщательно охраняет эти секреты. Это происходит только после того, как выяснилось, что используются GA.
Большинство людей, которые занимаются "нормальными" приложениями, вероятно, не имеют для них большого смысла.
Если вы хотите найти пример, посмотрите на Postgres Query Planner. Он использует много методов, и один просто так бывает генетическим.
http://developer.postgresql.org/pgdocs/postgres/geqo-pg-intro.html
Я использовал GA в своем магистерском тезисе, но после этого я ничего не нашел в своей повседневной работе, которую GA могла решить, что я не мог быстрее решить какой-либо другой алгоритм.
У меня нет, но я слышал об этой компании (не помню их имени), которая использует мутирующие генетические algos для расчета мест размещения и длины антенн (или что-то еще) от моего друга. И они должны (по словам моего друга) иметь огромный успех с этим. Думаю, GA слишком сложна, чтобы "средний разработчик Joe" стал мейнстримом. Вид вроде Map Reduce - впечатляюще круто, но WAY слишком продвинутый, чтобы попасть в "мейнстрим"...
Я не думаю, что особенно часто можно найти генетические алгоритмы в повседневном коммерческом коде. Они чаще встречаются в академическом/исследовательском коде, где необходимость найти "лучший алгоритм" менее важна, чем необходимость найти хорошее решение проблемы.
Тем не менее, я консультировался по нескольким коммерческим проектам, которые используют GA (главным образом в результате моего участия в GAUL). Я думаю, что самый интересный пример был в компании Biotech. Они использовали GA для оптимизации функций подсчета очков, которые использовались для виртуального скрининга, как часть их приложения обнаружения лекарств.
В начале этого года, с моей текущей компанией, я добавил новую функцию к одному из наших продуктов, который использует другую GA. Я думаю, мы можем продавать это со следующего месяца. В принципе, GA используется для изучения молекул, которые могут связываться с белком, и поэтому их можно дополнительно исследовать как лекарственные средства, нацеленные на этот белок. Конкурирующим продуктом, который также использует GA, является изобретатель EA.
В рамках моей диссертации я написал общую структуру java для многоцелевого алгоритма оптимизации mPOEMS (оптимизация многопользовательского прототипа с развитыми шагами усовершенствования), который представляет собой GA с использованием эволюционных концепций. Он является общим в том смысле, что все независимые от проблемы части были отделены от проблемных частей, а интерфейс призван использовать структуру только с добавлением проблемно-зависимых частей. Таким образом, тот, кто хочет использовать алгоритм, не должен начинать с нуля, и это облегчает работу.
Здесь вы можете найти код .
Решения, которые вы можете найти с помощью этого алгоритма, были сопоставлены в научной работе с самыми современными алгоритмами SPEA-2 и NSGA, и было доказано, что алгоритм работает сопоставимо или даже лучше, в зависимости от показателей, которые вы принимаете для измерения производительности, и особенно в зависимости от проблемы оптимизации, которую вы ищете.
Здесь вы можете найти .
Также в рамках моей диссертации и доказательства работы я применил эту структуру к проблеме выбора проекта, которая была обнаружена в управлении портфелем. Речь идет о выборе проектов, которые приносят наибольшую ценность компании, поддерживают большую часть стратегии компании или поддерживают любую другую произвольную цель. Например. выбор определенного количества проектов из определенной категории или максимизация синергии проекта,...
Мой тезис, который применяет эту структуру к проблеме выбора проекта: http://www.ub.tuwien.ac.at/dipl/2008/AC05038968.pdf
После этого я работал в отделе управления портфелем в одном из 500 дел, где они использовали коммерческое программное обеспечение, которое также применило GA к проблеме выбора проекта/оптимизации портфеля.
Дополнительные ресурсы:
Документация структуры: http://thomaskremmel.com/mpoems/mpoems_in_java_documentation.pdf
mPOEMS презентационный документ: http://portal.acm.org/citation.cfm?id=1792634.1792653
На самом деле с небольшим энтузиазмом каждый мог легко адаптировать код общей структуры к произвольной многоцелевой оптимизации.