интересно
Предыдущая | Содержание | Следующая

Очередь с пространственно-зависимыми приоритетами.

Функция dynam(pi,p2) предназначена для моделирования обслуживания транзактов в очереди с динамическими пространственно-зависимыми приоритетами. Эта функция моделирует оптимально-управляемую очередь (очередь типа скорая помощь), которая находится на входе узла типа ргос. Узел имеет два параметра.

Параметр pi - символическое имя узла: строка длиной до 14 символов, включая пробелы (char).

Параметр рг - номер узла (int) типа ргос, в который передается сгенерированный транзакт (узел-приемник); ргос обязательно должен использовать свой параметр Р4= earth, plane или cosmos.

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

участка гибкого автоматизированного производства (ГАП) с роботизированными тележками, путешествующими по цеху;

местности, подверженной какому-либо бедствию, в процессе ее обследования специальной командой на вертолете и др.

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

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

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

Оригинальный алгоритм оптимизации динамического расписания - правила построения динамической очереди dynam - описан в главе 2. Он обладает высоким быстродействием и имеет практическое применение.