AnyLogic
Развернуть
Размер шрифта

Pipeline

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

Как только труба полностью наполняется, она остается наполненной постоянно. В трубе не допускаются зазоры (если зазоры или конденсированные участки необходимы, то вы можете использовать блок BulkConveyor). Вся жидкость в трубе движется с одинаковой скоростью, поэтому когда труба заполнена, скорость входного потока всегда равна скорости выходного потока. Пока труба еще не наполнена, скорость ее входного потока ограничена лишь собственной скоростью трубы (если необходимо, установите опцию Скорость ограничена и определите верхний лимит скорости трубы в параметре Максимальная скорость). Заданное положительное значение скорости потока не должно быть ниже значения RATE_TOLERANCE, т.е. меньше 1.0e-9.

Труба транспортирует партии жидкости согласно правилу FIFO (в порядке поступления в очередь). Вы можете самостоятельно задать партию жидкости, которая изначально будет содержаться в трубе.

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

Демо-модель: Pipeline Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Параметры

Вместимость
Максимальный объем жидкости, который труба может содержать. Заданное значение не может быть меньше значения Utils.TOLERANCE.
Синтаксис: double capacity
Установить новое значение во время выполнения: set_capacity(новое значение)
Начальный объем
Объем, изначально находящийся в трубе. Заданное значение не может быть меньше значения Utils.TOLERANCE.
Синтаксис: double initialAmount
Установить новое значение во время выполнения: set_initialAmount(новое значение)
Скорость ограничена
Если данная опция выбрана (значение true ), то вы можете изменить верхний предел скорости переноса жидкости в трубе, при котором она может функционировать.
Синтаксис: boolean limitRate
Максимальная скорость
[Параметр виден и применяется только в том случае, если установлена опция Скорость ограничена]
Здесь вы можете задать другой верхний предел скорости переноса жидкости в трубе. Значение по умолчанию составляет 10 куб. метров/сек.
Синтаксис: double maxRate
Установить новое значение во время выполнения: set_maxRate(новое значение)
Другой приоритет
Если эта опция установлена (значение true ), то приоритет выходного потока трубы будет определяться параметром Приоритет выходного потока (см. ниже), в противном случае приоритет будет равен 1. Приоритет влияет на LP решатель, когда он стремится увеличить до максимума количество вещества, проходящего через систему.
Синтаксис: boolean customPriority
Установить новое значение во время выполнения: set_customPriority(новое значение)
Приоритет выходного потока
[Параметр виден и применяется только в том случае, если установлена опция Другой приоритет]
Здесь вы можете задать другой приоритет потока на выходе из данного блока в общей диаграмме процесса. Значение приоритета должно быть положительным числом.
Синтаксис: int priorityOutCustom
Установить новое значение во время выполнения: set_priorityOutCustom(новое значение)
Другая начальная партия
Если данная опция выбрана, то жидкость, изначально содержащаяся в трубе, будет определяться параметром Начальная партия. Если нет, то она будет определяться: BatchTypes.DEFAULT_BATCH.
Синтаксис: boolean customInitialBatch
Установить новое значение во время выполнения: set_customInitialBatch(новое значение)
Начальная партия
[Параметр виден и применяется только в том случае, если установлена опция Другая начальная партия]
Определяет партию, которая изначально содержится в трубе.
Синтаксис: Object initialBatch
Установить новое значение во время выполнения: set_initialBatch(новое значение)
Изменить цвет партии
Если данная опция установлена, то цвет начальной партии определяется параметром Цвет партии (см. ниже), в противном случае применяются стандартные цвета.
Синтаксис: boolean customInitialBatchColor
Установить новое значение во время выполнения: set_customInitialBatchColor(новое значение)
Цвет партии
[Параметр виден и применяется только в том случае, если установлена опция Изменить цвет партии]
Здесь вы можете задать цвет начальной партии.
Тип величины: Color
Локальная переменная: Object batch — начальная партия

Анимация

Труба
Здесь можно указать имя элемента разметки пространства Труба, используемого в качестве фигуры анимации трубы, заданной этим блоком Pipeline.
Синтаксис: Pipe pipe
Отображать партии в блоке
Если данная опция установлена, то значок блока будет отображать цвет текущей партии.
Синтаксис: boolean showBatchesInFlowchart

Действия

