Традиционные объекты можно считать пассивными, поскольку они ожидают сообщения прежде, чем выполнить операцию. После того, как объекты инициированы, они выполняют свои методы и «засыпают» до получения следующего сообщения. Сейчас во многих системах стремятся создавать объекты, которые реагируют на события своей среды, а также предпринимают определенные действия, не дожидаясь прямого обращения к себе. В UML 2.0 их называют активными объектами, а специалисты по агентам предпочитают говорить о них как об агентах. Как бы их не называли, активными объектами или агентами, это новое направление должно радикальным образом изменить подход к проектированию систем.

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

Сложность

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

Рис. 1. Мгновенные снимки моделирования колонии муравьев
  1. Перемещайся случайным образом.
  2. Если найдена пища, отнеси ее часть обратно в колонию и оставь след феромона, который со временем испарится, а затем перейди к правилу 1.
  3. Если след феромона найден, двигайся по нему к пище, а затем перейди к правилу 2.

На рис. 1a муравьи только вышли из муравейника (круг в центре), чтобы начать свое случайное блуждание. В конечном итоге, муравьи находят источник пищи (круги) и переносят ее часть в колонию, оставляя испаряющийся след феромона (рис. 1b). На рис. 1c показана колония муравьев, продвигающаяся в поисках пищи. Наконец, на рис. 1d видно, что два источника пищи основательно опорожнены и один и вовсе пустой.

Таким образом, колонии муравьев не представляют собой ничего сложного. С одной стороны, система является сложной тогда, когда ее можно полностью описать в терминах огромного количества ее компонентов. С другой стороны, система сложна, если ее невозможно полностью понять, анализируя ее компоненты. В данном случае следует учитывать и взаимодействия между компонентами.

Зачастую сложные системы невозможно до конца понять именно потому, что трудно полностью представить себе взаимодействие ее компонентов (или агентов). К примеру, можно выявить компоненты, задействованные в работе Нью-йоркской биржи, однако никто не в состоянии точно спрогнозировать, когда следует играть на повышение, а когда — на понижение, или, когда на бирже произойдет падение. В подобных ситуациях знаний о взаимодействии различных компонентов недостаточны.

Сложные системы

Изучением поведения сложных систем впервые всерьез стали заниматься в институте Санта-Фе (Santa Fe Institute, SFI). «Сложностью называют состояние мира, который настолько многофункционален и изменчив, что обычными способами разобраться в его поведении невозможно. Обычные способы позволяют представить себе многие компоненты мира, но в случае более масштабных и комплексных явлений можно понять только общие принципы и схемы, но не детали».

Эта концепция имеет важное значение, поскольку природа бизнеса и ИТ-систем становится все сложнее. В течение ста лет наша производственная модель оставалась более или менее стабильной. Однако информационная эпоха в корне изменила ситуацию. Сейчас никто не может заранее сказать, какие именно новые технологии появятся и настолько быстро. Никто не может точно предсказать, как это повлияет на цепочки поставок и как отреагируют клиенты. Хороший бизнес-план — это лишь предположение.

Спутниковая связь, Internet и воздушный транспорт позволяют быстро переносить корпоративные ресурсы с места на место. Теперь взаимодействие может осуществляться через глобальный рынок интерактивных клиентов и поставщиков, партнерские соглашения в рамках цепочки поставки и международную франчайзинговую конкуренцию. Поскольку неопределенность растет экспоненциально из-за современной высокой скорости технологических изменений и следствий этого, такая ситуация серьезно влияет на глобальные рынки». Многие руководители пытаются реагировать на это, руководствуясь устаревшими соображениями и линейным причинно-следственным мышлением. Зачастую, их реакция будет лишь быстрее приближать крах компании. Несмотря на хорошо продуманные планы и благонамеренные действия, компания, которая в своей работе не использует знания о сложных системах, окажется не в состоянии адекватно реагировать на все возрастающую сложность мира бизнеса.

