Классификация инструментальных средств имитационного моделирования

Классификация инструментальных средств имитационного моделирования по типу поддерживаемых ими подходов представлена в табл. 8.2.

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

Исторически системы имитационного моделирования разделились на два основных типа: языки имитационного моделирования и проблемно- ориентированные системы моделирования.

Таблица 8.2

Инструментальные средства, поддерживающие различные подходы в имитационном моделировании

Динамические

системы

Системная

динамика

Дискретное событийное моделирование

Агентное

моделирование

Dynamo, PowerSim, MIMIC, АРТОН MIDAS, PACTOLUS, CSSL, СЛАМ, GASP, НЕДИС, МИКС, MATLAB Simulink, Multisim, VisSim, LabView, Easy5, MvStudium и др.

AnyLogic,

Arena,

SimBioSys,

eM-Plant,

Tecnomatix,

Plant

Simulation,

SimuLab,

VenSim,

PowerSim,

Pilgrim,

Dynamo, Stella, Ithink и др.

AnyLogic, Arena, Ex-tend, PowerSim Studio, Witness, ProMadel, Actor Pilgrim, Taylor Simulation, GPSS, SimScript, Quest, SIMULA, SIMUL8, Modelling, SimProcess, Auto Mod, Enterprise Dynamics, FlexSim и др.

AnyLogic, Swarm+MAML, SimAgent, SimBioSys, C++, Java, AgentSpeak, Oz, TeleScript, RePast, NetLogo, Ascape, Mason и др.

Классификация инструментальных средств имитационного моделирования

Рис. 8.7. Классификация инструментальных средств имитационного моделирования

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

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

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

Системы имитационного моделирования с точки зрения разработчика модели имеют несколько преимуществ по сравнению с универсальными ЯП и ПМП:

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

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

  • • ограниченность форм вывода результатов моделирования набором стандартных форм;
  • • недостаточная распространенность языков моделирования (как правило, они не входят в стандартное программное обеспечение операционных систем);
  • • необходимость дополнительного обучения языкам моделирования и, как следствие, недостаток программистов, владеющих языками моделирования;
  • • отсутствие присущей универсальным ЯП гибкости.

Приведем три примера построения имитационной модели простейшей системы массового обслуживания: средствами систем MATLAB (ПМП общего назначения), AnyLogic (система имитационного моделирования) и GPSS World (система имитационного моделирования). Под простейшей системой массового обслуживания будем понимать одноканальную систему с отказами. Будем предполагать, что:

• входящий поток заявок простейший, т.е. интервал между поступлениями заявок — случайная величина, подчиняющаяся экспоненциальному закону с параметром (lambda 1), первая заявка поступает в систему

