Гордеев А.С. Моделирование в агроинженерии - файл n1.doc

Гордеев А.С. Моделирование в агроинженерии
скачать (2046.7 kb.)
Доступные файлы (1):
n1.doc3932kb.03.12.2007 20:56скачать

n1.doc

1   2   3   4   5   6   7   8   9   10


Рис.10.13. Диаграмма созревания плодов в садах Z1, …, Z4, Zoptmax , Zoptmax-

максимальное и минимальное значения оптимальной зрелости.



Рис.10.14. Диаграмма урожайности в садах U1, …, U4.


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

10.6. Моделирование работы дизель генераторной установки

на общую сеть в системе SimPowerSystems
Постановка задачи. Пусть имеется асинхронный электродвигатель, приводя-щий в движение насос для перекачки воды в водопроводной системе района мощ-ностью Pn=2250 л.с. на напряжение Un=2.4 kВ (в разделе для лучшего понимания модели используются не системные единицы- как в демонстрационном примере Matlab). Система не должна допускать перерывов в водоснабжении района с точки зрения обслуживания как основных потребителей – предприятияй района, так и жителей. Иногда по разным причинам (отказы электрооборудования, грозовые перенапряжения, прорывы трубопроводов и тп.) насосный асинхронный электрод-вигатель может отключиться, что вызывает:

- перерывы в подаче воды на определенное время;

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

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

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

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

Имитационная модель. Имитационная модель - схема системы электроснаб-жения при совместной работе дизель-генератора и сети на асинхронный двигатель насоса в системе SimPowerSystems приведена на рис.10.15.

К шинам B1 подходит основная электрическая сеть мощьностью P= 1000 MВА c напряжением U= 25 kВ. На нее подсоединен потребитель электроэнергии мощностью 5 MВт, а для защиты имеется блок трефазной защиты от перенапряже-ний 3-Phase Fault.

С шин B1 через трехфазный выключатель 3 - Phase Breaker энергия подается на трансформатор 25 kВ/2.4 kВ мощьностью 6 MВА, а далее- на электродвигатель ASM 2250 л.с. Параллельно этому двигателю подсоединена нагрузка мощностью 1 MВт.

Для повышения надежности электроснабжения электродвигателя насосной станции к ней на параллельную работу подсоединяется синхронный дизель- гене-ратор SM 3.125 MВА, подключенный в сеть на низкой стороне трансформатора 25 kВ/2.4 kВ. Для визуального контроля параметров сети, генератора и двигателя имеются соответствующие измерительные приборы (scope) - SM, Va и ASM.

Условия работы системы. В нормальном режиме работы электрической сети электродвигатель насоса ASM работает в номинальном режиме с механической нагрузкой, моделируемой блоком Torque. Дизель-генераторная установка не рабо-тает. Соответствующие параметры электродвигателя насоса устанавливаются с помощью открывающегося меню.
Рис.10.16. Управление дизель генератором блоком Diesel Engine Speed&Voltage Control.

При колебаниях (снижении) напряжения электрической сети механический момент, развиваемый двигателем насоса, начинает колебаться (снижаться). В этот момент необходимо ввести в действие дизель-генераторную установку. Ввод в дей-ствие дизель-генераторной установки осуществляется подачей на обмотку возбуж-дения ее синхронного генератора SM соотвтетствующего напряжения. Управление подачей напряжения возбуждения синхронного генератора SM для работы дизель-генератора осуществляется блоком Diesel Engine Speed&Voltage Control, Simulink- схема которого приведена на рис.10.16.

Блок GOVERNOR & DISEL ENGIN определяет мощность дизеля, необходи-мую для работы генератора, а блок EXCINATION моделирует систему возбужде-ния и определяет выходное напряжение генератора в виде Simulink- блоков.

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

Экспериментирование. С помощью данной модели можно задавать разные механические нагрузки асинхронного двигателя насоса, колебания напряжения и наблюдать переходные процессы напряжения в сети, механические моменты дви-гателя насоса и дизельного двигателя генератора, а также напряжение возбуждения и выходное напряжение генератора. Можно изучать влияния параметров электрических машин- сопротивле-ний роторов, статора, инерционных масс на процесс поддержания напряжения в сети при различных ситуациях. На рис.10.17. показаны некоторые характеристики исследования режимов работы сети - ее переходные характеристики.
Рис.10.33. Переходные характеристики сети с дизель-генератором.