Основные вопросы

В любом разговоре о сложных системах, как правило, затрагиваются следующие фундаментальные идеи.

  1. Агенты. Это главная идея. В сложных системах существуют автономные объекты, которые взаимодействуют друг с другом при выполнении своих определенных задач.
  2. агенты приспосабливаются - они должны иметь возможность реагировать на свою среду и, возможно, изменять свое поведение на основе полученной информации.
  3. Сложные системы также характеризуются своими возникающими структурами. Возникающая структура - это логически связанная схема, которая формируется в результате взаимодействия между агентами. Например, процесс формирования всей колонии муравьев не был запрограммирован. Он возник из некоторого простого правила, запрограммированного для каждого муравья. Другими словами, возникающая структура - продукт деятельности индивидуальностей, а не срежессированный результат. Результаты функционирования возникающей структуры могут быть как положительными, так и отрицательными, в силу чего их необходимо анализировать при разработке систем на базе агентов.
  4. Успешные системы с возникающими структурами часто существуют на грани порядка и хаоса. Если любой организм или организация все время упорядочены или всегда находятся в состоянии хаоса, это предвестник гибели. Однако для существования объекта промежуточное состояние необходимо.
  5. Нужно учиться у природы. Она уже миллиарды лет решала серьезные комбинаторные задачи, поэтому при создании систем на базе агентов, имеет смысл рассматривать паразитизм, симбиоз, репродукцию, генетику, митоз и естественный отбор. К примеру, British Telecom использует модель муравьев и феромонов в своей сети направления звонков, где успешные звонки оставляют своего рода эквивалент феромону, влияющий на последующие звонки.

Агенты и возникающие структуры

Агенты могут работать как неинтерактивные особи или как коллектив. Когда агенты работают индивидуально и почти никогда не взаимодействуют друг с другом, то ситуация весьма проста: агенты лишь делают то, о чем вы их просите. К примеру, один агент-»личинка» отправляется на поиск самых дешевых авиабилетов. Однако иногда может произойти нечто новое, что-то большее, чем сумма действий отдельных участников. Биржи ценных бумаг, иммунные системы и колонии муравьев — все это примеры агентов, действующих индивидуально, а при взаимодействии этих агентов возникают новые явления. В случае биржи ценных бумаг, тысячи агентов действуют независимо, покупая и продавая конкретные акции и боны. Из этого независимого поведения и возникает напоминающий организм продукт, называемый биржей ценных бумаг. Другими словами, рост и падение на бирже не управляется центральным процессом: они становятся результатом взаимодействия агентов. Крах рынка ценных бумаг в 1929 году был результатом действия отдельных людей-агентов, а не руководящего центра. Крах в октябре 1987 года частично стал результатом действий программных агентов, которые покупали и продавали ценные бумаги в соответствии с запрограммированными правилами. Биржа ценных бумаг, ее крах, временный спад, взлеты и падения, — все это нечто большее, нежели сумма составляющих; это объект, заслуживающий внимания сам по себе. Такие объекты называют возникающими структурами. Колонии муравьев — возникающие структуры, которые появляются в результате интерактивных действий отдельных муравьев. Иммунная система возникает как результат коллективного поведения таких агентов, как антигены, T-клетки, B-клетки, NK-клетки, иммуноглобулин, лимфатические узлы и селезенка. Еще одним примером возникающих структур могут служить семьи, организации, общества, рынки, стаи птиц и транспортные пробки. В ИТ-системах к ним могут относиться системы цепочек поставки, планирования, торговли и электронной коммерции.

Возникновение

