
Создает заявки. Обычно используется в качестве начальной точки потока заявок.
Заявки могут быть либо базового для заявок класса Entity, либо любого класса пользователя, унаследованного от этого базового класса. Вы можете сконфигурировать объект так, чтобы он создавал заявки других типов, указав конструктор нужного класса в параметре Новая заявка, а также задать действие, которое должно выполняться перед тем, как новая заявка покинет объект, и связать с заявкой определенную фигуру анимации.
Есть несколько способов задания того, сколько заявок и когда должен создавать этот объект. Приведенная ниже демонстрационная модель иллюстрирует различные режимы создания заявок объектом.
Демо модель: Source Arrival Modes
Заявки могут создаваться согласно заданной интенсивности (которая может изменяться динамически с помощью метода set_rate()), времени между прибытиями, изменяющейся во времени интенсивности, заданной с помощью расписания или табличной функции (таблице интенсивностей), расписанию, задающему точные времена и количество прибывающих заявок, или "вручную" путем вызова метода объекта inject(). Например, пуассоновский поток заявок может быть промоделирован путем генерации заявок согласно заданной интенсивности, или согласно времени между прибытиями, подчиняющемуся экспоненциальному закону распределения. Если создание заявок подчиняется закону распределения, то время до создания следующей заявки вычисляется при создании заявки; следовательно, оно может быть сделано вероятностным, детерминированным, зависящим от каких-то дополнительных данных, и т.д.
Может быть задано как максимально допустимое число генераций, так и число заявок, создаваемых за каждый раз.
Если заявки прибывают согласно заданному времени между прибытиями, и значение этого времени в какой-то момент становится равным Double.POSITIVE_INFINITY, то объект Source прекратит создание заявок (и в течение текущего "прогона" модели больше уже не возобновит). Если заявки прибывают согласно интенсивности, и значение интенсивности становится равным нулю, тообъект не будет создавать новые заявки до тех пор, пока значение интенсивности не станет положительным.
В некоторых случаях, чтобы реализовать сложные расписания прибытий заявок, имеет смысл использовать несколько параллельно работающих объектов Source, см. рисунок ниже.
Обратите внимание, что объект Source не разрешает заявкам храниться в буфере выходного порта, если они не могут покинуть объект. Поэтому для избежания таких ситуаций, когда объект, следующий в потоковой диаграмме за объектом Source (например, Conveyor), не может принять новую заявку, Вам нужно будет добавить между этим объектом и объектом Source специальный объект буферизации, например, Queue.
Есть и другие способы создания заявок в моделях, построенных с помощью объектов Основной библиотеки, помимо Source. Например, Вы можете использовать в качестве начальной точки потока заявок объект Enter и добавлять заявки в поток с помощью его метода take(). Этот способ обычно выбирается тогда, когда заявки создаются, например, с помощью диаграммы состояний или события, и их нужно просто добавить в моделируемый процесс.
void inject(int n) - создает n заявок.
int count() - возвращает количество заявок, созданных этим объектом.