- •Введение
- •Лабораторная работа № 1 структурно-параметрическое моделирование систем
- •Теоретическое введение
- •Задание и порядок выполнения
- •Параметры биосырья (молока):
- •На базе статистических данных по формуле (1-1) сформирована матрица корреляционных коэффициентов связей между параметрами состояния системы (таблица 1.2). Матрица коэффициентов корреляции Rij
- •Матрица коэффициентов регрессии Pij
- •Матрица безразмерных характеристик связей Cij
- •Вопросы для самопроверки
- •Литература
- •Лабораторная работа № 2 идентификация аномальных состояний большой системы
- •Теоретическое введение
- •Задание и порядок выполнения работы
- •Варианты графов системы [2]
- •Вводится вектор текущих относительных отклонений x1,…,xn в виде
- •Ситуационная матрица аномального состояния системы Sij
- •Вопросы для самопроверки
- •Вопросы для самопроверки
- •Требования к отчету
- •Литература
- •Лабораторная работа № 4 статистическое моделирование производственных систем
- •Теоретическое введение
- •Задание и порядок выполнения работы
- •Контрольные задания для самопроверки
- •Программа
- •Требования к отчету
- •Литература
- •Лабораторная работа № 5 универсальная система имитационного моделирования simplex 3
- •Теоретическое введение
- •Компоненты модели, описываемые на объектно-ориентированном языке, объединяются в иерархические модели различной сложности структурными компонентами вышестоящего (верхнего) уровня.
- •Порядок выполнения работы
- •5.2. Общий порядок подготовки и проведения эксперимента с моделью в имитационной системе Simplex3
- •Изучить диалоговый интерфейс имитационной системы.
- •Изучить общий порядок подготовки модели
- •Внешние функции (External functions).
- •При этом в окне содержания появляется таблица с перечислением компонентов и версий. В рассматриваемом примере в окне появляются три
- •Для этого:
- •1). Выделить директорию priv и в ее контекстном меню задать команду New library…(создать новую библиотеку) и ввести имя новой модели.
- •5.2.4. Диалоговый интерфейс подготовки и проведения эксперимента с моделью в имитационной системе Simplex3
- •Задание и порядок выполнения работы
- •Вопросы для самопроверки
- •Требования к отчету
- •Литература
- •Для описания непрерывных процессов в каждом случае требуется дифференциальное уравнение. В комбинированных моделях дифференциальные уравнения могут дополняться дискретными событиями.
- •Задание и порядок выполнения работы
- •Вопросы для самопроверки
- •Требования к отчету
- •Литература
- •Лабораторная работа № 7 многомерные массивы в моделировании параметрических полей
- •Теоретическое введение
- •Задание и порядок выполнения работы
- •Требования к отчету
- •Вопросы для самопроверки
- •Литература
- •38 # Конец обслуживания
- •Листинг 8.1. Mdl- описание модели Queue
- •Задание и порядок выполнения работы
- •Варианты заданий*
- •Пример выполнения задания По заданному описанию построить и реализовать в универсальной имитационной системе Simplex3 mdl- модель сборочного конвейера.
- •Вопросы для самопроверки
- •Требования к отчету
- •Литература
- •Объектно-ориентированное моделирование систем
- •Теоретическое введение
- •Листинг 9.1. Базисный компонент Sun
- •Листинг 9.2. Базисный компонент Lake
- •Листинг 9.3. Компонент верхнего уровня Задание и порядок выполнения работы
- •Вопросы для самопроверки
- •Требования к отчету
- •Литература
- •Лабораторная работа № 10 многокомпонентная иерархическая модель
- •Задание и порядок выполнения работы
- •Вопросы для самопроверки
- •Требования к отчету
- •Литература
- •Лабораторная работа № 11 собственные функциональные компоненты
- •Задание и порядок выполнения работы
- •Вопросы для самопроверки
- •Требования к отчету
- •Литература
- •Лабораторная работа № 12 внешние с-функции и с- процедуры
- •Теоретическое введение
- •Листинг 12.1. Модель QueueExp
- •Листинг 12.2. С-функция для вычисления экспоненциально распределенных случайных чисел
- •Задание и порядок выполнения работы
- •Вопросы для самопроверки
- •Требования к отчету
- •Литература
- •Задание и порядок выполнения работы
- •Вопросы для самопроверки
- •Требования к отчету
- •Литература
- •Лабораторная работа № 14 мультиагентное моделирование систем в simplex 3
- •1. Теоретическое введение
- •2. Общее задание и порядок выполнения работы
- •3. Возможные варианты заданий
- •3.1. Моделирование маркетинговых ситуаций
- •3.2. Моделирование учебного процесса
- •3.4. Мультиагентное моделирование биологических систем
- •3.4.2. Имитационное моделирование динамического развития колоний и популяций микроорганизмов.
- •3.5.5. Объектно-ориентированное моделирование и имитация экологической системы.
- •4. Пример выполнения работы
- •И накопления знаний
- •В циклах учебного процесса
- •В цикле учебного процесса
- •Требования к отчету
- •Литература
- •Структурно-параметрическое описание технологических систем
- • Технологические режимы и параметры производства творога
- •Результаты наблюдений процесса производства кисломолочного продукта (ряженки жирностью 2,5%)
- •Корреляционная матрица тесноты связей между параметрами технологической системы производства ряженки жирностью 2.5%
- •Технологической системы производства ряженки жирностью 2.5%
- •Матрица безразмерных оценок множественной регрессии для технологической системы производства ряженки жирностью 2.5%
- •Пример ситуационной модели состояния технологической системы производства ряженки жирностью 2.5%
- •Результаты наблюдений процесса изготовления сметаны жирностью 15%
- •Корреляционная матрица тесноты связей между параметрами технологической системы производства сметаны жирностью 15%
- •Регрессионная матрица характера связей между параметрами технологической системы производства сметаны жирностью 15%
- •Безразмерная регрессионная матрица характеристик связей между параметрами технологической системы производства сметаны жирностью 15%
- •Пример ситуационной модели состояния технологической системы производства сметаны жирностью 15%
- •Результаты наблюдений процесса производства нежирного диетического творога
- •Регрессионная матрица характера связей между параметрами технологической системы производства нежирного диетического творога
- •Безразмерная регрессионная матрица характеристик связей между параметрами технологической системы производства нежирного диетического творога
- •Пример ситуационной модели состояния технологической системы производства нежирного диетического творога
- •Общий порядок создания пользовательского интерфейса с помощью внешней программы.
- •1. Создание пользовательского интерфейса с помощью внешней программы.
- •Межвидового взаимодействия.
- •2. Создание процедуры на языке edl, реализующей запуск пользовательского интерфейса и передачу исходных данных переменным модели сводится к следующему.
- •Листинг 1. Описание ввода исходных данных на языке Simplex-edl
- •4. Просмотр результатов моделирования.
Задание и порядок выполнения работы
Построить многокомпонентную модель CedarBog и задать поведение одного из компонентов при помощи внешней С- функции или С-прцедуры.
Ввести в ранее рассмотренные модели внешние функции-процедуры дискретных событий:
- очистка озера в модели CedarBog;
- отстрела плотоядных животных;
- изменение погодных условий;
- ввод нового более мощного хищника в трофическую модель межвидового взаимодействия;
- изменение экологической обстановки и т.п.
Вопросы для самопроверки
В чем главное отличие процедур и функций, используемых в Simplex3?
Объявление и вызов внешней С-функции в базисном компоненте.
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.
4. http://isgwww.cs.uni-magdeburg.de/sim/its/ws0506/download.html
Лабораторная работа № 13
ОРГАНИЗАЦИЯ ЭКСПЕРИМЕНТА В SIMPLEX 3
С ИСПОЛЬЗОВАНИЕМ ИНТЕРФЕЙСА И ВНЕШНИХ ПРОГРАММ
Целью работы является изучение синтаксиса и команд языка описания эксперимента Simplex-EDL в универсальной имитационной системе Simplex3 и приобретение навыков организации эксперимента для нахождения оптимальных решений с помощью объектно-ориентированной имитационной модели системы.
Теоретическое введение
Для удобства работы с моделью универсальная имитационная система Simplex3 включает в себя специализированный язык описания эксперимента Simplex-EDL (Experiment Description Language), обеспечивающий описание эксперимента с моделью и подключение внешних, автономных программ, написанных на любом языке программирования (Delphi, С++, VBA и др.).
Соединение модуля EDL–программы эксперимента с внешней программой осуществляется с применением двух текстовых файлов (рис. 13.1): program.in для передачи данных из блока EDL во внешнюю программу, и program.out из внешней программы в блок EDL.
Подключение внешних программ используется для создания интерфейса установки входных параметров имитационной модели и описания процедуры эксперимента в процессе поиска оптимальных решений.
Рис. 13.1. Соединение EDL-программы с внешней программой
Внешние программы, созданные пользователем, размещаются в папке edlprogs по адресу %USERPROFILE%\Simplex3\edlprogs\
Имя программы должно совпадать с именем файлов с расширением *.in и *.out (например: для программы test.exe, входной файл *.in будет иметь имя – test.in, а выходной файл имя – test.out). Входные и выходные файлы представляют собой хранилища данных, содержащие переменные, необходимые для использования в Simplex-EDL и внешней программе.
Синтаксическая структура описания эксперимента на Simplex-EDL сходна с языком описания моделей Simplex-MDL и имеет следующий вид:
EXPERIMENT < name >
VALUE SET
DECLARATION OF PROGRAMS
DECLARATION OF VARIABLES
BODY OF EXPERIMENT
END OF < name >
В блоке VALUE SET происходит объявление новых типов переменных, созданных пользователем, в разделе DECLARATION OF PROGRAMS объявляются внешние программы, в DECLARATION OF VARIABLES декларируются используемые в эксперименте переменные, а в разделе BODY OF EXPERIMENT описывается структура эксперимента.
Разделы VALUE SET и DECLARATION OF VARIABLES имеют сходную структуру описания с Simplex-MDL. Блоки DECLARATION OF PROGRAMS и BODY OF EXPERIMENT используются , соответственно, для вызова внешней программы и описания тела эксперимента.
Объявление внешней программы в блоке DECLARATION OF PROGRAMS имеет следующую синтаксическую структуру:
DECLARATION OF PROGRAMS
<Name_of_program> (typ_input_param_1, typ_input_param_n -->
typ_output_param_1, typ_output_param_n) ,
где:
<Name_of_program> - имя внешней программы,
typ_input_param_1, typ_input_param_n - объявление типа переменных
входных параметров;
typ_output_param_1, typ_output_param_n - объявление типа переменных
выходных параметров.
Например,
DECLARATION OF PROGRAMS
Lotka (LOGICAL --> REAL,..,REAL)
где Lotka - название внешней программы; LOGICAL - тип входной
переменной; REAL - типы выходных переменных.
Описание эксперимента в блоке BODY OF EXPERIMENT производится в системе команд Simplex-EDL, описывающих организацию эксперимента (таблица 13.1)
Таблица 13.1.
Команда |
Содержание |
UNSELECT |
Снять выделения со всех библиотек Simplex3. |
RESETBANK <путь к банку модели> |
Обнулить банк модели. |
CHECK <путь к компоненту модели> |
Проверить компонент модели. |
SELBANK <путь к банку модели > |
Выбрать банк модели. |
CRMODEL <имя создаваемой модели>, <имя компонента> |
Инсталлировать модель с указанным именем на основе выбранного компонента. |
ACTIVATE <имя модели> |
Активировать модель. |
CREXP имя эксперимента |
Создать эксперимент с указанием имени. |
SELEXP имя эксперимента |
Выбрать созданный эксперимент. |
CRRUN имя запуска, имя модели |
Создать запуск модели с именем запуска. |
SELRUN имя запуска |
Выбрать созданный запуск. |
OBSCOMPLETE <имя обсервера>, n, k, step |
Создать обсервер с заданным именем и параметрами запуска n, k, step, где n - время начала эксперимента, k - время конца эксперимента, step - шаг интегрирования эксперимента.
|
Окончание табл. 13.1
Команда |
Содержание |
ADDVAR <имя обесрвера>, <имя переменной_1>, <имя переменной_n> |
Записать в созданный обсервер имя наблюдаемых переменных. |
SETVAR <имя переменной>, значение |
Присвоить переменной вводимое значение. |
SIMULATE TO, время имитации |
Запуск имитации до заданного временит (в тактах). |
DRAW <имя обсервера#/имя модели/имя переменной>, present=Тип_представления |
Вывод на экран результатов имитации по выбранной переменной. Тип представления результатов: Line – графики; Table – таблица. |
SELEXP имя эксперимента |
Выбор эксперимента. |
DELEXP имя эксперимента |
Удаление эксперимента. |
DELMODEL имя модели |
Удаление модели. |
Рассмотрим пример организации эксперимента с расширенной моделью Лотки-Вольтерра c использованием внешней программы для создания интерфейса ввода исходных данных и матриц коэффициентов модели (рис. 13.2).
Рис. 13.2. Внешний интерфейс управления моделью Лотки-Вольтерра
Для создания нового эксперимента на языке Simplex-EDL в директории Procedures командой New Experiment Description из контекстного меню в открывшемся окне записывается EDL-описание эксперимента (например Expеriment) с вводом исходных данных через интерфейс в следующем виде:
EXPERIMENT Expеriment # Имя эксперимента
DECLARATION OF PROGRAMS # Блок объявления внешних команд
Lotka (LOGICAL --> REAL,..,REAL) # Объявление внешнего программного
# модуля Lotka
DECLARATION OF VARIABLES # Объявление используемых переменных
Run (LOGICAL) := TRUE, # Сигнал запуска внешней программы
ARRAY [3] XE(REAL) := 0, # Массив численностей популяций Xi
ARRAY [3] RE(REAL) := 0, # Массив собственных коэффициентов Ri
ARRAY [3][3] BE (REAL) := 0, # Массив коэффициентов взаимовлияния Bi,j
TE (REAL) := 2 # Время моделирования
BODY OF EXPERIMENT # Объявление блока описания эксперимента
UNSELECT; # Отменить выбор предыдущей модели
# в банке моделей Simplex3
RESETBANK <priv/LotkaVolterra>; # Обнулить банк моделей LotkaVolterra
# Проверить Version0, компонента Biosystem, банка модели LotkaVolterra
CHECK <priv/LotkaVolterra/Biosystem/Version0>;
SELBANK <priv/LotkaVolterra>; # Выбрать банк модели LotkaVolterra
# Создать модель ModBiosystem на основе компонента BiosystemProc
CRMODEL <ModBiosystem>, <Biosystem>;
ACTIVATE <ModBiosystemProc>; # Активировать модель ModBiosystem
CREXP BiosystemEx; # Создать эксперимент BiosystemEx
SELEXP BiosystemEx; # Выбрать эксперимент BiosystemEx
CRRUN Run1, ModBiosystem; # Создать запуск с именем Run1 модели # ModBiosystem
SELRUN Run1; # Выбрать созданный запуск Run1
OBSCOMPLETE <Obs1>, 0, 100, 0.01; # Создать обсервер с именем Obs1
ADDVAR <Obs1>, <X[1]>, <X[2]>, <X[3]>; # Внести в обсервер наблюдаемые # переменные Xi
# Присвоить переменным эксперимента данные из внешней программы
(XE[i], RE[i], BE[i,j], TE):=Lotka(Run);
# Присвоить переменным модели заданные во внешней программе значения
SETVAR <X1>, XE[1];
................................................
SETVAR <R1>, RE[1];
................................................
SETVAR <B3_3>, BE[3,3];
SIMULATE TO, TE; #.Запуск имитации до времени TE
DRAW<ObsVol #/BiosystemProc/X1>, # Представление результатов
# эксперимента (значений Xi) в виде
# графиков
<ObsVol#/BiosystemProc/X2>,
<ObsVol#/BiosystemProc/X3>, present=Line;
SELEXP BiosystemEx; # Выбрать эксперимент BiosystemEx
DELEXP BiosystemEx; # Удалить эксперимент BiosystemEx
SELMODEL ModBiosystem; # Выбрать модель ModBiosystem
DELMODEL ModBiosystem; # Удалить модель ModBiosystem
END OF Expеriment #Конец эксперимента Expеriment
Далее следует проверка синтаксиса эксперимента при помощи команды Check Procedure и запуск эксперимента при помощи команды Execute Procedure. После этого автоматически открывается интерфейсная форма (рис.13.2), в которую необходимо ввести все соответствующие исходные данные и запустить программу нажатием соответствующей кнопки.
В данном случае, исходными данными являются количество особей в каждой популяции и матрицы коэффициентов межвидового взаимодействия. Поскольку из блока EDL нет выходных данных, используется логическая переменная запуска эксперимента Run.
Пример кода внешней программы для создания экранной формы на языке Delphi имеет вид:
procedure TForm1.Button1Click (Sender: TObject); // Процедура кнопки "Запуск"
var // Объявление переменных, записываемых в файл .out
X,R :array[1..3] of Real; //Объявление массива X,R
B : array[1..3, 1..3] of Real; //Объявление массива B
T : real; //Объявление переменной T - время
i,j : integer;
// Объявление вспомогательных переменных, необходимых для работы с текстовым // файлом *.out
f:TextFile;
FileDir:String;
S : string;
buf : array[0..$FF] of char;
Size : integer;
Begin // Начало программы
s := '%USERPROFILE%\'; // Преобразование относительного пути
// к папке пользователя в абсолютный
Size := ExpandEnvironmentStrings(PChar(S), buf, sizeof(buf));
//Присвоение переменным значения текстовых полей
R[1] := StrToFloat (Edit1.Text);
..........................................................
X[1] := StrToFloat (Edit13.Text);
..........................................................
B[1,1] := StrToFloat (Edit4.Text);
...........................................................
B[3,3] := StrToFloat (Edit12.Text);
T := StrToFloat (Edit16.Text);
// Создание и запись переменных в файл Lotka.out
AssignFile(f,copy(buf, 1, Size)+'\simplex3\edlprogs\Lotka.out'); // Открытие файла Lotka.out
if not
FileExists(copy(buf, 1, Size)+'\simplex3\edlprogs\Lotka.out') //Проверка наличия данных
then
begin
Rewrite(f); //Очистка файла
CloseFile(f);
end;
Rewrite(f);
Append(f);
For i := 1 to 3 do //Запись в файл значений X
begin
Writeln(f,X[i]);
end;
For i := 1 to 3 do //Запись в файл значений R
begin
Writeln(f,R[i]);
end;
For i := 1 to 3 do //Запись в файл значений B
For j := 1 to 3 do
begin
Writeln(f,B[i,j]);
end;
Writeln(f,T); //Запись в файл значений T
Flush(f);
CloseFile(f); // Закрыть файл
Close; //Завершение программы после ввода и записи данных в файл
end;
После создания внешней исполняемой программы следует её копирование в папку edlprogs. После этого выполняется запуск эксперимента.
При загрузке интерфейсной формы (рис.13.2) открывается файл Lotka.exe и идет считывание выходной информации из него и запись в файл Lotka.out. Далее данные транслируются в переменные модуля EDL и присваиваются переменным MDL-модели, после чего автоматически производится запуск модели до указанного в эксперименте машинного такта и построение графиков.
Полное описание порядка создания пользовательского интерфейса с помощью внешней программы приведено в приложении 2.
