Научная статья на тему 'Продукционная парадигма моделирования сложных объектов и систем'

Продукционная парадигма моделирования сложных объектов и систем Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
465
78
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПАРАДИГМА МОДЕЛИРОВАНИЯ / ПРОДУКЦИОННАЯ СИСТЕМА / ПРАВИЛА ПРОДУКЦИИ / ДИСКРЕТНО-СОБЫТИЙНАЯ МОДЕЛЬ / КОГНИТИВНЫЕ СТРУКТУРЫ ДАННЫХ / ИМИТАЦИОННЫЕ ЭКСПЕРИМЕНТЫ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Подлесных В. Г.

В работе обсуждаются некоторые особенности продукционной парадигмы моделирования сложных объектов и систем наряду с существующими парадигмами динамической, системной динамики, дискретно-событийной и агентной. В качестве языка и среды реализации используется свободно распространяемый язык CLIPS C Language Integrated Production System (NASA, USA). Продукционная парадигма может оказаться полезной для моделирования систем, функционирование которых включает в себя элементы разумного (интеллектуального) поведения с возможностью выбора лучшей по ситуации стратегии решения, а также систем, основанных на правилах со сложными предусловиями, требующими выполнения многочисленных запросов к текущим фактам.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Подлесных В. Г.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Продукционная парадигма моделирования сложных объектов и систем»

Продукционная парадигма моделирования сложных

объектов и систем

Подлесных В.Г.

Высшая Школа Экономики, кафедра ИТ АС vpodlesnyh@ yandex, ru

Аннотация. В работе обсуждаются некоторые особенности продукционной парадигмы моделирования сложных объектов и систем наряду с существующими парадигмами динамической, системной динамики, дискретно-событийной и агентной. В качестве языка и среды реализации используется свободно распространяемый язык CLIPS - С Language Integrated Production System (NASA, USA). Продукционная парадигма может оказаться полезной для моделирования систем, функционирование которых включает в себя элементы разумного (интеллектуального) поведения с возможностью выбора лучшей по ситуации стратегии решения, а также систем, основанных на правилах со сложными предусловиями, требующими выполнения многочисленных запросов к текущим фактам.

Ключевые слова: парадигма моделирования, продукционная система, правила продукции, дискретно-событийная модель, когнитивные структуры данных, имитационные эксперименты.

Интерес к моделированию на компьютере сложных объектов и систем развивался и углублялся, начиная с 50-х годов прошлого века, по мере расширения возможностей вычислительной техники, которая в 50-60-х годах уступала средствам аналогового моделирования по скорости "сборки" модели, но уже в 70-80-е годы намного превзошла их как по объему получаемой информации, так и по точности. Постепенно компьютерные модели вытеснили аналоговые и стали универсальным средством моделирования, управления и проектирования.

В настоящее время в основе моделирования на компьютере процессов и систем с помощью многочисленных коммерческих продуктов лежат четыре основные парадигмы [Карпов, 2009]: динамическая, системной динамики, дискретно-событийная и агентная. Динамический подход исходит из гипотезы о линейности системы в малых приращениях переменных, что позволяет формулировать зависимости в форме Коши: d(x)/dt = F(x,t), где t - модельное время, a F - алгебраическая функция. Процессы в системе описываются системами обыкновенных дифференциальных уравнений, а также событиями, меняющими либо среду, либо модель. К этому классу относятся системы управления, автоматического регулирования, физические и механические системы и прочие сравнительно простые системы, рассматриваемые в непрерывном времени - так называемые D-схемы [Советов, Яковлев, 2001]. Такие модели используют фундаментальные законы природы и принципы, не содержат неопределенностей в виде случайных величин и поэтому называются детерминированными.

К детерминированным моделям также относятся модели системной динамики, предложенные Дж. Форрестером, профессором Массачусетского технологического института (MIT) около 50 лет назад. Отличие состоит в том, что системная динамика абстрагируется от индивидуальных объектов (сотрудников, документов, товаров, станков) и рассматривает только агрегированные характеристики так называемых накопителей, содержащих нечто (даже если оно имеет дискретную природу), потоков перемещения содержимого накопителей, регуляторов потоков и причинно-следственные связи между ними. Парадигма моделирования, при которой строятся потоковые диаграммы причинно-следственных связей и взаимных влияний с последующей реализацией на компьютере, получила название системной динамики. Именно сложность взаимовлияний не позволяет рассматривать процессы в накопителях по отдельности. Считают, что системная динамика моделирует системное мышление в экономике, социальной сфере и экологии. Но для единства метафоры системной динамики и терминологии чаще всего используют "гидродинамическую" модель с накопителями жидкостей разной природы, потоками и их регуляторами. Простой пример с гидродинамической системой приведен в [Карпов, 2009, с.252].

