QSumCi — различия между версиями
Строка 12: | Строка 12: | ||
==Псевдокод== | ==Псевдокод== | ||
for <tex>i</tex> = 1 to <tex>m</tex> do | for <tex>i</tex> = 1 to <tex>m</tex> do | ||
− | <tex> | + | <tex>\Pi_j = \empty </tex> |
<tex>w_j = \frac{1}{s_j}</tex> | <tex>w_j = \frac{1}{s_j}</tex> | ||
for <tex>i</tex> = 1 to <tex>n</tex> do | for <tex>i</tex> = 1 to <tex>n</tex> do | ||
Find the largest index <tex> j </tex> of <tex>w_j</tex> = <tex>\min\limits_{l=1}^{m}{w_l}</tex>; | Find the largest index <tex> j </tex> of <tex>w_j</tex> = <tex>\min\limits_{l=1}^{m}{w_l}</tex>; | ||
− | <tex> | + | <tex>\Pi_j = i + \Pi_j </tex> |
<tex>w_j = w_j + \frac{1}{s_j} </tex> | <tex>w_j = w_j + \frac{1}{s_j} </tex> |
Версия 17:54, 21 июня 2012
Постановка задачи
Есть несколько станков с разной скоростью выполнения работ и несколько работ с заданным временем выполнения.
Цель - составить такое расписание, чтобы суммарное время окончания всех работ было минимальным.
Алгоритм решения
Пусть
последовательность работ, выполняемых на станке с номером . Тогда вклад этих работ в целевую функцию будет равен . Отсюда видно, что сумма оптимальна, когда последовательность не убывает. Теперь введем неубывающую последовательность , которая состоит из маленьких элементов из множества . Если , то на -том станкеПсевдокод
for= 1 to do for = 1 to do Find the largest index of = ;