QSumCi — различия между версиями
(→Псевдокод) |
|||
Строка 11: | Строка 11: | ||
==Псевдокод== | ==Псевдокод== | ||
− | for i=1 to m do | + | for <tex>i</tex> = 1 to <tex>m</tex> do |
− | + | <tex>p_j = f </tex> | |
− | for i=1 to n do | + | <tex>w_j = \frac{1}{s_j}</tex> |
− | + | 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>; | |
− | + | <tex>p_j = i + p_j </tex> | |
+ | <tex>w_j = w_j + \frac{1}{p_j} </tex> |
Версия 17:50, 21 июня 2012
Постановка задачи
Есть несколько станков с разной скоростью выполнения работ и несколько работ с заданным временем выполнения.
Цель - составить такое расписание, чтобы суммарное время окончания всех работ было минимальным.
Алгоритм решения
Пусть
последовательность работ, выполняемых на станке с номером . Тогда вклад этих работ в целевую функцию будет равен . Отсюда видно, что сумма оптимальна, когда последовательность не убывает. Теперь введем неубывающую последовательность , которая состоит из маленьких элементов из множества . Если , то на станкеПсевдокод
for= 1 to do for = 1 to do Find the largest index of = ;