Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МГУПБ. Лаб. практ.мод. сист. в печать конечная...doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
4.54 Mб
Скачать

Задание и порядок выполнения работы

  1. В многокомпонентной или иерархической модели задать поведение одного из компонентов при помощи внутренней MDL- функции.

  2. Ввести в виде собственной процедуры одно из дискретных событий:

- очистка озера в модели CedarBog;

- отстрел зайцев или лис в модели «хищники и жертвы»;

- изменение погодных условий;

- ввод паразитирующих видов в расширенной модели межвидового

взаимодействия;

- изменение экологической обстановки и т.п.

Вопросы для самопроверки

  1. Какие виды процедур и функций используются в Simplex3 ?

  2. Объявление и вызов функционального компонента в базисном компоненте.

3. Описание и назначение параметров входа и выхода в процедурном элементе.

4. Как осуществляется вызов процедуры-функции с одним и несколькими выходными параметрами?

Требования к отчету

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

Литература

1. Ивашкин Ю.А. Мультиагентное имитационное моделирование больших систем : учебное пособие / Ю.А. Ивашкин. – М. : МГУПБ, 2008. – 238 с.

2. Шмидт Б. Искусство моделирования и имитации. Введение в универсальную имитационную систему Simplex3 / Б. Шмидт; перевод с немецкого под редакцией Ю.А. Ивашкина и В.Л. Конюха. – Ghent, Belgium, 2003. – 550 с.

3. Schmidt B. The Art of modelling and simulation / B. Schmidt. – SCS - Europe BVBA, Ghent, Belgium, 2001. – 504 c.

Лабораторная работа № 12 внешние с-функции и с- процедуры

В SIMPLEX-MDL

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

Теоретическое введение

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

Внешние функции являются составной частью банка модели и хранятся в каталоге (директории) External functions (внешние функции). С-модули создаются через контекстное меню в каталоге External functions в двух вариантах:

- операцией Import для передачи существующих С-модулей из других библиотек или внешних источников;

- командой New external для создания новых С-модулей.

Внешние С-модули не ограничены описанием только одной внешней

С-функции и могут содержать столько функций, сколько требуется.

При вводе внешнего С-модуля соответствующее контекстное меню предлагает набор операций для управления Cut, Copy, Paste, Duplicate, Delete, Rename и Edit external. Кроме того, существуют ещё две операции Compile external (компилировать внешний модуль) и Reset (сбросить).

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

Внешние С-функции и С-процедуры объявляются в разделе LOCAL_DEFINITION с использованием ключевых слов C_FUNCTION или C_PROCEDURE аналогично внутренним MDL-процедурам, например:

LOCAL DEFINITIONS

C_FUNCTION <name> (<type 1>,< type 2> --> < type 3>),

где < name > - имя С-функции,

< type 1>,< type 2> - тип переменной входных параметров,

< type 3> - тип переменной выходного параметра

LOCAL DEFINITIONS

C_PROCEDURE Candidate (ARRAY [n ] [м] REAL, NTEGER,

REAL --> INTEGER, REAL, REAL)

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

<переменная> ::= <имя> (<входной параметр_1>,.., <входной параметр_n>)

или оператора обращения к процедуре со списком возвращаемых модельных величин, например:

(X, Y, Z) := Proc (M, D, Sigma); .

В качестве входных и выходных параметров могут быть константы, переменные и массивы.

Пример

В ранее рассмотренной модели Queue, содержащей источник, очередь, сервер и приемник, экспоненциально распределенные случайные числа задать не как RANDOM VARIABLES из описания компонентов, а как внешние C-функции Exp_Rand [2] (листинг 12.2, строка 4).

1 BASIC COMPONENT QueueExp

2 MOBILE SUBCOMPONENTS OF CLASS Customer1

3 LOCAL DEFINITIONS

4 C_FUNCTION Exp_Rand (REAL --> REAL)

5 DECLARATION OF ELEMENTS

6 STATE VARIABLES

7 DISCRETE

8 TArrive (REAL) := 0,

9 TWork (REAL) := 0,

10 Protocol (LOGICAL) := FALSE

11 LOCATIONS

12 WaitP (Customer1) := 0 Customer1,

13 Station (Customer1) := 0 Customer1,

14 Sink (Customer1) := 0 Customer1

15 DYNAMIC BEHAVIOUR

16 # поступление заявки

17 WHENEVER T >= TArrive

18 DO

19 WaitP^ : ADD 1 NEW Customer1;

20

21 TArrive^ := T + Exp_Rand (7.0);

22 IF Protocol DO

23 DISPLAY ("T= %f New customer created \n",T); END

24 END

25 # начало обслуживания

26 WHENEVER (NUMBER(Station)=0) AND (NUMBER(WaitP)>0)

27 DO

28 Station^ : FROM WaitP GET Customer1[1];

29 TWork^ := T + Exp_Rand (5.0);

30 IF Protocol DO

31 DISPLAY ("T= %f Customer enters station \n",T); END

32 END

…………………………………………………………………………………….

47 END OF QueueExp