Приложения
Приложение к главе 6. Библиотека Simulink
6.1. Sources - источники сигналов.

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



Источник синусоидального сигнала Sine Wave. Он формирует синусоидаль-ный сигнал с заданной частотой, амплитудой, фазой и смещением.

Источник линейно изменяющегося воздействия Ramp. Формирует линейный сигнал вида

y = Slope* time + Initial value.

Параметры сигнала:

1. Slope — Скорость изменения выходного сигнала.

2. Start time — Время начала формирования сигнала.

3. Initial value — Начальный уровень сигнала на выходе блока.

На Рис. П6.2. показано использование данного блока.
Рис. П6.2. Блок Ramp.




Генератор ступенчатого сигнала Step. Формирует ступенчатый сигнал с параметрами:

Step time - Время наступления перепада сигнала (с).

Initial value - Начальное значение сигнала.

Final value - Конечное значение сигнала.

На Рис. П6.3. показано использование генератора ступенчатого сигнала.

Генератор сигналов Signal Generator. Формирует один из четырех видов периодических сигналов:

sine — Синусоидальный сигнал.

square — Прямоугольный сигнал.

sawtooth — Пилообразный сигнал.

random — Случайный сигнал.

Параметры сигнала:

Wave form – Вид сигнала.

Amplitude – Амплитуда сигнала.

Frequency - Частота (рад/с).

Units – Единицы измерения частоты.

Рис. П6.3. Блок Step.
Источник случайного сигнала с равномерным распределением Uniform Random Number. Предназначен для формирования случайного сигнала с равномерным распределением.

Источник случайного сигнала с нормальным распределением Random Number.

Формирует случайный сигнала с нормальным распределением уровня сигнала с параметрами:

Mean - Среднее значение сигнала

Variance- Дисперсия (среднеквадратическое отклонение).

Initial seed – Начальное значение.
6.2. Sinks - приемники сигналов.

Осциллограф Scope. Строит графики исследуемых сигналов в функции време-ни. Позволяет наблюдать за изменениями сиг-налов в процессе моделирования. Изображе-ние блока и окно для просмотра графиков показаны на рис. П6.4.
Рис. П6.4. Осциллограф Scope
Если на вход блока поступает векторный сигнал, то кривая для каждого элемента вектора строится отдельным цветом. Настройка окна осциллографа выполняется с помощью панелей инструментов.

Цифровой дисплей Display. Отображает значение сигнала в виде числа.

Параметры чисел:

Format – формат отображения данных. Параметр Format может принимать следующие значения:

short – 5 значащих десятичных цифр.

long – 15 значащих десятичных цифр.

short_e –5 значащих десятичных цифр и 3 символа степени десяти.

long_e – 15 значащих десятичных цифр и 3 символа степени десяти.

bank – "денежный" формат. Формат с фиксированной точкой и двумя десятичными цифрами в дробной части числа.

Decimation – кратность отображения входного сигнала. При Decimation = 1 отображается каждое значение входного сигнала, при Decimation = 2 отображается каждое второе значение, при Decimation = 3 – каждое третье значение и т.д.

Sample time – шаг модельного времени. Определяет дискретность отображения данных.

На рис. П6.5. показано применение блока Display с использованием различных вариантов параметра Format. Блок Display может использоваться для отображения не только скалярных сигналов, но также векторных, матричных и комплексных.
6.3. Continuous – аналоговые блоки.

Блок вычисления производной Derivative. Выполняет численное дифференци-рование входного сигнала. Для вычисления производной используется приближен-ная формула Эйлера:

,

где u – величина изменения входного сигнала за время t,

t – текущее значение шага модельного времени.




Рис. П6.5. Применение блока Display с использова-нием различных вариантов параметра Format.
Значение входного сигнала блока до начала расчета считается равным нулю. Начальное значение выходного сигнала также полагается равным нулю. Точность вычисления производной существенно зависит от величины установлен-ного шага расчета. Выбор меньшего шага расчета улучшает точность вычисления производной. На рис. П6.6. показан пример использования дифференцирующего блока для вычисления производной прямоугольного сигнала.

Интегрирующий блок Integrator. Выполняет интегрирование входного сигнала

с параметрами:

External reset – Внешний сброс. Тип внешнего управляющего сигнала, обеспечивающего сброс интегратора к начальному состоянию.

