Введение

Планирование одной машины или планирование одного ресурса — это задача оптимизации в информатике и исследовании операций. Дано n заданий J1, J2, …, Jn с различным временем обработки, которые необходимо запланировать на одной машине таким образом, чтобы оптимизировать определенную целевую функцию, например, пропускную способность. Планирование одной машины является частным случаем планирования на идентичных машинах, которое, в свою очередь, является частным случаем оптимального планирования заданий. Многие задачи, которые в общем случае являются NP-трудными, могут быть решены за полиномиальное время в случае с одной машиной. В стандартной трехпольной нотации для задач оптимального планирования заданий вариант с одной машиной обозначается цифрой 1 в первом поле. Например, "1||" — это задача планирования одной машины без ограничений, где целью является минимизация суммы времен завершения. Задача минимизации длительности выполнения (makespan) 1||, которая является распространенной целью при использовании нескольких машин, тривиальна для одной машины, поскольку длительность выполнения всегда одинакова. Поэтому изучались другие целевые функции.

Минимизация суммы сроков завершения

Проблема 1|| направлена на минимизацию суммы времен завершения. Она может быть решена оптимально по правилу "Наименьшее время обработки первым" (SPT): задачи планируются в порядке возрастания времени их обработки. Проблема 1|| направлена на минимизацию взвешенной суммы времен завершения. Она может быть решена оптимально по правилу "Взвешенное наименьшее время обработки первым" (WSPT): задачи планируются в порядке возрастания отношения, и для нее существуют как точные алгоритмы с экспоненциальным временем работы, так и алгоритм приближения с полиномиальным временем работы.

Максимальная пропускная способность

Проблема 1|| стремится минимизировать количество опоздавших задач, независимо от величины опоздания. Она может быть решена оптимально алгоритмом Ходжсона-Мура. Не взвешенный вариант оптимизации, максимизирующий количество задач, завершающихся вовремя, обозначается как 1||, и может быть решен за время с использованием динамического программирования, когда все времена поступления и сроки являются целыми числами. Задача о выполнимости, определяющая, возможно ли завершить все заданные задачи вовремя, может быть решена несколькими алгоритмами, самый быстрый из которых работает за время. Задачи могут иметь интервалы выполнения. Для каждой задачи j задано время обработки tj и время начала sj, поэтому она должна быть выполнена в интервале [sj, sj+tj]. Поскольку некоторые интервалы перекрываются, не все задачи могут быть выполнены. Цель состоит в том, чтобы максимизировать количество выполненных задач, то есть пропускную способность. В более общем случае, каждая задача может иметь несколько возможных интервалов, и каждый интервал может быть связан с разной прибылью. Цель состоит в том, чтобы выбрать не более одного интервала для каждой задачи, чтобы максимизировать общую прибыль. Более подробную информацию можно найти на странице, посвященной планированию интервалов. В более общем плане, задачи могут иметь временные окна, с указанием времени начала и сроков, которые могут быть больше длительности задачи. Каждая задача может быть запланирована в любое время внутри своего временного окна. Бар Ной, Бар Йегуда, Фрейнд, Наор и Шибер представляют (1 ε)/2-аппроксимацию.

Работы с непостоянной длиной

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