Рис. 2. Локальное взаимодействие можно поднять до уровня глобальной динамики, создавая логически связанную структуру
Возникновение — это существование логически связанной схемы, которая формируется как результат взаимодействия между агентами (рис. 2). Возникновение характеризуется несколькими свойствами.

  1. В возникающих структурах агенты организуются в целое, которое больше, чем просто сумма составляющих. Части сами по себе не приводят к возникновению структур - необходимо их взаимодействие. Отдельные агенты-личинки не породят возникающую структуру; среда с множеством агентов, такая как система обслуживания торговых операций, поддерживаемая множеством взаимодействующих агентов, может обладать свойствами возникновения.
  2. Простые правила могут генерировать логически связанное новое явление. Например, каждый муравей в колонии имеет очень простые правила, и из этих простых правил может появиться достаточно обширная колония. Агент закупки или поставки тоже может иметь простые правила, приводящие к возникновению новой системы обслуживания склада.
  3. Большинство систем с возникающими структурами порождаются снизу вверх, а не сверху вниз. Обычный инженер, как правило, разрабатывает систему сверху вниз. Этот подход может оказаться весьма полезен, но при определенных обстоятельствах. В живом мире большинство систем возникают из популяции более простых систем. Разработка плана повседневных операций сверху вниз прекрасно подходит для деятельности прогнозируемых организаций. В менее прогнозируемой среде планы сверху вниз легко могут устареть буквально за несколько минут, и здесь подход снизу вверх на базе агентов может привести к очень эффективной возникающей структуре.
  4. Устойчивые возникающие структуры могут стать компонентами более сложных возникающих структур. Другими словами, может быть сформирована иерархия возникающих структур. Именно таким образом природа добивается масштабируемости; любая ИТ-организация может использовать тот же самый механизм.
  5. Агенты и их возникающие структуры могут формировать двунаправленную связь. Агенты способны порождать возникающую структуру, которая может влиять на составляющих ее агентов. Например, биржа ценных бумаг - это возникающая структура отдельных покупателей и продавцов; кроме того, взлеты и падения на таких биржах могут влиять на возможности покупки и продажи их отдельных участников.
  6. Явления возникновения - это, как правило, устойчивые схемы с меняющимися компонентами. Птицы в стае или автомобили в транспортной пробке могут измениться, а стая и транспортная пробка сохранятся. Покупатели и продавцы в цепочке поставки компании меняются часто, и участники в системе планирования могут каждый день быть разными.
  7. Множества агентов могут быть гомогенными или гетерогенными. Возникающая структура может быть порождена благодаря взаимодействию одинаковых агентов. Однако значительно чаще это происходит в результате действий различных видов агентов, которые функционируют в обществе или в экосистеме. Более крупные организации используют гетерогенность за счет специализации корпоративных ресурсов, определяя различные функции и организуя бизнес-подразделения.
Больше, чем сумма частей

Если рассуждать упрощенно, целое — это просто сумма его частей. Более того, каждую часть можно изучать независимо. Однако сами по себе части не порождают возникающую структуру. Возникающие структуры также требуют коллективного поведения и взаимодействия их компонентов. Кроме всего прочего, возникающие структуры — это процесс, и главное в этом процессе — их форма, а не части. Семьи, организации, общества, финансовые рынки, стаи мальков и транспортные пробки — примеры такого явления. Большое количество невзаимодействующих программ глобального поиска в Web не порождают возникающую структуру. Однако когда экосистема программных агентов цепочки поставки покупает и продает товары и услуги через Web, может возникнуть «сеть поставки» [2]. Сеть поставки ведет себя как финансовый рынок, который порождает возникающую структуру. Это возможно благодаря системе торгов и моделированию на базе агентов.

Простые правила агентов могут породить возникающие структуры

Распространенный пример того, как простые правила порождают возникающую структуру — это стая птиц. Каждое движение стаи настолько прекрасно, что кажется, будто его специально срежессировали. Более того, движения стаи кажутся более плавными, чем движения любой птицы. Однако стая не имеет никакого управления высокого уровня или даже птицы-вожака. Каждая птица следует простому набору правил, которые она использует для взаимодействия с птицами, находящимися вблизи нее. В моделировании поведения стаи в StarLogo, птицы руководствуются всего тремя следующими правилами.

  1. Если ты оказалась далеко от других птиц, следуй к ближайшей из них.
  2. Если ты можешь врезаться в другую птицу, поверни в сторону.
  3. В противном случае, лети в том же направлении, что и ближайшая к тебе птица.