Initial condition source — Источник начального значения выходного сигнала. В этом случае на изображении блока появляется дополнительный вход, обозначен-ный x0, на который необходимо подать сигнал, задающий начальное значение выходного сигнала интегратора.

Initial condition — Начальное условие. Установка начального значения выходного сигнала интегратора.

На рис. П6.7. показан пример работы интегратора при подаче на его вход ступенчатого сигнала. Начальное условие принято равным нулю.
Рис. П6.6. Использование блока Derivative Рис. П6.7. Интегрирование

для дифференцирования сигнала. ступенчатого сигнала.


Блок Memory. Выполняет задержку входного сигнала на один временной такт.

Блок фиксированной задержки сигнала Transport Delay. Обеспечивает задержку входного сигнала на заданное время с параметрами:

Time Delay — Время задержки сигнала (не отрицательное значение);

Initial input — Начальное значение выходного сигнала;

Buffer size — Размер памяти, выделяемой для хранения задержанного сигнала.
6.4. Nonlinear - нелинейные блоки.

Блок ограничения Saturation. Выполняет ограничение величины сигнала.

Параметры:

Upper limit - Верхний порог ограничения.

Lower limit - Нижний порог ограничения.

Выходной сигнал блока равен входному если его величина не выходит за порог ограничения. По достижении входным сигналом уровня ограничения выходной сигнал блока перестает изменяться и остается равным порогу. На рис. П6.8. показан пример использования блока для ограничения синусоидального сигнала. На рисунке приводятся временные диаграммы сигналов и зависимость выходного сигнала блока от входного.

Релейный блок Relay. Реализует релейную нелинейность с параметрами:

Switch on point - Порог включения. Значение, при котором происходит включение реле.

Switch off point - Порог выключения. Значение, при котором происходит выключение реле.

Output when on - Величина выходного сигнала во включенном состоянии.

Output when off - Величина выходного сигнала в выключенном состоянии.
Рис. П6.8. Пример использования

блока Saturation.
Выходной сигнал блока может принимать два значения. Одно из них соответствует вклю-ченному состоянию реле, второе – выключен-ному. Переход их одного состояния в другое происходит скачком при достижении входным сигналом порога включения или выключения реле. В том случае если пороги включения и выключения реле имеют разные значения, то блок реализует релейную характеристику с гистерезисом. При этом значение порога включения должно быть больше, чем значение порога выключения. На рис. П6.9. показан пример использования блока Relay.




Рис. П6.9. Пример использования блока Relay.
Блок переключателя Switch. Выполняет переключение входных сигналов по сигналу управления. Параметром блока является Threshold – Порог управляющего сигнала.

Блок работает следующим образом. Если сигнал управления, подаваемый на средний вход меньше, чем величина порогового значения Threshold, то на выход блока проходит сигнал с первого (верхнего) входа. Если сигнал управления превысит пороговое значение, то на выход блока будет поступать сигнал со второго (нижнего) входа.

На рис. П6.10. показан пример работы блока Switch. В том случае, когда сигнал на управляющем входе ключа равен 1, на выход блока проходит гармони-ческий сигнал, подаваемый на верхний вход, если же управляющий сигнал равен нулю, то на выход проходит сигнал нулевого уровня от блока Ground. Пороговое значение управляющего сигнала задано равным 0.5.

Блок многовходового переключателя Multiport Switch. Выполняет переключе-ние входных сигналов по сигналу управления, задающему номер активного вход-ного порта. Параметром блока является Number of inputs – количество входов.

Рис. П6.10. Применение переключателя Switch.
Блок многовходового переключателя Multiport Switch, пропускает на выход сигнал с того входного порта, номер которого равен текущему значению управля-ющего сигнала. На рис. П6.11. показан пример работы блока Multiport Switch. Управляющий сигнал переключателя имеет три уровня и формируется с помощью блоков Constant, Step, Step1 и Sum. На выход блока Multiport Switch, в зависимости от уровня входного сигнала на верхнем входе, проходят гармонические сигналы, имеющие разные частоты. Количество входов блока Multiport Switch можно задать равным 1. В этом случае на вход блока необходимо подать векторный сигнал, а сам блок будет пропускать на выход тот эле-мент вектора, номер которого совпадает с уровнем управляющего сигнала.

