Методика выполнения моделей по системной динамике и составления потоковых диаграмм 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Методика выполнения моделей по системной динамике и составления потоковых диаграмм



4.3.1. Диаграмма потоков и накопителей

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

1. накопитель

2. поток

3. вспомогательная переменная

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

Накопители характеризуют статическое состояние системы, а потоки – ее динамику.

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

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

<входящий поток 1> + <входящий поток 2> … - <исходящий поток 1> - <исходящий поток 2> …

Значения входящих птоков, то есть, тех, которые увеличивают значение накопителя, добавляются, а значения исходящих потоков, соответственно, вычитаются из текущего значения накопителя.

Диаграмма потоков и накопителей в AnyLogic

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

Зависимости между накопителями и потоками отображаются в виде толстых желтых стрелок. Входящие потоки отображаются в виде стрелок, направленных от переменной потока к переменной-накопителю, в то время как исходящие потоки наоборот - от накопителя к потоку. Тонкие голубые стрелки отображают зависимости переменных. Стрелка, направленная от переменной A к переменной B означает, что переменная A упоминается в формуле переменной B.

Одной из особенностей AnyLogic является то, что стрелки зависимостей рисуются автоматически и всегда синхронизированы с формулами переменных диаграммы потоков и накопителей: стрелка зависимости от переменной A к переменной B автоматически появится на диаграмме, как только переменная A появится в формуле для переменной B и исчезнет, как только Вы исключите ее оттуда.

При необходимости Вы можете редактировать внешний вид стрелок зависимостей, а именно:

1. изменять цвета стрелок обоих типов,

2. графически редактировать дуги зависимостей переменных (изменять радиус закругления).

Таким образом, Вы сможете изменить внешний вид Вашей диаграммы потоков и накопителей, сделав ее более наглядной.

4.3.2. Накопители

Накопитель так же, как и поток, является основным элементом системно-динамических диаграмм потоков и накопителей. В системной динамике накопители используются для представления таких объектов реального мира, в которых сосредотачиваются некоторые ресурсы: например, материальные объекты, знания, люди и т.п. Значения накопителей изменяются с течением времени времени согласно входящим в них и исходящим из них потокам.

В AnyLogic накопитель задается с помощью элемента Накопитель.

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

Чтобы создать накопитель

1. Перетащите элемент Накопитель из палитры Системная динамика на диаграмму активного объекта (или эксперимента).

2. Перейдите на вкладку Основные панели Свойства и задайте формулу, определяющую значение накопителя. Введите правую часть дифференциального уравнения в поле d(<имя накопителя>)/dt =.

3. Задайте начальное значение накопителя в поле Начальное значение.

Основные свойства

Имя – Имя накопителя. Имя используется для идентификации накопителя и доступа к нему из формул других переменных.

Отображать имя – Если опция выбрана, то имя накопителя будет отображаться в графическом редакторе.

Исключить – Если опция выбрана, то накопитель будет исключен из модели.

На верхнем уровне – Если опция выбрана, то накопитель будет виден на презентации класса, в который будет вложен данный активный объект.

На презентации – Если опция выбрана, то накопитель будет отображаться на презентации во время выполнения модели.

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

d(<имя массива>)/dt = – Дифференциальное уравнение, определяющее, как будет изменяться значение накопителя с течением времени. Введите в этом поле правую часть уравнения.
Если это переменная - массив, то Вы можете добавить дополнительные поля, позволяющие задать формулы для каких-то определенных элементов или подмассивов данного массива. Чтобы добавить новый раздел свойств для задания еще одной формулы, щелкните по кнопке Добавить формулу. Задание формул для элементов массивов и подмассивов описано здесь.

Начальное значение – Начальное значение накопителя.
Если это переменная скалярного типа, то просто введите здесь ее значение. Если значение задано не будет, то автоматически будет подразумеваться, что начальное значение накопителя равно 0.
Если это переменная-массив, то ее проще инициализировать с помощью редактора начальных значений. Если Вы этого не сделаете, то автоматически будет подразумеваться, что все элементы массива изначально равны нулю.

Редактировать... - [Кнопка видна, если установлен флажок Массив] Кнопка открывает редактор начальных значений элементов массива. Инициализация массива (то есть, задание начальных значений его элементов) описана здесь.

