QSumCi — различия между версиями
|  (→Алгоритм решения) |  (→Алгоритм решения) | ||
| Строка 2: | Строка 2: | ||
| |definition = Есть несколько станков с разной скоростью выполнения работ и несколько работ с заданным временем выполнения.<br>Цель {{---}} составить такое расписание, чтобы суммарное время окончания всех работ было минимальным.}} | |definition = Есть несколько станков с разной скоростью выполнения работ и несколько работ с заданным временем выполнения.<br>Цель {{---}} составить такое расписание, чтобы суммарное время окончания всех работ было минимальным.}} | ||
| ==Алгоритм решения== | ==Алгоритм решения== | ||
| − | Пусть <tex> i_1, i_2, \cdots i_r </tex> последовательность работ, выполняемых на станке с номером <tex> j </tex>. Тогда вклад этих работ в целевую функцию будет равен <tex> p_{ | + | Пусть <tex> i_1, i_2, \cdots i_r </tex> последовательность работ, выполняемых на станке с номером <tex> j </tex>. Тогда вклад этих работ в целевую функцию будет равен <tex> p_{i1}\cfrac{r}{s_j} + p_{i2}\cfrac{r-1}{s_j} +  \cdots + p_{ir}\cfrac{1}{s_j} </tex>. [[Задача_о_минимуме/максимуме_скалярного_произведения|Отсюда]] видно, что сумма оптимальна, когда последовательность <tex> p_{ij} </tex> не возрастает. | 
| Теперь введем неубывающую последовательность <tex> t_1, t_2 ... t_n </tex>, которая состоит из <tex> n </tex> минимальных элементов из множества <tex> \{\cfrac{1}{s_1}, \cfrac{1}{s_2} \cdots \cfrac{1}{s_m}, \cfrac{2}{s_1}, \cfrac{2}{s_2} \cdots \cfrac{2}{s_m}, \cfrac{3}{s_1} \cdots \}</tex>. Тогда <tex> t_i</tex> показывает на каком станке и какой по счету с конца должна выполняться работа с номером <tex>i</tex> в отсортированном по длительности списке работ. Сопоставляя работы и <tex> t_i</tex> составляем расписание. | Теперь введем неубывающую последовательность <tex> t_1, t_2 ... t_n </tex>, которая состоит из <tex> n </tex> минимальных элементов из множества <tex> \{\cfrac{1}{s_1}, \cfrac{1}{s_2} \cdots \cfrac{1}{s_m}, \cfrac{2}{s_1}, \cfrac{2}{s_2} \cdots \cfrac{2}{s_m}, \cfrac{3}{s_1} \cdots \}</tex>. Тогда <tex> t_i</tex> показывает на каком станке и какой по счету с конца должна выполняться работа с номером <tex>i</tex> в отсортированном по длительности списке работ. Сопоставляя работы и <tex> t_i</tex> составляем расписание. | ||
Версия 01:36, 13 июня 2015
| Задача: | 
| Есть несколько станков с разной скоростью выполнения работ и несколько работ с заданным временем выполнения. Цель — составить такое расписание, чтобы суммарное время окончания всех работ было минимальным. | 
Алгоритм решения
Пусть последовательность работ, выполняемых на станке с номером . Тогда вклад этих работ в целевую функцию будет равен . Отсюда видно, что сумма оптимальна, когда последовательность не возрастает. Теперь введем неубывающую последовательность , которая состоит из минимальных элементов из множества . Тогда показывает на каком станке и какой по счету с конца должна выполняться работа с номером в отсортированном по длительности списке работ. Сопоставляя работы и составляем расписание.
| Теорема: | 
| Приведенный алгоритм верен. | 
| Доказательство: | 
| 
 | 
Время работы
Начальная сортировка работ занимается времени. Затем происходит выбор минимальных коэффициентов, посредством приоритетной очереди время работы составит . Итого суммарное время работы .
Источники информации
- Peter Brucker Scheduling Algorithms — Springer, 2006. — с. 133. — ISBN 978-3-540-69515-8