Рис. П6.11. Применение переключателя Multiport Switch.

6.5. Math – блоки математических операций.

Блок вычисления суммы Sum. Выполняет вычисление суммы текущих зна-чений сигналов. Количество входов и операция (сложение или вычитание) опре-деляется списком знаков параметра List of sign, при этом метки входов обознача-ются соответствующими знаками. В параметре List of sign можно также указать число входов блока. В этом случае все входы будут суммирующими. Возможно использование круглой и прямоугольной пиктограммы блока.

Блок может использоваться для суммирования скалярных, векторных или матричных сигналов. Типы суммируемых сигналов должны совпадать. Примеры использования блока Sum показаны на П6.12.

Блок умножения Product. Выполняет вычисление произведения текущих значений сигналов.

Параметры блока:

Number of inputs – Количество входов. Может задаваться как число или как список знаков. В списке знаков можно использовать знаки * (умножить) и / (разделить).

Multiplication – Способ выполнения операции. Может принимать значения (из списка):
  - Element-wise – Поэлементный.
  - Matrix – Матричный.



Рис. П6.12. Примеры использования блока Sum.




Рис. П6.13. Примеры использования блока Product при выполнении скалярных и поэлементных операций.

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

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

Усилители Gain и Matrix Gain

Назначение: Выполняют умножение входного сигнала на постоянный коэффициент.

Параметры:

Gain – Коэффициент усиления.

Multiplication – Способ выполнения операции. Может принимать значения (из списка):
  - Element-wise K*u– Поэлементный.
  - Matrix K*u – Матричный. Коэффициент усиления является левосторонним операндом.
  - Matrix u*K – Матричный. Коэффициент усиления является правосторонним операндом.

Рис. П6.14. Примеры использования блока Product при выполнении матричных операций.
Блоки усилителей Gain и Matrix Gain есть один и тот же блок, но с разными начальными установками параметра Multiplication. Примеры использования блока Gain при вы-полнении скалярных и поэлемен-тных операций показаны на П6.15.

Рис. П6.15. Примеры использования блока Gain.
Ползунковый регулятор Slider Gain. Обеспечивает изменение коэффициента усиления в процессе расчета.

Параметры:

- Low – Нижний предел коэффициента усиления.

- High – Верхний предел коэффициента усиления.

Для изменения коэффициента усиления блока Slider Gain необходимо перед-винуть ползунок регулятора. Перемещение ползунка вправо приведет к увеличе-нию коэффициента усиления, перемещение влево – к уменьшению. Изменение коэффициента усиления будет выполняться в пределах диапазона заданного параметрами Low и High. Примеры использования блока Slider Gain показаны на рис. П6.16.

Блок вычисления математических функций Math Function. Выполняет вычисление математической функции.

Параметры блока:

Function – Вид вычисляемой функции (выбирается из списка):
  exp – Экспоненциальная функция;
  log – Функция натурального логарифма;
  10^u – Вычисление степени 10;
  log10 – Функции логарифма;
  magnitude^2 – Вычисление квадрата модуля входного сигнала;
  square – Вычисление квадрата входного сигнала;
  sqrt – Квадратный корень;
  pow – Возведение в степень;
  conj – Вычисление комплексно-сопряженного числа;
hypot –Вычисление корня квадратного из суммы квадратов входных сигналов (гипотенузы прямоугольного треугольника по значениям катетов);
  rem – Функция, вычисляющая остаток от деления первого входного сигнала на второй;
  mod – Функция, вычисляющая остаток от деления с учетом знака;
  transpose – Транспонирование матрицы;
  hermitian – Вычисление эрмитовой матрицы.

Рис. П6.16. Примеры использования блока Slider Gain.

Блок вычисления тригонометрических функций Trigonometric Function.

Параметры: Function – Вид вычисляемой функции (выбирается из списка): sin, cos, tan, asin, acos, atan, atan2, sinh, cosh и tanh.

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

Блок определения минимального или максимального значения MinMax.

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

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

Блок вычисления операции отношения Relational Operator. Блок сравнивает текущие значения входных сигналов.

Параметры:

Relational Operator – Тип операции отношения (выбирается из списка):

= = - Тождественно равно.

~ = - Не равно.

< - Меньше.

< = - Меньше или равно.

> = - Больше или равно.

> - Больше.

Блок логических операций Logical Operation. Реализует одну из базовых логических операций.