Массив

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

Возможные размерности – Список доступных в модели размерностей.

Выбранные размерности – Список размерностей, которые будут играть роль размерностей этого массива.

С помощью этих свойств задаются размерности массива.
Более подробная информация дана в разделе Задание переменной-массива.

4.3.3. Потоки

Поток, так же, как и накопитель, является основным элементом системно-динамических диаграмм потоков и накопителей. Поток определяет интенсивность потока, ведущего от одного накопителя к другому.

Исходящий из накопителя поток уменьшает значение этого накопителя в каждую единицу модельного времени на значение этого потока, входящий - аналогично увеличивает значение того наокпителя, в который этот поток входит. Один и тот же поток может служить исходящим потоком для одного накопителя и входящим - для другого; в этом случае говорится, что это поток из первого накопителя во второй.

В AnyLogic поток задается с помощью элемента Динамическая переменная.

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

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

- поток
- вспомогательная переменная

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

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

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

2. AnyLogic создаст новую переменную-поток и сделает ее исходящим потоком для первого накопителя и входящим - для второго. Стрелки, появившиеся на диаграмме, будут обозначать влияние этого потока на накопители.

3. Перейдите на вкладку Основные панели Свойства и задайте формулу, определяющую значение переменной. Введите правую часть формулы в поле <имя переменной> =.

4. Если Вы хотите переименовать поток, воспользуйтесь специальным переименованием. Введите новое имя потока в поле Имя. Когда закончите, нажмите Ctrl+Enter, чтобы были переименованы также и все ссылки на эту переменную в формулах накопителей.

Основные свойства

Имя – Имя накопителя. Имя используется для идентификации накопителя и доступа к нему из формул других переменных.

Отображать имя – Если опция выбрана, то имя накопителя будет отображаться в графическом редакторе.

Исключить – Если опция выбрана, то накопитель будет исключен из модели.

На верхнем уровне – Если опция выбрана, то накопитель будет виден на презентации класса, в который будет вложен данный активный объект.

На презентации – Если опция выбрана, то накопитель будет отображаться на презентации во время выполнения модели.

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

Внешняя – Если опция выбрана, то поток будет постоянно принимать значение связанной с ним переменной.

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

<имя_потока>= – Формула, в соответствии с которой будет высчитываться переменной с течением времени.
Если эта переменная - массив, то Вы можете добавить дополнительные поля, позволяющие задать формулы для каких-то определенных элементов или подмассивов данного массива. Чтобы добавить новый раздел свойств для задания еще одной формулы, щелкните по кнопке Добавить формулу. Задание формул для элементов массивов и подмассивов описано здесь.

Массив

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

Возможные размерности – Список доступных в модели размерностей.

Выбранные размерности – Список размерностей, которые будут играть роль размерностей этого массива.

С помощью этих свойств задаются размерности массива.
Более подробная информация дана в разделе Задание переменной-массива.

4.3.4. Вспомогательные переменные

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

В AnyLogic вспомогательные переменные задаются с помощью элемента Динамическая переменная.

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

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

- поток
- вспомогательная переменная

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

Чтобы добавить вспомогательную переменную

1. Перетащите элемент Динамическая переменная из палитры Системная динамика на диаграмму активного объекта (или эксперимента).

2. Перейдите на вкладку Основные панели Свойства и задайте формулу, определяющую значение переменной. Введите правую часть формулы в поле <имя переменной> =.

3. Если Вы создаете переменную, значение которой будет оставаться постояннным, установите флажок Константа.

Основные свойства

Имя – Имя вспомогательной переменной. Имя используется для идентификации переменной и доступа к ней из формул других переменных.

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

Исключить – Если опция выбрана, то вспомогательная переменная будет исключена из модели.

На верхнем уровне – Если опция выбрана, то вспомогательная переменная будет видна на презентации класса, в который будет вложен данный активный объект.

На презентации – Если опция выбрана, то вспомогательная переменная будет отображаться на презентации во время выполнения модели.

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

Внешняя – Если опция выбрана, то переменная будет постоянно принимать значение связанной с ней переменной.

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

