
Используется при моделировании транспортных сетей. Задает топологию сети и управляет сетевыми ресурсами. В одной модели может быть несколько сетей, и каждая сеть задается одним объектом Network. Топология сети задается группой фигур: прямоугольники задают узлы сети, а линии и ломаные - сегменты (параметр Группа фигур сети). На рисунке ниже Вы можете видеть четыре узла, соединенные красной ломаной линией и синей линией. Линия (ломаная) будет соединять узел, если одна (и только одна!) ее точка будет лежать внутри (или на границе) этого узла. Имеет смысл осмысленно называть прямоугольники, задающие узлы сети, потому что на их имена будут ссылаться объекты модели. Желательно не отображать фигуры, задающие топологию сети, во время выполнения модели (что и выбрано по умолчанию в параметре, см. параметр Прятать фигуры сети).
После создания объект Network проходит в цикле все фигуры, чтобы построить логическую структуру сети. Поскольку движущиеся заявки и ресурсы всегда выбирают кратчайший маршрут, дублирующиеся сегменты будут удалены из создаваемой таблицы маршрутизации. Если при задании топологии были допущены ошибки (такие, как нарисованные друг поверх друга прямоугольники и т.д.), то соответствующие фигуры будут выделены, и модель закончит свою работу, выдав сообщение об ошибке.
Обратите внимание, что ломаные, задающие базовое местоположение ресурсов (см. описание объекта NetworkResourcePool) не должны находиться в группе фигур, задающей топологию сети!
Вы можете изменять конфигурацию сети прямо по ходу моделирования, добавляя, удаляя или изменяя узлы и сегменты (с помощью метода set_networkGroup(Group newgroup)) или даже задавая совершенно другую сеть (с помощью метода refreshNetwork()). Но при этом нужно будет убедиться, что узлы, занятые в текущий момент времени заявками и ресурсами, а также узлы, являющиеся начальными или конечными точками маршрута движущихся в данный момент элементов, будут находиться и в новой сети.
Объект Network должен быть соединен с объектами NetworkResourcePool, задающими те сетевые ресурсы, которые должны быть доступны в этой сети. Объект Network хранит очередь запросов от заявок, желающих захватить сетевые ресурсы. Эта очередь может быть сделана приоритетной, при этом приоритет запроса будет зависеть от самой заявки, пославшей этот запрос (см. параметры Использовать приоритеты и Приоритет запроса). Процедура обработки запроса ресурса подробно описана здесь.
Имя объекта Network должно быть указано в параметре Сеть объекта NetworkEnter, чтобы тот знал, в какую именно сеть он будет добавлять новые заявки.
int nMoving() - возвращает количество заявок и ресурсов, движущихся в сети в данный момент.
void refreshNetwork() - сообщает объекту Network о необходимости удалить текущую конфигурацию сети и создать новую, основываясь на той же группе фигур (параметр networkGroup).
void set_NetworkGroup(Group group) - сообщает объекту Network о необходимости удалить текущую конфигурацию сети и создать новую, основываясь на новой группе фигур (параметр group).
double distanceBetween( ShapeRectangle from, ShapeRectangle to ) - возвращает расстояние между двумя узлами сети. Если какой-то из узлов не находится в сети, то возникает ошибка. Если один узел не доступен из другого, возвращает Double.POSITIVE_INFINITY.