Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Изданная метод ИМИТАК.docx
Скачиваний:
3
Добавлен:
18.11.2019
Размер:
1.45 Mб
Скачать

§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