<имя переменной>= – Формула, в соответствии с которой будет высчитываться переменной с течением времени.
Если эта переменная - массив, то Вы можете добавить дополнительные поля, позволяющие задать формулы для каких-то определенных элементов или подмассивов данного массива. Чтобы добавить новый раздел свойств для задания еще одной формулы, щелкните по кнопке Добавить формулу. Задание формул для элементов массивов и подмассивов описано здесь.

Массив

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

Возможные размерности – Список доступных в модели размерностей.

Выбранные размерности – Список размерностей, которые будут играть роль размерностей этого массива.

С помощью этих свойств задаются размерности массива.
Более подробная информация дана в разделе Задание переменной-массива

4.3.5. Редактирование стрелок зависимостей

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

Зависимости между накопителями и потоками отображаются в виде толстых желтых стрелок. Входящие потоки отображаются в виде стрелок, направленных от переменной потока к переменной-накопителю, в то время как исходящие потоки наоборот - от накопителя к потоку.

Тонкие голубые стрелки отображают зависимости переменных. Стрелка, направленная от переменной A к переменной B означает, что переменная A упоминается в формуле переменной B.

Вы можете изменять внешний вид стрелок зависимостей, а именно:

· изменять цвета стрелок обоих типов,

· графически редактировать дуги зависимостей переменных (изменять радиус закругления).

Таким образом Вы сможете изменить внешний вид Вашей диаграммы потоков и накопителей, сделав ее более наглядной.

Чтобы изменить цвет стрелки зависимости

1. Выделите стрелку зависимости, щелкнув по ней в графическом редакторе.

2. На вкладке Основные панели Свойства выберите цвет с помощью элемента управления Цвет. Щелкните мышью внутри элемента управления и выберите нужный цвет из списка наиболее часто используемых цветов или же выберите любой другой цвет с помощью диалога Цвета.

Чтобы изменить радиус закругления стрелки зависимости

1. В графическом редакторе, перетащите мышью стрелку зависимости в сторону. Вы увидите, как в соответствии с Вашим действием изменится радиус дуги стрелки.

4.3.6. Инспектирование системно-динамических переменных

 

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

4.3.7. Табличные функции

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

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

Табличная функция работает следующим образом: пользователь задает функцию путем задания пар значений (аргумент, значение), т.е. определенного количества базовых точек графика XY. Основываясь на этих данных и на выбранном типе интерполяции, AnyLogic строит табличную функцию.

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

Чтобы задать табличную функцию

1. Перетащите элемент Табличная функция из палитры Системная динамика на диаграмму класса активного объекта (или эксперимента).

2. Перейдите на страницу Основные панели Свойства и задайте свойства табличной функции.

3. Введите имя функции в поле Имя.

4. Задайте данные табличной функции в таблице Табличные данные. Каждая пара Аргумент-Значение задается в отдельной строке таблицы. Чтобы задать новую пару "аргумент-значение", перейдите в последнюю строку таблицы и введите значение аргумента в ячейке Аргумент, а соответствующее этому аргументу значение функции - в ячейке Значение. Вы можете отсортировать данные по аргументу (в возрастающем порядке) с помощью кнопки Сортировать .

5. Если данные табличной функции уже заданы в каком-то файле или приложении, то Вы можете просто скопировать их в Буфер обмена, а затем вставить их в таблицу Табличные данные, щелкнув по кнопке Вставить из буфера .

6. Выберите тип интерполяции функции из выпадающего списка Интерполяция.

7. Выберите требуемый тип поведения функции при выходе аргумента за пределы заданного диапазона из выпадающего списка Если аргумент выходит за пределы.

График табличной функции Вы можете увидеть в секции предварительного просмотра на странице свойств этой функции. Красная область на этом графике обозначает область недопустимых значений функции.

Основные свойства

Имя – Имя табличной функции.

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

Исключить – Если опция выбрана, то табличная функция будет исключена из модели.

На верхнем уровне – Если опция выбрана, то табличная функция будет видна на презентации класса, в который будет вложен данный активный объект. Поскольку функции не могут отображаться на диаграмме класса верхнего уровня, этот флажок всегда сброшен и недоступен.

На презентации – Если опция выбрана, то табличная функция будет отображаться на презентации во время выполнения модели.

Уровень доступа – Уровень доступа к функции. Есть четыре уровня доступа:
private – функция доступна только из этого класса активного объекта
protected - функция доступна из этого класса активного объекта и его подклассов
default - функция доступна из любого места модели
public - функция доступна из всех открытых моделей.

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