Используя эти три простые правила, ни одна из птиц не представляет себе поведения всей стаи. «Птица впереди» — это просто позиция данной птицы в данный момент и через несколько минут ее заменят другие. Таким образом ведут себя не только стаи птиц: рои пчел, колонии муравьев, трафик на автостраде, Web и феномен Кремниевой долины — примеры схем, которые определяются взаимодействием локальных компонентов, а не централизованным управлением. Сложное поведение не обязательно имеет сложные причины.

Сверху вниз или снизу вверх

Эффективность многих продуктов, которые мы используем в повседневной жизни, достигается в первую очередь за счет инжиниринга сверху вниз. Однако большинство явлений возникновения, с которыми мы сталкиваемся, являются не результатом проработки сверху вниз, а, наоборот, итогом децентрализованных, или выполняющихся снизу вверх, процессов. К примеру, стая птиц возникает без организатора и строит свое поведение без координатора. Сейчас многие провайдеры ресурсов и производители используют возможности применения децентрализованного подхода. Многие из таких организаций уже внедряют решения, которые заменят их централизованные, оптимизированные на глобальном уровне операции на распределенные, самоорганизующие и локальные. Как заметил Джонн Холланд, профессор университета штата Мичиган, двухнедельный запас продуктов питания в Нью-Йорке поддерживается только благодаря локально принимаемым решениями: этим начинают заниматься такие компании, как Boeing, John Deere& Company и Detroit Edison. И централизованный, и децентрализованный подходы — это полезные методы. Применение только одного из них ограничивает возможности системы, лишь человеческая склонность к централизации зачастую заставляет нас отказываться от рассмотрения децентрализованных решений. Когда люди видят схему, они считают, что схема управляется централизованным образом. Это не означает, что централизованные теории ошибочны, они лишь не всегда адекватны, т.к. централизованный агент — это критическая к ошибке точка, которая делает систему уязвимой к сбою. При нормальных условиях работы центральный агент легко может послужить причиной нехватки производительности. Даже если центральный агент адекватен выполняемым операциям, он определяет границы, за пределы которых система не может выйти. Что касается программных агентов, то они, как правило, концентрируют в себе функциональность и код по мере развития системы, не позволяют использовать все преимущества агентов и, со временем, становятся огромным программным артефактом, который трудно понять и который сложно поддерживать.

Возникающие структуры могут сами являться компонентами

Одна из наиболее сложных задач при создании автоматизированных систем — масштабируемость. Живые системы служат прекрасными примерами масштабируемости. К примеру, физические системы, порождающие живой организм — субатомарные частицы формируют атомы; атомы, объединяясь, создают молекулы твердых, жидких и газообразных тел. Если продолжить эту иерархию, молекулы могут быть организованы в органоиды, которые, в свою очередь могут группироваться в клетки, клетки — объединяться в организмы и так далее. Другими словами, живые системы и их компоненты возникают в иерархии взаимозависимых механизмов. Если говорить об организациях людей, то здесь формируются аналогичные иерархии (рис. 3).

Рис. 3. Параллели между бизнесом и биологией

Экономики порождаются рынками, которые, в свою очередь, складываются из предприятий и так далее [4]. Возникновение — это тот самый раствор между блоками, позволяющий конструировать жизнеспособные структуры. Более того, новые структуры могут стать строительными блоками для еще более крупных структур, где каждый уровень иерархии существенно отличается от предыдущего и последующего. Такая иерархия взаимозависимых механизмов также представляет собой подходящую методику для автоматизированных агентов.

Агенты и их возникающие структуры могут формировать двустороннюю связь

Рис. 4. Локальное взаимодействие и глобальная динамика могут влиять друг на друга
Овации возникают, когда зрители подхватывают то, что кажется спонтанными синхронными аплодисментами. Никто этим процессом не руководит. Когда кто-то начинает хлопать, аплодисменты абсолютно неорганизованны. Каждый человек хлопает в своем ритме, отличающемся от ритма хлопков другого зрителя. В конце концов группа людей начинает хлопать в одном и том же темпе. Люди в зале чувствуют возникающий ритм и приспосабливают свои хлопки к нему. Возникающий ритм аплодисментов становится все более четким по мере того, как его подхватывает все больше людей. В конце концов, все зрители хлопают синхронно. Весь этот процесс может занять несколько секунд, несмотря на то, что в нем участвуют тысячи людей. Каждый из зрителей подстраивает свой ритм хлопков к тем аплодисментам, которые он слышит. Другими словами, локальное взаимодействие может породить глобальную динамику, а глобальная динамика, в свою очередь, может влиять на локальное взаимодействие. Подобный эффект проявляется и в бизнес-системах. Ситуация на рынке ценных бумаг меняется в зависимости от поведения покупателей и продавцов акций, и влияет на поведение этих покупателей и продавцов. Рынок автомобильных запчастей, созданный как совместное предприятие GM, Ford и DaimlerChrysler, будет испытывать на себе влияние покупателей и продавцов запчастей и, в свою очередь, сам будет влиять на них. Как показано на рис. 4, возникающие структуры могут быть «привязаны» к взаимодействию своих локальных агентов.

Эта связь влияет на граничные условия локальных агентов. Локальные агенты могут затем настраиваться в соответствии с имеющейся глобальной динамикой. Как следствие, условия, в которых работают агенты, могут измениться.

Возникающие структуры могут иметь меняющиеся компоненты

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

Гомогенные и гетерогенные множества агентов

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

В гетерогенных колониях агенты различаются как по структуре, так и по поведению. К примеру, иммунная система возникает в результате коллективного поведения таких агентов, как антигены, T-клетки, B-клетки, NK-клетки, иммуноглобулины, лимфатические узлы и селезенка. T-клетки и B-клетки не только выполняют разные функции, но и их структура и поведение отличаются настолько существенно, что можно говорить о гетерогенности.

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

Заключение

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

  1. Вы контролируете действия частей, но не целого.
  2. Вы действуете как проектировщик, но итоговую схему не проектируете.
  3. Самоорганизующиеся схемы создаются без центрального руководства со стороны разработчика.
  4. получения "критической массы" нужно иметь достаточное количество агентов, действующих параллельно: колония из десяти муравьев маловата.
  5. Части должны взаимодействовать, параллелизма недостаточно. При отсутствии взаимодействий интересное поведение на уровне колонии никогда не проявится.
  6. Стая - это не одна большая птица, а транспортная пробка - не просто множество автомобилей.
Литература
  1. Kelly, Susanne, and Mary Ann Allison: The Complexity Advantage: How the Science of Complexity Can Help Your Business Achieve Peak Performance, McGraw-Hill, New York, 1999.
  2. Roy, Beau, Using Agents to Make and Manage Markets Across a Supply Web, Complexity, 3:4, 1998, pp. 31-35.
  3. Resnick, Mitchel, Unblocking the Traffic Jams in Corporate Thinking, Complexity, 3:4, 1998, pp. 27-30.
  4. Rothchild, Michael, Bionomics: Economy as Ecosystem, College Board, New York, 1995.

Джеймс Оделл (www.jamesodell.com), консультант, автор книг и преподаватель, специализирующийся в области объектно-ориентированных и базирующихся на агентах систем, реинжиниринга бизнеса и сложных адаптивных систем.

Translated from «Agents and Complex Systems» by James Odell in Journal of Object Technology (JOT), vol.1, no. 2, pages 35-45. Translated into Russian for Open Systems Journal under special permission of the original publisher. Copyright JOT July-August 2002. Original article at http://www.jot.fm/issues/issue_2002_07/column3.