Эволюция как метод решения технических задач
26 июля 2013 г.Биологическая эволюция и механизмы естественного отбора зарекомендовали себя в качестве чрезвычайно эффективного инструмента адаптации живых организмов к условиям окружающей среды. Белый медведь великолепно приспособился к морозам Заполярья, рогатая гадюка - к жаре пустыни Сахара. Полвека назад, на заре компьютерной эры, программистам пришло в голову попробовать применить законы, открытые Дарвином, для решения технических задач. Так родились эволюционные алгоритмы. О нынешнем состоянии дел в области генетического программирования и эволюционных стратегий можно было узнать, побывав на прошедшей в Амстердаме международной конференции GECCO (Genetic and Evolutionary Computation Conference).
Варианты технических решений спариваются и дают потомство
В борьбе за существование выживает сильнейший, - так устроена природа. Но тут вовсе не обязательно имеется в виду физическая сила. Сильнейший - это может быть и самый высокий или самый приземистый, самый тяжелый или самый легкий, самый толстый или самый тощий, самый быстрый или самый медлительный, а также самый хитрый или самый сообразительный... Все зависит от условий, в которые поставила организм внешняя среда.
На тех же принципах построено и эволюционное моделирование, только здесь за выживание бьются не животные в дикой природе, а технические решения в компьютере. Скажем, разные конструкции форсунки автомобильного двигателя. Марк Хармен (Mark Harman), профессор информатики лондонского Университетского колледжа, поясняет: "Обычно мы начинаем моделирование со случайного набора решений какой-то технической проблемы. Так же, как в природе, наши варианты решений могут спариваться и производить потомство, причем некоторые из потомков могут оказаться совершеннее родителей. По мере того, как сменяются поколения, могут выкристаллизоваться одно-два удачных решения. Если речь идет о форсунке двигателя, то это могут быть конструкции, обеспечивающие более высокую степень сжатия горючего. В нашей программе у них больше шансов дать потомство".
Оптимизация технического решения происходит сама собой
Критерии отбора задают, конечно, люди. Это может быть, скажем, коэффициент полезного действия форсунки: в результате наиболее эффективные конструкции выживают, а менее эффективные вымирают и отбраковываются компьютером. И несколько сотен поколений спустя компьютер, если повезет, может вдруг выдать вариант оптимизированной форсунки - вариант, который мог бы никогда не прийти в голову живому инженеру-конструктору. Профессор Хармен поясняет: "Огромное преимущество эволюционных алгоритмов состоит в том, что удачные решения выкристаллизовываются сами собой. Мы не знаем точно, как рождается то или иное решение, мы можем лишь констатировать, что оно действительно лучше других. А всю работу выполняет за нас эволюция".
Понятно, что возможности этого метода не безграничны. В зависимости от сложности задачи, компьютерное моделирование на основе эволюционных алгоритмов может потребовать многих недель машинного времени, говорит ученый: "Эволюции понадобились миллиарды лет на то, чтобы жизнь прошла путь от бактерии до человека. Но мы, естественно, не можем ждать так долго. Поэтому мы, приступая к моделированию, обычно стараемся задать хорошую исходную позицию. Фигурально выражаясь, наша эволюция начинается не с бактерий, а с обезьян".
Главное - правильно задать граничные условия
Здесь особое значение обретает мастерство программиста и его чувство меры: если он задаст слишком общие, неопределенные граничные условия, цифровая эволюция может занять слишком много времени, если же условия окажутся слишком узкими и жесткими, эволюция может и вовсе "не пойти". По словам профессора Хармена, метод получил уже довольно широкое распространение среди инженеров, особенно при решении проблем оптимизации. Но уже через несколько лет эволюционные алгоритмы могут заинтересовать и разработчиков программного обеспечения, считает ученый: "Одна идея, которая кажется мне чрезвычайно интересной, состоит в том, что такие алгоритмы могут выявлять и даже самостоятельно устранять ошибки в программе - причем в то самое время, когда программа работает. Пока, правда, эта идея находится на ранней стадии разработки, но года через два ее, будем надеяться, удастся реализовать на практике".
Возможно, уже в недалеком будущем подключенный на ночь к зарядному устройству смартфон сможет самостоятельно проверить совместимость очередной актуализации операционной системы с установленными на нем приложениями. И в случае обнаружения конфликта предупредить об этом владельца, а еще лучше - просто адаптировать новую версию операционной системы к имеющимся приложениям.