Интерполяция – Тип интерполяции табличной функции:

Нет – Интерполяция не используется.

Ступенчатая – Ступенчатая интерполяция. Значение функции на интервале между двумя точками равно значению функции в точке с меньшим аргументом.

Линейная – Линейная интерполяция. Точки соединяются прямыми линиями.

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

Аппроксимация – Функция будет аппроксимирована полиномом порядка, заданного в поле Порядок, у которого сумма среднеквадратичных погрешностей в точках минимальна.

Если аргумент выходит за пределы – определяет, как ведет себя функция, если аргумент выходит за границы заданного диапазона:

Ошибка – Если аргумент будет лежать за пределами допустимой области, то будет показано сообщение об ошибке.

Ближайший – Для всех аргументов слева (справа) от допустимой области функция равна значению, которое она принимает в самой левой (правой) точке допустимой области.

Повторение – Функция делается периодической. Периодом функции будет являться ее диапазон значений.

Другой – Если аргумент будет лежать за пределами допустимой области, то табличная функция будет возвращать значение, заданное в соседнем с этой опцией поле Значение.

Экстраполяция – Функция экстраполируется за пределы области в соответствии с выбранным типом интерполяции.

Табличные данные – В этой таблице задаются данные табличной функции. Каждая пара Аргумент-Значение задается в отдельной строке таблицы. Чтобы задать новую пару "аргумент-значение", перейдите в последнюю строку таблицы и введите значение аргумента в ячейке Аргумент, а соответствующее этому аргументу значение функции - в ячейке Значение. Чтобы удалить какую-то пару значений, выделите соответствующую строку таблицы и щелкните по кнопке Удалить .
Если данные табличной функции уже заданы в каком-то файле или приложении, то Вы можете просто скопировать их в Буфер обмена, а затем вставить их в таблицу Табличные данные, щелкнув по кнопке Вставить из буфера .

Интерполяция табличной функции

Табличная функция может быть интерполирована. Возможные типы интерполяции перечислены ниже:

Нет – Интерполяция не используется.

Ступенчатая – Ступенчатая интерполяция. Значение функции на интервале между двумя точками равно значению функции в точке с меньшим аргументом.

Линейная – Линейная интерполяция. Точки соединяются прямыми линиями.

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

Аппроксимация – Функция будет аппроксимирована полиномом порядка, заданного в поле Порядок, у которого сумма среднеквадратичных погрешностей в точках минимальна.

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

Чтобы изменить тип интерполяции табличной функции

1. Выберите табличную функцию в графическом редакторе или в панели Проект.

2. На странице Основные панели свойств табличной функции выберите требуемый тип интерполяции из выпадающего списка Интерполяция.

Поведение функции за пределами допустимой области

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

Ошибка – Если аргумент будет лежать за пределами допустимой области, то будет показано сообщение об ошибке.

Ближайший – Для всех аргументов слева (справа) от допустимой области функция равна значению, которое она принимает в самой левой (правой) точке допустимой области.

Повторение – Функция делается периодической. Периодом функции будет являться ее диапазон значений.

Другой – Если аргумент будет лежать за пределами допустимой области, то табличная функция будет возвращать значение, заданное в соседнем с этой опцией поле Значение.

Экстраполяция – Функция экстраполируется за пределы области в соответствии с выбранным типом интерполяции.

Чтобы изменить поведение функции при выходе значения за пределы допустимой области

1. Выберите табличную функцию в графическом редакторе или в панели Проект.

2. На странице Основные панели свойств табличной функции выберите требуемый тип поведения функции из выпадающего списка Если аргумент выходит за пределы.

 

Доступ к данным табличной функции

Для того, чтобы получить значение, которое принимает табличная функция для заданного аргумента, вызовите табличную функцию (так же, как и обычную функцию) по ее имени, передав ей в качестве параметра значение аргумента. Например, если в Вашей модели есть табличная функция, названная lookup1, то для того, чтобы получить значение этой функции, соответствующее аргументу 5, вызовите метод:

lookup1(5);

Или же Вы можете воспользоваться методом табличной функции get(double x). Для рассмотренного выше примера вызов функции должен быть следующим:

lookup1.get(5);

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

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