в момент t = 0;

  • • длительность обслуживания заявки — случайная величина, подчиняющаяся экспоненциальному закону с параметром Х2 (lambda2);
  • • используется механизм продвижения модельного времени по существенным моментам времени;
  • • моделируется работа системы на промежутке [0; Тк(т]
  • • в качестве показателей эффективности системы фиксируются вероятность обслуживания и среднее время занятости обслуживающего прибора.

Пример 8.1

Для построения модели средствами системы MATLAB необходимо сформулировать алгоритм изменения состояний системы в любом удобном для разработчика виде (например, как на рис. 5.8), затем реализовать его в виде дг-кода. Один из возможных вариантов представлен ниже.

lambdal =2; % интенсивность входящего потока

lambda2 =2; % интенсивность обслуживания

Tkon =100; % время наблюдения за системой

TIN =0; % время поступления первой заявки

Т = TIN;

ТО = TIN - log(l - rand)/lambda2;% время освобождения прибора CPLUS =1; % счетчик обслуженных заявок

CMINUS =0; % счетчик заявок, получивших отказ

while (T(end) < Tkon) && (TIN < Tkon)

TIN = TIN-log(1-rand)/ lambdal;

T = [T,TIN]; if TIN < TO,

CMINUS = CMINUS + 1; else TO = TIN - log(l - rand)/lambda2;

CPLUS = CPLUS + 1; end

subplot(221); bar([CPLUS;CMINUS],'r') % анимация

title('Обслужено Отказано') axis([0.5 2.5 0 120]); pause(.03)

end text(1.2/.9, sprintf(’ lambdal = %g, lambda2 = %g’, round ([ lambdal ... Iambda2 ] *1еЗ) /1еЗ) , ' sc ' ) text(1.2,.6, sprintf('Обслужено — %g, отказано — %g', round ([CPLUS ... CMINUS ] * 1еЗ) /1еЗ) , ’ sc 1 )

text (1.2 ,.4, sprintf ('Вероятность обслуживания — %g', ... round([CPLUS/(CPLUS+CMINUS)]*1е2)/1е2),'sc') text (1.2,. 2, sprintf (f Среднее время занятости — ... %g', round(mean(TO total)*1е2)/1е2),'sc')

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

Результат моделирования работы простейшей СМО средствами системы MATLAB

Рис. 8.8. Результат моделирования работы простейшей СМО средствами системы MATLAB

Пример 8.2

Для построения имитационной модели средствами систем AnyLogic можно воспользоваться базовым шаблоном, предназначенным для разработки дискретно-событийных моделей (рис. 8.9).

Выбор шаблона модели в диалоговом окне AnyLogic

Рис. 8.9. Выбор шаблона модели в диалоговом окне AnyLogic

При этом Мастером создания модели будет автоматически создана диаграмма простейшего процесса (рис. 8.10).

Фрагмент диалогового окна Any Logic при построении модели СМО

Рис. 8.10. Фрагмент диалогового окна Any Logic при построении модели СМО

Дальнейшие действия разработчика модели сводятся к добавлению объектов библиотеки из Палитры на диаграмму класса активного объекта и изменению значений свойств объектов. В нашем примере это:

  • • source — генерирует заявки с задаваемым законом распределения интервалов между их поступлениями (экспоненциальное распределение с параметром lambdal);
  • • queue — моделирует очередь заявок, ожидающих обслуживания (в нашем примере отсутствует);
  • • selectOutput — развилка: если обслуживающий прибор занят (delav.size() > 0), то заявка отклоняется;
  • • sinkl — «уничтожает» поступившие заявки. Обычно такой объект используется в качестве конечной точки траектории заявки. В нашем примере объект выводит из модели заявки, получившие отказ;
  • • delay — задерживает заявку на обработку с длительностью, задаваемой законом распределения (экспоненциальное распределение с параметром lambda2);
  • • sink — «уничтожает» обслуженные заявки.

В поле «Действие при выходе» добавим строки кода:

if(sink.count() + sinkl.count() = (source.maxArrivals) &&

finish == false){ // расчет вероятности обслуживания

percentage = sink.count();

percentage = percentage/(percentage + sinkl.count ());

text.setText(«percentage of served agents = «+Math.

ceil(percentage*roundTo)/roundTo); // расчет загруженности

обслуживающего прибора

text2.setText("device load rate = "+Math.ceil(delay.

statsUtilization.mean()*roundTo)/roundTo); // завершение

эксперимента

finish = true;

finishSimulation () ;

}

Результат моделирования представлен на рис. 8.11.

Puc. 8.11. Результат моделирования работы простейшей СМО средствами системы AnyLogic

Пример 8.3

На рис. 8.12 представлена схема функционирования простейшей СМО с использованием операторов системы GPSS для обозначения основных событий.

Puc. 8.12. Схема работы простейшей СМО в терминах GPSS

События, возникающие в моделируемой СМО:

  • • появление заявки в системе (GENERATE);
  • • вход заявки в очередь (QUEUE);
  • • определение занятости обслуживающего прибора (SEIZE): если прибор занят, то заявка покидает систему, если свободен — то входит в канал обслуживания;
  • • выход требования из очереди (DEPART);
  • • обслуживание требования в канале обслуживания (ADVANCE);
  • • освобождение канала обслуживания (RELEASE);
  • • выход требования из системы (TERMINATE).

Программный код приведен на рис. 8.13.

Моделирование работы простейшей СМО средствами системы GPSS World

Рис. 8.13. Моделирование работы простейшей СМО средствами системы GPSS World

Приведенный код содержит два сегмента. Первый описывает «историю» заявки в системе: оператор GENERATE формирует заявку, поступающий через интервал времени, распределенный но экспоненциальному закону (первый аргумент функции Exponential указывает номер генератора, второй — смещение распределения, третий — среднее значение). Заявка становится в очередь QUEUE (имя ОСН), пытается занять (SEIZE) устройство (имя PROCE). Если устройство свободно, то заявка задерживается в нем (ADVANCE) на интервал времени с показательно распределенной длительностью (обслуживание). По истечении этого интервала времени оператор RELEASE освобождает канал PROCE, и «история» заявки заканчивается (TERMINATE). Во втором сегменте генерируется транзакт, обеспечивающий завершение моделирования по значению таймера.

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

Обратите внимание!

Показатели эффективности СМО являются случайными величинами, поэтому для оценки их значений следует выполнить значительное число прогонов имитационной модели. Сколько — зависит от требуемой точности результата, точности входных данных информации, серий экспериментов с имитационной моделью.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >