Text
                    Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

УЧЕБНИК

ДЛЯ

ВЫСШЕЙ

ШКОЛЫ

Ю. А. ИВАШКИН
МУЛЬТИАГЕНТНОЕ
МОДЕЛИРОВАНИЕ
В ИМИТАЦИОННОЙ СИСТЕМЕ SIMPLEX3


Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» УЧЕБНИК ДЛЯ ВЫСШЕЙ ШКОЛЫ Ю. А. ИВАШКИН МУЛЬТИАГЕНТНОЕ МОДЕЛИРОВАНИЕ В ИМИТАЦИОННОЙ СИСТЕМЕ SIMPLEX3 2-е издание, электронное Допущено Учебно-методическим объединением вузов по университетскому политехническому образованию в качестве учебного пособия для бакалавров и магистров высших учебных заведений, обучающихся по направлению 230100 «Информатика и вычислительная техника» Москва Лаборатория знаний 2020
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» УДК 519.47.07(075) ББК 72; 32; 81я73 И24 С е р и я о с н о в а н а в 2009 г. Р е ц е н з е н т ы: Доктор физ.-мат. наук, профессор, зав. кафедрой «Интеллектуальные технологии и системы» Московского государственного технического университета МИРЭА В. В. Нечаев Доктор техн. наук, профессор, зав. лабораторией «Интеллектуальные системы» Института проблем управления РАН Ф. Ф. Пащенко И24 Ивашкин Ю. А. Мультиагентное моделирование в имитационной системе Simplex3 : учебное пособие / Ю. А. Ивашкин. — 2-е изд., электрон. — М. : Лаборатория знаний, 2020. — 361 с. — (Учебник для высшей школы). — Систем. требования: Adobe Reader XI ; экран 10". — Загл. с титул. экрана. — Текст : электронный. ISBN 978-5-00101-905-3 В учебном пособии рассматриваются теоретические и практические основы мультиагентного имитационного моделирования динамических систем различной физической и социальной природы. Излагается концепция интеллектуального агента как имитационной модели поведения активного элемента в сложных ситуациях и стратегиях взаимодействия с другими активными элементами и средой для достижения цели. Описываются алгоритмы поведения агентов в различных условиях, агентные технологии идентификации и прогнозирования состояния мультиагентных систем, а также программная реализация моделей в универсальной имитационной системе Simplex3. Пособие предназначено для подготовки бакалавров и магистров по направлению 230100 «Информатика и вычислительная техника» по профилю «Автоматизированные системы обработки информации и управления», а также может быть рекомендовано для системных аналитиков и разработчиков компьютерных систем поддержки принятия решения. УДК 519.47.07(075) ББК 72; 32; 81я73 Деривативное издание на основе печатного аналога: Мультиагентное моделирование в имитационной системе Simplex3 : учебное пособие / Ю. А. Ивашкин. — М. : Лаборатория знаний, 2016. — 350 с. : ил., [8] с. цв. вкл. — (Учебник для высшей школы). — ISBN 978-5-906828-72-9. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации ISBN 978-5-00101-905-3 c Лаборатория знаний, 2016 ○
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» ПРЕДИСЛОВИЕ Данное учебное пособие по изучению агентных технологий моделирования больших активных систем различной физической и социальной природы подготовлено в результате многолетнего сотрудничества автора с кафедрой «Исследование операций и теория систем» университета Пассау (Германия), возглавляемой проф. Б. Шмидтом, а также чтения лекций по курсам «Системный анализ», «Теория принятия решения» и «Моделирование систем» в Московском государственном университете прикладной биотехнологии (МГУПБ) и специализированных дисциплин «Агентные технологии» и «Мультиагентное моделирование систем» в Московском физико-техническом институте (государственном университете). В общей концепции интеллектуального агента и агентных технологий имитации взаимодействия динамических объектов в направлении достижения цели предлагается метод структурно-параметрического моделирования интеллектуальных агентов и мультиагентных систем с алгоритмами идентификации и прогнозирования состояния агентов, а также программная реализация мультиагентных имитационных моделей производственных, социальных и маркетинговых систем. Для программного описания агентов и реализации мультиагентных моделей c обработкой и представлением результатов в различных формах предлагается универсальная имитационная система Simplex3 с объектно-ориентированным языком описания моделей Simplex-MDL, представленным в книге Б. Шмидта «The Art of Modelling and
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 4 Предисловие Simulation». SCS-Europe BVBA, Chent, Belgium 2001, переведенной автором в 2003 г. на русский язык с научным редактированием в соавторстве с проф. В. Л. Конюхом (Новосибирский государственный университет). Некоммерческая имитационная система Simplex3, разработанная содружеством университетов Германии в середине 90-х гг. XX столетия для учебного процесса и научных исследований, позволяет простыми языковыми средствами осуществить построение агентно-ориентированных моделей больших и сложных систем в различных сферах деятельности с индивидуальной возможностью реализации их в предоставляемой среде экспериментирования, организации эксперимента и обработки результатов. В связи с этим особое внимание уделено разработке и реализации мультиагентных моделей активных логистических производственных и маркетинговых систем, стратегий кооперативного и антагонистического взаимодействия агентов в социальных средах, а также агентно-ориентированному моделированию живых биологических систем в универсальной имитационной системе Simplex3. Раздел 8.3.2. «Мультиагентная иерархическая модель биологической клетки» написан в соавторстве с кандидатом технических наук Ю. Л. Гордеевой. Автор выражает благодарность кандидатам наук А. Ю. Ивашкину, Е. А. Назойкину, Л. А. Овчинниковой, А. В. Щербакову, а также выпускникам кафедры компьютерных технологий и систем МГУПБ, системным аналитикам А. А. Данилиной, С. С. Лобачевой, Е. А. Рогожкиной, Е. А. Торсуковой, Е. А. Ярковой, Л. О. Яковлевой и другим за совместную работу и творческое участие в разработке и реализации мультиагентных моделей в универсальной имитационной системе Simplex3.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» ВВЕДЕНИЕ Агентные технологии связаны с понятием интеллектуального агента, как некоторого интеллектуального робота (активного элемента), целенаправленно взаимодействующего с другими подобными элементами и внешней средой в заданных условиях. По определению под интеллектуальным агентом понимается имитационная модель активного элемента, состояние и поведение которого в различных ситуациях достижения цели изменяются в зависимости от состояния и поведения других агентов и среды по аналогии с интеллектуальным поведением живого организма (в том числе человека) в подобных условиях. Таким образом, агентные технологии связаны с имитацией взаимодействия интеллектуальных агентов – активных элементов динамических систем любой физической, биологической и социальной природы. Поведение и изменение состояния таких систем являются результатом пошагового взаимодействия множества ее активных элементов, характером отношений и связей между ними, условиями достижения локальной и глобальной целей и т. п. В этом случае формализация и моделирование процессов поведения и взаимодействия агентов позволяют имитировать и прогнозировать возникновение качественно новых состояний системы и оценить возможности достижения цели при разных альтернативах, а также обосновать принятие решений в сложных ситуациях риска, неопределенности и конфликта.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 6 Введение Решение подобной задачи аналитически или методами математического программирования с пошаговым изменением целевых функций и ограничений для каждого агента в зависимости от изменения ситуации и приближения к цели в большинстве случаев невозможно. Это обусловлено неполной, нечеткой или ошибочной информацией о состоянии и поведении активных элементов системы. Агентноориентированная имитация открывает новые возможности идентификации и прогнозирования состояния и поведения активной системы любой физической, социальной и биологической природы, являющейся результатом многошагового взаимодействия многих активных элементов системы и окружающей среды. Множество взаимосвязанных агентов с индивидуальными характеристиками и поведением в какой-либо активной среде образует некоторую мультиагентную систему, воспроизводящую динамику взаимодействия и состояния агентов в процессе достижения общей и частных целей. Мультиагентное имитационное моделирование активных систем — это новая концепция интеллектуальных информационных технологий. Она ориентирована на совместное использование моделей и методов естественного и искусственного интеллекта для виртуального исследования, идентификации и прогнозирования состояния и поведения активных систем в заданной среде. Принципиальным отличием новой концепции моделирования является введение и формализация сенсорных связей (переменных) между взаимодействующими активными элементами динамической системы. Эти связи определяют изменение состояния и поведения взаимодействующих агентов и системы в целом в направлении «выживания» и достижения целей в сложных ситуациях согласия и противодействия, начальной неопределенности, риска и конфликта, неполной и нечеткой информации о степени достижения цели. Вопросы теории интеллектуальных агентов и агентноориентированной имитации в различных областях разрабатываются с начала 90-х гг. прошлого столетия и нашли отражение в работах отечественных ученых: В. Н. Буркова [3],
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Введение 7 В. А. Виттиха [1, 6], Г. П. Виноградова [5], В. И. Городецкого [7–9], Ю. А Ивашкина [10–18], И. В. Котенко [8,22], Д. А. Новикова [3, 24], Д. А. Поспелова [25], П. О. Скобелева [31], Б. В. Соколова [26], В. Б. Тарасова [34], а также в работах зарубежных авторов: P. Baillie [41], A. J. Fougeres [44], F. Lopes [48], B. Schmidt [51–53], M. Toleman [41], Cr. Urban [54], H. Weppner [55] и др. Однако практическая разработка мультиагентных систем является сложной задачей из-за трудностей в создании виртуальных сред функционирования агентов и собственно самих агентов. Поэтому многие работы по агентно-ориентированному моделированию имеют описательный характер и в конечном итоге сводятся к решению совокупности отдельных задач оптимизации, логистики и исследования операций без учета факторов динамического взаимодействия автономных агентов. В данной книге предлагаются определенные возможности преодоления указанных трудностей с помощью универсальной имитационной системы Simplex3 с объектноориентированным языком моделирования Simplex-MDL, средой эксперимента и обработки результатов. Система Simplex3, разработанная в университетах Нюрнберг–Эрланген, Пассау и Магдебург (Германия) под руководством проф. Б. Шмидта, является некоммерческим программным продуктом объектно-ориентированного моделирования. Она в полной степени может быть использована для создания моделей интеллектуальных агентов с описанием их состояния, поведения и взаимодействия в реализации агентных технологий идентификации и прогнозирования достижения общей и частных целей функционирования больших и сложных систем на основе алгоритмов принятия решений и искусственного интеллекта. Модели агентов, описываемые на языке Simplex-MDL, содержат естественное декларирование параметров состояния агента и сенсорных, транзитивных и случайных переменных, а также описание динамики поведения агентов с процедурами принятия решения и выбором стратегий на очередном шаге взаимодействия.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8 Введение Простота синтаксических конструкций непрерывного и дискретно-событийного описания поведения агентов с внутренними и внешними процедурами и их объединения в мультиагентную модель делает универсальную имитационную систему Simplex3 эффективным инструментарием индивидуального обучения искусству моделирования и имитации сложных ситуаций в научных исследованиях и образовательном процессе подготовки системных аналитиков.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Глава 1 ОБЩАЯ КОНЦЕПЦИЯ ИНТЕЛЛЕКТУАЛЬНОГО АГЕНТА И МУЛЬТИАГЕНТНОЙ СИСТЕМЫ 1.1. Понятие и виды интеллектуальных агентов «Агент» как развитие известного понятия «объект» является, по определению Международной ассоциации по лингвистике FIRA, «сущностью, которая находится в некоторой среде, интерпретирует ее и исполняет команды, воздействующие на среду» (октябрь 1996 г., Токио). Агент — это программный модуль, способный выполнять заданные ему функции некоторого живого или кибернетического организма в зависимости от функций другого агента и воздействий активной среды. В соответствии с уровнем искусственного интеллекта и способом поведения агенты могут быть классифицированы на следующие основные типы: 1) рефлексивные агенты — характеризуются физическим и социальным состояниями; имеют простое поведение в виде реакций на текущие изменения среды и информацию от других агентов по продукционным правилам «условие — действие»; 2) знание-ориентированные агенты — имеют физическое, социальное и когнитивное состояния; их поведение основано на априорных знаниях окружающей среды, идентификации ситуации и принятии решения для достижения цели; 3) целенаправленные обучаемые интеллектуальные агенты — располагают заданной базой знаний и иерархией целей, банком моделей поведения и стратегий достижения цели в условиях неопределенности, риска и противодействия;
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 10 Глава 1. Общая концепция интеллектуального агента 4) самообучающиеся целеустремленные агенты — способны накапливать знания на основе большого объема данных и онтологии событий в процессе взаимодействия с другими агентами и окружающей средой, адаптироваться к ситуации, выбирать стратегию достижения выбранной цели и оценивать степень ее достижения; 5) эмоционально-мотивированные агенты — обладают, наряду с вышеописанными «способностями» предшествующих классов, эмоциональным состоянием и психотипом в моделях поведения человека. Критерием интеллектуальности агента является степень полноты и глубины априорной базы знаний, стратегий и алгоритмов целеустремленного поведения в условиях неопределенности, риска и конфликта. Общий алгоритм поведения интеллектуального агента в динамической ситуации, требующей принятия решения, показан на рис. 1.1. Поведение агента описывается, как некоторая итерационная процедура переработки данных о состоянии других агентов и среды с выбором стратегии целенаправленных действий, и представляется последовательностью операций в дискретные временны^е периоды — временные события. Каждой операции соответствует свой алгоритмический и свой программный модули, обеспечивающие: 1) восприятие информации и накопление знаний об окружающей среде и среде взаимодействия или конфликта (сенсорный модуль); 2) механизм взаимодействия и обработки данных от контрагентов; 3) анализ собственного состояния и состояния контрагентов с выбором или коррекцией целевых функций (интеллектуальный модуль); 4) принятие автономных решений и выбор стратегий. Поведение агента можно представить некоторой рекурсивной формой, которая описывает нахождение и выбор на очередном шаге функции перехода от исходного состояния к новому состоянию в направлении улучшения целевой функ-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.2. Функциональная структура интеллектуального агента 11 Рис. 1.1. Общий алгоритм поведения интеллектуального агента ции. Подобная задача в отдельных случаях может быть решена методами математического программирования с коррекцией целевой функции и индивидуальных ограничений на очередном шаге изменения состояния агента в зависимости от ситуации и приближения к цели в условиях неопределенности и нечеткой информации. 1.2. Функциональная структура интеллектуального агента Функциональная структура агента с простым поведением может быть представлена в виде компонентной схемы
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 12 Глава 1. Общая концепция интеллектуального агента (рис. 1.2) с так называемой PSS-структурой (Physic-Social Status) [52, 54]. PSS-структура включает базовые компоненты его физического (Physic) состояния и социального статуса (Social Status), а также функциональные компоненты Sensor (сенсорная информация), Perception (восприятие) и Behaviour (поведение) агента. Рис. 1.2. Компонентная схема рефлексивного агента с простым поведением Компонент Sensor воспроизводит внешние раздражители и сигналы из окружающей среды Environ variables, например изменение температуры, давления, освещенности, качества воздуха и социальных факторов, и передает форматированные сообщения и сигналы Physic and Soсial Stimuli другим компонентам состояния и поведения агента как сенсорные переменные Sensor variables. Компонент Perception служит для идентификации текущей ситуации и состояния агента на основе входящей информации Physic and Soсial state variables о среде, физиче-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.2. Функциональная структура интеллектуального агента 13 ском и социальном состоянии агента, а также стратегии его поведения. По сенсорным каналам компонент Perception связан с компонентами Physic и Social Status, где новая информация интегрируется с прежним состоянием агента. Компонент Physiс учитывает физическое состояние и характеристики агента, изменяющиеся в текущей ситуации в зависимости от внутренних связей и внешней информации, поступающей от компонентов Sensor, Perception и Social Status. На изменение физического состояния агента влияют также выполняемые им действия и реакции, моделируемые внутри компонента Behaviour и передаваемые по сенсорным каналам компоненту Physic. Компонент Social Status строится и функционирует аналогично компоненту Physic. Он описывает социальное состояние агента в его взаимодействии с другими подобными агентами в достижении общей цели. Компонент Behaviour реализует выбор процедур поведения агента в зависимости от его внутреннего физического и социального состояния и внешних связей Input connections и осуществляет «принятие решения» в возникшей ситуации. Содержащиеся в компоненте Behaviour алгоритмы действий агента могут быть активированы многократно в заданные моменты времени. Условия активизации определяются переменными состояния компонентов Physic и Social Status и продукционными правилами реактивного поведения агента в возможных ситуациях. Описанная компонентно-ориентированная модель PSSагента (см. рис. 1.2) представляет общую конструктивную схему рефлексивных агентов с простым поведением в среде выживания. При моделировании знание-ориентированных и эмоционально-мотивированных агентов с базой знаний, множеством целей и стратегий их достижения в условиях неопределенности и самообучения, рассмотренная модель дополняется компонентами интеллектуального (Cognition) и эмоционального (Emotion) состояний агента (рис. 1.3). Компонент Cognition воспроизводит и реализует интеллектуальные возможности агента в процессах обработки и на-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 14 Глава 1. Общая концепция интеллектуального агента Рис. 1.3. Компонентная схема знание5ориентированного агента копления информации о внешнем окружении и внутреннем состоянии агента, выборе целей и стратегий поведения, планировании и оценке действий в ходе процесса обучения на опыте прошлого и принятия текущих решений. После исполнения определенных действий, изменяющих внутреннее состояние агента или его окружающей среды, в компоненте Cognition происходит оценка степени достижения цели. В случае негативного результата выбирается новая стратегия приближения к желаемому целевому состоянию. В процессе «жизнедеятельности» память наполняется реализованными планами действий, которые агент может использовать позднее при выборе своего поведения. От компонента Perception на сенсорные входы Cognition может быть вызвана дискретная информация о состоянии окружающей среды, а также актуальная информация о физическом, эмоциональном, когнитивном и социальном состояниях агента, которые обрабатываются в процессах идентификации ситуации. Вместе с тем компонент Cognition в рамках рефлективной динамики связан с внутренним состоянием компонента Behaviour и может считывать информацию о мотивах деятельности, представляющих исходные данные для когни-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.3. Эмоционально$мотивированный интеллектуальный агент 15 тивных процессов, а также ответные сообщения о принятых решениях и выбранном плане действий. Динамика состояния компонента Cognition связана с процедурами актуализации знаний и выбора стратегий достижения целей на основе внутренней и внешней информации, генерации и накопления новых знаний, расчета когнитивных переменных состояния агента. Компонент Emotion отражает эмоциональное состояние агента и его влияние на восприятие текущей ситуации и поведение при определенных физических, когнитивных и социальных факторах. Этот компонент описывается переменными эмоционального состояния агента, принимающими дискретные и непрерывные значения в зависимости от временных и условных событий и психотипа агента. В текущих ситуациях эмоциональное состояние может изменяться скачкообразно или непрерывно, вызывая различные эмоциональные реакции агента на поступающую информацию, действия других агентов, состояние физической или социальной среды. С включением компонента Emotion, описанная функциональная структура интеллектуального агента представляет концептуальную модель эмоционально-мотивированного интеллектуального поведения человека в различных условиях. 1.3. Эмоционально5мотивированный интеллектуальный агент Общее состояние агента формализуется на основе параметрических описаний его интеллектуального, эмоционального, психофизиологического и социального состояний в окружающей среде. Из перечисленных областей описания наиболее слабоформализованным является эмоциональное состояние агента, имеющее множество различных градаций от радости и эмоционального подъема до безразличия, беспокойства и страха в зависимости от факторов психофизиологического и интеллектуального состояний, а также текущей информации об удовлетворении желания и достижении цели [11].
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 16 Глава 1. Общая концепция интеллектуального агента Уровень положительных и отрицательных эмоций, усиливающих и уменьшающих биоэнергетический потенциал агента, коррелирует с количеством текущей информации, ее избыточностью или недостаточностью в оценке ситуации, а также степенью несоответствия между ожидаемым и достигнутым результатами [32, 33]. Изменение эмоционального состояния Е может оцениваться в балльной шкале от максимума положительных до максимума отрицательных эмоций и является некоторой функциейот изменения энтропии H достижения цели: Е =  [Ht (z) – H0(z)], (1.1) где Ht (z) и H0 (z) — текущая и начальная энтропии достижения цели, обусловленные неопределенностью ситуации с множеством альтернатив и исходов принятия решения. Исходная энтропия достижения цели H0 (z) характеризует начальную неопределенность и сложность принятия решения по достижению цели и оценивается агентом на основе априорной базы знаний, концептуальной модели и других характеристик его интеллектуального состояния. Неопределенность ситуации возникает при множестве возможных состояний, случайности факторов и отсутствии полной информации и оценивается энтропией параметров состояния агента x и его целевой функции z как H(x, z) = H(x) + H(z), (1.2) где n mi H  x     P  xik   log 2 P  xik  — энтропия параметров соi 1 j 1 стояния X с вероятностями P(хik) k-го значения i-го параметра; m Ri H  z    P  z jk   log 2 P  z jk  — энтропия целевой функi 1 k 1 ции z; P (zik) — вероятность k-го уровня j-го фактора целевой функции.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.3. Эмоционально$мотивированный интеллектуальный агент 17 Исходная энтропия H0(z) является мерой оценки недостаточности исходных знаний для выбора наилучшей стратегии достижения цели. При известных вероятностях альтернатив Р(аi); i  1, n и условных вероятностях P  z j / ai  j-го исхода при i-й альтернативе H0(z) определяется по известной формуле: H0  z    P  ai   P  z j / ai   log 2 P  z j / ai  . n m i 1 j 1 (1.3) Текущая энтропия Ht (z) зависит от информации, которую агент получает в текущий момент времени или после очередного шага продвижения к цели. Из формулы (1.1) видно, что уменьшение энтропии Ht(z) по отношению к H0(z) подтверждает правильность движения в направлении цели и вызывает положительное изменение эмоционального состояния Е, соответствующее положительным эмоциям — радости и самоутверждению в дальнейшем продвижении к желаемой цели, а увеличение — возникновение отрицательных эмоций — Е с увеличением эмоциональной напряженности ожидания, депрессии, разочарования и страха. При Ht(z) = 0 достигается максимум положительной эмоции хорошего настроения и удовлетворения в связи с достижением цели. При Ht(z) = H0(z) агент не получает новой информации и его эмоциональное состояние не изменяется. В случае повторения данной ситуации информация становится избыточной и в конечном итоге вызывает отрицательный эмоциональный эффект. В общем случае все множество положительных и отрицательных эмоций отражается точкой в многомерном пространстве с координатами ei (i =1,15) эмоциональных составляющих [41]: счастье, грусть, злость, скука, сомнение, надежда, страх, интерес, презрение, отвращение, разочарование, удивление, гордость, стыд, чувство вины, определяющих в балльной шкале 15-мерный вектор эмоционального состояния агента с модулем
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 18 Глава 1. Общая концепция интеллектуального агента E n e 2 i . i 1 (1.4) При этом каждая i-я координата n-мерного эмоционального пространства является функцией (1.1) от текущей энтропии цели Z. Изменение вектора эмоционального состояния в n-мерном пространстве имеет вид: E  n  i 1 2 i  Ht  z   H0  z   , (1.5) где  — функция изменения i-й составляющей ei эмоционального состояния от изменения энтропии достижения цели. Каждой точке эмоционального пространства соответствует конкретная эмоциональная реакция агента. Бесконечное множество возможных реакций на событие в текущий момент времени t можно кластеризировать по шести видам отношения к событию Qi,t; i = 1,6, а именно: удовольствие, ожидание, готовность к действию, уверенность, созерцательность, ответственность, с принятием соответствующего решения к дальнейшим действиям. Эмоциональная реакция i–го вида определяется множественной регрессией ее интенсивности от значений координат ei ; i =1,15 точки эмоционального пространства (ЭП): mi Qi  p i 0   p ij e j ; i = 1,6 (1.6) j 1 или mi Qi   p ij e j ; i = 1,6, (1.7) j 1 где mi — число эмоций, имеющих сильную корреляционную связь с i-й областью эмоциональной реакции агента; pi0, pi1, … , p imi — коэффициенты линейной множественной регрессии.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.3. Эмоционально$мотивированный интеллектуальный агент 19 Экспертные оценки от 0 до 1 координат эмоционального пространства и эмоциональной реакции накапливаются в результате заполнения анкет (табл. 1.1) так, что суммы оценок эмоционального состояния (выделенных курсивом) и видов реакции равны 1. Таблица 1.1 Экспертные оценки эмоционального состояния и эмоциональной реакции агента Безразличие Ожидание Созерцательнось Уверенность Удовольствие Вина Гордость Удивление Разочарование Интерес Страх Надежда Сомнение Скука Дата Грусть № Дискомфорт Эмоциональная реакция Эмоциональное состояние агента 1 2 … … По экспертным оценкам (см. табл. 1.1) и экспериментальным данным рассчитываются коэффициенты корреляции между величиной i-й реакции и j-й координатой точки эмоционального пространства: rij  1 n ( Qki  Q i ) ( ekj  e j ) ; i  1, 6 ; j  1,15 ,  n  1 k 1 SQ2 Se2 i (1.8) j где Qi , Qki — математическое ожидание величины i-й эмоциональной реакции агента и наблюдаемая реакция в k-м наблюдении; e j , ekj — математическое ожидание и величина j-й эмоциональной координаты в k-м наблюдении в балльной шкале.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 20 Глава 1. Общая концепция интеллектуального агента Далее, выделяя для каждой реакции группы сильно связанных координат (rij  0,6), рассчитываются коэффициенты pi0, pi1, … , p im j линейной множественной регрессии i-й реакции от координат эмоционального пространства. Для максимального значения ожидаемой величины i-й эмоциональной реакции агента Qi max определяется эмоциональномотивированный шаг продвижения агента к цели, достижению согласия, разрастанию конфликта и другим событиям. Таким образом, при известных или задаваемых функциях i (1.5) после очередного события по формулам (1.4), (1.5) определяется модуль и координаты вектора эмоционального состояния агента и затем по (1.6) — область наиболее интенсивной эмоциональной реакции Qi max, обусловливающей дальнейшие его действия. Одним из главных факторов, влияющих на изменение эмоционального состояния агента и его эмоциональную реакцию на конкретную ситуацию, является психотип агента: 1) сильный, уравновешенный, подвижный (сангвиник); 2) сильный, уравновешенный, инертный (флегматик); 3) сильный, неуравновешенный, подвижный (холерик); 4) слабый, неуравновешенный (меланхолик). Каждому отдельному типу темперамента свойственны свои характерные особенности. Агент-сангвиник обладает большой скоростью реакции с высокой сопротивляемостью трудностям и противодействию, легко переключается с одной стратегии на другую; в стрессовой ситуации действует активно, сохраняя самообладание. Агент-флегматик обладает сильной, уравновешенной, но инертной нервной системой; на внешнее воздействие реагирует медленно, неразговорчив, уравновешен, хорошо противостоит сильному и продолжительному воздействию, но не способен быстро реагировать в неожиданных ситуациях; не любит менять привычки и стратегии поведения; трудно приспосабливается к новым условиям и колеблется, принимая решение.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.3. Эмоционально$мотивированный интеллектуальный агент 21 Агент-холерик характеризуется преобладанием возбуждения над торможением, вследствие чего он быстро и часто необдуманно реагирует на внешнее воздействие; нетерпелив, ожидание выводит его из себя; в критические моменты работает долго и неудержимо; характерная черта — непостоянство, поведение агента-холерика в условиях неопределенности непредсказуемо. Агент-меланхолик чувствителен даже к слабым отрицательным воздействиям, а сильный раздражитель может вызвать срыв; его настроение очень изменчиво, и даже незначительный повод может вызвать обиду, слезы; часто грустен, подавлен, не уверен в себе, тревожен. Эмоциональное состояние агентов выделенных типов отражается в динамике их поведения особенно в условиях неопределенности, риска и противодействия, а также в переговорных процессах с другими агентами, вызывая страсть, удовольствие, страх, боль и другие составляющие. Взаимодействие «сангвиник — холерик» может перерасти в конфронтацию и соперничество за лидерство. Согласие достигается за счет взаимных уступок и гибкого отхода сангвиника от возможного конфликта. Во взаимодействии «холерик — флегматик» каждый агент дополняет друг друга. Флегматик может уступить взрывному и непредсказуемому настроению холерика, если дело не касается принципиальных моментов. Отношения психотипов «меланхолик — сангвиник», дополняющих друг друга как противоположности, при взаимном положительном восприятии могут быстро приводить к согласию. В переговорных процессах «меланхолик — флегматик» меланхолику может не нравиться медлительность и пассивность флегматика, а флегматику — повышенная тревожность и излишнее беспокойство меланхолика. В случае взаимодействия «сангвиник — флегматик» при социальной активности сангвиника и трудолюбии и основательности флегматика стороны чувствуют практическую необходимость друг в друге. Обычно в этой связке сангвиник лидирует, а флегматик оказывается ведомым.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 22 Глава 1. Общая концепция интеллектуального агента Наконец, контакт «меланхолик—холерик» представляет партнерство, в котором властный холерик быстро подчиняет робкого и тихого меланхолика. Суждения холерика больно задевают чувствительного меланхолика. Отсюда возникают напряжение, дискомфорт, взаимные обвинения. Согласие достигается лишь в ситуациях, когда холерик может опекать или брать под свою защиту меланхолика. Вербальные описания особенностей состояния и взаимодействия четырех типов агентов могут быть формализованы в переменных состояния и поведения эмоционально-мотивированных интеллектуальных агентов. Во многих случаях взаимодействие агентов связано с переговорными процессами и достижением согласия путем интерактивного обмена информацией в форме предложений и контрпредложений. При этом более осторожный и спокойный агент задает менее резкий шаг предложений, чем нервный и экспрессивный. Учет эмоционального состояния и психотипа агента в стратегии поведения эмоционально-мотивированного агента позволяет наблюдать, как внутреннее состояние агента отражается на процессах взаимодействия, стабилизации ситуации и разрешении конфликта. 1.4. Параметрическое описание и ситуационная модель состояния агента В общем виде параметрическое описание эмоциональномотивированного интеллектуального агента Agi в мультиагентной системе Agents = {Ag1, Ag2, …, Agn} представляется в соответствии с функциональной схемой агента (см. рис. 1.3) кортежем параметров и переменных его интеллектуального I, эмоционального Em и социального So состояний, параметрами персональных физических свойств Phi, глобальной Z0 и локальных целей zi, стратегий их достижения и внешних связей [48]: AgSi = < Zi , Ii , Emi , Soi, Phi , PLi, Evi > ; i = 1,n, (1.9)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.4. Параметрическое описание и модель состояния агента 23 где Zi = {zil, zi2, …} — множество целей zik (k-я цель i- го агента); Ii = {Ii1, Ii2, … } — база знаний i-го агента в j-х областях знаний Ii j; Emi = {e1, …, en} — вектор параметров эмоционального состояния агента: психотип, эмоциональная реакция, психологическая напряженность, психофизиологические характеристики восприятия информации и т. п; PLi = {pli11, pli12, ...} — банк моделей стратегий поведения plikl ( l-я стратегия достижения k-й цели); Evi = {Evi(ag1), Evi(ag2), …, Evi(agj), …} — описание внешних связей. На каждом этапе взаимодействия i-й агент Agi подтверждает или корректирует исходную цель zik  Zi и выбирает очередное действие (шаг) для ее достижения. Каждая l-я модель стратегии поведения i-го агента Agi для достижения k-й цели представляется в виде процедуры plikl с формальными параметрами: plikl = < nameikl, argsikl, bodyikl, constrsikl, precondsikl >, (1.10) где nameikl — идентификатор l-й модели стратегии достижения k-й цели; argsikl — список переменных описания l-й модели; bodyikl — тело процедуры l-й модели поведения агента для достижения k-й цели; constrsikl — список агентов и факторов воздействия на элементы тела процедуры; precondsikl — список условий выполнения тела процедуры l-й стратегии достижения k-й цели. Например, интеллектуальный агент AgStud класса «студент» в агентно-ориентированной модели образовательного процесса накопления знаний может быть описан переменными и параметрами когнитивного Co, эмоционального Em, персонального Ps и социального So состояний в виде кортежа: AgStud = {Co, Em, Ps, So},
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 24 Глава 1. Общая концепция интеллектуального агента где Coi = {ci1, ..., ci7} — вектор параметров когнитивного состояния i-го агента, включающий: ci1 — уровень интеллекта (психодиагностический тест IQ [35]), ci2 — внимание (тест Шульте), ci3 — способность к восприятию (тест ССРВ), ci4 — уровень априорных знаний J0, ci5 — коэффициент эффективности переработки информации R, ci6 — скорость переработки информации  (пропускная способность агента), ci7 — текущий уровень знаний J; Emi = {ei1, ei2, ei3,} — вектор параметров эмоционального состояния i-го агента: ei1 — психотип личности (тест), ei2 — эмоциональная реакция, ei3 — степень психологической напряженности; Phi = {pi1, pi2, pi3} — вектор персональных характеристик агента: pi1 — сознательность, pi2 — трудолюбие, pi3 — быстрота утомляемости; Soi = {si1, si2} — вектор параметров социального состояния: si1 — индекс социометрического статуса, si2 — уровень взаимодействия. Состояние агента Agi, описываемое множеством параметров, связей и целей, можно представить в виде структурно-параметрической матрицы состояния [10, 45] с блоками общей и локальных целей, информационных и эмоциональных характеристик агента, моделями функциональных связей и отношений в виде матрицы (1.11). Диагональные клетки (диагональные миноры) матрицы отражают связи внутри выделенных групп (состояний) и, в случае независимости переменных, — диагональный вектор параметров состояния. Недиагональные клетки соответствуют операторам прямого и обратного влияния между соответствующими группами параметров состояния и целевой функции Z0 с характеристиками fij, eij, ij, ij и других функциональных связей между ними (коэффициенты, функции, алгоритмы, процедуры и т. п.). Отсутствие связей описывается нулевыми операторами ||0||, определяющими нерабочую область взаимодействия.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.4. Параметрическое описание и модель состояния агента z0 , z1 , ..., z p , I1 , ..., 1 2 Z0 5 0 j 7 8 ij ... fj 0 4 e0 j 6 z1 (1.11) en Im , e1 , ..., 3 f0 j 25 ij zp 9 10  ji ej0 , I1 11 12 ... Ii  ij ... Im 13 j0 14  ji 15  ji e1 16 ... ej ... en где Z0 — критерий оценки достижения общей цели, {z1, z2, …, z5} — локальные целевые функции агента; {I1, …, Im} — характеристики интеллектуального (когнитивного) состояния агента; {e1, …, en} — характеристики вектора эмоционального состояния. Главной задачей параметрического моделирования агентов является отыскание и структурирование сопоставимых характеристик связей между параметрами его состояния и целевой функцией, а также построение ситуационной модели изменения состояния агента и алгоритмизация процедур его идентификации и прогнозирования. На первом этапе характеристики связей между наблюдаемыми параметрами задаются экспертным путем и уточняются методами корреляционного и регрессионного анализа. В этом случае исходные данные формируются в виде
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 26 Глава 1. Общая концепция интеллектуального агента массива наблюдений xkj или экспертных оценок значений j-го фактора в k-м опыте, и для каждой пары факторов xi и xj определяется коэффициент корреляции rij. Далее для переменных с rij  0,6 рассчитываются коэффициенты Pi0, Pi1, …, Pim множественной регрессии i-го параметра с j-ми связанными факторами ( j  1, m i ): mi xi   Pij x j , j  1, m i . (1.12) j 1 Для сравнительной оценки отклонений и связей различной физической природы следует переход к относительным величинам отклонений параметров состояния от их математического ожидания xi  xi  xi xi ,  xi xi где i,j — среднеквадратичные отклонения i-го и j-го факторов, и далее к уравнению регрессии для безразмерных переменных mi xj j 1 xi xi   Pij x j , i  1, n ; j  1, m i ; j  i с формированием когнитивной матрицы безразмерных характеристик связей между i-м и j-м параметрами: xj Cij  Pij ; i , j  1, n . (1.13) xi В результате умножения когнитивной матрицы Cij; i, j = 1,n на вектор текущих изменений переменных состояния и цели x1, …, xn, формируется ситуационная матричная модель состояния агента в очередном временном событии: 1, c12 , ..., c1n x1 , c21 , 1, ..., c2 n x2 , *  ... ... ... ... ... ... ... ... cn1 , cn 2 , ..., 1 xn (1.14)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.4. Параметрическое описание и модель состояния агента x1 ,  c21x1 , ..., c12 x2 , ..., c1n xn x2 , ..., ..., c2 n xn , ..., ... cn1x1 , cn 2 x2 , ..., где xi  xi  xi0 27 xn ; i  1, n — нормированные отклонения паxi0 раметров состояния от допустимого диапазона xi0 . Элементы главной диагонали ситуационной матрицы cij· xj; i , j  1, n отображают текущие нормированные отклонения хi контролируемых факторов от заданных значений, а недиагональные — вклады других отклонений хj , j  1, n в отклонение хi, i  1, n с размещением по строкам всех априорно известных причин отклонения хi, а по столбцам — возможных следственных влияний отклонения хi на другие параметры. n В общем случае ситуационная матрица сij  x j является структурно-параметрической моделью изменения состояния агента с переменными состояния x1… x2 и описывает причинно-следственные взаимосвязи в дискретные моменты времени объединяя априорные данные о структуре связей с поступающей информацией х в текущей ситуации. Рассмотренная ситуационная модель позволяет алгоритмизировать процедуры идентификации и прогнозирования состояния агента в конкретной ситуации. Идентификация состояния агента в текущей ситуации сводится к диагностированию причин его возникновения, прогнозированию дальнейшего состояния и оценке возможностей достижения цели [10]. Формальная процедура идентификации состояния агента представлена в качестве примера на рис. 1.4 в аналоговой форме в виде распределения точек, площадь которых пропорциональна отклонениям параметров состояния и интенсивности их взаимного влияния в данной ситуации. От максимального диагонального элемента, соответствующего максимальному отклонению параметра от исход-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 28 Глава 1. Общая концепция интеллектуального агента ного значения х13, перемещаются по его строке, выявляя все причины этого отклонения и выбирая наиболее значимую. Далее переходят по столбцу к новому элементу главной диагонали, после чего вновь оценивают элементы соответствующей строки. Поиск продолжается до нахождения отклонения, в строке которого все недиагональные элементы равны нулю, например x5, что означает, что данное отклонение является одной из основных исходных причин общего изменения состояния агента. Рис. 1.4. Структурно$параметрическая ситуационная модель состояния агента в пространстве переменных х1, …, х32 Алгоритм идентификации содержит блок формирования ситуационной матрицы и процедуру поиска главной причины изменения состояния агента (рис. 1.5). Процедура включает определение максимального диагонального
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.4. Параметрическое описание и модель состояния агента Рис.1.5. Блок$схема алгоритма идентификации состояния агента 29
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 30 Глава 1. Общая концепция интеллектуального агента элемента xq с нулевым столбцом (главное конечное следствие) и последующее отыскание в q-й строке максимального по модулю элемента (максимального вклада), запоминание его индекса p и переход на p-ю строку с повторением поиска максимального по модулю элемента этой строки, определяющего следующую ступень причинно-следственной цепи. Для обнаружения возможного зацикливания причинноследственных связей формируется массив tl индексов диагональных элементов, входящих в траекторию взаимодействия. При совпадении двух элементов этого массива следует сигнал «цикл». При этом причина может оказаться внутри или вне контура цикла. Для выхода из причинно-следственного цикла и продолжения поиска исходной причины разрывается последнее звено обратной связи Sqp = 0 с запоминанием его значения fg = Sqp и адресов в индексных массивах Indg1 ; Indg2 . Тогда при повторном переборе элементов q-й строки процедура либо остановится на последнем звене цикла (если причина лежит в контуре цикла), либо пойдет дальше по ступеням взаимосвязей до следующей причины или нового цикла (см. рис. 1.5). Поиск продолжается до нахождения диагонального элемента xp, в строках которого все недиагональные элементы равны нулю, т. е. Spj = 0 для j =1,n и j  p, что указывает на отклонение xp p-го фактора, ставшего исходной причиной с максимальным вкладом в изменение состояния агента. Процедура идентификации заканчивается регистрацией xp — главной исходной причины следственной цепи tj; j =1,l и восстановлением разорванных циклов g, т. е. sIndj1, Indj 2 = fj . Для нахождения воздействия других факторов на первоначально выбранное отклонение xq первый максимальный вклад в его отклонение приравнивается к нулю и выбирается следующий максимальный по модулю элемент q-й строки, т. е. следующий по величине вклад в q-е следствие.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.4. Параметрическое описание и модель состояния агента 31 Алгоритм прогнозирования состояния агента (рис. 1.6) по своей структуре аналогичен алгоритму идентификации. Он заключается в выявлении или имитации отклонения какого-либо фактора состояния xk от предшествующего зна- Рис. 1.6. Блок$схема алгоритма прогнозирования состояния агента
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 32 Глава 1. Общая концепция интеллектуального агента чения, вычислении элементов k-го столбца ситуационной матрицы как Sik = cik · xk ; i  1, n (1.15) и отыскании в нем максимального недиагонального элемента с индексом q = imax максимального следственного воздействия на q-й параметр с дальнейшим повторением процедуры нахождения max в q-м столбце при k = q и xk = xq. Если max оказывается равным нулю, то данное k-е отклонение не имеет последствий в заданном n-факторном пространстве и после распечатки индексного массива tl причинно-следственной траектории процедура заканчивается. При mах  0 следует запись индекса следственного отклонения q в очередной элемент индексного массива tl и после проверки на зацикливание — вычисление отклонения xq (диагонального элемента q-й строки матрицы Sij) как xq = cqk · xk. Процедура обнаружения возможных причинно-следственных циклов аналогична рассмотренной в алгоритме идентификации изменения состояния агента (см. рис. 1.5). Точность и полнота моделирования, которые оцениваются степенью различия наблюдаемых отклонений и сумм составляющих их расчетных вкладов согласно (1.12), могут не достигаться либо за счет влияния неучтенных факторов, либо неполноты априорных данных и неадекватности коэффициентов влияния. В процессе функционирования и дополнения базы данных когнитивная матрица и ситуационная модель агента корректируются по результатам наблюдения и идентификации текущих ситуаций. Однако для правильной диагностики и прогнозирования аномальных состояний агента в структурно-параметрической ситуационной модели при сравнении вкладов достаточно соблюдать отношение порядка их абсолютных значений.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.5. Структурно$параметрическая модель системы 33 1.5. Структурно5параметрическая модель мультиагентной системы Изменение состояния Agi i-го агента, обусловленное его реакцией на текущую ситуацию и действия других агентов, может оцениваться некоторым интегральным критерием i, отражающим изменение характеристик и параметров агента в текущей ситуации в k-й период времени в сравнении с их значениями в предшествующем (k–1)-м периоде или исходном состоянии: 2  xijk  xijk 1     w ij   , i = 1,n ; j = 1,m ; k = 1,r , (1.16)  xijk j 1   k k 1 где xij , xij — изменение j-го фактора состояния i-го агента m k i в k-м и (k–1)-м периодах; wij — весовые коэффициенты отmi клонения j-го фактора при условии w ij 1. j 1 Тогда диагональная матрица изменения состояния агентов Ag, их целей g и внешних факторов Ev в конкретной ситуации, умноженная на когнитивную матрицу отношений между агентами, по аналогии с (1.14), представляет собой структурно-параметрическую ситуационную модель мультиагентной системы на очередном шаге достижения общей цели G [10, 45]. Элементы и блоки ситуационной модели (1.17) мультиагентной системы отражают изменение состояния агентов с общей глобальной и локальными целями и операторы функциональных отношений с упорядочиванием по строкам всех факторов влияния на i-го агента, а по столбцам — воздействий j-го агента на других агентов и среду.
0 lij  G 0 13 9 5 0, 1 11  g 1 ..., ..., ... 0, 0, 0 ... ... 0 10 ... 0 g n ... ... 21  Ag 1 , Ag 1 , 0, ... 14 ... ... nn  Ag n ... 0 0 3 ... Ag 2 , ... 0 15 Ag n ... ..., 2 n  Ag n 12  A g 2 , ..., 1n  Ag n 0, ... ... ... 1 ..., nn  g n n1  Ag 1 , n 2  Ag 2 , ..., ... 1 22  g 2 , ..., 0,  f1n  g 1 , 0, ... ... 0, 22,  Ag 2 g 1 , f12  g 2 , ...,  f1n  g n f21  g 1 , g 2 , ..., f2 n  g n 11,  Ag 1 0, 0 2 Агенты w1  g 1 , w 2  g 2 , ..., w n  g n Локальные цели ... Ev1 Ev2 ... tij  Evj 0 0 16 12 8 4 ... ... ... ... ... Evm Среда , 34 G 1 Главная цель (1.17) Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Глава 1. Общая концепция интеллектуального агента
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.5. Структурно$параметрическая модель системы 35 где: Ag, g, Ev — векторы изменения состояния агентов, целевых функций и среды; ii, ii -1; i = 1,n — функции прямых и обратных связей состояния i-го агента Agi с его локальной целью gi; n ij — оператор прямого и обратного влияния изменения состояния i-го агента Agi на реакцию j-го Agj ; n n i 1 j 1 G   w i  fij g j — декомпозиция отклонения общей цели G на отклонения локальных целей агентов gi ; ||0||, ||lij||, ||tij|| — нулевой оператор и операторы связей агентов c показателями общей цели и внешней среды; fij и fji — знаковые функции влияния целевой функции gj j-го агента на изменение локальной цели i-го (табл. 1.2). Структурно-параметрическая модель мультиагентной системы определяет множество переменных состояния и операторов взаимодействия агентов, объединяемых общей глобальной и локальными целями, и позволяет формализовать алгоритмы идентификации и прогнозирования изменения состояний активной системы на каждом шаге имитации, в целом аналогичные рассмотренным в разделе 1.3. Таблица 1.2 Знаковые функции отношений агентов № fij fji Характер ситуации 1 +1 +1 Взаимное согласие и взаимодействие 2 3 +1 –1 –1 +1 Согласие с одной и противодействие с другой стороны (одностороний конфликт) 4 –1 –1 Взаимный двухсторонний конфликт 5 6 +1 0 0 +1 Одностороннее позитивное отношение при безразличии с другой стороны 7 8 –1 0 0 –1 Одностороннее негативное отношение при безразличии с другой стороны
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 36 Глава 1. Общая концепция интеллектуального агента Рис. 1.7. Блок$схема алгоритма прогнозирования состояния мульти$ агентной системы Алгоритм идентификации состояния мультиагентной системы сводится на первом этапе к выявлению агентов, состояние которых привело к отклонению от общей цели или
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 1.5. Структурно$параметрическая модель системы 37 приближению к ней, а на втором этапе — к определению причинных факторов аномального состояния самих агентов. Алгоритм прогнозирования состояния мультиагентной системы (рис. 1.7) связан с выявлением последствий влияния изменения состояния какого-либо агента Agk на развитие ситуации и достижение общей цели. Задаваемое отклонение k-го агента записывается в массивы промежуточных и конечных следствий Sll ; l =1, 2,… и их индексов tl ; l = 1, 2,… с последующим вычислением элементов k-го столбца ситуационной матрицы как Sik = Cik · Agk ; i = 1, n (1.18) и отысканием в нем максимального по модулю следственного воздействия q = imax на q-го агента. Аналогично ранее описанному алгоритму прогнозирования состояния агента (см. рис. 1.6), при max = 0 изменение состояния k-го агента не имеет последствий в моделируемой мультиагентной системе, и процедура причинно-следственной идентификации заканчивается регистрацией главной возможной следственной цепи изменения состояний взаимосвязанных агентов и их индексов tj; j = 1, l. При mах  0 индекс максимального воздействия предыдущего (k-го) агента на последующего записывается в индексный массив tl и проверяется на зацикливание. После этого следует вычисление прогнозируемого изменения состояния q-го агента Agq = Cqk · Agk (диагональный элемент q-й строки матрицы Sij) с дальнейшим повторением процедуры нахождения max в q-м столбце при k = q и Agk = Agq. Процесс обнаружения возможных причинно-следственных циклов аналогичен описанию в алгоритме прогнозирования состояния агента (см. рис. 1.6). Для определения всех последствий изменения состояния определенного агента описанная процедура включается в цикл их последовательного перебора по принципу разматывания и сматывания нити в конечном лабиринте (см. раздел 2.2). При достижении крайнего агента выбранной
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 38 Глава 1. Общая концепция интеллектуального агента цепи взаимодействия последнее ее звено прерывается, т. е. принимается S(tl, tl-1) = 0 (см. рис. 1.7) с возвратом к агенту k = tl-1, предшествующему k-му агенту, и нахождением другого наибольшего влияния изменения состояния k-го агента, т. е. другой ветви воздействия. При возврате к исходному агенту, т. е. при l – 1 = 0, процедура останавливается. В случае изменения состояния m агентов Agi ; i = 1,m ситуационная матричная модель прогнозируемого состояния мультиагентной системы формируется последовательно для всех исходных отклонений состояния заданных агентов.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Глава 2 СТРАТЕГИИ ПОВЕДЕНИЯ И ВЗАИМОДЕЙСТВИЯ ИНТЕЛЛЕКТУАЛЬНЫХ АГЕНТОВ Структурно-параметрическое описание системы позволяет формализовать структуру и характер взаимодействия агентов в различных ситуациях. Обмен информацией между агентами осуществляется с помощью сигналов об их состоянии или направленных сообщений. Таким образом, мультиагентная модель системы воспроизводит динамику состояния интеллектуальных агентов и процессов обмена информацией между ними в непрерывные или дискретные моменты времени так, что общий алгоритм поведения агента сводится к описанию цикла чередующихся фаз идентификации состояния и принятия решения. Однако несмотря на многообразие ситуаций различной социальной и физической природы, стратегии взаимодействия агентов можно свести к прямому переговорному процессу, ситуационным рефлексивным и интеллектуальным стратегиям достижения цели. 2.1. Переговорные процессы взаимодействия агентов Эффективные переговоры между агентами основаны на диалоге с целью согласования различных мнений агентов с помощью утверждений и возражений, гипотез и сомнений, аргументов и контраргументов, вопросов и ответов. Переговорные процессы являются ключевым механизмом кооперации и достижения соглашений в условиях когнитивного конфликта, в котором агенты должны отстаивать
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 40 Глава 2. Стратегии поведения интеллектуальных агентов свои интересы и ценности. При этом два или более агента выражают сообщениями противоречивые требования и продвигаются к согласию путем уступок и поиска новых альтернатив [48]. В заданном множестве целеустремленных агентов Ag = {ag1, …, agn} и конфликте интересов среди них — Conf каждый агент agi располагает планом намерений Pnk с некоторой структурой переговоров и набором возможных предложений Рrstructik = {prik1, prik2, …}. Алгоритм переговоров (рис. 2.1) включает последовательность возможных операций, которые каждый i-й агент может выполнить в текущий момент переговорного процесса. Алгоритм начинается с передачи agi предложения prikm всем другим участникам переговоров agj ; j =1, n ; j  i, каждый из которых либо принимает его, либо отклоняет, либо анализирует и дает контрпредложение, либо выходит из переговоров. Если предложение prikm принято всеми агентами, процесс переговоров завершается с достижением согласия. В случае отклонения своего предложения агент agi имеет возможность:  изменить отклоненное предложение prikm или подготовить новое предложение prikm+1 с направлением его всем агентам и повторением описанных действий;  выйти из участия в дальнейших переговорах;  никак не реагировать, т. е. ничего не делать и ожидать контрпредложения от остальных агентов-участников переговоров. Очередной раунд переговорного процесса заканчивается, если:  достигается согласие;  один или несколько агентов выходят из переговоров;  истечет время переговоров;  исчерпаны возможности выбора новых реальных предложений. В последнем случае агент может ослабить ряд гибких ограничений на параметры состояния и цели или, если это невозможно, реструктурировать проблему переговоров с
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.1. Переговорные процессы взаимодействия агентов Рис. 2.1. Общий алгоритм переговорного процесса 41
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 42 Глава 2. Стратегии поведения интеллектуальных агентов дополнением или коррекцией исходов и повторением переговорного процесса. Для принятия решения о согласии или отказе от очередного предложения i-го агента предлагается критерий согласия Psi в виде некоторого функционала, отражающего степень приближения характеристик и параметров zk текущего предложения к желаемому положительному исходу в допустимой области гибких ограничений: mg  Psi   ( 1  zig2 )  1  g 1  m w k 1 ik  2 zik  , i = 1,n ; k = 1,m ,  (2.1) где zig — отклонение g-го фактора группы жестких ограничений, определяющих неприемлемость предложения; 0 xik  xik — относительное отклонение k-го фактора 0 xik в области гибких ограничений в оценке i-го агента; xik, xik0 — предлагаемое и желаемое значения k-го фактора; xik — допустимое отклонение k-го фактора гибких ограничений от желаемого значения; wik — весовые коэффициенты отклонения k-го фактора, задаваемые таблицей экспертных оценок. zik  mi При условии w ik  1 функционал (2.1) изменяется от k 1 1 до 0, т. е. от полного совпадения предлагаемого предложения с желаемым до полной неприемлемости, и обращается в нуль при нарушении какого-либо жесткого ограничения, например обмана при расчете. Принятие предложения определяется пороговым значением функционала согласия в зависимости от принятой стратегии. Алгоритм переговоров (см. рис. 2.1) универсален и основан на ослаблении ограничений и реструктуризации проблемы. Примером его конкретной реализации является переговорный процесс в конфликтной рыночной ситуации, когда стороны имеют противоположные интересы и одна сторона
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.1. Переговорные процессы взаимодействия агентов 43 стремится к максимизации цены продажи, а другая — к минимизации цены покупки [12]. Компромиссное решение сводится к определению характеристик цели и альтернатив ее достижения с учетом различных неценовых маркетинговых факторов. В конкретном случае общий алгоритм моделирования переговорного процесса в рыночной ситуации включает четыре этапа (рис. 2.2). Рис. 2.2. Общий алгоритм моделирования маркетингового процесса
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 44 Глава 2. Стратегии поведения интеллектуальных агентов На первом этапе каждый продавец устанавливает начальную цену на товар, исходя из оптовой цены OptCenai (себестоимость), ниже которой продавать невыгодно, и некоторой наценки Ci в зависимости от текущих затрат и желаемой прибыли: Cenai = OptCenai + Ci. (2.2) На втором этапе происходит выбор i-го продавца j-м покупателем по функционалу предпочтения Prij, аналогичному по форме критерию согласия (2.1) и учитывающему в относительных балльных оценках такие неценовые факторы, как качество продукции, местонахождение торговой точки, хорошее обслуживание, имидж фирмы продавца, рекламная кампания и т. д. Нормированная сумма функционалов предпочтения на множестве предложений для каждого покупателя Bj ; j = 1, m равна единице. В качестве примера для трех производителей продукции Ag1 – Ag3 и десяти случайно выбранных покупателей B1 – B10 возможное распределение функционалов предпочтения показано в табл. 2.1. Таблица 2.1 Случайное распределение функционалов предпочтения агентов B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 Ag1 0,23 0,41 0,33 0,44 0,13 0,71 0,34 0,25 0,42 0,38 Ag2 0,46 0,53 0,32 0,33 0,67 0,21 0,34 0,36 0,35 0,29 Ag3 0,31 0,06 0,35 0,23 0,2 0,08 0,32 0,39 0,23 0,33 Критерий выбора продавца определяется минимальным частным от деления предлагаемой цены pi на функционал предпочтения Prij: Qij = min { pi / Prij }. (2.3)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.1. Переговорные процессы взаимодействия агентов 45 Покупатель, располагая определенной суммой денег, на которую он желает приобрести товар, стремится минимизировать предлагаемые цены до минимально возможного уровня Pimin. Если предлагаемая цена выбранного продавца устраивает покупателя, то сделка совершается. В противном случае начинается процедура торга (третий этап), где покупатель предлагает свою цену, например, с уменьшением наценки вдвое: Cl = Cl /2 ; Cenal = Cenal + Cl. Продавец анализирует цену, предложенную покупателем, и по критерию согласия принимает одно из двух решений: согласиться на продажу либо предложить новую компромиссную цену со скидкой: Cl = Cl /2 ; Cenal = Cenal Cl. При этом с каждым предложением новой цены одной из сторон вероятность согласия другой стороны увеличивается. Ценовой торг продолжается, пока одной из сторон не будет принято решение о совершении сделки, или цена не достигнет предельного значения с той или иной конфликтующей стороны. В последнем случае агент-продавец переходит к предложению гибких неценовых услуг, таких как доставка, подарок, гарантийный сервис, дисконтная карта, установка, дефицит и др. Задача заключается в выявлении факторов, наиболее выгодных для покупателя и достижения согласия. Блок-схема алгоритма переговорного процесса торга (рис. 2.3) между агентами Agi Seller и Agj Buyer детализирует формализованную процедуру достижения согласия в явной конфликтной ситуации по следующей схеме: 1. Агент Seller сообщает о стоимости своего товара всем агентам-покупателям. 2. Каждый агент Buyer после выбора одного из агентовпродавцов по максимуму критерия выбора (2.3) рассчиты-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 46 Глава 2. Стратегии поведения интеллектуальных агентов Рис. 2.3. Блок$схема алгоритма переговорного процесса торга
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.1. Переговорные процессы взаимодействия агентов 47 вает значение критерия согласия (2.1). Если его значение Psj больше или равно заданному уровню g, он подтверждает свое согласие. В случае Psj < g агент Buyer отказывается от первоначального предложения и предлагает свою, более низкую, цену. 3. Если агент Seller согласен принять предложенные условия по своему уровню критерия согласия Psi > g, он дает покупателю Buyer соответствующее сообщение. В противном случае агенту Buyer предлагается встречный компромисс в виде новой цены, более низкой, чем первоначальная, но выше предложенной покупателем. При взаимных уступках в переговорном процессе агенты все более склоняются к согласию так, что на каждом следующем шаге переговоров значение критерия принятия решения приближается к области согласия g. 4. Не придя к обоюдному согласию по цене, после определенного количества раундов q ценового торга агент Seller для достижения согласия переходит к предложению гибких неценовых факторов. 5. В свою очередь агент Buyer накапливает информацию о цене и условиях приобретения товара, необходимую для принятия решения о согласии с предложением агента Seller в случае Psj > g. 6. В случае согласия следует вычисление объема заказа j-го агента Buyer i-му агенту Seller по формуле: Vj = Vjmin · Pjmax/Cenai , (2.4) где Vjmin, Pj max — минимальный объем заказа и максимально возможная цена для j-го агента Buyer; Cenai — согласованная цена в процессе торга. С помощью мультиагентного моделирования переговорного взаимодействия агентов изучается влияние различных ценовых стратегий конкурирующих фирм на долю рынка, прибыль и объем продаж.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 48 Глава 2. Стратегии поведения интеллектуальных агентов 2.2. Ситуационная стратегия поведения агентов Ситуационные стратегии характерны для всех интеллектуальных агентов, реагирующих на изменение состояния других агентов и среды в текущей ситуации. В наиболее простом случае рефлексивное поведение агентов определяется ситуационной стратегией условие-действие с продукционными правилами «ЕСЛИ – ТО – ИНАЧЕ». Примером такой стратегии поведения агентов может служить среда олигопольного рынка [46] с множеством покупателей продукции и конкурирующими фирмами, борющимися за максимальную прибыль и долю рынка. Текущая ситуация оценивается параметрами состояния (цена, объем предложений, товарный ассортимент, скидки, реклама, качество, имидж, удаленность, доставка), а также статистикой числа клиентов, количеством не обслуженных клиентов, объемом упущенных продаж и другими факторами. Динамика рефлексивного поведения агентовпродавцов зависит от последовательных условных событий и связана с варьированием цены, предложений и неценовых факторов в зависимости от условных событий: событие 1: ЕСЛИ «Текущая цена товара фирмы больше средней рыночной цены» ТО «Уменьшение цены на n%» ИНАЧЕ «Увеличение цены на n%» ; событие 2: ЕСЛИ «Есть упущенные клиенты» ТО «Увеличение поставок на недостающую величину» ИНАЧЕ «Объем поставок не изменяется»; событие 3: ЕСЛИ «Остаток больше n% от объема поставок» ТО «Увеличить (ввести) скидку» ИЛИ «Уменьшить объем поставок на n %»; событие 4: ЕСЛИ «Число покупателей стало больше» ТО «Увеличение объема поставок на N единиц» ИНАЧЕ «Расширение товарного
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.2. Ситуационная стратегия поведения агентов 49 ассортимента» ИЛИ «Улучшение качества товара» ИЛИ «Повышение имиджа предложений» ИЛИ «Усиление рекламы» ИЛИ «Улучшение сервиса». Рефлексивное ситуационное поведение агента проявляется также в модели Адама — первобытного человека [52] на очень ранней стадии развития, живущего в одиночестве в естественных природных условиях (например, в саванне). Окружающий мир Адама включает в себя места питания, пустые и опасные места, влияющие на изменение его физического, эмоционального и когнитивного состояния. Так как Адам живет в одиночестве, то описание его социального статуса отсутствует и общее состояние агентаАдама описывается параметрами компонентов Physiс, Emotion и Cognition, а именно:  уровень энергии (компонент Physiс) — основной показатель жизненной активности и жизнеспособности агента;  чувство страха (компонент Emotion) — показатель эмоционального состояния агента;  показатели интеллектуального состояния (компонент Cognition): – априорное представление о внешнем мире (предполагается, что Адам обладает чертой забывчивости), – априорная база знаний и моделей поведения, – мотивы приобретения знаний (сила воли, голод и др.), – предполагаемый план действий в окружающей среде. В текущей ситуации при получении информации от среды параметры состояния агента медленно или резко изменяются. Например, уровень энергетического состояния будет повышаться, в зависимости от количества принятой пищи в местах питания, и медленно или значительно сокращаться при попадании агента в пустые или опасные области. В свою очередь, переменная величина эмоционального состояния страх резко возрастает, если Адам неожиданно попадает в
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 50 Глава 2. Стратегии поведения интеллектуальных агентов опасное место, медленно снижается на пустом поле и резко сокращается на поле питания. Поведение Адама определяется мотивами голода или стремлением к благополучию, целью и стратегией ее достижения и включает следующие действия: оценку ситуации; планирование и выбор очередного шага; исследование окружающей среды; перемещение на очередном шаге; питание (повышение жизнеспособности); выход из опасности. При отсутствии знаний об окружающей среде, поведение агента-Адама определяется стратегией случайного выбора очередного шага действий в направлении достижения глобальной цели — выживания. Среда выживания агента-Адама задается клеточным полем (рис. 2.4) со случайным распределением пустых клеток (серое поле), опасных клеток (черное поле) и клеток с питанием (белое поле). Встречая на своем пути места питания, агент повышает свой энергетический потенциал жизнеспособности в зави- Рис. 2.4. Среда выживания агента$Адама
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.2. Ситуационная стратегия поведения агентов 51 симости от принятого количества пищи и действует смело, не принимая во внимание возможные опасности. Если же агент сталкивается с опасностью (черные клетки), отдаляющей его от цели выживания, возникает эмоциональное состояние страха, снижающее потенциал жизнеспособности и заставляющее более осторожно выполнять свои действия для предотвращения нежелательных последствий. Примеры изменения переменных состояния агентаАдама в среде выживания при заданных начальных значениях и при отсутствии знаний об окружающей среде и случайном выборе очередного шага перемещения в клеточном поле представлены на рис. 2.5 и 2.6. Анализируя график изменения энергии (см. рис. 2.5), можно видеть, что в самом начале пути Адаму не везет и он попадает либо на пустые, либо на опасные поля, в результате чего уровень энергии понижается до 40 единиц. Рис. 2.5. Изменение энергетического потенциала агента при пере$ мещении в клеточном поле
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 52 Глава 2. Стратегии поведения интеллектуальных агентов Однако далее положение улучшается, и примерно на 20-м шаге Адам находит поля питания. Следствием этого является увеличение уровня энергетического потенциала агента до 96 баллов. Но далее, после 110-го шага, следует непрерывное падение уровня энергии, что объясняется большим количеством опасных полей и редким появлением мест питания. В результате на 220-м шаге агент-Адам перестает существовать. На рисунке 2.6 показано изменение показателя эмоционального состояния страха: резкое увеличение при попадании Адама на опасные поля и спад в местах питания. Пик уровня страха приходится на интервал со 125-го шага по 180-й. В процессе случайного поиска возможно обучение агента с накоплением знаний об окружающем мире и дальнейшим определением наилучшего пути к благоприятному месту питания. Однако окружающий мир динамично изменяется, и агент-Адам должен учиться ориентиро- Рис. 2.6. График изменения уровня страха при пошаговом переме$ щении агента
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.2. Ситуационная стратегия поведения агентов 53 ваться в изменяющемся пространстве и принимать решение в условиях неопределенности. Для определения направления движения в условиях неопределенности агент-Адам может использовать стратегию статистических испытаний. Согласно этой стратегии, в исходной и промежуточных точках осуществляется несколько пробных экспериментов и принимается решение о перемещении в сторону полей, нужных для выживания. Описанная модель позволяет проводить различные исследования влияния стратегии поведения и планов действий в конкретных ситуациях на переменные состояния агента, роль и значимость эмоций в принятии решения. Эта модель является некоторой основой построения моделей выживания интеллектуального агента-человека в различных физических и социальных средах. При рассмотрении знание-ориентированных, целенаправленных и целеустремленных агентов, способных идентифицировать сложную ситуацию и выбирать стратегию достижения выбранной цели на основе априорных знаний о характере связей между параметрами состояния и цели, ситуационная стратегия имеет более сложный алгоритм, основанный на идентификации текущего состояния и принятии решения в условиях определенности, неопределенности и риска. В ряде случаев в условиях определенности стратегия может быть описана алгоритмами поиска пути в конечном лабиринте состояний [2] с клубком нити “Нить Ариадны”, один конец которой закреплен на исходной позиции (исходное состояние). По мере углубления в лабиринт альтернатив и исходов, нить разматывается, и при достижении цели будет протянута через последовательность переходов, соединяющих исходное состояние агента с конечным (цель достигнута). Если цель недостижима, нить вновь сматывается в клубок, и агент возвращается к исходному состоянию. При этом предполагается, что в базе знаний интеллектуального агента имеется граф конечного лабиринта состояний (вершин) и ветвей (переходов) в виде матрицы смежности Sij; i =1,n; j =1,n с элементами
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 54 Глава 2. Стратегии поведения интеллектуальных агентов 1, при наличии ветви связи между i-й и j-й вершинами (i; j); Sij   0 , при отсутствии ветви (i; j) или параметрической матрицы характеристик связей между элементами системы. Алгоритм поведения агента “Нить Ариадны” с поиском ближайшего пути к цели (рис. 2.7) основан на просмотре упорядоченных по строкам и столбцам элементов Sij матрицы связей (переходов) между i-м и j-м состояниями агента. Из исходного состояния Smm ; i = m, агент «просматривает» i-ю строку, «разматывая нить» до ближайшего элемента Sij = 1 с запоминанием в индексном массиве Indl индекса j нового состояния на очередном k-м шаге поиска цели по рекурсивной схеме: k =1; q = m ; l = 1; Indl = q ; (2.5)   k = k +1; r = j ; l = l +1; Indl = r ; q = r, где q, r — индексы смежных состояний агента в направлении цели; Indl — l-й элемент индексного массива. При известной параметрической матрице связей агентом может быть проведен поиск кратчайшего пути по любому фактору, характеризующему систему, например: параметрам расстояния и затрат (транспортные системы); информационным характеристикам (коммуникационные системы); временным, ресурсным, стоимостным показателям; причинно-следственному описанию функциональных связей и т. п. В этом случае, в цикле перебора элементов очередной q-й строки отыскивается максимально эффективный extr (кратчайший) переход Sqj ; q  j к следующему (jextr – у)состоянию в направлении к цели. После запоминания индекса найденного (ближайшего или максимально эффективного) r-го перехода в индексном массиве l = l+1; Indl = r (см. рис. 2.7) агент производит проверку достижения цели в p-й вершине (r = p) и возможного зацикливания пути поиска, сравнивая r с предыдущими элементами индексного массива Indk; k = 1,l –1. Если r = p, то цель достигнута и следует останов или переход к новой
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.2. Ситуационная стратегия поведения агентов 55 Рис. 2.7. Блок$схема алгоритма движения к цели в конечном лаби$ ринте цели; если же цель не достигнута (r  p) и цикл не образуется, то следует новый шаг перехода с повторением поиска максимального элемента в текущей q-й строке для q = r.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 56 Глава 2. Стратегии поведения интеллектуальных агентов В случае зацикливания, т. е. возвращения к ранее пройденному состоянию, отраженному в массиве Indl, последнее звено перехода разрывается (Sqr = 0), и делается шаг назад l = l – 1 (сматывание нити) с повторением цикла «просмотра» q-й строки. При достижении тупикового состояния с нулевой строкой следует также шаг назад q = Indl-1 с выходом в предыдущее состояние l = l – 1 и закрытием тупикового перехода от Indl-1 к Indl, принимая Sq,Indl = 0. Если при этом оказалось, что l – 1 = 0, то p-я вершина (цель) не достижима из m-го состояния. Рассмотренный алгоритм поведения целенаправленного агента может быть использован в сложных ситуациях принятия решения на очередном шаге перехода от исходного состояния к конечной цели. 2.3. Интеллектуальные стратегии принятия решения и поведения агентов Стратегии поведения целенаправленного или целеустремленного интеллектуального агента, способного к самообучению и накоплению знаний для достижения мотивируемой цели, связаны с принятием оптимальных решений на основе различных методов исследования операций и математического программирования. Если достижение цели требует большого количества шагов, вводятся промежуточные локальные цели, структурирующие процесс принятия решения на очередном шаге. 2.3.1. Градиентные стратегии В стационарных средах, когда поведение целенаправленного агента сводится к нахождению экстремумов формализованной целевой функции f(x1, …, xn), связывающей переменные состояния агента x1, …, xn с критерием достижения цели, применимы известные методы решения экстремальных задач в многомерном пространстве состояний и, в частности, градиентные методы. Направление наиболее быстрого продвижения к цели характеризуется градиентом f(x1, …, xn) — вектором (рис. 2.8, а), проекциями которого на оси
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.3. Интеллектуальные стратегии принятия решения 57 координат являются частные производные целевой функции по координатам  f f f  grad f(x1, …, xn)   ; ;...; , xn   x1 x2 и модулем grad f(x1, …, xn)  n f  ( x i 1 )2 . (2.6) (2.7) i Ориентация вектора grad f(x1, …, xn) в пространстве состояний определяется углами i между вектором и его проекциями на соответствующие оси с направляющими косинусами (рис. 2.8, б). Рис. 2.8. Градиентный поиск экстремума целевой функции агента в двумерном пространстве Перемещение вдоль градиента дает кратчайший путь к вершине (max) функции f(x1, …, xn), а перемещение в противоположном направлении указывает кратчайший путь к минимуму функции. При этом координаты новой точки перемещения на k-м шаге h будут определяться как xi( k )  xi( k 1)  h cos  i . (2.8)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 58 Глава 2. Стратегии поведения интеллектуальных агентов Перемещение продолжается по алгоритму градиентного поиска с дробным шагом (рис. 2.9) до достижения границы области или до выполнения условия точности:  grad f (x1, …, xn)   . (2.9) Если функция не дифференцируема, то агент вычисляет производные с помощью конечных разностей: f f  x1 ,..., xi  x ,..., xn   f  x1 ,..., xi ,..., xn   ; i  1, n . (2.10) xi x Для нахождения оптимального решения с любой заданной точностью агент использует градиентный поиск с дробным шагом (рис. 2.9). Исходя из начального состояния x10 ,..., xn0 и шага h, агент вычисляет координаты новой точки с проверкой условия монотонности приближения к экстремуму f( x1( k ) ,..., xn( k ) )  f( x1( k 1) ,..., xn( k 1) ) . Если это условие нарушается, то шаг дробится (делится пополам) до тех пор, пока монотонность не восстановится. Пошаговое движение продолжается до выполнения условия точности (2.9). При большом количестве переменных состояния вычисление n производных целевой функции f(x1, …, xn) на каждом шаге движения к цели становится неудобным, поэтому агент использует стратегию крутого восхождения (наискорейшего спуска), согласно которой после определения градиента в исходной точке (рис. 2.10) следует перемещение на несколько шагов до локального экстремума целевой функции f(x1, …, xn). В точке перегиба вновь вычисляется градиент по частным производным с определением нового направления движения. Критерий достижения цели также определяется условием точности (2.9). При этом агент может двигаться большими шагами, и градиент целевой функции вычисляется в меньшем числе состояний.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.3. Интеллектуальные стратегии принятия решения 59 Рис. 2.9. Блок$схема стратегии градиентного поиска с дробным шагом Таким образом, стратегия крутого восхождения (наискорейшего спуска) в многомерном пространстве состояний агента существенно ускоряет динамику достижения поставленной цели, сводя ее к минимуму промежуточных вычислений в направлении градиента целевой функции.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 60 Глава 2. Стратегии поведения интеллектуальных агентов Рис. 2.10. Достижение цели методом крутого восхождения В условиях определенности стратегии поведения интеллектуальных агентов могут строиться также на основе других методов динамического, линейного и нелинейного программирования. 2.3.2. Стратегии с факторным экспериментом В условиях неопределенности, обусловленной нестационарностью среды «обитания» агента, отсутствием априорных знаний о направлении достижения цели и ее связях с параметрами состояния, а также дрейфом экстремума целевой функции и ограничений, поведение агента определяется интеллектуальными стратегиями с идентификацией текущей ситуации и выбором очередного шага в направлении приближения к цели. В этом случае создаются самообучающиеся целеустремленные агенты, способные накапливать знания на основе большого объема данных и онтологии событий в процессе взаимодействия с другими агентами и окружающей средой, адаптироваться к ситуации, выбирать стратегию достижения цели и оценивать степень ее достижения. Интеллектуальная стратегия накопления информации и выбора оптимального поведения агента связана с планированием и обработкой результатов пассивного и активного экспериментов для определения отклика целевой функции и направления ее градиента. При этом общая стратегия поведения агента основывается на градиентных методах
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.3. Интеллектуальные стратегии принятия решения 61 поиска экстремума целевой функции (градиента, крутого восхождения, сопряженных градиентов), а также алгоритмах статистического градиента и покоординатного поиска, симплексного планирования, нейросетевых и эвристических алгоритмах обучения. Выбор той или иной стратегии обусловлен поверхностью функции отклика, которая при возрастании числа факторов состояния может утратить свойство унимодальности и приобрести характер «обрывов» и «оврагов», «узких хребтов», «седловых точек» и т. п. При неизвестной или неформализованной целевой функции поиск экстремума градиентными методами осуществляется в пошаговом режиме, исходя из начальной точки x0i ; i =1,n, с поисковыми перемещениями xi агента по каждой координате и определением направления градиента для дальнейшего движения в сторону экстремума по стратегии крутого восхождения или наискорейшего спуска (см. рис. 2.10). Направление градиента на очередном шаге может быть определено также с помощью полного или дробного факторного эксперимента [19] с шагом варьирования xi по каждому фактору (рис. 2.11) и нахождением линейной множественной регрессии: n f( x1 ,..., xn )  b0   bi xi* , * где xi  xi  x xi 0 i (2.11) i 1 — относительные переменные к шагу варьи- рования xi . При этом важен правильный выбор шага варьирования xi, так как при малом шаге унимодальная область может остаться за пределами плана, а при большом — уравнение регрессии может быть неадекватным. Эффекты взаимодействия в данном случае не учитываются, так как нужно определить не саму поверхность отклика целевой функции, а лишь направление ее максимального изменения. При этом частные производные целевой функции по координатам
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 62 Глава 2. Стратегии поведения интеллектуальных агентов f( x1 ,..., xn )  bi xi и направляющие косинусы определяются как cos  i  bi n b , 2 i i 1 что существенно упрощает определение координат новой точки в направлении градиента по формуле     xi k  xi k 1  h cos  i . Рис. 2.11. Поиск экстремума градиентными методами с использова$ нием факторного эксперимента Однако реализация такой стратегии накопления информации и идентификации состояния агента в многофакторном пространстве оказывается затруднительной из-за большого числа опытов и невозможности их повторения в нестационарных средах и системах. В этих случаях следует воспользоваться симплексным планированием эксперимента, позволяющим с минимальным количеством проб определить очередное состояние агента, приближающее его к желаемой или заданной цели.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.3. Интеллектуальные стратегии принятия решения 63 2.3.3. Симплексные стратегии Симплексные стратегии основаны на понятии n-мерного симплекса — выпуклого многогранника в n-мерном пространстве, имеющего (n + 1) вершину. Так, в двумерном пространстве это равносторонний треугольник с тремя вершинами. Правильный симплекс имеет равные стороны или грани. Метод симплексного планирования не требует вычисления оценок коэффициентов регрессии и позволяет судить о локальном участке поверхности отклика по значениям целевой функции в вершинах симплекса вблизи текущего состояния агента. Сравнивая значения отклика в этих точках, агент выбирает среди них наилучшую точку и оценивает предпочтительное направление смещения своего состояния к оптимуму. Процедура экстремального поиска сводится к проведению измерений в вершинах симплекса и определению вершины с наихудшим значением целевой функции и противолежащей (n – 1)-мерной грани. Далее определяются координаты зеркальной точки, симметричной наихудшей вершине, и строится новый симплекс с центром, смещенным на один шаг в сторону экстремума (рис. 2.12). Таким образом, на каждом шаге поиска, независимо от числа факторов, требуется реализовать только один опыт в точке зеркального отражения наихудшей вершины k-го симплекса. Рис. 2.12. Симплексная стратегия поведения агента
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 64 Глава 2. Стратегии поведения интеллектуальных агентов Закручивание симплекса вокруг одной из вершин говорит о наличии экстремума в этой вершине. Для двумерного пространства с n = 2 это соответствует 6-кратному перекатыванию правильного симплекса вокруг одной и той же вершины, расположенной в экстремуме. При попадании зеркальной грани симплекса на «вершину хребта» поверхности отклика следуют возвратные отражения в одни и те же зеркальные точки, что также служит признаком нахождения экстремума и окончания поиска. В случае узкой области допустимых решений (ОДР) с внутренними запретными зонами используется гибкий, деформируемый симплекс, изменяющий свои размеры на каждом шаге в зависимости от коэффициента отражения  [50]. Тогда наряду с простым зеркальным отражением с  = 1 возможны операции растяжения ( > 1) и сжатия ( < 1) симплекса (рис. 2.13), позволяющие вписаться в сколь угодно жесткие условия и коридоры. Рис. 2.13. Растяжение и сжатие симплекса Если ОДР имеет внешние ограничения, определяющие верхнюю, нижнюю и боковые границы области, а также условия, описывающие внутренние запретные зоны, стратегия агента сводится к отысканию на очередном шаге наихудшей q-й вершины. симплекса xq и ее зеркальному отражению r. Для этого наихудшая вершина соединяется прямой линией с центром c противолежащей грани (см. рис. 2.13) и на ее продолжении отыскивается новая точка xr с координатами, большими координат точки простого зеркального отражения, т. е. для  > 1.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.3. Интеллектуальные стратегии принятия решения 65 Для n = 2 координаты центра противолежащей грани вычисляются как 1  x21  x31  ; 2 1 x2c   x22  x32  2 x1c  и в n-мерном пространстве: xic  1  n 1    xli  xqi  ; i = n, n  l 1  (2.12) где xli — i-я координата l-й вершины; xqi — i-я координата наихудшей вершины q. Тогда координаты новой r-й вершины зеркально отраженного симплекса с учетом коэффициента отражения определяются по формуле: xir  xic    xic  xqi  ; i = 1,n. (2.13) Если новая точка xs оказывается лучше наихудшей, то имеем новый симплекс; в противном случае следует попытка ее улучшения путем внешнего и внутреннего сжатия с обратным смещением точки r к центру и наихудшей вершине q (см. рис. 2.13) с определенным шагом изменения значения , например 0,5. Внешнее сжатие не повторяется бесконечно и ограничивается заданным максимальным числом попыток. Блок-схема общего алгоритма симплексной стратегии агента, показанная на рис. 2.14, включает: ввод координат (n + 1) вершин исходного симплекса xl i0, l = 1,n + 1; i = 1,n с вычислением целевой функции в каждой вершине, нахождение max{f (l)}; r = lmax с целью определения «закручивания» симплекса и формирование нового симплекса с деформированным отражением наихудшей вершины min{f(l)}; q = lmin в цикле a = 1.5, – 0.3 (– 0.3) определения координат отраженной вершины xqi = xi ; i = 1,n с улучшенной целевой функцией в области допустимых решений.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 66 Глава 2. Стратегии поведения интеллектуальных агентов Рис. 2.14. Блок$схема алгоритма поиска с деформируемым сим$ плексом
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.4. Индивидуальные и кооперативные стратегии агентов 67 Рис. 2.15. Пример поведения агента со стратегией деформирован$ ного симплекса Если новая точка нарушает одно или несколько заданных условий, то после внешнего сжатия в сторону центра симплекса следует внутреннее сжатие из центра в направлении предыдущей наихудшей точки до тех пор, пока не будут соблюдены все ограничения. Если сжатие по выбранному направлению не приводит к успеху, агент использует поиск вдоль другой оси симплекса от следующей вершины. Если и в этом случае не удается улучшить целевую функцию, агент останавливается. Процесс пошагового движения деформируемого симплекса в двумерном пространстве показан на рис. 2.15. 2.4. Индивидуальные и кооперативные ситуационные стратегии агентов Долговременные стратегии поведения агентов с аналогичными целями во всех случаях сводятся либо к индивидуаль-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 68 Глава 2. Стратегии поведения интеллектуальных агентов ному воздействию на среду, либо — в случае неэффективности индивидуальных действий — к поиску кооперативных, компромиссных совместных решений, ведущих к достижению общей цели. Так, например, в рыночной ситуации с конкурирующими фирмами — производителями товаров, борющимися за максимальную прибыль и долю рынка, поведение агента-производителя связано в первую очередь с выбором стратегии ценообразования с учетом стратегий других конкурентов. Как показывает анализ маркетинговых ситуаций [42], в процессе ценообразования на первой стадии при вхождении в рынок каждый продавец, следуя индивидуальной стратегии — «каждой цене своя доля рынка», пытается предложить свою цену ниже цен конкурентов. В последующих стадиях каждый продавец пытается удержаться на рынке и достичь возможно большей прибыли совместно с другими продавцами путем кооперации совместных действий с инициативными активными предложениями цены или пассивным согласием с предлагаемой ценой, обеспечивающей максимальную общую прибыль [55]. Выбор того или иного действия агента на очередном шаге зависит от характеристик агента-продавца Personality (экспрессивный агент-продавец изменяет цену более резко, чем спокойный), а также от начального значения критерия эффективности Crj выбранной стратегии (чем больше его значение, тем дольше действие первоначальной стратегии). В случае индивидуальной стратегии (рис. 2.16) агент-продавец стремится своими действиями захватить желаемую долю рынка MarketShare за счет снижения цены до некоторого предельного значения pmin (lowlimit). При цене, превышающей нижний предел, т. е. Pi , k-1 – Pimin > , и высокой доле рынка (0,8–1,0) продавец доволен и оставляет принятую цену без изменений Pi,k = Pi, k-1. В случае невысокого уровня (0,2–0,5) он уменьшает цену на расчетную единицу, чтобы привлечь большее число покупателей, и, если доля рынка совсем низка (меньше 0,2), прибегает к резкому снижению цены до уровня на q = 1–3 единицы выше самой низкой цены конкурентов в предшествующем периоде:
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.4. Индивидуальные и кооперативные стратегии агентов 69 Рис. 2.16. Блок$схема алгоритма поведения агента$продавца при индивидуальной стратегии захвата рынка Pi,k = min { Pj,k-1} + q; i, j = 1,n ; i  j. (2.14) Находясь в зоне еще достаточно высокой рыночной доли (0,5–0,8), агент может пытаться увеличить прибыль, повышая цену. Величина изменения в этом случае зависит от персональных характеристик продавца Personality (calm,
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 70 Глава 2. Стратегии поведения интеллектуальных агентов nervous) так, что нервный продавец (nerv) повышает цену максимально — до уровня на q = 1–3 единицы ниже самой высокой цены конкурентов в предшествующем периоде: Pi,k = max {Pj,k-1} – q ; i, j = 1,n ; i  j, (2.15) а спокойный (calm) — лишь на одну денежную единицу. Подобные действия происходят и в том случае, если цена подошла к своему нижнему пределу Pi, k-1 – Pimin < , продавцу уже невыгодно торговать, и нервный продавец поднимает цену до уровня, на единицу ниже самой высокой цены конкурентов предшествующего периода; в то же время спокойный агент повышает цену только на одну денежную единицу. Активная кооперативная стратегия агента-лидера Cooperation-leader заключается [40, 42] в нахождении совместно с другими продавцами цены, дающей максимальную общую прибыль при равномерном распределении долей рынка. Поиск общей цены начинается, когда все остальные продавцы переходят на пассивную стратегию Cooperation-follower (рис. 2.17). В случае, если существует хотя бы один l-й конкурент с индивидуальной стратегией (Cut-конкурент), активный агент-лидер, находясь в области нижнего ценового предела Pl,k-1 – Plmin < , в зависимости от психотипа Personality 1) либо максимально повышает цену (холерик, сангвиник — nervous), приближая ее к нижней цене конкурентов большим скачком цены: Plk = (1+T/a ) · min{Pj, k-1}; j = 1,n ; j  l, (2.16) где Plk — цена товара l-го агента-лидера в k-й период; a — константа психотипа, определяющая величину ценового скачка во времени T; 2) либо увеличивает ее на единицу цены товара (меланхолик, флегматик — calm): Plk = Pl,k-1 + 1, (2.17)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.4. Индивидуальные и кооперативные стратегии агентов Рис. 2.17. Блок$схема алгоритма поведения агента$лидера 71
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 72 Глава 2. Стратегии поведения интеллектуальных агентов сигнализируя Cut-конкуренту о своем намерении перейти на кооперативную стратегию. Но если предложение лидера не воспринято всеми, т. е. критерии эффективности Crj ранее принятой индивидуальной стратегии Cut-конкурентов остаются выше своего нижнего предела gmin и они продолжают сохранять цену предшествующего периода Pj,k = Pj,k-1, то лидер вновь снижает свою цену до уровня минимальной цены Cut-конкурента: Pl, k = min {Pjk-1} ; j =1,n ; j  l. (2.18) Этот процесс продолжается до тех пор, пока последний агент с индивидуальной стратегией при снижении ее эффективности до Crj  gmin не примет пассивную стратегию Cooperation-follower. В других случаях, когда цена не находится вблизи нижней границы, действия лидера зависят от доли рынка MShl,k в k-й период. При очень высокой доле рынка 0,8 < MShl,k-1  1 кооперативный лидер повышает свою цену на 1–3 единиц ниже максимальной цены в предшествующем периоде агентов с индивидуальной и пассивной кооперативной стратегиями аналогично (2.15): Pl,k = max {Pj,k-1} –1; j =1,n; j  l. (2.19) Его конечной целью является равномерное распределение рынка, и этим действием он уменьшает свою долю и увеличивает долю других агентов, так как при очень высокой доле его цена по сравнению с другими продавцами была значительно ниже. При достаточно высокой доле 0,5 < MShl,k-1  0,8 можно предположить, что лидер, действуя в том же направлении, не изменяет свою цену Plk = Pl,k-1 и ожидает, когда другие продавцы снизят свои цены или появятся другие факторы. В ситуации, когда возникает равная для n конкурентов средняя доля MShlk-1 = 1/n (при n = 2 MShlk-1 = 0,5), для принятия решения лидер использует в качестве переменной управления прибыль Profits (см. рис. 2.17). Если ее величина оказыва-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.4. Индивидуальные и кооперативные стратегии агентов 73 ется неизменной или больше, чем в предыдущем периоде с равными долями рынка, т. е. Profk-1 >= Profn , происходит увеличение цены: Plk = Plk-1 + 1, в противном же случае цена снижается действием Plk = Plk-1 – 1. Имея невысокую долю 0,2 < MShlk-1 < 0,5, кооперативный лидер не меняет своей цены (Plk = Plk-1), ожидая действий других агентов. При очень низкой доле лидер не может ждать, когда другие продавцы адаптируются к рынку, и снижает свою цену действием Plk = Plk-1– 1. Таким образом, при каждой стратегии агент-продавец принимает одно из тактических действий, связанных с назначением своей цены для следующего маркетингового периода с учетом персональных характеристик и состояния других агентов. С переходом всех агентов-продавцов на кооперативную стратегию начинается поиск оптимальной цены аналогично стратегии агента-лидера при равных долях рынка MShlk-1 = 1/n (см. рис. 2.17). При пассивной кооперативной стратегии i-го агента-продавца Cooperation-follower (рис. 2.18.), цель которой сводится к достижению средней общей доли рынка, также используются переменные MarketShare и Personality (calm, nervous). В случае высокой или очень высокой доли спокойный продавец, желая приблизиться к среднему уровню, повышает цену на единицу Pik = Pik-1 + 1, а в случае (nerv) изменяет ее действием (2.18). При сохранении доли рынка пассивного агента-продавца на среднем уровне его тактика ценообразования остается неизменной — действие Pik = Pik-1 . Если доля рынка находится в пределах низкого или очень низкого уровня, то спокойный агент (calm), считая, что его цена очень высока, уменьшает ее на единицу Pjk = Pjk-1 – 1, а экспрессивный (nerv), чтобы приблизиться к средней рыночной доле MShlk-1 = 1/n, производит действие (2.14) с назначением цены на единицу больше минимальной в предыдущем (k–1)-м периоде. Общий алгоритм выбора стратегии поведения агентов-продавцов в конфликтной рыночной среде показан на рис. 2.19.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 74 Глава 2. Стратегии поведения интеллектуальных агентов Рис. 2.18. Блок$схема алгоритма поведения агента$продавца при пассивной кооперативной стратегии торга Для управления стратегией вводятся две переменные, описывающие тип стратегии Strategie (индивидуальная стратегия Cut, стратегия кооперативного лидера Cooperation-leader, пассивная кооперативная стратегия Cooperation-follower), и критерий эффективности Criterium действующей стратегии относительно достижения цели. В начале моделирования для всех участников рынка задается число продавцов n, исходная индивидуальная стра-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.4. Индивидуальные и кооперативные стратегии агентов Рис. 2.19. Алгоритм выбора стратегии агента$продавца 75
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 76 Глава 2. Стратегии поведения интеллектуальных агентов тегия Cut с начальным значением критерия эффективности Cri0 (см. рис. 2.19) и максимальная прибыль Profn max, полученная ранее при равных долях рынка. Для оценки эффективности стратегии прибыль агента в текущем периоде Profi,k сравнивается с ее предшествующим значением Profi,k-1 и, если стратегия была успешна, коэффициент доверия к ней увеличивается на 30%, и наоборот. Первоначально заданная стратегия Cut сохраняется до тех пор, пока критерий эффективности не станет меньше своего нижнего предела gmin. Чем больше его начальное значение, тем дольше действие первоначальной Cut-стратегии. С переходом порогового значения стратегия Cut заменяется одной из кооперативных стратегий Cooperation с установкой исходного значения критерия эффективности Cri0 новой стратегии. При отсутствии лидера агент сам становится лидером со стратегией Strl = Cooplead. Если же кооперативный лидер определился ранее, то агент-продавец избирает пассивную стратегию Cooperation-follower и вводится накопительный массив стратегий агентов Strindp = Coopfoll с индексным массивом Indp для запоминания индексов продавцов, перешедших на пассивную кооперативную стратегию. Если не все продавцы перешли на кооперативную стратегию, т. е. при p < n – 1, в новом периоде k = k + 1 продолжают действовать стратегии Cut, Cooperation-leader и Cooperation-follower в соответствии с текущим статусом агентов. В случае p = n – 1 все агенты-продавцы переходят на кооперативную стратегию с лидером l и выбором действий в зависимости от приближения к пороговой величине критерия эффективности Cr = gmin. Механизм оценки и изменения критерия эффективности действий при кооперативной стратегии в принципе аналогичен действиям агента-лидера при равных долях рынка (см. рис. 2.17). Так как агент-продавец с Cooperationстратегией согласен делить рынок со своими конкурентами, он выбирает для сравнения тот период, в котором все продавцы имели равные доли рынка. Это может возникнуть только при равных ценах продавцов и одинаковых пред-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.4. Индивидуальные и кооперативные стратегии агентов 77 почтениях покупателей. Поэтому общая средняя прибыль текущего периода Profn,k сравнивается с максимальной прибылью Profn max, которая достигалась при равенстве цен всех продавцов, и, в зависимости от результата сравнения, оценка критерия эффективности Cri возрастает или снижается соответствующими действиями (см. рис. 2.20). Далее, если в наблюдаемый интервал времени k  const критерий эффективности совместных действий остается больше порогового значения Cri  gmin, следует продолжение принятой кооперативной стратегии в k = (k + 1)-м периоде с вычислением средней общей прибыли Profn,k и сравнением ее с Profnmax. В случае выхода за пороговое значение критерию эффективности присваивается новое значение Cri0 в кооперативной пассивной стратегии с последующим вычислением текущей прибыли и сравнением ее с Profn max. Моделирование кооперативных стратегий [55] сводится к воспроизведению переходных процессов стабилизации цены в задаваемой маркетинговой среде с варьированием параметров состояния и стратегий отдельных участников рынка. На рисунке 2.20 (см. цв. вклейку) показаны результаты одного из экспериментов в универсальной имитационной системе Simplex3 [47] с двумя спокойными агентами-продавцами: Seller1 (синяя линия) и Seller2 (красная линия), при начальных ценах Akt Price, соответственно, 55 и 49 условных единиц и критериях эффективности избираемой стратегии Criterium 150 и 100 баллов при 16 покупателях Buyer1 – Buyer16. В соответствии с алгоритмом управления стратегиями (см. рис. 2.20) агент 2 с начальной ценой 49 денежных единиц и меньшим значением критерия эффективности индивидуальной стратегии 100 отказывается от нее в момент T = 13 раньше 1-го агента и становится кооперативным Coop-лидером, увеличивая цену на единицу. Но в следующем периоде агент 1 продолжает Cut-стратегию, ожидая увеличение своей доли рынка. Однако отсутствие изменений цен обоих продавцов до момента T = 26 говорит агенту 2 о том, что его конкурент не желает изменять Cut-стратегию.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 78 Глава 2. Стратегии поведения интеллектуальных агентов Рис. 2.20. Процесс взаимодействия двух спокойных агентов при начальных ценах Akt Price = {55, 49}, критериях эффективности стра$ тегии Criterium {150, 100}; Person = {calm, calm} Тогда, действуя согласно (2.18), агент 2 приводит свою цену на уровень цены 1-го агента, который через два периода, следуя индивидуальной стратегии захвата рынка, вновь снижает цену на единицу. Агент 2 в свою очередь сохраняет цену, ожидая ответных действий. В момент T = 35 лидер вновь прибегает к действию (2.17), но конкурент повторяет свои индивидуальные действия. Наконец, в момент T = 45 агент 1 достигает порогового значения критерия эффективности индивидуальной стратегии и принимает пассивную кооперативную стратегию Coopfollower. В последующие периоды до T = 80 устанавливается оптимальная стабильная цена. При этом Coop-leader делает первый шаг и ожидает, пока пассивный агент Coop-follower последует за ним со своим предложением цены. На рисунке 2.21 (см. цв. вклейку) можно видеть, как экспрессивному агенту 2 (красная линия) потребовались две попытки, чтобы в момент Т = 28 убедить своего спокойного
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.4. Индивидуальные и кооперативные стратегии агентов 79 Рис. 2.21. Взаимодействие спокойного Seller1 и экспрессивно$ го Seller 2 агентов при ActPrice = { 55, 49 у.е.}, Criterium {150, 100 }; Person = {calm, nervous} конкурента — агента 1 (синяя линия) перейти на кооперативную стратегию со стабилизацией общей цены на уровне 55 денежных единиц. При этом хорошо видно влияние персонального признака — психотипа (nervous) на характер ценовых скачков 2-го агента, который уже при Т = 12 теряет уверенность в эффективности индивидуальной стратегии и резким ценовым скачком (2.16) делает первую попытку перехода к кооперативным действиям. В случае взаимодействия двух экспрессивных агентов (рис. 2.22, см. цв. вклейку) при тех же критериях эффективности и исходных ценах 55 и 47 денежных единиц в первый же период наблюдаются резкие ценовые скачки: агента 1 (синяя линия) до уровня, на три единицы выше минимального (2.14), и агента 2 (красная линия) на три единицы ниже максимального (2.15) уровня конкурента в предшествующий период.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 80 Глава 2. Стратегии поведения интеллектуальных агентов Рис. 2.22. Взаимодействие двух экспрессивных агентов при ActPrice = { 55, 47 у.е.}, Criterium {150, 100 }; Person = {nervous, nervous} В момент T = 21 временная единица агент 2 (красная линия), находясь в области нижнего ценового предела Pl,k-1 – Plmin < , но c критерием эффективности Crj > gmin (см. рис. 2.17), прибегает к резкому действию (2.16), поднимая цену до 57 ед. В то же время агент 1 (синяя линия), имея еще достаточный уровень эффективности индивидуальной стратегии и предполагая увеличить свою долю рынка, снижает цену на единицу действием Plk = Plk-1 – 1. Сразу после этого критерий эффективности стратегии агента 2 из-за малой прибыли падает так низко, что он действием (2.18) снижает цену до уровня минимальной цены Cut-конкурента — агента 1 (40 ед.), возвращаясь к его индивидуальной стратегии. В момент Т = 30 Criterium агента 2 становится ниже критического значения, и следует новый резкий скачок его цены (2.16) до 60 единиц. На что агент 1 отвечает экспрессивным скачком (2.15) до уровня, на три единицы меньше максимальной цены конкурента в предшествующем пери-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 2.4. Индивидуальные и кооперативные стратегии агентов 81 оде. Но уже в следующем периоде, после обмена противоположными скачками (2.15), (2.14), в Т = 35 агент 2 ценой 54 единицы вновь предлагает переход на кооперативную стратегию. В момент Т = 40 критерий Cut-стратегии агента 1 (синяя линия) доходит до своего порогового минимума, и агент принимает пассивную кооперативную стратегию. В последующие периоды кооперативный лидер (агент 2) проводит пошаговое повышение кооперативной цены, стабилизирующейся на уровне 55 денежных единиц.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Глава 3 ПРОГРАММНЫЕ СРЕДСТВА ИМИТАЦИОННОГО МОДЕЛИРОВАНИЯ АГЕНТОВ И МУЛЬТИАГЕНТНЫХ СИСТЕМ Построение и практическая реализация имитационной модели агентов и мультиагентных систем требуют значительно больших затрат по сравнению с математическим моделированием. Они связаны с разработкой имитационных систем, предоставляющих среду экспериментирования и средства описания моделей и организации эксперимента. Для построения и реализации имитационных моделей применяются специализированные объектно-ориентированные языки описания моделей, на основе которых разработаны современные системы имитационного моделирования GPSS, AnyLogic, Simplex3 и др. GPSS (General Purpose Simulation System) — классическая общецелевая система моделирования сложных систем с языком моделирования GPSS World [38]. Современная версия объектно-ориентированного языка GPSS World для персональных ЭВМ и ОС Windows разработана компанией Minuteman Software. GPSS World сочетает в себе функции дискретного и непрерывного моделирования, возможность перехода из дискретной фазы моделирования в непрерывную и обратно. Кроме того, она содержит элементы статистической обработки данных, обеспечивает связь с непрерывным моделированием, визуализацию и анимацию динамики состояния процесса моделирования. Проблемной областью GPSS является моделирование систем массового обслуживания на основе дискретно-событийных имитационных алгоритмов. Для наблюдения и взаимодействия с процессом моделирования используются двадцать различных окон, соот-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Глава 3. Программные средства имитационного моделирования 83 ветствующих большей части объектов GPSS. Язык обеспечивает ряд анимационных возможностей от абстрактной визуализации, не требующей никаких усилий, до высокореалистических динамических изображений, включающих в себя сложные элементы, созданные пользователем; имеется внешний интерфейс, который может поддерживать анимационные пакеты, управляемые трассировочными данными. GPSS World имеет набор PLUS-процедур динамического вызова функций из внешних исполняемых файлов, что обеспечивает оперативную связь с анимационными пакетами других разработчиков. AnyLogic — универсальная система имитационного моделирования нового поколения [21], разработанная российской компанией XJ Technologies на основе современных информационных технологий с графическим построением моделей и программированием на объектно-ориентрованном языке Java, а также использованием визуальных, гибких, расширяемых стандартизированных объектов и интерактивных 2D- и 3D-анимаций, отображающих результаты работы модели в реальном времени. AnyLogic поддерживает все элементы системной динамики: накопители, потоки, обратные связи, задержки, вспомогательные переменные, табличные функции, массивы и уравнения над ними и т. д. В отличие от традиционных инструментов, AnyLogic обеспечивает существенно лучшую структуризацию моделей за счет понятия объекта, интерфейса и иерархии. Кроме того, AnyLogic позволяет воспроизвести сколь угодно сложную дискретно-событийную логику при помощи диаграмм состояний или диаграмм процессов, связывая ее с системно-динамической частью, увязав структуру и поведение. Универсальная система имитационного моделирования AnyLogic предлагает значительно больше средств описания структуры, поведения и данных моделируемой системы, чем другие системы имитационного моделирования. Это объекты, интерфейсы и иерархия, блочные диаграммы, диаграммы состояний, таймеры, порты и передача сообщений, переменные, алгебраические и дифференциальные уравне-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 84 Глава 3. Программные средства имитационного моделирования ния, а также возможность добавления операторов, функций и библиотек на языке Java в любом месте модели. Одним из наиболее важных преимуществ AnyLogic является возможность быстрого построения мультиагентных моделей. Активные объекты AnyLogic могут создаваться и уничтожаться, динамически перемещаться, общаться друг с другом, иметь поведение, знания, цели, стратегию поведения индивидуумов и их взаимодействия друг с другом и окружающей средой. К недостаткам следует отнести зависимость от конкретной реализации Java, коммерческий характер разработки рабочей версии AnyLogic, высокие системные требования и стоимость продукта. Simplex3 — универсальная имитационная система [51], свободная от вышеотмеченных недостатков, разработанная в университетах Нюрнберг–Эрланген и Пассау (Германия). Она включает в себя полную среду экспериментирования и собственный объектно-ориентированный язык Simplex-MDL компактного описания непрерывных и дискретных моделей, дискретно-событийных моделей очередей и систем массового обслуживания, ситуационных и транспортных моделей в виде базисных и мобильных компонентов, их взаимосвязей и динамики поведения, временных и условных событий, приоритетов и процедур. Язык моделирования Simplex-MDL основан на концепции теории систем, содержит элементы логического программирования. Он использует кластерный принцип; расширяет объектно-ориентированный подход с помощью дополнительных механизмов связи между компонентами; делает возможным иерархическое структурирование моделей и пошаговую разработку модели, быстро собираемую из прототипов. Главным достоинством языка Simplex-MDL является простота описания моделей сложных объектов в форме, близкой к естественным параметрическим описаниям текущего состояния, сенсорных связей с другими объектами и динамики изменения состояния с помощью известных математических средств и дискретно-событийного описания.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.1. Функциональная структура системы Simplex 3 85 Достоинствами системы является также ее многоплатформенность, т. е. кроссплатформенное приложение; инсталляция на платформе Windows через Cygwin с возможностью работы в Unix-системах; возможность подключения внешних модулей на языке C++ и интерактивность (возможность передачи интерактивных операторов любой сложности и включения их в процесс моделирования). Simplex3 является наиболее эффективным и легко осваиваемым инструментарием реализации агентных технологий и мультиагентного имитационного моделирования больших и сложных систем любой физической, производственной, социальной и биологической природы с созданием моделей интеллектуальных агентов с алгоритмами принятия решений и искусственного интеллекта. Система Simplex3, созданная в академической среде, не предназначена для коммерческого использования, не требует больших материальных затрат и глубоких профессиональных навыков программирования на языках высокого уровня, что существенно облегчает процесс индивидуального обучения искусству моделирования и имитации в учебных заведениях и научных исследованиях в любой сфере деятельности. 3.1. Функциональная структура универсальной имитационной системы Simplex 3 Универсальная система имитационного моделирования Simplex3 [37, 51] включает в себя библиотеку моделей, среду экспериментирования и специализированный объектноориентированный язык описания моделей Simplex3-MDL (Model Description Language). Среда экспериментирования предоставляет пользователю возможность построения модели, средства организации и управления экспериментом с анализом и представлением результатов имитации. Среда экспериментирования является центральным блоком функциональной структуры системы (рис. 3.1) и непосредственно связана с банком моделей, в котором происходит накопление и модификация моделей
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 86 Глава 3. Программные средства имитационного моделирования Рис. 3.1. Функциональная структура имитационной системы Simplex3: 1 — доступ к параметрам модели; 2 — актуализация; 3 — запуск моделей; 4 — имитационные данные и их компонентов, банком данных имитационных экспериментов и средствами представления результатов. Накапливаемые модельные данные и результаты архивируются и используются для последующего анализа, воспроизведения и представления на экране. Объектно-ориентированный язык описания моделей Simplex3-MDL обеспечивает описание состояния и динамики поведения агентов в непрерывных и дискретно-событийных моделях, моделях массового обслуживания, транспортных и ситуационных моделях в различных областях знаний. Мультиагентная модель реальной системы составляется: 1) из базисных компонентов, описывающих состояние и динамику поведения агентов; 2) функциональных компонентов, описывающих сложные вычисления в алгоритмах поведения и взаимодействия агентов; 3) компонентов верхнего уровня, задающих структуру взаимосвязей между базисными компонентами смежного нижестоящего уровня;
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.1. Функциональная структура системы Simplex3 87 4) мобильных компонентов — для описания сообщений и перемещающихся объектов, размещаемых в накопительных массивах и образующих очереди на обслуживание. Модели имеют собственное имя и могут состоять из одного или нескольких компонентов. Компоненты модели, описываемые на объектно-ориентированном языке, объединяются в иерархические модели различной сложности (рис. 3.2) компонентами вышестоящего (верхнего) уровня. Рис. 3.2. Мультиагентная структура имитационной модели Каждый агент в свою очередь может быть представлен в виде подсистемы агентов, составляющих нижерасположенный смежный уровень иерархии модели (рис. 3.3). Рис. 3.3. Структура агентной подсистемы, объединяемой компонен$ том вышестоящего уровня Первоначальное описание моделей, версий и компонентов компилируется в объектные модули, которые связываются с системой реального времени, и во взаимосвязанной структуре становятся работоспособной имитационной моделью.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 88 Глава 3. Программные средства имитационного моделирования Для выполнения эксперимента компоненты извлекаются из библиотеки, объединяются в модели и актуализируются в программе имитации. Наиболее важные элементы языка Simplex-MDL связаны с синтаксическим описанием базисных и мобильных (передвижных) компонентов, компонентов верхнего уровня; алгебраических и дифференциальных уравнений; событий; пространства состояний; накопительных массивов и полей. 3.2. Объектно5ориентированное описание агентов в Simplex3 При создании мультиагентных моделей в универсальной имитационной системе Simplex3 состояние и поведение агентов описывается в автономных конструктивных блоках в виде базисных компонентов, содержащих декларирование переменных состояния и взаимосвязей, а также раздел динамики изменения состояния и поведения агента. Синтаксис описания базисного компонента на языке описания моделей Simplex3-MDL выглядит следующим образом: BASIC COMPONENT < имя > [мобильные компоненты] [базовые единицы измерения] [локальные определения — массивы, функции, законы распределения] DECLARATION OF ELEMENTS [константы] [независимые переменные состояния] [расчетные переменные] [сенсорные переменные] [случайные переменные] [индикаторы переходов] [сенсорные индикаторы] [накопительные массивы] [сенсорные накопители]
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.2. Объектно$ориентированное описание агентов в Simplex3 89 DYNAMIC BEHAVIOUR алгебраические уравнения дифференциальные уравнения | области определенных состояний | события END END OF < имя > Независимые переменные состояния (State Variables) описывают динамические свойства агента и разделяются на четыре группы: переменные состояния агента, случайные переменные, указатели переходов (индикаторы) и накопительные массивы (Locations). Расчетные переменные (Dependent Variables) являются функциями переменных состояния и вычисляются с помощью алгебраических уравнений и формул. Сенсорные переменные (Sensor Variables) — переменные, значения которых передаются от одного агента к другому и таким образом определяют связи между агентами внутри мультиагентной системы. С помощью сенсорных переменных возможен доступ к переменным состояния других агентов. Индикаторы переходов (Transition Indicators) используются для указания начала и окончания определенного состояния агента или события. Накопительные массивы (Locations) предназначены для размещения и упорядочивания передвижных объектов в виде мобильных компонентов мультиагентной системы. Квадратные скобки означают, что соответствующие описания могут быть пропущены, однако их последовательность должна строго соблюдаться. Ключевые слова обозначают жестко установленные составные части синтаксиса и записываются большими буквами. Элементы описания разделяются запятой за исключением последнего элемента. Операторы всегда заканчиваются точкой с запятой. Модельные переменные, отражающие свойства (атрибуты) агента, могут быть дискретными (Discrete) и непрерывными (Continuous) и различаются по типу: Integer
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 90 Глава 3. Программные средства имитационного моделирования (целочисленный), Real (вещественный), Logical (булевый) и назначаемый пользователем. Для описания динамики модели используются:  алгебраические уравнения;  дифференциальные уравнения любого вида, в том числе нелинейные 1-го порядка и уравнения в частных производных, для описания динамики непрерывных процессов;  события, описывающие дискретные изменения переменных состояния в дискретных моделях. Описание областей динамики состояний агентов связано с условными событиями и продукционными правилами, определяющими условия того или иного поведения агента. В комбинированных моделях агентов с непрерывным изменением его состояния и дискретными ситуациями взаимодействия, резко изменяющими его поведение, дифференциальные уравнения дополняются дискретными событиями. Имитационное моделирование в общем случае может быть разделено на три составные части, включающие: 1) разработку моделей интеллектуальных агентов и объединение их в мультиагентную систему; 2) создание экспериментальной среды с описанием эксперимента; 3) анализ, оценку и представление результатов эксперимента. 3.3. Имитационное моделирование в системе Simplex3 После запуска Simplex3 открывается экран со структурой меню, ориентированной на Windows-стандарт (рис. 3.4). В левой части экрана расположен объектный навигатор Simplex3, подобный навигатору Windows-Explorer. После запуска в окне навигатора появляются две директории библиотек моделей — Pub (общедоступный) и Priv (персональный), содержащие в данном случае папки моделей Biotope, CedarBog, Queue, Taxi. В каждый объект можно войти
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.3. Имитационное моделирование в системе Simplex3 91 Рис. 3.4. Структура меню с каталогом библиотек моделей простым нажатием левой клавиши мыши. Содержание выбранных объектов раскрывается в окне справа от объектного навигатора. С помощью правой кнопки мыши представляются дополнительные команды в виде контекстного меню для выбранного объекта. Кнопка остается нажатой до окончания выбора команды. Недоступные команды контекстного меню и в линейке клавиш показаны на сером фоне. Ниже объектного навигатора расположены окна отображения текущих сообщений, интерпретатора команд и указания текущего состояния. В верхней части экрана, ниже Windows-меню (File, Edit, View и т. д.), располагается панель инструментов в виде линейки функциональных клавиш (рис. 3.5) для быстрого доступа к часто используемым командам. Первые три кнопки служат для создания, открытия и печати Simplex-объектов, а именно: банков моделей, ком-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 92 Глава 3. Программные средства имитационного моделирования Рис. 3.5. Панель инструментов понентов, блоков эксперимента и представления результатов. Далее следуют клавиши с символическим обозначением функции: вырезать, копировать, вставить, дублировать. Следующие, специфичные для Simplex3 кнопки, позволяют произвести проверку компонента (Check), создание или инсталляцию модели, подготовку эксперимента и запуск процесса имитации, представление результатов, повторные операции с Simplex-объектами. 3.3.1. Библиотеки моделей и диалоговый интерфейс Имитационная система Simplex3 включает открытую (pub) и персональную (priv) библиотеки моделей, каждая из которых может содержать любое число моделей. Пользователь работает только с банками моделей и компонентами своей Рис. 3.6. Окно копирования банка моделей
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.3. Имитационное моделирование в системе Simplex3 93 персональной библиотеки (priv). Поэтому модели из общедоступной библиотеки копируются в подсистему частного пользовательского банка (рис. 3.6). Для копирования выбранного банка моделей в библиотеке pub из контекстного меню правой клавишей мыши следует задать команду Copy, по которой банк перемещается в промежуточный буфер. Далее открыть библиотеку priv, в которую переносится выбранный банк моделей по команде Past (вставить). При вхождении в директорию банка на экране представляется следующая структура меню (рис. 3.7): Компоненты Модели Эксперименты Командные процедуры Диаграммы Внешние функции (Components) (Models) (Experiments) (Procedures) (Diagrams) (External functions). Рис. 3.7. Окно банка моделей Biotope
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 94 Глава 3. Программные средства имитационного моделирования Все операции создания, редактирования и подготовки версий компонентов модели осуществляются при вхождении в директорию Components главного меню системы. При этом в окне содержания появляется таблица с перечислением компонентов и версий. Так, выбранный в окне навигатора (рис. 3.7) банк моделей Biotope (хищники и жертвы) содержит три базисных компонента с версиями, а именно: Biotope_1 с двумя версиями Version0 и Version1, Biotope_2 и Biotope_3 с начальными, нулевыми версиями Version. Актуализированной может быть только одна версия, отмеченная в окне содержания тройной стрелкой и желтым фоном в объектном навигаторе. Первоначально по умолчанию актуализированной является нулевая версия Version0. Для работы с другой версией, например с Version1, нужно установить курсор на ее указатель и в контекстном меню выбрать команду Current version (текущая версия). Тогда в окне навигатора данная версия отмечается как актуальная, и в окне содержания появляется ее MDL-программа. При возврате в директорию Components в окне содержания актуальная версия отмечается тройной стрелкой <<< и состоянием Unchecked (не проверена). Состояние, в котором находится в текущий момент актуализированная версия компонента, отмечается в объектном навигаторе цветом символа компонента:  красный: Unchecked ;  желтый: Syntax OK ;  зеленый: Shecked ;  голубой: Prepared ;  серый: Ucertain. Для проверки правильности синтаксиса Simplex-MDL выбранной версии задать команду Prepare version, по которой версия переводится в состояние Prepared (подготовлена). Для создания работоспособной модели актуализированные версии компонентов встраиваются в структуру моделей, что достигается тремя способами: 1) командой Install Model в контекстном меню выбранного компонента в директории Components;
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.3. Имитационное моделирование в системе Simplex3 95 2) функциональной клавишей с символом молотка в инструментальной панели верхней части экрана; 3) командой New model в контекстном меню директории Models. В первых двух случаях имя модели автоматически задается идентично имени выбранного компонента. В третьем случае в окне содержания предлагается список всех компонентов, содержащихся в этом банке, и диалоговое окно для ввода имени модели. Далее выберите требуемый базисный компонент, после чего его актуализированная версия (Version1) включается в новую модель с последующей компиляцией в готовую к выполнению программу с состоянием Prepared. В результате получаем объектный модуль модели, готовый к проведению эксперимента. 3.3.2. Организация эксперимента Для подготовки эксперимента выделите директорию Experiments и на панели инструментов (см. рис. 3.5) нажмите клавишу с изображением лейки или в контекстном меню задайте команду New Experiments. При необходимости можно использовать ранее подготовленный эксперимент с переименованием. Эксперимент состоит из отдельных запусков процесса имитации, в каждом из которых можно использовать собственную модель, имеющуюся в директории Models. Таким образом, внутри одного эксперимента можно работать с различными моделями и сравнивать результаты моделирования. Для описания нового запуска Run после селекции Experiment в контекстном меню задайте команду New run и запустите одну из имеющихся моделей. Директория запуска Run включает следующие разделы меню:  прерывания (Breaks);  контрольные параметры (Control parameters);  блоки наблюдения (Observers);
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 96 Глава 3. Программные средства имитационного моделирования  результаты имитации  протоколы (Simulation results); (Protocols). Прерывание определяет момент времени, до которого выполняется этап имитации. Анализ и представление результатов, а также изменение параметров модели для продолжения эксперимента возможны только в точках прерывания. Программа моделирования начинается от Т = 0 командой Break0 до Т = 10. В точке Т = 10 создается команда прерывания Break1 для следующего этапа, например до Т = 20. Команда Break1 содержит конечное состояние предшествующего этапа (файл end), изменения одного или нескольких параметров модели в файле изменений Change и новое начальное состояние, с которого стартует следующий этап. Содержание файла изменений отображается в окне содержания при вхождении в директорию Modifications. Контрольные параметры отражают ход имитации. Они перечисляются и могут быть изменены в директории Control parameters. Блоки наблюдения (Observers) обеспечивают регистрацию и представление выбранных параметров модели в ходе имитации. Так, в модели Biotope_1 «хищники (Fox) и жертвы (Hare») [34] задаются два наблюдателя с именами Obs1 и Obs2, соответственно, для регистрации переменных состояния Hare и Fox и их производных Hareʹ и Foxʹ в виде временных зависимостей. Для этого в директории Observer выберите команду контекстного меню New Observer. В появляющемся подменю выберите желаемый вид регистрации, в данном случае Complete timeseries (полный временной ряд) и задайте имя наблюдателя, временной диапазон наблюдения, величину шага (1;10;0.1) и регистрируемые переменные модели (например, для Obs1 — Hare и Fox). Возвращаясь для проверки в директорию Observer, в правом окне можно видеть все установленные параметры наблюдения. Таким же образом создается блок наблюдения Obs2 с теми же атрибутами, например, для переменных Hareʹ и Foxʹ. Если наблюдатель не создан, регистрация не
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.3. Имитационное моделирование в системе Simplex3 97 произойдет, и в конце этапа имитации будет представлено одно конечное состояние End. Проведение эксперимента начинается командой Start Simulation в контекстном меню директории Run. В результате эксперимента, продолжавшегося до заданного времени прерывания Break0, Break1 и т. д., устанавливается конечное состояние End пройденного этапа имитации, представляемое в открывающемся окне. Анализ и представление результатов имитации осуществляется в разделе Simulation results, где накапливаются временные измерения переменных модели, описанных в блоках наблюдения. Обозначение временного графика составляется из имени блока наблюдения, имени модели и наблюдаемой переменной, отделенными знаком #, например: Obs1 # Biotope1 Hare и Obs1 # Biotope1 Fox. Выделяя курсором обозначенные переменные и задавая команду Analyse and present (анализ и представление), в открывающемся окне в контекстном меню директории Simulation results получаем список различных методов отображения результатов (Complete timeseries, State space, …) и доступ к ним через всплывающее меню. По умолчанию временные ряды представляются в форме графиков. 3.3.3. Общий порядок подготовки моделей и проведения эксперимента Первым шагом в работе с моделью является проверка синтаксиса MDL-описания компонента. Красный фон изображения версии компонента в навигаторе означает, что она не проверена. В этом случае установите курсор на выбранной версии и нажмите кнопку проверки компонента на панели инструментов (см. рис. 3.5). После этого фон изображения компонента станет зеленым. Для построения модели установите курсор на директории компонента и нажмите кнопку с изображением молотка (см. рис. 3.5). При выборе команды New model последует запрос ввода имени новой модели. Для создания эксперимента установите курсор на директории модели и нажмите кнопку с изображением лейки. Появится папка work с директорией run.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 98 Глава 3. Программные средства имитационного моделирования Далее по схеме «Observer  New observer  Complete timeseries…» создайте наблюдатель Observer для наблюдения за переменными состояния Models variables, задаваемыми в окне редактирования наблюдателя (рис. 3.8) с установкой шага и интервала наблюдения. Рис. 3.8. Окно создания и редактирования наблюдателя Установив курсор на run, нажмите кнопку начала имитации с изображением бегущего зайца на панели инструментов. Появится окно (рис. 3.9), в котором задаются начальное и конечное время имитации. Далее после нажатия
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.3. Имитационное моделирование в системе Simplex3 99 клавиши ОК и окончания имитации в заданное конечное время в папке результатов Simulation results появятся обозначения наблюдаемых переменных, указанных в блоке наблюдения. Для просмотра диаграмм выделите имя одного или нескольких параметров наблюдения и нажмите клавишу панели инструментов (см. рис. 3.5) с изображением столбцовой диаграммы. На экране появятся графики изменения заданных переменных во времени. Крайняя клавиша панели с изображением символического крестика отменяет результаты последнего запуска и приводит модель в начальное состояние для новых запусков. Представление результатов возможно также в виде протоколов, пространства событий state space, гистограмм histogram, круговых и столбцовых диаграмм и др. Рис. 3.9. Окно для задания интервала наблюдения Для создания нового компонента активизируйте директорию Components и в ее контекстном меню выберите команду New Component. В правом окне экрана откроется среда редактирования и набор описания компонента. Общий порядок создания новой модели сводится к следующим действиям. 1. Выделите директорию priv, в ее контекстном меню задайте команду New library… (создать новую библиотеку) и введите имя модели. Войдите в директорию Components и
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 100 Глава 3. Программные средства имитационного моделирования по команде New component (создать новый компонент) наберите текст нового компонента с именем, совпадающим с именем банка модели. При этом после задания имени компонента появится окно редактирования, куда вводится описание компонента. Далее для его проверки и компиляции дайте команду Prepared. Для инсталляции модели войдите в директорию Models и сформируйте новую модель по команде New model. 2. Войдите в директорию Experiments. В контекстном меню выберите команду New Experiment и организуйте новый запуск Run1 с помощью команд New run, New observer и др. 3. Запустите процесс имитации командой Start simulation в контекстном меню Run1. В точке прерывания этапа имитации выберите позицию Break1 и задайте команду Show and state (показать конечное состояние). 4. Выберите команду Simulation results и соответствующие переменные модели, после чего вызовите команду Analyse and present и задайте форму представления. В каталоге Statistics директории Protokols записывается информация о ходе процесса имитации, например число шагов интегрирования, средняя величина шага и другая информация. 3.4. Объектно5ориентированное моделирование агентов с непрерывной динамикой поведения в Simplex35MDL В непрерывных объектно-ориентированных моделях агентов переменные состояния являются непрерывными, и динамика поведения описывается дифференциальными и алгебраическими уравнениями. Примером может служить имитация непрерывного изменения состояния пароинжекторного смесителя (рис. 3.10), широко используемого в различных технологиях по переработке сырья для подогрева горячей воды, высокотемпературного нагрева и т.п.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.4. Объектно$ориентированное моделирование агентов 101 Рис. 3.10. Параметрическая модель пароинжекторного смесителя: T1, T2, Ts, T — температура продукта, теплоносителя, смеси на выходе и внутри смесителя соответственно, [С]; G1, G2, G3 — расход продукта, те$ плоносителя и выходной смеси, [кг/с];  — плотность смеси внутри смеси$ теля, [кг/м3]; c1, c3, c — удельная теплоемкость продукта и смеси на выходе и внутри смесителя, [Дж/(кг°С)]; i — удельная интальпия теплоносителя, [Дж/кг]; V — объем смесителя, [м3] Динамика изменения состояния смесителя описывается дифференциальным уравнением 1-го порядка: dT 1   K1G 2  K2 T1  T  , dt  где   V — постоянная времени смесителя, [с]; G3 K1  i , [(с · С)/кг]; G 3 c3 K2  G1c1 — расчетные коэффициенты. G 3 c3 Значения параметров смеси на выходе совпадают с соответствующими значениями параметров состояния смесителя, т. е. T3 = T; c3 = c; 3 = . Для заданных значений констант и переменных составляется описание компонента Injector (листинг 3.1) в соответствии с синтаксической формой языка описания моделей Simplex-MDL. В MDL-описании модели в виде базисного компонента (листинг 3.1) после ключевого слова BASIC COMPONENT укажите имя модели Injector. Мобильные компоненты, случайные величины и локальные определения в данном случае не требуются, и разделы с их описанием отсутствуют.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 102 Глава 3. Программные средства имитационного моделирования BASIC COMPONENT Injector USE OF UNITS TIMEUNIT = [s] # единица времени – секунда DECLARATION OF ELEMENTS CONSTANT # константы G1 (REAL[kg/s]) := 1.2 [kg/s] , G2 (REAL[kg/s]) := 0.31 [kg/s] , G3 (REAL[kg/s]) := 1.4 [kg/s] , C1 (REAL[J/(kg*Cel)]) := 3990 [J/(kg*Cel)] , # Cel – градус Цельсия C3 (REAL[J/(kg*Cel)]) := 4400 [J/(kg*Cel)] , T1 (REAL[Cel]) := 10 [Cel] , # температура продукта I (REAL[J/kg]) := 2620390 [J/kg] , # интальпия теплоносителя V (REAL[m^3]) := 0.0072 [m^3] , # объем смесителя Ρ (REAL[kg/m^3]) := 1005 [kg/m^3] # плотность смеси STATE VARIABLES # переменные состояния CONTINUOUS Ts (REAL [Cel]) := 10 [Cel] # температура смеси DEPENDENT VARIABLES # расчетные переменные CONTINUOUS tau (REAL[s]) :=0 [s], # постоянная времени смесителя # коэффициентов дифф. уравнения K1(REAL[s*Cel/kg]) := 0 [s*Cel/kg] , K2(REAL) := 0 # динамика поведения # вычисление постоянной времени и коэффициентов дифф. уравнения tau := (V*P)/G3 ; K1:= I / (G3*C3) ; K2 := (G1*C1) / (G3*C3); DIFFERENTIAL EQUATIONS Ts ‘ := (K1*G2 + K2*T1 – Ts) / tau ; # дифференциальное уравнение нагрева END END OF Injector DYNAMIC BEHAVIOUR Листинг 3.1. MDL5описание компонента Injector
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.4. Объектно$ориентированное моделирование агентов 103 Декларирующая часть DECLARATION OF ELEMENTS содержит в списке декларируемых элементов в установленной последовательности константы, независимые переменные состояния и зависимые расчетные переменные. Для переменных состояния и зависимых переменных укажите характер изменения во времени, в данном случае CONTINUOUS, т. к. все переменные модели являются непрерывными. Далее укажите тип переменных REAL и единицы измерения. Отсчет времени Т в процессе имитации происходит автоматически, и его объявление не требуется. В разделе динамики (см. листинг 3.1) записаны алгебраические уравнения для расчетных переменных tau, К1, К2 и после ключевого слова DIFFERENTIAL EQUATIONS — дифференциальное уравнение изменения непрерывной переменной состояния Ts. Описание компонента проверяется на синтаксис, компилируется в объектный модуль и используется для реализации модели Injector. Для представления результатов в желаемой форме создайте блок наблюдения Observer переменной Ts, температуры смеси на выходе инжектора, в виде временных графиков Complete timeseries. Имитационный процесс будет проводиться от Т = 0 до заданного момента времени. При этом указанные в директории Simulation results временные зависимости представляются в виде графиков (рис. 3.11), отражающих изменение во времени температуры смеси в пароинжекторном смесителе для задаваемых значений параметров входных потоков и инжектора. При заданном расходе смеси 1,4 [кг/с] температура на выходе смесителя в течение 30 с достигает 140 С. С увеличением расхода смеси G3 [кг/с] температура установившегося режима T3 = T снижается. По окончании имитации банк моделей можно удалить командой Delete. Рассмотренная модель инжектора является примером непрерывной модели пассивного агента с непрерывным изменением состояния, описываемым дифференциальным уравнением 1-го порядка для заданных констант и переменных состояния.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 104 Глава 3. Программные средства имитационного моделирования Рис. 3.11. Изменение температуры смеси в пароинжекторном сме$ сителе Другим примером построения непрерывных моделей взаимодействия активных элементов является обобщенная модель Лотки–Вольтерры, описывающая динамику n-видовой системы с помощью системы обыкновенных дифференциальных уравнений: dxi  xi dt n    ri   bij x j  ; i  1, n , j 1   (3.1) где xi — численность популяции i-гo вида; ri — коэффициент собственного изменения численности i-гo вида; bij — коэффициент влияния j-гo вида на i-й. При положительных значениях bij > 0 имеем систему с дружественными отношениями. Отрицательные bij < 0 означают конкурирующие взаимодействия. Если пара коэффициентов bij и bji имеет противоположные знаки, то модель описывает ситуацию подавления одного вида другим. Таким образом, задавая значения коэффициентов влияния, можно воспроизвести любые комбинации межвидового взаимодействия.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.4. Объектно$ориентированное моделирование агентов 105 Так, динамика состояния активной биосистемы из трех взаимодействующих видов микробиологических штаммов Vid1 — Vid3 в конкретном развернутом виде описывается системой дифференциальных уравнений с заданными коэффициентами [30]: dV id1  V id1   1.5  0.2  V id1  0.96  V id2  0.4  V id3  ; dt dV id2  V id2   1.0  1.0  V id1  0.5  V id2  0.7  V id3  ; dt dV id3  V id3   0.4  0.5  V id1  0.7  V id2  0.1  V id3  . dt (3.2) Состояние биосистемы определяется переменными Vid1, Vid2, Vid3, описывающими численность соответствующих популяций. MDL-описание базисного компонента Biosystem межвидового взаимодействия в активной биологической системе представлено в листинге 3.2. BASIC COMPONENT Biosystem USE OF UNITS UNIT[NumVid1] = BASIS # численность популяций TIMEUNIT = [a] # время в секундах DECLARATION OF ELEMENTS CONSTANTS # коэффициенты собственных изменений численности # популяций: r1 (REAL):= 1.5 , r2 (REAL):= 1.0 , r3 (REAL):= 0.4, # коэффициенты влияния B11(REAL):= -0.2, B12(REAL):= 0.96 , B13(REAL):= -0.4 , B21(REAL):= -1.0 , B22(REAL):= -0.5, B23(REAL):= 0.7, B31(REAL) := 0.5 , B32(REAL):= -0.7 ,B33(REAL):= -0.1 STATE VARIABLES CONTINUOUS # начальная численность популяций Vid1 (REAL) := 15, Vid2 (REAL) := 20, Vid3 (REAL) := 10 DYNAMIC BEHAVIOUR DIFFERENTIAL EQUATIONS Vid1’ := Vid1*(r1+B11*Vid1+B12*Vid2+B13*Vid3) ; Vid2’ := Vid2*(r2+B21*Vid1+B22*Vid2+B23*Vid3) ; Vid3’ := Vid3*(r3+B31*Vid1+B32*Vid2+B33*Vid3) ; END END OF Biosystem Листинг 3.2. Базисный компонент Biosystem
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 106 Глава 3. Программные средства имитационного моделирования При заданных коэффициентах взаимодействия bij и bji с противоположными знаками имеем картину совместного подавления взаимодействующих видов (рис. 3.12). Рис. 3.12. Взаимодействие видов при противоположных знаках bij и bji Рис. 3.13. Колебательный процесс взаимодействия трех антогони$ стических видов
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.5. Дискретно$событийные имитационные модели 107 При определенных соотношениях коэффициентов можно наблюдать более длительный колебательный затухающий процесс взаимного подавления отдельных взаимодействующих видов во времени (рис. 3.13). 3.5. Дискретно5событийные имитационные модели в программной среде Simplex35MDL Описания синтаксиса непрерывных моделей применимы и для дискретных моделей, описывающих изменение состояния объекта в виде последовательности дискретных временных событий [35]. 3.5.1. Средства и структура описания событий Событие отражает изменение состояния переменных модели в дискретные моменты времени. Описание события в определенной синтаксической форме содержит в заданной последовательности механизм запуска (включения), процедурную часть и описание переходов состояния. Синтаксическая форма оператора запуска имеет два варианта: WHENEVER < условие > | ON < индикатор > {OR < индикатор >} DO < изменение состояния переменных модели> END Синтаксическая форма WHENEVER (до тех пор, пока) воспроизводит событие до тех пор, пока заданное в заголовке логическое условие истинно TRUE. Для исключения повторения события изменение состояния должно приводить условие к значению FALSE. Например, событие в модели окружающей среды: «Если отложения Org на дне водоема превышают допустимую норму 30 т, водоем очищается» — описывается действием Org = 0[t]. WHENEVER Org > 30[t] DO Org ^ := 0[t]; END
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 108 Глава 3. Программные средства имитационного моделирования Изменяющаяся переменная состояния Org в описании события отмечается знаком ^ и в результате принимает значение Org = 0[t]. При этом условие становится ложным, и запуск события не повторяется. В условие могут входить операторы = (равно) для всех переменных, кроме логических типа Logical, <> (не равно), а также операторы > ; >= ; < ; <= . В условие можно вводить текущее время Т как переменную типа REAL с оператором '> = '. Например, если первая очистка водоема должна произойти не ранее одного года, т. е. Т = 1.0[a], то условие записывается как WHENEVER ( T >= 1.0[a] ) AND ( Org >30[t] ) Конструкцией WHENEVER могут быть описаны все условные дискретные переходы, однако существуют случаи, когда данная форма без дополнений становится некорректной. Например, при значении переменной состояния Priсe ниже среднего рыночного уровня Аverprice [Euro] дать сообщение оператором DISPLAY. WHENEVER Priсe < Аverprice [Euro] DO DISPLAY ( …); END После выполнения оператора DISPLAY условие Priсe < Аverprice [Euro] остается истинным, и событие включается снова. Для исключения повторений введите вспомогательные логические переменные (флажки), переключающиеся в состояние FALSE, если событие уже произошло. Синтаксическая форма ON (как только) обеспечивает однократный вызов события по условию, изменяющему свое значение с FALSE на TRUE. В этом случае событие воспроизводится только один раз при переходе условия от ложного FALSE к истинному значению TRUE. В отличие от формата WHENEVER условие в ON отмечается знаком ^, как в апострофах.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.5. Дискретно$событийные имитационные модели 109 Так, печать текущей цены при снижении ее ниже средней рыночной событие в формате ON вызывается только один раз с исключением повторной установки дополнительных логических переменных: ON ^ Priсe < Аverprice [Euro]^ DO DISPLAY (...); END Оператор DISPLAY обеспечивает распечатку и выдачу на экран данных, содержащихся в протоколе и указанных в списке оператора. Для различных типов данных в списке оператора применяются следующие обозначения: Integer — % ld ; Real — % f; Logical — % d ; Время Т — % f и специальные знаки: \ n — переход на новую строку; \ f — переход на новую страницу. Строковые переменные и строки берутся в кавычки, например: DISPLAY ("T = % f Уровень радиации % f \ n", T, sun); DISPLAY ("Поступление заявки \ n"); DISPLAY ("Момент времени T = % f \ n", T); DISPLAY ("i = % ld x = % f l = % d E=% d \ n", i, x, l, E ); при i: integer; x — real; l — logical; E — назначаемый тип. Тип и значение переменной должны строго соответствовать записи в строке. Элементами списка могут быть также арифметические выражения, например xy: DISPLAY (" z = % f \ n", x* y); Другим примером использования формата ON в непрерывной модели является включение события «Если цена поставки Priсe ниже среднего рыночного уровня Аverprice [Euro], то она повышается на 1%»: ON ^ Priсe < Аverprice [Euro]^ DO Priсe ^ := Priсe + Priсe /100; END
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 110 Глава 3. Программные средства имитационного моделирования В данном случае форма WHENEVER неприемлема, так как, если условие остается истинным, вызов события будет повторяться. В конструкции ON может быть использован признак включения событий — индикатор Indic, определяемый пользователем, с командой SIGNAL. Тогда в декларирующую часть вводится описание индикатора, например: DECLARATION OF ELEMENTS STATE VARIABLES Priсe (integer):=0 TRANSITION INDICATORS Indic DYNAMIC BEHAVIOUR ON ^ Priсe < Аverprice [Euro]^ DO SIGNAL Indic; END ON Indic DO Priсe ^ := Priсe + Priсe /100; END То есть, если Priсe < Аverprice [Euro], команда SIGNAL включает индикатор Indic выполнения события, например увеличение цены товара на один процент. Для запуска имитационного процесса, когда условия еще не могут быть проверены, используется индикатор START. ON START DO Priсe ^ := Priсe + Priсe /100; END Имитация заканчивается по команде SIGNAL Stop при выполнении некоторого условия, например: ON ^ Priсe >= max ^ DO SIGNAL STOP ; END Индикаторы START и STOP стандартизированы и не требуют дополнительного описания. Процедурная часть события состоит из объявления переменных и последовательности операторов, подключенных к
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.5. Дискретно$событийные имитационные модели 111 механизму включения. Результат вычисления присваивается вспомогательной переменной и передается в объявленное место события. Процедурный блок может содержать операторы присваивания, условия, циклы и оператор DISPLAY. Например, событие связано с нахождением минимальной цены поставок из вектора ценовых предложений Р1, Р2, …, Рn . ON ^ T >= TNext ^ # TNext — заданное время DECLARE P (REAL), # массив предложений (р1, р2, … , рn) Num (INTEGER) DO PROCEDURE # нахождение минимального # элемента массива min := 1E6 ; FOR i FROM 1 TO n REPEAT IF (p [i] < min) DO min:=x[i]; Num:= i; END END_LOOP END DO TRANSITIONS Pmin^:=min; NumР^:= Num ; END 3.5.2. Условные переходы в событиях Изменение состояния модели определяется изменением базисных переменных модели и командами перемещения (transfer — commandos) для мобильных компонентов. Переменные, изменяющиеся только в событиях, объявляются как дискретные. Непрерывные переменные также могут изменяться в событии, но этот факт не декларируется. Расширение возможностей моделирования достигается разделением областей состояния внутри события по синтаксической форме IF:
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 112 Глава 3. Программные средства имитационного моделирования IF <условие> DO <изменение состояния> END {ELSIF <условие> DO <изменение состояния> END} [ELSE <условие> DO <изменение состояния> END] Например, в различное время года очередной день с определенной вероятностью может быть ясным (1), с переменной облачностью (2), пасмурным (3) и дождливым (4) с соответствующим коэффициентом mt солнечной активности 1, 0.8, 0.6 и 0.3. Тогда с введением переменной md, принимающей целочисленные значения от 1 до 4, событие изменения погодного состояния в описании динамики записывается как: WHENEVER T>= TNext DO IF md =1 DO mt ^:=1.0; DISPLAY (“день ясный, mt =%f \ n”, mt); END ELSIF md =2 DO mt ^:=0.8; DISPLAY (“облачность, mt =%f \ n”, mt); END ELSIF md =3 DO mt ^:=0.6; DISPLAY (“пасмурно, mt =%f \ n”, mt); END ELSIF md = 4 DO mt ^:= 0.3; DISPLAY (“дождь, mt =%f \ n”, mt); END T = TNext + 1; END В зависимости от областей изменения состояния модели внутри события возможны различные описания динамики. Например, на регулируемом перекрестке цикл переключения светофора составляет 12 мин, и в текущий временной период происходят условные события переключения светофора с изменением переменной состояния Car. Тогда в начальный момент времени TNext = 0 при исход-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 3.5. Дискретно$событийные имитационные модели 113 ном состоянии ‘yellow’(желтый свет) происходит следующее временное событие: WHENEVER T > = TNext DO IF (T > = TNext) AND (T < TNext + 5) DO State ^ : = 'red'; # красный свет светофора Car ^ : = 'Stop' ; END ELSIF (T > = TNext + 5) AND (T < TNext + 6 ) DO State ^ : = 'yellow'; # желтый свет Car^ : = 'Stop' ; END ELSIF (T > = TNext + 6) AND (T < TNext + 11) DO State ^ : = 'green' ; # зеленый свет Car ^ : = 'Drive'; END ELSIF (T > = TNext +11 ) AND (T < TNext + 12) DO State ^ : = 'yellow' ; # желтый свет Car^ : = 'Stop' ; END TNext ^ : = TNext + 12 ; END После выполнения всех условных событий задается время TNext+12 перехода в новое временное событие с повторением последовательности всех условных событий.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Глава 4 МОДЕЛИРОВАНИЕ ОЧЕРЕДЕЙ И АКТИВНЫХ СИСТЕМ МАССОВОГО ОБСЛУЖИВАНИЯ В SIMPLEX3 Простейшая модель «Очередь» состоит из источника заявок, очереди на обслуживание, станции обслуживания (сервера) и выходного приемника выполненных заявок. Она воспроизводит изменения состояния в зависимости от времени и условий, описанных в табл. 4.1. Таблица 4.1 Условные события массового обслуживания № Событие Условие 1 Возникновение (поступление) Время поступления с переменным заявок и постановка в очередь интервалом в n временных единиц 2 Поступление заявки из оче- Сервер свободен, и есть хотя бы реди и начало обслуживания одна заявка с постоянным или (обработки) переменным временем обслуживания 3 Уход заявки после обслужива- Сервер загружен, и наступил кония в выходной накопитель нец обслуживания 4 Очистка выходного приемни- В приемнике находится m заявок ка при накоплении m обслуженных заявок Если все заявки идентичны, то в базисном компоненте СМО в качестве переменных состояния декларируется только количество заявок в очереди, на сервере и в приемнике, а также время поступления и время обработки. Далее в разделе динамики DYNAMIC BEHAVIOUR описываются
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 4.1. Мобильные компоненты и накопительные массивы 115 последовательно все четыре события c механизмом запуска WHENEVER (условие) DO. Так как все заявки одинаковы, то для имитации их поступления и выхода достаточно создать простые счетчики на возрастание и убывание чисел. В начальный момент времени Т = 0 состояние модели определено начальными значениями переменных, на основе которых происходит 1-е событие «Поступление заявки». После этого выполняется условие для 2-го события «Начало обработки», которое переводит модель в новое состояние. Далее после проверки выполнения соответствующих условий имитируются 3-е и 4-е события. Если условные события при Т = 0 исчерпаны или невыполнимы, отыскивается ближайшее событие «Конец обработки» и следует переход к новому временному событию поступления и обработки новой заявки. 4.1. Мобильные компоненты и накопительные массивы Как правило, заявки на обслуживание, представляющие собой перемещающиеся объекты (транспортные средства, клиенты, детали, сообщения и т. п.), имеют различные атрибуты и описываются в виде мобильных компонентов. Мобильный компонент декларируется в базисном компоненте в соответствии с описанием: BASIC COMPONENT < имя > MOBILE SUBCOMPONENT[S] OF CLASS < имя > {, < имя > } [ < переменные в физических единицах > ] [ < локальные определения > ] DECLARATION OF ELEMENТ(S) DYNAMIC BEHAVIOUR END OF < имя > Синтаксис описания мобильного компонента аналогичен базисному, но без раздела динамики, так как изменение его состояния возможно только через базисный компонент.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 116 Глава 4. Моделирование очередей и СМО в Simplex3 MOBILE COMPONENT < имя > [ mobile_subclass_declaration – описание мобильных подкомпонентов] [ unit_definition_part – определение базовых единиц] [ local_definitions – локальные определения] DECLARATION OF ELEMENT(S) END OF < имя > Примеры 1. Мобильный компонент Student может иметь следующее описание: MOBILE COMPONENT Student DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE Prioritet (INTEGER):=3, # приоритет студента Ocenka (REAL):= 0, # рейтинговая оценка студента Zachet (LOGICAL) := FALSE, # сдача зачета Exsam (LOGICAL):=FALSE, # сдача экзамена K (INTEGER) := 1 # число попыток сдачи экзамена END OF Student 2. Мобильный компонент Customer содержит атрибуты: Prioritet, TarriveMash и др., которые могут быть изменены только из внешнего базисного компонента. MOBILE COMPONENT Customer DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE Prioritet (INTEGER):= 1, # приоритет клиента Arrive (REAL):= 0, # интервал поступления на обслуживание TArrive (REAL) := 0, # время прихода
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 4.1. Мобильные компоненты и накопительные массивы Price (REAL):= 0, Vid (REAL):=1 117 # цена обслуживания # заказ на определенный вид обслуживания END OF Customer В переговорном процессе между агентами-продавцами Producer и агентами-покупателями Consumer описание мобильного компонента Message может иметь вид, представленный на листинге 4.1: MOBILE COMPONENT Message LOCAL DEFINITIONS # Тип сообщения # CAsk : Запрос цены (Consumer --> Producer) # COrder: Заказ на покупку (Consumer --> Producer) # POffer: Предложение цены (Producer --> Consumer) # PAck : Подтверждение выполнения заказа (Producer --> Consumer) # MUnknown : Тип сообщения не известен VALUE SET MType : (‘CAsk’, ‘COrder’, ‘POffer’, ‘PAck’, ‘MUnknown’) # Тип отправителя VALUE SET MFrom : (‘Cons’, ‘Prod’, ‘Unknown’) DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE # Исходные данные Agent (MFrom) := ‘Unknown’, # Тип отправителя Sender (INTEGER) := -1, # Индекс Ind # отправителя Receiver (INTEGER) := -1, # Индекс Ind # получателя Type (MType) := ‘MUnknown’, # Тип сообщения TStamp (REAL) := -1, # Время отправления # Содержание сообщения Price (REAL) := -1, # Цена Quantity (REAL) := -1 # Количество END OF Message Листинг 4.1. Описание мобильного компонента Message
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 118 Глава 4. Моделирование очередей и СМО в Simplex3 Мобильные компоненты размещаются в накопительных массивах, как местах расположения, образуя очереди клиентов, размещение пассажиров в автобусе, накопление товаров на складе и т. п. Накопительные массивы могут содержать мобильные компоненты только одного класса, имя которого определено в описании накопителя. Описание определяет все допустимые классы мобильных компонентов в базисном компоненте. Накопительные массивы могут содержать один или несколько мобильных компонентов, располагаемых при поступлении в соответствии с критериями упорядочивания (FIFO, LIFO и т. д.). Для их описания ведется статистика, представляемая пользователю. Изменение местонахождения мобильных компонентов и модификация их атрибутов возможны только в результате событий, описываемых в базисном компоненте. Описания накопительных массивов включаются в раздел описания элементов базисного компонента в виде списка LOCATION[S]. LOCATION[S] < имя накопителя > ( < имя мобильного компонента > [ORDERED BY <критерий> {,<критерий>}]) : = < числовое значение > <имя мобильного компонента > То есть задаются имя накопительного массива, далее в скобках — имя класса мобильного компонента, размещаемого в накопителе, и список из одного или нескольких критериев упорядочивания. <Критерий упорядочивания>:: = FIFO | LIFO | INC< имя >| DEC <имя >, где  FIFO : первым вошел — первым ушел;  LIFO : последним пришел — первым ушел;  INC identifier : возрастание значения атрибута;  DEC identifier : убывание атрибута. Если стратегия не задана, по умолчанию принимается FIFO. Критерии INC и DEC относятся к атрибутам мобиль-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 4.1. Мобильные компоненты и накопительные массивы 119 ного компонента, размещаемого в накопительном массиве. Если по первому критерию место для прибывающего мобильного компонента определить нельзя, используется следующий критерий по списку. Список может содержать до пяти критериев. Если после пятого критерия решение неоднозначно, используется FIFO. Критерии FIFO и LIFO размещаются всегда в конце списка. Так же, как и переменные, накопительные массивы должны быть инициализированы. Для этого используется оператор присваивания с последующей цифрой, которая может быть равна нулю. Примеры 1. Накопительный массив Server содержит мобильные компоненты класса Customer и инициализируется одним клиентом: LOCATION Server (Customer) := 1 Customer 2. Накопительный массив Queue содержит поступающие компоненты класса Customer в порядке убывания по атрибуту Priority. В соответствии с этим мобильные компоненты с большим приоритетом становятся вперед. Если два или более компонента имеют одинаковый приоритет, они размещаются в соответствии с FIFO: LOCATION Queue Priority):= 0 Customer (Customer ORDERED BY DEC 3. Накопитель Queue упорядочивает мобильные компоненты класса Customer в порядке убывания по атрибуту Priority, а для компонентов с равным приоритетом — в порядке возрастания по атрибуту Age (возраст). Компоненты с равным приоритетом и возрастом сортируются в соответствии с LIFO: LOCATION Queue (Customer ORDERED Priority, INC Age, LIFO):=5 Customer BY DEC
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 120 Глава 4. Моделирование очередей и СМО в Simplex3 4. Наряду с отдельными накопительными массивами можно создавать массивы накопителей, как, например, организация размещения пяти накопительных массивов: LOCATIONS ARRAY [5] WaitP (Customer ORDERED BY INC Prio) := 0 Customer Для индексирования элементов накопительного массива можно применить один из следующих способов: WaitP[3] — третий элемент накопительного массива Wait; WaitP{2..4} — элемент 2-й строки и 4-го столбца накопителя; WaitP{ALL} — все элементы накопительного массива. Для каждого накопителя при объявлении автоматически устанавливается рабочая область для размещения в ходе имитации статистической информации. Эта область не доступна в описании модели, однако может быть просмотрена с помощью наблюдателя. Доступ к атрибутам мобильных компонентов достигается описанием пути, который начинается с идентификатора накопителя в базисном компоненте. <Выбираемый элемент> ::= <имя накопителя>{:<имя класса мобильного компонента> [< индекс позиции >].< атрибут >} То есть указывается имя накопительного массива, двоеточие и далее идентификатор класса мобильного компонента с индексом позиции определенного мобильного компонента в этом массиве. За идентификатором элемента мобильного компонента ставится точка. Этот элемент модели может быть переменной или накопителем. В случае накопительного массива путь доступа может продолжаться. Примеры 1. Атрибут TDone, содержащий конечное время обслуживания первого компонента Customer[1] в накопительном массиве Server, получает значение Т + 10:
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 4.2. Система операций с мобильными компонентами Server: Customer[1]. TDone ^ := T +10; 121 # изменение # атрибута 2. В момент времени T = 10 приоритет заявки, расположенной в 5-й позиции накопителя WaitP, меняется на 1: ON ^T >= 10^ DO WaitP:Customer[5].Prio^ := 1; END 3. Если приоритет мобильного компонента в первой позиции оказывается больше 1, его вновь опускают до 1: WHENEVER WaitP:Customer[1].Prio > 1 DO WaitP:Customer[1].Prio^ := 1; END 4.2. Система операций с мобильными компонентами Операции с мобильными компонентами связаны с их созданием, перемещением из одного накопителя в другой и сбросом, а также изменением свойств. Все операции производятся в базисном компоненте с помощью событий. При этом можно применять конструкции ON и WHENEVER с операторами:  PLACE — удаление и переприсваивание;  ADD — поступление;  REMOVE — стирание;  GET — вызов;  SEND — посылка. Примеры 1. Накопительный массив Queue (источник) получает новый мобильный компонент класса Customer. Queue ^ : ADD 1 NEW Customer ; 2. Второй мобильный компонент класса Customer удаляется из накопителя Server и сбрасывается. Server^ : REMOVE Customer[2] ;
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 122 Глава 4. Моделирование очередей и СМО в Simplex3 3. Из накопительного массива Queue перемещается первый мобильный компонент Customer[1] в накопительный массив Server. Server^ : FROM Queue GET Customer[1]; 4. Первый мобильный компонент накопителя Queue посылается в накопитель Server: Queue^ : TO Server SEND Customer[1]; Каждая описанная операция может быть связана с изменением атрибутов мобильного компонента с помощью оператора CHANGING < изменяемый элемент > END Например, когда мобильный компонент из накопителя Queue перемещается в Server, его атрибут TDone получает новое значение: Server^ : FROM Queue GET Customer[1] CHANGING TDone^ := T + TServe; # Изменение атрибута TDone END Мобильные компоненты, расположенные в накопителе одного базисного компонента, могут сами содержать накопительные массивы для размещения других классов мобильных компонентов. Таким образом, можно смоделировать транспортное средство, перемещающееся от одного местонахождения к другому и содержащее, в свою очередь, мобильный компонент пассажир. Примеры 1. Пятый накопитель массива Server вызывает первый мобильный компонент из накопителя Queue: Server[5]^ : FROM Queue GET Customer[1]; 2. Каждая обслуживающая станция Server{ALL i} в массиве Server вызывает мобильный компонент из накопителя
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 4.2. Система операций с мобильными компонентами 123 Queue так, что на первый Server поступает первый мобильный компонент Customer[1], на второй Server — второй компонент Customer[2] и т. д. Считается, что накопитель Queue содержит достаточное число мобильных компонентов: Server{ALL i}^ : FROM Queue GET Customer[i]; 3. Накопитель Server получает каждый раз первый мобильный компонент из всех накопителей массива Queue: Server^ : FROM Queue{ALL} GET Customer[1]; 4. Накопительный массив Server получает из всех накопителей массива Queue все мобильные компоненты, если их больше трех: Server^ : FROM Queue{ALL i | NUMBER (Queue[i]) >3} GET Customer{ALL}; 5. Все мобильные компоненты с приоритетом больше двух из i-го накопителя Queue[i] при накоплении в нем более трех элементов перемещаются в приемник Server: Server^ : FROM Queue{ALL i | NUMBER (Queue[i]) >3} GET Customer{ALL j|Queue[i]:Customer[j]. Prio > 2} В пределах одного базисного компонента можно равнозначно использовать команду GET или SEND, например: Station^ : FROM QueueP GET Customer[1]; QueueP^ : TO Station SEND Customer[1]; Различие проявляется только с точки зрения модели, так как при конкретном моделировании становится ясно, что взять за основу — вызов или посылку. 6. Все мобильные компоненты в накопительном массиве Server уничтожаются и замещаются тремя новыми мобильными компонентами: Server^ : PLACE 3 New Customer; # Удаление и переприсваивание.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 124 Глава 4. Моделирование очередей и СМО в Simplex3 Система операций с мобильными компонентами MOBILE COMPONENT и накопительными массивами LOCATION[S] позволяет описать модели систем массового обслуживания различных неоднородных заявок и клиентов с включением взаимосвязанных серверов с дискретно-событийной динамикой поведения. 4.3. Модель СМО с неоднородными заявками Примером дискретно-событийного моделирования реальной системы массового обслуживания может служить модель комплектовочного конвейера (рис. 4.1) сборочного цеха [14], на который каждые (5 ± 1) мин поступают пять деталей первого типа и каждые (20 ± 7) мин — 20 деталей второго типа. Конвейер состоит из секций, вмещающих по десять деталей каждого типа. Комплектация начинается только при наличии деталей обоих типов в требуемом количестве и длится 10 мин. При нехватке деталей секция конвейера остается пустой. При декомпозиции модели введено два мобильных компонента: деталь и секция, перемещаемая по конвейеру и заполняемая в зависимости от количества накопленных Рис. 4.1. Схема комплектовочного конвейера
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 4.3. Модель СМО с неоднородными заявками 125 деталей двух типов. Если деталей не хватает, секция простаивает необходимое время комплектации. Модель состоит из одного базисного компонента SMO (листинг 4.2) и двух мобильных компонентов detal и sekcija (листинг 4.3). BASIC COMPONENT SMO MOBILE SUBCOMPONENT OF CLASS detal, sekcija DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE TArrive1(REAL) := 0, # время прихода деталей 1-го # типа TArrive2(REAL):=0, # время прихода деталей 2-го # типа TArriveS(REAL):=0, # время комплектации или # простоя секции Ok(LOGICAL):=FALSE # признак комплектации RANDOM VARIABLES # интервал поступления 5 деталей 1-го типа Arrive1(REAL): LOGNOR(Mean:=5, Sigma:=1), # интервал поступления 20 деталей 2-го типа Arrive2(REAL): LOGNOR(Mean:=20, Sigma:=7) LOCATIONS Wait1(detal):=0 detal, # очередь деталей 1-го типа Wait2(detal):=0 detal, # очередь деталей 2-го типа # укомплектованные секции SBORKA(SEKCIJA):= 0 sekcija, # конвейер сборочных секций KONVEER(SEKCIJA):= 0 sekcija DYNAMIC BEHAVIOUR # Событие 1 WHENEVER(T>=TArrive1) DO TArrive1^:=T+Arrive1; # поступление 5 деталей 1-го типа Wait1^:ADD 5 NEW detal CHANGING Type^:=1; TArrive^:=T; END END # Событие 2 WHENEVER (T>=TArrive2) DO TArrive2^:=T+Arrive2; # поступление 20 деталей 2-го типа
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 126 Глава 4. Моделирование очередей и СМО в Simplex3 Wait2^: ADD 20 NEW detal CHANGING Type^:=2; TArrive^:=T; END END # Событие 3 ON ^((NUMBER (Wait1) >= 10) AND (NUMBER (Wait2) >= 10))^ DO DISPLAY(«!!!количество деталей достаточно!!!!\n»); Ok^:=TRUE; END # Событие 4 WHENEVER (T>=TArriveS) DO TArriveS^:=TArriveS+10; KONVEER^:ADD 1 NEW sekcija # поступление секции CHANGING TArrive^:=T; END DISPLAY(“!!!пришла новая секция!!!!\n”); # Событие 5 IF (Ok = TRUE) DO # процесс комплектации SBORKA^: ADD 1 NEW sekcija; Wait1^: REMOVE detal{ALL i | i<=10}; Wait2^: REMOVE detal{ALL j | j<=10}; Ok^:=FALSE; DISPLAY(“!!!секция укомплектована!!!!\n”); END END OF SMO END Листинг 4.2. Базисный компонент SMO MOBILE COMPONENT detal DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE Type (INTEGER) :=0, TArrive (REAL ):=0 END OF detal # тип деталей # время поступления MOBILE COMPONENT sekcija DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE TArrive(REAL):=0 # время поступления END OF sekcija Листинг 4.3. Мобильные компоненты detal и sekcija
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 4.3. Модель СМО с неоднородными заявками 127 На рисунке 4.2 (см. цв. вклейку) представлены результаты моделирования в виде временных графиков поступления деталей первого и второго типов (соответственно, зеленая и фиолетовая линии) на комплектующие секции, подаваемые равномерно каждые 10 мин (синий пунктир). Рис. 4.2. График поступления деталей и заполнения секций на ком$ плектовочном конвейере Синяя пунктирная линия показывает равномерное поступление сборочных секций. Из графиков видно, что в начальный момент времени на комплектацию поступило пять деталей 1-го типа (зеленая линия) и 20 деталей 2-го типа (фиолетовая линия). В момент времени Т = 6 мин поступает еще пять деталей 1-го типа, и их общее количество становится достаточным для комплектации на очередной секции в Т = 10 мин. При этом количество деталей 1-го типа сокращается до нуля, а 2-го типа — до десяти. В течение следующих 10 мин детали 1-го типа поступают дважды, и их количество вновь достигает десяти, в результате с имеющимися 10 деталями 2-го типа следует новая комплектация на следующей секции. Красная ступенчатая линия показывает число укомплектованных секций, временные периоды их очередной комплектации или простаивания из-за отсутствия необхо-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 128 Глава 4. Моделирование очередей и СМО в Simplex3 димого количества деталей в момент поступления секции (на графике интервал от 40 до 50 мин). В случае приоритетной комплектации деталей 1-го и 2-го типов с нормальным логарифмическим распределением интервалов поступления (см. рис. 4.1), заявки выстраиваются в очередь по стратегии FIFO в порядке убывания приоритета: 3, 2, 1. Заявки с одинаковыми приоритетами сортируются соответственно времени прибытия, т. е. используя FIFO-стратегию. Комплектация начинается только при наличии деталей обоих типов с одинаковыми приоритетами в требуемом количестве и также длится 10 мин. При нехватке деталей секция конвейера остается пустой. В этом случае в описания мобильных компонентов detal и sekcija (листинг 4.3) включается дискретный атрибут приоритет с инициализированным значением Priority (INTEGER) := 1. В раздел RANDOM VARIABLES (см. листинг 4.2) вносится случайная переменная: Prio(INTEGER):IUNIFORM(LowLimit:=1,UpLimit:=3), а описания очередей Wait1 и Wait2 в разделе LOCATIONS дополняются порядком убывания приоритета. Wait1 (detal ORDERED BY DEC Priority):= 0 detal, Wait2 (detal ORDERED BY DEC Priority):= 0 detal, События поступления деталей 1-го и 2-го типов дополняются разыгрыванием приоритета, например, для прихода пяти деталей 1-го типа: WHENEVER(T>=TArrive1) DO TArrive1^:=T+Arrive1; Wait1^:ADD 5 NEW detal CHANGING TIP^:=1; Priority^ := Prio; TArrive^:=T; END END
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 4.4. Модель железнодорожной станции 129 Тогда условия события готовности к комплектации деталей одного приоритета могут быть записаны как: ON ^((NUMBER (Wait1) >= 10) AND (NUMBER (Wait2) >= 10) AND (Wait1: detal [1]. Priority = Wait2: detal [1]. Priority))^ DO DISPLAY(“!!!количество деталей достаточно!!!!\n”); Ok^:=TRUE; # признак готовности к комплектации END Рассмотренные дискретно-событийные модели могут служить основой для агентно-ориентированного моделирования систем в условиях неопределенности, риска и конфликта, требующих оперативного выбора стратегий и взаимодействия интеллектуальных агентов-серверов на каждом этапе обслуживания. При этом перемещающиеся агенты могут быть представлены мобильными компонентами с набором переменных состояния и цели, изменяющихся в конкретных временных или условных событиях, воспроизводимых в базисных компонентах. При этом возможна иерархия взаимосвязанных агентов, например, типа «транспортное средство — пассажир». 4.4. Агентно5ориентированная дискретно5 событийная модель пассажирской железнодорожной станции На реальном прототипе рассматривается городская железнодорожная станция Station, состоящая из двух платформ: платформа 1 «к центру» и платформа 2 «от центра» (рис. 4.3). На станцию приходят пассажиры Passenger, которые в соответствии со своим маршрутом Passenger. Destination (в центр или из центра) идут на нужную им платформу. Интервал времени прихода пассажиров Arrive Passenger и поездов на платформы зависит от времени суток и представлен в табл. 4.2–4.3.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 130 Глава 4. Моделирование очередей и СМО в Simplex3 Рис. 4.3. Схема городской железнодорожной станции Таблица 4.2 Интервал прихода пассажиров Время суток, час Интервал прихода пассажиров, час 0–5 0,8 5 – 10 0,001 10 – 16 0,01 16 – 19 0,008 19 – 23 0,09 23 – 24 1 Таблица 4.3 Интервал прихода поездов Время суток, час 0–4 Интервал прихода поезда к 1-й платформе, час 2 Интервал прихода поезда ко 2-й платформе, час 2 4–9 0,8 0,3 9 – 16 0,15 0,4 16 – 21 0,8 0,2 21 – 23 0,3 0,8 23 - 24 3 3 На 1-ю платформу PlatformT1 станции приходят поезда Train, направляющиеся в центр, а на 2-ю платформу Plat-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 4.4. Модель железнодорожной станции 131 formT2 — из центра. Интервалы прихода поездов на 1-ю и 2-ю платформы ArriveTrain1 и ArriveTrain2 зависят от времени суток и показаны в таблицах. На обеих платформах пассажиры образуют очереди на обслуживание PlatformP1, PlatformP2 в соответствии с приоритетом FIFO «первый пришел, первый обслуживается». Максимально возможная вместимость поезда составляет 600 пассажиров. Каждый прибывающий поезд описывается следующими параметрами состояния:  заполнение поезда Train.Seat (число пассажиров) — случайная величина, изменяющаяся по нормальному закону распределения от 100 до 300;  пункт назначения Train.Destination — случайная величина, принимающая значения 0, если поезд продолжает движение; 1 — если поезд прибыл на конечный пункт и будет направляться в тупик Buffer. Ситуация прибытия поезда к 1-й платформе описывается следующими переменными состояния:  Work — интервал, в течение которого поезд будет находиться на платформе 1, равный 0,083 ч (5 мин);  Twork — время отбытия поезда;  Exit — интервал времени (Exit = 0,05 ч (3 мин)), в течение которого из поезда должны выйти 90 пассажиров, если поезд продолжит движение; или все пассажиры, если поезд направляется в тупик;  Tenter — время, за которое пассажиры входят в поезд;  Enter — средний интервал времени, отведенный на вход одного пассажира, равный 0,0001 ч. Последовательность происходящих и моделируемых событий представлена на рис. 4.4. Из поезда, приходящего на 1-ю платформу и продолжающего путь, за указанное время Exit выходят 90 пассажиров, и в оставшееся время в него входят со средним интервалом времени Enter пассажиры, ожидающие обслуживания на платформе. Пассажиры могут входить, пока в поезде есть
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 132 Глава 4. Моделирование очередей и СМО в Simplex3 Рис. 4.4. Логистика событий на железнодорожной станции свободные места и поезд находится на платформе. По истечении времени пребывания поезд уходит по 1-му пути Road1.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 4.4. Модель железнодорожной станции 133 В случае, если поезд будет направляться в тупик, все пассажиры выходят за время, предусмотренное для выхода. Поезд находится на платформе до истечения заданного времени Twork и отправляется в тупик. Если на платформе накапливается более 700 пассажиров и в тупике есть свободный поезд, то он подается на посадку на 1-ю платформу. В этом случае на посадку дается время Twork, после чего поезд уходит по пути 1. Ситуация на 2-й платформе описывается аналогичным образом. В имитационной модели используются два мобильных компонента Passenger и Train, описывающие тип и атрибуты перемещающихся объектов и создающие очереди в системе (листинги 4.4, 4.5). MOBILE COMPONENT Passenger DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE Destination (INTEGER) := 1 END OF # атрибут, обозначающий # маршрут пассажира Passenger Листинг 4.4. Мобильный компонент Passenger MOBILE COMPONENT Train # субкомпонент класса Passenger MOBILE SUBCOMPONENTS OF CLASS Passenger DECLARATION OF ELEMENTS STATE VARIABLES Destination (INTEGER) := 0 # пункт назначения поезда LOCATIONS # накопитель мобильных компонентов Passenger Seat (Passenger) := 0 Passenger END OF Train Листинг 4.5. Мобильный компонент Train В листинге 4.6 в соответствии с логистической схемой (см. рис. 4.4) показан фрагмент описания событий на первой платформе станции в динамике поведения базисного компонента Transstation, полное описание которого приведено в приложении 2.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 134 Глава 4. Моделирование очередей и СМО в Simplex3 # MDL-описание событий прибытия поезда на ж/д станцию # к первой платформе (к центру) WHENEVER T >= TArriveTrain1 DO # интервал прибытия поездов в разное время суток # в соответствии с таблицей 4.3. IF (T>=TNextT1) AND (T<TNextT1+4) DO ArriveTrain1^:= 2; END ELSIF (T>=TNextT1+4) AND (T<TNextT1+6) DO ArriveTrain1^:= 0.8; END ELSIF (T>=TNextT1+6) AND (T<TNextT1+10) DO ArriveTrain1^:= 0.15; END ELSIF (T>=TNextT1+10) AND (T<TNextT1+13) DO ArriveTrain1^:= 0.8; END ELSIF (T>=TNextT1+13) AND (T<TNextT1+23) DO ArriveTrain1^:= 0.3; END ELSIF (T >= TNextT1 + 23) AND (T < TNextT1 + 24) DO ArriveTrain1^:= 3; END # прибытие поезда Train на станцию в сторону центра StationT1^ : ADD 1 NEW Train CHANGING Destination^:= 0; # пункт назначения 0 - к центру Seat^:ADD Numb NEW Passenger; # число пассажиров # в поезде END # время прихода следующего поезда в сторону центра TArriveTrain1^:= T + ArriveTrain1; IF Protocol DO DISPLAY (“T= %f Train arrives at Platform1\n”,T); END TNextT1^:=TNextT1+24; END END # Событие 1. Выход пассажиров из поезда WHENEVER (NUMBER(StationT1 ) >= 1) AND (NUMBER (PlatformT1) = 0) DO # если атрибут назначения поезда = 0, # из поезда выходят 90 пассажиров IF (StationT1:Train[1].Destination=0) DO StationT1:Train[1].Seat^:TO ExitP SEND Passenger{1..90}; END # если атрибут пункта назначения поезда = 1, # из поезда выходят все пассажиры ELSIF (StationT1:Train[1].Destination=1) DO StationT1:Train[1].Seat^:TO ExitP SEND Passenger{ALL}; END
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 4.4. Модель железнодорожной станции 135 # поезд подается на посадку PlatformT1^:FROM StationT1 GET Train[1]; TWork1^:=T+Work; # время стоянки поезда TEnter1^:=T+Exit; # время посадки пассажиров IF Protocol DO DISPLAY ("T= %f Пассажиры выходят из поезда\n",T); END END # Событие 2. Посадка пассажиров на поезд WHENEVER (NUMBER (PlatformT1) =1) AND (T>=TEnter1) AND (T< TWork1) AND (NUMBER (PlatformP1)>0) AND (NUMBER(PlatformT1:Train[1].Seat < 200) AND (PlatformT1:Train[1].Destination=0) DO # очередной пассажир входит в поезд PlatformT1:Train[1].Seat^: FROM PlatformP1 GET Passenger[1]; #время посадки следующего пассажира TEnter1^:=T+Enter; IF Protocol DO DISPLAY ("T= %f Следующий пассажир с 1-й платформы вошел в поезд\n",T); END END Листинг 4.6. Описание динамики событий на первой платформе пассажирской станции На рисунке 4.5 (см. цв. вклейку) показаны графики имитации изменения числа пассажиров на 1-й и 2-й платформах в течение 24 ч в процессе их накопления и посадки на поезд. На 1-й платформе, начиная с T = 4,00, происходит накопление пассажиров. В момент времени T = 7,666 на 1-ю платформу поступает поезд, и из него выходят 90 пассажиров. В момент времени T = 7,716 начинается посадка пассажиров и продолжается до T = 7,749, после чего поезд отъезжает от платформы. Агенты-пассажиры продолжают приходить на платформу, и события повторяются на обеих платформах в течение суток по логистической схеме (см. рис. 4.4). На рисунке 4.6 выделен график накопления пассажиров на второй платформе с фрагментом протокола вывода результатов моделирования.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 136 Глава 4. Моделирование очередей и СМО в Simplex3 Рис. 4.5. Графики изменения числа пассажиров на 1$й и 2$й плат$ формах Рис. 4.6. Накопление пассажиров на 2$й платформе в укрупненном масштабе
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 4.4. Модель железнодорожной станции 137 …………………………… DISPLAY: T= 7.666000 Поезд поступает на платформу1 DISPLAY: T= 7.666000 90 пассажиров выходят из поезда на платформе1 DISPLAY: T= 7.668000 На платформу1 поступает пассажир DISPLAY: T= 7.672000 На платформу1 поступает пассажир DISPLAY: T= 7.702000 На платформу1 поступает пассажир …………………………… DISPLAY: T= 7.716000 Пассажир входит в поезд на платформе1 DISPLAY: T= 7.716100 Пассажир входит в поезд на платформе1 DISPLAY: T= 7.720000 Пассажир входит в поезд на платформе1 …………………………… DISPLAY: T= 7.720000 На платформу1 поступает пассажир DISPLAY: T= 7.720100 Пассажир входит в поезд на платформе1 DISPLAY: T= 7.744000 На платформу1 поступает пассажир DISPLAY: T= 7.744000 Пассажир входит в поезд на платформе1 DISPLAY: T= 7.748000 На платформу1 поступает пассажир DISPLAY: T= 7.748000 Пассажир входит в поезд на платформе1 DISPLAY: T= 7.749000 Поезд с платформы1 уходит по пути1 …………………………… В рассмотренной модели агенты-пассажиры и агентыпоезда представляются как мобильные компоненты, поступающие в очереди на обслуживание на серверы-станции, а изменение состояния агентов описывается как события в разделе динамики поведения базисного компонента Trans всей системы железнодорожного узла (приложение 2). При рассмотрении сложных ситуаций с множеством взаимосвязанных транспортных средств, грузопотоков и пассажиров с ситуационными стратегиями принятия решения, требуется декомпозиция общей дискретно-событийной модели системы с введением взаимодействующих базисных субкомпонентов агентов-поездов и агентов-пассажиров с многофакторным отражением переменных состояния, динамики ситуационного поведения и взаимодействия агентов и объединением их в дискретно-событийную мультиагентную модель системы.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Глава 5 МУЛЬТИАГЕНТНОЕ МОДЕЛИРОВАНИЕ В SIMPLEX3 Мультиагентная модель реальной системы составляется из моделей автономных агентов, соединенных друг с другом связями через параметры сопряжения, и может иметь иерархическую структуру, когда какой-либо агент, в свою очередь, является подсистемой агентов нижестоящего уровня. Для рассмотрения принципов построения мультиагентной модели системы воспользуемся описанием непрерывной модели экологической среды СedarBog, изложенным в [37]. Модель отражает накопление органических отложений на дне озера и выбросы в атмосферу в зависимости от солнечной активности, биомассы растений и животного мира с пятью переменными состояния: 1) р – plants (биомасса растений в тоннах, [t]); 2) h – herbivores (численность травоядных животных в пересчете на потребление растительной биомассы, [t]) ; 3) c – carnivores (численность плотоядных животных в пересчете на кормовой ресурс, [t]); 4) о – organic (органические отложения на дне водоема, [t]); 5) е – environ (выбросы биомассы в окружающую среду, [t]). Переменные p, h, c, o, e изменяются под действием солнечной энергии sun (солнце): sun = 95,9[1+(0,635 sin (2T))]. (5.1) Выражение 5.1 показывает, что солнечная активность колеблется в течение года. Единицей измерения служит ко-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Глава 5. Мультиагентное моделирование в Simplex3 139 личество энергии на единицу площади: килоджоуль на квадратный метр [kJ/m2]. Под действием солнечной энергии увеличение биомассы растений в единицу времени в тоннах в год [t/a] составляет sun_bio = sun · Bio_Fak, [t/а], (5.2) где Bio_Fak — пересчетный коэффициент  t  m   a  kJ   , равный 10 -15 а в базовых единицах измерения системы СИ. Обмен биомассы между растениями, травоядными и плотоядными животными описывается дифференциальными уравнениями: 2 p   sun _ bio  4,03 p  0,48 h , h   0,48 p  17 ,87 h  4,85 c , c   4,85 h  4,65 c. (5. 3) Первое уравнение означает, что растительная биомасса сокращается по экспоненциальному закону распада и потребления ее травоядными животными и увеличивается благодаря солнечной энергии, необходимой для роста растений. Второе уравнение описывает изменение состояния травоядных от естественной убыли и потребления их плотоядными животными. Аналогично описывается динамика кормовой базы для плотоядных животных, увеличивающаяся с увеличением численности травоядных и уменьшающаяся за счет естественной убыли. Накопления органических отложений на дне водоемов и отходов биомассы в окружающей среде описываются уравнениями: сo   2,55 p  6,12 h  1,95, e   1,00 p  6,90 h  2,70 c (5.4) и пропорциональны объему биомассы растений, а также кормовым ресурсам травоядных и плотоядных животных.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 140 Глава 5. Мультиагентное моделирование в Simplex3 5.1. Декомпозиция модели и соединение агентов Один из вариантов декомпозиции модели CedarBog (рис. 5.1) содержит компоненты Sun (солнце), Plants (биомасса растений), Herbivores (число травоядных) и Carnivores (число хищников), Environ (окружающая среда) и Organic (органические отложения на дне водоема) как взаимосвязанные автономные агенты системы. Рис. 5.1. Мультиагентная модель экологической системы СedarBog Каждый из шести агентов является самостоятельным базисным компонентом и связывается через сенсорные переменные соединением, по которому изменение состояния одного агента должно учитываться в состоянии другого. Структура соединений агентов, отражающая их взаимосвязи в мультиагентной модели через сенсорные переменные, описывается в соответствии с декомпозицией (см. рис. 5.1) в компоненте верхнего уровня иерархической модели СedarBog_High, состоящем из разделов SUBCOMPONENTS и COMPONENT CONNECTIONS (листинг 5.1). В связях между компонентами в левой части указывается базисный компонент и его экспортируемый параметр, направляемый на сенсорный вход взаимосвязанного компонента.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 5.1. Декомпозиция модели и соединение агентов 141 Так, базисный компонент Sun передает значение переменной состояния солнечной активности suns сенсорной переменной sun базисного компонента Plants: Sun.suns –> Plants.sun, а базисный компонент Plants в свою очередь передает значение переменной своего состояния p соответствующим сенсорным переменным компонентов Herbivores, Еnviron и Оrganic. Таким образом, из одного компонента могут исходить несколько связей, направляемых к отдельным входам в другие компоненты (см. рис. 5.1). HIGH LEVEL COMPONENT СedarBog _High SUBCOMPONENTS Sun, # солнце Plant, # биомасса растений Organ, # донные отложения в воде озера Envir, # выбросы в окружающую среду Herbi, # число травоядных Carni, # число хищников COMPONENT CONNECTIONS Sun.suns --> Plant.sun; Plant.p --> (Envir.p, Organ.p, herbi.p); Herbi.h --> (Envir.h, Organ.h, carni.h); Carni.c --> (Envir.c, Organ.c); END OF СedarBog _High Листинг 5.1. Компонент верхнего уровня СedarBog _High Через компонент верхнего уровня СedarBog _High следует запуск мультиагентной модели после предварительного редактирования базисных компонентов Sun, Plants, Herbivores, Carnivores, Оrganic и Еnviron. При этом два независимых компонента, например Sun и Plants, связываются соединением, по которому изменение переменной suns из компонента Sun должно учитываться в компоненте Plants (рис. 5.2) и устанавливается причинная связь между агентами. В листинге 5.2 показано описание базисного компонента Sun, содержащего одно алгебраическое уравнение (5.1), описывающее интенсивность солнеч-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 142 Глава 5. Мультиагентное моделирование в Simplex3 Рис. 5.2. Соединение базисных компонентов Sun и Plants ного излучения с параметром состояния suns. Объявление для экспортируемой переменной не требуется, и в компоненте Sun отсутствует признак того, что другой компонент будет иметь доступ к переменной suns. Это означает, что каждая модельная величина в компоненте доступна извне без дополнительного оповещения внутри компонента. BASIC COMPONENT Sun USE OF UNITS TIMEUNIT = [a] # единица времени год DECLARATION OF ELEMENTS CONSTANTS Pi(REAL) := 3.14 DEPENDENT VARIABLES CONTINUOUS suns (REAL[kJ/m^2]) := 0 [kJ/m^2] # солнечная # активность DYNAMIC BEHAVIOUR suns:=95.9[kJ/m^2]*(1+0.635*SIN(2[1/a]*Pi*T)); END OF Sun Листинг 5.2. Базисный компонент Sun Листинг 5.3 представляет базисный компонент Plants с объявлением сенсорной переменной sun, связанной с переменной состояния suns компонента Sun (см. рис. 5.1), и описанием динамического изменения непрерывной переменной состояния p в соответствии с уравнениями (5.3). Переменная sun, обозначающая солнечное излучение, инициализируется значением 95,9.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 5.1. Декомпозиция модели и соединение агентов 143 BASIC COMPONENT Plants USE OF UNITS TIMEUNIT = [a] # единица времени год DECLARATION OF ELEMENTS CONSTANTS # пересчетный коэффициент Bio_Fak (REAL[a]) := 1E-15 [a] STATE VARIABLES CONTINUOUS p (REAL[t]):= 0 [t] # объем биомассы растений DEPENDENT VARIABLE CONTINUOUS # солнечная активность в объеме биомассы растений sun_bio (REAL[t/a]) := 0 [t/a] SENSOR VARIABLE CONTINUOUS # сенсорная переменная солнечной активности sun (REAL[kJ/m^2]) := 95.9 [kJ/m^2] DYNAMIC BEHAVIOUR sun_bio:=sun * Bio_Fak; # уравнение (5.2) DIFFERENTIAL EQUATIONS p’ := sun_bio - 4.03[1/a] * p ; # уравнение (5.3) END END OF Plants Листинг 5.3. Базисный компонент Plants При нарушении соединения солнечная активность в компоненте Plants будет иметь постоянное значение 95,9. Далее в листинге 5.4 следует описание базисного компонента Herbivores, а в листинге 5.5 – компонента Carnivores с сенсорными переменными в соответствии с заданной структурой мультиагентной модели (см. рис. 5.1) и описанием динамики (5.3). BASIC COMPONENT Herbi USE OF UNITS TIMEUNIT = [a] ] # единица времени год DECLARATION OF ELEMENTS STATE VARIABLES CONTINUOUS # число травоядных в тоннах кормовой биомассы растений h (REAL[t]) := 0 [t]
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 144 Глава 5. Мультиагентное моделирование в Simplex3 SENSOR VARIABLE CONTINUOUS p(REAL[t]):= 0 [t] # объем биомассы растений DYNAMIC BEHAVIOUR DIFERENTIAL EQUATIONS h’ := 0.48[1/a] * p - 17.87[1/a] * h; END END OF Herbi Листинг 5.4. Базисный компонент Herbivores BASIC COMPONENT Carni USE OF UNITS TIMEUNIT = [а] # единица времени год DECLARATION OF ELEMENTS STATE VARIABLES CONTINUOUS # число плотоядных в тоннах кормовой биомассы c (REAL[t]) := 0 [t] SENSOR VARIABLE CONTINUOUS # число травоядных в тоннах кормовой биомассы растений h(REAL[t]):= 0 [t] DYNAMIC BEHAVIOUR DIFFERENTIAL EQUATIONS c’ := 4.85[1/a] * h - 4.65[1/a] * c; END END OF Carni Листинг 5.5. Базисный компонент Carnivores Листинг 5.6 содержит описание базисного компонента Organic с сенсорными переменными p, h и с, отражающими изменение состояния одноименных переменных в компонентах Plants, Herbivores и Carnivores. BASIC COMPONENT Organic USE OF UNITS TIMEUNIT = [a] DECLARATION OF ELEMENTS STATE VARIABLES CONTINUOUS о (REAL[t]) := 0 [t] # донные отложения
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 5.1. Декомпозиция модели и соединение агентов SENSOR VARIABLES CONTINUOUS p (REAL[t]), # h (REAL[t]), # c (REAL[t]) # DYNAMIC BEHAVIOUR DIFFERENTIAL EQUATIONS o’ := 2.55 [1/a] * p + 6.12 END END OF Organic 145 объем биомассы растений число травоядных число хищников [1/a] * h + 1.95[1/a] * c; Листинг 5.6. Базисный компонент Organic Аналогично описывается компонент Environ с дифференциальным уравнением изменения состояния окружающей среды (5.4): eʹ := 1,00[1/a] p + 6,90[1/а] h + 2,70[1/a] с. Описания MDL-компонентов проверяются на синтаксис, компилируются в объектные модули и объединяются для реализации в мультиагентную модель. Для представления результатов в виде временных графиков Complete timeseries создается блок наблюдения Observer переменных sun (солнце), p (растения), h (травоядные животные), c (плотоядные животные), o (органические отложения) и др. Результаты моделирования солнечной активности и переменных состояния экологической системы, отмеченные в блоке наблюдения Obs1, в зависимости от колебаний солнечной энергии в течение года приведены на рис. 5.3 (см. цв. вклейку). Обозначения кривых с указанием имен модели и базисного компонента, идентификатора переменной и ее размерности приведены в нижней части экрана. Из графиков видно, что в годовом цикле изменения солнечной активности sun также циклично происходит увеличение биомассы растений (голубая линия), что ведет к увеличению числа травоядных и хищников (зеленая и синяя линии). С уменьшением объема растительной биомассы рост травоядных сокращается, что, в соответствии с моде-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 146 Глава 5. Мультиагентное моделирование в Simplex3 Рис. 5.3. Графики изменения переменных состояния мультиагентной модели СedarBog лью Лотки–Вольтерры, приводит к снижению количества хищников. При этом выбросы биомассы в окружающую среду и накопление органических отложений на дне озера непрерывно увеличиваются (красная и коричневая линии). Рассмотренные модели агентов и мультиагентная система в целом являются открытыми и, как будет показано ниже, могут быть дополнены описаниями дискретных событий, процедур интеллектуальных решений и иерархических подсистем.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 5.2. Иерархические модели 147 5.2. Иерархические модели В мультиагентной модели экологической ситуации (см. рис. 5.1) все базисные компоненты находятся на одном иерархическом уровне и объединены в общую структуру компонентом верхнего (внешнего) уровня. Для построения иерархической модели рассмотрим водную среду CedarBog с выделением базисных компонентов Sun, Organic и компонента верхнего уровня Lake_High (озеро), отражающего динамические процессы (5.3) накопления растительной биомассы и изменения численности популяций травоядных и хищников в водоеме с учетом меняющейся интенсивности солнечного излучения на различной глубине озера. Для отображения ситуации в трех глубинных слоях озера внутри компонента Lake_High выделяются три подкомпонента Layer (рис. 5.4), составляющих нижестоящий уровень иерархии модели. Компоненты Sun и Organic находятся на одном уровне иерархии с компонентом Lake_ High и объединяются внеш- Рис. 5.4. Двухуровневая модель CedarBog
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 148 Глава 5. Мультиагентное моделирование в Simplex3 ним компонентом верхнего уровня модели CedarBog_High (листинг 5.7). Идентичные по структуре и динамике слои представляются как компоненты класса Layer (листинг 5.8) c описанием состояния и динамического изменения массы растений, кормов травоядных, хищников и донных отложений для каждого слоя с учетом коэффициента солнечной активности f, инициализируемого в компоненте верхнего уровня Lake. HIGH LEVEL COMPONENT CedarBog_High SUBCOMPONENTS Sun, Lake, Organic COMPONENT CONNECTIONS Sun.suns --> Lake.sun; Lake.o1 --> Organic.org1; Lake.o2 --> Organic.org2; Lake.o3 --> Organic.org3; END OF CedarBog_High Листинг 5.7. Компонент CedarBog_High BASIC COMPONENTS Layer USE OF UNITS TIMEUNIT = [a] DECLARATION OF ELIMENTS CONSTANT f (REAL) := 1, # коэффициент солнечной активности BioFac (REAL[a]) := 1E-15 [a] STATE VARIABLES CONTINUOUS p (REAL[t]) := 0 [t], # биомасса растения h (REAL[t]) := 0 [t], # число травоядных c (REAL[t]) := 0 [t], # число плотоядных o (REAL[t]) := 0 [t], # донные отложения DEPENDENT VARIABLE CONTINUOUS sun bio (REAL[t/a]) := 0 [t/a] SENSOR VARIABLE CONTINUOUS # солнечная активность sun (REAL[kJ/m^2]) := 0 [kJ/m^a] DYNAMIC BEHAVIOUR sun_bio := sun * BioFac;
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 5.2. Иерархические модели 149 DIFFERENTIAL EQUATIONS p’ := f * sun_bio - 4.03 [1/а] * P; h’ := 0.48 [1/a] * p - 17.87 [1/а] * h; c’ := 4.85 [1/a] * h - 4.65 [1/а] * c; o’ := 2.55 [1/a] * p + 6.12 [1/а] * h + 1.95[1/a] * c; END END OF Layer Листинг 5.8. Описание модели компонента класса Layer Описание синтаксиса компонентов верхнего уровня на промежуточном уровне иерархии в отличие от компонента внешнего уровня включает разделы входных и выходных переменных, инициализации констант и переменных состояния подкомпонентов в следующей форме: HIGH LEVEL COMPONENT < имя > [dimension_ constant_ definition_ part] subcomponent_ declaration – подкомпоненты [input_ connection_ part – входные переменные] [output_ equivalence_ part – выходные переменные] [component_ connection_ part – описание связей] [initialization_ part – инициализация] END OF < имя > В соответствии с этим в листинге 5.9 приведено описание компонента верхнего уровня Lake_High. HIGH LEVEL COMPONENT Lake_High SUBCOMPONENTS Layerl, Layer2 , Layer 3 OF CLASS Layer INPUT CONNECTIONS sun --> (Layer1.sun, Layer2.sun, Layer3.sun); OUTPUT EQUIVALENCES o1 := Layerl.o; o2 := Layer2.o; o3 := Layer3.o; INITIALIZE Layerl.f := 1; Layer2.f := 0.8; Layer3.f := 0.6; END OF Lake_High Листинг 5.9. Описание модели для компонента Lake_High
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 150 Глава 5. Мультиагентное моделирование в Simplex3 Описание входных переменных input_ connection_ part включает ключевые слова INPUT CONNECTION (S), за которыми следуют описания всех входов с указанием с помощью символа —> имен всех сенсорных входов подкомпонентов. При этом инициализация допускается только от одного иерархического уровня к другому. То же относится к разделам Output Equivalences и Initialization. Описание компонентов Organic с соответствующими сенсорными переменными показано на примере Organic в листинге 5.10. BASIC COMPONENT Organic USE OF UNITS TIMEUNIT = [a] DECLARATION OF ELEMENTS DEPENDENT VARIABLES CONTINUOUS org (REAL[t]) := 0 [t] # донные отложения SENSOR VARIABLES CONTINUOUS org1 (REAL[t]), org2 (REAL[t]), org3 (REAL[t]) DYNAMIC BEHAVIOUR org := org1 + org2 + org3; END OF Organic Листинг 5.10. Компонент Organic Результаты моделирования накопления донных органических отложений в разных глубинных слоях озера org1, org2, org3 и их общей массы org представлены на рис. 5.5. Для обращения к модельным величинам от подчиненных компонентов при описании монитора в окне параметров допускаются более длинные пути. Если, например, наблюдается переменная p из компонента Layer3 в блоке наблюдения OLayer3, то путь записывается в следующем виде: CedarBog_High/Lake/Layer/p. В компонентах верхнего уровня, которые сами являются подкомпонентами и одновременно могут содержать подкомпоненты, модель-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 5.2. Иерархические модели 151 Рис. 5.5. Графики накопления органических отложений в различных водных слоях и на дне озера ные величины не могут быть изменены. Они передаются от одного уровня к другому как снизу вверх, так и сверху вниз.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Глава 6 ПРОЦЕДУРНЫЕ ЭЛЕМЕНТЫ SIMPLEX5MDL Simplex3 может интегрироваться с собственными и внешними процедурными компонентами в виде MDL- и С-функций и вводить процедурные модули, облегчающие реализацию различных алгоритмов интеллектуального поведения агентов. 6.1. Собственные MDL5функции Процедурные части выделяются в отдельные функциональные компоненты в следующей синтаксической структуре: FUNCTION <имя компонента> [MOBILE SUBCOMPONENTS of CLASS < имя мобильного компонента>] [USE OF UNITS] [LOCAL DEFINITION] [DECLARATION OF SUBFUNCTIONS] DECLARATION OF ELEMENTS [CONSTANTS ] INPUT PARAMETER[S] OUTPUT PARAMETER[S] [LOCAL VARIABLES] [RANDOM VARIABLES] < процедурная часть > END OF <имя компонента> В раздел объявления элементов модели включаются в заданном порядке константы, параметры ввода-вывода, локальные и случайные переменные. Группы элементов, от-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 6.1. Собственные MDL$функции 153 меченные в квадратных скобках, могут быть пропущены. Локальные переменные действуют только в функциональных компонентах и используются для хранения промежуточных результатов. Аналогично функции-процедуре в алгоритмическом языке высокого уровня входными параметрами являются актуальные параметры обращения (как минимум один), а выходными — результирующие параметры, возвращаемые в место вызова с помощью оператора RETURN. Процедурная часть начинается с ключевого слова BEGIN и использует указатели для локальных переменных и параметров вывода, а также операторы DISPLAY, IF, циклы FOR и WHILE: LOOP <имя цикла> WHILE <условие> REPEAT <тело цикла> [EXIT <имя цикла>] END LOOP <имя цикла> Цикл повторяется, пока условие истинно, и при его невыполнении заканчивается по команде EXIT. Функциональный компонент объявляется в разделе LOCAL DEFINITION базисного компонента после ключевых слов DECLARATION OF SUBFUNCTIONS c указанием имени и интерфейса по форме: <имя функции> (< Type >: <Inputparameter1>{, (<Type> < Inputparameter>}  <Type outparameter1> {, <Type outparameter> }) Организация вызова зависит от числа возвращаемых параметров и в случае одного параметра осуществляется указателем функции, включаемым в любой оператор. Возвращение более одного параметра соответствует процедуреподпрограмме в алгоритмическом языке высокого уровня и выполняется оператором вызова со списком возвращаемых переменных.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 154 Глава 6. Процедурные элементы Simplex$MDL При объявлении функции в базисном компоненте указываются ее формальные параметры, их тип (real, integer, logical, location, array) и единицы измерения. Фактические параметры задаются при вызове функции в указателе или операторе вызова. При этом тип, порядок и единицы измерения должны быть одинаковыми. Для гарантии соответствия проводится проверка на совместимость между объявлениями и вызовом. При этом проверяется число, тип и размерность параметров вводавывода, а также исключается возможность использования случайных переменных в качестве входных параметров при решении дифференциальных уравнений. В функциональных компонентах до начала имитации или в состоянии прерывания по команде Model parameters могут быть изменены только константы. Если функция используется в нескольких базисных компонентах, то изменение константы в одном из них не влияет на ее значение в других. В качестве примера в компонент Sun мультиагентной модели CedarBog (см. рис. 5.1) введем собственную функцию fmeteo учета метеоусловий с одним выходным параметром и в компонент Organiс функцию ochistka с несколькими выходами. В базисный компонент Sun включается раздел локальных определений с объявлением MDL-функции fmeteo (листинг 6.1) и оператор вычисления коэффициента метеоусловий ksun с обращением к функции через ее указатель. BASIC COMPONENT Sun USE OF UNITS TIMEUNIT = [a] # единица времени – день LOCAL DEFINITIONS DECLARATION OF SUBFUNCTION fmeteo (INTEGER[a]:TNext--> REAL) # заголовок функции DECLARATION OF ELEMENTS CONSTANTS Pi(REAL) := 3.14 STATE VARIABLES DISCRETE
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 6.1. Собственные MDL$функции 155 ksun (REAL):=0, # коэффициент метеоусловий TNext (INTEGER[a]):=0[a] # дискретное время в днях DEPENDENT VARIABLES CONTINUOUS suns (REAL[kJ/m^2]) := 0 [kJ/m^2] DYNAMIC BEHAVIOUR WHENEVER (T>= Tnext) DO ksun^ := fmeteo (TNext); # обращение к функции TNext ^:= TNext +1[a]; END suns := ksun*95.9[kJ/m^2]* (1+0.635*SIN(2[1/a]*Pi*T/365)); END OF Sun Листинг 6.1. Базисный компонент Sun с MDL$функцией fmeteo В зависимости от погодных условий с определенной вероятностью очередной день может быть ясным, с переменной облачностью, пасмурным и дождливым. Соответственно этому, коэффициент ksun принимает значения 1, 0,8, 0,6 и 0,3. В описание функции (листинг 6.2) в частном случае вводится равномерное распределение случайной целочисленной переменной md от 1 до 4, определяющее значение локальной переменной mt, присваиваемое выходной переменной ksun. Входом является дискретное текущее время TNext в днях. FUNCTION fmeteo USE OF UNITS TIMEUNIT=[a] # время в днях DECLARATIONS OF ELEMENTS INPUT VARIABLES TNext(INTEGER[a]) OUPUT VARIABLES ksun (REAL) # коэффициент метеоусловий LOCAL VARIABLES mt(REAL) RANDOM VARIABLES # датчик случайных чисел md (INTEGER):IUNIFORM (LowLimit:=1,UpLimit:=4) BEGIN IF T>= TNext DO IF md =1 DO mt ^:=1.0; END
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 156 ELSIF md =2 ELSIF md =3 ELSIF md =4 ksun^ := mt; RETURN END OF fmeteo Глава 6. Процедурные элементы Simplex$MDL DO mt ^:=0.8; END DO mt ^:=0.6; END DO mt ^:=0.3; END Листинг 6.2. Описание MDL$функции fmeteo с одним выходом В результате введения собственной функции fmeteo изменение солнечной активности, биомассы растений, флоры и фауны с учетом метеоусловий имеет вид, показанный на рис. 6.1 и рис. 6.2 (см. цв. вклейку). Для отражения события, связанного с периодической очисткой озера, в базисный компонент Organic (листинг 6.3) вводится функция дискретного изменения количества донных отложений во времени оchistka с двумя выходными па- Рис. 6.1. Изменение солнечной активности с учетом метеоусловий
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 6.1. Собственные MDL$функции 157 Рис. 6.2. Изменение биомассы растений и фауны с учетом метео$ условий раметрами org и org_max, означающими текущее и максимально допустимое количество отложений. BASIC COMPONENT Organic USE OF UNITS TIMEUNIT = [a] LOCAL DEFINITIONS DECLARATION OF SUBFUNCTIONS ochistka(REAL[t],REAL[t] --> REAL[t], REAL[t]) DECLARATION OF ELEMENTS STATE VARIABLES CONTINUOUS org (REAL[t]) := 0 [t], org_max (REAL[t]) := 200 [t] SENSOR VARIABLES CONTINUOUS
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 158 Глава 6. Процедурные элементы Simplex$MDL p (REAL[t]), h (REAL[t]), c (REAL[t]) DYNAMIC BEHAVIOUR DIFFERENTIAL EQUATIONS org’ := 2.55[1/a] * p + 6.12[1/a] * h + 1.95[1/a] * c ; END ON ^ org >= org_max ^ DO # оператор вызова (org^,org_max^) := ochistka (org, org_max); END END OF Organic Листинг 6.3. Базисный компонент Organic с собственной MDL$ функцией ochistka Оператор вызова означает в данном случае присваивание новых текущих значений переменным org^, org_max^, получаемых в результате выполнения процедуры ochistka для задаваемых входных параметров org и org_max. Описание собственной MDL-функции ochistka в базисном компоненте Organic показано в листинге 6.4. FUNCTION ochistka USE OF UNITS TIMEUNIT = [a] DECLARATION OF ELEMENTS INPUT PARAMETERS In1 (REAL[t]) , # org – текущие донные отложения In2 (REAL[t]) # org_max - верхний предел OUTPUT PARAMETERS Out1 (REAL[t]), Out2 (REAL[t]) BEGIN Out1:= 0.2*In1; # уменьшение переменной org в 5 раз Out2:= 3*In2/2; # увеличение org_max в 1,5 раза RETURN END OF ochistka Листинг 6.4. Описание MDL$функции ochistka Результат введения функционального компонента ochistka в дискретное событие «Очистка отложений» с изменением допустимого предела показан на рис. 6.3.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 6.2. Внешние С$функции Simplex$MDL 159 Рис. 6.3. Процесс очистки озера во времени На графике видно увеличение промежутка времени между событиями очистки озера с увеличением допустимого уровня донных отложений (штриховая линия). 6.2. Внешние С5функции Simplex5MDL Для обеспечения доступа к внешним данным, библиотекам С-функций и составлению собственного комплексного алгоритма пользователя в Simplex3-MDL используется вызов внешних С-функций. Внешние С-функции являются составной частью банка модели и хранятся в каталоге (директории) External Functions (внешние функции). С-модули создаются через контекстное меню в каталоге External Functions в двух вариантах: 1) операцией Import… для передачи существующих С-модулей из других библиотек или внешних источников;
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 160 Глава 6. Процедурные элементы Simplex$MDL 2) командой New external для создания новых С-модулей. Внешние С-модули не ограничены описанием только одной внешней С-функции и могут содержать столько функций, сколько требуется. При вводе внешнего С-модуля соответствующее контекстное меню предлагает набор операций для управления: Cut, Copy, Paste, Duplicate, Delete, Rename и Edit external. Кроме того, существуют еще две операции: Compile external (компилировать внешний модуль) и Reset (сбросить). Подобно модельным компонентам, С-модули могут компилироваться непосредственно из пользовательского интерфейса Simplex3 операцией Compile external, транслирующей С-файл в объектный код. Описание модели связывается с внешними С-функциями при ее инсталляции с применением операции Install model. При инсталляции модели, С-функции, содержащиеся в виде скомпилированных объектных файлов в директории External Functions, автоматически связываются с имитационной программой в текущем времени Simplex3. При исключении внешних С-функций из имитационных моделей в банке моделей их надо перезагрузить. Если внешние С-функции изменяются, то модели, вызывающие эти функции, тоже должны быть переинсталлированы. Заголовок С-функции с одним параметром возврата имеет вид: <function_head> ::= <type> identifier (<in_parameter>{, <in_parameter>}) <type> <in_parameter>; {<type> < in_parameter>;} где <type> ::= 'integ' при INTEGER в MDL; 'real' при REAL в MDL; 'logic' при LOGICAL в MDL; 'enumera' в случае назначаемого типа VALUE SET; 'array' в случае массива при любом типе MDL; < in_parameter> — идентификатор входного параметра.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 6.2. Внешние С$функции Simplex$MDL 161 Например, заголовок С-функции ScalProd для вычисления скалярного произведения двух векторов имеет вид: real ScalProd (x, y) array x; array y; В случае нескольких входных и выходных параметров их тип, размерность и идентификаторы могут задаваться в круглых скобках после имени функции аналогично собственным MDL-функциям Simplex3. Внешние С-функции так же, как и собственные функции, объявляются в разделе LOCAL_DEFINITION с использованием ключевых слов C_FUNCTION. Например, функция, вычисляющая экспоненциально распределенное случайное число: LOCAL DEFINITIONS C_FUNCTION Exp_Rand (REAL  REAL) В данном случае входные и выходные параметры функции определяются типами через указательную стрелку. Синтаксическая структура вызываемых С-функций должна использовать те же типы переменных, что и в описаниях Simplex-MDL. Вызов функции может происходить в любом месте описания динамики базисного компонента с использованием указателя функции A := Func_1(B, 3) + Func_2(4, Func_3(D)); или в случае переменной состояния, отмечаемой символом ^: TArrive^ := T + Exp_Rand (7.0); Sum^ := Sum + Func3 (Value);. При этом в основную программу вычисляемой переменной или константе возвращается только одно значение этой функции. Так, в случае вычисления скалярного произведения двух векторов типа REAL в разделе LOCAL DEFINITIONS базисного компонента объявляется С-функция ScalProd: C_FUNCTION ScalProd (ARRAY X [n] REAL, ARRAY Y [n] REAL  REAL)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 162 Глава 6. Процедурные элементы Simplex$MDL В разделе STATE VARIABLES базисного компонента объявляются два одномерных массива типа REAL, например, размерностью 10: STATE VARIABLES DISCRETE ARRAY [10] A (REAL) := 0, ARRAY [10] B (REAL) := 0. Далее в разделе динамики поведения некоторой переменной состояния Product для заданных массивов А и B присваивается значение выходного параметра функции ScalProd через оператор: Product ^:= ScalProd (ARRAY A, ARRAY B) ; В следующем примере модели SMO (листинг 4.2), рассмотренной в четвертой главе, случайные числа интервалов времени прихода деталей 1-го и 2-го типов с нормальным логарифмическим распределением могут быть заданы в описании базисного компонента не как случайные экспоненциально распределенные переменные в разделе RANDOM VARIABLES, а как внешние C-функции C_FUNCTION Exp_Rand (REAL  REAL) датчиков случайных чисел Exp_ Rand с объявлением в разделе LOCAL DEFINITIONS. Вызов функции Exp_Rand, возвращающей экспоненциально распределенные значения случайных переменных в основную программу, например интервалов прихода заявок двух типов Arrive1 и Arrive2, осуществляется указателями функции при определении времени поступления заявок: TArrive1^ := T + Exp_Rand (5.0); TArrive2^ := T + Exp_Rand (20.0); Доступ к входным и выходным значениям осуществляется через специальные функции с применением ранее определенных макросов. Для этого в начале описания Сфункции приводится ряд головных файлов, обеспечивающих согласование С-программы со структурами данных и передаваемыми параметрами.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 6.2. Внешние С$функции Simplex$MDL 163 # include "sys struct .h." /* Структуры данных */ # include "sys extern.h." /* Внешние переменные*/ # include "rts func.h" /* Функции, выполняемые системой */ # include "c macros.h" /* Макрос для раскрытия пути доступа */ …………. Эти головные файлы могут быть найдены в директории include \simplex при инсталляции Simplex3. В листинге 6.5 показано содержание С-функции Exp_ Rand, вызываемой в модифицированной модели SMO (см. листинг 4.2). 1 /***************************************************/ 2 /* Function Exp_Rand ( REAL: mean --> REAL ) */ 3 /***************************************************/ 4 # include "sys_struct.h" 5 # include "sys_extern.h" 6 # include "rts_func.h" 7 # include "c_macros.h" 8 # include <stdlib.h> 9 # include <math.h> 10 real Exp_Rand ( real mean ) 11 { 12 real x_uniform; 13 real x_exp; 14 x_uniform = ( real ) rand ( ) / ( RAND_MAX + 1.0 ); 15 x_exp = -InPara ( mean) * log ( x_uniform ); 16 return ( x_exp ); 17 } Листинг 6.5. Внешняя С$функция вычисления экспоненциально рас$ пределенных случайных чисел Таким образом, С-функция Exp_Rand осуществляет получение равномерно распределенных случайных чисел x_uniform в интервале [0,1] и далее по формуле х_exp = –mean * ln (х_uniform) генерирование экспоненциально распределенных случайных чисел.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 164 Глава 6. Процедурные элементы Simplex$MDL В качестве примера по аналогии с собственными MDLфункциями в мультиагентной модели CedarBog (см. рис. 5.1) внешняя С-функция учета метеоусловий meteo в компоненте Sun также объявляется в разделе локальных определений (листинг 6.6) и вызывается для определения коэффициента метеоусловий ksun. BASIC COMPONENT Sun USE OF UNITS TIMEUNIT = [a] LOCAL DEFINITIONS C_FUNCTION meteо (INTEGER[a] --> REAL) DECLARATION OF ELEMENTS CONSTANTS Pi(REAL) := 3.14 STATE VARIABLES DISCRETE ksun (REAL):=0, TNext (INTEGER[a]):=0[a] DEPENDENT VARIABLES CONTINUOUS suns (REAL[kJ/m^2]) := 0 [kJ/m^2] DYNAMIC BEHAVIOUR WHENEVER (T>= Tnext) DO ksun^ := meteо (TNext); # коэффициент метеоусловий TNext ^:= TNext +1[a]; END suns:=ksun*95.9[kJ/m^2]*(1+0.635*SIN(2[1/a]*Pi*T/365)); END OF Sun Листинг 6.6. Базисный компонент Sun с внешней С$функцией meteo Внешняя С-функция meteо компонента Sun вносится в директорию External Functions навигатора Simplex3 и имеет следующий вид (листинг 6.7): 1 /************************************************/ 2 /* Function meteо (INTEGER[a] --> REAL)*/ 3 /************************************************/ 4 # include "sys_struct.h" 5 # include "sys_extern.h" 6 # include "rts_func.h"
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 6.3. Внешние С$процедуры 165 7 # include "c_macros.h" 8 # include <stdlib.h> 9 # include <math.h> 10 # include <time.h> 11 # include <stdio.h> 12 # define Pi 3.14 13 real metee ( integ a1 ) 14 { real b; 15 int c,i,par1=2, par2 =5; 16 i = a1/365; 17 if (a1>365) a1= a1 - 365*i; 18 if (a1=44) { par1=2; par2 =4;} 19 if (a1=135) { par1=5; par2 =9;} 20 if (a1=227) { par1=6; par2 =9;} 21 if (a1=318) { par1=2; par2 =7;} 22 c=1+ rand () % 10; 23 if ((c>=1) && (c<par1)) b=0.2; 24 if ((c>=par1) && (c<par2)) b=0.5; 25 if (c>=par2) b=0.8; 26 return ( b ); 27 } Листинг 6.7. Внешняя С$функция meteо Результаты моделирования изменения солнечной активности с введением внешней С-функции meteo вычисления коэффициента метеоусловий полностью совпадают с графиком, показанным на рис. 6.1. 6.3. Внешние С5процедуры В случае нескольких возвращаемых переменных в отличие от С-функции с одним значением возврата вводится С-процедура, имеющая как входные параметры <in_parameter>, так и выходные <out_parameter>: <procedure_head> ::= void identifier (< in_ parameter > {, < in_parameter > }, < out_parameter > {< out_parameter >}) < type > < in_parameter > ; {<type> < in_ parameter > ;} < type > < out_parameter >; {<type> < out_parameter > ;}
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 166 Глава 6. Процедурные элементы Simplex$MDL Так, заголовок С-процедуры сложения двух векторов X, Y имеет вид: vоid VecAdd ( x, y, z) array x; array y; array z; # z – выходной параметр. Аналогично С-функциям, внешние С-процедуры также объявляются в разделе LOCAL_DEFINITION с использованием ключевых слов C_PROCEDURE и перечислением типов входных и выходных параметров. Например, при обработке массива исходных данных заявок Candidate, объявление имеет вид: LOCAL DEFINITIONS C_PROCEDURE Candidate (ARRAY [n ] [m] REAL, NTEGER, REAL --> INTEGER, REAL, REAL) С-процедура вызывается с помощью оператора вызова со списком актуализированных входных переменных для вычисления выходных параметров процедуры, значения которых передаются вычисляемым переменным базисного компонента. В качестве входных и выходных параметров функции могут быть константы, переменные и массивы, как, например: (A, B, C):= Proc (D, E, 3.14); (А, B, ARRAY C): = Proc (X, Y, ARRAY D); В случае передачи выходных параметров переменным состояния модели идентификаторы переменных отмечаются символом ^: (А^, B^, ARRAY C^): = Proc (X, Y, ARRAY D); Например, при сложении двух векторов типа REAL в MDL-описание базисного компонента вводится объявление С-процедуры VecAdd, описание двух входных массивов A и B и массив рассчитываемой переменной Result:
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 6.3. Внешние С$процедуры 167 STATE VARIABLES DISCRETE ARRAY [10] A (REAL) := 0, ARRAY [10] B (REAL) := 0, ARRAY [10] Result (REAL) := 0. При обращении массивы A и B указываются в обращении к процедуре VecAdd с выходным массивом, возвращаемым в Result: (ARRAY Result)^ := VecAdd (ARRAY A, ARRAY B); . В операционной части С-процедур должны использоваться соответствующие типы Simplex-MDL. Доступ к входным параметрам осуществляется через следующие макросы:  в случае простой переменной: InPara (identifier );  для одномерного массива : InPara1 (identifier, < type >, index1);  для двумерного массива: InPara3 (identifier, < type >, index1, index2) с указанием типа < type > :: = integ ; real ; logic; enumera. Например: InPara (a) InPara1 (v, real, 2) InPara2 (M, real, i, j) # доступ к входному параметру a; # доступ ко второму компоненту # массива v; # доступ к элементу i-й строки и j-го # столбца двумерного массива M. Доступ к выходным параметрам осуществляется аналогично, с помощью OutPara. Многомерные параметры доступны через имя массива:  для входных параметров: identifier.d1 # индекс элемента по 1-й координате; identifier.d2 # индекс по 2-й координате,  для выходных параметров: identifier->d1 # индекс 1-го измерения; identifier->d2 # индекс 2-го измерения; identifier->d3 # индекс 3-го измерения.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 168 Глава 6. Процедурные элементы Simplex$MDL В соответствии с этим фрагмент программы С-процедуры Scalarproduct имеет вид: vоid real Scalarproduct (Vector1, Vector2) array Vector1; array Vector2; ... { for (i = 1; i <= Vector1.d1; i++) { Sum += InPara1(Vector1, real, i)*InPara1(Vector2, real, i); … В качестве примера в описание динамики поведения агента в СМО [34] введем С-процедуру выбора из очереди заявки c самым быстрым обслуживанием по критерию максимального отношения времени ожидания клиента и времени его обслуживания. Заголовок С-процедуры Max_Prio выбора клиента с максимальным приоритетом в разделе LOCAL DEFINITIONS записывается следующим образом: C_PROCEDURE MaxPrio ( ARRAY [n][m] REAL, INTEGER, REAL --> INTEGER, REAL, REAL) с тремя входами: 1) двумерный массив ARRAY [n][m] REAL временных характеристик мобильных компонентов (заявок клиентов) с двумя атрибутами (время вхождения в очередь и время обработки i-й заявки), задаваемыми в базисном компоненте; 2) число клиентов в очереди; 3) текущее время. C-процедура вызывается, когда агенту нужно сделать выбор клиента с самым высоким приоритетом обслуживания. Найденный индекс выбираемого клиента в виде мобильного компонента в исходном накопительном массиве WaitP возвращается как выходной параметр Position^ вместе с временем входа T_Entry^ и временем обработки T_Proc^ выбранного клиента оператором: (Position^,T_Entry^,T_Proc^) := MaxPrio (ARRAY Data, NUMBER (WaitP)),T ); Описание С-процедуры MaxPrio дано в листинге 6.8.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 6.3. Внешние С$процедуры 169 Изложенные формы организации внешних С-функций и С-процедур существенно расширяют возможности описания динамики поведения интеллектуальных агентов, связывая их с программным обеспечением ранее разработанных алгоритмов на современных языках высокого уровня. 2 /* Procedure MaxPrio ( ARRAY [n][m] REAL: data, */ 3 /* INTEGER: number, REAL: time --> INTEGER, REAL, REAL) */ 6 /***************************************************/ 7 # include "sys_struct.h" 8 # include "sys_extern.h" 9 # include "rts_func.h" 10 # include "c_macros.h" 11 # include <stdio.h> 12 # include <stdlib.h> 13 void MaxPrio ( array data; 14 integ number; 15 real time; 16 integ *position; 17 real *r_entry; 18 real *r_proc; 19 ) 20 { 21 int i; 22 real high_priority = 0.0; 23 real curr_priority = 0.0; 24 integ MaxPrio = 1; 25 if ( InPara ( number ) >= 1 ) 26 for ( i = 1; i <= InPara ( number ); i++ ) 27 { 28 curr_priority = ( InPara ( time ) – 29 InPara2 ( data, real, i, 1 ) ) / 30 InPara2 ( data, real, i, 2 ); 31 if ( curr_priority > high_priority ) 32 { 33 high_priority = curr_priority; 34 candidate = i; 35 } 36 } 37 OutPara ( position ) = candidate; 38 OutPara ( r_entry ) = InPara2 ( data, real, MaxPrio, 1 ); 39 OutPara ( r_proc ) = InPara2 ( data, real, MaxPrio, 2 ); 40 } Листинг 6.8. Описание С$процедуры MaxPrio
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Глава 7 АГЕНТНЫЕ ТЕХНОЛОГИИ МОДЕЛИРОВАНИЯ И ИМИТАЦИИ В SIMPLEX3 Агентные технологии моделирования сводятся к воспроизведению состояния, поведения и взаимодействия интеллектуальных агентов в заданной среде. Варьируя характеристики и стратегии отдельных активных элементов, можно наблюдать ситуационную динамику состояния мультиагентной системы в целом и прогнозировать ее возможности достижения заданной цели. Как уже отмечалось, несмотря на многообразие ситуаций различной социальной и физической природы, стратегии взаимодействия агентов сводятся к прямому переговорному процессу, ситуационным стратегиям принятия решения и к интеллектуальным стратегиям достижения цели в условиях начальной неопределенности, риска и противодействия. Реализация стратегий в конкретной среде достигается последовательностью операций, связанных с индивидуальной оценкой и изменением параметров состояния каждого взаимодействующего агента в соответствии с общим алгоритмом его поведения (рис. 1.1). 7.1. Мультиагентная модель с переговорными стратегиями Переговорный процесс между агентами в мультиагентной системе сводится к обмену сообщениями с помощью мобильного компонента Message, заголовок которого содержит идентификатор отправителя, идентификатор получателя, тип и собственно сообщение. Например, в диалоге между продавцами Seller и покупателями Buyer в рыноч-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.1. Мультиагентная модель с переговорными стратегиями 171 ных отношениях выделяются [55] четыре типа сообщений, структура и содержание которых представлены в табл. 7.1. Структурная схема мультиагентной имитационной модели Market с переговорными стратегиями агентов-продавцов и агентов-покупателей классов Seller и Buyer показана на рис. 7.1. Таблица 7.1 Типы сообщений продавцов и покупателей Тип Содержание Отправитель Получатель ’Preis’ Запрос цен Покупатель Продавец ’Bestaellung’ Заказ, объем покупки Покупатель Продавец ’Angebot’ Предложение, объем поставки Продавец Покупатель ’Verkauf’ Подтверждение продажи Продавец Покупатель Связь между агентами осуществляется через базисный компонент Connector, функция которого заключается в адресном направлении непосредственному получателю мобильного компонента Mеssage заданного типа. Оценка рыночной ситуации с регистрацией цен Price[i], объемов продаж Quantity[i] и долей рынка MShares[i] агентов-продавцов, расчетом средней цены AvgPrice и общего оборота рынка AllQty происходит в компоненте Statistic и доступна всем продавцам. В соответствии со структурой связей и переменными состояния массивы базисных компонентов классов Seller и Buyer объединяются в переговорную мультиагентную модель Market компонентом верхнего уровня HIGH LEVEL COMPONENT Market (листинг 7.1).
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 172 Глава 7. Агентные технологии в Simplex3 Рис. 7.1. Структурная схема мультиагентной имитационной модели Market с переговорными стратегиями агентов: MState — переменная состояния рынка (TRUE — транзактивная фаза); AllQty — общий оборот рынка; Prices[i] — цена i$го продавца; Quantity[i] — объем продаж i$го продавца; MShares[i] — доля рынка i$го продавца; Avg Price — средняя цена; MInfRdy — сигнал предоставления информации продавцам; InS, OutS, InB, OutB — входные и выходные накопители со$ общений соответственно агентов продавцов Seller и агентов покупателей Buyer; Gate — промежуточный буфер
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.1. Мультиагентная модель с переговорными стратегиями 173 HIGH LEVEL COMPONENT Market DIMENSIONS NMax Buyer := 200, # максимальное число покупателей NMax Seller := 50, # максимальное число продавцов Nbuyer := …. # заданное число покупателей Nseller := …. # заданное число продавцов SUBCOMPONENTS # массив покупателей ARRAY[NMaxBuyer] Buyer OF CLASS Buyer, # массив продавцов ARRAY [NMax Seller] Seller OF CLASS Seller, Connector, Control, Statistic COMPONENT CONNECTIONS # связи продавец-покупатель Seller[i].OutS --> Connector. InS; Connector. OutS{ALL i} --> Buyer{ALL}.InS; # связи покупатель-продавец Buyer[i].OutB --> Connector. InB; Connector.OutB{ALL i} --> Seller[i].InB; Control. Mstate -> (Seller{ALL}.MState, Buyer{ALL}.MState, Statistic.MState); # доли рынка и цены Statistic.MShares{i OF1..NMaxBuyer } --> Seller{ALL}. MShares; Statistic. Prices{i OF 1..NMaxBuyer} --> Seller{ALL}.Prices; # сигнал направления информации продавцам Statistic. MInf --> Seller{ALL}. MInfo; # объемы продаж Seller{ALL i}. Quantity --> Statistic. Quantity[i]; Seller{ALL i}. Price --> Statistic. Price[i]; INITIALIZE Statistic.NBuyer := NBuyer; # Исходные данные для агента-продавца Seller{ALL i}. Id := i; Seller{ALL}. NCons := NCons; Seller{ALL}. NSeller := NSeller; Seller{ALL i | 1 <= i AND i <= NSeller }. MState := TRUE; # Исходные данные для агента-покупателя Buyer{ALL i}. Id := i; Buyer{ALL i | 1 <= i AND i <= NSeller }. MState := TRUE; END OF Market Листинг 7.1. MDLописание компонента верхнего уровня мульти$ агентной модели Market
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 174 Глава 7. Агентные технологии в Simplex3 В упрощенной версии переговорной модели (рис. 7.2) между агентами-продавцами и агентами-покупателями, представляемыми в виде массивов базисных компонентов классов Seller и Buyer соответственно, переговорный процесс сводится к обмену сообщениями Mеssage агентов о выборе торгового партнера, предложениях цены и объемов продаж, торговой сделке и т. п. (табл. 7.1) через компонент Connector. Рис. 7.2. Структурная схема упрощенной переговорной модели в Simplex3: Buy, Sell — выходные и сенсорные накопители сообщений покупателей и продавцов соответственно; P[i], U[i], Z[i,j] — цена, объем поставок и ка$ чество товара; Buys, BuySl, Sells, SellB — входные и выходные накопители сообщений от покупателей к продавцам и от продавцов к покупателям в компоненте Conneсtor В соответствии со структурой связей и параметрами состояния базисных компонентов модели (см. рис. 7.2) в листинге 7.2 представлено описание компонента верхнего уровня Market_1, объединяющего массивы характеристик базисных компонентов покупателей Buyer [1] – Buyer [m] c функциями выбора FFunFd и продавцов Seller [1] –
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.1. Мультиагентная модель с переговорными стратегиями 175 Seller [n] с функциями FPrices определения цены предлагаемого товара и объема поставки в текущий маркетинговый период. HIGH LEVEL COMPONENT Market_1 SUBCOMPONENTS ARRAY[2] Seller, # массив продавцов ARRAY[16] Buyer, # массив покупателей Connect # блок связи COMPONENT CONNECTIONS # обмен сообщениями между Seller и Buyer через Connector Buyer{ALL j}. Buy --> Connector. Buys[j]; Seller{ALL i}.Sell --> Connector.Sells[i]; Connector. BuySl{ALL i} --> Seller[i].Buy; Connector.SellB{ALL j} --> Buyer[j].Sell; # передача цен, предложений и факторов качества от Seller к Buyer Seller{ALL i}.P --> Buyer{ALL}.P[i]; Seller{ALL i}.U --> Buyer{ALL}.U[i]; Seller{ALL i}.Z{ALL j}--> Buyer{ALL}.Z[i][j]; INITIALIZE Buyer{j OF 1..16}.NumB:= j; # порядковый номер покупателя Seller{i OF 1..2}.NumS:= i; # порядковый номер продавца END OF Market_1 Листинг 7.2. Компонент верхнего уровня Market_1 В связях между компонентами в левой части указывается экспортируемый параметр базисного компонента, а в правой — сенсорный параметр базисного компонента, получающего эти данные. Так, все базисные компоненты Buyer передают из накопительных массивов Buy мобильные компоненты Mеssage в общий сенсорный массив Buys компонента Connector: Buyer {ALL j}.Buy  Connector. Buys; Базисный компонент Connect передает из накопительного массива BuySl все поступившие сообщения от покупателей на сенсорные входы Buy базисных компонентов Seller: Connector. BuySl{ALL i}  Seller[i].Buy;
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 176 Глава 7. Агентные технологии в Simplex3 Все базисные компоненты Seller передают из накопительных массивов Sell мобильные компоненты Mеssage в общий сенсорный массив Sells компонента Connector: Seller {ALL i}. Sell  Connector. Sells; Базисный компонент Connect передает из накопительного массива SellB все накопленные сообщения продавцов на сенсорные входы Sell базисных компонентов Buyer: Connector.SellB{ALL j}  Buyer[j].Sell; Для формирования сообщений соответствующего типа все базисные компоненты содержат вспомогательный буферный массив Process. Описание мобильного компонента Mеssage (листинг 7.3) содержит основные данные в диалоге продавца и покупателя. MOBILE COMPONENT Mеssage DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE NumS(INTEGER):=1, NumB(INTEGER):=0, V(REAL):=0, U(REAL):=0, END OF Mеssage # номер продавца # номер покупателя # запрашиваемый объем закупки # объем предложений Листинг 7.3. MDLописание мобильного компонента Mеssage Все базисные компоненты Seller передают свои цены P, объемы предложения U и массив факторов предложений Z[i][j] всем базисным компонентам Buyer: Seller{ALL i}.P  Buyer{ALL}.P[i]; Seller{ALL i}.U  Buyer{ALL}.U[i]; Seller{ALL i}.Z{ALL j}  Buyer{ALL}.Z[i][j]; Алгоритм переговорного процесса (рис. 7.3) включает цикл перебора торгующихся агентов-покупателей
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.1. Мультиагентная модель с переговорными стратегиями 177 Рис. 7.3. Общий алгоритм моделирования маркетингового процесса
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 178 Глава 7. Агентные технологии в Simplex3 j = 1,m с выбором переговорного партнера по критерию выбора, описанному в главе 3, и последующим разыгрыванием согласия или отказа j-го агента, с одной стороны, от предложений i-го агента i = 1,n, с другой. Для каждого покупателя критерий выбора продавца определяется минимальным отношением предлагаемой цены pi к функционалу предпочтения Prij : Qij = min{pi / Prij }; l = i jmin . (7.1) Функционал предпочтения Prij; i = 1,n; j = 1,m i-го продавца j-м покупателем, аналогичный по своему содержанию критерию согласия (2.1), описанному в разделе 2.1, учитывает неценовые характеристики предложения: качество продукции, местонахождение торговой точки, хорошее обслуживание, имидж фирмы-продавца, рекламная компания, привлекательная упаковка и др. Например, для рынка пищевых продуктов можно выделить следующие факторы, определяющие предпочтения выбора: Z1 — качество продукта в 10-балльной шкале; Z2 — термическая обработка продукта (охлажденный, мороженый, вареный, копченый и т. п.); Z3 — наличие и условия доставки; Z4 — глубина переработки (сырье, полуфабрикат, готовый для употребления и т. п.). Функционал (2.1) отражает степень приближения параметров Zj текущего предложения к желаемым показателям и изменяется от 1 (максимально предпочтительное предложение) до 0 (неприемлемое предложение). Таким образом, абсолютный минимум критерия (7.1) будет достигаться при минимальной цене и максимальном предпочтении предложения. При достижении согласия совершается покупка в соответствии с индивидуальным спросом и объемом заказа: vj  v m in j  bj vjm in p jm a x ( p jm a x  p j ) ; j  1, m , (7.2)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.1. Мультиагентная модель с переговорными стратегиями 179 где pj, pjmax — текущая и максимальная цены товара для j-го покупателя; vj, vjmin — текущий и минимальный объемы покупок j-го покупателя; bj = 1, 2, 3… — коэффициент покупательной способности (низкой, средней и высокой) [ед. товара/руб.]. Динамика поведения компонента Buyer отражает выбор продавца по функционалу предпочтения и формирование адресного сообщения Mеssage продавцу с указанием своего индекса NumB, индекса продавца NumS и объема заказа VnumB. При получении обратного сообщения от продавца о выполнении заказа исходная заявка направляется в накопитель выполненных заявок. Алгоритм поведения агента представляется последовательностью следующих событий. Событие 1. Если в начальный момент времени T = = TArrive массив формируемых сообщений Process (Message) := 0 Message, индикатор начала маркетингового периода Begin = FALSE и индикатор совершения покупки Ind = FALSE, то покупатель начинает выбор продавца с помощью функции FFunFd и составление сообщения Mеssage в накопительном массиве Process. При этом индикатор Begin принимает значение TRUE. Событие 2. Если накопительный массив Process имеет хотя бы одну заявку, индикатор начала периода Begin = TRUE и индикатор совершения покупки Ind = FALSE, то покупатель формирует свой спрос V и записывает его в мобильный компонент Mеssage [1], передаваемый в накопительный массив Buy для передачи соответствующему продавцу. Индикатор Ind принимает значение TRUE. Событие 3. Если сенсорный накопительный массив Sell имеет хотя бы одно сообщение, номер покупателя NumB соответствует текущему номеру покупателя и все индикаторы равны TRUE, то покупка совершена и компонент Mеssage [1] передается в хранилище совершенных покупок EndProcess. В соответствии с изложенными событиями MDLописание базисного компонента Buyer будет иметь вид, представленный на листинге 7.4.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 180 Глава 7. Агентные технологии в Simplex3 BASIC COMPONENT Buyer MOBILE SUBCOMPONENTS OF CLASS Message LOCAL DEFINITIONS DECLARATION OF SUBFUNCTIONS # функция выбора продавца с входными массивами цен, # объемов и параметров предложений, желаемых параметров # выбора и результатом – номером продавца FFunFd (ARRAY[m]REAL:P, ARRAY[m]REAL:U, ARRAY[m][n] REAL:Z, ARRAY[n] REAL:Q -->INTEGER) DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE NumB(INTEGER):=0, # номер покупателя Pmax(REAL):=100, # максимальная цена для # покупателя Vmin(REAL):=1, # минимальный объем покупки b(REAL):=1, # коэффициент покупательной # способности V(REAL):=1, # объем покупки TArrive(REAL): = 0, # время начала # маркетингового периода TE(INTEGER):= 30, # продолжительность # маркетингового периода в днях Ind(LOGICAL):=FALSE, # индикатор совершения # покупки Begin(LOGICAL):=FALSE, # индикатор начала # маркетингового периода ARRAY[4] Q (REAL) := 0 # массив оценок # параметров покупателя SENSOR VARIABLES ARRAY [2] P(REAL), # массив предлагаемых цен ARRAY [2] U(REAL), # массив объемов предложений ARRAY [2] [4] Z(REAL) # массив неценовых оценок RANDOM VARIABLES Arrive(INTEGER):IUNIFORM(LowLimit:=1, UpLimit:=30), # качество продукта в 10-балльной шкале Q1(REAL):IUNIFORM(LowLimit:=1,UpLimit:=10), # вид обработки Q2(REAL):IUNIFORM(LowLimit:=1,UpLimit:=2), # наличие доставки Q3(REAL):IUNIFORM(LowLimit:=1,UpLimit:=2), # глубина переработки Q4 (REAL):IUNIFORM(LowLimit:=1,UpLimit:=10), # коэффициент покупательной способности br(REAL):IUNIFORM(LowLimit:=1,UpLimit:=3), Vminr(REAL):EXPO(Mean:=1), # минимальный объем # покупки
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.1. Мультиагентная модель с переговорными стратегиями 181 # максимальная цена Pmaxr(REAL):IUNIFORM(LowLimit:=100,UpLimit:=200) LOCATION # накопитель формируемых сообщений Process(Message):=0 Message, # накопитель совершенных покупок EndProcess(Message):=0 Message, # накопитель сообщений продавцу Buy(Message):=0 Message SENSOR LOCATION # накопитель сообщений от продавца Sell(Massage) DYNAMIC BEHAVIOUR ON START DO # инициализация параметров предпочтения покупателя Q[1]^:= Q1; Q[2]^:= Q2; Q[3]^:= Q3; Q[4]^:= Q4; b^:= br; Vmin^:=Vminr; Pmax^:=Pmaxr; END # Событие 1. Выбор продавца WHENEVER (T>=TArrive) AND (NUMBER(Process)=0) AND (Begin=FALSE) AND (Ind=FALSE) DO Process^: ADD 1 NEW Message CHANGING NumS^:=FFunFd (ARRAY P, ARRAY U, ARRAY Z, ARRAY Q); NumB^:=NumB; END V^:= 0; Begin^:=TRUE; TArrive^:=TЕ+Arrive; END # Событие 2. Определение объема покупки WHENEVER (NUMBER(Process)>0) AND (Begin=TRUE) AND (Ind = FALSE) DO Buy^:FROM Process GET Message[1] CHANGING # определение объема покупки по (7.2) V^:=Vmin+((b*Vmin)/Pmax)*(Pmax-P[Process: Message [1].NumS]); END Ind^:=TRUE; END # Событие 3. Подтверждение согласия WHENEVER (NUMBER(Sell) > 0) AND (Sell: Massage [1]. NumB = NumB) AND (Begin = TRUE) AND (Ind = TRUE)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 182 Глава 7. Агентные технологии в Simplex3 DO # сброс сообщения в накопитель совершенных покупок EndProcess^:FROM Sell GET Message[1]; Ind^:=FALSE; Begin^:=FALSE; TE^:=TE+30; END END OF Buyer Листинг 7.4. SimplexMDL описание базисного компонента Buyer Функция выбора продавца FUNCTION FFunFd по критерию (1.16) представлена на листинге 7.5. Входными параметрами для функции являются массив цен продавцов ARRAY P, массив предложений продавцов ARRAY U, массивы значений параметров выбора: массив параметров предложения продавцов ARRAY Z и массив параметров предпочтения покупателей ARRAY Q. Выходной параметр функции — это номер выбранного продавца NumP. FUNCTION FFunFd DECLARATION OF ELEMENTS INPUT PARAMETERS ARRAY[m] P(REAL), # массив цен продавцов ARRAY[m] U(REAL), # массив предложений продавцов ARRAY[m] [n] Z(REAL), # массив параметров # предложения ARRAY[n] Q(REAL) # массив оценок предпочтений OUTPUT PARAMETERS NumP(INTEGER) # номер выбранного продавца LOCAL VARIABLES minz(REAL):=1e6, # min критерия выбора ARRAY [n] Pred (REAL):=0, # массив функционалов # предпочтения ARRAY [n] dZ (REAL):=0 # массив параметров # предложения BEGIN # инициализация параметров # предложения продавцов dZ[1]:=10; # качество продукта # в 10-балльной шкале dZ[2]:=2; # вид обработки (1,2,…) dZ[3]:=2; # наличие доставки (да, нет) dZ[4]:=10; # уровень технологии # в 10-балльной шкале
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.1. Мультиагентная модель с переговорными стратегиями 183 # выбор продавца по критерию Qij = min{pi / Prij}; l = ijmin FOR i FROM 1 TO m REPEAT FOR j FROM 1 TO n REPEAT # формирование массива # функционалов предпочтения Pred [i]:= Pred [i]+ (Z[i][j]-Q[j])/(dZ[j]); END_LOOP Pred[i]:=1- (1/n)*Pred[i]; END_LOOP # нахождение минимального значения критерия выбора FOR i FROM 1 TO m REPEAT IF (P[i]/Pr [i] <= minz) DO minz:=P[i]/Pred[i]; NumP := i; END END_LOOP RETURN END OF FFunFd Листинг 7.5. MDL$функция выбора продавца FFunFd Поведение агента-продавца в описании компонента Seller можно представить в виде следующих событий. Событие 1. Если сенсорный накопительный массив Buy имеет хотя бы одно сообщение Message [1] с указанным номером продавца NumS, соответствующим текущему номеру продавца, то поступившая заявка Message [1] передается в буферный массив Process. Событие 2. Если массив Process имеет хотя бы один мобильный компонент Message [1], то агент-продавец определяет количество товара, которое он может продать, а именно:  если спрос меньше наличия товара, т. е. V <= U, то продавец удовлетворяет запрос полностью;  в противном случае, V > U, продавец предлагает весь имеющийся остаток. Далее ответное сообщение Mеssage [1] передается в накопительный массив Sell, из которого заявка через компонент Connector направляется к покупателю, и покупка совершается. MDL-описание компонента Seller представлено в листинге 7.6.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 184 Глава 7. Агентные технологии в Simplex3 BASIC COMPONENT Seller MOBILE SUBCOMPONENTS OF CLASS Message DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE NumS(INTEGER):=0, # номер продавца P(REAL) := 0, # цена товара в текущий период U(REAL) :=0, # объем предложений (текущий # остаток) V(REAL) :=0, # текущий спрос на # предлагаемый товар UV(REAL) :=0, # объем продаж продавца Uob(REAL):=0, # общий объем предложений Vob(REAL):=0, # общий уровень спроса TEnd (INTEGER):=35, # время окончания # маркетингового периода ARRAY[4] Z(REAL) := 0 # массив параметров # предложения LOCATION Process(Message):= 0 Message, # буферный накопитель # сообщений Sell(Message):=0 Mеssage # накопитель сообщений # для покупателей SENSOR LOCATION Buy(Message) # сенсорный накопитель # сообщений от покупателей DYNAMIC BEHAVIOUR # Событие 1. Поступление заявки от покупателя WHENEVER (NUMBER (Buy > 0) AND (Buy:Message[1]. NumS:= NumS) DO Process^:FROM Buy GET Message [1]; END # Событие 2. Определение возможного объема продажи WHENEVER (NUMBER(Process) > 0) DO IF (Process: Message[1].V <= U) DO Sell^:FROM Process GET Message [1] CHANGING U^:= Process: Message [1].V; # объем поставки # равен запросу END U^:= U − Process: Message [1].V; V^:= V + Process: Message [1].V; UV^:= UV + Process:Message [1].V; END ELSE DO Sell^:FROM Process GET Message [1] CHANGING U^:= U; END # объем поставки равен # текущему остатку
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.1. Мультиагентная модель с переговорными стратегиями UV^:= U; 185 U^:= 0; V^:= V + Process: Message[1].V; END END # Событие 3. Подведение итогов после окончания # переговоров WHENEVER T >= TE DO Vob^:=V; # общий объем заказов в маркетинговый # период Uob^:= UV + U; # общий объем реализованного товара TEnd^:=TE + 30; # переход к следующему периоду END END OF Seller Листинг 7.6. MDLописание базисного компонента Seller Диалог между компонентами Seller и Buyer осуществляется с помощью базисного компонента Connector (листинг 7.7), направляющего мобильные компоненты Message соответствующим адресатам (агенту-продавцу или агенту-покупателю). BASIC COMPONENT Connector MOBILE SUBCOMPONENTS OF CLASS Message DECLARATION OF ELEMENTS SENSOR VARIABLES ARRAY [2] P(REAL), ARRAY [2] U(REAL) LOCATION BASIC COMPONENT Connector MOBILE SUBCOMPONENTS OF CLASS Message DECLARATION OF ELEMENTS SENSOR VARIABLES ARRAY [2] P(REAL), ARRAY [2] U(REAL) LOCATION Sell(Message):=0 Message, # сервер сообщений от # продавцов Buy(Massage):=0 Massage, # сервер сообщений от # покупателей ARRAY[2] BuySl (Message):=0 Message, # массив # сообщений для продавцов ARRAY[16] SellB (Message):=0 Message # массив # сообщений для покупателей
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 186 Глава 7. Агентные технологии в Simplex3 SENSOR LOCATION ARRAY [2] Sells (Message), ARRAY [16] Buys (Message) # # # # массив сообщений от продавцов массив сообщений от покупателей DYNAMIC BEHAVIOUR # Событие 1. Считывание сообщений от покупателей в накопитель Buy FOR j FROM 1 TO m REPEAT WHENEVER (NUMBER(Buys[j])>0) DO Buy^:FROM Buys[j] GET Message {ALL}; END END_LOOP # Событие 2. Передача заявки в NumS-ю ячейку массива ARRAY[2] BuySl WHENEVER (NUMBER(Buy)>0) DO BuySl[Buy:Message [1].NumS]^:FROM Buy GET Message[1]; END # Событие 3. Считывание сообщений от продавцов в накопитель Sell FOR i FROM 1 TO n REPEAT WHENEVER (NUMBER(Sells[i])>0) DO Sell^:FROM Sells[i] GET Message {ALL}; END END_LOOP # Событие 4. Передача заявки в NumB-ю ячейку массива ARRAY [16] SellB WHENEVER (NUMBER(Sell)>0) DO SellB[Sell: Message [1].NumB]^:FROM Sell GET Message [1]; END END OF Connector Листинг 7.7. MDL$описание базисного компонента Connector При этом описываются следующие события. Событие 1. Если хотя бы один из сенсорных накопительных массивов покупки Buys имеет мобильный компонент Mеssage, то он передается в накопительный массив Buy. Событие 2. Если массив Buy имеет хотя бы одну заявку, то мобильный компонент Mеssage передается соответствующему продавцу NumS в NumS-ю ячейку накопительного массива ARRAY BuySl.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.2. Модель с рефлексивным поведением агентов 187 Событие 3. Если хотя бы один из сенсорных накопительных массивов продажи Sells имеет мобильный компонент Mеssage, то он передается в накопительный массив Sell. Событие 4. Если массив Sell имеет хотя бы одну заявку, то мобильный компонент Mеssage передается соответствующему покупателю NumB в NumB-ю ячейку выходного накопительного массива ARRAY SellB. 7.2. Мультиагентная модель с рефлексивным поведением агентов Рефлексивное поведение, описанное в разделе 2.2, связано с простыми действиями агентов в той или иной ситуации по аналогии с рефлексивной реакцией на изменение параметров состояния среды и других агентов по логике условного оператора «ЕСЛИ – ТО – ИНАЧЕ». Примером такой стратегии поведения агентов может служить мультиагентная ситуационная модель олигопольного рынка [13, 46] с множеством агентов–покупателей продукции и агентов конкурирующих фирм, борющихся за максимальную прибыль и долю рынка. Структурная схема модели (рис. 7.4) включает базисные компоненты фирмконкурентов Firm1, Firm2, Firm3, блок среды Market и массив агентов–покупателей продукции Buyers. Моделируется процесс стабилизации рынка при двух олигополистах с последующим вхождением третьего. Для каждого покупателя в базисном компоненте Buyers в двумерном массиве Criterien [1–9][1–100] задаются требования покупателя к продукту и фирме, а для каждого олигополиста в массиве par [1..9] разыгрываются параметры предлагаемого продукта и сопутствующих услуг. Каждая фирма описывается в отдельном базисном компоненте соответственно Firm1, Firm2, Firm3 с мобильным компонентом query параметров состояния par [1..9] (цена, объем предложений, скидки, реклама, качество, товарный ассортимент, кредит доверия).
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 188 Глава 7. Агентные технологии в Simplex3 Рис. 7.4. Мультиагентная ситуационная модель рынка: QueryStock 1–3, FirmStock — накопители предложений по каждой фирме и в целом; balances [1..3] — массив остатков товара; Cust F1 – Cust F3 — число клиентов соответственно фирм 1–3; LOST_Сlients [1..3] — массив необслуженных клиентов; demand [1..3] — массив объемов упущенных продаж; EQUIPOISE — индикатор равновесия цен на рынке; Criterien [1..9] [1..100] — массив критериев покупателей: (удаленность, доставка и т. п.) в мобильном компоненте Query и накопителях QueryStock 1–3 и FirmStock MDL-описание структуры мультиагентной модели организационным компонентом верхнего уровня HIGH LEVEL COMPONENT Market в соответствии со схемой соединений базисных компонентов (см. рис. 7.4) показана в листинге 7.8. В конце транзактивного периода в компоненте Market подводятся итоги по каждой фирме и в целом по числу клиентов, остаткам товара на складах, количеству необслуженных клиентов, упущенных продаж и т. п.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.2. Модель с рефлексивным поведением агентов 189 Маркетинговая информация предоставляется каждой фирме и является основанием для изменения цены и переменных состояния каждой фирмы в следующем периоде. HIGH LEVEL COMPONENT Market_High SUBCOMPONENTS Firm1, Firm2, Firm3, buyer, Market COMPONENT CONNECTIONS Firm 1.QueryStock1  Market.Qstock 1; Firm 2.QueryStock2  Market.Qstock 2; Firm 3.QueryStock3  Market.Qstock 3; Buyer. criterion {i OF 1..9} {j OF 1..100}  Market. Criterion [i][j] ; Firm1.parameters1{i OF1..9}Firm3.parameters1 [i] Firm2.parameters2{i OF1..9}Firm3.parameters2 [i] # Quantity of buyers Market. Cust F1  Firm1.Cust F1; Market. Cust F2  Firm2. Cust F2; Market. Cust F3  Firm3. Cust F3; # Non-realized remnants Market. balances[1]  Firm1. balances[1]; Market. balances [2]  Firm2. balances[2]; Market. balances [3]  Firm3. balances[3]; ……………….. Market. EQUIPOISE  Firm3. EQUIPOISE; END OF Market_High Листинг 7.8. Компонент верхнего уровня Market_High мультиагент$ ной модели с ситуационными стратегиями агентов Поведение агента-покупателя описывается базисным компонентом Buyer с вышеописанной процедурой выбора продавца (листинг 7.5) по критерию (7.1) с функционалом предпочтения (2.1) по оценкам требований к предложению Criterien [1..9][1..100] и определением объема заказа по (7.2). Динамика поведения агентов-продавцов Firm1, Firm2, Firm3 зависит от ряда последовательных условных событий и описывается по алгоритму рефлексивной ситуационной стратегии (рис. 7.5), связанной с выбором ценового и неценового воздействия каждой фирмы в зависимости от следующих событий.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 190 Глава 7. Агентные технологии в Simplex3 Рис. 7.5. Алгоритм ситуационной рыночной стратегии (начало) При cash = 2 олигополист стремится повысить качество товара, улучшая свой имидж и увеличивая доверие клиентов. При cash = 3 улучшается реклама, а при cash = 4 — условия доставки и т. д. Полное описание программного обеспечения мультиагентной модели рынка с ситуационной стратегией агентов представлено в приложении 3.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.2. Модель с рефлексивным поведением агентов 191 Рис. 7.5. Алгоритм ситуационной рыночной стратегии (окончание) На рисунках 7.6 и 7.7 (см. цв. вклейку) представлены результаты имитации ситуационных стратегий в системе
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 192 Глава 7. Агентные технологии в Simplex3 Simplex3 с участием двух фирм-конкурентов и последующим вхождением третьей фирмы. На графиках можно видеть процессы эластичного ценообразования при большом различии исходных цен и стабилизации рынка при вхождении в него нового конкурента со своей ценовой стратегией (см. рис. 7.6), а также конкурентную борьбу, отражаемую в изменении долей рынка (числа покупателей) каждой фирмы и возможном распределении долей после вхождения в рынок нового олигополиста (см. рис. 7.7). До момента времени Т = 42 временных единиц (дней) покупательский спрос распределяется между двумя продавцами (синяя и красная линии). В указанный момент времени на рынок входит третий продавец. Он предварительно изучил предложения конкурентов и сформировал свое собственное предложение по цене ниже среднерыночной на 10%. Реакция потребителей на это появление отмечена переходом большей части спроса (83%) к «новичку» и соответствующим снижением долей первой и второй фирм. Дальнейший процесс приводит к следующему стабильному состоянию с очередным перераспределением долей рынка, когда лидером становится вторая фирма с 50%-й долей рынка. У первой фирмы остается около 30%, у третьей — около 10%. В момент времени Т = 199 происходит резкое сокращение доли рынка второго агента-продавца, объясняемое изменением неценовых факторов, так как цены на этот момент уже стабилизировались относительно средней рыночной и цена не могла оказать такого сильного влияния на объем продажи. На рисунках 7.8–7.10 показана динамика спроса и предложений каждой фирмы в виде соответствующих графиков изменения объемов предложений и остатков непроданного товара в течение года (365 дней). Приведенные результаты мультиагентной имитации вскрывают и объясняют механизм стратегий ценообразования активных элементов в маркетинговой среде. Они позволяют прогнозировать процессы стабилизации рынка при
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.2. Модель с рефлексивным поведением агентов Рис. 7.6. Процесс стабилизации рынка при стратегии эластичного ценообразования Рис. 7.7. Изменение доли рынка агентов$продавцов 193
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 194 Глава 7. Агентные технологии в Simplex3 Рис. 7.8. Динамика объемов предложений (верхняя линия) и остат$ ков (нижняя линия) товара первой фирмы Ag Seller 1 Рис. 7.9. Динамика объемов предложений (верхняя линия) и остат$ ков (нижняя линия) товара второй фирмы Ag Seller 2
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов 195 Рис. 7.10. Динамика объемов предложений (верхняя линия) и остат$ ков (нижняя линия) товара третьей фирмы Ag Seller 3 различных экономических и социальных возмущениях с выбором оптимальных маркетинговых стратегий в соответствии со спросом и предложениями в текущих условиях. 7.3. Мультиагентная модель с интеллектуальными ситуационными стратегиями поведения агентов В случае сложной интеллектуальной процедуры принятия решения в условиях неопределенности, конфликта и риска средства языка описания моделей Simplex-MDL становятся неудобными и приводят к громоздким описаниям. В этих случаях для моделирования сложных расчетных форм поведения агента и интерфейса с внешними процедурами в Simplex3 предлагаются специальная система команд и язык описания эксперимента с моделью Simplex-EDL (Experiment Description Language) [41, 49] с подключением внешних автономных программ на любом языке программирования (Delphi, С++, VBA и др.).
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 196 Глава 7. Агентные технологии в Simplex3 Язык описания эксперимента позволяет описать законченные экспериментальные планы. Наряду с системой команд он включает операторы разветвления и циклы, функции и массивы, обеспечивает объявление локальных переменных и доступ к переменным модели. Описание эксперимента создается отдельно от MDLмодели и применяется в различных имитационных моделях для повторения имитации с изменяемыми значениями входных параметров, поиска оптимальных решений и др. Это позволяет проводить с моделью различные эксперименты и имитировать различные стратегии агентов в процессах взаимодействия и конфликта. 7.3.1. Средства и структура языка описания имитационного эксперимента Simplex5ЕDL EDL-описание эксперимента представляется в следующей синтаксической форме: EXPERIMENT < имя > VALUE SET (объявление новых типов переменных пользователя) DECLARATION OF PROGRAMS (объявление внешних программ) DECLARATION OF VARIABLES (объявление переменных EDL) BODY OF EXPERIMENT (описание эксперимента) END OF < имя > В разделе VALUE SET определяются новые типы переменных, вводимых пользователем, в виде VALUE SET< идентификатор типа >: ('<Value1>', '< Value2 >', … ), например: VALUE SET Colour: ('red','yellow','green'). В описании эксперимента введенные EDL-переменные доступны через указатель имени: Light (Colour) : = 'green'.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов 197 В разделе DECLARATION OF VARIABLES, аналогично объявлению в Simplex-MDL, объявляются все переменные, используемые в описании эксперимента, с возможными типами: LOGICAL, INTEGER, REAL, STRING и тип, определяемый пользователем, например: DECLARATION OF VARIABLES Start (LOGICAL): = TRUE, Compare (INТEGER) : = 0 , alpha (REAL): = 0.2, Text (STRING) : = "Seller", TrafficLight (TLColour) : = 'red'. EDL-переменные могут быть объявлены так же, как элементы одно-, двух- и трехмерных массивов элементов одного типа. Объявление массивов аналогично объявлению в Simplex-MDL, а именно: за ключевым словом ARRAY следует его размерность в квадратных скобках, имя массива и его тип в круглых скобках. Во избежание ошибок из-за неявной или случайной инициализации компьютером, всем элементам массива присваивается начальное значение: DECLARATION OF VARIABLES ARRAY [6] X (INTEGER ) : = 0 , ARRAY [3] [5] Y (INTEGER) : = 1, … Элемент массива идентифицируется указанием его индекса: X [1] : = 2, Y[1][1] : = 2; а EDL-переменные с индивидуальными индексными выражениями в цикле FOR: FOR k FROM 1 TO 3 REPEAT Y[k][k +1] := X[k + X[1]] + X[7 – 2*k]; END LOOP В случае множества индексов с фиксированным диапазоном назначение выполняется для всех заданных индексов:
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 198 Глава 7. Агентные технологии в Simplex3 X {1..3} :=1; Y {2..3}{1..4} : = 3; X [ALL] : = Y [1][1]; Для множества индексов с заданными диапазонами внутри назначения может быть применен идентификатор: X{i OF 1..2}:= 3*i; Y{ALL}{Index OF 1..5}:= X[Index +1] + 4*Index; Доступ ко всем индексам через ключевое слово ALL записывается как X{ALL j} := j * X [ j ]; При ограничении индексных множеств условиями описание и инициализация элементов массива в конкретном случае имеют вид: Y{ALL i |Y [i][1] > 0}{j OF 2..5| X [j] = 0 AND Y [i][j] > 0}: = i + j; Наряду с EDL-переменными возможен также доступ к переменным МDL-модели. Для различения переменных EDL-описания и переменных МDL-модели модельные величины заключаются в угловые скобки, например: < Hare> : = 50; < Fox > : = 3*Input – Decrement; Для доступа к переменным в иерархической МDL-модели должен быть задан полный путь к ней. При этом отдельные подкомпоненты разделяются знаком /. Имя компонента самого верхнего уровня может не указываться: <Seller[i]/P>:=ExpP[i][NumK]; # цена i-го продавца в NumK-м периоде. Доступ к переменным модели (подробно описан в [43,51]) позволяет задавать начальные значения моделирования или с течением времени вмешиваться с помощью эксперимента в проходящий процесс имитации.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов 199 Описание собственно эксперимента дается в разделе BODY OF EXPERIMENT с помощью системы команд Simplex-EDL (табл. 7.2). Таблица 7.2 Система команд Simplex-EDL Команда Содержание UNSELECT Снять выделения со всех библиотек Simplex3 RESETBANK < путь к банку модели > Обнуление банка модели CHECK < путь к компоненту модели > Проверка компонента модели SELBANK < путь к банку модели > Выбор банка модели CRMODEL <имя создаваемой модели>, Инсталлировать модель с <имя компонента> указанным именем на основе выбранного компонента ACTIVATE <имя модели> Активирование модели CREXP < имя эксперимента > Создание эксперимента с указанием имени SELEXP <имя эксперимента> Выбор эксперимента CRRUN <имя запуска>, <имя модели> Создание запуска модели с именем запуска SELRUN <имя запуска> Выбор запуска ADDVAR <имя обсервера>, < имя переменной_1 >, … , < имя переменной_n > Запись в обсервер наблюдаемых переменных SETVAR < имя переменной >, <значение> Присвоение переменной вводимого значения SIMULATE TO < время имитации> Запуск имитации до заданного времени (в тактах) DRAW < имя обсервера # / имя модели/имя переменной>, present = Тип представления Вывод на экран результатов имитации по выбранной переменной. Тип представления результатов: Line – графики; Table – таблица
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 200 Глава 7. Агентные технологии в Simplex3 Окончание табл. 7.2 Команда Содержание DELRUN <имя запуска> Удаление запуска DELEXP <имя эксперимента> Удаление эксперимента DELMODEL <имя модели> Удаление модели Командные процедуры и описание эксперимента хранятся в отдельной директории Procedures в каждой модели и создаются путем вызова команды New procedure… или New experiment description…. Для лучшего различения командным процедурам и EDL-описаниям рекомендуется присваивать различные объектные имена, например: ExpQueue — EDL-описание эксперимента для модели Queue; CommLotka — командная процедура для модели LotkaVolterra. Командная процедура записывается в виде последовательности команд, вызываемых под своим именем в любой момент имитации. Командная процедура и EDL-описание могут быть запущены в объектном браузере выбором процедуры и выполнением команды Execute procedure в контекстном меню, а также вызваны непосредственно командой в командной строке как обычная Simplex-команда в форме ExecProc-cmd < имя командной процедуры > < список параметров > ExecProc-edl < имя описания эксперимента > Объявление внешней программы в блоке DECLARATION OF PROGRAMS включает имя программы с указанием типов входных и выходных параметров в следующей синтаксической структуре: DECLARATION OF PROGRAMS < имя программы> (<список типов входных переменных > > <список типов выходных переменных >)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов 201 Типы входных и выходных параметров разделяются запятыми. При вызове функции в EDL-описании эксперимента значения выходных параметров функции присваиваются EDL-переменным, разделенным запятыми и заключенным в круглые скобки (см. далее листинг 7.10). Подключаемые внешние программы используются в EDL-описании экспериментального плана поиска оптимальных решений, а также создания интерфейса ввода исходных параметров имитационной модели для начала эксперимента. Соединение модуля EDL-программы эксперимента с внешней программой осуществляется с помощью двух текстовых файлов: program.in для передачи данных из блока EDL во внешний программный модуль и program.out для результатов, возвращаемых из внешней программы в блок EDL-описания эксперимента. Внешние функции, введенные пользователем, как исполняемые файлы размещаются в папке edlprogs/, расположенной в каталоге simplex3/ рядом с каталогом privsys/ по адресу : %USERPROFILE%\Simplex3\edlprogs\ Имя программы должно совпадать с именем файлов с расширением *.in и *.out (например, для программы test. exe входной файл *.in будет иметь имя test.in, а выходной файл — имя test.out). В описании эксперимента дается ссылка на внешнюю программу, и Simplex3 автоматически отыскивает в папке simplex3/edlprogs данные, связывающие файлы и программу prog.exe (во всех случаях имена файлов *.in, *.out и *.exe должны быть одинаковы). Запись параметров в файл prog.in в системе Simplex3 осуществляется последовательно в столбец, т. е. каждый параметр в новой строке. Таким же образом осуществляется чтение и представление результатов из файла *.out. С помощью внешних программ, которые могут быть написаны на любом языке программирования и объявляются в разделе DECLARATION OF PROGRAMS, в Simplex3 мож-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 202 Глава 7. Агентные технологии в Simplex3 но реализовать интерфейс ввода исходных данных с клавиатуры для работы с моделью в оперативном режиме. Типы входных параметров (ParIn1–ParIn2) задаются в левой части описания внешней программы, а выходных (ParOut1–ParOut2) – в правой: DECLARATION OF PROGRAMS prog (INTEGER, INTEGER > REAL, REAL) В тело эксперимента включается оператор (ParOut1, ParOut2) : = prog (ParIn1, ParIn2); Доступ к файлам *.in и *.out на языке Visual Basic (VB) осуществляется с помощью операторов Open: Open " *.in" For Input As #1 Open " *.out" For Output As #1 Общая форма VB-программы чтения параметров из файла и записи в него приведена в листинге 7.9. Private Sub Command1_Click( ) Open "prog.out" For Output As #1 ParOut1 = Text1 ParOut2 = Text2 Print #1, ParOut1 Print #1, ParOut2 Close #1 End End Sub Private Sub Form_Load( ) Open "prog.in" For Input As #1 Input#1,ParIn1 Input#1,ParIn2 Label1 = ParIn1 Label2 = ParIn2 Close #1 End Sub Листинг 7.9. Пример программы чтения и записи в файлы prog.exe на языке Visual Basic
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов 203 Программный код Visual Basic состоит из события, которое происходит при загрузке формы (Sub Form_Load () ), и события, происходящего при нажатии кнопки (Sub Command1_Click () ). Примером EDL-описания эксперимента с подключением внешней программы интерфейсного модуля может служить реализация эластичной ценовой стратегии FPrices агентов-продавцов в переговорной модели олигопольной рыночной среды (рис. 7.11). Стратегия эластичного ценообразования заключается в том, что по завершении каждого маркетингового периода агенты-продавцы устанавливают новые цены и соответствующие объемы предложений: p ik  p ik 1  p ik 1  p ik  2 ( uik 1  vik 1 ) ; i  1, n , vik 1  vik  2 (7.3) где pik , pik – 1, pik – 2 — текущие цены k-го, (k – 1)-го и (k – 2)-го периодов у i-го продавца; vjk – 1, vjk – 2 — спрос покупателей у i-го продавца в (k – 1)-м и (k – 2)-м периодах; uik – 1 — предложение i-го продавца за предыдущий период. Объем предложений i-го продавца на новый маркетинговый период увеличивается с уменьшением цены, и наоборот, по формуле: ui  uim a x p jm a x  p im in ( p i  p im in ) ; i  1, n , (7.4) где pi, pjmax, pimin — текущая, максимальная доступная для j - го покупателя и минимальная возможная для i-го продавца цены товара соответственно; uimax — максимальный объем предложений i-го продавца. Для реализации стратегии в виде имитационного эксперимента в структуру ранее рассмотренной мультиагентной модели Market (см. рис. 7.2) вводится отдельный компонент EXPERIMENT Simulation, обеспечивающий вычисление текущих цен Pk и объемов предложений Uk для очередного k-го шага имитации по формулам (7.3), (7.4).
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 204 Глава 7. Агентные технологии в Simplex3 Рис. 7.11. Структурная схема переговорной модели с интеллекту$ альной стратегией поведения агентов Описание эксперимента Simulation для рынка с двумя продавцами и 16-ю покупателями представлено в листинге 7.10. EXPERIMENT Simulation FPrices DECLARATION OF PROGRAMS # внешняя программа интерфейса для ввода значений min # возможной и max # доступной цен товара, max объема предложений, # начальной цены и четырех # неценовых факторов i-го продавца MainSeller ( INTEGER  REAL, REAL, REAL, REAL ,REAL, REAL, REAL, REAL) DECLARATION OF VARIABLES # параметры продавцов ARRAY [2] [100] ExpP(REAL):=0, # массив текущих цен
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов 205 ARRAY [2] [100] ExpU(REAL):=0, # объем предложений ARRAY [2] [100] ExpVs(REAL):=0, # суммарный спрос ARRAY [2] ExpUmax(REAL):=0, # max объем # предложений ARRAY [2] ExpPsmax(REAL):=0, # max доступная цена # товара ARRAY [2] ExpPmin(REAL):=0, # min возможная цена # товара ARRAY [2] ExpUV(REAL):=0, # количество # проданного товара # массив факторов выбора предложения Zi ; i = 1,4 # Z1 – качество продукта в 10-балльной шкале; # Z2 – вид продукта (охлажденный, мороженый, вареный, # копченый и т.п.); # Z3 – наличие и условия доставки; # Z4 – этап переработки (сырье, полуфабрикат, готовый # продукт). ARRAY [2] [4] ExpZ(REAL):=0, koef (REAL):= 0, # коэффициент эластичности # изменения цены # параметры покупателей ARRAY [16] [1000] ExpV(REAL):=0, # индивидуальный # спрос ARRAY [16] ExpVmin(REAL):=0, # минимальный спрос ARRAY [16] Expb(REAL):=0, # коэффициент # покупательной способности ARRAY [16] ExpPmax(REAL:=0, # max допустимая цена ARRAY [16] [2] ExpPref(REAL):= 0, # критерий # предпочтения NumK (INTEGER) := 1, # номер периода TEnd (INTEGER) := 35, # конечное время имитации NumKEnd (INTEGER := 0 # конечный период имитации BODY OF EXPERIMENT СREXP ExpMarket; # создание эксперимента # ExpMarket СRRUN Run1, Market; # создание запуска # Run1модели Market # наблюдатель параметров продавцов OBSCOMPLETE obs1, 0, 1000, 1; ADDVAR obs1,<Seller[1]/P>,<Seller[2]/P>, <Seller[1]/V>, <Seller[2]/V>, <Seller[1]/U>, <Seller[2]/U>; # наблюдатель параметров покупателей OBSCOMPLETE obs2, 0, 1000, 1; ADDVAR obs2, <Buyer[1]/P>,<Buyer[2]/P>, <Buyer[1]/V>, <Buyer[2]/V>, < Buyer[1]/U>, <Buyer[2]/U> ; # выбор из 16-и
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 206 Глава 7. Агентные технологии в Simplex3 # ввод исходных данных с помощью интерфейса (рис 7.13) и # внешней программы MainSeller (листинг7.11) FOR i FROM 1 TO 2 REPEAT (ExpPmin[i], ExpPsmax[i], ExpUmax[i], ExpP[i][1], ExpZ[i][1], ExpZ[i][2], ExpZ[i][3], ExpZ[i][4]) := MainSeller (i); ExpP[i][2] := ExpP[i][1] - 0.01; END LOOP # цикл имитации эластичной стратегии агентов-продавцов LOOP <opt_search> REPEAT # вычисление цены i-го продавца на период NumK по # формуле (7.3) k k 1 # pi  pi  p ik 1  p ik  2 k 1 i v k 2 i v ( uik 1  vik 1 ) ; i  1, n FOR i FROM 1 TO 2 REPEAT IF NumK >2 # определение коэффициента эластичности DO IF (ExpVs[i][NumK-1]-ExpVs[i][NumK-2]) = 0 # спрос не меняется DO koef:= -0.01; END ELSE DO koef:= 0.01*((ExpP[i][NumK-1]-ExpP[i][NumK-2])/ (ExpVs[i][NumK-1]- ExpVs[i][NumK-2])); END # вычисление цены на текущий NumK–й период ExpP[i][NumK]:= ExpP[i][NumK-1] + koef * (ExpU[i] [NumK-1] - ExpVs[i][NumK-1]); END # определение объема предложений i-го продавца на период # NumK по формуле (7.4) # ui  uim a x p jm a x  p im in ( p i  p im in ) ; i  1, n IF NumK >1 DO ExpU[i][NumK]:= (ExpUmax[i]/(ExpPsmax[i]ExpPmin[i]))*(ExpP[i][NumK]-ExpPmin[i]); END ELSE DO ExpU[i][NumK]:= ExpUmax[i]; END <Seller[i]/P> := ExpP[i][NumK]; # цена i-го продавца # на период NumK <Seller[i]/U>:= ExpU[i][NumK]; # предложение на # период NumK FOR j FROM 1 TO 4 REPEAT <Seller[i]/Z[j]>:= ExpZ[i][j];
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов 207 END LOOP <Seller[i]/V> := 0; <Seller[i]/UV> := 0; END LOOP # имитация до указанного времени TEnd SIMULATE TO, TEnd; FOR i FROM 1 TO 2 REPEAT ExpUV[i]:=<End//Seller[i]/UV>; ExpVs[i][NumK]:=<End//Seller[i]/V>; END LOOP FOR j FROM 1 TO 16 REPEAT # спрос покупателей ExpV[j][NumK] := <End//Buyer[j]/V>; END LOOP NumK:=NumK + 1; TEnd:=TEnd + 35; IF NumK>100 DO EXIT <opt_search>; END END LOOP <opt_search> END OF Simulation FPrices Листинг 7.10. Описание эксперимента стратегии эластичного цено$ образования на языке SimplexEDL В описаниях эксперимента (рис. 7.12) идентификаторы переменных модели дополняются приставкой Exp в соответствии с общим алгоритмом эксперимента. В начале экспериментирования с помощью операторов СREXP, СRRUN и OBSCOMPLETE создается новый эксперимент с новым запуском и наблюдателем. С помощью оператора ADDVAR задаются наблюдаемые переменные. Далее в эксперимент заносятся исходные данные для моделирования: максимальная и минимальная цены, максимальное предложение для продавца. Следующим шагом является создание цикла для имитации c шагом, равным единице маркетингового периода. В начале текущего периода устанавливаются цена и предложения продавцов по формулам (7.3) и (7.4), которые передаются из модуля эксперимента соответствующим базисным компонентам Seller. Затем с помощью оператора SIMULATE TO включается имитация до указанного времени TEnd. По окончании ими-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 208 Глава 7. Агентные технологии в Simplex3 Рис. 7.12. Общий алгоритм имитационного эксперимента тации снимаются показатели итогов для использования их в следующем периоде. Внешняя процедура ввода исходных данных MainSeller, написанная на языке Visual Basic, позволяет создать вспомогательный интерфейс пользователя для работы с моделью. Выбор Visual Basic обусловлен легкостью создания интерфейса пользователя с переносом элементов управления на экранную форму. Вызов внешней программы MainSeller, объявленной в описании эксперимента (см. листинг 7.10) в разделе DECLARATION OF PROGRAMS с одной входной переменной (индекс продавца) и восемью выходными: MainSeller (INTEGER  REAL, REAL, REAL, REAL, REAL, REAL, REAL, REAL) осуществляется в теле эксперимента оператором: (ExpPmin[i], ExpPsmax[i], ExpUmax[i], ExpP[i][1], ExpZ[i][1], ExpZ[i][2], ExpZ[i][3], ExpZ[i][4]) := MainSeller (i);
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов 209 Рис. 7.13. Окно интерфейса пользователя для описания экспери$ мента стратегии эластичного ценообразования Интерфейс пользователя для внесения с клавиатуры всех исходных данных (восемь позиций) с проверкой вводимой информации представлен на рис. 7.13. Программный код MainSeller.exe на языке Visual Basic (листинг 7.11) описывает события, происходящие при загрузке формы (Sub Form_Load()), и далее события при нажатии кнопки (Sub Command1_Click ( )). Dim Path As String Private Sub Command1_Click() If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Or Text4.Text = "" Or Text5.Text = ""Or Text6.Text = "" Or Text7. Text = "" Or Text8.Text ="" Then MsgBox "Неверно введены данные", vbExclamation, "Ошибка" Exit Sub End If If CDbl (Text1.Text) <= 0 Or CDbl(Text2.Text) <= 0 Or CDbl(Text3.Text) <= 0 Or CDbl (Text4.Text) <= 0
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 210 Глава 7. Агентные технологии в Simplex3 Then MsgBox "Неверно введены данные", vbExclamation, "Ошибка" Exit Sub End If If (CDbl(Text5.Text) <= 0) Or (CDbl(Text5.Text) > 10) Then MsgBox "Неверно введены данные", vbExclamation, "Ошибка" Exit Sub End If Open Path + "\edlprogs\MainBuyer.out" For Output As #1 Print #1, Text1 ……….. Print #1, Text8 Close #1 End End Sub Private Sub Form_Load() Path= CurDir()Path = Mid (Path,1,Len (Path)-21) Open Path+"\edlprogs\ MainBuyer.in" For Input As #1 Input #1,i Label1 = "Введите данные для" +Str(i)+ "-го продавца " Close #1 End Sub Листинг 7.11. Программный код MainSeller.exe на языке Visual Basic При загрузке формы выполняются открытие файла MainSeller.in и чтение входной информации из него. При нажатии кнопки (Sub Command1_Click ( ) ) проверяется вводимая информация и, если все верно, производится запись в файл MainSeller.out для вывода данных; в случае ошибки выдается сообщение. После создания внешней исполняемой программы следует ее копирование в папку edlprogs и запуск эксперимента. При загрузке интерфейсной формы открывается файл MainSeller.exe и из него выполняется считывание выходной информации с записью в файл MainSeller.out. Затем данные транслируются в переменные модуля EDL и присваиваются переменным MDL-модели, после чего автоматически запускается модель до указанного в эксперименте машинного такта. В случае с двумя продавцами и 16-ю покупателями, результаты эксперимента по стратегии эластичного цено-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов 211 Рис. 7.14. Изменение цен продавцов с одинаковыми факторами предложения Рис. 7.15. Изменение цен продавцов с разными факторами предло$ жения
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 212 Глава 7. Агентные технологии в Simplex3 образования показывают, что цена одного и того же товара каждого агента-продавца стремится к стабильному уровню, соответствующему равенству спроса и предложений (рис. 7.14). В случае, когда продавец с большей ценой имеет более привлекательные критерии своего товара (есть доставка, охлажденный продукт и т. д.), график изменения цен (рис. 7.15) показывает, что цены агентов-продавцов стремятся к своему стабильному уровню в соответствии с условиями спроса и предложений в своем сегменте покупателей. 7.3.2. Конкурирующие агенты с симплексной стратегией ценообразования в маркетинговой ситуации В большинстве случаев интеллектуальные стратегии поведения агентов проявляются в поиске наилучшего решения на очередном шаге достижения цели при неопределенной ситуации с неформализованной функцией цели. Оптимальные стратегии могут быть построены по известным методам оптимизации и искусственного интеллекта и, в частности, методом симплексного планирования эксперимента (см. главу 2). Поиск решения на каждом шаге сводится к отысканию наихудшей по значению целевой функции вершины xq симплекса, определению центра противолежащей грани xc и замене наихудшей вершины xq ее зеркальным отражением относительно противолежащей грани в точку с координатами, определяемыми по формулам (2.12) и (2.13). В маркетинговой ситуации стратегия каждого продавца сводится к задаче оптимизации цены товара путем пошагового прогнозирования значения функции прибыли. Вершины начального симплекса соответствуют точкам состояния на предшествующих шагах k, k – 1, k – 2 в координатах «цена (x1) — объем предложений (x2)» с соответствующими значениями прибыли (рис. 7.16). В случае правильного недеформированного симплекса координаты отраженной вершины рассчитываются по формуле xik 1  2 n k l n  2 k q  xi  2 xi ; i  1, n , n l 0 (7.5)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов 213 Рис. 7.16. Симметричное отражение симплекса в координатах «цена–объем предложения» где x1k+1 = pk+1 — цена продукта в (k+1)-й период; x2k+1 = uk+1 — объем предложений в (k+1)-й период. Успех одного продавца и изменение его целевой функции в лучшую сторону ведет к неудаче другого и ухудшению его целевой функции. Таким образом, стратегии обоих продавцов связаны друг с другом и ведут рынок к стабилизации. В пространство координат симплекса могут быть введены и другие изменяющиеся параметры состояния продавца, как, например, доставка, реклама, качество и т. д. Описание ЕDL-программы SimulationSimplex поведения агента-продавца Seller со стратегией правильного симметричного симплекса приведено в листинге 7.12. EXPERIMENT SimulationSimplex DECLARATION OF PROGRAMS # внешняя программа интерфейса для ввода координат # вершин # исходного симплекса и параметров предложения # i-го продавца MainSellerSim(INTEGER  REAL,REAL,REAL,REAL,REAL,REAL, REAL,REAL, REAL,REAL) DECLARATION OF VARIABLES # массивы параметров состояния продавцов в EDL-программе # эксперимента
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 214 Глава 7. Агентные технологии в Simplex3 ARRAY [2] [100] ExpP(REAL):= 0, ARRAY [2] ARRAY [2] ARRAY [2] ARRAY [2] ARRAY [2] ARRAY [2] ARRAY [2] ARRAY [2] # # # [100] ExpU(REAL):= 0, # # [100] ExpVs(REAL):= 0, # # ExpUmax(REAL):=0, # ExpPsmax(REAL):=0, # # ExpPmin(REAL):=0, # # koef(REAL):=0, # # ExpUV(REAL):=0, # # [4] ExpZ(REAL):=0, # # # цены продавцов в текущий маркетинговый период объемы предложений в текущий период суммарный спрос на товар i-го продавца max объем предложений max допустимая средняя цена min возможная цена товара коэффициент изменения цены количество реально проданного товара массив параметров предложения i-го продавца # массивы параметров состояния покупателей ARRAY [16][1000]ExpV(REAL):=0, # индивидуальный спрос ARRAY [16] ExpVmin(REAL):=0, # уровень минимального # спроса ARRAY [16] Expb(REAL):=0, # коэффициент # покупательной # способности ARRAY [16] ExpPmax(REAL):=0, # max доступная цена # j -го покупателя ARRAY [16] [2] ExpPref(REAL):=0, # массив критериев # предпочтения покупателей # параметры симплексов продавцов ARRAY [2][3] SimU(REAL):=0, ARRAY [2][3] SimP(REAL):=0, ARRAY [2][3] SimF(REAL):=0, ARRAY [2] MaxFunc(REAL):= -100, ARRAY [2] Lmin(INTEGER):=1, ARRAY [2] Lmax(INTEGER):=1, # # # # # # # # # # # # # # массив предложений в вершинах симплекса массив цен в вершинах симплекса массив значений прибыли в вершинах симплекса массив глобальных экстремумов целевой функции номер вершины с min целевой функции номер вершины с max целевой функции
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов ARRAY [2] MaxF(REAL):=0, ARRAY [2] MinF(REAL):=0, ARRAY [2] Uotr (REAL):=0, ARRAY [2] Potr (REAL):=0, ARRAY [2] kol(INTEGER):= 0, NumK(INTEGER):=1, TEnd(INTEGER):=30, 215 # # # # # # # текущий max прибыли текущий min прибыли объем предложений в отраженной вершине цена предложений в отраженной вершине счетчик повторений # # # # номер маркетингового периода время окончания имитации BODY OF EXPERIMENT CREXP ExpMarketSimplex; # выбор эксперимента CRRUN Run1, Market; # организация запуска OBSCOMPLETE obs1, 0, 100000, 1; ADDVAR obs1, <Seller[1]/P>,<Seller[2]/P>, <Seller[1]/V>,<Seller[2]/V>, <Seller[1]/U>, <Seller[2]/U>; OBSCOMPLETE obs2, 0, 100000, 1; ADDVAR obs2, <Buyer[1]/P>,<Buyer[2]/P>, <Buyer[1]/V>,<Buyer[2]/V>,<Buyer[1]/U>, <Buyer[2]/U>; # ввод исходных данных в вершинах симплекса через # интерфейс MainSellerSim FOR i FROM 1 TO 2 REPEAT (SimU[i][1], SimP[i][1], SimU[i][2], SimP[i][2], SimU[i][3], SimP[i][3], ExpZ[i][1], ExpZ[i][2], ExpZ[i][3], ExpZ[i][4]) := MainSellerSim(i); END LOOP # исходные значения переменных # в EDL-программе ExpU[1][NumK]:=SimU[1][NumK]; ExpP[1][NumK]:=SimP[1][NumK]; ExpU[2][NumK]:=SimU[2][NumK]; ExpP[2][NumK]:=SimP[2][NumK]; LOOP <begin> REPEAT FOR i FROM 1 TO 2 REPEAT <Seller[i]/P>:=ExpP[i][NumK]; <Seller[i]/U>:=ExpU[i][NumK]; FOR j FROM 1 TO 4 REPEAT <Seller[i]/Z[j]>:= ExpZ[i][j]; END LOOP <Seller[i]/V>:=0; <Seller[i]/UV>:=0; END LOOP SIMULATE TO, TEnd;
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 216 Глава 7. Агентные технологии в Simplex3 FOR i FROM 1 TO 2 REPEAT ExpUV[i] := <End//Seller[i]/UV>; ExpVs[i][NumK] := <End//Seller[i]/V>; # целевая функция (прибыль) i-го продавца в текущий # период NumK по (7.6) SimF[i][NumK]:= ExpUV[i]*ExpP[i][NumK] - ExpP[i][NumK]* ABS(ExpU[i][NumK] - ExpVs[i][NumK]); END LOOP # массив величин индивидуального спроса j-го покупателя # в текущий период NumD FOR j FROM 1 TO 16 REPEAT ExpV[j][NumK]:=<End//Buyer[j]/V>; END LOOP NumK:=NumK + 1; # переход к новому периоду TEnd:=Tend + 35; IF NumK > 3 DO EXIT <begin>; END END LOOP < begin > # поиск оптимума - opt_search LOOP < opt_search > REPEAT FOR i FROM 1 TO 2 REPEAT # выбор фирмы LOOP < Seller > REPEAT # цикл симплексной стратегии продавца MaxF[i]:= -1000; FOR l FROM 1 TO 3 REPEAT # поиск наилучшей L-й вершины IF MaxF[i]<SimF[i][l] DO MaxF[i]:= SimF[i][l]; Lmax[i]:= l; # индекс наилучшей L-й вершины END END LOOP IF MaxF[i] < =MaxFunc[i] # проверка достижения экстремума DO kol [i]:= kol [i] +1; # счет повторений MaxF[i] IF kol[i] >= 6 DO # объем предложений в точке экстремума Uotr [i]:= ExpU[i][NumK - kol[i]+1]; # цена предложения в точке экстремума Potr[i]:= ExpP[i][NumK - kol[i]+1]; EXIT < Seller >; END END IF MaxF[i] >= MaxFunc[i] DO MaxFunc[i]:=MaxF[ [i]; kol[i]:= 0; END
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов # продолжение поиска MinF[i]:=1000; FOR l FROM 1 TO 3 REPEAT IF SimF[i][l]<MinF[i] DO MinF[i]:=SimF[i][l]; Lmin[i]:= l; 217 # нахождение наихудшей # L-й вершины # индекс наихудшей L-й # вершины END END LOOP # нахождение координат новой отраженной (otr) вершины # по формуле (7.5) Uotr[i]:= SimU[i][1]+SimU[i][2]+SimU[i][3]; Potr [i]:= SimP[i][1]+SimP[i][2]+SimP[i][3]; Uotr[i]:= Uotr[i]-(2+2)/2*SimU[i][Lmin[i]]; Potr [i]:= Potr[i]-(2+2)/2*SimP[i][Lmin[i]]; IF (Uotr [i]>0) AND (Potr [i]>0) # проверка ограничений DO EXIT < Seller >; END END LOOP < Seller > # конец цикла симплексной стратегии # i-го продавца END LOOP # ----------------SIMULATION-----------------------FOR i FROM 1 TO 2 REPEAT ExpP[i][NumK]:= Potr[i]; <Seller[i]/P>:= ExpP[i][NumK]; ExpU[i][NumK]:= Uotr[i]; <Seller[i]/U>:= ExpU[i][NumK]; FOR j FROM 1 TO 4 REPEAT <Seller[i]/Z[j]>:=ExpZ[i][j]; END LOOP <Seller[i]/V>:=0; <Seller[i]/UV>:=0; END LOOP SIMULATE TO, TEnd; FOR i FROM 1 TO 2 REPEAT ExpUV[i]:=<End//Seller[i]/UV>; # количество # проданного товара ExpVs[i][NumK]:=<End//Seller[i]/V>; # суммарный # спрос в k-м периоде # целевая функция прибыли Seller[i] по (7.6) Func[i]:= ExpUV[i]*ExpP[i][NumK]-ExpP[i][NumK]* ABS(ExpU[i][NumK]- ExpVs[i][NumK]); END LOOP FOR j FROM 1 TO 16 REPEAT ExpV[j][NumK]:= <End//Buyer[j]/V>; END LOOP # --------------------------------------------------
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 218 Глава 7. Агентные технологии в Simplex3 FOR i FROM 1 TO 2 REPEAT IF kol[i]= 0 DO SimF[i][Lmin[i]]:= Func[i]; SimU[i] [Lmin[i]]:=Uotr[i]; SimP[i][Lmin[i]]:= Potr[i]; END END LOOP NumK := NumK+1; TEnd := TEnd+30; IF NumK > 100 DO EXIT < opt_search >; END LOOP < opt_search > END END OF SimulationSimplex Листинг 7.12. ЕDL$программа поведения агента$продавца Seller с симплексной стратегией Принцип работы эксперимента SimulationSimplex не отличается от описания эксперимента стратегии эластичного ценообразования. На каждом шаге исходной информацией является цена продавца P и объем продаж U. На выходе после завершения фазы транзакции эксперимент рассчитывает значение целевой функции: z = uvk · pk – pk · | uk – vk|, (7.6) где uvk — количество реально проданного товара в текущий период; uk и vk — предложение и спрос у продавца в текущий период; pk — цена продавца в текущий период. Таким образом, цена и объем продажи составляют двумерное маркетинговое пространство конкурентной ценовой борьбы и определяют координаты вершин симплекса. На каждом шаге агент выбирает лучшее и худшее значения целевой функции прибыли на предыдущих шагах и делает шаг в сторону экстремума. Исходные данные вводятся в эксперимент с помощью внешней программы MainSellerSim.exe, позволяющей упростить диалог между пользователем и моделью и обеспечивающей вспомогательный интерфейс пользователя. Однако если для эластичной стратегии входными данными были максимальная и минимальная возможные цены, а также
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов 219 предложение и цена в текущем периоде (см. листинг 7.10), то в симплексном планировании необходимы данные для определения вершин симплекса, а именно, начальные значения и шаги изменения цены и объема предложения для очередной вершины симплекса, задаваемые в левой части окна ввода. Программный код Visual Basic полностью совпадает с формой, приведенной в листинге 7.11, включая проверку вводимой информации и события, выполняемые при заполнении формы (Sub Form_Load ( )) и нажатии кнопки клавиатуры (Sub Command1_Click ( )). Для сравнения с предыдущей стратегией были проведены идентичные эксперименты с рынком рыбной продукции и одинаковыми неценовыми характеристиками предложения. Результаты экспериментирования, основанные на стратегии симплексного планирования, показывают рефлексивное поведение конкурентов c симметрично повторяющимися состояниями (рис. 7.17). Рис. 7.17. Поведение агентов с симплексными стратегиями
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 220 Глава 7. Агентные технологии в Simplex3 В отличие от стратегии эластичного ценообразования (см. рис. 7.14), в данном случае цена при достижении равновесия остается неизменной, тогда как в стратегии эластичного ценообразования в области стабилизации происходит небольшое изменение цены в сторону увеличения. При различных характеристиках предложений картина изменения цен существенно отличается от стратегии эластичного ценообразования. Продавец с большей начальной ценой пытается поднимать цену до тех пор, пока для его сегмента цена не станет критической, а продавец с меньшей исходной ценой и минимальным значением критериев предпочтения старается увеличивать долю своих клиентов до тех пор, пока она не достигнет оптимального значения (рис. 7.18). В данной стратегии можно учитывать психологическое состояние продавца, а именно, продавец более осторожный и спокойный задает меньший шаг изменения цены и предложения. Рис. 7.18. Графики цен конкурентов с разными предложениями
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 7.3. Модель с ситуационным поведением агентов 221 При одинаковых характеристиках предложений конкурентов в эксперименте с различными психотипами агентов можно наблюдать (рис. 7.19, см. цв. вклейку), как внутреннее состояние агента отражается на процессе стабилизации. Рис. 7.19. График изменения цен конкурентов с различной эмоцио$ нальной реакцией Принимая шаг изменения цены и предложений эксцентричного агента равным 1.0 (синяя линия), а другого, спокойного, равным 0,1 (красная линия), можно видеть, как продавец с большим шагом быстрее завоевывает свою долю рынка. Таким образом, с помощью размера симплекса, отражающего величину ценового скачка и изменения объема предложений, имитируется влияние эмоционального состояния, психотипа и других персональных характеристик интеллектуальных агентов на стратегию и динамику их поведения в процессах взаимодействия. Для установки модели в среду экспериментирования Simplex3 и внесения ее в банк моделей пользователя, опи-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 222 Глава 7. Агентные технологии в Simplex3 сание модели и ее компонентов размещается в директории privsys, находящейся в рабочем каталоге Simplex3 в разделе Documents and Settings в личной папке пользователя. Наряду с базисными компонентами модель содержит программные процедуры MainSeller.exe и MainSellerSim. exe, а также файлы связи MainSeller.in, MainSeller.out и MainSellerSim.in, MainSellerSim.out, размещаемые в папке edlprog и в рабочем каталоге Simplex3.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Глава 8 МУЛЬТИАГЕНТНОЕ МОДЕЛИРОВАНИЕ СИСТЕМ В SIMPLEX3 Мультиагентное моделирование больших систем любой физической, социальной и биологической природы связано: 1) с формализацией принципов функционирования и особенностей системы с выделением множества взаимосвязанных интеллектуальных агентов и их подсистем; 2) разработкой математических моделей и алгоритмов поведения интеллектуальных агентов, отражающих изменение состояния и выбор целенаправленных решений на очередном шаге взаимодействия; 3) созданием имитационных моделей агентов и мультиагентной модели реальной системы; 4) разработкой процедур планирования имитационного эксперимента и диалоговых алгоритмов поиска оптимальных решений на мультиагентной модели исследуемой системы. 8.1. Мультиагентная имитационная модель производственной системы перерабатывающего предприятия агропромышленного комплекса Управление перерабатывающим предприятием агропромышленного комплекса (АПК) связано с принятием оптимальных решений в условиях неопределенности и риска, обусловленных стохастическими колебаниями свойств и состава перерабатываемого биосырья животного и растительного происхождения, особенностями технологий переработки, маркетинговыми характеристиками спроса на продукцию и инфраструктурой связей с потребителями. При этом решаются задачи:  выбора оперативной и долгосрочной стратегий переработки биосырья, обеспечивающих максимально возмож-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 224 Глава 8. Мультиагентное моделирование систем в Simplex 3 ную прибыль за определенный период времени на основе структурной оптимизации технологической системы;  ассортиментной оптимизации выпускаемой продукции, востребованной на рынке, с учетом имеющихся сырьевых ресурсов;  рецептурной оптимизации выпускаемых продуктов по критериям качества, биологической ценности и безопасности продукта. Сложность решения задач обусловливается возможной нестабильностью поставок сырья с избытком или недостатком отдельных сырьевых компонентов, сезонными колебаниями заказов рынка, спецификой «живых» продуктов и биотехнологий. Решение этих и других оперативных и долгосрочных задач может быть достигнуто с помощью мультиагентного имитационного моделирования логистической системы перерабатывающего предприятия (рис. 8.1) в сферах снабжения, производства и сбыта в конкретных ситуациях поступления сырья и управления запасами, планирования переработки и Рис. 8.1. Логистическая структура мясоперерабатывающего пред$ приятия АПК
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 225 реализации продукции в зависимости от динамики внешних поставок и заказов торгующих организаций. 8.1.1. Агентная структура, модели и алгоритмы поведения агентов в логистической системе мясоперерабатывающего предприятия АПК Логистическая система мясоперерабатывающего предприятия АПК объединяет множество технологических процессов, материальных потоков и транспортных операций. Система разделяется на ряд функциональных подсистем, осуществляющих в своих сферах управление закупочной, производственной, маркетинговой деятельностью, и представляется в виде совокупности взаимосвязанных агентов Agents = {Ag1, Ag2,…, Agn }, имитирующих процессы производственной логистики, логистики снабжения и логистики сбыта [12]. Агент Ag1 «Поставка сырья» имитирует в форме накопительных массивов поступление биосырья (с/х животных) gij j-го вида (j = 1,m) от i-го (i = 1,n) поставщика по соответствующему закону распределения в зависимости от дня недели, времени суток и сезонности с различными параметрами состояния: приоритет использования Pgij, масса партии сырья (mas), цена (cena), качество, удаленность поставщика и т. д. Агент Ag2 «Получение сырья» описывает процесс поступления сырья gij от Ag1 в соответствии с приоритетом Pgij на склад предприятия, распределение и хранение его в течение определенного времени TAg2, а также организацию очереди на переработку каждого вида сырья gij по стратегии FIFO (первый пришел, первый вышел) с введением новых параметров состояния: вид обработки, содержание составляющих компонентов и т. д. Агент Ag3 «Первичная переработка с древовидной разветвляющейся структурой потоков» имитирует логистику поступления и первичной переработки партий биосырья j-го вида с расщеплением входного потока животных Gj из Ag2 на несколько выходных потоков yij, описывающих фактический выпуск i-го продукта первичной переработки из
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 226 Глава 8. Мультиагентное моделирование систем в Simplex 3 j-го вида исходного сырья и направление в соответствующие камеры хранения. Динамика состояния Ag3 связана со структурной оптимизацией входных материальных потоков сырья в соответствии с плановым выпуском продукции по критерию минимального отклонения от заданной структуры ассортимента: 2   0  m n  y ij y ij  (8.1)    m n 0  m n   m in, j 1 i 1 y y    ij   ij  j 1 i 1  j 1 i 1  0 где y ij, yij — плановый (заказанный) и фактический объемы i-го вида первичной продукции из j-го вида исходного биосырья (с/х животных) при ограничениях:  по запасу j -го вида исходного сырья G jm in  G j  G jm a x ; j  1, m ; (8.2)  по ассортименту выпускаемой продукции y ijm in  y ij  y ijm a x ; j  1, m ; i  1, n , (8.3) где y ij  ij G j — объемы выработки продукции i-го вида из j-го сырья; μij — удельный выход i -го продукта из j -го вида сырья; Gj — фактические объемы ресурсов сырья j -го вида; а также при ограничениях по общему объему выпуска товарной продукции V: m n  y ij V . (8.4) j 1 i 1 При условии y ij0 m n   yij0 j 1 i 1  y ij m n   yij (8.5) j 1 i 1 заказы удовлетворяются полностью и распределение входного потока соответствует заданному плану выпуска продукции. В противном случае, когда заказ не удовлетворяется полностью или выходит за верхние границы планового
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 227 задания, поведение агента Ag3 связано с решением задачи ассортиментной оптимизации производства. Она определяет оптимальную структуру и объемы выпуска продукции y0ij из j-го вида сырья в k-й период времени при нарушении условий (8.2)–(8.4). Алгоритм принятия оптимального решения сводится на первом этапе (рис. 8.2) к определению требуемого ресурса Gj0 j-го вида биосырья (с/х животных) и проверке выполнения ограничения (8.2). Если объем требуемой поставки оказывается больше максимально возможного, т. е. n y 0 ij / ij  G jm a x , i 1 возникает потенциальное недовыполнение выпуска соответствующей i-й продукции по j-му сырью: Суммарное m  y ij0  V i   ij   G jm a x  .  ij  j 1   недовыполнение выпуска (8.6) продукции n V   V i по всем недостающим видам сырья может быть i 1 минимизировано путем увеличения Gl поставок сырья l-го вида с максимальным выходом μklmax основного k-го продукта (в данном случае мяса, т. е. k =1) и соответствующим уменьшением Gs поставки s-го вида с минимальным выходом μksmin этого продукта. Исходя из заданных лимитов Glmax и Gsmin и ограничений по выпуску k-го продукта yklmax и yklmin , возможное увеличение поставок сырья l-го вида до Glmax и сокращения s-го до Gsmin определяются как:  G lm a x  G l при kl G lm a x  y km a x ;  G l   1 max y kl  y kl  при kl G lm a x  y km a x ;    kl  G s  G sm in при  G s   1 m in    y ks  y ks  ks  (8.7) ks G sm in  y km in ; при ks G sm in  y km in . (8.8)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 228 Глава 8. Мультиагентное моделирование систем в Simplex 3 Рис. 8.2. Блок$схема алгоритма структурной оптимизации сферы первичной переработки сырья (начало)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 229 Рис. 8.2. Блок$схема алгоритма структурной оптимизации сферы первичной переработки сырья (окончание): y1j0, y1j, y1jmin,y1jmax — плановый и фактический объемы и ограничения выпуска k$го основного (k =1) вида первичной продукции (мяса) из j$го вида с/х животных; V1min, μ1j — минимально допустимое недовыполнение выпуска и удельный вы$ ход мяса из j$го вида сырья; Dj,Gj0,Gj,Gjmin,Gjmax, — долги, плановые, фактические и предельные объемы сырья j$го вида; indj = 0; j =1,m — индикатор предельных объемов ресурса j$го сырья
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 230 Глава 8. Мультиагентное моделирование систем в Simplex 3 В случае несимметричного сдвига величина перераспределения поставок  между l-м и s-м видами сырья выбирается как  = min{Gl, Gs}, и новые значения поставок составят: Gl‘= Gl + ; Gs‘= Gs – . Далее коррекция повторяется с нахождением следующих пар поставок, не достигших предельных объемов, для нового перераспределения и уменьшения V до некоторого минимума Vmin. Агент Ag4 «Переработка с сетевой структурой потоков» представляет переработку сырья в течение заданного времени TAg4 при объединении нескольких материальных потоков yij из Ag3 в i-й комбинированный выходной продукт y2i; i = 1,n сферы вторичной переработки с определением параметров ее состояния и передачей готовой продукции в камеры хранения. Стратегия поведения агента в данном случае связана с решением задачи ассортиментно-рецептурной оптимизации производства с минимизацией отклонения ассортимента от заданной структуры по критерию  0 n   yi  yi  n n  0 i 1 y   i1  y i1 i1  1  i1  1 2     m in ,    (8.9) 0 где y i , y i — плановый и фактический выпуск i-го продукта при ограничениях:  по ассортименту продукции n y i V; (8.10) i 1  по объему поступающего сырья n G jm in   y i xij  G jm a x ; j  i , m ; i 1 (8.11)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 231  по рецептурным компонентам m x ij  1; i  1, n ; (8.12) j 1  по выпуску многокомпонентного продукта m G ij yi    y im a x ; i  1, n , x j 1 ij (8.13) где V — объем выпуска товарной продукции; Gj0, Gj — плановые (требуемые) и фактические объемы ресурсов сырья j-го вида; xij — удельное содержание сырья j-го вида в единице i-й продукции. При заданном плане выпуска продукции yi0 ; i = 1,n и известных нормах xij удельного содержания сырья j-го вида в i-м продукте требуемый ресурс сырья G0j определяется как n G j0   y i0 xij ; j  1, m . (8.14) i 1 Расчетные значения G0j сравниваются с заданными лимитами Gjmax и Gjmin. При выполнении ограничений (8.10)– (8.13) система сбалансирована по поставкам сырья и объему выпускаемой продукции. В случае появления некоторого Gj0 > Gjmax, определяется суммарный долг по поставкам, и следует процедура минимизации долгов путем изменения структуры поставок Gij j-го сырья по i-м технологическим схемам в зависимости от удельных потребностей xij и индивидуальных лимитов yimin и yimax выпуска i-го продукта. Для этого, исходя из максимальной разницы удельных потребностей в j-м виде сырья для продуктов, не достигших предельного выпуска, уменьшается поставка Gsj для s-го продукта с максимальной величиной xsj и соответственно увеличиваются поставки для l-го продукта с минимальной величиной xlj. На очередном шаге отыскивается максимальная разность удельных потребностей j-го вида сырья для l-го и s-го продуктов и определяются величины перераспределения поставок между ними, исходя из допустимого ассортиментного сдвига:
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 232 Глава 8. Мультиагентное моделирование систем в Simplex 3 y  m in y s0  y sm in ; y lm a x  y l0  ; (8. 15) G lj  y  xlj ; j  1, m ; (8.16) G sj  y  xsj ; j  1, m . (8.17) Процедура перераспределения продолжается до тех пор, пока все возможности перераспределения сырья по видам продукции не будут исчерпаны. В агенте Ag5 «Накопление и реализация» имитируются загрузка и хранение продукции в течение определенного времени в соответствующих камерах хранения, а также обслуживание заказов торгующих организаций с изменением параметров состояния материальных потоков готовой продукции и транспортных средств с различными комбинациями каналов обслуживания и погрузочных рамп. Общее изменение состояния агента Ag5 сводится к следующим событиям. Событие 1. При поступлении очередной партии первичной продукции yij от Ag3 в камеры хранения накапливаемый запас vgij определяется как сумма текущего запаса и нового поступления yij: vg ij  vg ij  y ij ; i  1, n ; j  1, m с проверкой ограничения по объему накопления продукции на складе:           (8.18)    где Sgсклад — площадь складского помещения для продукции первичной переработки скота; kijg p — удельная потребность площади для размещения единицы i-й продукции из j-го сырья от Ag3. Событие 2. При поступлении партии готовой продукции yj в камеры хранения из Ag4 накапливаемый запас vy2i определяется как сумма имеющегося запаса и новой поставки y2i:
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 233 vy 2 i  vy 2 i  y 2 i ; i  1, n с последующей проверкой ограничения по допустимому объему хранения продукции на складе:           (8.19)   где Syсклад — площадь складского помещения под готовую продукцию; kiy — удельная потребность площади для размещения единицы i-й продукции от Ag4. В случае невыполнения ограничений (8.18) и (8.19) выдается протокол о превышении загруженности складского помещения. Событие 3. При поступлении заказа от t-й торгующей организации на i-й первичный продукт yijzak,t из j-го сырья общий объем поставки с учетом возможного долга Dytij определяется как y ijzak ,t  y ijzak ,t  Dy ijt ; i  1, n ; j  1, m или для вторичного продукта yi zak,t с учетом долга Dy2it: ,t ,t y 2zak  y 2zak  Dy 2ti ; i  1, n . i i Событие 4. Выполнение заказа торгующей организации осуществляется в зависимости от общего объема заказов в очереди перед рампами: tk n  n m ,t  (8.20) Q     y ijzak ,t   y 2zak i  t 1  i 1 j 1 i 1  и его предельных значений Qmin и Qmax так, что при Q <= Qmin обслуживание идет через одну рампу, при Qmin < Q <= Qmax — через две и при Q > Qmax — через три рампы. Событие 5. По окончании обслуживания заказа торгующей организации заявка удаляется c коррекцией объемов запасов и невыполненных заказов. Таким образом, при полном удовлетворении заказа масса отгруженной продукции t w y ijt и w y 2 i равна соответственно массе заказанной продукzak ,t ,t и y 2zak : ции y ij i
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 234 Глава 8. Мультиагентное моделирование систем в Simplex 3 w y ijt  y ijzak ,t ; j  1, m ; i  1, n ; t  1, tk ; ,t w y 2ti  y 2zak ; i  1, n ; t  1, tk , i а текущий запас уменьшается на величину отгруженной партии первичной и конечной готовой продукции: tk vy ij  vy ij   w y ijt ; j  1, m ; i  1, n ; t 1 tk vy 2 i  vy 2 i   w y 2t i ; i  1, n ; t 1 Dy ijt  0; Dy 2t i  0. При неполном удовлетворении заказа определяется масса отгруженной продукции w y ijt и w y 2t i и долг t-му поставщику: Dy ijt  y ijzak ,t  w y ijt ; j  1, m ; i  1, n ; t  1, tk ; ,t Dy 2ti  y 2zak  w y 2ti ; i  1, n ; t  1, tk . i Агент Ag6 «Экспедиция» имитирует процесс поступления и обработки заказов G xijzak ,t торгующих организаций на i-й (i = 1,n) вид готовой продукции первичной переработки j-го ( j = 1,m) исходного сырья, а также заказов на i-й вид продукции yizak,t, где t — номер торгующей организации (t = 1,tk), в зависимости от дня недели, времени суток и сезонности по определенному закону распределения в виде транспортных средств с различными параметрами состояния: время поступления, масса заказываемой продукции (masz), грузоподъемность, приоритет обслуживания Py ijzak ,t ,t и Py 2zak и т. д. i Алгоритм поведения агента Ag6 сводится к воспроизведению следующих событий. zak ,t Событие 1. Генерация поступления заказов y j и zak ,t y2 i от потребителей и их постановка в очередь в соответ,t ствии с приоритетами Py ijzak ,t и Py 2zak . i
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 235 Событие 2. Если количество заказов в очереди больше нуля и количество обрабатываемых заказов на участке экспедиции не превышает максимально возможное число NExpmax, заказ поступает на обработку на соответствующий участок экспедиции. Здесь осуществляется его регистрация, выписка накладной, а также расчет общего объема заказа по всем поставщикам для дальнейшего использования в расчете производственной программы в агентах Ag3 и Ag4: tk y ij0   y ijzak ,t ; t 1 tk ,t y 20i   y 2zak . i t 1 Событие 3. По окончании времени обработки на соответствующем участке экспедиции TAg6 заказ направляется к агенту Ag5 для дальнейшего его обслуживания. Процедура повторяется для обработки следующей заявки в соответствии с ее приоритетом. 8.1.2. Мультиагентная модель логистической системы мясоперерабатывающего предприятия АПК Агентно-ориентированная имитационная модель логистической системы материальных потоков мясоперерабатывающего предприятия (МПП) представляется в виде компонента верхнего уровня LogisticSystem_High (рис. 8.3). Этот компонент объединяет MDL-компоненты взаимосвязанных автономных агентов, описывающих логистику поступления с/х животных S/h_High (Ag1), материальных потоков сферы первичной переработки Work1 (Ag2), камер охлаждения и замораживания основной и сопутствующей продукции (агенты Ag2 – Ag5), мясоперерабатывающего производства Work2 (Ag6), а также сферу сбыта KamHranSbit (Ag7) и экспедиции Expediciya (Ag8) с обслуживанием автомашин с заказами торгующих организаций. Компонент S/h_High является компонентом верхнего промежуточного уровня и включает в себя базисные компоненты поставщиков S/h1 – S/h3 нижестоящего уровня иерархии, описывающие выходные потоки Krs – крупного
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Глава 8. Мультиагентное моделирование систем в Simplex 3 Рис. 8.3. Мультиагентная модель логистической системы МПП 236
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 237 рогатого скота (к.р.с.), Sv — свиней от поставщика S/h_2 и Mrs – мелкого рогатого скота (м.р.с.) от S/h3, поступающие на первичную переработку. Компонент верхнего уровня Work1_High с процедурой ассортиментной оптимизации в сфере разбора туш SferaRazbora имитирует первичную переработку животных в цехе убоя и разделки скота, поступающего от скотоводческих хозяйств через накопители WaitKrs, WaitSv и WaitMrs на соответствующие конвейеры — компоненты KonvKrs, KonvSv и KonvMrs. Выходные переменные компонента Work_1 описывают потоки: 1) основной продукции (туши и полутуши) на охлаждение Ohl и замораживание Zam; 2) партии субпродуктов Sb, направляемые, соответственно, в очереди WaitОhl, WaitZam и WaitSb и далее в соответствующие камеры охлаждения KamOhl, замораживания KamZam и замораживания субпродуктов KamZamSub; 3) партии парного мяса рar для вторичной переработки в сфере Work2 и хранения в камере KamHranSbit для реализации. Базисные компоненты KamOhl с камерами охлаждения Ko1–Ko3), KamZam (камеры замораживания основной продукции) и KamZamSb (камеры замораживания сопутствующей продукции) с входными потоками Ohl, Zam и Sb получают партии продукции первичной переработки от агента Ag2 в соответствующие сенсорные накопители Wait. Продукция, поступающая на вход камеры охлаждения с трех конвейеров, образует очереди: 1) WaitOhl_1–3 в остывочные камеры двухступенчатого охлаждения Ko1, Ko2 с последующим доохлаждением в Ko3; 2) очереди WaitZam и WaitSb поступления основной и сопутствующей продукции на замораживание в морозильные камеры KamZam и KamZamSb. Выходные потоки охлажденных и замороженных продуктов OhlPr_1–3, ZamPr и ZamSbPr через выходные накопители направляются в сферу вторичной переработки
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 238 Глава 8. Мультиагентное моделирование систем в Simplex 3 Work2 (Ag6) с процедурой ассортиментно-рецептурной оптимизации производства в сфере сбора SferaSbora и в камеры хранения сферы сбыта KamHranSbit (Ag7). Базисный компонент KamHranSbit имитирует поступление продукции вторичной переработки Prod2 в очередь WaitProd2 в камеры хранения KhPr2, а также охлажденного (Ohl), замороженного (Zam) и парного (Par) мяса и замороженных субпродуктов (ZamS) из холодильных камер в камеры Khr1–Khr4 для отгрузки в экспедицию и обслуживания заказов торгующих организаций через выходные накопители Prod1 и Prod2. В то же время в базисном компоненте Expediciya, с одной стороны, описывается поступление в сенсорные накопители Pr1 и Pr2 продукции первичной и вторичной переработки из KamHranSbit для выполнения заказов. С другой стороны, формируется очередь WaitTrs транспортных средств с учетом приоритета обслуживания заказов Priority, времени прихода TArriveMash и массы заказываемой i-й продукции. Далее автомашины направляются к погрузочным рампам R1, R2,… для загрузки автомобилей в соответствии с количеством и структурой заказанного ассортимента. Загруженный автотранспорт направляется в выходной накопитель выполненных заказов ZakTrs. Объединение компонентов в общую мультиагентную имитационную модель осуществляется компонентом верхнего уровня LogisticSystem_High (листинг 8.1) путем описания сенсорных связей между компонентами в виде S/h_High.PartKrs  Work1_High.WaitKrs. В данном случае связи указывают, что выходная переменная Krs (к.р.с.) компонента верхнего уровня S/h_High передается на вход компонента верхнего уровня Work1_High и далее на сенсорный накопитель WaitKrs базисного компонента KonvKrs . В целом компонент верхнего уровня LogisticSystem_ High отражает логистику поступления и переработки потоков животных (к.р.с., свиньи, м.р.с.) от поставщиков S/h_1 – S/h_3 на конвейеры первичной переработки KonvKrs, КonvSv, KonvМrs. Основная продукция этих конвейеров направляется в очереди WaitOhl, WaitZam, WaitSp
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 239 перед камерами охлаждения и замораживания производственного холодильника HladKam, а также непосредственно на вторичную переработку Work2.MPar и на реализацию в отделение сбыта KamHranSbit.Khr4. HIGH LEVEL COMPONENT LogisticSystem_High SUBCOMPONENTS S/h_High, Work1_High, KamOhl, KamZam, KamZamSb, Work_2, HranKamSbit, Expediciya COMPONENT CONNECTIONS # потоки на конвейеры убоя и первичной переработки S/h_High. Krs  Work1_High.WaitKrs; S/h_High. Sv  Work1_High.WaitSv; S/h_High. Mks  Work1_High.WaitMks; Work1_High.SfRazb  S/h_High. Gj; # требуемые объемы # поставок # потоки в камеру охлаждения Work1_High.OhlKrs  KamOhl.WaitOhlKrs; Work1_High. OhlSv  KamOhl.WaitOhlSv; Work1_High.OhlMrs  KamOhl.WaitOhlMrs; # потоки в камеру замораживания Work1_High. ZamKrs  KamZam.WaitZamKrs; Work1. ZamSv  KamZam.WaitZamSv; Work_High 1. ZamMrs  KamZam.WaitZamMrs; # потоки в камеру замораживания субпродуктов Work1_High. ZamSbKrs  KamZam Sb.WaitZamSbKrs; Work1_High. ZamSbSv  KamZam Sb.WaitZamSbSv; Work1_High. ZamSbMrs  KamZam.WaitZam SbMrs; # потоки на вторичную переработку и реализацию Work1_High.par  (Work 2. Mpar, KamHladSbit.Khr4); KamOhl. OhlPr1_3  (Work 2. OhlPr1_3, KamHranSbit.Khr1); KamZam. ZamPr  (Work 2. ZamPr, KamHranSbit.Khr2) ; KamZamSb. ZamSbPr  (Work 2. ZamSbRr , KamHranSbit.Khr3); Work 2. Prod2  KamHranSbit. Wait Prod2; KamHranSbit. Prod1  Expediciya. Pr1; KamHranSbit. Prod2  Expediciya. Pr2; Market. Zak  Expediciya. WaitTrs; Expediciya. ZakTrs  Market. Torg END OF LogisticSystem_High Листинг 8.1. Компонент верхнего уровня LogisticSystem_High Компонент Work1_High (листинг 8.2) представляет второй уровень иерархии в компоненте LogisticSystem_High и
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 240 Глава 8. Мультиагентное моделирование систем в Simplex 3 описывает внутренние связи с нижестоящими базисными компонентами KonvKrs, КonvSv, KonvМrs и структурой потоков продукции первичной переработки в камеры охлаждения и замораживания (см. рис. 8.3). HIGH LEVEL COMPONENT Work1_High SUBCOMPONENTS KonvKrs, КonvSv , KonvМrs INPUT CONNECTIONS # потоки на конвейеры убоя и первичной переработки PartKrs  (KonvKrs.WaitKrs); PartSv  (KonvSv.WaitSv); PartMrs  (KonvMrs.WaitMrs); OUTPUT EQUIVALENCES # потоки в камеру охлаждения OhlKrs := KonvKrs.WaitOhl; OhlSv := KonvSv.WaitOhl; OhlMrs := KonvMrs.WaitOhl; # потоки в камеру замораживания ZamKrs := KonvKrs.WaitZam; ZamSv := KonvSv.WaitZam; ZamMrs := KonvMrs.WaitZam; # потоки в камеру замораживания субпродуктов SbKrs := KonvKrs.WaitSb; SbSv := KonvSv.WaitSb; SbMrs := KonvMrs.WaitSb; END OF Work1_High Листинг 8.2. Компонент верхнего уровня Work1_High Динамика поведения модели отражаетcя дискретно-событийным описанием временны^х и условных событий изменения состояний материальных потоков поступления и переработки сырья, хранения и реализации продукции с обслуживанием автотранспорта в дискретные моменты времени (табл. 8.1). Таблица 8.1 Временные и условные события Событие Условие 1 Поступление с/х животных со Время поступления скотобаз 1–3 2 Загрузка в цех первичной пере- Есть хотя бы одна заявка работки
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 241 Окончание табл. 8.1 Событие Условие 3 Выход продукции первичной Окончание времени переработки переработки 4 Загрузка в остывочные камеры Поступление продукции на охлаждение 5 Загрузка в морозильные каме- Поступление продукции на зары мораживание 6 Выгрузка из морозильной ка- Окончание времени заморажимеры вания 7 Загрузка в камеру хранения и Поступление охлажденных размещение по виду продукции продуктов в камеру хранения 8 Поступление машины в оче- Время поступления редь к экспедиции 9 Обслуживание машины на про- Проходная свободна и есть хотя ходной бы одна заявка 10 Уход машины после обслужи- Окончание обслуживания вания на проходной 11 Поступление машины в оче- Время поступления редь перед рампами Переход от одного события к другому осуществляется при выполнении задаваемых условий внутри текущего временного транзактивного периода. По завершении цикла имитации дается сигнал для формирования итоговой информации по прошедшему периоду, после чего устанавливается новая точка отсчета времени TNext для нового периода. Материальные потоки, размещаемые в накопительных массивах Locations, в очередях на обслуживание описываются мобильными компонентами: PartiyaKrs, PartiyaSv, PartiyaMrs (партии к.р.с., свиней и м.р.с.), PartiyaTOhl, PartiyaPTOhl, PartiyaTZam, PartiyaPTZam (партии основного продукта на охлаждение и замораживание) и PartiyaSb (партии субпродуктов) и т. п. Общая форма описания материальных потоков биосырья, основной и сопутствующей продукции первичной и вторичной переработок с включением приоритета Prio, времени поступления TArrive, массы mas партии, физико-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 242 Глава 8. Мультиагентное моделирование систем в Simplex 3 химических показателей и других параметров на примере партии к.р.с. приведена в листинге 8.3. MOBILE COMPONENT Partiya_Krs DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE mas(REAL):=1, # масса партии prio (INTEGER):=1, # приоритет переработки партии Arrive (REAL) :=1, # интервал поступления TArrive (REAL) :=1, # время поступления TWork (REAL) :=1, # время переработки Tend (REAL):=1, # время окончания переработки # физико-химические показатели belok(REAL):=1, # содержание белка H2O(REAL):=1, # содержание влаги fats(REAL):=1, # содержание жира N2(REAL):=1, # содержание азота pH(REAL):=1, # кислотность aktivH2O (REAL):=1, # активность воды tehnol(REAL):=1, # вид технологии переработки numS/h(REAL):=0 # источник поступления биосырья END OF Partiya_Krs Листинг 8.3. Мобильный компонент PartiyaKrs В качестве примера описания агентов в виде базисных компонентов в листинге 8.4 приведена сокращенная версия MDL-программы базисного компонента KonvKrs, имитирующая работу конвейера первичной переработки к.р.с. с мобильными компонентами класса PartiyaKrs и внешней процедурой оптимизации SferaRazb в компоненте верхнего уровня Work1. BASIC COMPONENT KonvKrs # партии к.р.с. на переработку ; # потоки туш, полутуш и субпродуктов на охлаждение # и замораживание MOBILE SUBCOMPONENTS OF CLASS PartiyaKrs , PartiyaOhlKrs , PartiyaZamKrs , PartiyaSbKrs USE OF UNITS
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 243 TIMEUNIT = [min] LOCAL DEFINITION DECLARATION OF SUBFUNCTIONS DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE # время первичной переработки [мин] TWork Krs (REAL) := … , # время поступления партии биосырья (к.р.с.) TArrive Krs := 0, # масса основной продукции на охлаждение OhlKrs (REAL[kg]) := 0[t], # масса основной продукции на замораживание ZamKrs (REAL[kg]):= 0[t], # масса субпродуктов на замораживание SbKrs (REAL[kg]):= 0[t], # масса первичной продукции: туши, полутуши, субпродукты masTkrs (REAL[t]) := 0[t], masPkKrs (REAL[t] ):= 0t], masSbKrs (REAL[t]) := 0[t], # масса партий туш и полутуш на охлаждение: masTkrsOhl(REAL[t]) := 0[t], masPTkrsOhl(REAL[t]) := 0[t], # масса партий продукции на замораживание: masTkrsZam(REAL[t]):=0[t], masPTkrsZam(REAL[t]):=0[t], masSbKrsZam(REAL[t]):=0[t], Protocol(LOGICAL) := FALSE, # нормы выхода продукции трех видов: в тушах, полутушах и # субпродуктах ARRAY[3] Norm (REAL):= 0, # массив заказов первичной продукции пяти видов: туши и # полутуши в охлажденном и замороженном состояниях и # субпродукты для трех видов скота ARRAY [3][5]] Zakas (REAL[t]):= 0[t] RANDOM VARIABLES # интервал поступления партий к.р.с. Arrive (Real): GAUSS (Mean:= 30, Sigma:= 5, Uplimit:= 40, Lowlimit:= 20) # масса партии к.р.с. в тоннах masPkrs (Real[t]): GAUSS (Mean:= 1.5, Sigma:= 0.2, Uplimit:= 2, Lowlimit:= 1) LOCATIONS # конвейер переработки к.р.с. KonvKrs (Partiya_ Krs) := 0 Partiya_Krs # очередь в камеру охлаждения WaitOhl (PartiyaKrsOhl):= 0 PartiyaOhlKrs, # очередь в камеру замораживания WaitZam (PartiyaKrsZam):= 0 PartiyaZamKrs,
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 244 Глава 8. Мультиагентное моделирование систем в Simplex 3 # очередь в партии субпродуктов WaitSb (PartiyaSbZam):= 0 PartiyaSp SENSOR LOCATION # очередь к.р.с. на конвейер переработки к.р.с. WaitKrs (Partiya_Krs) := 0 Partiya_Krs DYNAMIC BEHAVIOUR ON ^Т >= 0^ DO # поступление и первичная переработка партии к.р.с. WHENEVER T>= Tarrive DO # поступление партии к.р.с. WaitKrs^ : ADD 1 NEW Partiya_Krs [1]; CHANGING # приоритет обработки Priority^:= Prio; # масса партии к.р.с.в тоннах mas:= masPkrs[t], END IF Protocol DO DISPLAY (“T= поступление партии к.р.с. \n”,T); END # время поступления следующей партии TArriveKrs ^:=T + Arrive; END WHENEVER (NUMBER(WaitKrs) > 0) AND (NUMBER(Konv) = 0) DO KonvKrs^ : FROM WaitKrs GET Partiya_Krs [1] CHANGING # время первичной переработки TWork Krs ^ := ТWork Krs; # время окончания переработки Tend ^:= TArrive+ TWork Krs; END # общая масса туш в тоннах masTKrs[t]^ := Konv:Partiya_Krs[1].mas* Norm [1]; # масса полутуш в тоннах masPTKrs[t]^:= Konv:Partiya_ Krs[1].mas* Norm [2]; # масса субпродуктов на охлaждение masSbKrs[t]^:= Konv:Partiya_ Krs[1].mas* Norm [3]; # на замораживание ZamKrs[t]^:= ZamKrs[t] +masTzam[t]+ masPTzam[t]; # накопление общей массы первичной продукции: OhlKrs[t]^:= OhlKrs[t]+ masTohl[t]+ masPTohl[t]; ZamKrs[t]^:=ZamKrs[t]+masTzam[t]+masPTzam[t]; # на замораживание SpKrs[t]:= SpKrs[t]+ masSb[t]; # субпродуктов IF Protocol DO DISPLAY ("T= %f конец переработки партии",T); END END
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 245 # потоки продукции первичной переработки к.р.с. на # охлаждение и замораживание DO WHENEVER (NUMBER(KonvKrs) >0) AND (T>= KonvKrs:PartiyaKrs [1].Tend) KonvKrs^ : TO WaitOhl SEND PartiyaKrsOhl [1] # партия на охлаждение CHANGING # время поступления на охлаждение TArrive ^:= KonvKrs:PartiyaKrs [1].Tend; # масса партии туш и полутуш mas^:= masTOhl[t]+ masPTOh[t]l; Priority^:= Prio; # приоритет обработки Belok^:= KonvKrs:PartiyaKrs[1].Belok; H2O^:= KonvKrs:PartiyaKrs [1].H2O; ……………………………………….. Num S/h^:= KonvKrs:PartiyaKrs [1].NumS/h; # индекс поставщика END KonvKrs^ : TO WaitZam SEND PartiyaKrsZam [1] # в очередь на замораживание CHANGING TArrive ^:= KonvKrs:PartiyaKrs [1].Tend; # время поступления mas^:= masTzam[t]+ masPTzam[t]; # масса партии Priority^:= Prio; # приоритет обработки ……………………………………….. NumS/h^:= Konv1:PartiyaKrs [1].NumS/h; END KonvKrs^ : TO Wait Sb SEND PartiyaSp_Krs [1] # субпродукты на замораживание CHANGING TArrive ^ := Konv:PartiyaKrs [1].Tend; mas[t]^:= masSb[t]; ........................... END IF Protocol DO DISPLAY ("T=%f время отправления партии продукции первичной переработки к.р.с. на охлаждение и замораживание\n",T); DISPLAY ("масса основной продукции на охлаждение =%f \ n", Ohl_Krs); DISPLAY ("масса основной продукции на замораживание =%f \ n" , Zam_Krs); DISPLAY ("масса субпродуктов на замораживание = %f \ n", Sp_ Krs);
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 246 Глава 8. Мультиагентное моделирование систем в Simplex 3 END END END OF KonvKrs Листинг 8.4. MDL$описание агента KonvKrs в компоненте Work1 Аналогично в компоненте верхнего уровня Work1 описываются субагенты KonvSv и KonvMrs. Ассортиментная оптимизация первичной переработки скота с древовидной структурой материальных потоков осуществляется агентом Work1 по алгоритму, изложенному в разделе 8.1.1. (см. рис. 8.2.), и может быть описана внешней программой эксперимента SferaRazbora на языке SimplexEDL (листинг 8.5). EXPERIMENT SferaRazbora # программа интерфейса с входной переменной (индекс вида # поставки) и 6 выходами: ExpGmin[i], ExpGmax[i], # ExpNv[i], ExpY0[i], ExpYmin[i], ExpYmax[i] MainWork1 (INTEGER  REAL, REAL, REAL, REAL, REAL, REAL) DECLARATION OF VARIABLES # массивы параметров в EDL-программе эксперимента m (INTEGER):= … # число видов сырья и # основной продукции ARRAY [m] ExpY0 (REAL):=0, # плановый выход основной # продукции трех видов скота ARRAY [m] ExpY (REAL):=0, # фактический выход ARRAY [m] ExpYmin (REAL):=0, # минимальный выход ARRAY [m] ExpYmax (REAL):=0, # максимальный выход ARRAY [m] ExpD (REAL):=0, # массив долгов по выпуску # каждого вида продукции ARRAY [m] ExpDy (REAL):=0, # изменение объемов выпуска # продукции из i-го сырья dV (REAL):= 0, # суммарное недовыполнение n # выпуска продукции V   V i i 1 ARRAY [m] Exp G0 (REAL):= 0, # плановые поставки трех # видов сырья (с/х животных) ARRAY [m] ExpG (REAL):= 0, # возможные поставки трех # видов сырья
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 247 ARRAY [m] ExpGmin (REAL):=0, # минимальные объемы # поставок ARRAY [m] ExpGmax (REAL):=0, # максимальные объемы # поставок ARRAY [m] ExpZ (REAL):=0, # недостатки поставок j -го # вида сырья ind (REAL):=1, # индексный массив # перераспределения поставок ARRAY [m] ExpDG (REAL):=0, # объемы перераспределения # поставок ARRAY [m] ExpNv (REAL):=0, # удельные нормы выхода # продукта из j-го вида сырья min Nv (REAL):=100, # минимальная норма max Nv (REAL):=0, # максимальная норма l (INTEGER):=0, s (INTEGER):=0, # индексы l-го и s-го # видов сырья для коррекции поставок delta (REAL):=0, BODY OF EXPERIMENT CREXP ExpHolod_High1El; # выбор эксперимента CRRUN Run1, Holod_High1; # организация запуска # наблюдатель obs1 плановых и фактических объемов поставок OBSCOMPLETE <obs1>, 0, 100, 1; ADDVAR <obs1>,< G0[1] >, < G[1] >, < G0[2] >, < G[2] >, < G0[3] > , < G[3] >, … ; # наблюдатель obs2 плановых и фактических объемов выпуска # основного продукта OBSCOMPLETE < obs2>, 0, 100, 1; DDVAR < obs2 >, < y0[1] >, < y0[2] >, < y0[3] >, < y[1] >, < y[2] >, < y[3] >, … ; # ввод исходных данных с помощью интерфейса и внешней # программы MainWork1 FOR i FROM 1 TO m REPEAT (ExpGmin[i], ExpGmax[i], ExpNv[i], ExpY0[i], ExpYmin[i], ExpYmax[i]) := MainWork1(i); END LOOP # определение требуемых объемов # выпуска основного продукта FOR j FROM 1 TO m REPEAT ExpG0[j]:=y0[j]/ ExpNv [j]; # # # Если объем требуемой поставки # возможного Gmax IF (ExpG0[j] > ExpGmax[j]) DO поставок и возможного требуемый ресурс Gj0 j-го вида сырья больше максимально
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 248 Глава 8. Мультиагентное моделирование систем в Simplex 3 ExpG[j]:= ExpGmax[j] ; # ограничение объема # поставки до возможного # Gmax[j]; ExpD[j]:= ExpG0[j]- ExpG max[j]; # долг по поставке j -го # вида сырья ExpDy[j]:= ExpNv [j]* ExpD[j]; # сокращение # выпуска продукции из j-го сырья # фактический выход основной продукции из j-го вида сырья ExpY[j]:= ExpY0[j]- ExpDy[j]; dV:= dV+Expdy[j]; # общее недовыполнение # плана выпуска продукции END # Если объем требуемой поставки меньше минимально # возможного Gmin IF (ExpG0[j]< ExpGmin[j]) DO ExpG[j]:= ExpGmin[j]; # доведение объема поставки # до возможного Gmin ExpZ[j]:= ExpGmin[j]- ExpG0[j]; # увеличение # объема поставки j -го вида ExpDy[j]:= Exp Nv [j]* ExpZ[j]; # увеличение # выпуска продукции из j-го сырья ExpY [j]:= ExpY0[j]+ ExpDy [j]; # увеличенный # выход продукции из j-го вида сырья # Если объем выпуска продукта будет больше заданного # максимума IF ExpY [j] > ExpYmax[j] DO ExpDy[j]:= ExpYmax[j]- ExpY[j]; # величина # сокращения выпуска продукции ExpY [j]:= ExpYmax[j]; # сокращение # выпуска продукции до ymax ind[j]:= 0; # запись достижения # максимального выпуска END # продукции из j-го сырья dV:= dV+ExpDy[j]; # общее недовыполнение # выпуска продукции END ELSE DO ExpG[j]:= ExpG0[j]; ExpY [j]:= ExpY0[j]; END END END LOOP LOOP < optsearch > REPEAT IF dV <= 0 # общее недовыполнение выпуска продукции # отсутствует
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 249 # передача данных переменным иерархической # МDL-модели FOR i FROM 1 TO m REPEAT < S/h_High/ Krs /G[j] := ExpG[j]; < Work1/KonvKrs /G[j] > := ExpG[j]; < Work1/KonvKrs /Norm [j] > := ExpNv[i]; < Work1/KonvKrs /y[j] > := ExpY[j]; END LOOP EXIT <optsearch>; END ELSE # минимизация недовыполнения dV с определением # индексов l-го и s-го видов # сырья с максимальной и минимальной нормами # выхода основного продукта (мяса) для # перераспределения поставок между ними. DO l:= 0; max ExpNv:= 0; # сырье с максимальной нормой # выхода FOR j FROM 1 TO m REPEAT IF (ExpNv [j]> max Nv) AND (ind[j]=1) DO max Nv:= ExpNv [j]; l:= j; END END LOOP IF (l = 0) # возможность перераспределения исчерпана DO # передача данных переменным иерархической # МDL-модели FOR j FROM 1 TO m REPEAT < S/h_High/ Krs /G[j] := ExpG[j] ; < Work1/KonvKrs /G[j] > := ExpG[j] ; < Work1/KonvKrs /Norm [j] > := ExpNv[i]; < Work1/KonvKrs /y[j] > := ExpY[j]; END LOOP> EXIT < optsearch >; END ELSE DO # сырье с минимальной нормой выхода s:= 0; min Nv := 2; FOR j FROM 1 TO m REPEAT IF (Nv [j] < min Nv) AND (ind[j]=1) DO min Nv:=Nv[j]; s:= j; END END LOOP END IF (max Nv-min Nv = 0) DO # передача данных переменным иерархической # МDL-модели FOR j FROM 1 TO m REPEAT < S/h_High/ Krs /G[j] := ExpG[j] ; < Work1/KonvKrs /G[j] > := ExpG[j] ; < Work1/KonvKrs /Norm [j] > := ExpNv[i]; DO
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 250 Глава 8. Мультиагентное моделирование систем в Simplex 3 < Work1/KonvKrs /y[j] > := ExpY[j]; END LOOP EXIT < optsearch > ; END ELSE # перераспределение поставок между l-м и s-м # видами сырья c увеличением # до Gmаx l-й поставки Gl и сокращением до Gmin # s-й поставки Gs по формулам (8.7), (8.8) DO IF ExpGmax[l]* ExpNv [l] <= ExpYmax[l] DO # коррекция l-й поставки по лимитам # поставки ExpDG[l]:= ExpGmax[l]- ExpG[l]; END ELSE DO # коррекция l-й поставки по лимитам # выпуска продукции ExpDG[l]:= (ExpYmax[l]- ExpY[l])/ ExpNv [l]; END IF ExpGmin[s]* ExpNv [s]>= ExpYmin[s] DO # коррекция s-й поставки по лимитам # поставки ExpDG[s]:= Exp G[s]- ExpGmin[s]; END ELSE DO # коррекция s-й поставки по лимитам # выпуска продукции ExpDG[s]:= ( ExpY[s]- ExpYmin[s])/ ExpNv [s]; END delta:= min(ExpDG[l], ExpDG[s]) ; DISPLAY(“delta=%lg\n”,delta); ExpG[l]:= ExpG[l]+ delta; # увеличение поставки # l-го сырья ExpG[s]:= ExpG[s]- delta; # уменьшение поставки # s-го сырья ExpDy[l]:= ExpNv [l]* delta; ExpY[l]:= ExpY[l]+ ExpDy[l]; ; # увеличение # выпуска l-го продукта Exp Dy[s]:= ExpNv [s]* delta; ExpY[s]:= ExpY[s]- ExpDy[s]; # уменьшение # выпуска s-го продукта dV:=dV+ ExpDy[l] - ExpDy[s]; # коррекция # недовыполнения плана IF ExpG[l] >= ExpG[s] DO # запись в индексный массив признаков достижения # предельных значений выпуска продукции ind[s]:=0; END
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 251 ELSE DO ind[l]:= 0; END # переход к нахождению следующей пары для # перераспределения объемов поставок END END LOOP <optsearch> END OF SferaRazbora Листинг 8.5. EDLпрограмма SferaRazbora структурной оптимиза$ ции материальных потоков с древовидной структурой Внешняя процедура ввода исходных данных MainWork1 для внесения с клавиатуры шести позиций: ExpGmin[i], ExpGmax[i], ExpNv[i], ExpY0[i], ExpYmin[i], ExpYmax[i] для каждого вида поставки скота с проверкой вводимой информации описывается на одном из языков высокого уровня аналогично описанию в листинге 7.11. Пример интерфейса пользователя для внесения данных с клавиатуры показан на рис. 7.13. Полное описание порядка создания пользовательского интерфейса с помощью внешней программы приведено в [14]. Исходные данные в виде минимального и максимального объемов запасов заказанного с/х сырья, минимального и максимального объемов переработанной продукции цеха убоя, а также разделки и норм ее выхода передаются через интерфейс во внешнюю EDL-процедуру Experiment SferaRazbora ассортиментной оптимизации сферы первичной переработки. По окончании процесса оптимизации результаты (в виде скорректированного плана выпуска продукции с минимальным отклонением от заданной структуры ассортимента) передаются в имитационную модель для дальнейшей имитации переработки продукции по скорректированным планам поставок скота и выпуска продукции. Процесс обмена данными между имитационной моделью вторичной переработки продукции Work2 и внешней EDL- процедурой Experiment SferaSbora аналогичен. Транспортные средства, поступающие в экспедицию Expidicija (см. рис. 8.3) в очередь WaitTrans с прио-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 252 Глава 8. Мультиагентное моделирование систем в Simplex 3 ритетом обслуживания заказов Priority, временем прихода TArriveTrans, грузоподъемностью GrTrans и массой заказываемой продукции MasProduct, описываются мобильным компонентом Trans с соответствующими атрибутами (листинг 8.6). MOBILE COMPONENT Trans DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE Priority (INTEGER):=1, # приоритет транспортного средства ArriveTrans (REAL):=1, # интервал поступления TArriveTrans (REAL) :=1, # время поступления GrTrans (REAL):=1, # грузоподъемность MasZak(REAL):=1 # масса заказа на определенный вид # продукции vid(REAL):=1 # вид продукции ZagTrans (REAL):=0 # масса загруженной продукции END OF Trans Листинг 8.6. Описание мобильного компонента Trans MDL-программа обслуживания автомобилей на рампе с заказом на охлажденную продукцию описывается следующим событием (листинг 8.7). # Событие 1. Выполнение заказа на охлажденные полутуши на рампе Rampa 1 # пока есть хотя бы одна заявка, первая рампа # свободна и есть партия # охлажденных туш к.р.с. WHENEVER (NUMBER (WaitTrs) > 0) AND (Rampa1(Partya) = 0) AND (Prod1: PartiyaTOhl [1].vid =1) AND (Prod1: PartiyaTOhl> 0) DO # допустимая загрузка Zag:= Rampa1:Trans[1],GrTrans-Rampa1:Trans[1], ZagTrans; # если масса загружаемой партии меньше допустимой # загрузки IF Prod1: PartiyaTOhl [1].mas< Zag DO IF Protocol DO DISPLAY ("T= %f выполнение заказа на охлажденные полутуши к.р.с.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 253 на рампе1\n",T); END # увеличение загрузки на вес партии Rampa1:Trans[1], ZagTrans]^:= Rampa1:Trans[1], ZagTrans + Pr1: PartiyaTOhl[1].mas; END ELSE DO # партия не может быть загружена полностью Dolg:=Prod1: PartiyaTOhl [1].mas–Zag; IF Protocol DO DISPLAY ("T= %f !!! заявка на охлажденные полутуши к.р.с на рампе 1 выполнена не полностью из-за недостаточной грузоподъемности \n",T); DISPLAY ("долг по текущему заказу =%f \ n", Dolg); END END Rampa1^: REMOVE Trans[1]; # удаление обслуженной машины END Листинг 8.7. Фрагмент MDL$программы обслуживания автомобилей на рампе Аналогично описываются события обслуживания на второй рампе с загрузкой продукции других видов и протоколами регистрации. 8.1.3. Организация и результаты имитационного эксперимента1 Мультиагентная модель логистической системы перерабатывающего предприятия АПК описывает активную систему переработки материальных потоков с взаимодействующими агентами. Модель реализуется в MDL-описании в универсальной имитационной системе Simplex3 для идентификации и прогнозирования аномальных состояний производственной системы и принятия оптимальных управленческих решений в различных условиях. Имитационный эксперимент начинается с задания или генерации параметров исходного состояния системы (ем1 Полное MDL-описание одной из реализованных версий модели приведено в диссертации Л.А. Овчинниковой «Мультиагентное имитационное моделирование логистической системы перерабатывающего предприятия АПК». – М.: МГУПБ, 2008.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 254 Глава 8. Мультиагентное моделирование систем в Simplex 3 кость холодильных камер и камер хранения, время обработки и пребывания сырья в каждой камере, период поступления продукции и заказов торгующих организаций на предприятие и т. д.) и заключается в моделировании последовательных временных и условных событий, отражающих логистику поставок и переработки биосырья, складирования и реализации готовой продукции в динамике поведения взаимодействующих агентов. Принятие оптимальных решений в динамике поведения агентов осуществляется внешними процедурами структурной оптимизации материальных потоков сфер первичной и вторичной переработки биосырья SferaRazbora и SferaSbora, описанными в разделе 8.1.1, а также процедурой управления запасами. Результаты имитационного моделирования накапливаются и представляются в виде временных графиков изменения показателей эффективности производственной деятельности предприятия в зависимости от параметров состояния и взаимодействия элементов его логистической системы. На рисунках 8.4 и 8.5 (см. цв. вклейку) показан пример прохождения партий продукции первичной переработки скота в остывочном отделении холодильника Hlad _High (см. рис. 8.3) и далее, после охлаждения и замораживания, поступления в камеры хранения KamHranSbit. При этом единица машинного времени (шаг) соответствует 1 мин. Снижение количества продукции в соответствующих камерах хранения обусловлено отгрузкой ее в экспедицию для выполнения текущих заказов. Процесс реализации продукции в виде графиков поступления и обслуживания транспортных средств по заявкам торгующих организаций показан на рис. 8.6. В данном примере в течение первых 6 ч (360 мин) происходит обслуживание ранее существовавшей очереди из четырех машин и поступающих вновь без накопления очереди до 360-й мин. Далее интенсивность поступления заказов увеличивается, и очередь с периодической разгрузкой возрастает до 18 машин (1620-я мин). После этого в течение 3 ч (180 мин) осуществляется непрерывное обслуживание
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 255 Рис. 8.4. Поступление партий продукции первичной переработки скота в камеру охлаждения KamOhl холодильника HladKam Рис. 8.5. Накопление трех видов продукции первичной переработ$ ки в камерах хранения KamHranSbit: охлажденное мясо Ohl 1–3, за$ мороженное мясо ZamPr, замороженные субпродукты ZamSbPr
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 256 Глава 8. Мультиагентное моделирование систем в Simplex 3 Рис. 8.6. График накопления и обслуживания автомобилей в очере$ ди WaitTrs перед погрузочными рампами транспортных средств без новых заявок, и их количество в очереди резко снижается. Оценка результатов моделирования позволяет найти оптимальные режимы управления материальными потоками предприятия, добиться ритмичности в работе производственного холодильника и перерабатывающего производства, предотвратить нарушение производственных циклов, минимизировать критерий отклонения от заданной структуры ассортимента и время простоя автомобилей с заказами торгующих организаций. 8.1.4. Организация эксперимента с оптимальными стратегиями в условиях неопределенности Критерием оценки работы производственного холодильника является длина очереди перед рампами WaitM и время ожидания машины Tozh.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.1. Мультиагентная имитационная модель предприятия АПК 257 Организация имитационного эксперимента с интеллектуальной стратегией нахождения на модели оптимальных режимов работы предприятия АПК по заданному критерию осуществляется с помощью внешней процедуры оптимального поиска методом деформируемого симплекса (см. главу 2) на языке описания эксперимента Simplex-EDL. Под критерием в данном случае подразумеваются: минимизация издержек на обслуживание одного заказа торгующей организации, минимизация штрафных санкций за несвоевременное обслуживание заказов торгующих организаций и др. В качестве примера выбран критерий минимальных затрат на обслуживание одного заказа торгующей организации:  x   P  x1 , x2 ,..., xn   D  x1 , x2 ,..., xn  N  x1 , x2 ,..., xn   m in , (8.21) где x1, x2, …, xn – параметры состояния системы; P (x1, x2, …, xn) — расходы предприятия АПК; D (x1, x2, …, xn) — штрафы за невыполнение заказов в срок; N (x1, x2, …, xn) – количество обслуженных заказов торгующих организаций. Для поиска оптимума целевой функции были выбраны пять изменяющихся параметров состояния системы (n = 5): x1 — количество параллельных линий переработки животных (количество рабочих); x2 — количество параллельных линий на участке обвалки и жиловки мяса (количество рабочих); x3 — максимальная емкость камеры охлаждения, кг; x4 — максимальная емкость морозильной камеры, кг; x5 — максимальная емкость морозильной камеры для субпродуктов, кг. В факторное пространство могут быть введены и другие изменяющиеся параметры состояния, например количество параллельно обслуживаемых заказов торгующих организаций на проходной, на станции выписки накладной, количество параллельно обслуживаемых заказов на каждой из рамп и т. д. Поиск начинается от верхних границ параметров состояния системы и сводится к отысканию на каждом шаге вер-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 258 Глава 8. Мультиагентное моделирование систем в Simplex 3 шины симплекса с наихудшим значением целевой функции xqi и определению координат центра xiс гиперповерхности отражения по формуле xic  1  n 1 c    x  xqi  ; i  1, n , n  l  1 li  (8.22) где xli – i-я координата l-й вершины симплекса; xqi – i-я координата наихудшей q-й вершины. Далее наихудшая вершина xqi заменяется ее зеркальным отражением относительно центра противолежащей грани в новую точку с координатами:   xik  1  otr   x ic  a x ic  xq ,i ; i  1, n , (8.23) где а = 1 — коэффициент отражения, изменяющийся с шагом 0,5 в сторону растяжения и сжатия. Описание внешней процедуры оптимального поиска методом деформируемого симплекса (см. главу 2) на языке Simplex-EDL аналогично описанию эксперимента EXPERIMENT SimulationSimplex (см. листинг 7.12). В результате симплексного планирования эксперимента были определены оптимальные параметры логистической системы, обеспечивающие минимум функции затрат: 1) при количестве рабочих в отделении убоя и разделки x1 = 3; 2) при количестве рабочих на участке обвалки и жиловки x2 = 4; 3) при максимальной емкости:  камеры охлаждения первой фазы x3 = 6757 кг,  морозильной камеры x4 = 32 253 кг,  морозильной камеры для субпродуктов x5 = 5453 кг. Вместе с тем, мультиагентная имитационная модель, отражающая динамику изменения состояния взаимосвязанных активных сфер поставок и переработки биосырья в различных производственных и маркетинговых ситуациях, может служить инструментом поддержки принятия ответственных управленческих решений и позволяет:
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 259  оценить и выбрать стратегии производственной деятельности в неопределенной ситуации поставок, производства и спроса продукции;  идентифицировать, планировать и отыскивать оптимальные режимы управления перерабатывающим предприятием АПК с обеспечением максимальной полноты и глубины переработки биосырья и выполнения заказов торгующих организаций;  проводить структурную оптимизацию управления запасами и материальными потоками в сферах поставок сырья, его первичной и вторичной переработки, хранения и сбыта готовой продукции с оценкой ресурсов предприятия по увеличению объема выпуска готовой продукции и возможности расширения ассортимента выпускаемой продукции;  прогнозировать последствия возможных нештатных ситуаций в производственной деятельности предприятия и возможности минимизации штрафных санкций за несвоевременное выполнение заказов. Мультиагентная имитационная модель логистической системы перерабатывающего предприятия АПК открыта и может быть применима для технологических систем и производств любой сложности. Пользовательский интерфейс обеспечивает диалоговый режим проведения эксперимента с различными параметрами состояния и стратегиями агентов и упрощает пользователю работу с программным продуктом без специальных знаний математических методов и программирования. 8.2. Мультиагентное моделирование образовательной системы накопления знаний Мультиагентное моделирование учебного процесса передачи и накопления знаний позволяет отразить различные аспекты сложного социально-психологического вида человеческой деятельности с информационной, педагогической, социальной и психологической точек зрения.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 260 Глава 8. Мультиагентное моделирование систем в Simplex 3 Имитационное моделирование поведения и взаимодействия активных элементов образовательной системы (учеников и учителей) основано на логистике событий, отражающих накопление знаний в процессе обучения с учетом определенных факторов и продукционных правил [15]. В соответствии с общей схемой процесса обучения в образовательной системе, представленной на рис. 8.7, агентно-ориентированную модель процесса обучения в вузе Learning можно представить в виде пяти базисных компонентов, а именно: 1) агенты класса «студент», AgStud, воспринимающие учебную информацию и накапливающие базу знаний; 2) агент класса «преподаватель», AgTeach, обеспечивающий передачу информации студенту и контроль его знаний; 3) компонент «среда обучения», Area, отражающий условия обеспечения учебного процесса (расписание занятий, учебно-методические указания, оснащенность аудиторий и т. п.); 4) компонент Statistic, в котором производится учет и оценка текущей успеваемости студентов и эффективности учебного процесса; Рис. 8.7. Структурная схема образовательной системы
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 261 5) компонент Connection, предназначенный для адресного обмена сообщениями между агентами AgStud и агентом AgTeach. 8.2.1. Параметрическое описание и динамика поведения обучаемого агента Состояние интеллектуального агента AgStud класса «студент» описывается [14, 15] множеством параметров и переменных его когнитивного, эмоционального, социального и личностного состояний. В качестве примера оно изложено в разделе 1.3. На основе исходных данных и значений переменных состояния агентов в относительной шкале желательности от 0 до 1 построены круговые параметрические диаграммы (рис. 8.8) для четырех кластеров состояния и ожидаемой успеваемости агентов AgStud. Оценки уровня интеллекта, внимания, способности к восприятию и психотипа агента определяются системой психодиагностических тестов: IQ, тест Шульте, тест «Сложная сенсомоторная реакция выбора» [34] и т. п. Неизменяющиеся параметры (константы состояния) рассчитываются по результатам психологических тестов или оцениваются экспертным путем (в 10-балльной системе или в относительных единицах) с выделением четырех качественных уровней исходного состояния агента AgStud, определяющего прогнозируемый результат обучения (отлично, хорошо, удовлетворительно, плохо). Объем накопленных знаний Jt агентом AgStud в зависимости от объема представляемой информации It и ее избыточности определяется уравнением  J  J t  R I t  1  0   J0 , (8.24) It   J где R  – коэффициент эффективности обучения, измеIt няющийся от 1 до 0; J0 – количественная оценка априорных знаний.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 262 Глава 8. Мультиагентное моделирование систем в Simplex 3 Рис. 8.8. Диаграммы параметров состояния студентов: параметры когнитивного состояния агента: c1 — интеллект по IQ; c2 — вни$ мание; c3 — способность к восприятию; c4 — уровень априорных знаний J0; c5 — коэффициент эффективности переработки информации R; c6 — скорость восприятия информации ; c7 — текущий уровень знаний J; параметры эмоци онального состояния: e1 — психотип личности; e2 — эмоциональная реакция; параметры социального состояния: s1 — индекс социометрического статуса; s2 — уровень взаимодействия; персональные характеристики агента: p1 — со$ знательность; p2 — трудолюбие; p3 — быстрота утомляемости Из формулы (8.24) следует, что при J0 = It объем накопленных знаний Jt остается на уровне априорных знаний J0, который можно оценить по среднему или суммарному баллу за предыдущий период обучения. Динамику накопления знаний во времени можно описать дифференциальным уравнением:
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний T  dJt J  =Rt It  1  0    Jt  J0 , dt It   263 (8.25) где Jt — количество информации, накапливаемое студентом, Кбайт; It — количество представляемой информации, Кбайт; J0 – оценка априорных знаний (априорной инфорJ мации); Rt  t — коэффициент эффективности в текущий It момент времени t; T — постоянная времени усвоения единицы информации, ед.вр. Постоянная времени определяется скоростью, или пропускной способностью, переработки единицы информации агентом в начальный момент времени 0, Кбайт/ед.вр., как 1  T. t (8.26) Пропускная способность восприятия информации обучаемого агента является функцией его интеллектуального состояния и априорных знаний, эмоционального состояния и эмоциональной реакции. Она изменяется в процессе обучения в зависимости от объема представленной It и воспринятой Jt информации, способа представления, степени тренированности и других факторов [4]. Исходное значение  0 i i-го агента можно выразить уравнениями регрессии от исходных параметров когнитивного и эмоционального состояний на основе корреляционного и регрессионного анализа экспериментальных данных в виде: n m i 1 k 1  0 i  p i 0   p ij cij   p ik eik ; i = 1,N, (8.27) где pij — коэффициент линейной множественной регрессии; cij — j-й параметр когнитивного состояния i-го студента; eik — k-й параметр эмоционального состояния i-го студента. Более эффективное определение i достигается с помощью нейронной сети типа многослойного перцептрона по алгоритму обучения с минимизацией суммы квадратов
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 264 Глава 8. Мультиагентное моделирование систем в Simplex 3 разностей между фактическими и расчетными значениями пропускной способности на очередном шаге [23] путем коррекции коэффициентов регрессии с целью уменьшения ошибки на выходе. В первом приближении будем считать, что i не изменяется в процессе восприятия текущей информации и зависит главным образом от уровня априорных знаний и степени тренированности. Тогда эффективность процесса накопления знаний i-м студентом Ri, как отношение (8.25) воспринятой информации к представленной It, может быть определена как: n m i t t   (8.28)   p i 0   p ij cij   p ik eik  ; i=1,N, It It  j 1 k 1  где i — пропускная способность i-го студента в текущее время обучения. Общая эффективность учебного процесса в группе из N студентов рассчитывается как Ri  Rср  1 N  Ri . N i 1 (8.29) В соответствии с уравнением (8.25) и экспериментальными данными некоторый нормированный процесс накопления знаний Jt агентом AgStud за установленное время обучения t = Tstud представляется функцией вида  J Jt  R It  1  0 It   t   1  e   J0 ,  (8.30) где It — объем информации, сообщаемый преподавателем за установленное время обучения t = Tstud (время лекции Tlek, практики Tpr, лабораторных занятий Tlab);  — пропускная способность обучаемого, обусловленная его психофизиологическими возможностями в заданных условиях. Из уравнения (8.30) следует, что количество новой информации накапливается по экспоненте с постоянной времени, определяемой скоростью ее восприятия i-м студентом i, и остается на уровне его априорных знаний J0, если эф-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 265 фективность накопления новых знаний Ri равна нулю или представляемая информация является полностью избыточной, т. е. It = J0. В период между занятиями объем полученных знаний сокращается в результате забывания информации с определенной интенсивностью [28] по экспоненте: Jt  JT stud  e t , (8.31) где  — интенсивность забывания; t  Tstud — текущее время между занятиями. Эмоциональная реакция Qi студента на процесс обучения (удовольствие, ожидание, стремление, безразличие, отрицание и т.п.) может быть выражена множественной регрессией ее конкретного вида от значений координат эмоционального состояния (см. главу 1). Формула (1.6) позволяет определить область наиболее интенсивной реакции, обусловливающей дальнейшие действия агента. Коэффициент психологической напряженности агента определяется отношением количества его антагонистических связей с характеристикой (–1) в матрице взаимосвязей Sij; i,j = 1,N с элементами: (+1) — сотрудничество, (–1) — антагонизм и (0) — безразличие, составляемой в результате экспертного опроса, к общему числу связей. Индекс социометрического статуса агента Ci, характеризующий степень центральности студента в коллективе, вычисляется по матрице взаимосвязей по формуле: Сi    Sij  Sji  ; i = 1,N, n (8.32) j 1 j i где Sij, Sji — количество прямых и обратных связей i-го агента с другими агентами AgStudj; N — число студентов в группе. Коэффициент взаимодействия i-го агента, характеризующий его корпоративность, определяется также из матрицы взаимосвязей как отношение абсолютного количества неантагонистических связей к числу взаимодействующих агентов.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 266 Глава 8. Мультиагентное моделирование систем в Simplex 3 Динамика поведения агента «студент» связана с логистикой временных и условных событий, описывающих изменение состояния и поведения агента в процессе обучения [16]. Так, поведение агента класса AgStud в процессе накопления знаний при заданных параметрах собственного состояния и состояния среды сводится к циклу с тремя фазами. 1. Активная фаза занятий по расписанию (лекции, практические и лабораторные занятия) связана с восприятием определенного объема представляемой информации или, при пропуске занятия, переходом к другим фазам самостоятельной работы, упражнениям и самоконтролю по продукционным правилам в зависимости от текущего состояния агента. 2. Фаза самостоятельной внеаудиторной работы по усвоению и восполнению упущенного материала в соответствии с когнитивным, эмоциональным и психофизиологическим состояниями агента с использованием учебников, конспектов, сети Интернет, консультаций с другими агентами класса AgStud и др. 3. Самостоятельный контроль полученных текущих знаний (ответы на вопросы, тесты, решение задач и т. п.) и переход к фазе отдыха. В зависимости от состояния агента AgStud в текущий момент времени t актуализируется одно из следующих действий: обучение, самостоятельная работа, отдых, социальное взаимодействие. 8.2.2. Параметрическое описание и динамика поведения агента «преподаватель» Агент «преподаватель» AgTeach характеризуется набором векторов состояния: AgTeach = { Сo, Em }, где Co = {c1, c2, c3} — вектор когнитивного состояния: с1 — уровень знаний, c2 — уровень умений, c3 — степень владения предметной областью; Em = {e1, e2, e3} — вектор эмоциональ-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 267 ного состояния: e1 — эмоциональная реакция, e2 — психотип, e3 — степень удовлетворенности результатами обучения. Агент AgTeach в учебном процессе имеет две фазы деятельности: преподавание требуемого материала с передачей знаний и контроль знаний агента AgStud с идентификацией его индивидуального состояния и рейтинговой оценкой в целом. Основные события, связанные с поведением агента AgTeach в учебном процессе, сводятся к следующему: 1) передача знаний студентам в соответствии с учебным планом в течение аудиторных занятий; при этом качество транслируемой информации определяется когнитивным и эмоциональным состояниями преподавателя и оснащенностью аудиторий; 2) промежуточный контроль успеваемости, аттестация и рейтинговая оценка студентов; 3) итоговый контроль знаний AgStud (зачет, экзамен) и индивидуализация учебных графиков дальнейшего обучения. Общий алгоритм моделирования образовательного цикла показан на рис. 8.9. В начале цикла задаются характеристики агентов AgStud и AgTeach и рассчитываются исходные значения параметров и переменных векторов эмоционального, когнитивного, социального и личностного состояний агентов. Далее агентам сообщаются их локальные цели в виде учебно-методического комплекса (учебного плана, рабочей программы, графика лекционных, практических и лабораторных занятий и т. п.), а также свободное время для самостоятельных занятий, консультаций с другими агентами AgStud и AgTeach и отдыха. В зависимости от когнитивного состояния, уровня эмоциональной напряженности и других факторов происходит процесс передачи и накопления знаний в соответствии с математическим описанием (8.24) – (8.31). При этом происходит изменение состояния обучаемого агента AgStud так, что на лекциях он получает определенный объем новых тео-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 268 Глава 8. Мультиагентное моделирование систем в Simplex 3 Рис. 8.9. Общий алгоритм взаимодействия агентов AgStud и Ag Teach в цикле обучения и накопления знаний
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 269 ретических знаний, а на практических и лабораторных занятиях повышает степень усвоения и тренированности тр. Оценка уровня накопленных знаний в большинстве случаев связана с переговорным процессом между AgStud и AgTeach и интерактивным обменом информацией в форме вопросов и ответов. Если обучаемый успешно ответил на вопросы и согласен с удовлетворительной оценкой, процесс заканчивается переходом к активному отдыху. В случае неудовлетворительной оценки следует фаза самостоятельной работы, и диалог продолжается с повторной оценкой знаний до наступления согласия. Один из примеров переговорного процесса между агентами AgTeach и AgStud при контроле накопленных знаний (зачет или экзамен) заключается в представлении тестов в виде ряда номеров вопросов с соответствующими коэффициентами сложности Tests = {1, 0.8, 0.6, 0.4, 0.2} и соответствующих ответов. По результатам текущего контроля знаний и общей оценки состояния и поведения агента AgStud агент AgTeach выставляет рейтинговую оценку Ball с прогнозированием индивидуальной эффективности учебного процесса. При этом учитываются персональные характеристики обучаемых агентов и уточняются локальная цель и индивидуальный план обучения в последующих циклах образовательного процесса. 8.2.3. Мультиагентная модель образовательной системы Динамика поведения агентов в модели описывается последовательными временны^ми и условными событиями, актуализирующими те или иные фазы работы агента AgStud, в процессе обучения (табл. 8.2) с соответствующими переменными состояния. В соответствии со структурной схемой процесса обучения (см. рис. 8.7) и описаниями состояния и динамики поведения взаимодействующих агентов AgTeach и AgStud мультиагентная модель образовательной системы Learning представляется в виде совокупности базисных компонентов и сенсорных связей между ними (рис. 8.10).
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 270 Глава 8. Мультиагентное моделирование систем в Simplex 3 Таблица 8.2 Временные и условные события образовательного процесса Событие Условие 1 Идентификация исходного со- Начало моделирования T0 стояния агента AgStud с начальной пропускной способностью  2 Начало лекционных занятий с представлением нормированного объема знаний InfTeach 3 Контроль текущего знаний агента J 4 Начало практических занятий T  Tpr (Tpr — время начала практических занятий) 5 Идентификация текущего со- Изменение параметров состояния: стояния агента AgStud, его EmReactiont  EmReactiont-1; cit  cit-1; eit  eit-1; pit  pit-1 пропускной способности  и эмоциональной реакции 6 Проведение практических занятий 7 Конец практических занятий T = Tlab (Tlab — время начала и контроль текущего уровня практических занятий) знаний 8 Начало лабораторных занятий 9 Проведение лабораторных за- Tlab  T < Tsr; Tsr — время начала нятий самостоятельной работы 10 Конец лабораторных занятий 11 Контроль параметров состоя- T = Tsr и изменение параметров ния агентов и уровня знаний J состояния: EmReactiont  EmReactiont-1 ; cit  cit-1 ; eit  eit-1 ; pit  pit-1 12 Начало фазы самостоятельной работы 13 Поступление заявки 'Help' о помощи к агенту AgTeach T  Tlec уровня Время окончания лекции T = Tpr Tlab > T  Tpr T  Tlab T = Tsr T  Tsr.; (I – J)  0 Уровень знаний неудовлетворительный
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 271 Окончание табл. 8.2 Событие Условие 14 Консультационные занятия с AgTeach свободен, агентом AgTeach ( I – J )  0 и T  Next T0 15 Начало фазы активного отды- Уровень знаний удовлетворительный ха 16 Начало подготовки к экзамену От агента AgTeach поступил сигнал Control о времени контроля 17 Начало экзамена Exam 18 Окончание экзамена и конечная аттестация T = Teks ; получение задания T = Tok Объединение базисных компонентов мультиагентной модели с МDL-описанием сенсорных связей осуществляется компонентом верхнего уровня Learn_High (листинг 8.8). HIGH LEVEL COMPONENT Learn_High DIMENSIONS AgStudN := ….. # число агентов AgStud SUBCOMPONENTS Area, ARRAY [AgStudN] AgStud, AgTeach, Connect, Statistic COMPONENT CONNECTIONS # обмен информацией между средой обучения Area и агентами # AgStud и AgTeach Area.TimeState [k]  (AgStud{ALL i}.Time[k], AgTeach.Time[k]); Area.V[k]  (AgStud{ALL i}.V[k], AgTeach.V[k]); Area. Vumk  (AgStud{ALL i}.Vumk, AgTeach.Vumk); Area.Control  (AgStud{ALL i}.Control, AgTeach.Control ); AgTeach.R{ALL i}  Area.R[i]; # информация от AgTeach на сенсорные входы Connect, # Area и Statistiс AgTeach.InfTeach  Connect.InfTh; AgTeach. Ball{ALL i}  (Connect. Ball[i], Area.Ball[i], Statistiс. Ball[i]); AgTeach. MassageTeach  Connect .InMassageTh; # информация от AgStud на сенсорные входы Connect Листинг 8.8. Компонент верхнего уровня Learn_High (начало)
TimeState[k] — время начала k$го вида занятий, k = 1..3, и состояние среды обучения; V[k] — характеристики среды об$ учения для k$го вида; Vumk — учебно$методический комплекс; Control — информация о времени и виде контроля; J[i] – информация о текущих знаниях i$го агента; InfTh — информация от преподавателя, MеssаgeStud, MessageTeach — мо$ бильные компоненты с сообщениями агентов AgStud и AgTeach; Ball [i] — оценка i$го студента; R[i], Rsr — индивидуальная и средняя эффективность обучения 272 Рис. 8.10. Мультиагентная имитационная модель Learning: Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Глава 8. Мультиагентное моделирование систем в Simplex 3
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 273 AgStud{ALL i}. MassageSt  Connect . InMassageSt; AgStud {ALL i}.J  Connect. J[i]; # уровень знаний J # от всех AgStud # информация от Connect на сенсорные входы AgTeach и # AgStud Connect. OutMassageSt { ALL i }  AgTeach.MassageStud; Connect.J{ALL i}  AgTeach.J[i]; Connect. OutMassageTh  AgStud{ALL i}. MassageTh; Connect.Ball{ALL i}  AgStud[i].Ball[i]; Connect.I  AgStud{ALL i}.I; # Сенсорные связи компонента Statistic AgStud {ALL i}.J  Statistiс.J[i]; Statistic.R{ALL i}  AgTeach. R[i]; Statistic.Rsr  AgTeach. Rsr; INITIALIZE AgStud {i OF 1.. AgStudN}.NumSt := i; # порядковый номер # обучающегося END OF Learn_High Листинг 8.8. Компонент верхнего уровня Learn_High (окончание) Компонент Area является базисным компонентом, описывающим параметры среды обучения, и имеет следующий вид (листинг 8.9). BASIC COMPONENT Area USE OF UNITS TIMEUNIT = [h] LOCAL DEFINITIONS # среда обучения # модельное время в часах h # локальные переменные состояния # модели # тип состояния среды обучения и AgStud VALUE SET MState: (‘Lection’,’Practic’,’Laboratory’, ‘Pause’) DECLARATION OF ELEMENTS CONSTANTS NextWeek (REAL[h]) := 9.0 [h] # время начала # следующего цикла обучения STATE VARIABLES DISCRETE ARRAY [3] Time (REAL[h]) := 0[h], # время # проведения трех видов занятий ARRAY [4] V(REAL) :=0, # характеристики среды # обучения Control (REAL[h]) := 0[h], # время проведения # контроля
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 274 Глава 8. Мультиагентное моделирование систем в Simplex 3 ................. SENSOR VARIABLES ARRAY [100] Ball (REAL) := 0, ARRAY [100] R := 0 # оценки успеваемости # AgStud в баллах # эффективность обучения # AgStud DYNAMIC BEHAVIOUR ON START DO # время начала лекций, практических и лабораторных работ Tlek, Tpr, Tlab # в цикле учебных занятий Time [1] := LectTime; Time [2] := PractTime; Time [3] := LabTime; ......................... # характеристики среды обучения V [1] := CompOnStud; # очное обучение V [2] := IntrnetOnStud; # дистанционное обучение ........................ END OF Area Листинг 8.9. Базисный компонент Area с параметрами среды обуче$ ния Из блока Area агентам AgStud и AgTeach по каналам сенсорных связей передается организационная информация о времени начала лекционных, практических и лабораторных занятий, Time[k]; k =1..3; характеристики среды обучения V [k] (оснащенность компьютерами, мультимедийными средствами, Интернетом и т. п.); план лекционных, практических и лабораторных занятий на семестр Vumk; информация о времени проведения и типе контроля Control. Программный код базисных компонентов агентов AgStud содержит описание процедур вычисления переменных состояния агента и динамики накопления знаний по формулам (8.25) и (8.31) в разных фазах обучения (см. табл. 8.2) при изменяющихся параметрах J0,  и R (листинг 8.10).
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 275 BASIC COMPONENT AgStud MOBILE SUBCOMPONENTS OF CLASS MessageStud, MessageTeach USE OF UNITS TIMEUNIT = [h] # модельное время в часах h DECLARATION OF SUBFUNCTIONS # функция f_Lyamb вычисления пропускной способности Lb # (8.27) от переменных состояния: # c1 − интеллект по IQ; c2 − внимание; c3 − # способность к восприятию; # c4 − уровень априорных знаний; e2 – эмоциональная # реакция; p1 − сознательность; # p 2 – трудолюбие (рис. 8.8) f_ Lyamb ( REAL: c1, REAL:c2, REAL:c3, REAL[bit]:c4, REAL:e2, INTEGER:p1, INTEGER:p2  REAL) # функция вычисления эмоциональной реакции (1.6) # агента AgStud от переменных # эмоционального состояния q1, … , q10 (скука, # сомнение, интерес и т.п.) и психотипа р (гл. 1) Q_EmReaction (REAL: q1, REAL:q2, REAL:q3, …, REAL:q10, INTEGER:p  REAL) DECLARATION OF ELEMENTS …………………………………… DYNAMIC BEHAVIOUR e 2^:= Q_EmReaction (q1, …,q10); # вычисление # эмоциональной реакции WHENEVER T>=TStud # начало цикла обучения DO # фаза лекционных занятий ON (T>=Tlek ) AND (T<=Tpr) DO Lb^:= f_Lyamb (с1, с2, с3, с4, e2, p1, p2); # начальная пропускная способность R^ := R0; # начальная эффективность обучения InfTh^:= Inf0; # объем лекционной информации DIFFERENTIAL EQUATIONS J’:= Lb*( InfTh *R*(1−J0 / InfTh)+ (J − J0)); # процесс накопления знаний (8.25) END IF Pause= TRUE DO # перерыв между лекцией и # практикой DIFFERENTIAL EQUATIONS J’:= −J*EXP(-Mju*T); END # процесс забывания # со скоростью μju (8.31) END END
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 276 Глава 8. Мультиагентное моделирование систем в Simplex 3 # фаза практических и лабораторных занятий ON (T>=Tpr) AND (T<=Tsr) DO R^:= J/ InfTh; J0^ := J0 + J; # новый уровень эффективности и априорных знаний Lb^:= f_Lyamb (с1, с2, с3, с4, e2, p1, p2); # новая пропускная способность DIFFERENTIAL EQUATIONS J’ := Lb*( InfTh *R*(1-J0 / InfTh)+(J-J0)); # накопление недостающих знаний (8.25) END IF Pause = TRUE DO # перерыв перед лабораторными # занятиями DIFFERENTIAL EQUATIONS J’:= -J*EXP(-Mju*T); END # процесс забывания # информации (8.31) END END # фазы самостоятельной работы и контроля знаний ON (T>=Tsr) AND (T<=Tcontr) DO …… END TStud^: = T+ dTSt # время следующего цикла END AgStud Листинг 8.10. MDL$описание цикла накопления знаний агентом AgStud В фазах лабораторных Tlab и самостоятельных Tsr работ происходят аналогичные события с обновлением переменных J0,  и R. Эмоциональная реакция e2 в приведенном фрагменте определяется с помощью собственной процедуры Q_EmReaction перед началом цикла и при известной статистике состояния может быть учтена после каждой фазы обучения. Динамика поведения агента AgStud в переговорном процессе между агентами в фазах самостоятельной работы и контроля знаний описывается последовательностью событий поступления и обработки сообщений MessageStud и MessageTeach (табл. 8.3).
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 277 Таблица 8.3 Типы сообщений MessageAgStud и MessageAgTeach Тип Содержание Отправитель Обучаемый AgStud Получатель 'Help' Помощь Преподаватель AgTeach 'NewKnow' Новые знания ’’ ’’ 'Nothing' Ничего не нужно (все в порядке) ’’ ’’ 'Control Inf' Контрольный вопрос AgTeach AgStud 'Answer' Ответ на вопрос AgStud AgTeach 'Ball' Оценка знаний и рекомендации AgTeach AgStud Мобильный компонент MеssаgеStud (листинг 8.11) передает информацию от агентов AgStudi агенту AgTeach об эмоциональной реакции (удовольствие, ожидание, обучение, стремление, безразличие, отрицание), уровне социальной потребности, а также сообщения с запросом консультативной помощи или дополнительной информации или просто о нормальном состоянии. MOBILE COMPONENT MеssаgеStud LOCAL DEFINITIONS VALUE SET # тип сообщения: «помощь», «дополнительная # информация», «ничего не нужно», # «ответ на вопрос». MessageType : ('help', 'newknow', 'nothing', 'answer') # эмоциональная реакция: «удовольствие», «ожидание», # « стремление», «безразличие», «отрицание». StateEmotions : ('pleasure', 'expectation', 'aspiration’, 'indifference', 'negation ') DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE NumSt (INTEGER) := 0, # индекс отправителя NumTh (INTEGER) := 0, # индекс получателя Type (MessageType) := ‘nothing’, # тип сообщения
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 278 Глава 8. Мультиагентное моделирование систем в Simplex 3 Em (StateEmotions) := 'expectation', # эмоциональная реакция SocNeed (REAL) := 0, # уровень социальной # потребности TSt (REAL) := 0, # время сообщения END OF MеssаgеStud Листинг 8.11. MDL$ описание мобильного компонента MеssаgеStud Дискретно-событийная структура переговорного процесса в базисном компоненте AgStud заключается в следующем. Если в сенсорный накопительный массив MessageTh агента AgStud (см. рис. 8.7) поступает сообщение определенного типа от AgTeach (см. табл. 8.3), AgStud в LOCATION ProcessSt (MessageStud) формирует свой запрос ('help', 'newknow', 'nothing') или соответствующий ответ 'answer' в мобильном компоненте MessageStud, направляемом в накопительный массив MessageSt для передачи AgTeach. MDL- описание этих событий имеет следующий вид. # Событие1. Формирование сообщения MessageStud WHENEVER (T>=Tsr) AND (NUMBER(MessageTh) > 0) AND (NUMBER(ProcessSt) = 0) AND (Ind = FALSE) # Ind - индикатор готовности MessageStud DO ProcessSt^: ADD 1 NEW MessageStud CHANGING NumSt^:= NumSt; # индекс AgStud NumTh^:= 1; # индекс AgTeach Type (MessageType) := 'help', # тип сообщения Em (StateEmotions) := 'expectation', # эмоциональная реакция TSt (REAL) := T, # время сообщения END Ind^: = TRUE; # MessageStud готово END # Событие 2. Отправление сообщения MessageStud WHENEVER (NUMBER (ProcessSt) > 0)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 279 AND (Ind = TRUE) DO MassegeSt ^:FROM ProcessSt GET MessageStud[1] Ind^: = FALSE; END Базисный компонент AgTeach описывает (листинг 8.12) дискретно-событийный диалог преподавателя с подготовкой сообщений (табл. 8.3) в виде мобильных компонентов MessageTeach (листинг 8.13) с атрибутами описания запрашиваемой информации, контрольными тестами и оценками знаний и адресной передачей их агентам AgStud по аналогии с переговорной моделью (рис.7.2, листинги 7.4, 7.5) в разделе 7.1. BASIC COMPONENT AgTeach MOBILE SUBCOMPONENTS OF CLASS MessageStud, MessageTeach USE OF UNITS TIMEUNIT = [h] # модельное время в часах h DECLARATION OF SUBFUNCTIONS # Функция вычисления эмоциональной реакции (1.6) # агента AgStud от переменных эмоционального # состояния q1, … , q10 (скука, сомнение, интерес и # т.п.) и психотипа р (гл. 1) Q_EmReaction (REAL: q1, REAL:q2, REAL:q3, …, REAL:q10, INTEGER:p  REAL) DECLARATION OF ELEMENTS …………………………………… DYNAMIC BEHAVIOUR e 2^:= Q_EmReaction (q1, … , q10); # вычисление # эмоциональной реакции WHENEVER T>=TStud DO # начало цикла обучения ON (T>=Tlek ) AND (T<Tpr) # фаза лекционных занятий DO InfTeach^ := Inf0; END # объем # представляемой информации от AgTeach ON (T>=Tpr) AND (T<Tsr) # фаза практических и # лабораторных занятий DO # формирование сообщений # MessageTeach WHENEVER (NUMBER(MessageStd) > 0) AND (NUMBER(ProcessTch) = 0) AND (Ind = FALSE) DO IF (MassegeStd :MessageStud [1].Type = 'help') OR (MassegeStd :MessageStud [1 ] Type ='newknow').
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 280 Глава 8. Мультиагентное моделирование систем в Simplex 3 DO ProcessTh^: ADD 1 NEW MessageTeach; CHANGING NumSt^:= MessageStd:MessageStud[j]. NumSt; NumTh^:= 1; Type (MessageType) := ' Control Inf '; # тип # сообщения – контрольный вопрос Ball := 0; InfTeach := 0.5*Inf0; # объем информации для # повторения от AgTeach Em (StateEmotions) := 'expectation'; # эмоциональная реакция TSt (REAL) := T; # время сообщения END Ind^: = TRUE; # индикатор готовности MessageTeach END ELSIF (MassegeStd :MessageStud [1].Type = 'answer') DO ProcessTh^: ADD 1 NEW MessageTeach; CHANGING NumSt^:= MessageStd:MessageStud[j]. NumSt; NumTh^:= 1; Type (MessageType) := ' Ball '; # тип сообщения – # оценка знаний Ball := 4; # как пример InfTeach := 0.5*Inf0; # объем информации для # повторения от AgTeach Em (StateEmotions) := 'expectation'; # эмоциональная реакция TSt (REAL) := T; # время сообщения END Ind^: = TRUE; # индикатор готовности MessageTeach END END # отправление сообщения MessageTeach WHENEVER (NUMBER (ProcessSt) > 0) AND (Ind = TRUE) DO MassegeTch ^: FROM ProcessTh GET MessageTeach[1]; Ind^: = FALSE; END END # Фазы самостоятельной работы и контроля знаний # (по структуре диалога аналогичны предыдущей фазе) ON (T>=Tsr) AND (T<=Tcontr) DO ..................... END TStud^: = T+ dTSt; # время следующего цикла END AgTeach Листинг 8.12. MDL$описание компонента AgTeach
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 281 Мобильный компонент MеssаgеTeach (листинг 8.13) представляет сообщения преподавателя агентам AgStud с дополнительной информацией и контрольными вопросами, оценкой знаний и персональными рекомендациями (необходимость дополнительных занятий, промежуточный контроль и т. п.), формируемыми собственными функциями базисного компонента AgTeach в соответствии с сообщениями и запросами AgStud. MOBILE COMPONENT MеssаgеTeach LOCAL DEFINITIONS VALUE SET # тип сообщения: «новая информация», «дополнительная # информация», «контрольный вопрос», «оценка». MessageType : ('newInf', 'labInf', 'control_Inf', 'ball', 'nothing') # эмоциональная реакция: «удовлетворенность», # «беспокойство», «огорчение», «ожидание». StateEmotions : ('contendet', 'anxiety', 'grief’, 'expectation') DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE NumSt (INTEGER) := 0, # индекс получателя Type (MessageType) := 'nothing', # тип сообщения Em (StateEmotions) := 'expectation', # эмоциональная реакция TSt (REAL) := 0, # время сообщения END OF MеssаgеTeach Листинг 8.13. MDL$описание мобильного компонента MеssаgеTeach Мобильные компоненты MessageAgStud, поступающие в компонент Conneсt от агентов AgStud в сенсорный массив накопителей InMеssageSt, обрабатываются во внутреннем сервере ServerSt с определением типа сообщения и адресов (индексов) отправителя AgStud и получателя AgTeach (листинг 8.14). После обработки и сортировки по виду запроса сообщения направляются в выходной накопитель OutMessageSt и далее на сенсорный вход агента-преподавателя AgTeach.MessageStud.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 282 Глава 8. Мультиагентное моделирование систем в Simplex 3 BASIC COMPONENT Connect MOBILE SUBCOMPONENTS OF CLASS MessageStud, MessageTeach USE OF UNITS TIMEUNIT = [h] LOCAL DEFINITIONS # Тип сообщения: «помощь», «дополнительная информация», # «ничего не нужно», «контрольный вопрос», «ответ на # вопрос», «оценка». VALUE SET MessageType : (‘help’, ‘new_know’, ‘nothing’, ‘control_Inf ‘,’answer’,’ball’) DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE ARRAY [AgStudN] Ballv (REAL), # выходной массив # оценок знаний AgStud в баллах CONTINUOUS ARRAY [AgStudN] Jv (REAL), # выходной массив объемов # знаний агента AgStud SENSOR VARIABLES InfTh (REAL), # объем представляемой информации от # AgTeach ARRAY [AgStudN] J (REAL), # массивы объемов знаний # AgStud ARRAY [AgStudN] Ball (REAL) # массив оценок знаний # агентов AgStud LOCATIONS # массивы обрабатываемых сообщений AgStud и AgTeach ServerSt (MessageStud) := 0 MessageStud, ServerTh (MessageTeach) := 0 MessageTeach # выходной массив сообщений от AgStud ARRAY [AgStudN] OutMessageSt (MessageStud) := 0 MessageStud # выходной накопитель сообщений от AgTeach OutMessageTh (MessageTeach) := 0 MessageTeach, SENSOR LOCATION # входной массив сообщений агентов АgStud ARRAY [AgStudN] InMessageSt (MessageStud) := 0 MessageStud, # входой накопитель сообщений агента AgТeach InMessageTh (MessageTeach) := 0 MessageTeach, DYNAMIC BEHAVIOUR # формирование выходных массивов объемов Jv и оценок # Ballv знаний АgStud
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 283 Jv {i OF 1.. AgStudN } := J[i]; Ballv {i OF 1.. AgStudN } := Ball [i]; # поступление сообщений агентов AgStud в ServerSt FOR j FROM 1 TO m REPEAT WHENEVER (NUMBER(InMessageSt [j]) > 0) DO ServerSt ^:FROM InMessageSt [j] GET MessageStud {ALL}; END END_LOOP # передача сообщения AgStud в массив ARRAY [AgStudN] OutMessageSt(MessageStud) WHENEVER (NUMBER (ServerSt) > 0) DO # направление сообщения к адресату в зависимости от вида запроса IF ServerSt:MessageStud [1].Type = 'help' DO OutMessageSt {ALL i}^ : FROM ServerSt GET MessageStud {ALL j | ServerSt: MessageStud[j].Type = 'help' AND ServerSt:MessageStud[j]. NumSt = i}; END ELSIF ServerSt:MessageStud [1].Type = 'newknow' DO ServerSt :TO OutMessageSt [ServerSt:MessageStud [1]. NumSt] SEND MessageStud [1]; END ELSIF ServerSt:MessageStud [1].Type = 'nothing' DO OutMessageSt {ALL i}^ : FROM ServerSt GET MessageStud {ALL j | ServerSt: MessageStud[j].Type = 'nothing' AND ServerSt: MessageStud[j]. NumSt = i}; END ………………………………………………………………………………… # передача сообщения AgТeach в накопительный массив # ServerTh WHENEVER NUMBER(InMessageTh ) > 0 DO ServerTh^ : FROM InMessageTh GET MessageTeach[1]; END # передача сообщения AgТeach в массив OutMessageTh # WHENEVER NUMBER (SerwerTh) > 0 DO OutMessageTh[ServerTh: MessageTeach [1]. NumSt]^:FROM ServerTh GET MessageTeach[1]; END END END OF Connect Листинг 8.14. Описание компонента Conneсt в SimplexМDL В свою очередь, мобильные компоненты MessageAgTeach, поступающие на сенсорный вход InMessageTh ком-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 284 Глава 8. Мультиагентное моделирование систем в Simplex 3 понента Conneсt, поочередно направляются в промежуточный сервер ServerTh и далее через выходной накопитель OutMessageTh на сенсорные входы AgStud по указанному адресу ServerTh: MessageTeach [1].NumSt. Потоки учебной информации InfTh от агента AgTeach, уровень усвоения знаний J[i] и оценки Ball[i], выставляемые преподавателем i-му студенту, через компонент Conneсt передаются путем прямой перезаписи сенсорных переменных и массивов в выходные переменные состояния InfTh и массивы Jv[i] и Ballv[i]. Таким же образом агенту AgTeach от агентов AgStud передается информация о накопленных знаниях J[i] i-го агента. Компонент Statistic служит для расчета статистических данных, характеризующих модель обучения и накопления знаний. Данный компонент связан с агентами AgStud и AgTeach и наряду с представлением статистических данных служит для расчета общего функционала успеваемости группы Rср в соответствии с вышеописанными математическими моделями. Описание компонента Statistic содержит функции обработки данных по индивидуальным и групповым показателям эффективности обучения и в сокращенной версии представлено в листинге 8.15. BASIC COMPONENT Statistic USE OF UNITS TIMEUNIT = [h] # время моделирования в часах LOCAL DEFINITIONS DIMENSIONS AgStudN := 40, # число агентов AgStud DECLARATION OF SUBFUNCTIONS # Функция расчета средней эффективности обучения Rsr JStud (ARRAY [n] REAL[Kb]: J --> REAL[Kb]) # Функция определения максимального уровня знаний среди # всех агентов IdentJMax (ARRAY [n] REAL[Kb]: J --> REAL[Kb) FUNCTION JStud (ARRAY [n] REAL[Kb]: J --> REAL[Kb]) DECLARE SummeJ (REAL[Bit]) := 0 [Kb] BEGIN
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 285 FOR i FROM 1 TO AgStud REPEAT SummeJ:= SummeJ + J[i]; END_LOOP RETURN (SummeJ / AgStud); END_FUNC FUNCTION IdentJMax (ARRAY [n] REAL[Bit]: J --> REAL[Kb]) DECLARE JMax (REAL[Bit]) := 0 [Kb] BEGIN FOR i FROM 1 TO QuaStud REPEAT IF J[i] > JMax DO JMax := J[i]; END END_LOOP RETURN (JMax); END_FUNC # другие возможные функции вычисления статистических # характеристик образовательного процесса ……………………………………… STATE VARIABLES ARRAY [10] Top10 (INTEGER) := 0, # массив десяти # лучших AgStud DEPENDENT VARIABLES DISCRETE QStudInGruppe (INTEGER), # количество агентов в # группе QGrupp (INTEGER) := 0, # число агентов в группе # в текущий момент JMax (REAL[Kbeat]), # максимальное уровень # знаний среди AgStud CONTINUOUS Average Jsr (REAL[]), # средний уровень знаний # среди агентов AverageSozCompetence (REAL), # уровень социальной # потребности AverageTimeOne (REAL[h]) := 0 [h], # среднее время # самостоятельной работы AverageTimeInGruppe (REAL[h]) := 0 [h], # среднее # время посещения занятий SENSOR VARIABLES DISCRETE ARRAY [QGrupp] GrupStudAktiv (LOGICAL), # массив # идентификаторов агентов в группе ARRAY [QuaStud] GruppenID (INTEGER), Protokoll (LOGICAL) CONTINUOUS ARRAY [QGrupp] RelSoсG (REAL), # социальная # активность агентов в группе ARRAY [QuaStud] J (REAL[Kb]), # знания, # полученные i-м студентом
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 286 Глава 8. Мультиагентное моделирование систем в Simplex 3 ARRAY [QuaStud] SozAkt (REAL), # социальная # активность i-го агента ……………………………………… DYNAMIC BEHAVIOUR AverageJ := JStud (ARRAY J); # средний уровень # знаний среди агентов JMax := IdentJMax (ARRAY J); # максимальный # уровень знаний QGrupp := IdentQuantityGrupp (ARRAY GrupStudAktiv); # число агентов в группе ……………………………………… ON T>=TEnd DO R{ALL i}^:=J[i]/ Inf Teach # массив показателей # эффективности обучения AgStud FOR i FROM 1 TO QGrupp REPEAT Rsr:= Rsr + R[i]; END_LOOP Rsr := Rsr/ QGrupp # средняя эффективность # обучения END END OF Statistic Листинг 8.15. Описание компонента Statistic Полное описание программного комплекса одной из версий мультиагентной имитационной модели образовательной системы Learning с базисными и мобильными компонентами, компонентами верхнего уровня и внешними процедурами на объектно-ориентированных языках описания моделей Simplex-MDL и Simplex-EDL представлено в диссертационной работе Е. А. Назойкина «Мультиагентное имитационное моделирование образовательного процесса накопления знаний». – М.: МГУПБ, 2011. Для заданных характеристик состояния агентов (табл. 8.4) результаты тестового моделирования накопления знаний в процентах к требуемому объему информации (100%) в фазах активного и самостоятельного обучения показаны на рис. 8.11– 8.13. На рисунке 8.11 можно видеть динамику накопления знаний в интервале от 0 до 168 ч (недельный цикл) хорошо и отлично успевающими агентами с высокой способностью восприятия в активных фазах обучения без эффекта забывания.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 287 Таблица 8.4 Экспертные оценки параметров состояния агента по шкалам желательности от 0 до 1 Параметр состояния AgStud 1 AgStud 2 IQ 0,91 0,33 Внимание 0,73 0,73 Способность к восприятию 0,76 0,68 Ответственность 0,31 0,90 Трудолюбие 0,28 0,84 Утомляемость 0,75 0,29 Память 0,52 0,33 Рис. 8.11. Динамика усвоения информации: отлично (AgStud 1) и хорошо (AgStud 2) успевающими агентами AgStud в течение недели (168 ч)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 288 Глава 8. Мультиагентное моделирование систем в Simplex 3 Наиболее успешное накопление знаний имеет агент AgStud 1 с высокими когнитивными характеристиками (IQ = 0,91) и способностью восприятия 0,76. Агент AgStud 2 по сравнению с AgStud 1 имеет более слабые когнитивные характеристики (IQ = 0,33) и отстает от него в усвоении представляемой информации (0,68), но за счет высоких личностных характеристик (трудолюбие — 0,84 и ответственность — 0,9) он приближается к требуемому уровню знаний (100%). При большой склонности к забыванию и хорошей способности восприятия накопление знаний агентами AgStud 1 (красная линия) и AgStud 2 (синяя линия) в недельном цикле носит импульсивный характер (рис. 8.12, см. цв. вклейку) от занятия к занятию с поддержкой минимального уровня за счет самостоятельной работы. На графике видно, что, несмотря на способности восприятия, агенты забывают новые знания, поддерживая их Рис 8.12. Динамика восприятия и забывания информации в недель$ ном цикле
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.2. Моделирование системы накопления знаний 289 за счет самостоятельного обучения на минимальном уровне до очередной лекции. В укрупненном масштабе на рис. 8.13 видно, как на четвертые сутки недельного цикла накопления знаний в течение одного дня (24 ч) агент AgStud 2 после небольшого перерыва, в силу ответственности (0,9) и трудолюбия (0,84), за счет самостоятельной работы достигает большего уровня понимания, чем AgStud 1. Однако далее, при заданных оценках памяти (табл. 8.4) агенты успокаиваются до следующего занятия. По результатам моделирования построены графики (рис. 8.14) изменения эффективности накопления знаний Ri (8.28) агентов четырех кластеров (см. рис. 8.8) с учетом их когнитивного Co и эмоционального Em состояний в фазах активной (0 – 4,5 ч) и самостоятельной (4,5 – 7,5 ч) работы. Мультиагентная имитационная модель образовательной системы вуза может служить средством поддержки принятия решений в объективной оценке способностей к Рис 8.13. Динамика восприятия и забывания знаний в разрезе одно$ го дня
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 290 Глава 8. Мультиагентное моделирование систем в Simplex 3 Рис. 8.14. Изменения эффективности накопления знаний агентами в дневном цикле обучения: 0 – 4,5 ч — активная фаза лекционных, прак$ тических и лабораторных занятий; 4,5 – 7,5 ч — фаза самообучения накоплению и ожидаемого уровня знаний обучаемых с учетом их персональных характеристик и индивидуализации графиков аудиторной и самостоятельной работы по результатам контроля знаний. Алгоритм разработки индивидуального плана обучаемого для интенсификации накопления знаний описывается в [15] и реализуется в виде собственной функции принятия решений и поведения агента AgTeach и сводится к следующим этапам. 1. Идентификация текущего состояния агента «студент» и уровня усвоения знаний в бальной оценке после очередной фазы активного обучения. 2. Определение необходимого уровня знаний для повышения текущей успеваемости агента на один балл (Imin) , исходя из характеристик его состояния и пропускной способности . 3. Определение необходимого времени самостоятельnew ной работы Tsr агента для усвоения требуемого минимума знаний Imin и, если оно меньше планового времени самостоnew ятельной работы Tsr  Tsr , коррекция индивидуального плана для повышения успеваемости на один балл; в про-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 291 тивном случае, при Tsr  Tsr , повторное индивидуальное обучение. 4. Очередной контроль состояния агента «студент» и повторение цикла до достижения установленного уровня знаний или окончания процесса. Описанная модель мультиагентной имитации образовательного процесса открыта для дальнейшего углубления и детализации и может быть использована для оценки и прогнозирования эффективности различных форм обучения и разрешения конфликтов в образовательной системе. new 8.3. Мультиагентное моделирование живых систем Живой системой является любой биологический объект растительного и животного происхождения, рассматриваемый как множество активных, функционально взаимосвязанных биологических компонентов и подсистем, обеспечивающих определенный жизненный цикл. Это живые организмы различных видов, микробиологические среды, социальные группы биообъектов (муравейник, животноводческий комплекс, трофическая система биологического равновесия в природе и т. п.). Развитие трансгенных технологий и возрастающие объемы производства продуктов питания из генно-модифицированного биосырья животного и растительного происхождения обусловливают необходимость глубоких исследований влияния генно-модифицированных пищевых компонентов на состояние и развитие живого организма, в том числе человека. В связи с этим особую значимость приобретает имитационное моделирование жизнедеятельности базового элемента любого живого организма — биологической клетки с целью идентификации и прогнозирования ее состояния на разных уровнях клеточной структуры и реакции на изменения естественных генетических факторов и внешней среды. Биологическая система клетки (рис. 8.15) представляет собой защитную оболочку — мембрану (Мembran), заполненную цитоплазмой. В цитоплазме размещены вза-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 292 Глава 8. Мультиагентное моделирование систем в Simplex 3 имосвязанные органоиды: лизосома (Lysosome), аппарат Гольджи (appGold), митохондрия (Mitohondrion), ядро (Jadrо), эндоплазматическая сеть (ЭПР, Epr_smoth, Epr_ rough) и др., функциональное состояние которых меняется в зависимости от состояния других органоидов и внешней среды жизнедеятельности. Lysosome расщепляет пищевые компоненты (жиры и углеводы), поступающие через мембрану из внешней среды, на более простые химические ингредиенты (жирные кислоты, глицерин и глюкозу). Mitochondrion — это окруженные мембраной органоиды клетки, главная функция которых заключается в превращении потенциальной энергии молекул пищи в АТФ (аденозинтрифосфат). App_Gold — аппарат Гольджи, накапливает некоторые продукты синтеза, в первую очередь ферменты и гормоны. В определенные периоды жизнедеятельности клетки эти вещества могут быть выведены из клетки через эндоплазматическую сеть и вовлечены в обменные процессы. Jadro — содержит геном, контролирующий процессы жизнедеятельности клетки; включает в себя хромосомы, со- Рис. 8.15. Клетка живого организма
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 293 стоящие из ДНК, РНК и белковых молекул, и синтезирует матричную и транспортную РНК. Epr_smoth — гладкая эндоплазматическая сеть, осуществляющая синтез жиров и углеводов и внутриклеточный обмен. Epr_rough — шероховатая эндоплазматическая сеть, где происходит синтез белков; включает в себя матричную и транспортную РНК, направляемую в рибосому; соединяет транспортную РНК (tRNK) с соответствующей аминокислотой, необходимой для синтеза белка. Каждый из органоидов клетки выполняет свои особые функции, определяющие в совокупности жизнедеятельность клетки в целом. 8.3.1. Транспортная мультиагентная модель клетки В упрощенном варианте жизненный цикл биологической клетки описывается взаимодействием агентов-органоидов посредством транспорта веществ, потребляемых и синтезируемых клеткой внутри клеточной мембраны. Исходя из этого мультиагентная транспортная модель клетки имитирует изменение состояния и взаимосвязи агентов-органоидов с помощью мобильных компонентов в виде транспортных контейнеров (пузырьков) с накоплением и переносом квантов веществ [16] в жизненном цикле клетки. В качестве примера на рис. 8.16 приведена агентно-ориентированная модель транспортного обмена веществ между базисными компонентами агентов-органоидов «среда», «мембрана», «цитоплазма»,«аппарат Гольджи», «митохондрия», «ядро». Агент Ag1 «sreda» задает определенное количество энергии, белков, жиров и углеводов, а также колебания температуры и содержания органических веществ, направляемое в виде квантов белков, жиров, углеводов и энергии в агент-мембрану, имитируя поглощение веществ мембраной клетки из среды и соответствующую их убыль в среде. Агент Ag2 «membrane» обеспечивает межклеточное взаимодействие, защиту и сохранение формы клетки, избирательное перемещение веществ из клетки в клетку, а так-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 294 Глава 8. Мультиагентное моделирование систем в Simplex 3 же поглощение и накопление квантов веществ и энергии из окружающей среды (агент Ag1) и направление их в цитоплазму. Агент Ag3 «cytoplazm» — среда существования органелл, биомолекул ДНК и биохимических процессов с пересылкой транспортных пузырьков от одного агента клетки к другому и выводом отходов жизнедеятельности в окружающую среду. Для этого, когда общее количество органических веществ достигает определенного значения, формируются транспортные контейнеры в виде мобильных компонентов transcont, содержащих определенное количество органических веществ, для их дальнейшей транспортировки в аппарат Гольджи. Агент Ag4 «App_Gold» собирает в накопителях и очищает кванты органических веществ, энергии и отходов, поступающих из цитоплазмы. При достижении минимального их количества посылает «пузырьки» веществ и энергии через цитоплазму в различные органоиды клетки (в мембрану, митохондрию, ядро) для клеточного синтеза, выведения веществ из клетки и образования лизосом и мембраны. Агент Ag5 «mitoxondrion» представляет органеллы клетки, обеспечивающие синтез носителя энергии АТФ и дыхание клетки (поглощение кислорода и выделение углекислого газа); описывает процесс выработки полезной энергии из питательных веществ, передаваемых контейнерами от цитоплазмы (агент Ag3); формирует контейнеры-пузырьки с квантами энергии и вредных отходов для отправки их через цитоплазму в другие агенты клетки и внешнюю среду. Агент Ag6 «Jadro» воспроизводит в интерфазе накопление энергии, белков, жиров и углеводов в количестве, достаточном для начала деления клетки; имитирует фазы удвоения молекул ДНК (профаза), начала расслоения клетки (метафаза), расхождения хромосом к полюсам (анафаза) и окончательное деление (телофаза); является носителем генетической информации организма (хромосом), содержащим молекулы ДНК, и регулятором синтеза белков; обеспечивает образование рибосом (ядрышка) и синтез молекул РНК на матрице ДНК.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 295 Рис. 8.16. Транспортная мультиагентная модель клетки: temp, suns, belok, fats, ugl, org, O2, H2O — (соответственно температура, энергия, количество белков, жиров, углеводов, органических веществ, кислорода и воды, передаваемое из среды _sr через мембрану _m в ци$ топлазму) — переменные состояния среды; to_Gold, to_mit, to_jadro — ко$ личество веществ substance из цитоплазмы в аппарат Гольджи, митохон$ дрию и ядро; from_mit_to_Gold — поступление веществ в цитоплазму из митохондрии для аппарата Гольджи; from_Gold_to_sreda, from_Gold_to_ mit, from_Gold_to_jadro — поступление веществ в цитоплазму из аппара$ та Гольджи для передачи в среду, митохондрию и ядро, соответственно; from_jadro_to_Gold — вещества, поступающие из ядра в цитоплазму для передачи в аппарат Гольджи; Gold_to_sreda, Gold_to_cyt, Gold_to_jadro — количества веществ, выводимых из аппарата Гольджи в среду, цитоплазму и ядро; Live — сигнал жизнеспособности; Dust_Cell — вывод вредных ве$ ществ из цитоплазмы в среду В листинге 8.16 приведено MDL-описание структуры сенсорных связей «COMPONENT CONNECTIONS» в компоненте верхнего уровня агента HIGH LEVEL Cell в соответствии с блок-схемой модели (см. рис. 8.16).
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 296 Глава 8. Мультиагентное моделирование систем в Simplex 3 HIGH LEVEL COMPONENT Cell SUBCOMPONENTS sreda, # среда membrane, # мембрана cytoplasm, # цитоплазма Gold, # аппарат Гольджи mitochondrion, # митохондрия jadro # ядро COMPONENT CONNECTIONS # Обмен веществ между средой и мембраной # из среды в мембрану Sreda.suns  membrane. sun_sr; # поступление энергии Sreda.temp  membrane.temp_sr; # температурный обмен Sreda.org  membrane.org_sr; # органические вещества Sreda.belok  membrane.belok_sr; # белки Sreda.fats  membrane.fats_sr; # жиры Sreda.ugl  membrane.ugl_sr; # углеводы Sreda. O2  membrane. O2_sr; # кислород Sreda. H2O  membrane. H2O_sr; # вода # из мембраны в среду membrane.belok  Sreda.bel_m; # количество белка, membrane.fats  Sreda.fats_m; # количество жира membrane.ugl  Sreda.ugl_m; # количество углеводов membrane.org  Sreda.org_m; # органические вещества # Обмен между мембраной и цитоплазмой # из мембраны в цитоплазму membrane.energy  cytoplasm.energy_m; # количество # энергии membrane.temp  cytoplasm.temp_m; # температура membrane.org  cytoplasm.org_m; # органические # вещества membrane.belok  cytoplasm.belok_m; # количество белка membrane.fats  cytoplasm.fats_m; # количество жиров membrane.ugl  cytoplasm.ugl_m; # углеводы membrane. O2_m  cytoplasm. O2_m; # кислород membrane. H2O_m  cytoplasm. H2O_m; # вода # взаимосвязи органоидов с аппаратом Гольджи Gold. Life  membrane. Life; # сигнал жизни в мембрану Gold. Life  cytoplasm. Life; # сигнал жизни в цитоплазму Gold. to sreda  cytoplasm. substanc_from_ Gold _to_sreda; Gold. to_mit  cytoplasm. substanc_from_ Gold _ to_mit; cytoplasm. substanc_ to_Gold  Gold. substanc_from_cit; # вывод вредных веществ из цитоплазмы в среду cytoplasm.Dust  Sreda. Dust_Cell;
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 297 # обмен веществ между митохондрией и цитоплазмой mitochondrion. substanc_to_cyt  cytoplasm. substanc_f rom_mit_zu_ Gold; cytoplasm. from_cyt_ to_mit  mitochondrion.substanc_ from_cyt; # обмен веществ с ядром Gold. to_jadro  cytoplasm. from_ Gold_ to_jadro; cytoplasm. to_jadro  jadro. substanc_from_cyt; jadro. to_cyt  cytoplasm. from_jadro_ to_Gold; END OF High Cell Листинг 8.16. Компонент верхнего уровня мультиагентной транс$ портной модели Cell Моделируемый жизненный цикл биологической клетки заключается в следующем. Первоначально с помощью генераторов случайных чисел или для конкретной среды (Ag1«sreda») задается исходное количество энергии, белков, жиров и углеводов с возможными колебаниями органических веществ и температуры. Затем определенное количество веществ и энергии поступает из среды в компонент (Ag2 «membrane») и далее в цитоплазму (Ag3 «cytoplasm»). Температура влияет на поглощение белков, жиров и углеводов так, что при незначительном ее повышении количество поглощаемых веществ увеличивается и наоборот. Цитоплазма играет роль связующего звена при пересылке транспортных пузырьков из одного компонента клетки в другой и выводе отходов жизнедеятельности. При достижении порогового содержания органических веществ WHENEVER (org_c > = 275.5) формируются транспортные пузырьки (контейнеры), содержащие определенное количество всех вышеуказанных веществ в текущий момент для дальнейшей транспортировки в аппарат Гольджи. В аппарате Гольджи (Ag4 «App_Gold») контейнеры, поступившие из цитоплазмы, пополняют накопители веществ, энергии и отходов клетки и очищаются. При определенном уровне накопления веществ контейнеры возвращаются в цитоплазму и далее направляются в ядро и митохондрию.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 298 Глава 8. Мультиагентное моделирование систем в Simplex 3 При этом содержимое пузырьков, переправленных на обработку в митохондрию и ядро, вычитается из накопителей аппарата Гольджи, а выработанное в этих органеллах количество веществ добавляется в накопители. Накапливающиеся в клетке вредные вещества (отходы) при превышении установленных лимитов выводятся во внешнюю среду через цитоплазму. При достижении критического содержания вредных веществ клетка погибает. В ядре (Ag6 «Jadro») содержимое контейнеров поступает в накопители до накопления количества всех веществ и энергии, необходимого для начала цикла и периодов деления. В каждой фазе деления происходит определенный расход веществ, и для перехода к очередной стадии их количество должно периодически пополняться. Общий алгоритм моделирования жизненного цикла клетки включает в себя подготовку клетки к делению, или интерфазу, состоящую из трех периодов (рис. 8.17): 1) период G1 (постмитотический) — в клетке происходит биологический синтез белков, и клетка готовится к следующему периоду; 2) период S (синтетический) — клетка продолжает синтезировать РНК и белки, осуществляется синтез ДНК и к концу S-периода вся ядерная ДНК удваивается; 3) период G2 — накопление энергии для предстоящего деления клетки и выброс отходов. При достижении определенного содержания функциональных белков и энергии наступает этап митоза, на котором после четырех фаз деления (см. рис. 8.17) клетка отдает половину накопленных веществ и энергии дочерней клетке. Формализованный алгоритм жизненного цикла описывается в разделе динамики поведения агента Ag6 «Jadro», описание которого на объектно-ориентированном языке моделирования Simplex-MDL в базисном компоненте Jadro с мобильным компонентом Transcont приведено в листингах 8.17. – 8.18.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 299 Рис. 8.17. Основной жизненный цикл клетки MOBILE COMPONENT Transcont DECLARATION OF ELEMENTS STATE VARIABLES DISCRETE Energy (REAL) :=0, # O2 (REAL) :=0, # H2O (REAL) :=0 # Belok (REAL) :=0, # # транспортный контейнер количество содержание содержание содержание энергии кислорода воды белков
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 300 Глава 8. Мультиагентное моделирование систем в Simplex 3 Fats (REAL) :=0, Uglevod (REAL) :=0, Dust (REAL) :=0, # содержание жиров # содержание углеводов # содержание вредных веществ END OF Transcont Листинг 8.17. MDL$ описание мобильного компонента Transcont BASIC COMPONENT Jadro MOBILE SUBCOMPONENT OF CLASS Transcont USE OF UNITS TIMEUNIT = [m] # минута DECLARATION OF ELEMENTS CONSTANTS # Минимальное количество квантов энергии и веществ для # начала деления клетки (тест) min_ Energy (REAL) := …, # 1300 квантов min_ Belok (REAL) := …, # 750 min_ Fats (REAL) := …, # 750 min_ Uglevod (REAL) := … # 750 STATE VARIABLES DISCRETE DNK (REAL):= 50, tNextDiv (REAL[m]):=0[m], Energy (REAL) := 0, # Belok (REAL) := 0, # Fats (REAL) := 0, # Uglevod (REAL):= 0, # Prophase (LOGICAL):= TRUE, Metaphase (LOGICAL):= FALSE, Anaphase (LOGICAL):= FALSE, Telophase (LOGICAL):= FALSE, DELEN (LOGICAL):= FALSE количество количество количество количество энергии белков жиров углеводов LOCATIONS substance_to_cyt (Transcont):=0 Transcont SENSOR LOCATIONS substance_from_cyt (Transcont):=0 Transcont DYNAMIC BEHAVIOUR WHENEVER (NUMBER(Substance_from_cyt)> 0) DO Substance_to_cyt ^: FROM substance_from_cyt GET Transcont [1] CHANGING
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 301 Belok^:= 0; Fats^:= 0; Uglevod^:= 0; Energy^:= 0; END Energy^:= Energy + substance_from_cyt: Transcont [1].Energy; Belok^:= Belok + substance_from_cyt: Transcont [1].Belok; Fats^:= Fats + substance_from_cyt: Transcont [1].Fats; Uglevod^:= Uglevod+ ubstance_from_cyt: Transcont [1].Uglevod; END WHENEVER (Belok > min_Belok) AND (Fats > min_Fats) AND (Uglevod > min_Uglevod) AND (Energy > min_Energy) DO DELEN^:=TRUE; IF (Prophase) AND (Metaphase =FALSE) AND (Anaphase =FALSE) AND Telophase = FALSE) DO DISPLAY("профаза – удвоение ДНК T=%2.2f\n",T); DNK^:=2*DNK; tNextDiv^:= T+1[m]; Prophase^:=FALSE; Metaphase^:=TRUE; Energy^:= Energy - Energy/10; Belok^:= Belok - Belok/10; Fats^:= Fats - Fats/10; Uglevod^:= Uglevod - Uglevod/10; tNextDiv^:= T+1[m]; END ELSIF (Metaphase) AND (T >= tNextDiv) DO DISPLAY("метафаза – начало расслоения T=%2.2f\n",T); Metaphase^:=FALSE; Anaphase^:=TRUE; Energy^:= Energy - Energy/7; Belok^:= Belok - Belok/7; Fats^:= Fats –Fats/7; Uglevod^:= Uglevod - Uglevod/7; END ELSIF (Anaphase) AND (T>= tNextDiv) DO DISPLAY("анафаза – расхождение хромосом к полюсам T=%2.2f\n",T); tNextDiv^:= T+1[m]; Anaphase^:=FALSE; Telophase^:=TRUE; Energy^:= Energy - Energy/20; Belok^:= Belok - Belok/20;
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 302 Глава 8. Мультиагентное моделирование систем в Simplex 3 Fats^:= Fats - Fats/20; Uglevod^:= Uglevod - Uglevod/20; END ELSIF (Telophase) AND (T>=tNextDiv) DO DISPLAY("телофаза – окончательное деление T=%2.2f\ n",T); tNextDiv^:= T+1[m]; Telophase^:= FALSE; Prophase^:= TRUE; Energy^:= 0.2* Energy; Belok^:= 0.2* Belok; Fats^:= 0.2* Fats; Uglevod^:= 0.2* Uglevod; DNK^:= DNK/2; END END END OF Jadro Листинг 8.18. MDL$описание базисного компонента Jadro с мобиль$ ным компонентом Transcont На рисунках 8.18–8.22 для базисных компонентов sreda, Ap_Gold и Jadro показаны результаты тестовой версии мультиагентного моделирования жизненного цикла клетки (см. рис. 8.17) для заданного изменения состояния среды (рис. 8.18, см. цв. вклейку). На следующих графиках видно накопление энергии и веществ в аппарате Гольджи (рис. 8.19, см. цв. вклейку) и ядре клетки (рис. 8.20, см. цв. вклейку) в период интерфазы до минимального количества квантов, необходимого для начала деления. После этого уровень энергии и веществ резко падает и начинается новый цикл накопления в разделенной клетке. На рисунке 8.21 (см. цв. вклейку) показаны фазы деления клетки: профаза — удвоение ДНК, метафаза — начало расслоения, анафаза — расхождение хромосом и телофаза — окончательное деление. Общее количество вредных веществ «отходов» накапливается в вакуоле клетки (рис. 8.22) до определенного максимума и последующего отмирания клетки. Резкие скачки содержания вредных веществ в определенные промежутки времени обусловлены их выбросом во внешнюю среду и расщеплением веществ в клетке.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 303 Рис. 8.18. Изменение энергии и содержания веществ в окружающей среде Рис. 8.19. Накопление энергии и веществ (белки, жиры, углеводы) в аппарате Гольджи
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 304 Глава 8. Мультиагентное моделирование систем в Simplex 3 Рис. 8.20. Накопление энергии и веществ: жиров, белков, углеводов в ядре клетки в процессе ее деления Рис. 8.21. Фазы деления клетки: профаза, метафаза, анафаза и телофаза
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 305 Рис. 8.22. Накопление содержания вредных веществ в клетке Представленные результаты мультиагентного моделирования с простым поведением агентов воспроизводят транспортировку и накопление веществ и энергии до определенных пороговых значений в различных фазах жизненного цикла клетки. Более полная и адекватная имитация жизнедеятельности клеточного организма связана с построением иерархической мультиагентной модели с описанием динамики биохимических и биологических процессов внутри агентоворганоидов. 8.3.2. Мультиагентная иерархическая модель биологической клетки В зависимости от степени детализации и априорной базы знаний мультиагентная модель клетки может иерархически раскрываться внутри каждого агента-органоида и рас-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 306 Глава 8. Мультиагентное моделирование систем в Simplex 3 ширяться с введением новых структурных компонентов и подсистем. Функциональное состояние и взаимодействие органоидов в жизненном цикле клетки могут быть представлены в виде структурно-параметрической матрицы. Вдоль главной диагонали матрицы размещаются параметры состояния и цели жизнедеятельности органоидов, в недиагональных минорах — описание операторов прямого и обратного влияния органоидов друг на друга fij (табл. 8.5). В диагональных блоках 1, 11, 21, …, 81 вербально обозначены главные функции выделенных органоидов, в дальнейшем описываемые диагональным вектором параметров целевых функций и формализованных функционалов. В зависимости от степени детализации и априорной базы знаний матричная модель клетки может иерархически раскрываться внутри каждого блока и расширяться с введением новых структурных компонентов и подсистем. В параметрическом описании органоидов выделяются входные переменные и структурно сгруппированные переменные состояния входящих в них органелл. Например, для митохондрии параметрическое описание включает: 1) входные параметры — пируват (пировиноградная кислота), жирные кислоты (ацил-КоА), неорганический фосфор и кислород, поступающие из внешней среды веществ в наружную (внешнюю) мембрану, 2) переменные состояния межмембранного пространства: MezhMP, внутренней мембраны, подсистемы дыхательной цепи с синтезом молекул АТФ (аденозинтрифосфат) — Cristа и генома митохондрий, являющегося источником АДФ (аденозиндифосфат) — Matrix. На рисунке 8.23 приведена структурно-параметрическая модель митохондрии. Из элемента «Внешняя среда» через наружную мембрану вещества — пируват, ацил-КоА, фосфат и кислород — поступают в органоид, а продукты жизнедеятельности (АТФ, CO2 и вода) выводятся в цитоплазму. Транспортные системы обеспечивают механизмы переноса веществ.
f32 47 56 65 74 46 55 64 73 29 38 f21 28 48 f36 75 66 57 39 f39 Образо- f43 Ядро f49 рибосом 30 вание f35 f34 цессы 20 ные про-21 37 f23 19 Обмен- 12 порт 10 Транс- 11 Мембрана 3 1 Цитоплазма 2 Внешняя среда Поступление веществ Нако- f53 f52 5 32 23 14 Аппарат Гольджи 76 67 58 49 f57 f56 Выра- f65 f64 f63 f62 42 33 24 15 6 77 68 59 f69 78 f68 69 f67 60 энергии 50 ботка 51 вещества 40 пление 41 31 22 13 4 Митохондрия 52 43 34 25 16 79 белков Рибосома 72 63 54 45 36 27 18 9 80 Синтез 81 углеводов f98 f95 70 Синтез 71 жиров и 53 44 35 26 17 8 f97 f85 f83 ЭПР 62 Переваривание 61 веществ f72 7 Таблица 8.5 8.3. Мультиагентное моделирование живых систем Рибосома ЭПР Лизосома Митохондрия Аппарат Гольджи Ядро Цитоплазма Мембрана Внешняя среда Лизосома Обобщенная структурно-параметрическая модель клетки Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 307
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 308 Глава 8. Мультиагентное моделирование систем в Simplex 3 Рис. 8.23. Структурно$параметрическая модель митохондрии В целях компактности процессы, происходящие в цикле Кребса [20] и в дыхательной цепи, представлены обобщенно. Основные процессы, происходящие в выделенных подсистемах, сводятся:  к превращению поступивших из цитоплазмы в митохондрию пирувата и жирных кислот (ацил-КоА) в ацетил-КоА;
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 309  окислению ацетил-КоА в цикле Кребса, ведущему к образованию NADH, FADH2 и CO2;  переносу электронов по дыхательной цепи;  образованию АТФ в результате деятельности мембранного АТФ-синтетазного комплекса;  образованию воды (в результате процессов в дыхательной цепи) [20, 26]. Структурно-параметрическое описание органоидов клетки, формализующее переменные их состояния и характер взаимодействия, служит основой построения имитационных моделей агентов-органоидов и иерархической мультиагентной модели биологической системы клетки (рис. 8.24). Мультиагентная модель клетки с иерархической структурой взаимосвязей агентов-органоидов [18] состоит из компонента верхнего внешнего уровня Сell_Membrane. Через этот компонент параметры состояния внешней среды Sreda (вода H2O, белки inb, жиры fats, углеводы ugl, фосфор P и кислород O2) поступают в компонент второго верхнего уровня — агент-Cytoplasm, объединяющего в своей внутренней среде субкомпоненты агентов-органоидов третьего уровня иерархии Lysosome. Субкомпонент агент-Lysosome c входными сенсорными переменными (содержание ATF, воды H2O, белков bel, жиров fats, углеводов ugl, олигосахаридов olig, белков-переносчиков trb и ферментативных белков frb) воспроизводит биохимические процессы расщепления макромолекул в мембране и внутренней среде на жирные кислоты fatsKisl, аминокислоты amk, глицерин gl и глюкозу gluk по фермент-субстратной реакции (см. (8.33)) с выделенными параметрами состояния: АТФ-зависимые протоновые помпы рр, контролирующие уровень ph, и общее содержание ферментов fer (гликозидазы Fglik, эстеразы Fest, пептидгидролазы Fpep, гидролазы Fgidr, нуклиаза Fnuk и др., более 40 гидролитических ферментов). Агент Mitochondrion — субкомпонент второго верхнего уровня с выходным параметром ATF имитирует функции энергетического центра клетки и состоит, в свою очередь, из
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 310 Глава 8. Мультиагентное моделирование систем в Simplex 3 Рис. 8.24. Иерархическая мультиагентная модель биологической клетки
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 311 субкомпонентов третьего уровня модели MezhMP, Cristа и Matrix. MezhMP — межмембранное пространство; воспроизводит перенос и накопление протонов prm в межмембранном пространстве и образование мембранного потенциала hm, являющегося движущей силой образования АТФ. Crista — подсистема синтеза молекул АТФ. Агент Crista воспроизводит работу «дыхательной цепи», осуществляющей окисление NadH с образованием воды и образование АТФ из АДФ в результате деятельности мембранного АТФсинтетазного комплекса. Matrix — геном митохондрий, являющийся источником АДФ c параметром состояния ADF. В агенте Matrix имитируется ферментативное расщепление пировиноградной кислоты pk и жирных кислот AcilKoA в цикле Кребса с образованием CO2, который выделяется из митохондрии в цитоплазму и далее в окружающую среду, а также восстановление коферментов NadH и FadH2, которые являются источниками электронов в дыхательной цепи в агенте Crista. Агент App_Gol с входными переменными (олигосахариды olig, белок belok для созревания, вода H2O, кислород O2 и глицерин gl), поступающими на сенсорные входы от других агентов-органоидов, осуществляет три стадии созревания белков-переносчиков trb, белков для вывода во внешнюю среду outb и ферментативных белков frb. Агенты Epr_rough и Jadro представлены в модели так же, как компоненты верхнего уровня с субкомпонентами Рис. 8.24 (продолжение): H2O — вода, fats — жиры, ugl — углеводы, P — неорганический фосфор, O2 — кислород, inb — белок; продукты метаболизма: fatsAk — активные жиры, outb — cозревший белок, CO2 — углекислый газ, H2O — вода, fkl — жирные кислоты; gl — глицерин; gluk — глюкоза; olig — олигосахариды; frb — ферментативный белок; trb — белки $ переносчики; fer — содер$ жание ферментов; рр — протоновые помпы; pk — пировиноградная кислота; NadH — восстановленный кофермент никотина$мидаденинди$ нуклеотид NAD; FadH2 — восстановленный кофермент флавина$денин$ динуклеотид; hcr, hm — протоны; ADF — аденозиндифосфат; ATF — аде$ нозинтрифосфат; AcilKoA — кофермент А; AcitilKoA — aцетил$кофермент А; mRNK — матричная РНК; tRNK — транспортная РНК
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 312 Глава 8. Мультиагентное моделирование систем в Simplex 3 третьего уровня и сенсорными связями. Эти агенты обеспечивают имитацию процессов синтеза белков, образования хромосом Hromosome, состоящих из ДНК, РНК и белковых молекул, и синтеза в Endosome матричной и транспортной РНК, направляемой в Ribosome. В соответствии со структурной схемой (см. рис. 8.24) биосистема «среда–клетка» описывается на объектно-ориентированном языке моделирования Simplex-MDL компонентом верхнего уровня Biosystem_High с прямыми и обратными связями между субкомпонентами Sreda и Cell_ Membrane первого уровня иерархии. Компонент Сell_ Membrane, в свою очередь, охватывает компонент второго уровня Citoplasma_High2 с субкомпонентами третьего уровня (листинг 8.19). HIGH COMPONENT Cytoplasm _High2 SUBCOMPONENTS Lysosome, # лизосома Mitochondrion, # митохондрия EPR_ smoth, # гладкая эндоплазматическая сеть EPR_ rough, # шероховатая эндоплазматическая # сеть App_Gold, # аппарат Гольджи Jadro # ядро INPUT CONNECTIONS # поступления в лизосому inb  (Lysosome. inb); # белков fats  (Lysosome. fats); # жиров ugl  (Lysosome.ugl); # углеводов # поступления в митохондрию P  (Mitochondrion.P); # фосфора O2  (Mitohondrion.O2); # кислорода H2O  (Lysosome. H2O, App_Gold. H2O , EPR_ smoth.H2O); OUTPUT EQUIVALENCES CO2 := Mitohondrion.CO2; # углекислый газ H2O := Mitohondrion.H2O; # вода outb := App.Gold.outb ; # белок fatsAk := EPR_ smoth . fatsAk ; # активные жиры COMPONENT CONNECTIONS # аминокислоты из лизосомы в ЭПР шероховатую Lysosome.amk --> EPR_roogh. amk; # жирные кислоты из лизосомы в ЭПР гладкую Листинг 8.19. Компонент 2$го верхнего уровня Cytoplasm_High2
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 313 Lysosome.fkl  EPR_smoth. fkl; # глицерин из лизосомы в аппарат Гольджи и ЭПР гладкую Lysosome.gl (App_Gold.gl , EPR_ smoth.gl); # передача молекулы глюкозы из лизосомы в виде двух молекул # пировиноградной кислоты в митохондрию. Lysosome.gluk  Mitochondrion.pk; # АТФ из митохондрии в ЭПР гладкую, ЭПР шероховатую и # лизосому Mitochondrion.ATF  ( EPR_smoth.ATF, EPR_rough. ATF, Lysosome.ATF); # белки-переносчики в лизосому App_Gold.trb  Lysosome.trb; # ферментативный белок из аппарата Гольджи в лизосому, ЭПР и ядро. App_Gold.frb  (Lysosome.frb, EPR_smoth.f, Jadro.f, EPR_roogh. f ); # олигосахариды из аппарата Гольджи в лизосому App_Gold.olig  Lysosome.olig ; # матричная РНК в ЭПР шероховатую Jadro.mRNK  EPR_rough.mRNK; # транспортная РНК из ядра в ЭПР Jadro.tRNK  EPR_rough.tRNK; # синтезированный белок в аппарат Гольджи EPR_rough.belok  App_Gold.belok; END OF Cytoplasm_High2 Листинг 8.19. Компонент 2$го верхнего уровня Cytoplasm_High2 (окончание) Субкомпоненты Lysosome (лизосома), Mitochochondrion (митохондрия), EPR_rough (шероховатая эндоплазматическая сеть) и Jadro (клеточное ядро) являются компонентами третьего верхнего уровня High3, объединяя соответствующие субкомпоненты четвертого уровня. В листинге 8.20 приведено описание Mitochondrion с субкомпонентами нижестоящего уровня MezhMP, Christa и Matrix. HIGH LEVEL COMPONENT Mitochondrion_High3 SUBCOMPONENTS MezhMP, # межмембранное пространство синтезa НАДН-Н Christa, # дыхательная цепь Matrix # матрикс, содержит кодон митохондрии Листинг 8.20. Компонент третьего уровня Mitochondrion_High3 (на чало)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 314 Глава 8. Мультиагентное моделирование систем в Simplex 3 INPUT CONNECTIONS pk --> (MezhMP.pk); # поступление пировиноградной кислоты P --> (MezhMP.P); # поступление неорганического фосфора O2 --> (MezhMP.O2); # поступление кислорода OUTPUT EQUIVALENCES CO2 := MezhMP.CO2; # углекислый газ H2O := MezhMP.H2O; # вода ATF := Christa.ATF; # АТФ COMPONENT CONNECTIONS # выход из межмембранного пространства в матрикс : MezhMP. pk --> Matrix.pk; # пировиноградной кислоты pk MezhMP.hm --> Matrix.hm; # мембранного потенциала hm # выходы из кристы: Christa.H20 := MezhMP.H20; # вода Christa.AcilKoA := Matrix. AсilKoA ; # ацил-КоА # выходы из матрикс: Matrix.NadH2 --> Christa.NadH2; # кофермент FadH2 Matrix.NadH --> Christa.NadH # кофермент NadH Matrix.ADF --> Christa.ADF; # аденозиндифосфат ADF Matrix.СO2 --> MezhMP.C02 # углекислый газ END OF Mitochondrion_High3 Листинг 8.20. Компонент третьего уровня Mitochondrion_High3 MDL-описание агента Lysosomе как компонента третьего верхнего уровня Lysosome с субкомпонентами — мембрана лизосомы Lmembrane и внутренняя среда лизосомы Lext — приведено в листинге 8.21. Поступающие из цитоплазмы и аппарата Гольджи (см. рис. 8.22) вещества — ATF, bel, fats, ugl, H2O, ферментативные белки frb, белки-переносчики trb и олигосахариды olig — передаются через мембрану лизосомы Lmembrane во внутреннее ее пространство Lext. Здесь с помощью АТФ-зависимых протоновых помп pp, контролирующих уровень ph, происходит расщепление макромолекул жиров и углеводов на более простые химические ингредиенты (аминокислоты, жирные кислоты, глицерин, глюкозу и др.). Продукты расщепления передаются в виде выходных переменных amk, fatsKisl, gl, gluk через мембрану во внешнюю среду лизосомы.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 315 HIGH LEVEL COMPONENT Lysosome_High3 SUBCOMPONENTS Lmembrane, # мембрана лизосомы Lext # внутренняя среда INPUT CONNECTIONS # входные переменные ATF --> Lmembrane. ATF; # АТФ bel --> Lmembrane. bel; # белки fats --> Lmembrane. fats; # жиры ugl  Lmembrane.ugl; # углеводы H2O --> Lmembrane. H2O; # вода org --> Lmembrane.org; # органеллы клетки, # идущие на расщепление trb --> Lmembrane.trb.; # транспортный белок из # аппарата Гольджи frb --> Lmembrane.frb.; # ферментированный белок # из аппарата Гольджи olig --> Lmembrane. olig; # олигосахариды OUTPUT EQUIVALENCES # выходные переменные amk := Lmembrane.amk; # аминокислоты gluk:= Lmembrane.gluk; # глюкоза fkl := Lmembrane..fkl; # жирные кислоты gl := Lmembrane. gl; # глицерин COMPONENT CONNECTIONS # поступление веществ от мембраны во внутреннее # пространство: Lmembrane.bel -->; Lext.bel; # белок Lmembrane.fats --> Lext.fats; # жир Lmembrane.ugl --> Lext.ugl; # углеводы Lmembrane.ATF --> Lext.ATF; # АТФ Lmembrane..trb. --> Lext.trb; # транспортный # белок Lmembrane.frb --> Lext.frb; # ферментированный # белок # поступление веществ из внутреннего пространства # в мембрану: Lext.amk --> Membrane.amk; # аминокислоты Lext.gluk --> Lmembrane.gluk; # глюкоза Lext. fkl --> Lmembrane. fkl; # жирные кислоты Lext.gl --> Lmembrane.gl; # глицерин END OF Lysosome_High3 Листинг 8.21. Компонент третьего верхнего уровня Lysosome_High3 Аналогично описываются компоненты третьего верхнего уровня: EPR_rough и Jadro (листинги 8.22–8.23).
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 316 Глава 8. Мультиагентное моделирование систем в Simplex 3 HIGH LEVEL COMPONENT EPR_rough_High3 SUBCOMPONENTS EPR, # ретикулум Ribosome # рибосомы INPUT CONNECTIONS ATF --> (EPR.ATF); # АТФ для синтеза белка f --> (EPR.f); # ферменты, mRNK --> (EPR.mRNK); # матричная РНК, tRNK --> (EPR.tRNK ); # транспортная РНК, ak --> (Ribosome.ak); # аминокислоты OUTPUT EQUIVALENCES belok := EPR.belok; # белок COMPONENT CONNECTIONS EPR.tRNK --> Ribosome.tRNK; Ribosome.ak --> EPR.ak; END OF EPR_ rough_High3 Листинг 8.22. Компонент третьего уровня EPR_rough_High3 HIGH LEVEL COMPONENT Jadro_High3 SUBCOMPONENTS Endosome, # ядрышко Chromosome # хромосомы INPUT CONNECTIONS f --> (Chromosome.f); # фермент РНК-полимераза для # репликации РНК H2O --> (Endosome.H2O); OUTPUT EQUIVALENCES mRNK := Endosome.mRNK; # матричная РНК tRNK := Endosome.tRNK; # транспортная РНК COMPONENT CONNECTIONS Chromosome.mRNK --> Endosome.mRNK; END OF Jadro_High3 Листинг 8.23. Компонент третьего уровня Jadro_High3 Описанные структуры компонентов внешнего и нижестоящих верхних уровней отражают формализованные взаимосвязи между агентами-органоидами на разных уровнях взаимодействия и показывают принцип построения иерархической мультиагентной модели клетки с последующим описанием базисных и мобильных компонентов. Математическое описание процессов, происходящих в органоидах, основано:
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 317  на моделях фермент-субстратной реакции;  дифференциальных уравнениях изменения концентрации веществ;  вероятностных описаниях переноса электронов в комплексах молекул-переносчиков в мембранах митохондрии;  моделях диффузионных процессов транспорта веществ через мембрану и др. [20, 27] . Так, изменение состояния субкомпонента Lext внутренней среды агента-лизосомы связано с ферментативными реакциями расщепления субстрата и описывается системой дифференциальных уравнений Михаэлиса–Ментен [26]:  d S   k1  E S   k1  E0    E ,  dt   d  E  k1  E S    k1  k2  (  E0    E ,  dt   d P   k2  E0    E ,  dt  (8. 33) где k1, k-1, k2 — коэффициенты скорости фермент-субстратной реакции; [S], [Е], [P] — количество субстрата, фермента и продукта в молях соответственно; [Е0] — начальное содержание фермента. Фрагмент описания динамики изменения состояния агента-лизосомы дифференциальными уравнениями (8.33) реакций расщепления жиров и углеводов приведен в листинге 8.24. DYNAMIC BEHAVIOUR DIFFERENTIAL EQUATIONS # Расщепление жиров fats на глицерин gl и жирные кислоты fk # Eo_est – начальное содержание фермента эстераза Fest fats’:= - k1*Fest*fats + k_1* (Eo_est-Fest)*1[moli]; # субстрат – жиры fats Fest’ := -k1*Fest*fats + (k1+k2)*(Eo_est-Fest)*1[moli]; # фермент – эстераза Fest fkl’:= 15*k2*(Eo_est-Fest)*1[moli]; # продукт – жирные # кислоты fkl
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 318 Глава 8. Мультиагентное моделирование систем в Simplex 3 gl’:= 5*k2*(Eo_est-Fest)*1[moli]; # продукт – глицерин gl # Расщепление углеводов ugl на моносахариды - глюкозу gluk # Eo_glik – начальное содержание фермента # гликозидаза Fglik; ugl’:= - k1*Fglik* ugl + k1* (Eo_glik - Fglik)*1.0[moli]; # субстрат – углеводы ugl Fglik’ := - k1*Fglik*ugl + (k1+k2)*(Eo_glik - Fglik)*1[moli]; # фермент – гликозидаза Fglik gluk’:=k2*(Eo_glik - Fglik)*2[moli]; # продукт – глюкоза gluk …………………………………………………………………… END Листинг 8.24. Динамика поведения субкомпонента Lext Результаты имитации в системе Simplex3 изменения состояния агента Lysosome в его внутренней среде Lext в соответствии с описанием динамики в листинге 8.24 приведены на рис. 8.25–8.26. Рис. 8.25. Расщепление жиров fats в среде Lext лизосомы
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 8.3. Мультиагентное моделирование живых систем 319 Количество продуктов фермент-субстратной реакции расщепления жиров fats в среде Ext с образованием жирных кислот fk и глицерина gl после резкого всплеска в начальный период уменьшаются практически до нуля (рис. 8.25). Это говорит о быстром выводе продуктов из внутренней среды лизосомы. Количество фермента эстеразы Fest сокращается в связи с образованием фермент-субстратного комплекса (ФСК) и увеличивается в процессе разделения ФСК на продукт и фермент. Рис. 8.26. Расщепление углеводов uv c образованием глюкозы gluk при воздействии фермента гликозидазы Fglik в среде Lext лизосомы На рисунке 8.26 показано расщепление углеводов uv во внутренней среде Lext с образованием глюкозы gluk при воздействии гликозидазы Fglik. Как и в предыдущем случае, после образования ФСК количество фермента вновь накапливается до определенного уровня.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» ЗАКЛЮЧЕНИЕ Изложенные в учебном пособии теоретические основы и практические методы реализации агентных технологий имитационного моделирования больших систем предоставляют новые возможности и средства компьютерной поддержки принятия решения в условиях неопределенности, риска и конфликта путем имитации взаимодействия динамических объектов, приводящего к первоначально непредсказуемым ситуациям и последствиям. Описание состояния и поведения агентов на языке моделирования Simplex3-MDL близко к естественному реальному восприятию и оценке активного элемента системы. Это дает возможность создания и проверки различных гипотез достижения цели в условиях неопределенности на основе мультиагентных моделей сложных ситуаций, возникающих в различных условиях взаимодействия в больших активных системах. Рассмотренные агентно-ориентированные технологии имитационного моделирования, основанные на формализованном описании поведения активных элементов и их взаимодействия в окружающей среде, позволяют идентифицировать и прогнозировать состояние больших систем в зависимости от индивидуальных свойств, целей и стратегий ее автономных элементов и среды. Учет эмоционального состояния агентов при мультиагентной имитации конфликтных ситуаций позволяет более адекватно воспроизвести логистику эмоционально-мотивированных переговорных стратегий и поведения активных элементов. Динамика взаимодействия интеллектуальных агентов описывается в форме прямых и косвенных переговорных
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Заключение 321 процессов, а также ситуационных и интеллектуальных стратегий, включающих алгоритмы идентификации текущей ситуации и степени достижения цели с принятием оптимальных решений на основе методов исследования операций и теории принятия решения. Приведенные в главах 7 и 8 примеры агентных технологий и мультиагентных моделей не претендуют на абсолютную полноту имитации реальных систем с использованием всех накопленных знаний опытных экспертов в конкретной области. Рассмотренные модели и их программная реализация в универсальной имитационной системе Simplex3 на объектно-ориентированном языке моделирования Simplex3-MDL показывают принципиальные возможности мультиагентной имитации логистических, маркетинговых, социальных и биологических систем с прогнозированием их состояния как результата пошагового динамического взаимодействия множества интеллектуальных агентов для поддержки принятия решений в сложных ситуациях. Вместе с тем модели являются открытыми и могут быть дополнены и расширены введением новых базисных компонентов и субкомпонентов более глубоких уровней иерархической структуры, уточнением параметрического описания агентов с учетом дополнительных переменных состояния и сенсорных связей; накоплением новых данных о среде, условиях адаптации и выживания системы, гибких ограничениях и критериях достижения цели. Однако построение и реализация таких моделей составляет предмет дальнейших самостоятельных исследований и разработок. Инсталляция программного обеспечения имитационной системы Simplex3 производится установочными файлами: 1) cygwin_full.exe (EGCS-компилятор); 2) s3lic03-E-0001.lic (ключ лицензии); 3) s3setup.exe (файл установки Simplex3), доступными на сайте Московского физико-технического института (государственного университета) http://iss.fizteh.ru/edu/courses/mas/
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 322 Литература Полное описание диалога установки программного обеспечения Simplex3 приведено в приложении1. ЛИТЕРАТУРА 1. Андреев В. В., Батищев С. В., Виттих В. А. и др. Методы и средства создания открытых мультиагентных систем для поддержки процессов принятия решений // Известия РАН. Теория и системы управления. – 2003, – № 1. – С. 126–137. 2. Айзерман М. Л. [и др.]. Логика. Алгоритмы. Автоматы. – М. : Физматгиз, 1963. 3. Бурков В. Н., Новиков Д. А. Теория активных систем: состояние и перспективы. – М. : СИНТЕГ, 1999. – 128 с. 4. Венда В. Ф. Инженерная психология и труд оператора АСУ. – M. : Знание, 1977. – 64 с. 5. Виноградов Г. П. Индивидуальное принятие решений: поведение целеустремленного агента : монография. – Тверь : ТГТУ, 2011. – 164 с. 6. Виттих В. А. Эволюционное управление сложными системами // Известия Самарского научного центра РАН – Т. 2, № 1. – Самара : СНЦ РАН, 2000. – 101 с. 7. Городецкий В. И. Многоагентные системы: современное состояние исследований и перспективы применения. – М. : «Новости ИИ», 1996. – 159 с. 8. Городецкий В. И., Карсаев О. В., Котенко И. В. Многоагентные системы: обзор. – СПб. : СПИИ РАН, 2002. 9. Городецкий В. И., Серебряков С. В. Методы и алгоритмы коллективного распознавания // Автоматика и телемеханика. – 2008. – № 11. – С. 3–40. 10. Ивашкин Ю. А. Структурно-параметрическое моделирование интеллектуальных агентов и систем : сборник «Информационные технологии и системы. Вып. 4». – Воронеж : Воронежская государственная технологическая академия, 2001. – С. 33–37. 11. Ивашкин Ю. А. Имитационное моделирование эмоционально-мотивированных агентов и мультиагентных систем // Сб. трудов VII Международной конференции «Интел-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Литература 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 323 лектуальные системы». Т. 2. – М.: Физматлит, 2007. – С. 57–67. Ивашкин Ю. А., Шешенина Л. А. Имитационное моделирование и структурная оптимизация материальных потоков перерабатывающего предприятия агропромышленного комплекса // Научно-технический журнал «Информационные технологии моделирования и управления». – Воронеж. – 2007. Вып. 2(36). – С. 258–267 . Ивашкин Ю. А. Агентные технологии моделирования рынка // Известия РАН. Теория и системы управления. – 2008. – № 4. – С. 165–176. Ивашкин Ю. А., Назойкин Е. А. Моделирование систем. Структурно-параметрические и агентно-ориентированные технологии. Лабораторный практикум. – М. : МГУПБ, 2010. – 134 с. Ивашкин Ю. А., Назойкин Е. А. Мультиагентное имитационное моделирование процесса накопления знаний // Программные продукты и системы. – 2011. – № 1. – С. 47–52. Ивашкин Ю. А., Гордеева Ю. Л. Мультиагентное моделирование «живых» систем в прикладной биотехнологии // Сб. трудов конф. «Моделирование-2012», Киев, 2012 г., с. 207–213. Ивашкин Ю. А. Агентные технологии и мультиагентное моделирование: учебное пособие. – М. : МФТИ, 2013. – 267 с. Ивашкин Ю. А., Гордеева Ю. Л., Яковлева Л. О. Мультиагентное моделирование жизнедеятельности биологической клетки // Вестник международной академии системных исследований 2014. Т. 16. № 1. С. 26–36. Иванов А. З. Специальные вопросы планирования эксперимента // А. З. Иванов, Г. К. Круг, Г. Ф. Филаретов. – М.: МЭИ, 1980. – 88 с. Кольман Я., Рем К.-Г. Наглядная биохимия. – М.: Бином. Лаборатория знаний. – 2011. – 472 с. Карпов Ю. Г. Имитационное моделирование систем. Введение в моделирование с AnyLogic 5. – СПб. : БХВ-Петербург, 2005. – 400 с. Котенко И. В. Командная работа агентов в реальном времени / И. В. Котенко, Л. А. Станкевич // 19th European
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 324 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. Литература Conference on modelling and simulation, ECMS 2005, Riga, Latvia, 2005. Назойкин Е. А. Мультиагентное имитационное моделирование образовательного процесса накопления знаний // Автореферат диссертации на соискание ученой степени кандидата технических наук. – М.: МГУПБ, 2011. –23 с. Новиков Д. А. Рефлексивные игры / Д. А.Новиков, А. Г. Чхартишвили. – М.: СИНТЕГ, 2003. – 160 с. Поспелов Д. А. От коллектива автоматов к мультиагентным системам: proc. of the International Workshop “Distributed Atrifical Intelligence und Multi-Agent Systems DIAMAS’ 97”/ Д. А.Поспелов. – St. Peterburg, 1997. – 325 с. Плотников А. М. Современное состояние и тенденции развития имитационного моделирования в Российской Федерации / А. М. Плотников, Ю. И. Рыжиков, Б. В. Соколов. – Труды конференции «Имитационное моделирование. Теория и практика». ИММОД-2011. – Т. 1. – СПб., 2011. – С. 51–61. Ризниченко Г. Ю. Лекции по математическим моделям в биологии. – Изд. УдГу, Ижевск. – 2011. – 560 с. Свиридов А. П. Статистическая теория обучения: монография. – М.: Изд-во РГСУ, 2009. – 576 с. Советов Б. Я., Яковлев С. А. Моделирование систем: учебник для вузов. – М. : Высшая школа, 2001. – 336 c. Сербулов Ю. С. Математическое моделирование динамики биологических систем / Ю. С. Сербулов, Н. М Дерканосова, В. И. Корчагин, В. И. Новосельцев. – Воронеж : Изд-во «Кварта», 2003. – 150 с. Скобелев П. О. Открытые мультиагентные системы для поддержки процессов принятия решений при управлении предприятиями // Известия Самарского научного центра РАН. – Т. 3. – № 1 / П. О. Скобелев. – Самара : СНЦ РАН, 2001. – 98 с. Симонов П. В., Темников Ф. Е. Адаптивные безэлектронные системы восприятия, обучения и управления. – АН СССР, Научный совет по комплексной проблеме «Кибернетика». – М. : Наука, 1965. Симонов П. В. Эмоциональный мозг. – М. : Наука, 1981. – 215 с.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Литература 325 34. Тарасов В. Б. От многоагентных систем к интеллектуальным организациям : философия, психология, информатика. – М. : Эдиториал УРСС, 2002. – 352 с. 35. Тесты в социологии. http://www.socium.info/tests.html 36. Чекинов Г. П., Чекинов С. Г. Применение технологии многоагентных систем для интеллектуальной поддержки принятия решений, http://systech.miem.edu.ru/2003/n1/ Chekinov.htm 37. Шмидт Б. Искусство моделирования и имитации. Введение в имитационную систему Simplex 3 / перевод с нем. под ред. Ю. А. Ивашкина и В. Л. Конюха. – Гент.: Бельгия, SCS-Европа BVBA, – 2003. – 550 с. 38. Шрайбер Т. Дж. Моделирование на GPSS. – М. : Машиностроение, 1980. – 592 с. 39. Babu G. P., Murty V. N. Clusterung with evolution strategies. Pattern Recorgn, 27, 1994. PP. 321–329. 40. Bauer R, Schwingenschlögl A., Vetschera R. Corporate Strategy in an Atrificial Economy // 3-nd Workshop on AgentBased Simulation., SCS-Europe BVBA, Ghent, Belgium. 2002. 41. Baillie P., Toleman M. Creating an Emotional Space for Artificial Beings // 2-nd Workshop on Agent-Based Simulation. Passau, Germany, 2001. – Р. 9–12. 42. Caldas, J.; Coelho H.: Strategic Interaction in Oligopolistic Markets in: Castelfranchi, C.; Werner, E. (Hrsg.): Artificial Social Sistems, Springer-Verlag. 1992. – Р. 147–163. 43. EDL Reference Manual http://isgwww.cs.unimagdeburg.de/ sim/its/-ws0809/simplex/edl.pdf 44. Fougeres A. J. Modeling of Productive organization with multi-agent Systems, 1 Workshop on Agent-Based Simulation/ A.J. Fougeres, B.B. Mazigh, A.T. Koukam, R.H. Fanjul. – Germany, Passau, 2001. – 692 р. 45. Ivashkin Yu. A. Structural-parametrical modelling of intellectual agents and system // 2nd Workshop on agent-based simulation. Passau, Germany 2001. – Р. 71–76. 46. Ivashkin Y. A., Shcerbakov A. V., Rogozhkina E. A. Multiagent simulation of disputed marketing situations // 19th European Conference on Modelling and Simulation, ECMS 2005, Riga, Latvia, 2005. – Р. 501–508.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 326 Литература 47. Introduction to Simulation – SIMPLEX3. http://isgwww. cs.uni-magdeburg.de/sim/its/ws0809/download.html. 48. Lopes F., Mamede N., Novais A. Q., Coelho H. Conflict Management and Negotiation аmong Intentional Agents // 2-nd Workshop on Agent-Based Simulation. SCS-Europe BVBA, Ghent, Belgium. 2001. – Р. 117–122. 49. Mikoni S. Multi-Agent Model for Metro Scheduling: proceedings of the 1-st International Workshop of Central and Eastern Europe on Multi-Agent Systems (CEEMAS’99) / S. Mikoni. – St. Petersburg, 1999. – 196 p. 50. Nelder J.A. and Mead R. // Computer Journal. – 1965. – V. 7. – Р. 308–313. 51. Schmidt B. The Art of Modelling and Simulation. SCS-Europe BVBA, – Chent: Belgium 2001. – 480 p. 52. Schmidt B. Die Modellierung menschlichen Verhaltens. – SCS-Europe BVBA, Chent, Belgium 2000. – 104 p. 53. Schmidt B., Toussaint A. Referenzmodell SSA für Strategien in: SiP – Simulation in Passau; Heft 3. – 1996. – Р. 8–15. 54. Cr. Urban. Das Referenzmodell PECS. Agentenbasierte Modellierung menschlichen Handels, Entscheidens und Verhaltens. Fak. fuer Mathematik und Informatik. Universität Passau, 2004. 55. Weppner H. Individuenbasierte Simulation eines oligopolistischen Marktes auf Basis des Referenzmodells PECS; Lehrstuhl für Operations Research und Systemtheorie. – Universität Passau. 1998.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» ПРИЛОЖЕНИЯ Приложение 1. Установка программного обеспечения универсальной имитационной системы Simplex3 Файлы, необходимые для установки Simplex3: 1) cygwin_full.exe (EGCS-компилятор); 2) s3lic03-E-0001.lic (ключ лицензии); 3) s3setup.exe (файл установки Simplex3). 1. Запустить файл CYGWIN_FULL.EXE. Запуск начинается с диалогового окна установки компилятора Welcome, в котором клавишей Next вызывается окно Software License Agreement. Далее при нажатии Yes следует вхождение в окно Information и далее через Next – в окно Choose Destination Location (рис. 1). Рис. 1. Окно Choose Destination Location
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 328 Приложения Нажимая на появившемся экране кнопку Browse, входим в окно Choose Folder (рис. 2), где в строке Path: указываем путь c:\Simplex3\cygnus\ и нажимаем кнопку ОК. Рис. 2. Окно Choose Folder Далее проверяем правильность указания пути в окне (см. рис.1) и нажимаем кнопку Next. В последующих диалоговых экранах программы установки следует нажимать Next и по окончании установки в диалоговом окне Setup Complete нажимаем кнопку Finish. 2. Запустить файл установки Simplex3 s3setup.exe. В окне Welcom нажимаем кнопку Next и в следующем окне Software License Agreement — кнопку Yes. В появляющемся окне Choose Destination Location (рис. 3), нажав кнопку Browse, переходим в экранную форму Choose Folder (рис. 4). Здесь в строке Path: указываем путь c:\ Simplex3 (вместо первоначального c:\Program Files (x86)|Simplex3) и нажимаем кнопку OK.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Приложение 1. Установка программного обеспечения Simplex3 329 Рис. 3. Окно Choose Destination Location Рис. 4. Экранная форма Choose Folder Далее проверяем правильность указанного пути в предыдущем окне Choose Destination Location и, нажимая кноп-
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 330 Приложения Рис. 5. Экранная форма SetupType ку Next (см. рис. 3), переходим в окно Setup Type (рис. 5) с выбором пункта меню Simplex3 with EGCS-libraries и далее Next. В последующих окнах: Choose Destination Location, Selection options и др., не производя никаких действий с опциями, нажимаем Next до появления экрана с кнопкой ОК. В завершающем окне установки Simplex3 нажимаем кнопку Finish. 3. Осуществить запуск Simplex3 с установкой ключа лицензии s3lic03-E-0001.lic. При первом запуске Simplex3 появляется экранная форма с сообщением о том, что в данную копию Simplex3 еще не внесена лицензия. Нажимаем ОК, после чего появляется окно (рис. 6) для выбора ключа лицензии. С помощью навигационного меню слева или при помощи явного указания пути указываем папку, содержащую ключ лицензии. Выделяем его в меню справа и нажимаем кнопку Apply, после чего установка завершена и можно начинать работу в универсальной имитационной системе Simplex3.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Приложение 2. MDL$описание модели ж/д станции 331 Рис. 6. Окно для выбора ключа лицензии SetupType Приложение 2. MDL5описание дискретно5 событийной модели пассажирской железнодорожной станции BASIC COMPONENT Transstation MOBILE SUBCOMPONENTS OF CLASS Passenger, Train (см. раздел 4.4, листинги 4.4 и 4.5) DECLARATION OF ELEMENTS CONSTANTS Work (REAL):= 0.083, # время стоянки поезда, час Enter(REAL):= 0.0001, # время посадки одного # пассажира, час Exit(REAL):= 0.05 # время высадки 90 пассажиров, # час (3 мин) STATE VARIABLES DISCRETE ArrivePassenger(REAL):=0.8, # интервал прихода пассажиров # интервал прихода поездов, час ArriveTrain1 (REAL) := 2 # на 1-ю платформу ArriveTrain2 (REAL) := 2, # на 2-ю платформу
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 332 Приложения TEnter1(REAL):=0, # время посадки в сторону центра TEnter2(REAL):=0, # время посадки в сторону от центра TArrivePassenger(REAL):=0, # начало входа пассажиров TArriveTrain1 (REAL) := 0, # прибытие поезда к центру TArriveTrain2 (REAL) := 0, # прибытие поезда от центра TWork1 (REAL) := 0, # время стоянки поезда к центру TWork2 (REAL):= 0, # время стоянки поезда от центра TNextP (REAL):=0, # начало суток для пассажиров TNextT1 (REAL):=0, # начало суток для поездов к центру TNextT2 (REAL):=0, # начало суток для поездов от центра Protocol (LOGICAL) := TRUE RANDOM VARIABLES # число пассажиров, входящих в поезд Numb (INTEGER):IUNIFORM(LowLimit := 100,UpLimit := 300), # направление следования поезда Train D (INTEGER):IUNIFORM (LowLimit := 0, UpLimit := 1), # направление следования пассажира PassD (INTEGER):IUNIFORM (LowLimit:=1, UpLimit:=2) LOCATIONS StationP (Passenger) := 0 Passenger # общий накопитель # пассажиров на станции PlatformP1 (Passenger) := 0 Passenger, # накопитель # пассажиров на платформе к центру PlatformP2 (Passenger) := 0 Passenger, # накопитель # пассажиров на платформе от центра # прибытие поезда на станцию: StationT1 (Train) := 0 Train, # в центр StationT2 (Train) := 0 Train, # от центра # очередь выходящих пассажиров, следующих: ExitP(Passenger):= 0 Passenger, Road1(Train):= 0 Train, # к центру Road2(Train):= 0 Train, # от центра Buffer(Train):=2 Train, # тупик PlatformT1 (Train) := 0 Train, # платформа 1 к центру PlatformT2 (Train) := 0 Train # платформа 2 от центра DYNAMIC BEHAVIOUR # динамика поведения пассажиров WHENEVER T >= TArrivePassenger DO # интервал прихода пассажиров на станцию (см. табл. 4.2) IF (T>=TNextP) AND (T<TNextP+5) DO ArrivePassenger^:= 0.8; END ELSIF (T>=TNextP+5) AND (T<TNextP+10) DO ArrivePassenger^:= 0.001; END ELSIF (T>=TNextP+10) AND (T<TNextP+16) DO ArrivePassenger^:= 0.01; END
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Приложение 2. MDL$описание модели ж/д станции 333 ELSIF (T>=TNextP+16) AND (T<TNextP+19) DO ArrivePassenger^:= 0.008; END ELSIF (T>=TNextP+19) AND (T<TNextP+23) DO ArrivePassenger^:= 0.09; END ELSIF (T>=TNextP+23) AND (T<TNextP+24) DO ArrivePassenger^:=1; END StationP^: ADD 1 NEW Passenger CHANGING Destination^:= PassD; # направление пассажира END # время появления на станции следующего пассажира TArrivePassenger^:= T + ArrivePassenger; IF TArrivePassenger >= TNextP + 24 DO TNextP^:=TNextP +24; END # отсчет суток END # направление пассажира на PlatformP1 (к центру) или # PlatformP2 (от центра) WHENEVER NUMBER(StationP) > 0 DO IF StationP:Passenger[1].Destination=1 # к центру DO PlatformP1^:FROM StationP GET Passenger[1]; IF Protocol DO DISPLAY (“T= %f Passenger has come to Platform1 \n”,T); END END IF StationP:Passenger[1].Destination=2 # от центра DO PlatformP2^:FROM StationP GET Passenger[1]; IF Protocol DO DISPLAY (“T= %f Passenger has come to Platform2 \n”,T); END END END # Динамика движения поездов: # вызов поезда из тупика к первой платформе (к центру) WHENEVER (NUMBER(PlatformP1) >700) AND (NUMBER(Buffer) >0) AND (NUMBER(PlatformT1) = 0) DO PlatformT1^: FROM Buffer GET Train[1] CHANGING Destination^:= 0; END TWork1^:=T+Work; # время стоянки TEnter1^:=T; # время начала посадки IF Protocol DO DISPLAY (“T= %f Empty Train is at Platform1\n”,T); END END # вызов поезда из тупика ко второй платформе (от центра) WHENEVER (NUMBER(PlatformP2) >700) AND (NUMBER(Buffer) > 0) AND (NUMBER(PlatformT2) = 0)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 334 Приложения DO PlatformT2^: FROM Buffer GET Train[1] CHANGING Destination^:=0; END TWork2^:=T+Work; # время стоянки TEnter2^:=T; # время начала посадки IF Protocol DO DISPLAY (“T= %f Empty Train is at Platform2\n”,T); END END # прибытие поезда к первой платформе станции (к центру) WHENEVER T >= TArriveTrain1 DO # интервал прибытия поезда на станцию (табл. 4.3) IF (T>=TNextT1)AND(T<TNextT1+4) DO ArriveTrain1^:=2 END; ELSIF (T>=TNextT1+4) AND (T<TNextT1+6) DO ArriveTrain1^ := 0.8; END ELSIF (T>=TNextT1+6) AND (T<TNextT1+10) DO ArriveTrain1^ := 0.15; END ELSIF (T>=TNextT1+10) AND (T<TNextT1+13) DO ArriveTrain1^ := 0.8; END ELSIF (T>=TNextT1+13) AND (T<TNextT1+23) DO ArriveTrain1^ := 0.3; END ELSIF (T>=TNextT1+23) AND (T<TNextT1+24) DO ArriveTrain1^ := 3; END StationT1^ : ADD 1 NEW Train # прибытие поезда на станцию CHANGING Destination^:= TrainD; # направление движения поезда Seat^:ADD Numb NEW Passenger; # число пассажиров в поезде END TArriveTrain1^:= T+ArriveTrain1; # время прибытия # следующего поезда IF Protocol DO DISPLAY (“T= %f Train has arrived at Platform1\n”,T); END IF TArriveTrain1 >= TNextT1 + 24 DO TNextT1^:=TNextT1+24; END END # прибытие поезда ко второй платформе (от центра) WHENEVER T >= TArriveTrain2 DO # интервал прибытия на станцию (табл. 4.3) IF (T>=TNextT2) AND (T<TNextT2+4) DO ArriveTrain2^:=2; END ELSIF (T>=TNextT2+4) AND (T<TNextT2+9) DO ArriveTrain2^:=0.3; END ELSIF (T>=TNextT2+9) AND (T<TNextT2+16) DO ArriveTrain2^:=0.4; END ELSIF (T>=TNextT2+16) AND (T<TNextT2+21)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Приложение 2. MDL$описание модели ж/д станции 335 DO ArriveTrain2^:=0.2; END ELSIF (T>=TNextT2+21) AND (T<TNextT2+23) DO ArriveTrain2^:=0.8; END ELSIF (T>=TNextT2+23) AND (T<TNextT2+24) DO ArriveTrain2^:=3; END StationT2^ : ADD 1 NEW Train # прибытие поезда на # станцию CHANGING Destination^:= TrainD; # направление движения # поезда Seat^:ADD Numb NEW Passenger; # число пассажиров # в поезде END TArriveTrain2^:= T+ArriveTrain2; #прибытие следующего # поезда IF Protocol DO DISPLAY ("T= %f Train has arrived at Platform2\n",T);END IF TArriveTrain2 >= TNextT2 + 24 DO TNextT2^:=TNextT2+24; END END # высадка пассажиров из поезда в сторону центра WHENEVER (NUMBER(StationT1) >=1) AND (NUMBER(PlatformT1) = 0) DO IF (StationT1:Train[1].Destination = 0) # продолжение движения DO # высадка 90 пассажиров StationT1:Train[1].Seat^:TO ExitP SEND Passenger{1..90}; IF Protocol DO DISPLAY ("T= %f 90 Passengers leave train at Platform1\n",T); END END ELSIF (StationT1:Train[1].Destination =1) AND (NUMBER(StationT1:Train[1].Seat)>0) # конечная станция и высадка всех пассажиров DO StationT1:Train[1].Seat^:TO ExitP SEND Passenger{ALL}; IF Protocol DO DISPLAY ("T= %f All Passengers leave train at Platform1\n",T); END END # подача поезда на посадку PlatformT1^:FROM StationT1 GET Train[1]; TWork1^:=T+Work; # время стоянки TEnter1^:=T+ Exit; # время начала посадки END # конец события WHENEVER # высадка пассажиров из поезда в сторону от центра WHENEVER NUMBER(StationT2) >= 1 AND (NUMBER(PlatformT2) = 0) DO IF (StationT2:Train[1].Destination = 0) DO
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 336 Приложения StationT2:Train[1].Seat^:TO ExitP SEND Passenger{1..90}; IF Protocol DO DISPLAY (“T= %f 90 Passengers leave train at Platform2\n”,T); END END ELSIF (StationT2:Train[1].Destination =1) AND (NUMBER(StationT2:Train[1].Seat)>0) DO StationT2:Train[1].Seat^:TO ExitP SEND Passenger{ALL}; IF Protocol DO DISPLAY (“T= %f All Passengers leave train at Platform2\n”,T); END END # подача поезда на посадку PlatformT2^:FROM StationT2 GET Train[1]; TWork2^:=T+Work; # время стоянки TEnter2^:=T+Exit; # время начала посадки END # конец события WHENEVER # посадка на поезд в сторону центра WHENEVER (NUMBER(PlatformT1)=1) AND (T >= TEnter1) AND (T < TWork1) AND (NUMBER(PlatformP1) > 0) AND (NUMBER (PlatformT1:Train[1].Seat) < 600) AND (PlatformT1:Train[1].Destination = 0) DO # посадка очередного пассажира PlatformT1:Train[1].Seat^: FROM PlatformP1 GET Passenger[1]; TEnter1^:=T+Enter; # время посадки следующего пассажира IF Protocol DO DISPLAY (“T= %f Passenger has entered the train at Platform1\n”,T); END END # посадка на поезд в сторону от центра WHENEVER (NUMBER(PlatformT2) =1) AND (T >TEnter2) AND (T<TWork2) AND (NUMBER(PlatformP2) >0) AND(NUMBER(PlatformT2:Train[1].Seat) < 600) AND (PlatformT2:Train[1].Destination = 0) DO PlatformT2:Train[1].Seat^: FROM PlatformP2 GET Passenger[1]; TEnter2^:=T+Enter; IF Protocol DO DISPLAY (“T= %f Passenger has entered the train at Platform2\n”,T); END END # отправление поезда от второй платформы WHENEVER (NUMBER(PlatformT2)=1) AND (T>=TWork2) DO IF PlatformT2:Train[1].Destination = 1 # в тупик DO PlatformT2^: TO Buffer SEND Train[1]; IF Protocol DO DISPLAY (“T= %f Train has left
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Приложение 3. MDL$программы разрешения рыночного конфликта 337 Platform2 for buffer\n”,T); END END IF PlatformT2:Train[1].Destination = 0 # дальше # по назначению DO PlatformT2^: TO Road2 SEND Train[1]; IF Protocol DO DISPLAY (“T= %f Train has left Platform2 for Road2\n”,T); END END END # отправление поезда от первой платформы WHENEVER (NUMBER(PlatformT1) = 1) AND (T >= TWork1) DO IF PlatformT1:Train[1].Destination = 1 DO PlatformT1^: TO Buffer SEND Train [1]; IF Protocol DO DISPLAY (“T= %f Train has left Platform1 for buffer\n”,T); END END IF PlatformT1:Train[1].Destination = 0 DO PlatformT1^: TO Road1 SEND Train[1]; IF Protocol DO DISPLAY (“T= %f Train has left Platform1 for Road1\n”,T); END END END END OF Transstation Приложение 3. МDL5программы мультиагентного моделирования с ситуационной стратегией разрешения рыночного конфликта # Вызов внешней с-функции для формирования критериев покупателей (tmp^) := fillClients(ARRAY criterian,100); # include <iostream> # include <stdlib.h> # include <math.h> # include <stdio.h> # include "sys_struct.h" # include "sys_extern.h" # include "rts_func.h" # include ″c_macros.h" using namespace std; // экспоненциальное распределение real exprasp(real m) {
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 338 Приложения real r; real exprasp_result; do { r = rand () %100; r = r/100; } while (!(r!=0)); exprasp_result=-m*log(r); return exprasp_result; } // нормальное распределение real nrasp(real m,real stddev) { real r1,r2,radsqr; real nrasp_result; do { r1=rand()%100; r2=rand()%100; r1=2*r1/100-1; r2=2*r2/100-1; radsqr=r1*r1+r2*r2; } while (!((radsqr>0) && (radsqr<1))); nrasp_result=r1*sqrt(-2*log(radsqr)/ radsqr)*stddev+m; return nrasp_result; } void fillClients(array a,integ r,integ *tmp) { int i,j; srand(1); for (j=1;j<=r;j++) { InPara2(a,real,1,j) = rand()%200 + 10; InPara2(a,real,2,j) = rand()%40 + 30; InPara2(a,real,3,j) = rand()%2; InPara2(a,real,4,j) = nrasp(25,5); InPara2(a,real,5,j) = exprasp(50); InPara2(a,real,6,j) = rand()&2+1; InPara2(a,real,7,j) = nrasp(2.5,0.5); InPara2(a,real,8,j) = exprasp(200); InPara2(a,real,9,j) = nrasp(0.5,0.5); } } Для каждого олигополиста случайным образом разыгрываются параметры предлагаемого продукта и сопутствующих услуг. Каждая фирма описывается в отдельном базисном компоненте: Firm1, Firm2, Firm3, а ее параметры записываются в виде вектора в мобильный компонент.
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Приложение 3. MDL$программы разрешения рыночного конфликта 339 Базисный компонент Firm1, описывающий фирму-продавца BASIC COMPONENT Firm1 MOBILE SUBCOMPONENT OF CLASS query DECLARATION OF SUBFUNCTIONS # функция стратегии Strategy изменения цены от неценовых # факторов: # количество покупателей past_buy2 предыдущего периода, # накопитель сообщений Query Stock, массив не # обслуженных клиентов LOST_c, не реализованный остаток # товара bal, число покупателей первой фирмы Cust F1, # индекс фирмы I, число фирм-продавцов на рынке g, # массив стартовых характеристик предложений, количество # свободных денежных средств фирмы cash, недостающее # количество поставок dem Strategy (INTEGER: past_buy2, LOCATION FOR query: Stock, ARRAY[l] LOGICAL:LOST_c, ARRAY[l] REAL:bal, INTEGER: Cust F1, INTEGER: I, INTEGER: g, ARRAY [n] REAL : param1, INTEGER: cash, ARRAY [l] REAL: dem  ARRAY [n] REAL, INTEGER ), # процедура перезаписи рабочего массива form (ARRAY [n] REAL:PP  ARRAY [n] REAL) DECLARATION OF ELEMENTS STATE VARIABLES # количество клиентов за прошедший период ARRAY [2] past_buyers (INTEGER) := 0, # массив параметров предложения фирмы Firm1 ARRAY [9] parameters1 (REAL) := 0, # массив новых параметров предложения фирмы Firm1 ARRAY [9] p1 (REAL) := 0, TNext (INTEGER) := 0, # текущий период count (INTEGER) := 1, past_b (INTEGER) := 0, past_b2 (INTEGER) := 0, # число покупателей за # прошлый период invest (INTEGER) := 0 # количество свободных # денежных средств SENSOR VARIABLES # количество покупателей за текущий период Cust F1 (INTEGER), # массив остатков нереализованного товара ARRAY [3] balances (REAL), # наличие необслуженных клиентов ARRAY [3] LOST_clients (LOGICAL), # характеристики предложений фирмы Firm2
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 340 Приложения ARRAY [9] parameters2 (REAL), # характеристики предложений фирмы Firm3 ARRAY [9] parameters3 (REAL), firm_leader (INTEGER), # номер фирмы-лидера g (INTEGER), # количество фирм-продавцов на рынке ARRAY [3] demand(REAL) # недостающий объем предложений RANDOM VARIABLES PRI(REAL):UNIFORM (LowLimit:=200,UpLimit:=400), # цена товара QUAN(INTEGER):IUNIFORM (LowLimit:=100,UpLimit:=200), # объем предложений SAL(REAL):UNIFORM (LowLimit:=0,UpLimit:=1), # скидки ADV(REAL):UNIFORM(LowLimit:=15,UpLimit:=35), # реклама QUAL(REAL):EXPO(Mean:=50), # качество ASSORT(INTEGER):IUNIFORM(LowLimit:=1,UpLimit:=3), # ассортимент # степень доверия TRU(INTEGER):IUNIFORM(LowLimit:=2,UpLimit:=5), REMOT(REAL):EXPO(Mean:=150), # удаленность # доставка DELIV(INTEGER):IUNIFORM(LowLimit:=1,UpLimit:=3), # финансовая поддержка Inv(INTEGER):IUNIFORM(LowLimit:=1,UpLimit:=4) TRANSITIONS INDICATORS print # индикатор печати протокола LOCATION # накопитель параметров предложений фирмы Firm1 QueryStock1(query) := 0 query, # накопитель параметров предложений от всех фирм F1Stock(query) := 0 query SENSOR LOCATION FirmStock(query) # приемный накопитель сообщений от # клиентов DYNAMIC BEHAVIOUR ON START DO # стартовые параметры предложений фирмы parameters1[1]^:= PRI; # цена parameters1[2]^:= QUAN; # объем предложений parameters1[3]^: = SAL; # скидки parameters1[4]^:= ADV; # реклама parameters1[5]^:= QUAL; # качество parameters1[6]^:= 1; # ассортимент parameters1[7]^:= TRU; # степень доверия parameters1[8]^:= REMOT; # удаленность parameters1[9]^:= DELIV; # доставка END WHENEVER T>= TNext DO IF (NUMBER (FStock) <> 0) DO # корректировка цены и неценовых предложений
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Приложение 3. MDL$программы разрешения рыночного конфликта 341 (ARRAY p1^, past_b^) := strategy (past_b2, LOCATION FStock, ARRAY LOST_cl, ARRAY balances, Cust F1, 1, g, ARRAY parameters1, invest, ARRAY demand); END TNext^:=TNext+1; QueryStock1^: ADD 1 NEW query CHANGING # формирование новых параметров предложения # в массиве ARRAY QB мобильного компонента (ARRAY QB^) := form (ARRAY parameters1); # запись скорректированных параметров в стартовый # массив предложений (ARRAY parameters1^):= form (ARRAY p1); past_b2^:= past_b; # количество покупателей # прошлого периода invest^ := Inv; # определение объема # свободных денежных средств END ON print DO # регистрация текущих параметров # предложений фирмы DISPLAY("WORK firm1! FIRM ADDED. %3.2f ", QueryStock1:query[1].QB[1]); DISPLAY("%3.2f ",QueryStock1:query[1].QB[2]); ……………………………………… DISPLAY("%3.2f\n",QueryStock1:query[1].QB[9]); END END OF Firm 1 Функция Strategy выбора ситуационной стратегии на следующий период времени FUNCTION Strategy MOBILE SUBCOMPONENT OF CLASS query LOCAL DEFINITIONS DECLARATION OF SUBFUNCTION Form (ARRAY [n] REAL:PP  ARRAY[n] REAL) DECLARATION OF ELEMENTS INPUT PARAMETERS # количество покупателей предыдущего периода past_buy2 (INTEGER), Stock (LOCATION FOR query), # накопитель сообщений # Query Stock ARRAY[I] LOST_c (LOGICAL), # признак наличия # необслуженных клиентов ARRAY[I] bal (REAL), # нереализованный остаток CustF1(INTEGER), # количество покупателей # i-й фирмы
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 342 Приложения # номер фирмы # количество фирм # массив параметров # предложений фирмы cash (INTEGER), # объем свободных денежных средств ARRAY [I]dem(REAL) # недостающее количество поставок OUTPUT PARAMETERS ARRAY[n] par (REAL), # массив скорректированных # параметров предложений фирмы past_buy (INTEGER) # количество покупателей i-й фирмы LOCAL VARIABLES average_price (REAL) := 0, # средняя цена на товар cash1 (INTEGER) := 0 # вспомогательная переменная BEGIN (ARRAY par) := form (ARRAY param1); # запись стартовых # параметров # Событие 1. Коррекция текущей цены в зависимости от # средней average_price FOR J FROM 1 TO g REPEAT average_price := average_price + Stock:query[J].QB[1]; END_LOOP average_price := average_price/g; DISPLAY(«сред цена %3.2f\n»,average_price); IF par[1] > average_price DO par[1] := par[1]-par[1]*0.01; END ELSIF par[1]< average_price DO par[1]:=par[1]+par[1]*0.01; END # Событие 2. Изменение объема предложений par[2] IF LOST_c[I] DO par[2]:= par[2]+ dem[I]; END ELSIF LOST_c[I]=FALSE DO par[2]:= par[2]; END # Событие 3. Введение скидки par[3] или сокращение объема # предложений par[2] IF bal[I] > par[2]/3 DO par[3]:= par[3]+1; END # Событие 4. Изменение неценовых факторов в зависимости # от уровня свободных денежных средств cash # увеличение объема предложений IF Cust F1 > past_buy2 DO par[2]:= par[2] + 10; END ELSIF Cust F1 <= past_buy2 DO IF cash =1 # расширение ассортимента par[6] par[6] := par[6] + 1; END ELSIF cash = 2 DO par[5] := par[5] + 5; # повышение # качества товара IF (par[5] >80) AND ( par[7] < 6) DO par[7]:= par [7] + 1; END # укрепление имиджа END ELSIF cash=3 DO par[4]:= par[4] + 5; END # усиление рекламы I (INTEGER), g (INTEGER), ARRAY [n] param1(REAL),
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Приложение 3. MDL$программы разрешения рыночного конфликта 343 ELSIF (cash=4) AND (par[9] < 3) DO par[9]:= par[9] + 1; END # дополнительный # сервис (улучшение доставки) END past_buy:= CustF1; RETURN END OF Strategy Базисный компонент Market BASIC COMPONENT Market MOBILE SUBCOMPONENT OF CLASS query DECLARATION OF SUBFUNCTION # функция выбора покупателем продавца и подведения # итогов текущего периода # Входные переменные: общий накопитель предложений Query # от FStock, # массив характеристик запросов покупателей CRITER, # вспомогательный массив Dummy FChoice (LOCATION FOR query: FStock, ARRAY [n][s] REAL: CRITER, ARRAY [l] REAL: Dummy, INTEGER : g  ARRAY [l] REAL, INTEGER, INTEGER, INTEGER, ARRAY [n][l] REAL, ARRAY [l] LOGICAL, INTEGER, ARRAY [l] REAL ) DECLARATION OF ELEMENTS STATE VARIABLES TNext (INTEGER) := 0, ARRAY[3] QB (INTEGER) := 0, # количество покупателей, # выбравших i-ю фирму ARRAY[3] balances (REAL) := 0, # массив остатков # нереализованного товара ARRAY[3]Dum(REAL):=0, # вспомогательный массив # массив признаков необслуженных клиентов i-й фирмы ARRAY[3]LOST_clients(LOGICAL):=FALSE, l (INTEGER) := 2, # индекс фирмы g (INTEGER) := 2, # начальное количество фирм CustF1 (INTEGER) := 0, # число клиентов фирмы 1 CustF2 (INTEGER) := 0, # число клиентов фирмы 2 CustF3 (INTEGER) := 0, # число клиентов фирмы 3 ARRAY[9][3]copy_par (REAL) := 0, # массив параметров # предложений firm_leader (INTEGER):=0, # индекс фирмы-лидера EQUIPOISE (LOGICAL):=FALSE, # индикатор равновесия цен ARRAY[3]demand (REAL):=0, # недостающее количество
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 344 b (INTEGER) := 0 Приложения # поставок # переменная счетчика совпадений # параметров спроса и предложений SENSOR VARIABLES ARRAY[9][100]criterion (REAL) # приемный массив # параметров запросов покупателей TRANSITION INDICATOR choice, how_many LOCATIONS FirmStock(query):= 0 query, # общий накопитель # предложений фирм CopyofFirmStock(query):=0 query # вспомогательный массив SENSOR LOCATIONS QStock1(query), # приемный накопитель предложений фирмы 1 QStock2(query), # приемный накопитель предложений фирмы 2 QStock3(query) # приемный накопитель предложений фирмы 3 DYNAMIC BEHAVIOUR WHENEVER T>=TNext DO TNext^:=TNext + 1; END WHENEVER (NUMBER (QStock1) > 0) AND (NUMBER QStock2) > 0) AND ( (NUMBER (FirmStock) = 0 ) DO FirmStock^: FROM QStock1 GET query[1]; FirmStock^: FROM QStock2 GET query[1]; IF (NUMBER(QStock3) > 0) DO FirmStock^: FROM QStock3 GET query[1]; SIGNAL how_many; END END WHENEVER NUMBER(FirmStock) > 0 DO CopyofFirmStock^:REMOVE query{ALL}; # обращение к процедуре FChoice (ARRAY balances^, CustF1^, CustF2^, CustF3^, ARRAY copy_par^, ARRAY LOST_clients^, firm_leader^, ARRAY demand^) := FChoice (LOCATION FirmStock, ARRAY criterion, ARRAY Dum, g ); IF (FirmStock:query[1].QB[1] - FirmStock:query[2].QB[1] > 0 ) AND (FirmStock:query[1].QB[1]-FirmStock:query[2]. QB[1] < 4 ) OR (FirmStock:query[2].QB[1]-FirmStock:query[1]. QB[1] > 0) AND (FirmStock:query[2].QB[1]-FirmStock:query[1]. QB[1] < 4) DO b^ := b + 1; IF b = 7 DO EQUIPOISE^ := TRUE; END END CopyofFirmStock^: FROM FirmStock GET query{ALL};
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Приложение 3. MDL$программы разрешения рыночного конфликта END ON how_many DO g^ := 3; l^ := 3; END END OF Market 345 # появление новой фирмы Функция FChoice выбора покупателем продавца и подведения итогов текущего периода FUNCTION FChoice MOBILE SUBCOMPONENT OF CLASS query DECLARATION OF ELEMENTS INPUT PARAMETERS FStock(LOCATION FOR query), # общий накопитель # сообщений Query от FStock ARRAY[n][s] CRITER (REAL), # массив характеристик # запросов покупателей ARRAY [l] Dummy(REAL), # вспомогательный массив g (INTEGER) # количество фирм OUTPUT PARAMETERS ARRAY[l] balance (REAL), # массив остатков # нереализованного товара на складе CustF1 (INTEGER), # количество покупателей фирмы 1 CustF1 (INTEGER), # количество покупателей фирмы 2 CustF1 (INTEGER), # количество покупателей фирмы 3 ARRAY[n][l] copy_param(REAL), # рабочий массив # параметров предложений ARRAY[l] LOST_clients(LOGICAL), # массив признаков # необслуженных клиентов i-й фирмы leader (INTEGER), # индекс фирмы-лидера ARRAY [l] dem (REAL) # недостающее количество товара LOCAL VARIABLES ss (INTEGER):=100, # число покупателей k (REAL):=0, # количество совпадающих параметров rem (REAL):=0, maxim (REAL):=0, imaxim (INTEGER) := 0, jmax (INTEGER) := 0, ARRAY[l][s] QuBu (REAL):=0, # массив совпадений # массив распределения покупателей ARRAY[l][s] QuanBuy (INTEGER), ARRAY [l] clients (INTEGER), max_cl (INTEGER) BEGIN DISPLAY("g= %d\n",g); FOR W FROM 1 TO 9
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 346 Приложения REPEAT FOR I FROM 1 TO g REPEAT copy_param[W][I] := FStock:query[I].QB[W]; balance[I]:=FStock:query[I].QB[2]; END_LOOP END_LOOP # сравнение критериев покупателей CRITER [R][I] # с параметрами продавцов FStock:query[J].QB[R] FOR J FROM 1 TO g REPEAT FOR I FROM 1 TO ss REPEAT k := 0; FOR R FROM 1 TO 9 REPEAT IF R<>2 DO # сравнение факторов в заданных пределах IF (FStock:query[J].QB[R] <= CRITER[R][I] + CRITER[R][I]*0.2) AND (FStock:query[J].QB[R] >= CRITER[R][I] CRITER[R][I]*0.2) DO k:=k+1/9; END END END_LOOP # массив функционалов предпочтения j-го продавца i-м # покупателем QuBu [J][I] := k; END_LOOP END_LOOP # выбор покупателем наиболее подходящей фирмы FOR I FROM 1 TO ss REPEAT # при равенстве функционалов выбирается фирма с # достаточным количеством товара IF (QuBu[1][I]=QuBu[2][I]) AND (QuBu[1][I]=QuBu[3][I]) AND (QuBu[1][I]<>0) DO LOOP <ch> FOR J FROM 1 TO g REPEAT IF balance[J]>=CRITER[2][I] DO balance[J]:=balance[J]-CRITER[2][I]; QuanBuy[J][I]:=1; LOST_clients[J]:=FALSE; EXIT <ch>; END END_LOOP <ch> END # выбор фирмы с максимальным функционалом предпочтения
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Приложение 3. MDL$программы разрешения рыночного конфликта 347 ELSIF (QuBu[1][I]<>QuBu[2][I]) OR (QuBu[1][I]<>QuBu[3][I]) DO maxim:=0; FOR J FROM 1 TO g REPEAT IF QuBu[J][I] > maxim DO maxim := QuBu[J][I]; imaxim := J; JMAX := I; END END_LOOP DISPLAY("Выбор %d\n",imaxim); # подсчет остатков и объема упущенных продаж IF balance[imaxim] >= CRITER[2][I] DO balance[imaxim]:= balance[imaxim] - CRITER[2][I]; QuanBuy[imaxim][JMAX] := 1; LOST_clients[imaxim] := FALSE; END ELSIF balance[imaxim] < CRITER[2][I] DO DISPLAY("Товара НЕТ на %d !!!\n",imaxim); LOST_clients[imaxim] := TRUE; dem[imaxim]:= dem[imaxim] + CRITER[2][I]; END END END_LOOP # определение количества покупателей по каждой фирме FOR J FROM 1 TO ss REPEAT CustF1 := CustF1 + QuanBuy[1][J]; END_LOOP FOR J FROM 1 TO ss REPEAT CustF2 := CustF2 + QuanBuy[2][J]; END_LOOP FOR J FROM 1 TO ss REPEAT CustF3 := CustF3 + QuanBuy[3][J]; END_LOOP clients[1]:= CustF1; clients[2]:= CustF2; clients[3]:= CustF3; # выявление фирмы-лидера max_cl:=0; FOR I FROM 1 TO g REPEAT IF clients[I]>max_cl DO max_cl: = clients[I]; leader := I; END END_LOOP DISPLAY("F1= %d\n",f); DISPLAY("F2= %d\n",f2); DISPLAY("F3= %d\n",f3); DISPLAY("Фирма-ЛИДЕР №%d\n",leader); DISPLAY("Остатки %3.2f, %3.2f, %3.2f\n", balance[1], balance[2],balance[3]); RETURN END OF FChoice
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» ОГЛАВЛЕНИЕ ПРЕДИСЛОВИЕ .......................................................................... 3 ВВЕДЕНИЕ .................................................................................. 5 Глава 1. Общая концепция интеллектуального агента и мультиагентной системы ......................................................... 9 1.1. Понятие и виды интеллектуальных агентов .................. 9 1.2. Функциональная структура интеллектуального агента.........................................11 1.3. Эмоционально-мотивированный интеллектуальный агент ......................................................................15 1.4. Параметрическое описание и ситуационная модель состояния агента .....................................................22 1.5. Структурно-параметрическая модель мультиагентной системы ..........................................33 Глава 2. Стратегии поведения и взаимодействия интеллектуальных агентов ...................................................... 39 2.1. Переговорные процессы взаимодействия агентов..........39 2.2. Ситуационная стратегия поведения агентов .................48 2.3. Интеллектуальные стратегии принятия решения и поведения агентов .................................................56 2.3.1. Градиентные стратегии ...................................56 2.3.2. Стратегии с факторным экспериментом .............60 2.3.3. Симплексные стратегии ...................................63 2.4. Индивидуальные и кооперативные ситуационные стратегии агентов ....................................................67 Глава 3. Программные средства имитационного моделирования агентов и мультиагентных систем ............... 82 3.1. Функциональная структура универсальной имитационной системы Simplex3 ...............................85 3.2. Объектно-ориентированное описание агентов в Simplex3 ..............................................................88 3.3. Имитационное моделирование в системе Simplex3 ........90 3.3.1. Библиотеки моделей и диалоговый интерфейс ....92 3.3.2. Организация эксперимента ..............................95
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Оглавление 349 3.3.3. Общий порядок подготовки моделей и проведения эксперимента ..............................97 3.4. Объектно-ориентированное моделирование агентов с непрерывной динамикой поведения в Simplex3-MDL 100 3.5. Дискретно-событийные имитационные модели в программной среде Simplex3-MDL ........................... 107 3.5.1. Средства и структура описания событий........... 107 3.5.2. Условные переходы в событиях....................... 111 Глава 4. Моделирование очередей и активных систем массового обслуживания в Simplex3..................................... 114 4.1. Мобильные компоненты и накопительные массивы .... 115 4.2. Система операций с мобильными компонентами ........ 121 4.3. Модель СМО с неоднородными заявками ................... 124 4.4. Агентно-ориентированная дискретно-событийная модель пассажирской железнодорожной станции ...... 129 Глава 5. Мультиагентное моделирование в Simplex3 ......... 138 5.1. Декомпозиция модели и соединение агентов .............. 140 5.2. Иерархические модели ........................................... 147 Глава 6. Процедурные элементы Simplex-MDL ................... 152 6.1. Собственные MDL-функции ..................................... 152 6.2. Внешние С-функции Simplex-MDL ........................... 159 6.3. Внешние С-процедуры ........................................... 165 Глава 7. Агентные технологии моделирования и имитации в Simplex3 ........................................................... 170 7.1. Мультиагентная модель с переговорными стратегиями ......................................................... 170 7.2. Мультиагентная модель с рефлексивным поведением агентов .................................................................... 187 7.3. Мультиагентная модель с интеллектуальными ситуационными стратегиями поведения агентов ........ 195 7.3.1. Средства и структура языка описания имитационного эксперимента Simplex-ЕDL ...... 196 7.3.2. Конкурирующие агенты с симплексной стратегией ценообразования в маркетинговой ситуации ..................................................... 212
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» 350 Оглавление Глава 8. Мультиагентное моделирование систем в Simplex3 ................................................................................ 223 8.1. Мультиагентная имитационная модель производственной системы перерабатывающего предприятия агропромышленного комплекса ............ 223 8.1.1. Агентная структура, модели и алгоритмы поведения агентов в логистической системе мясоперерабатывающего предприятия АПК .... 225 8.1.2. Мультиагентная модель логистической системы мясоперерабатывающего предприятия АПК......................................... 235 8.1.3. Организация и результаты имитационного эксперимента ............................................... 253 8.1.4. Организация эксперимента с оптимальными стратегиями в условиях неопределенности ....... 256 8.2. Мультиагентное моделирование образовательной системы накопления знаний ................................... 259 8.2.1. Параметрическое описание и динамика поведения обучаемого агента .......................... 261 8.2.2. Параметрическое описание и динамика поведения агента «преподаватель» .................. 266 8.2.3. Мультиагентная модель образовательной системы ....................................................... 269 8.3. Мультиагентное моделирование живых систем .......... 291 8.3.1. Транспортная мультиагентная модель клетки... 293 8.3.2. Мультиагентная иерархическая модель биологической клетки ................................... 305 Заключение.............................................................................. 320 Литература .............................................................................. 322 Приложения ............................................................................ 327 Приложение 1. Установка программного обеспечения универсальной имитационной системы Simplex3 ....... 327 Приложение 2. MDL-описание дискретно-событийной модели пассажирской железнодорожной станции ...... 331 Приложение 3. МDL-программы мультиагентного моделирования с ситуационной стратегией разрешения рыночного конфликта........................... 337
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Рис. 2.20. Процесс взаимодействия двух спокойных агентов при на чальных ценах Akt Price = {55, 49}, критериях эффективности страте гии Criterium {150, 100}; Person = {calm, calm} Рис. 2.21. Взаимодействие спокойного Seller1 и экспрессивно го Seller 2 агентов при ActPrice = { 55, 49 у.е.}, Criterium {150, 100 }; Person = {calm, nervous}
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Рис. 2.22. Взаимодействие двух экспрессивных агентов при ActPrice = { 55, 47 у.е.}, Criterium {150, 100 }; Person = {nervous, nervous} Рис. 4.2. График поступления деталей и заполнения секций на ком плектовочном конвейере
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Рис. 4.5. Графики изменения числа пассажиров на 1й (синяя линия) и 2й (красная линия) платформах Рис. 5.3. Графики изменения переменных состояния мультиагентной модели СedarBog
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Рис. 6.2. Изменение биомассы растений и фауны (красная, зеле ная и желтая линии соответственно) с учетом метеоусловий (синяя линия) Рис. 7.6. Процесс стабилизации рынка при стратегии эластичного ценообразования
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Рис. 7.7. Изменение доли рынка агентовпродавцов Рис. 7.19. График изменения цен конкурентов с различной эмоцио нальной реакцией
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Рис. 8.5. Накопление трех видов продукции первичной перера ботки в камерах хранения KamHranSbit: охлажденное мясо Ohl 1–3 (красная линия), замороженное мясо ZamPr (зеленая линия), замо роженные субпродукты ZamSPr (синяя линия) Рис. 8.12. Динамика восприятия и забывания информации в недель ном цикле: AgStud 1 — красная линия; AgStud 2 — синяя линия
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Рис. 8.18. Изменение энергии (красная линия) и содержания ве ществ (синяя линия) в окружающей среде Рис. 8.19. Накопление энергии (синяя линия) и веществ (белки, жиры, углеводы — зеленая, красная, оранжевая линии соответствен но) в аппарате Гольджи
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Рис. 8.20. Накопление энергии (красная линия) и веществ: жиров, белков, углеводов (соответственно зеленая, синяя, оранжевая линии) в ядре клетки в процессе ее деления Рис. 8.21. Фазы деления клетки: профаза (синяя линия), метафаза (красная линия), анафаза (зеленая линия) и телофаза (оранжевая линия)
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Минимальные системные требования определяются соответствующими требованиями программ Adobe Reader версии не ниже 11-й либо Adobe Digital Editions версии не ниже 4.5 для платформ Windows, Mac OS, Android и iOS; экран 10" Учебное электронное издание Серия: «Учебник для высшей школы» Ивашкин Юрий Алексеевич МУЛЬТИАГЕНТНОЕ МОДЕЛИРОВАНИЕ В ИМИТАЦИОННОЙ СИСТЕМЕ Simplex3 Учебное пособие Ведущий редактор Т. Г. Хохлова Художник В. Е. Шкерин Корректор Т. В. Евко Компьютерная верстка: Е. А. Голубова Подписано к использованию 24.03.20. Формат 125×200 мм Издательство «Лаборатория знаний» 125167, Москва, проезд Аэропорта, д. 3 Телефон: (499) 157-5272 e-mail: info@pilotLZ.ru, http://www.pilotLZ.ru
Copyright ООО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис» Ивашкин Юрий Алексеевич, доктор технических наук, профессор, почетный работник высшего профессионального образования Российской Федерации, профессор кафедры «Компьютерные технологии и системы» Московского государственного университета прикладной биотехнологии (МГУПБ), академик Международной академии информатизации и Международной академии системных исследований (МАСИ), председатель секции «Компьютерные системы в прикладной биотехнологии» МАСИ, член Национального общества имитационного моделирования. Является автором 12 монографий, учебных пособий и более 200 научных публикаций в области системного анализа и принятия оптимальных решений на основе структурно-параметрического и мультиагентного моделирования больших систем. Основные результаты научной деятельности связаны с разработками компьютерных технологий идентификации и прогнозирования ситуаций в автоматизированных системах обработки информации и управления, многокритериальной оптимизации биотехнологических систем, в том числе экспертной системы адекватного питания человека; агентных технологий и мультиагентных моделей маркетинговых, логистических, социальных и биологических активных систем.