4.3.8. Массивы

Решение некоторых проблем требует задания многоразмерных данных. Как и большинство других инструментов системной динамики, AnyLogic поддерживает переменные- массивы.

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

Массивы используются, когда:

1. Нужно хранить большое количество коэффициентов.

2. Нужно создать многоуровневую модель.

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

С помощью же массивов Вы можете создать такую многоуровневую модель на одной диаграмме. Рассмотренные характеристики удобно описываются с помощью перечислений: вместо того, чтобы создавать несколько различных моделей (по модели на каждую определенную группу населения), Вы можеете просто создать массив со следующими размерностями: Gender(male, female), Age(child, teenager, adult, aged) и SocialGroup(wealthy, middleclass, deprived). Такая модель будет более компактной, и производимые Вами изменения будут касаться не одного уровня, а всей многоуровневой модели.

Массивами в AnyLogic могут быть объявлены накопители, потоки, вспомогательные переменные, а также параметры.

 

Размерности

Размерности используются для задания размерностей переменных- массивов.

В AnyLogic размерности бывают трех типов:

1. Перечисления

1. Диапазоны

1. Подразмерности

Чтобы создать размерность

1. В панели Проект, щелкните правой кнопкой мыши по модели, с которой Вы работаете в данный момент, и выберите Создать|Размерность… из контекстного меню.

2. Появится диалоговое окно Новая размерность. Введите имя новой размерности в поле Имя, при желании введите описание размерности в поле Описание и щелкните по кнопке Готово.

Перечисления

Перечисление представляет собой набор поименованных элементов. Использование перечислений в качестве размерностей массива дает возможность обращения к элементам массива по имени. Например, если Вы создаете модель населения, то Вы можете задать возрастные группы с помощью перечисления Возраст с элементами: Ребенок, Подросток, Взрослый, Пожилой.
Другим примером перечисления в той же модели населения может служить, например, перечисление Регион (элементами перечисления будут штаты или области), и т.д.

Чтобы задать перечисление

1. Выберите размерность в панели Проект.

2. Перейдите на страницу Основные панели Свойства.

3. Выберите из группы кнопок Тип размерности опцию Перечисление.

4. Каждый элемент перечисления задается в отдельной строке таблицы Элементы. Чтобы задать новый элемент, перейдите в последнюю строку таблицы и введите имя элемента в ячейке Имя. Каждому элементу соответствует уникальный номер, задающийся в ячейке Значение.

5. Если Вы хотите удалить какой-либо элемент, выберите его в таблице и щелкните по кнопке .

Диапазоны

Диапазоны представляют собой задания интервалов, которые могут быть использованы для задания размерностей переменных-массивов. Когда Вы задаете размерности массива с помощью перечислений, Вы можете ссылаться на имена элементов массива по именам соответствующих элементов перечислений. Если же Вы задаете размерности массива с помощью числовых диапазонов, то элементы массива будут доступны не по именам, а по номерам элементов соответствующих размерностей.

Использование диапазонов позволит, например, расширить модель населения и отдельно задавать данные для всех отличающихся по возрасту людей - чтобы задать такую размерность, нужно указать в поле Диапазон этой размерности диапазон значений 1-30 (здесь каждый элемент будет соответствовать соответствующему возрасту). Будет создано 30 элементов - теперь Вы можете добавлять эту размерность в переменные-массивы Вашей модели и обращаться к любому из элементов соответствующей размерности массива по его номеру. Задать аналогичную размерность-перечисление из 30 элементов было бы значительно сложнее.

Диапазон значений может включать в себя несколько поддиапазонов, например: 5, 17-19, 25-40

Чтобы задать диапазон

· Выберите размерность в панели Проект.

· Перейдите на страницу Основные панели Свойства.

· Выберите из группы кнопок Тип размерности опцию Диапазон.

· Введите номера элементов, которые будут составлять диапазон, в поле Диапазон, например:
1-30

Подразмерности

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

Вы можете задать подразмерность как перечисления, так и диапазона.

Чтобы задать подразмерность

1. Выберите размерность в панели Проект.

2. Перейдите на страницу Основные панели Свойства.

3. Выберите из группы кнопок Тип размерности опцию Подразмерность размерности.



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 714; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.12.41.106 (0.142 с.)