Дискретно-событийная парадигма реализуется главным образом системами массового обслуживания (СМО). Такие системы оперируют дискретными потоками поступления и обслуживания заявок. Задача состоит в согласовании интенсивностей потоков с ресурсами при условии получения допустимых характеристик качества обслуживания (длина очереди, время ожидания, коэффициент загрузки приборов обслуживания и др.). Идея моделирования дискретных систем сформулирована более 40 лет назад Джеффри Гордоном и реализована в среде моделирования GPSS (General Purpose Simulation System). Язык GPSS ввел в моделирование парадигму потокового, или сетевого моделирования (flowchart или network-based modeling). В соответствии с этой парадигмой поток сущностей (сообщений, транзакций) - это поток объектов, который продвигается по структурной блочной диаграмме системы. Имитационное моделирование таких систем состоит в случайном порождении заявок на входе по заданному закону распределения и отслеживанию "судьбы" каждой заявки при прохождении всего процесса обслуживания с последующей статистической оценкой результатов. Модели класса М/М/m с простейшими экспоненциальными (Марковскими) потоками поступления и обслуживания заявок, с m-каналами и неограниченным числом мест ожидания (без потерь требований), могут быть разработаны в рамках нескольких парадигм: классической дискретно-событийной, простой агентной и с централизованным управлением потоками и ресурсами. Лучшие результаты дает последняя модель [Карпов,с.315]. Это свидетельствует в пользу более гибкой (по ситуации) парадигмы, чем

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

Агентная парадигма в некотором смысле противоположна парадигме системной динамики. Агентная парадигма применяется в случаях, когда интегральные характеристики и динамика всей системы выводятся из индивидуальных поведений многочисленных агентов, действующих в системе (рынки, конкуренция компаний, динамика населения). Поведение такой системы складывается из взаимодействий постоянно функционирующих в сети агентов между собой и со средой. Под средой можно понимать либо активный объект, в который вложены агенты, либо web-сеть. От этого зависят требования к автономности агентов и степени их интеллектуальности при поиске решения поставленных в общем виде задач. В первом случае модель можно назвать локальной, во втором -глобальной. В AnyLogic [Карпов] рассматриваются локальные модели. Управляет взаимодействием агентов активная среда (также объект) путем посылки сообщений в порт агента, модифицирования переменной или параметра агента, посылки сообщения об изменении состояния агента (по типу конечного автомата), вызова функции агента. Как видно, такой агент не имеет средств принятия решений и модификации правил поведения (интеллектуальности). При глобальном подходе агенты и агентно-ориентированное программирование рассматривают как очередную более высокую ступень развития программирования [Хьюз, 2004] с акцентом на интенциональные (когнитивные) характеристики агента: убеждения, желания, намерения (Beliefs, Desires and Intensions - BDI-характеристики). В эту модель также включена деятельность агента, связанная с его способностью к логическим рассуждениям при поиске решений, имитирующих деятельность эксперта. Таким образом, агент - это определенный тип активного объекта. Его реализация использует понятие класса (включая инкапсуляцию, наследование и полиморфизм). Он содержит набор поведенческих вариантов и атрибутов (BDI), а также методы, которые реализуют некоторую форму дедукции или индукции -цепочечного вывода на структурах данных, содержащих правила отношений между атрибутами или классами. Агенты и объекты по определению самодостаточны и автономны. Если степень автономности объекта превышает некоторый порог, он содержит когнитивные структуры данных BDI-типа и способен к выбору решения, то он становится агентом. Для агента характерно постоянное

функционирование в сети.

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

ситуации. Одним из подходов к моделированию такого типа систем является использование продукционной парадигмы, Продукционная парадигма не детерминирована (в отличие от рассмотренных парадигм), использует декларативный стиль программирования, при котором задано, "что" надо делать (правила, исходные факты и цель), а не "как" это делать. Пользователь выбирает определенный план (стратегию) поиска решения. На данном этапе исследований такая парадигма может быть реализована на объектно-продукционном языке CLIPS - С Language Integrated Production System. Она может оказаться полезной для моделирования: 1) сложных систем, функционирование которых включает в себя элементы рационального (разумного, интеллектуального) поведения с возможностью выбора лучшей стратегии решения; 2) систем со сложными предусловиями, требующими выполнения многочисленных запросов к фактам, модифицируемым дискретно в процессе поиска решения; 3) систем, основанных на нечетких знаниях, требующих количественной оценки альтернативных гипотез; 4) систем с возможностью добавления, модификации или удаления правил по ходу решения.