Параметры:

Operator – Вид реализуемой логической операции (выбирается из списка):

AND – Логическое умножение (операция И).

OR – Логическое сложение (операция ИЛИ). NAND – Операция И-НЕ.

NOR – Операция ИЛИ-НЕ.

XOR – Исключающее ИЛИ (операция сложения по модулю 2).

NOT – Логическое отрицание (НЕ).

Number of input ports – Количество входных портов.

Выходным сигналом блока является 1, если результат вычисления логической операции есть “ИСТИНА” и 0, если результат – “ЛОЖЬ”.

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

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

Мультиплексор (смеситель) Mux. Объединяет входные сигналы в вектор.

Параметры:

Number of Inputs - Количество входов.

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

Параметр Number of Inputs можно задавать также в виде списка меток сигналов, например: Vector1, Vector2, Scalar. В этом случае метки сигналов будут отображаться рядом с соответствующими соединительными линиями. Сигналы, подаваемые на входы блока должны быть одного типа (действительного или комплексного). Примеры использования блока Mux показаны на рис. П6.17.
Рис. П6.17. Примеры использования блока Mux.

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

Number of Outputs - Количество выходов.

Bus Selection Mode (флажок) - Режим разделения векторных сигналов.

Входным и выходными сигналами в обычном режиме являются вектора, количество которых и размерность определяется параметром Number of Outputs. Примеры использования блока Demux показаны на рис. П6.19.

Рис. П6.19. Примеры использования блока Demux.


Блок определения момента пересечения порогового значения Hit Crossing.

Определяет момент времени, когда входной сигнал пересекает заданное пороговое значение.

Параметры:

Hit crossing offset – Порог. Значение, пересечение которого входным сигналом требуется идентифицировать.

Hit crossing direction – Направление пересечения. Выбирается из списка:

rising – Возрастание.

failing – Убывание.

either – Оба направления.

Пример использования блока Hit Crossing показан на рис. П6.19. Блок определяет моменты пересечения в обоих направлениях синусоидальным сигналом уровня 0.5.
Рис. П6.19. Пример использования блока Hit Crossing.
Приложение к главе 9. Библиотека AnyLogic Enterprise Library
9.1. Общие принципы работы с библиотекой
Библиотека AnyLogic Enterprise Library предоставляет высокоуровневый интерфейс для быстрого создания дискретно-событийных моделей с помощью блок-схем. Графическое представление систем с помощью блок-схем широко используется во многих важных сферах деятельности: производстве, логистике, системах обслуживания, бизнес-процессах, моделировании компьютерных и телекоммуникационных сетей, и т.д.

Библиотека Enterprise Library содержит традиционные объекты: очереди, за-держки, конвейеры, ресурсы, и т.п., так что модель быстро строится в стиле «пере-тащить и оставить» (drag-and-drop) и очень гибко параметризуется.

Классы активных объектов библиотеки AnyLogicTM Enterprise Library явля-ются строительными блоками, с помощью которых можно строить модели.

Библиотечный класс сообщений Entity является базовым классом для заявок, ресурсов и транспортеров. Объекты можно разделить по своей функциональности на шесть категорий, их краткое описание дано ниже.
9.2. Заявки
Под заявкой в библиотеке может пониматься:

- заявка в ее обычном понимании (продукт, потребитель, пакет данных, документ);

- ресурс (оператор, машина, критическая секция);

- транспортер (поезд, автобус, корабль, автопогрузчик).

Заявки в их традиционном понимании генерируются объектами Source, затем проходят через смоделированную систему, где они обрабатываются, обслужива-ются, транспортируются, конкурируют за право обладания ресурсами и, наконец, они эту систему покидают.

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

Ресурсы, созданные объектами Resource, могут быть заняты заявками для выполнения каких-то задач, после чего они освобождаются и возвращаются в объект Resource.

Транспортеры, так же как и обычные заявки, создаются объектами Source, затем передаются в объекты Node и используются для транспортировки других заявок между узлами и вдоль сегментов сети.

Объект класса Entity может использоваться в любой из этих ролей, и при необходимости даже менять свою роль во время работы модели.

Заявка может содержать в себе другие заявки, причем уровень вложенности не ограничен. Вложенные заявки хранятся в поле contents типа Vector. Ресурсы, занятые заявкой, хранятся в векторе resources.

Перечень активных объектов для создания потока заявок, их изображения и краткое описание приведены в таблице П9.1.

Таблица П9.1. Активные объекты для создания потока заявок


Значок

Имя

Описание



Source

Генерирует заявки.



Sink

Удаляет поступающие заявки.



Enter

Добавляет в блок-схему заявки, созданные в каких-то других блоках



Exit

Принимает поступающие заявки.



Hold

Блокирует/разблокировывает поток заявок



Split

Создает заданное число заявок – копий поступившей заявки.



Combine

Ожидает поступления двух заявок, а затем производит из них одну новую заявку.



Assembler

Производит сборку заявок согласно заданному списку.



SelectInputPrority


По приоритетному принципу соединяет вместе заявки, пришедшие из различных источников.



SelectOutput

В зависимости от заданного условия пересылает заявку на один из выходных портов.



Queue


Хранит заявки в указанном порядке.



MatchQ



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



RestrictedAreaStart



Блок начала области блок-схемы, на которой может находиться только ограниченное число заявок.



RestrictedAreaEnd


Блок конца области, начатой блоком RestrictedAreaStart.


Источник заявок Source. Обычно используется в качестве начальной точки потока заявок, или как генератор ресурсов, транспортеров, и т.д. Генерирует заявки любых подклассов базового класса Entity через случайные промежутки времени. Время генерации может как подчиняться определенному закону распределения, так и определяться заданным расписанием. Оно может быть задано как максимально допустимое число генераций, так и число заявок, создаваемых за каждый раз.

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

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

Объект Sink. Уничтожает поступившие заявки. Обычно используется в

качестве конечной точки потока заявок. Объект Sink автоматически подсчиты-вает входящие заявки и высчитывает среднюю интенсивность входящего потока.

Объект Enter. Пересылает заявки, переданные этому объекту либо "явно" через входной порт inputExternal, либо с помощью функции объекта take (), дальше по блок-схеме. В комбинации с объектом Exit, он может быть использован для нап-равления заявок в различные блоки модели без необходимости графического сое-динения этих блоков на блок-схеме. Также он может служить интерфейсом между потоком заявок и другими частями модели. Пришедшая в объект заявка сразу же его покидает.

Объект Exit. Принимает входящие заявки. Обычно используется в качестве конечной точки потока заявок. В комбинации с объектом Enter, он может быть использован для направления заявок в различные блоки модели без необходимос-ти их графического соединения на блок-схеме. Также объект может служить интерфейсом между потоком заявок и другими частями модели, поскольку при получении заявки Exit «явно» выводит ее через порт outputExternal. Пришедшая в объект заявка покидает его мгновенно.

Заявка, покидающая поток заявок в объекте Exit, всегда направляется в порт outputExternal. Если к нему не подсоединен ни один порт, заявка исчезает. В про-тивном случае она передается в подсоединенные порты.

Объект Hold. Блокирует/разблокировывает поток заявок на определенном участке блок-схемы. В отличие от других объектов библиотеки (за исключением SelectInputPriority), Hold не хранит заявки внутри, являясь модификатором взаи-модействия объектов. Этот объект полезен в особенности тогда, когда нужно заблокировать поступление заявок только от какого-то определенного объекта, в то же время принимая заявки, приходящие со всех других портов.

Объект Split. Создает заданное число копий каждой поступающей заявки и пересылает их дальше через порт outputCopy. Класс новых заявок задается поль-зователем. Копирование занимает нулевое время — как только заявка входит в объект Split, она тут же покидает его вместе с копиями.

Объект Combine. Дожидается поступления двух заявок в порты input1 и input2 (в произвольном порядке), а затем создает новую заявку и направляет ее на выходной порт. Класс новой заявки задается пользователем. Заявка, прибывающая первой, хранится внутри объекта, пока не придет другая. Как только прибывает другая заявка, созданная заявка сразу же покидает объект.

Объект Assembler. Этот блок позволяет осуществить сборку одной новой заявки из определенного числа заявок, пришедших из различных источников (до 5). Он может быть использован, например, для объединения различных этапов работы.

