УДК 004.42
DOI 10.21685/2072-3059-2018-4-9
Е. А. Кольчугина
БИОИНСПИРИРОВАННЫЕ МЕТОДЫ САМОРАЗРАБОТКИ ПРОГРАММ ДЛЯ РАСПРЕДЕЛЕННЫХ СИСТЕМ
Аннотация.
Дан сравнительный анализ современных биоинспирированных технологий разработки программного обеспечения, способных обеспечить саморазработку программ для распределенных компьютерных систем. Установлено, что парадигмы мультиагентного и неравновесного программирования являются наиболее подходящими концепциями для создания саморазрабатываемых и самопрограммируемых программных систем, подходящих для реализации вездесущих и всепроникающих вычислений, а также Интернета вещей.
Ключевые слова: программная инженерия, распределенные вычислительные системы, саморазработка, самопрограммирование, парадигма неравновесного программирования, искусственная жизнь, искусственная химия.
E. A. Kol'chugina
BIOINSPIRED METHODS OF SOFTWARE SELF-DEVELORMENT FOR DISTRIBUTED COMPUTER SYSTEMS
Abstract.
We give a comparative analysis of modern bioinspired software design technologies capable of providing self-development of software for distributed computer systems. It is established that multiagent and non-equilibrium programming paradigms are the most proper concepts for designing of self-developing and self-programming software systems suitable to implement ubiquitous and pervasive computations and Internet of Things.
Keywords: software engineering, distributed computer systems, self-development, self-programming, non-equilibrium programming paradigm, artificial life, artificial chemistry.
Введение
Повсеместное использование глобальных компьютерных и телекоммуникационных сетей делает необходимым применение параллельных и распределенных вычислений. Это влечет необходимость создания новых методов организации соответствующих вычислений и методов разработки программ, реализующих данные вычисления.
Влияние таких факторов, как пространственная распределенность вычислений, многокомпонентность и относительная независимость компонентов программного обеспечения, приводит к усложнению структуры и логики функционирования программ. К этому следует добавить, что программы,
© Кольчугина Е. А., 2018. Данная статья доступна по условиям всемирной лицензии Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), которая дает разрешение на неограниченное использование, копирование на любые носители при условии указания авторства, источника и ссылки на лицензию Creative Commons, а также изменений, если таковые имеют место.
функционирующие на базе распределенных систем, взаимодействуют с вычислительным окружением, формирующимся в результате функционирования других подобных программ и их взаимодействия с системным программно-аппаратным обеспечением. В итоге традиционные методы разработки программ с жесткой логикой поведения и отсутствием способностей к адаптации к изменяющимся условиям вычислительного окружения становятся неэффективными с точки зрения решения задачи создания программного обеспечения распределенных систем, предназначенного для долговременной эксплуатации.
Желательными свойствами программного обеспечения, предназначенного для использования на основе распределенных вычислительных систем с учетом непредсказуемо изменяющихся условий эксплуатации, являются способности к самооптимизации, самовосстановлению, самоменеджменту и продолжающейся саморазработке, т.е. к саморазвитию в течение всего жизненного цикла.
Способности к саморазвитию в наиболее выраженной степени присущи живым организмам и их сообществам различного уровня сложности. Попытки провести аналогии между вычислительными и биологическими (или биохимическими) процессами привели к формированию концепций биоинспири-рованных вычислений. Преимущества и недостатки применения данных концепций для разработки программного обеспечения распределенных систем будут рассмотрены далее.
1. Методы разработки программ на основе эволюционных вычислений
Концептуальную основу эволюционных вычислений составляют методы направленного перебора закодированных вариантов решений, восходящие еще к работам Л. Фогеля, А. Оуэнса и М. Уолша [1]. Наиболее ярким примером эволюционных вычислений являются генетические алгоритмы, впервые предложенные Дж. Холландом в 1975 г. [2-4].
В классической модели генетического алгоритма множество решений, называемых хромосомами, кодируется в виде строк. Для получения нового поколения решений над строками выполняются операции кроссинговера, или получения хромосом-потомков путем перекрестного обмена фрагментами между хромосомами-предками, и мутации, или случайной замены значения в выбранной позиции строки. Затем на основе значения фитнесс-функции, оценивающей соответствие решения требуемому критерию, с помощью оператора селекции формируется новое поколение хромосом.
Очевидно, что если удастся представить программу для ЭВМ как решение, закодированное линейной последовательностью или строкой, то для получения улучшенных решений, т. е. лучших вариантов программы, могут быть применены методы генетических алгоритмов. Подобное кодирование естественно для программ на ассемблероподобных языках программирования, где программа представляется линейной последовательностью команд. Такой подход нашел применение в ц -исчислении [5].
Недостатки данного подхода:
- высокая вероятность получения вырожденных неработоспособных решений;
- ограничение возможности использования структур данных, если они более сложны, чем регистровые переменные;
- в целях обеспечения безопасности вычислений рассмотренный подход допустимо использовать исключительно в условиях виртуальной ЭВМ с применением псевдоассемблерных языков, отличных от системы команд реально используемого физического процессора.
Другой подход к эволюционной разработке программ, известный как генетическое программирование [3, 6], был предложен Дж. Коза. Этот подход, также возникший на основе генетических алгоритмов, но более популярный, безопасный и практически значимый, чем эволюционная разработка программ на ассемблероподобных языках, основан на использовании древовидных хромосом. Каждая такая хромосома представляет собой выражение X -подобного исчисления, которому соответствует программа на языке функционального программирования, сходного с LISP. Операции кроссинговера и мутации реализуются соответственно как обмен поддеревьями или перестройка поддерева. Генетическое программирование хорошо зарекомендовало себя с точки зрения решения практически значимых задач. Оно свободно от выделенных ранее ограничений, характерных для моделей эволюционирующих ассемблерных программ. Однако генетическое программирование имеет свой недостаток в виде невозможности контролировать высоту получаемого решения. Кроме того, с точки зрения обеспечения эволюционной непрерывной саморазработки программ хромосомы генетического программирования нуждаются в однозначно заданном критерии приспособленности, что делает неэффективным применение данного подхода в непредсказуемо изменяющихся условиях, когда критерии приспособленности могут изменяться.
2. ДНК-вычисления
Из всех рассматриваемых здесь подходов ДНК-вычисления являются наиболее концептуально близкими к биологии, так как они реализуются путем выполнения химических реакций над фрагментами молекулы ДНК, кодирующими решения и их фрагменты. Первичная структура молекулы ДНК представляет собой линейную последовательность аминокислот, т.е. кодовую строку. Наследственная информация, хранящаяся в ДНК, кодируется в алфавите, состоящем из четырех аминокислот, образующих две пары, связанные отношением комплиментарности. Это можно рассматривать как разновидность двоичного алфавита {0,1,0,1} [7]. Допустимые операции над ДНК
включают в себя соединение отдельных фрагментов благодаря свойству ком-плиментарности и наличию «липких» концов, а также разрезание фрагментов ДНК, отделение фрагментов, обладающих заданными свойствами, слияние и копирование множеств фрагментов.
Как показано в [8], ДНК-вычисления можно применить для проектирования баз данных. Применение ДНК-вычислений для разработки программ допустимо в том случае, когда программа может быть представлена в виде линейной структуры и может быть явно и однозначно задан критерий отбора решений. Это накладывает ограничения на применение данного метода. Помимо этого, реализация ДНК-вычислений трудоемка и ресурсоемка.
3. Мультиагентные системы
Мультиагентный подход, известный с середины 1990-х гг., быстро нашел применение при разработке систем искусственного интеллекта и моделей искусственной жизни, демонстрирующих эмерджентное поведение и наличие процессов самоорганизации.
Здесь можно выделить:
- подходы, основанные на применении интеллектуальных агентов, производящих логический вывод на знаниях [9];
- подходы, основанные на применении обучающихся агентов, обладающих сенсорами и нейросетью, эволюционирующей благодаря обучению [10-12];
- подходы, основанные на применении простейших агентов, не обладающих сенсорами и нейросетью и реализующих жестко заданный набор правил [12, 13].
Особый интерес представляют подходы второй и третьей групп, так как именно для соответствующих им моделей отмечено возникновение индивидуальных стратегий поведения у агентов, обеспечивающих выживание в модельной среде, а также формирование коллективного поведения, в результате чего агенты начинают действовать как разумное интеллектуальное целое. И в том и в другом случае агенты непрерывно эволюционируют, приспосабливаясь к среде, при этом либо совершенствуя нейросеть через обучение, либо вырабатывая оптимальную последовательность выполнения простейших действий. Эти возможности удовлетворяют сформулированному выше для программного обеспечения распределенных систем требованию необходимости учета текущего состояния актуальной вычислительной среды и адаптации к этому состоянию. В силу этих причин мультиагентные системы находят все более широкое применение на практике.
Однако мультиагентные системы обладают недостатком, ограничивающим их возможности: в ходе эволюции изменяются только управляющие параметры и данные агентов, сама структура и общий алгоритм поведения агентов не изменяются. Таким образом, разработчик мультиагентной системы должен предвидеть и сразу учесть все возможные функции, которые может понадобиться реализовать агентам для решения основной задачи и обеспечения функционирования самой мультиагентной системы, что затруднительно сделать.
4. Неравновесное программирование
Парадигма неравновесного программирования была предложена в работах Е. А. Кольчугиной, в том числе в [14]. Данная парадигма сочетает в себе черты как мультиагентного подхода, так и эволюционной разработки программ на ассемблероподобных языках с помощью генетических алгоритмов. Основная отличительная особенность парадигмы неравновесного программирования состоит в том, что она позволяет разрабатывать программные системы, в которых наблюдается самоорганизация континуального типа.
Программная система, построенная в соответствии с парадигмой неравновесного программирования, представляет собой сообщество цифровых организмов, являющихся программными агентами с открытой архитектурой.
Каждый такой цифровой организм представляет собой динамически изменяющуюся, как качественно, так и количественно, совокупность функций. Наличие некоторых функций обязательно, другие являются опционными. Если реализации функций могут изменяться с течением времени, то семантика и интерфейсы функций фиксированы. Связь реализаций функций с интерфейсом и семантикой кодируется при помощи числовой последовательности, или цифровой ДНК. Это позволяет, с одной стороны, изменять цифровой организм, причем как значения управляющих параметров, так и алгоритм поведения, но, с другой стороны, делает процесс изменений подконтрольным и управляемым, позволяя исключить нежелательные пути развития популяции программ. Над цифровой ДНК могут быть выполнены все операции генетических алгоритмов. Таким образом, открываются широкие возможности для эволюционного получения наилучших программных решений. Как и в случае эволюционирующих программ на ассемблероподобных языках, эволюция цифровых организмов должна происходить в условиях специальным образом устроенной изолированной среды, подобной виртуальной ЭВМ, в целях обеспечения безопасности процесса эволюции для базовой компьютерной системы.
Свое название парадигма неравновесного программирования получила благодаря положенной в ее основу идее сходства вычислительных процессов с химическими и термодинамическими процессами. В большинстве случаев просматривается аналогия между выполнением программ, стремящихся к вычислению конечного результата и останову, с процессами, стремящимися к термодинамическому равновесию. Эта аналогия становится более очевидной, если рассматривать процессорное время как аналог доступной энергии. В случае процессов, стремящихся к равновесию, энергия расходуется и рассеивается. Однако процессы самоорганизации, реализующие неравновесное упорядочение [15], стремятся к удалению от термодинамического равновесия через совершение полезной работы. В качестве модельного аналога такой работы можно рассматривать выполнение программой вычислений, значимых для пользователя. Если выполнение таких вычислений будет поощряться увеличением количества доступного процессорного времени, выступающего в качестве аналога свободной энергии, то выполнение программы в целом может рассматриваться как процесс, ход которого направлен против модельного аналога термодинамического равновесия, т.е. останова.
Проводя аналогию с химическими реакциями, выполнение программы условно можно рассматривать как аналог каталитической реакции. В каталитических реакциях катализатор в ходе реакции не расходуется. Роль катализатора состоит в понижении энергетического порога протекания реакции, в результате чего для начала реакции требуется меньшая энергия активации и протекание реакции становится возможным. В качестве аналогов катализаторов можно рассматривать программный код, который при условии некоторой идеализации можно рассматривать как неизменный. Исходные данные и результаты выполнения программ при таком подходе, соответственно, рассматриваются как аналоги субстрата и продуктов реакции.
Продолжая аналогию далее, программные агенты, способные к клонированию, можно рассматривать как модельные аналоги автокатализаторов: в результате выполнения реакции автокатализа молекулы-автокатализаторы воспроизводятся; аналогичным образом программы, способные клонировать-
ся, увеличивают свою численность в результате выполнения полезных вычислений и получения «платы» за них в виде дополнительного процессорного времени. Процессы самоорганизации в сообществах автокатализаторов со структурой гиперциклов описаны в работе М. Эйгена и П. Шустера [16].
Отличие цифрового организма неравновесного программирования от обычного программного агента состоит в том, что цифровой организм представляет собой аналог автокатализатора с переменным составом и структурой, который пересобирается (реактуализируется) на основе кодированного представления, отражающего текущее состояние цифрового организма, заданного цифровой ДНК.
Эволюция в программных системах, построенных в соответствии с парадигмой неравновесного программирования, может продолжаться непрерывно, в том числе и на стадии эксплуатации программного обеспечения, если это разрешит разработчик. Так как эволюция цифровых организмов происходит в отсутствие явно заданной фитнесс-функции, популяция цифровых организмов способна эволюционно откликнуться на любое изменение состояния вычислительной среды и потоков запросов и данных пользователя. Таким образом, речь идет о непрерывной продолжающейся саморазработке программного обеспечения, что, как было установлено ранее, уже является необходимым свойством программ, предназначенных для функционирования на базе распределенных систем.
В работе [17] было отмечено существенное снижение трудоемкости разработки программного обеспечения при использовании парадигмы неравновесного программирования вплоть до нескольких десятков раз. Таким образом, процесс разработки программ может быть автоматизирован полностью, и переход к продолжающейся саморазработке программ становится реальностью.
Заключение
Среди всех биоинспирированных эволюционных методов разработки программного обеспечения, рассмотренных в данной статье, наиболее перспективными являются методы, основанные на мультиагентном подходе или близкие к нему, в том числе неравновесное программирование. Эти методы предполагают динамическое распределение подпроцессов по узлам вычислительной сети и возможность учета этими подпроцессами состояния текущего вычислительного окружения с целью оптимальной адаптации к нему, в том числе путем эволюции программного кода. Данные особенности важны и перспективны с точки зрения реализации вездесущих и всепроникающих вычислений и перехода к Интернету вещей [18].
Библиографический список
1. Фогель, Л. Искусственный интеллект и эволюционное моделирование : пер. с англ. / Л. Фогель, А. Оуэнс, М. Уолш. - М. : Мир, 1969. - 232 с.
2. Holland, J. H. Building Blocks, Cohort Genetic Algorithms, and Hyperplane-Defined Functions / J. H. Holland // Evolutionary Computations. - 2000. - Vol. 8 (4). -P. 373-391.
3. Гладков, Л. А. Генетические алгоритмы / Л. А. Гладков, В. В. Курейчик, В. М. Курейчик ; под ред. В. М. Курейчика. - 2-е изд., испр. и доп. - М. : Физмат-лит, 2006. - 320 с.
4. Mitchell, M. Introduction to Genetic Algorithms / M. Mitchell. - Cambridge, Massachusetts ; London, England : A Bradford Book the MIT Press, 1999. - 158 p.
5. Corno, F. On the Evolution of Corewar Warriors / F. Corno, E. Sanchez, G. Squille-ro // Congress on Evolutionary Computation, CEC June 20-23 2004. - Portland (Oregon), 2004. - P. 2365-2371.
6. Koza, J. R. Genetic Programming: Biologically Inspired Computation that Creatively Solves Non-Trivial Problems / J. R. Koza, F. H. Bennett, D. Andre, M. A. Keane // Evolution as Computation: DIMACS Workshop, Princeton, January 1999. - Berlin Heidelberg : Springer-Verlag Berlin Heidelberg, 2002. - P. 95-124.
7. Паун, К. ДНК-компьютер. Новая парадигма вычислений : пер. с англ. / К. Паун, Г. Розенберг, А. Саломаа. - М. : Мир, 2004. - 528 с.
8. Кольчугина, Е. А. Алгоритмы обработки данных на основе методов биокибернетики / Е. А. Кольчугина // Современные информационные технологии : тр. Междунар. науч.-техн. конф. (Computer-based conference) / под ред. В. Б. Моисеева, Л. Г. Когельмана, С. В. Трубицкова. - Вып. 4. - Пенза : Пенз. гос. технолог. академия, 2006. - С. 68-71.
9. Рассел, С. Искусственный интеллект: современный подход : пер. с англ. / С. Рассел, П. Норвиг. - 2-е изд. - М. : Вильямс, 2006. - 1408 с.
10. Ackley, D. H. Interaction Between Learning and Evolution / D. H. Ackley, M. L. Littman // Artificial Life II, SFI Studies in the Sciences of Complexity / ed. by C. G. Langton, C. Taylor, J. D. Farmer, S. Rasmussen. - Redwood City, CA : Addison-Wesley, 1991. - Vol. X. - P. 487-509.
11. Yaeger, L. S. Computational Genetics, Physiology, Metabolism, Neural Systems, Learning, Vision and Behavior or Polyworld: Life in a New Context / L. S. Yaeger // Proccedings of Artificial Life III / ed. C. G. Langton. - Redwood City, CA : Addison-Wesley, 1994. - Vol. XVII. - P. 263-298.
12. Редько, В. Г. Эволюция, нейронные сети, интеллект: Модели и концепции эволюционной кибернетики / В. Г. Редько ; предисл. Г. Г. Малинецкого. -Изд. 4-е, стереотип. - М. : КомКнига, 2006. - 244 с.
13. Drogoul, A. MANTA: New Experimental Results on the Emergence of (Artificial) Ants Societies / A. Drogoul, B. Corbara, S. Lalande // Artificial Societies: the Computer Simulation of Social Life / eds. N. Gilbert, R. Conte. - London : UCL Press, 1995. -P. 190-211.
14. Кольчугина, Е. А. Неравновесное программирование / Е. А. Кольчугина // Известия высших учебных заведений. Поволжский регион. Технические науки. -2009. - № 3 (11). - С. 25-31.
15. Руденко, А. П. Самоорганизация и синергетика / А. П. Руденко. - URL: http://spkurdyumov.ru/what/samoorganizaciya-i-sinergetika-a-p-rudenko (дата обращения: 11.12.2018).
16. Эйген, М. Гиперцикл: принципы самоорганизации макромолекул / М. Эйген, П. Шустер. - М. : Мир, 1982. - 272 с.
17. Кольчугина, Е. А. Теоретические основы построения самоорганизующихся программных систем с самоорганизацией континуального типа : дис. ... д-ра техн. наук : 05.13.17 / Кольчугина Е. А. - Пенза, 2017. - 295 с.
18. Гофф, М. К. Сетевые распределенные вычисления: достижения и проблемы : пер. с англ. / М. К. Гофф. - М. : КУДИЦ-ОБРАЗ, 2005. - 320 с.
References
1. Fogel' L., Ouens A., Uolsh. M. Iskusstvennyy intellekt i evolyutsionnoe modelirovanie: per. s angl. [Artificial intelligence and evolutionary modeling: translation from English]. Moscow: Mir, 1969, 232 p.
2. Holland J. H. Evolutionary Computations. 2000, vol. 8 (4), pp. 373-391.
3. Gladkov L. A., Kureychik V. V., Kureychik V. M. Geneticheskie algoritmy [Genetic algorithms]. 2nd ed., corr. and suppl. Moscow: Fizmat-lit, 2006, 320 p.
4. Mitchell M. Introduction to Genetic Algorithms. Cambridge, Massachusetts; London, England: A Bradford Book the MIT Press, 1999, 158 p.
5. Corno F., Sanchez E., Squillero G. Congress on Evolutionary Computation, CEC June 20-23, 2004. Portland (Oregon), 2004, pp. 2365-2371.
6. Koza J. R., Bennett F. H., Andre D., Keane M. A. Evolution as Computation: DIMACS Workshop, Princeton, January 1999. Berlin Heidelberg: Springer-Verlag Berlin Heidelberg, 2002, pp. 95-124.
7. Paun K., Rozenberg G., Salomaa A. DNK-komp'yuter. Novaya paradigma vychisleniy: per. s angl. [DNA-computer. A new paradigm of computations: translation from English]. Moscow: Mir, 2004, 528 p.
8. Kol'chugina E. A. Sovremennye informatsionnye tekhnologii: tr. Mezhdunar. nauch.-tekhn. konf. (Computer-based conference) [Modern information technologies: proceedings of an International scientific and technical conference]. Issue 4. Penza: Penz. gos. tekhnolog. akademiya, 2006, pp. 68-71.
9. Rassel S., Norvig P. Iskusstvennyy intellekt: sovremennyy podkhod: per. s angl. [Artificial intelligence: modern approach: translation from English]. 2nd ed. Moscow: Vil'yams, 2006, 1408 p.
10. Ackley D. H., Littman M. L. Artificial Life II, SFI Studies in the Sciences of Complexity. Redwood City, CA: Addison-Wesley, 1991, vol. X, pp. 487-509.
11. Yaeger L. S. Proccedings of Artificial Life III. Redwood City, CA: Addison-Wesley, 1994, vol. XVII, pp. 263-298.
12. Red'ko V. G. Evolyutsiya, neyronnye seti, intellekt: Modeli i kontseptsii evolyutsionnoy kibernetiki [Evolution, neural networks, intelligence: Models and concepts of evolutionary cybernetics]. 4th, stereotip. Moscow: KomKniga, 2006, 244 p.
13. Drogoul A., Corbara B., Lalande S. Artificial Societies: the Computer Simulation of Social Life. London: UCL Press, 1995, pp. 190-211.
14. Kol'chugina E. A. Izvestiya vysshikh uchebnykh zavedeniy. Povolzhskiy region. Tekhnicheskie nauki [University proceedings. Volga region. Engineering sciences]. 2009, no. 3 (11), pp. 25-31.
15. Rudenko A. P. Samoorganizatsiya i sinergetika [Self-organization and synergy]. Avail-ableb at: http://spkurdyumov.ru/what/samoorganizaciya-i-sinergetika-a-p-rudenko (accessed Dec. 11, 2018).
16. Eygen M., Shuster P. Gipertsikl: printsipy samoorganizatsii makromolekul [Hypercy-cle: principles of macromolecule self-organization]. Moscow: Mir, 1982, 272 p.
17. Kol'chugina E. A. Teoreticheskie osnovy postroeniya samoorganizuyushchikhsya pro-grammnykh sistem s samoorganizatsiey kontinual'nogo tipa: dis. d-ra tekhn. nauk: 05.13.17 [Theoretical foundations of building self-organizing software systems with continual self-organization: dissertation to apply for the degree of the doctor of engineering sciences]. Penza, 2017, 295 p.
18. Goff M. K. Setevye raspredelennye vychisleniya: dostizheniya i problemy: per. s angl. [Network distributed computations: achievements and problems: translation from English]. Moscow: KUDITs-OBRAZ, 2005, 320 p.
Кольчугина Елена Анатольевна доктор технических наук, профессор, кафедра математического обеспечения и применения ЭВМ, Пензенский государственный университет (Россия, г. Пенза, ул. Красная, 40)
E-mail: [email protected]
Kol'chugina Elena Anatol'evna Doctor of engineering sciences, professor, sub-department of computer software and application, Penza State University (40 Krasnayа street, Penza, Russia)
УДК 004.42 Кольчугина, Е. А.
Биоинспирированные методы саморазработки программ для распределенных систем / Е. А. Кольчугина // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2018. - № 4 (48). - С. 96-104. -DOI 10.21685/2072-3059-2018-4-9.