Задача Джонсона з одним верстатом

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

Шаблон:Вікіфікувати Задача Джонсона з одним верстатом — задача складання оптимального розкладу обробки n деталей на єдиному верстаті, якщо i-а деталь обробляється на ньому за час ti, а за t секунд очікування до обробки цієї деталі сплачується штраф fi(t).

Таким чином, завдання полягає в пошуку такого переупорядковування деталей, що наступна величина (розмір штрафу) мінімальна. Якщо ми позначимо через π перестановку деталей (π1 — номер першої оброблюваної деталі, π2 — другий, і т. д.), то розмір штрафу f(π) дорівнює:

F(π)=fπ1(0)+fπ2(tπ1)+fπ3(tπ1+tπ2)++fπn(i=1n1tπi)

Іноді це завдання називається завданням однопроцесорного обслуговування безлічі заявок.

Рішення завдання в деяких окремих випадках

Перший приватний випадок: лінійні функції штрафу

Навчимося вирішувати цю задачу в разі, коли всі fi(t) лінійні, тобто мають вигляд:

fi(t)=cit, 

де ci — невід'ємні числа. Зауважимо, що в цих лінійних функціях вільний член дорівнює нулю, тому що в іншому випадку до відповіді відразу можна додати цей вільний член, і вирішувати задачу з нульовим вільним членом. Зафіксуємо деяку розклад — перестановку π. Зафіксуємо якийсь номер i=1n1, і нехай перестановка π дорівнює перестановці π,в якій обміняли i-ий і i+1-ий елементи. Подивимося на скільки при цьому змінився штраф:

F(π)F(π)=

легко зрозуміти, що зміни відбулися тільки з i-им і i+1-им складовими:

=cπik=1i1tπk+cπi+1k=1itπkcπik=1i1tπkcπi+1k=1itπk=

=cπi+1k=1i1tπk+cπik=1itπkcπik=1i1tπkcπi+1k=1itπk=

=cπitπi+1cπi+1

Зрозуміло, що якщо розклад π є оптимальним, то будь-яке його зміна приводить до збільшення штрафу (або збереження колишнього значення), тому для оптимального плану можна записати умову:

 i=1n1:cπitπi+1cπi+1tπi 0.

Перетворюючи, отримуємо:

 i=1n1:cπitπi cπi+1tπi+1.

Таким чином, оптимальний розклад можна отримати, якщо відсортувати всі деталі по відношенню ci до ti в зворотному порядку.

Слід зазначити, що ми отримали цей алгоритм так званим перестановки прийомом: ми спробували обміняти місцями два сусідніх елемента розкладу, вирахували, наскільки при цьому змінився штраф, і звідси вивели алгоритм пошуку оптимального розкладу.

Другий окремий випадок: експоненціальні функції штрафу

Нехай тепер функції штрафу мають вигляд:

fi(t)=cieαt, 

де всі числа ci невід'ємні, константа α позитивна.

Тоді, застосовуючи аналогічним чином тут перестановочний прийом, легко отримати, що деталі треба сортувати в порядку убування величин: vi=1eαtici.

Третій окремий випадок: однакові монотонні функції штрафу

У цьому випадку вважається, що всі fi(t) збігаються з деякою функцією ϕ(t), яка є зростаючою.

Зрозуміло, що в цьому випадку оптимально розташовувати деталі в порядку збільшення часу обробки ti.

Теорема Лівшиця-Кладова

Теорема Лівшиця-Кладова встановлює, що перестановочний прийом застосовується лише для вищеописаних трьох окремих випадків, і тільки них, тобто: Лінейний випадок: fi(t)=cit+di, де ci — невід'ємні константи, Експоненційний випадок: fi(t)=cieαt+di, де ci і α — позитивні константи, Тотожний випадок: fi(t)=ϕ(t), де ϕ — зростаюча функція. Ця теорема доведена в припущенні, що функції штрафу є досить гладкими (існують треті похідні). У всіх трьох випадках застосуємо перестановочний прийом, завдяки якому шукане оптимальний розклад може бути знайдено простий сортуванням, отже, за час O(n logn). Шаблон:Ізольована стаття