Объект SelectInputPriority. Соединяет заявки, приходящие от двух источни-ков, базируясь на их приоритете. Объект, соединенный с выходным портом, уве-домляется о заявках, приходящих в оба входных порта. Когда заявке разрешается покинуть объект, первой его покидает заявка из порта inputPriority. Объект Select-InputPriority не хранит заявки внутри, и может быть использован в качестве модификатора взаимодействия объектов. SelectInputPriority - один из немногих объектов, которые не хранят заявки внутри: он примет заявку только в том случае, если следующий за ним в блок-схеме объект ее запросит.

Объект SelectOutput. Принимает заявку, и затем, в зависимости от заданного условия, передает ее на один из двух выходных портов. Условие может зависеть от самой заявки или от какой-то другой информации. Объект Select-Output обычно используется для сортировки заявок в зависимости от их типов.

Объект Queue. Моделирует очередь, он хранит поступающие заявки в опре-деленном порядке: FIFO (заявки помещаются в очередь в порядке поступления), LIFO (заявки помещаются в порядке, обратном поступлению), RANDOM (заявки помещаются в произвольные места очереди) или PRIORITY (заявки помещаются в очередь в соответствии со значением своих полей priority). Заявка может покинуть объект Queue различными способами:

- "обычным способом" через порт output, когда объект, следующий в блок-схеме за этим объектом, готов принять заявку;

- через порт outputTimeout, после того, как заявка проведет в очереди заданное
количество времени (если включен режим таймаута);

- через порт outputPreempted, будучи вытесненной другой поступившей заяв-кой при заполненной очереди (если включен режим вытеснения);

- "вручную", путем вызова фунцкии remove (int i).

Объект MatchQ. Хранит заявки, поступившие в разные входные порты объ-екта в двух различных очередях, и пытается найти соответствие между каждыми поступившими в различные входные порты. Условие соответствия задается поль-зователем: объект MatchQ будет проверять его при поступлении каждой новой заявки. Если соответствие будет найдено, то заявки направятся на два соответст-вующих выходных порта; в противном случае, поступившая заявка будет хранится в очереди своего порта (для этого используются объекты Queue). После сравнения заявки немедленно покидают объект.

Объект RestrictedAreaEnd. Обозначает конец области, в которой может нахо-диться только ограниченное количество заявок. Параметр объекта restrictedArea-Start должен указывать на блок начала области RestrictedAreaStart.
9.3. Правила пересылки заявок
При построении блок-схем важно понимать, как происходит обмен заявками между активными объектами. Объекты библиотеки Enterprise Library соблюдают четкие правила передачи заявок. Заявки поступают в объект и покидают его через порты.

Передача заявок выполняется согласно следующему протоколу:

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

2. Заявка передается только в ответ на получение запроса. Если запрос при-бывает тогда, когда заявка уже покинула передающий объект, то передается null.

Следовательно, заявка никогда не может прибыть в объект или покинуть его без предшествующего этому согласия другого объекта.

Можно создавать различные конфигурации — соединять несколько выходных портов с одним входным портом, несколько входных портов с одним выходным портом, создавать масштабируемые модели, используя иерархию и регулярные структуры объектов — см. Рисунки 9.19. и 9.19.

Если выходной порт подсоединен сразу к нескольким входным портам (соединения 1:M) , и готов передать заявку, то он разошлет всем уведомление, и затем перешлет заявку по первому полученному запросу.

Если сразу несколько объектов готовы послать свои запросы (соединения

M:1 ), то порядок прихода запросов будет случайным, так что заявка будет послана случайно выбранному объекту.

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



Рис. 9.19. Поток заявок и допустимое

соединение активных объектов типа 1 : М.
Возможность установления различных типов соединений в AnyLogic Enterprise Library имеет боль-шое значение. Поскольку объект может принимать заявку от нескольких источников (которые, в свою очередь могут быть соединены с несколькими получателями), то до самого прихода заявки никогда нельзя сказать с уверенностью, какая заявка будет получена, и будет ли какая-либо заявка получена вообще.

Аналогично, объект никогда не знает о том, получит ли другой объект посланную заявку, до того момента, пока он ее не запросит.


Рисунок 9.19. Поток заявок и допустимое соединение активных объектов типа М : 1.

В какой-то момент во время работы модели Вы можете захотеть заблокировать входной порт объекта, чтобы он прекратил принимать заявки. Каждый входной порт каждого объекта Enterprise Library имеет функции block () и unblock (). Вызывая эти функции, Вы можете моделировать рабочие расписания объектов, изменять направления движений заявок, или же накладывать дополнительные ограничения на процесс пересылки заявок.

