Главная

Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Встроенные функции работы с массивами


 

Следующая группа функций – это функции работы с массивами чисел. К ним можно отнести функции 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.

 

m1
m2
m3
m4
m5
m6
k1
Ф.Н
А.Н
k2

Рис. 36. Кусочно-линейная аппроксимация

 

Механизм работы встроенной функции можно проиллюстрировать с помощью рисунка Рис 36. Предположим, что задается некоторая функция, зависящая от аргумента А.н. Задание этой функции осуществляется одномерным массивом типа м1/м2/м3/м4/м5/м6… , т.е. функция квантована. Квантование происходит по аргументу , начиная с начального значения аргумента К1 и далее через промежуток, равный шагу К2. Если в операторе задаются величины М, К1 и К2, то транслятор автоматически производит кусочно-линейную аппроксимацию между заданными точками мi.

В процессе работы аргумент может изменяться в любую сторону и с любым шагом независимо от начальных К1 и К2. Величины Ф.Н будут выбираться на аппроксимированной кусочно-линейной функции.

 

Пример 12. Адаптация модели склада функцией TABLE.

Каждый шаг на склад поступает товар, согласно следующей таблице:

Запасы
Поставки

 

Запасы могут иметь в процессе моделирования любое значение, начиная с нуля, а поставки будут соответствовать числу лежащему на соответствующей кусочно-линейной кривой. Так если запасы равны 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

Временные функции

Функция задержки (DELAY).

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

Ф.Н=DELAY(А.Н, В.Н)

где А.Н – задерживаемая величина

В.Н – время задержки.

В мнемонике системы ИМИТАК функция DELAY отображается следующим значком (Рис 42):

Ф.Н
А.Н
В.Н  

 


Рис 42:Идеограмма функции задержки

 

Функция одиночного импульса в определенный момент времени (PULSE).

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

Ф.Н = PULSE(А.Н)

где А – аргумент, переходящий в определенный момент времени из нулевого в единичное состояние.

Рассмотрим работу этих двух функций на следующем примере.

Пример 15: Построим имитационную модель для случая, когда одиночный сигнал поступает на склад во ВРЕМЯ равное 2 , а через два периода (во ВРЕМЯ=4) из него вычитается.

 

склад

 


Рис 43: Контур обратной связи с функцией PULSE

По приведенной диаграмме потоков рассматривается модель-программа и результаты пяти шагов моделирования

 

Таблица 26: Модель-программа склада с использованием одиночного сигнала

  ВРЕМЯ=1 ВРЕМЯ=2 ВРЕМЯ=3 ВРЕМЯ=4 ВРЕМЯ=5
; Склад          
У С.Н=С.П+ПОС.ПН-ВЫБ.ПН С.1=0 С.2=0 С.3=1 С.4=1 С.5=0
; Временной переход          
Д ВП.Н=CLIP(1,0,1,ВРЕМЯ) ВП.1=0 ВП.2=1 ВП.3=1 ВП.4=1 ВП.5=1
; Одиночный импульс          
Д ОИ.Н=PULSE(ВП.Н) ОИ.1=0 ОИ.2=1 ОИ.3=0 ОИ.4=0 ОИ.5=0
; Поступление          
Т ПОС.НБ=ОИ.Н ПОС.12=0 ПОС.12=1 ПОС.12=0 ПОС.12=0 ПОС.12=0
; Выборка          
Т ВЫБ.НБ=DELAY(ОИ.Н,2) ВЫБ.12=0 ВЫБ.12=0 ВЫБ.12=0 ВЫБ.12=1 ВЫБ.12=0
Е          
И С=0          

 



Последнее изменение этой страницы: 2016-08-11

headinsider.info. Все права принадлежат авторам данных материалов.