F2Cmax — различия между версиями
GR1n (обсуждение | вклад) (→Описание алгоритма) |
GR1n (обсуждение | вклад) (→Описание алгоритма) |
||
Строка 15: | Строка 15: | ||
<ul> | <ul> | ||
<li> Находим такие индексы <tex> i </tex> и <tex> j </tex>, что <tex>p_{ij} = \min \{ p_{ij} \mid i \in X; j = 1, 2\}</tex> </li> | <li> Находим такие индексы <tex> i </tex> и <tex> j </tex>, что <tex>p_{ij} = \min \{ p_{ij} \mid i \in X; j = 1, 2\}</tex> </li> | ||
− | <li>Если минимум достигается на первом станке (иными словами <tex> j = 1 </tex>), то | + | <li>Если минимум достигается на первом станке (иными словами <tex> j = 1 </tex>), то поставим работу <tex> i </tex> в конец листа <tex> L </tex>, иначе ставим в начало листа <tex> R </tex> </li> |
+ | <li>Удаляем работу <tex> i </tex> из множества <tex> X </tex> </li> | ||
</ul> | </ul> | ||
</li> | </li> | ||
− | <li> Рассмотрим лист <tex> T = L | + | <li> Рассмотрим лист <tex> T = L \circ R</tex>. Утверждается, что этот лист является оптимальной перестановкой работ как на первом, так и на втором станке. Далее расставляем подряд работы на первом станке согласно перестановке, после чего ставим в том же порядке работы на втором стане, при этом избегая одновременного выполнения одной и той же работы. </li> |
</ol> | </ol> |
Версия 18:38, 10 июня 2013
Содержание
Постановка задачи
Рассмотрим задачу:
- Дано работ и станка.
- Для каждой работы известно её время выполнения на каждом станке.
- Каждую работу необходимо выполнить сначала на первом станке, а потом на втором.
Требуется минимизировать время окончания всех работ.
Описание алгоритма
Пусть
- Будем в ходе нашего алгоритма строить два списка и . Изначально оба списка пусты. И будем поддерживать множество еще не распределенных по спискам и работ
- Пока множество
- Находим такие индексы и , что
- Если минимум достигается на первом станке (иными словами ), то поставим работу в конец листа , иначе ставим в начало листа
- Удаляем работу из множества
непусто будем распределять работы по спискам следующим образом:
- Рассмотрим лист . Утверждается, что этот лист является оптимальной перестановкой работ как на первом, так и на втором станке. Далее расставляем подряд работы на первом станке согласно перестановке, после чего ставим в том же порядке работы на втором стане, при этом избегая одновременного выполнения одной и той же работы.
Доказательство корректности алгоритма
Псевдокод
Сложность алгоритма
Источники
- Peter Brucker. «Scheduling Algorithms» — «Springer», 2006 г. — 175 стр. — ISBN 978-3-540-69515-8