Введение. Главной отличительной чертой вычислительных систем реального времени является то, что каждый прикладной модуль должен выполняться в строго заданном временном директивном интервале и завершиться не позднее установленного заранее срока. Такие системы находят широкое применение в различных областях деятельности человека. Например, при проектировании, испытаниях и эксплуатации сложных технических объектов (самолеты, ракеты, электростанции), при проведении опытно-конструкторских работ, в гражданском и военном строительстве, при оценке запасов полезных ископаемых в месторождениях, при обработке больших массивов информации, при проектировании и функционировании транспортных и конвейерных систем, во многих других областях. При этом одна из основных задач заключается в распределении ресурсов вычислительной системы между программными модулями и построении оптимального расписания их выполнения. Алгоритмам решения таких задач посвящено большое количество публикаций. Здесь можно отметить такие фундаментальные работы, как [1—3], в которых авторы изучают различные постановки (составление расписаний с прерываниями и переключениями с одного процессора на другой и без прерываний, задачи на быстродействие и на соблюдение директивных сроков, построение однопроцессорных и многопроцессорных расписаний). В [3] исследуются NP-трудные задачи быстродействия и минимизации максимального временного смещения для одного и нескольких приборов. Предлагается новый подход к поиску приближенных решений. В [4, 5] рассматривается методика построения оптимальных расписаний в задачах с нефиксированными параметрами (длительности, потребляемые ресурсы). Методика основана на использовании метода “ветвей и границ” и построении многогранников устойчивости решений. В [6—8] разработана методика проверки выполнения ограничений реального времени, заключающихся в том, что каждая работа должна выполняться в заданном директивном интервале. Проведенные исследования выполнены для многоядерной вычислительной системы реального времени и базируются на построении имитационной модели с применением обобщенных конечных автоматов с остановкой таймера. С помощью этой модели строится временная диаграмма работы системы, позволяющая осуществить непосредственную проверку выполнения ограничений реального времени. В [8] предложен псевдополиномиальный алгоритм решения задачи построения оптимального по быстродействию расписания исполнения заданий с логическими условиями предшествования. В этой задаче для каждого задания дан список его непосредственных предшественников, а также число завершенных непосредственных предшественников, необходимое для начала его выполнения. Задача сведена к циклической игре. В [9, 10] некоторые задачи планирования работ сведены к минимаксным задачам.
Указанные выше публикации посвящены распределению возобновляемых ресурсов (процессоров, машин, исполнительных механизмов, приборов, рабочих), т.е. ресурсов, которые могут использоваться многократно. В ряде публикаций исследуются вопросы распределения невозобновляемых ресурсов (финансы, топливо, электроэнергия, различные материалы, оперативная память ЭВМ, закрепленная за определенными программными модулями). В отличие от возобновляемых ресурсов, невозобновляемые повторно применяться не могут. В этой связи отметим работы [11, 12], в которых предполагается, что длительности заданий линейно зависят от величины выделенного им ресурса. В [13] исследована задача со смешанными типами ресурсов — возобновляемыми и невозобновляемыми. Рассматривается задача составления допустимого расписания с прерываниями в многопроцессорной системе в случае, когда заданы директивные интервалы, процессоры могут иметь произвольные производительности, имеется несколько типов невозобновляемых ресурсов, а длительности выполнения работ линейно зависят от выделенного им количества этих ресурсов. Построены полиномиальные алгоритмы, основанные на сведéнии исходной задачи к потоковой в сети специального вида.
Отметим несколько интересных статей по планированию в промышленном производстве. Так, в [14] авторы исследовали методику совместного планирования развития производственных мощностей и составления расписания с учетом рыночных возможностей, а также детализировали интегрированную модель планирования мощности производства с несколькими дискретными и непрерывными вариантами изменения краткосрочной и среднесрочной мощности и разработали эвристический алгоритм, основанный на сведении исходной задачи к нелинейной смешанной целочисленной задаче. В [15] представлены некоторые вопросы в области планирования и контроля производства, разработана иерархическая архитектура планирования и управления производством. В [16] приведена двухуровневая система хранения одного продукта, с помощью которой региональный центр пополняет заказы нескольких независимых местных распределительных центров в течение установленного периода времени. Разработанная модель определяет значения цены продукта, обязательного времени пополнения и обязательного времени доставки, которые максимизируют ожидаемую общесистемную прибыль за заданный период с учетом затрат на хранение продукта и фиксированных затрат на оборудование.
В [17] исследована задача, в которой планирование осуществляется в два этапа: сначала определяется последовательность действий, затем в график вставляется время простоя, чтобы минимизировать сумму ранних и поздних затрат. Последовательность работ определяется с помощью эвристического метода, а задача вставки времени простоя решается с помощью линейного программирования для задания времени начала и окончания действий. В [18] приведена задача планирования сроков выполнения заказов, а также указаны компромиссы, которые следует учитывать при установлении этих сроков. Предложена модель, показывающая, как запланированное время выполнения операции зависит от стохастической изменчивости требований к ресурсам для этой операции, а также от использования ресурсов, связанных с этой операцией. В [19] описана задача планирования работы и маршрутизации двух роботов, которые доставляют продукты в определенные места. Решена задача минимизации времени выполнения всех операций и возврата роботов в исходное положение. Доказана NP-трудность задачи. Решение основано на использовании целочисленного линейного программирования и генетического алгоритма, а также динамического программирования для оценки качества решений.
В настоящей статье исследуется задача планирования вычислений в многопроцессорной системе при следующих предположениях. В заданные моменты времени поступают запросы на выполнение комплексов работ с известными длительностями и директивными интервалами. Допускаются прерывания и переключения с одного процессора на другой. Рассматриваются две постановки задачи. В каждой из них моменты поступления запросов известны заранее. Однако в первой постановке состав всех комплексов и характеристики работ также известны заранее, и поэтому в этом случае планировать выполнение всех заданий можно до момента поступления первого запроса. Во второй постановке состав комплексов заданий и их характеристики становятся известными только в момент поступления каждого запроса. Тогда планировать выполнение работ возможно только после поступления соответствующего запроса, т.е. в режиме реального времени. В обеих постановках требуется определить, существует ли допустимое расписание для всей совокупности комплексов работ и построить его в случае положительного ответа. Рассмотрена также задача для случая, когда помимо процессоров задания используют невозобновляемый ресурс. При этом длительность выполнения задания является убывающей функцией от количества выделенного ему невозобновляемого ресурса. В отличие от [13] не предполагается, что эта функция будет линейной. Решение задачи основано на построении сетевой потоковой модели и поиске максимального потока.
1. Постановка задачи. В моменты времени поступают запросы на выполнение K комплексов работ (заданий): , , . Для этого в каждом интервале имеется процессоров ( — момент времени, после которого эти процессоры использоваться не могут). Все процессоры идентичные. Каждое задание имеет следующие характеристики: — директивный интервал (работа может исполняться только в этом интервале), , — его длительность, , i . При выполнении заданий допускаются их прерывания и переключения с одного процессора на другой, которые по предположению не требуют временных затрат. Кроме того, не допускается параллельное исполнение одного задания несколькими процессорами и одновременное выполнение нескольких работ одним процессором.
Рассматриваются две постановки задачи. В каждой из них моменты известны заранее. Однако в первой постановке состав всех комплексов и характеристики входящих в них работ также известны заранее. Поэтому в данном случае планировать работу всех заданий можно до момента времени . Во второй постановке состав комплекса заданий и их характеристики становятся известными только в момент . Тогда планировать выполнение работ возможно только после поступления соответствующего запроса, который поступает в момент , т.е. в режиме реального времени.
В обеих постановках требуется определить, существует ли допустимое расписание для всего комплекса работ:
(т.е. расписание, при котором каждое задание выполняется в своем директивном интервале) и построить его в случае положительного ответа. Предполагается, что временем работы самого алгоритма построения расписания в обоих случаях можно пренебречь.
Решение поставленной задачи основано на построении сетевой потоковой модели и поиске максимального потока. Поэтому в следующем разделе дается описание одного из наиболее эффективных потоковых алгоритмов, модификация которого будет использована для построения расписания.
2. Краткое описание полиномиального алгоритма поиска максимального потока в сети. Дана сеть , V — множество вершин, u — источник, v — сток, , A — множество ориентированных дуг, — пропускная способность дуги . В [20] предложен следующий полиномиальный алгоритм поиска максимального потока в сети G.
Шаг 1. Выбрать в качестве начального нулевой поток f, т.е. положить для всех
Шаг 2. Построить остаточную сеть :
если , то включить в дугу с пропускной способностью ; если , то включить в дугу с пропускной способностью .
Шаг 3. Если в сети не существует прямого пути из u в v, то f — максимальный поток; алгоритм завершен. В противном случае перейти на шаг 4.
Шаг 4. Построить слоистую сеть . Она содержит все кратчайшие ориентированные пути из u в v.
Шаг 5. Найти тупиковый поток g в сети . (Тупиковый поток — это поток, относительно которого нет прямого увеличивающего пути.)
Шаг 5.1. Определить узел с минимальной пропускной способностью. (Пропускная способность узла — это минимум из максимальной величины потока, который может войти в этот узел, и максимальной величины потока, который может выйти из него.)
Шаг 5.2. “Протолкнуть” из узла влево вплоть до источника u и вправо вплоть до стока v максимально возможный поток. Полученные при этом потоки по дугам определяют поток g.
Шаг 5.3. Удалить из сети узел и все другие узлы с нулевой остаточной пропускной способностью, инцидентные этим узлам дуги, все полностью насыщенные дуги, образовавшиеся “висячие” узлы (если таковые имеются) и все инцидентные им дуги.
Шаг 5.4. Если существует путь из u и v в оставшейся части сети , то перейти на шаг 5.1. В противном случае тупиковый поток g в сети построен.
Шаг 6. Произвести коррекцию потока f в сети G:
если дуге соответствует дуга , то положить ; если дуге соответствует дуга , то положить . Перейти на шаг 2.
Вычислительная сложность описанного алгоритма составляет .
3. Краткое описание алгоритма В.С. Танаева построения допустимого расписания. Дальнейшее исследование поставленной задачи основано на использовании алгоритма В.С. Танаева построения допустимого многопроцессорного расписания с прерываниями и переключениями [1]. Приведем краткое описание этого алгоритма для сформулированной в разд. 1 задачи при . Будем предполагать, что в этом случае множество работ , их длительности и директивные интервалы , m — число идентичных процессоров.
Пусть — все различные величины , , . Строится потоковая сеть (см. рисунок), где —множество вершин, u — источник, v — сток, ( — множество ориентированных дуг. Дуга вводится в сеть, если . Отметим, что при всех j и i либо , либо . Пропускные способности U Î дуг определяются следующим образом: , , ( .
Рисунок. Потоковая сеть G для поиска допустимого расписания
В [1] доказано, что допустимое расписание существует в том и только том случае, когда максимальный поток f в сети G насыщает все выходные дуги ( , т.е. когда при всех . Величина равна процессорному времени, выделяемому работе в интервале . Для построения допустимого расписания следует в каждом интервале применить алгоритм упаковки [1], вычислительная сложность которого составляет . Для поиска максимального потока в сети G можно использовать полиномиальный алгоритм, описанный в разд. 2. Поскольку , то вычислительная сложность алгоритма В.С. Танаева в этом случае составляет .
4. Построение расписания для случая, когда информация о множествах , , поступает до момента τ1. Рассмотрим случай, когда заранее (т.е. до момента времени ) известны состав всех множеств и характеристики входящих в них работ. В этом случае еще до поступления запросов на выполнение работ в моменты времени (т.е. до момента времени ) можно составить расписание для всего комплекса заданий W.
Пусть — это все различные величины , и , . Далее, так же как в разд. 3, определяются интервалы и потоковая сеть , где — множество узлов, u — источник, v — сток, — множество ориентированных дуг. Дуга вводится в сеть , если Î , .
Далее, для решения вопроса о существовании и построении допустимого расписания может быть использован алгоритм, аналогичный тому, который описан в разд. 3. Вычислительная сложность алгоритма составляет
5. Построение расписания для случая, когда информация о множестве поступает в момент τk, . Рассматривается случай, когда моменты поступления запросов на выполнение работ известны заранее, а состав каждого множества и характеристики входящих в него заданий становятся известными только в момент . Сначала рассмотрим задачу построения расписания для .
5.1. Построение сетевой модели и допустимого расписания для . Пусть — все различные величины среди , , , , принадлежащие интервалу . Определим интервалы , , и сеть , где а множество ориентированных дуг и их пропускные способности определяются по аналогии с тем, как это сделано в разд. 3 при , .
При нахождении максимального потока в сети используется следующая модификация алгоритма, описанного в разд. 2. При проталкивании потока из вершины вправо (шаг 5.2 разд. 2) в первую очередь следует использовать дуги для работ , у которых . Это объясняется тем, что такие задания могут выполняться только в интервале , а работам с директивным сроком, большим , процессорное время может выделяться и после момента .
Величина потока равна объему процессорного времени, выделенному работе в интервале . Расписание в интервале строится с помощью алгоритма упаковки.
Если хотя бы для одной работы с директивным сроком оказалось, что (т.е. дуга насыщена не полностью), то допустимого расписания для , и, следовательно, для всего комплекса заданий W не существует. В случае когда для всех работ с директивным сроком , построение допустимого расписания продолжится в момент для незавершенных работ из (если таковые имеются) и вновь поступивших работ из .
5.2. Построение сетевой модели и допустимого расписания для . Предположим, что построена потоковая сеть , и в ней найден максимальный поток . Если хотя бы для одной работы , для которой , после нахождения максимального потока в сети оказалось, что , т.е. дуга насыщена не полностью, то допустимого расписания для , и, следовательно, для всего комплекса W не существует. Если же для всех дуг , , для которых , то построение допустимого расписания для W продолжается в момент для незавершенных работ из множества (если таковые имеются) и вновь поступивших заданий из .
Пусть — все различные величины , , , . Определим интервалы и пусть . Из сети удалим следующие элементы: узлы , , и все инцидентные им дуги , , , ; узлы , для которых
, (5.1)
и соответствующие дуги , , (поскольку выполнение условия (5.1) означает завершение работы ).
Далее, длительности каждой оставшейся работы уменьшаются на величину потока по дуге . Сеть строится из оставшейся не удаленной части сети путем добавления к ней узлов , и дуг , , , , , , по аналогии с тем, как это описано в разд. 3 при , n = nk + (число оставшихся вершин в Gk–1). В сети находится максимальный поток . По аналогии с разд. 5.1 при проталкивании потока из вершины вправо (шаг 5.2 разд. 2) в первую очередь следует использовать дуги для работ , у которых . Величина потока равна объему процессорного времени, выделяемому работе в интервале . Расписание выполнения работ в интервале находится с помощью алгоритма упаковки [1].
Вычислительная сложность предложенного алгоритма составляет
6. Распределение неоднородного комплекса ресурсов. Предполагается, что при выполнении работ помимо процессоров используется невозобновляемый ресурс, количество которого в интервале составляет , . Работе невозобновляемый ресурс может быть выделен только в момент времени . Если его объем составляет , то длительность выполнения задания равна
, (6.1)
где
, (6.2)
(6.3)
Здесь — строго убывающая на интервале функция, принимающая положительные значения, — заданные величины, .
В этих предположениях для решения задачи, поставленной в разд. 1, нам понадобится обобщение алгоритма В.С. Танаева.
6.1. Обобщение алгоритма В.С. Танаева на случай наличия невозобновляемого ресурса. Будем использовать обозначения, введенные в разд. 3. Кроме того, символы , , , , , , заменим на , , , , , , соответственно. В этом случае ограничения (6.1)—(6.3) записываются следующим образом:
, (6.4)
, (6.5)
(6.6)
Докажем следующие утверждения.
Лемма 1. Допустимое расписание выполнения множества работ W в задаче без невозобновляемого ресурса (без ограничений (6.4)—(6.6)), при котором заданию предоставляется процессорное время в объеме , существует в том и только том случае, когда в сети G существует поток , такой, что выполнены равенства
(6.7)
при всех .
Доказательство следует из [1]. Пусть — функция, обратная по отношению к .
Лемма 2. Допустимое расписание выполнения множества работ W в задаче с невозобновляемым ресурсом (с учетом ограничений (6.4)—(6.6)), при котором заданию предоставляется процессорное время в объеме , существует в том и только том случае, когда в сети G существует поток , такой, что справедливы равенства (6.7) и неравенства
(6.8)
, . (6.9)
Доказательство. 1. Пусть в сети G существует поток f, для которого справедливы соотношения (6.7)—(6.9). В этом случае из (6.8) следует, что каждой работе может быть выделен невозобновляемый ресурс в объеме . При этом будет справедливо неравенство (6.6), а в силу (6.4) длительность выполнения работы (т.е. требуемое процессорное время) составит . Поскольку , то из (6.9) вытекает (6.5). Тогда из леммы 1 следует существование допустимого расписания для W с учетом ограничений (6.4)—(6.6).
2. Пусть теперь существует допустимое расписание выполнения работ W в задаче с невозобновляемом ресурсом (с учетом ограничений (6.4)—(6.6)), при котором заданию выделяется процессорное время в объеме . Пусть при этом работе выделен невозобновляемый ресурс в объеме . Тогда в силу (6.4) или . В этом случае из (6.6) и (6.5) следуют неравенства (6.8) и (6.9) соответственно. Теперь доказательство вытекает из леммы 1. Лемма доказана.
Из (6.7), (6.9) следует, что при построении допустимого расписания в задаче с невозобновляемым ресурсом нужно искать поток f в сети G, для которого при всех . С учетом того, что функции строго убывают, величины необходимо максимизировать. Поэтому для решения этой задачи предлагается следующий алгоритм.
В сети G сначала определяется вершина , для которой величина максимального потока g из u в является наибольшей среди всех вершин , . Далее, номер включается в множество N и пропускные способности всех дуг сети G уменьшаются на величину . После чего данная процедура повторяется для вершин , , . Далее, выполняется проверка условия (6.8).
Алгоритм 1.
Шаг 1. В сети G положить , .
Шаг 2. Для , выполнять шаги 3—5.
Шаг 3. Удалить из сети G все дуги , , .
Шаг 4. Найти максимальный поток g в сети G и пусть — его величина.
Шаг 5. Включить в сеть G дуги, удаленные на шаге 3.
Шаг 6. Пусть . Включить в N. Положить . Пропускные способности всех дуг сети G уменьшить на величину .
Шаг 7. Если , то перейти на шаг 2. Если , то перейти на шаг 8.
Шаг 8. Если выполнено неравенство (6.8), то допустимое расписание существует. При этом работе выделяется невозобновляемый ресурс в объеме , . Длительность выполнения работы составляет . Расписание строится так, как описано в разд. 3. Если неравенство (6.8) не выполнено, то допустимого расписания не существует. Алгоритм завершен.
Вычислительная сложность алгоритма 1 составляет .
6.2. Обобщение исходной задачи на случай наличия нево-зобновляемого ресурса. Перейдем теперь к задаче, сформулированной в разд. 1, с дополнительными ограничениями (6.1)—(6.3), связанными с распределением невозобновляемого ресурса. Вновь вернемся к обозначениям , , , , , , , которые ранее были заменены на , , , , , , соответственно.
С учетом исследований, проведенных в разд. 5.1, 5.2 и 6.1, предлагается следующий алгоритм решения исходной задачи, сформулированной в разд. 1, для случая наличия невозобновляемого ресурса.
Алгоритм 2.
Шаг 1. Положить .
Шаг 2. Построить сеть (см. разд. 5.1, 5.2).
Шаг 3. Из сети удалить узлы , соответствующие работам с директивным сроком , и инцидентные им дуги.
Шаг 4. К полученной сети применить алгоритм 1. Если на шаге 8 алгоритма 1 выяснилось, что допустимого расписания не существует, то алгоритм 2 завершен, решения не существует. В противном случае перейти на шаг 5.
Шаг 5. Включить в сеть удаленные на шаге 3 узлы и дуги. Положить . Если , то перейти на шаг 1. Если , то решение построено. Алгоритм завершен.
Вычислительная сложность алгоритма 2 составляет
Заключение. Исследована задача составления многопроцессорного допустимого расписания для совокупности комплексов работ, запросы на выполнение которых поступают в заданные моменты времени. Состав каждого комплекса и характеристики входящих в него работ становятся известными в момент поступления запроса. При выполнении заданий допускаются прерывания и переключения с одного процессора на другой. Исследованы постановки с невозобновляемым ресурсом и без него. Разработан полиномиальный алгоритм решения задачи, основанный на построении сетевой потоковой модели и поиске максимального потока.