Русская Википедия:Задача планирования для поточной линии

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Задача планирования для поточной линии (Шаблон:Lang-en или Шаблон:Lang-en2[1]) — комбинаторная задача теории расписаний.

Определение

Даны <math>n</math> требований и <math>m</math> машин для их обработки. Заданы следующие ограничения:

  • все требования должны пройти обработку последовательно на всех машинах с 1-й до <math>m</math>-ой;
  • любая машина в каждый момент времени может обрабатывать только одно требование.
  • не допускаются прерывания при обслуживании требований и, следовательно, решение определяется некоторой перестановкой требований.

Задано время обслуживания каждого требования на каждой машине матрицей <math>M_{nm}(\mathbb{R}^{+})</math>. Элемент матрицы <math>p_{ij}</math> — время обслуживания требования <math>i</math> на машине <math>j</math>.

Обычно рассматривают следующие целевые функции:

  • <math>C_{max}</math>, время окончания обслуживания последнего требования на <math>m</math>-ой машине или общее время обслуживания;
  • <math>\Sigma^{n}_{i=1} c_i</math>, сумму времен окончания обслуживания требований на машине <math>m</math>.

Алгоритмы минимизации <math>C_{max}</math>

Алгоритм для двух машин

Для решения задачи на двух машинах найден полиномиальный по времени алгоритм Джонсона[2]: требования разделяются на два множества <math>U = \{i : p_{i1} < p_{i2}\}</math> и <math>V = \{i : p_{i1} \geq p_{i2}\}</math>, далее:

  • требования <math>U</math> упорядочиваются по неубыванию <math>p_{i1}</math>,
  • требования <math>V</math> упорядочиваются по невозрастанию <math>p_{i2}</math>,
  • оптимальная последовательность является конкатенацией упорядоченных таким образом <math>U</math> и <math>V</math>.

Алгоритм имеет временную сложность <math>n \log(n)</math>, поскольку использует алгоритм сортировки.

Алгоритмы для трёх и более машин

В случае более двух машин эта задача является NP-трудной, но разработано множество эвристических полиномиальных по времени приближённых алгоритмов[3].

Эвристика NEH

Одним из наиболее известных алгоритмов является эвристика Наваза, Энскора и Хама (Nawaz, Enscore, Ham)[4]:

  • требования упорядочиваются по <math> \sum_{j=1}^{m} p_{ij} </math> и нумерюутся в соответствии с этим порядком,
  • определяется порядок обслуживания двух первых требований так, чтобы минимизировать время их обслуживания,
  • для <math>i = 3</math> до <math>n</math>:
    • помещается требование <math>i</math> на позицию <math>k \in [1,i]</math>, которая минимизирует общее время обслуживания первых <math> i </math> требований
  • (конец цикла)

Эвристика Кэмпбелла, Дудека и Смита

Известна также эвристика Кэмпбелла, Дудека и Смита (Campbell, Dudek, Smith), в которой задача для <math>m</math> машин последовательно сводится к <math>m-1</math> задаче для 2 машин[5] и каждая из них решается алгоритмом Джонсона.

Примечания

Шаблон:Примечания

  1. Шаблон:Cite web
  2. S.M. Johnson, Optimal two- and three-stage production schedules with setup times included, Naval Res. Log. Quart. I(1954)61-68.
  3. A comprehensive review and evaluation of permutation flowshop heuristics
  4. [1] A heuristic algorithm for the m-machine, n-job flow-shop sequencing problem
  5. Шаблон:Cite web