- •Ю.Н.Алексеев
- •Имитационное моделирование в системе имитак
- •Москва – 2007
- •На заседании кафедры экономической кибернетики
- •7 Ноября 2007 г., протокол № 7
- •Оглавление
- •§1. Концепция системной динамики, реализованная в системе имитак. 4
- •§2. Механизмы визуального мышления в системе имитак. . . 8
- •§3. Встроенные функции системы имитак. . . . . . 17
- •§4. Базы данных и система имитак. . . . . . . 60
- •§1 Концепция системной динамики, реализованная в системе имитак
- •Р ис. 2 Диаграмма потоков контура обратной связи
- •§2 Механизмы визуального мышления в системе имитак
- •§3 Встроенные функции системы имитак
- •Стохастические функции
- •Временные функции
- •Функции имитации систем массового обслуживания
- •§3.1. Элементарные функции
- •§3.2. Переключательные функции
- •§3.3. Стохастические функции
- •§3.4. Встроенные функции работы с массивами
- •§3.5. Временные функции
- •§3.6. Функции имитации систем массового обслуживания
- •§3.7. Графические (маргинальные) функции
- •3.7.1Паутинообразная модель рынка с запаздыванием спроса
- •3.7.2 Паутинообразная модель рынка с запаздыванием предложения.
- •3.7.3 Паутинообразные модели с обучением.
- •§4. Базы данных и система имитак
- •§4.1. Создание базы данных и ее заполнение
- •3)Создание модели, интегрированной с базой данных.
- •§4.2. Создание в операционной системе имени источника данных odbc (dsn- data source name).
- •§4.3. Создание модели, интегрированной с базой данных.
- •Заключение
§3.4. Встроенные функции работы с массивами
Следующая группа функций – это функции работы с массивами чисел. К ним можно отнести функции TABLE и QUANT
Табличная функция (TABLE)
Встроенная функция табличная (TABLE) позволяет получать произвольные функциональные зависимости от любого изменяющегося от времени аргумента. Характер зависимости определяется ограниченным числом точек задаваемой функции, которые транслятором автоматически аппроксимируются в виде кусочно-линейной функции. Общий вид функции:
Ф.Н= TABLE(М, А.Н, К1, К2)
где М – массив точек, принадлежащих данной функции. Этот массив обязательно определяется в модели-программе оператором следующего вида:
И М=м1/м2/м3/м4/м5/м6…
А. н – аргумент задаваемой функции. Связь между аргументами и точками функций определяется другими аргументами: К1 и К2
К1–значение аргумента функции, соответствующее начальной точке м1 в массиве М
К2 – шаг изменения аргумента, т.е. квантованное расстояние между проекциями точек функций, задаваемых массивом М на ось абсцисс. Так точке м2 соответствует аргумент К1+К2; точке м3 – аргумент К1+К2+К2 или К1+2К2.
Рис. 36. Кусочно-линейная аппроксимация
Механизм работы встроенной функции можно проиллюстрировать с помощью рисунка Рис 36. Предположим, что задается некоторая функция, зависящая от аргумента А.н. Задание этой функции осуществляется одномерным массивом типа м1/м2/м3/м4/м5/м6… , т.е. функция квантована. Квантование происходит по аргументу , начиная с начального значения аргумента К1 и далее через промежуток, равный шагу К2. Если в операторе задаются величины М, К1 и К2, то транслятор автоматически производит кусочно-линейную аппроксимацию между заданными точками мi.
В процессе работы аргумент может изменяться в любую сторону и с любым шагом независимо от начальных К1 и К2. Величины Ф.Н будут выбираться на аппроксимированной кусочно-линейной функции.
Пример 12. Адаптация модели склада функцией TABLE.
Каждый шаг на склад поступает товар, согласно следующей таблице:
Запасы |
0 |
150 |
300 |
450 |
600 |
750 |
900 |
1050 |
1200 |
1350 |
Поставки |
1000 |
900 |
800 |
700 |
600 |
500 |
400 |
300 |
200 |
100 |
Запасы могут иметь в процессе моделирования любое значение, начиная с нуля, а поставки будут соответствовать числу лежащему на соответствующей кусочно-линейной кривой. Так если запасы равны 600, то и поставки тоже 600, если запасы 500, то поставки равняются 666.7, если запас 1000, то поставки равняются 333.3 и т.д.
Диаграмма потоков такой модели будет
Рис. 37. Модель склада с функцией TABLE
Рассмотрим соответствующую данной диаграмме потоков модель-программу и четыре шага моделирования этой модели.
Таблица 22: Модель-программа склада, адаптированная функцией TABLE
-
ВРЕМЯ=1
ВРЕМЯ=2
ВРЕМЯ=3
ВРЕМЯ=4
; СКЛАД
У С.н= С.п+ ПОС.пн-ВЫБ.пн
С.1=600
С.2=700
С.3=766
С.4=750
; Входной темп склада
Т ПОС. нб=TABLE(МАС,С.н,0, 150)
ПОС.12=600
ПОС.23=566
ПОС.34=490
ПОС.45=506
; Выходной темп склада
Т ВЫБ.нб=В
ВЫ.Б.12=500
ВЫ.Б. 23=500
ВЫ.Б.34=500
ВЫ.Б.45=500
; Начальное значение уровня
И С=600
; Массив возобновления
И МАС=1000/900/800/700/600/500
/400/300/0
; Выдача
И В=500
Функция работы с массивами(QUANT)
Встроенная функция квантования (QUANT) выбирает определенное значение из массива, задаваемого заранее в модели-программе по значению ключа, в качестве которого выступает второй аргумент. Общий вид функции:
Ф.Н = QUANT(М, Ф.Н)
Где М – массив дискретных величин, задаваемых в виде оператора типа:
И М=м1/м2/м3/м4…
А.Н – аргумент функции, работающий как ключ в следующих режимах:
{режим 1} Если 0 А.Н>1, то берется очередной элемент m i из массива М
{режим 2} Если А.Н=1, то выборка запрещена
{режим 3} Если А.Н<0, то выбирается m i из массива М
где i=!А.Н!
Эта функция позволяет в определенный ключом период моделирования выбирать из массива последовательные значения. В отличие от табличной функции, где сначала происходит кусочно-линейная аппроксимация, а затем изменением аргумента определяется значение функции, в этой функции аргументом является ключ, а значение функции выбирается из массива. Такой последовательный выбор производится в режиме, который задан первым в выше приведенной формуле. Второй режим уравнения позволяет пропускать такт моделирования, не выбирая из массива М никакого значения, т.е. в этот момент Ф.н=0. Если в следующий момент 0 А.Н<1, то из массива М выбирается следующее по порядку значение м.
Специфичен третий режим, задаваемый рассмотренным ранее уравнением. При отрицательном значении ключа (А.Н) происходит автоматическое арифметическое округление А.Н, т.е. получаем целое отрицательное значение А.Н, которое является номером элемента массива М (А.Н берется по модулю, так как номера элементов положительны, а знак «минус» указывает на то, что выполняется третий режим).
При работе в первом режиме массив М используется циклически, т.е. выбираются последовательно значения м i, но когда все значения м i выбраны, то при очередном обращении к М берется снова первое значение массива м 1. При работе в третьем режиме, если номер элемента, определяемый !А.Н! больше, чем число элементов в массиве М, происходит программное прерывание с диагностикой ошибки.
Пример 13. Адаптация модели склада функцией QUANT
Проиллюстрируем эту функцию имитацией календаря. Предположим, что на склад товар поступает по вторникам и четвергам, а выдается ежедневно, кроме выходных дней (субботы и воскресенья). Для моделирования этого варианта создаются два массива:
И КПОС=0/1/0/1/0/0/0
И КВЫБ=1/1/1/1/1/0/
Рис 38: Диаграмма потоков модели, имитирующей календарь
Рассмотрим три шага моделирования приведенной выше модели, задавая произвольно значения функции EVENT.
Таблица 23:Модель-программа имитации календаря
Модель-программа |
Время = 1 |
Время = 2 |
Время = 3 |
; склад |
|
|
|
У С.Н=С.П+ПОС.ПН-ВЫБ.ПН |
С.1=100 |
С.2=80 |
С.3=110 |
; Поставка |
|
|
|
Т ПОС.НБ= П *QUANT(КПОС,0) |
ПОС.12=0 |
ПОС.23=50 |
ПОС.23=0 |
; Выборка |
|
|
|
Т ВЫБ.НБ= В*QUANT(КВЫБ,0) |
ВЫБ.12=20 |
ВЫБ.23=20 |
ВЫБ.23=20 |
; Начальные значения уровней |
|
|
|
И С=100 |
|
|
|
;Календарь поставок |
|
|
|
М КПОС=0/1/0/1/0/0/0 |
|
|
|
; Календарь выборки |
|
|
|
М КВЫБ=1/1/1/1/1/0/0 |
|
|
|
; Подача |
|
|
|
К П=50 |
|
|
|
; Выдача |
|
|
|
К В=20 |
|
|
|
В результате мы будем иметь следующий график:
Рис 39: Графические результаты моделирования календаря
Встроенная функция (TABLEY)
Данная функция является расширением функции TABLE. Такое расширение связано с тем, что в современной версии VisualImitak отсутствует использование многомерных массивов. Кроме того, в указанной версии массивы могут быть сформированы только в момент трансляции модели-программы на ИМИТАКе, а не с помощью эндогенных операторов. Необходимость в процессе моделирования создавать «иллюзию» варьирования массивов и привело к тому, что массивы могут сдвигаться.
Общий вид функции следующий:
Ф.Н =TABLEY(М, АРГ.Н, НЗА, ШИА, СД)
где аргументы М,АРГ.Н,НЗА,ШИА совпадают с аргументами функции TABLE, т.е.
М-массив точек М=м1/м2/м3/….
АРГ.Н – аргумент, который варьируется в процессе выполнения модели
НЗА – начальное значение аргумента, т.е. НЗА есть значение аргумента, соответствующего точке м1
ШИА – наг изменения аргумента, т.е. для точки м2 аргумент будет НЗА+ШИА, для точки м3 аргумент будет НЗА+2*ШИА и т.д.
СД – сдвиг по ординате всех значений точек массива М.
Пример 14.Для иллюстрации работы этой функции рассмотрим следующий пример: Построить фрагмент, где от одного и того же массива точек М строятся две кривые с помощью функций TABLE и TABLEY, причем вторая функция сдвигает кривую на 20 единиц относительно первой.
Рис 40 Диаграмма потоков сдвига массива чисел
Таблица 24: Модель-программа сдвига массива чисел
Модель-программа |
Время = 1 |
Время = 2 |
Время = 3 |
; |
|
|
|
Д D2.Н=TABLEY(M,ВРЕМЯ,2,1,конст) |
D2.1=120 |
D2.2=120 |
D2.3=70 |
; |
|
|
|
Д D1.Н=TABLE(M,ВРЕМЯ,2,1) |
D1.1=100 |
D1.2=100 |
D1.3=50 |
Е |
|
|
|
;------ Конец 1-ого раздела ----------------------- |
|
|
|
; |
|
|
|
М M=100/50/30/20/15/10/5/1 |
|
|
|
; |
|
|
|
К конст=20 |
|
|
|
Е |
|
|
|
;------ Конец 2-ого раздела ----------------------- |
|
|
|
Г ВРЕМЯ |
|
|
|
Е |
|
|
|
Рис 41: Графический сдвиг кривой
Таблица 25: Числовое значение сдвига кривых
D1 |
D2 |
M |
100 |
120 |
100 |
100 |
120 |
50 |
100 |
120 |
30 |
50 |
70 |
20 |
30 |
50 |
15 |
20 |
40 |
10 |
15 |
35 |
5 |