В AnyLogicTM есть два основных типа параметров активных объектов: простые и динамические.

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

Эта работа выполняется с помощью динамических параметров.

Простые параметры являются константами внутри объектов, в то время как при каждом вызове динамического параметра происходит исполнение определен-ного кода. Более того, этот код может быть определен не только при создании класса активного объекта, а и позже, во время создания экземпляра этого класса. Именно поэтому эти параметры и называются динамическими.

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

Код или выражение, заданное в качестве значения динамического параметра, принадлежит сразу двум объектам: вложенному объекту, у которого определен этот параметр, а также объекту, который этот объект содержит (т.е. тому объекту, на чьей структурной диаграмме находится этот объект).
9.4. Работа с содержимым заявки

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

Перечень блоков, осуществляющих работу с содержимым заявки приведен в таблице П9.2.

Значок

Имя

Описание



BatchQ

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



Unbatch

Извлекает все заявки, содержащиеся в поступившей партии заявок, и пересылает их далее по отдельности.



Pickup

Добавляет выбранные из объекта Queue заявки к содержимому поступившей заявки.



Dropoff

Извлекает выбранные в соответствии с заданным условием заявки из поступившей партии заявок, и пересылает их далее по отдельности.


Блок BatchQ. Накапливает заданное количество заявок в очереди, затем соз-дает партию заявок, добавляет накопленные заявки к ее содержимому, и пересы-лает ее дальше. Класс новой заявки задается пользователем.

Блок Unbatch. Извлекает все заявки, содержащиеся в поступающей партии заявок, если такие есть, и пересылает их далее по одной, сохраняя порядок, в котором они хранились в партии. Сама партия заявок уничтожается.

Блок Pickup. Удаляет заявки из объекта Queue и добавляет их к содержимому поступающей партии заявок. Объект Queue должен быть соединен с портом inputPickup. Заявки выбираются из объекта Queue и добавляются в соответствии с заданным условием. Условие может зависеть как от добавляемой заявки, так и от партии заявок.

Блок Dropoff. Удаляет избранные заявки из поступающей партии заявок и пересылает их далее через порт outputDropoff. То, какие именно заявки требуется удалить, определяется в соответствии с заданным условием, которое может зави-сеть как от заявки, так и от партии заявок.
9.5. Обработка заявок
Обработка заявок осуществляет задержку заявок на определенное время, таблица П9.3.

Блок Schedule. Задает доступность и времена простоев ресурсов с помощью расписания. Объект Schedule не должен соединяться с другими объектами. Он извещает объекты Delay, Server, Resource и NetworkResource о том, сколько ресур-сов будет доступно в каждый момент времени согласно заданному расписанию. Сразу несколько объектов Resource могут использовать один объект Schedule. В случае объекта Delay под числом ресурсов понимается вместимость объекта.

Блок Delay. Задерживает заявки на заданное время. Одновременно могут быть задержаны сразу несколько заявок (не более заданной вместимости объекта capa-city). В отличие от объекта Server, заявки задерживаются независимо друг от друга — время задержки вычисляется отдельно для каждой заявки. Как только время задержки истекает, заявка тут же покидает объект. Если объект Delay заполнен полностью, то новую заявку он не примет.

Вместимость объектов Delay может изменяться с помощью объекта Schedule.

Блок Server. Обслуживает заявки. Задерживает заявку, пока она не получит требуемое время обслуживания. Несколько заявок могут обслуживаться однов-ременно, разделяя объект Server, т.е., время обслуживания, предоставленное заявке в единицу модельного времени, обратно пропорционально числу параллельно обслуживаемых в данный момент заявок. Следовательно, в отличие от объекта Delay, заявки, обслуживаемые одновременно, влияют друг на друга. Требуемое время обслуживания вычисляется для каждой заявки отдельно. Если вместимость объекта будет достигнута, то новую заявку он не примет.

Таблица П9.3. Блоки обработки заявок.


Значок

Имя

Описание



Delay

Задерживает заявки на заданный промежуток времени.



Server

Задерживает заявки до тех пор, пока каждой из них не будет предоставлено требуемое время обслуживания.

1   2   3   4   5   6   7   8   9   10


Учебный материал
© bib.convdocs.org
При копировании укажите ссылку.
обратиться к администрации