Словосочетание "production system" в названии языка переводится как порождающая система. Она состоит из "плоской" (не иерархической) базы правил, не связанных между собой и не имеющих возможности взаимного вызова. По существу, это модули со своим поведением, вызываемым текущими фактами. Модули помещены в объектную среду С. Каждое продукционное правило содержит условную левую часть (LHS - lef-hand side), осуществляющую запрос к фактам рабочей памяти по образцам (шаблонам), и правую исполнительную часть (RHS - right-hand side), в которой могут содержаться любые процедурные действия, доступные в языке С, включая работу с объектами, условные конструкции и операции порождения, удаления или модификации фактов и самих правил. Части соединены правой стрелкой. Продукции являются эмпирическими правилами. Их LHS и RHS логически не связаны между собой, в отличие от импликаций формальной логики. Правила напоминают конструкцию if-then процедурных языков программирования. Однако if-then конструкция выполняется при передаче ей управления в ходе последовательного выполнения команд программы в соответствии с заданным алгоритмом. В продукционной системе LHS всех правил вначале сопоставляются со всеми текущими фактами рабочей памяти (базы знаний) и те правила (модули), условия которых удовлетворяются этими фактами, переводятся в специальный список активизированных правил - агенду. Если в агенде более одного правила, они образуют конфликтное множество. Агенда упорядочивается по уменьшению приоритета правил в соответствии с выбранной стратегией выполнения (по новизне или старшинству фактов, что соответствует поиску в глубину или в ширину, по сложности или простоте условий и т.д.). Затем выполняется одно верхнее правило,

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

В качестве примера рассмотрим гибкий производственный комплекс механической обработки заготовок (ГПК) [Азбель,1986]. Под гибкостью понимается автоматическая переналадка гибких производственных модулей (ГПМ) при сменяемости изделий. Частая сменяемость фактически означает переменную плотность потоков. В связи с этим, если рассматривать период времени, намного превышающий период сменяемости, потоки можно смоделировать как случайные. Подобные системы относятся к классу систем массового обслуживания (СМО) и изучаются с помощью дискретно-событийного моделирования.

Имитационная модель является источником данных, которые могут быть получены при различных комбинациях значений входных переменных (управляющих воздействий). Очень часто модель вообще является единственным источником данных, анализ которых еще до построения самой системы позволяет выявить правила управления. Поэтому представляет интерес поиск закономерностей в сымитированных данных с помощью построения деревьев решений [Паклин, Орешков, 2010]. В этом случае появляется возможность моделирования наиболее сложных задач типа "что сделать, чтобы..." в отличие от более простых "что будет, если". Такое решение конкурентно способно известной дорогостоящей программе-оптимизатору OptQuest [Glover, Laguna, 1997], широко применяемой в ряде коммерческих продуктов, в основе которой лежат методы стохастической оптимизации: рассеянного поиска (scatter search) и поиска с запретом (tabu search).

Интересным элементом управления в CLIPS является возможность автоматического выбора выполняемого правила с помощью временной индексации фактов. Установка стратегии "в глубину" означает выбор и запуск на выполнение того правила, условия которого удовлетворяются наиболее "свежим" (с наибольшим индексом) фактом. Если это правило при его выполнении находит в БЗ следующий факт связи текущей вершины с соседней, то присваивает этому факту следующий индекс. Происходит повторное срабатывание того же правила от этого нового факта. Далее операции повторяются, что позволяет сымитировать

логический поиск "в глубину". Для рассматриваемой задачи более характерна установка прямо противоположной стратегии - "в ширину" (breadth). В этом случае будет запускаться правило, условия которого удовлетворены самым "старым" (с меньшим индексом) фактом, что отвечает стратегии FIFO (первым обслуживается тот, кто раньше пришел). Эти соображения позволили предпочесть язык CLIPS языку GPSS, среде моделирования Arena и раскрашенным сетям Петри (CPN). Две последние модели позже использовались для сравнительного тестирования.

В качестве физического объекта моделирования используется ГПК -гибкий производственный комплекс. Его сетевая модель показана на рис.1.