При наполнении
Действие выполняется, когда труба полностью наполняется. Это может случиться только раз в течении жизненного цикла трубы. Данное действие не выполняется, если труба изначально является полной.
При новой партии на входе
Действие выполняется, когда новая партия прибывает на вход. Эта партия не обязательно начнет поступать в блок.
Локальная переменная: Object batch  — партия
При новой партии на выходе
Действие выполняется, когда новая партия достигает выхода трубы.
Локальная переменная: Object batch  — партия
При изменении скорости
Действие выполняется, когда изменяется скорость любого (входящего или исходящего) потока. Обратите внимание на то, что определенные изменения, произошедшие в результате выполнения данного действия, могут вызвать другое мгновенное изменение скорости, за которым сразу последует повторное выполнение действия При изменении скорости, что в итоге может привести к взаимной блокировке.
Локальные переменные:
double inrate  — текущая скорость во входном порте
double outrate  — текущая скорость в выходном порте

Функции

Партии
Функция Описание
int numberOfBatches() Возвращает количество партий, находящихся в данный момент в трубе, включая возможные партии с нулевой длиной.
Object getBatch(int index) Возвращает партию с указанным индексом index. Партия с индексом 0 — это партия, находящаяся на выходе трубы, а партия с индексом numberOfBatches()-1 — это последняя партия на входе трубы.
double getBatchSize(int index) Возвращает размер партии с указанным индексом index. Партия с индексом 0 — это партия, находящаяся на выходе трубы, а партия с индексом numberOfBatches()-1 — это последняя партия на входе трубы.
double getBatchSize(int index, AmountUnits units) Возвращает размер партии (в указанных единицах измерения объема) с указанным индексом index.
double getBatchOffset(int index) Возвращает сумму размеров всех партий, расположенных ближе к входной точке трубы, чем партия с указанным индексом index. Функция предназначена для использования в случае создания нестандартной анимации для блока.
Количество вещества
Функция Описание
double amount() Возвращает объем жидкости, находящийся в данный момент в трубе (совокупный объем всех партий жидкости). Если объем меньше значения Utils.TOLERANCE, возвращает 0.
double amount(AmountUnits units) Возвращает объем жидкости (в указанных единицах измерения объема), находящийся в данный момент в трубе (совокупный объем всех партий жидкости). Если объем меньше значения Utils.TOLERANCE, возвращает 0.
double amountPassedIn() Возвращает общий объем вещества, прошедший через входной порт трубы, начиная с запуска процесса моделирования.
double amountPassedIn(AmountUnits units) Возвращает общий объем вещества (в указанных единицах измерения объема), прошедший через входной порт трубы, начиная с запуска процесса моделирования.
double amountPassedOut() Возвращает общий объем вещества, прошедший через выходной порт трубы, начиная с запуска процесса моделирования.
double amountPassedOut(AmountUnits units) Возвращает общий объем вещества (в указанных единицах измерения объема), прошедший через выходной порт трубы, начиная с запуска процесса моделирования.
boolean isFull() Проверяет, наполнена ли труба, т.е. равен ли объем жидкости, находящейся в трубе, вместимости этой трубы. Возвращает true, если труба наполнена, и false, если она не наполнена.
boolean isEmpty() Проверяет, является ли труба пустой. Возвращает true, если труба пустая, и false, если она не пустая. В пустой трубе все же может находиться партия нулевого размера в том случае, если она прибыла на вход, но не поступила в трубу.
Использование трубы
Функция Описание
double utilization() Возвращает текущее значение использования пропускной способности трубы, то есть текущая входная скорость, деленная на максимальную входную скорость. Если текущая максимальная скорость не ограничена или равна 0, возвращает 0.
double utilizationTotal() Возвращает среднее значение использования пропускной способности трубы за все время работы, то есть объем, который прошел через входную точку трубы, деленный на максимальный объем, который мог пройти, зависит от (возможно переменной) максимальной скорости. Если скорость хоть раз была выставлена неограниченной, функция вернет ноль.
Скорость потока
Функция Описание
double averageRateIn() Возвращает среднюю скорость на входе в трубу за все время работы в куб. м. в секунду.
double currentRate() Возвращает текущую скорость на входе в трубу. (Скорость потока на выходе либо отсутствует, если труба не заполнена, либо равна скорости на входе.)
double currentRate(FlowRateUnits units) Возвращает текущую скорость на входе в трубу (в указанных единицах измерения скорости) на входе в трубу. (Скорость потока на выходе либо отсутствует, если труба не заполнена, либо равна скорости на входе).
Сброс статистики
Функция Описание
void resetStats() Сбрасывает собранную блоком статистику, включая статистику, собранную в его портах.

Порты

in
Входной порт.
out
Выходной порт.
Как мы можем улучшить эту статью?