Рис 1. Сетевая модель ГПК: 0 - абстрактный узел - источник и сток заявок; С -

внешняя среда; 1 - одноканальный узел, соответствующий ГПМ №1; 2 -трехканальный узел, соответствующий ГПМ №№ 2,3,4; 3 - одноканальный узел, соответствующий ГПМ №5; ру - коэффициенты передач из ьго в уй узел.

Потоки поступения и обслуживания рассматриваются как случайные с заданными законами распределения и средними интенсивностями входных потоков А^ и потоков обслуживания по каждому >му наименованию изделий. При этом р] = Щщ < 1 - коэффициент загрузки, который характеризует вероятность застать заявку ^го наименования в канале обслуживания. Учитывается, что ГПМ могут выходить из строя. Среднее время восстановления (ремонта) считается заданным для каждого типа ГПМ. Моменты наступления отказов также являются случайными величинами с заданными законом распределения и интенсивностью потока отказов, равной среднему времени "наработки на отказ" данного типа ГПМ. Моделируемый ГПК также включает в себя транспортную тележку. Загрузка и разгрузка тележки происходят автоматически за постоянное время. Время пробега тележки пропорционально расстоянию ГПМ до склада-накопителя и определяется расчетным путем по скорости тележки. Считается, что тележка всегда стартует от склада-накопигеля, т.е. после выполнения очередной операции доставки тележка всегда возвращается к

складу. Таким образом, при обслуживании одной обобщенной партии изделий на данном ГПМ тележка совершит четыре пробега от склада-накопителя доГПМ.

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

В соответствии с парадигмой ООП программные объекты должны содержать всю информацию, которая необходима им для выполнения своих обязанностей. Каждая заявка - это объект класса ZAYAVKA, содержащий атрибуты: время поступления в систему, время активизации (постановки в очередь), технологический маршрут, текущий канал обслуживания, число выполненных операций. Количество заявок (небольших партий однотипных изделий) ограничено планом запуска на период моделирования Т. Следующим программным объектом является транспортная тележка, которая должна в своих слотах содержать информацию, необходимую для подсчета времени транспортных операций, время своего освобождения, место нахождения обслуживаемой заявки. Соответствующий класс получил имя TEL. Программными объектами также являются каналы обслуживания класса CANAL. Канал должен содержать сведения об узле своей принадлежности, индексе обслуживаемой заявки и времени ее активации, расстоянии от канала до склада, время освобождения, время окончания ремонта (в случае выхода из строя), типе заявки и штучном времени обслуживания изделия данного типа, суммарном время занятости и транспортного обслуживания.

Что касается физического объекта склада-накопителя, то ему нет необходимости сопоставлять программный класс, поскольку информацию о месте расположения заявки и расстояниях каналов от склада удобнее хранить в объектах трех вышеперечисленных классов.

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

более каналов обслуживания (ГПМ). Каналы одного узла взаимозаменяемы, но имеют различное расстояние до склада, что учитывается при расчете транспортного времени обслуживания заявки.

Одним из основных условий проведения конкурса заявок на обслуживание является незанятость тележки. Существует два типа маршрутов тележки в зависимости от места нахождения обслуживаемой заявки, выигравшей общий конкурс: склад - ГПМ, и ГПМ - склад. В первом случае канал считается занятым с момента выигрыша конкурса адресованной ему заявкой.

Каждая заявка (партия) содержит в слоте post время поступления для выполнения очередной фазы обслуживания. Время поступления на первую фазу обслуживания разыгрывается как случайная величина по заданному среднему значению интервала времени между заявками данного типа (pj) и заданной функции плотности распределения. Эту задачу выполняет правило startup, которое создает случайный план запуска заявок всех типов на весь период моделирования Т. Случайное время поступления заявок разыгрывается с помощью функции queue по экспоненциальному или другому заданному закону. Упрощенный код этой пользовательской функции на языке CLIPS для экспоненциального потока дан ниже, (deffunction queue (?pj ?j) (bind ?d (* ?pj ?pj) ; присвоить переменной d = pj2 (дисперсия) (bind ?y (/random 1 10000)10000))

(bind ?*ta* (+ ?*ta (abs (* ?pj (log ?y)))) ;log - натуральный логарифм

?*ta* ;глобальная переменная - возвращаемое время поступления очередной заявки

Однако заявки, содержащие в слоте post случайное время поступления, считаются пока не активизированными. Активизация заявки - это постановка ее в очередь к узлу. Активизация наступает в момент (такт), когда текущее модельное время ТТЕК, наращиваемое дискретно с заданным шагом, сравняется или незначительно превысит случайное время поступления заявки любого типа в слоте post. Выполнение этого условия проверяет правило time-tact, которое и устанавливает в результате случайное время активизации заявки. В начале каждого нового такта модельного времени правило compute-sum-queue подсчитывает накопленные к данному моменту очереди из активизированных заявок, адресованных конкретным узлам, суммируя их с подсчитанными очередями на предыдущих шагах. В конце периода моделирования Т накопленная очередь будет поделена на число тактов модельного времени и тем самым определена средняя длина очереди.

Следующей задачей является поиск свободных на данном такте каналов узлов. Эту задачу решает правило find-free-canals, если тележка свободна:

(defrule fînd-free-canals (tel free)

=>

( do-for-all-intances (?c CANAL)

(and (<= ?c:toscanal ?*TTEK*) (<= ?c:vrr ?*TTEK)) (bind ?x (send ?c get-uzel)) ; связать с ?x номер узла канала ?с (assert (free ?х ?с)))) ;поместить в память факт свободного канала ?с узла ?х

Здесь ?c:toscanal - время в слоте освобождения канала ?с; ?*ТТЕК* -текущее модельное время; ?c:vrr - время восстановления канала после ремонта;

Следующей задачей является проведение конкурсов на обслуживание как среди активизированных заявок, требующих обслуживания и находящихся на складе (правило concursl), так и среди обслуженных заявок, находящихся в каналах и требующих отвозки на склад (правило concurs2). Каждое из правил может сработать только при условии, что тележка свободна. Дополнительным условием срабатывания правила concursl является наличие факта о незанятости нужного канала обслуживания. Это правило пытается отыскать активизированную заявку, находящуюся на складе, у которой узел выполнения текущей операции соответствует свободному в данный момент узлу, и при этом не существует другой заявки с теми же свойствами и меньшим временем активизации в слоте tact. Кроме того, пока не определено точное время окончания обслуживания, надо сделать канал недоступным для участия в конкурсах. Для этого надо установить время его освобождения в слоте toscanal равным периоду моделирования Т, т.е. максимальному значению модельного времени.

Если конкурс FIFO по времени активизации выиграла заявка, находящаяся после обслуживания в канале, то обработчик сообщений тележки compute-time выполняет другой набор действий. Помимо расчета времени транспортировки заявки на склад и установки времени освобождения тележки, необходимо определить, не является ли выполненная операция последней. Для этого надо сравнить счетчик операций заявки с числом операций в маршруте. Если операция не последняя, счетчик увеличивают на 1, определяют по нему номер узла следующей операции и сообщают его заявке. Здесь же заявке устанавливают новое время поступлении в слоте post с учетом времени ожидаемой доставки на склад, а каналу сообщается время его

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

Описанные операции выполняются на каждом такте модельного времени. Для пошагового увеличения модельного времени служит правило time, срабатывающее в конце каждого цикла, кроме последнего.

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

Полный код программы моделирования с комментариями можно получить по адресу электронной почты автора: vpodlesnyh@yandex.ru. Программа в течение ряда лет используется в лабораторном практикуме по курсу "Моделирование систем". В отличие от "кнопочных" средств (Arena, AnyLogic и др.) программа обучает программированию операций моделирования.

Литература

[Азбель, 1986] Азбель В.О. Организационно-технологическое проектирование ГПС. Л.,"Машиностроение", 1986.

[Карпов, 2009] Карпов Ю.Г. Имитационное моделирование систем. Введение в моделирование с AnyLogic 5. СПб.: БХВ-Петербург, 2009, с.233.

[Паклин, Орешков, 2010] Паклин Н.Б.,Орешков В.И. Бизнес-аналитика: от данных к знаниям.: Учеб. Пособие, 2-е изд.- СПб.: Питер, 2010, с.428-465.

[Советов, Яковлев, 2001] Советов Б.Я., Яковлев С.А. Моделирование систем.: Учеб. для вузов, 3-е изд. Высшая школа,2001.

[Хьюз, 2004] Хьюз К., Хьюз Т. Параллельное и распределенное программирование на С++. Пер. с англ.- М.: Изд. дом "Вильяме", 2004, с. 427-462.

[Glover, Laguna, 1997] Glover F., Laguna M. Tabu search. - Klüver Academic Publishers, Boston, 1997.

i Надоели баннеры? Вы всегда можете отключить рекламу.