J2ni2Cmax — различия между версиями
| Watson (обсуждение | вклад)  (→Доказательство корректности алгоритма) | Watson (обсуждение | вклад)   (→Доказательство корректности алгоритма) | ||
| Строка 65: | Строка 65: | ||
| Рассмотрим станок на котором достигается <tex>C_{max}</tex> .   | Рассмотрим станок на котором достигается <tex>C_{max}</tex> .   | ||
| + | <ul> | ||
| <li>Если это <tex>M_{1}</tex>, то оптимальность очевидна (<tex>C_{max} >= \sum\limits_{i \in G_{1}} p_i </tex>). | <li>Если это <tex>M_{1}</tex>, то оптимальность очевидна (<tex>C_{max} >= \sum\limits_{i \in G_{1}} p_i </tex>). | ||
| Строка 71: | Строка 72: | ||
| Или есть прерывания. | Или есть прерывания. | ||
| Тогда целевая функция равна ответу задачи [[F2Cmax|<tex>F2 \mid \mid C_{max}</tex>]] для работ <tex>I_{21}</tex>, который оптимален. | Тогда целевая функция равна ответу задачи [[F2Cmax|<tex>F2 \mid \mid C_{max}</tex>]] для работ <tex>I_{21}</tex>, который оптимален. | ||
| + | <ul> | ||
| }} | }} | ||
Версия 18:51, 22 июня 2013
Содержание
Постановка задачи
Рассмотрим задачу:
- Дано работ и станка.
- Для каждой работы известно её время выполнения на каждом станке .
- Для каждой работы известна последовательность станков - порядок, в котором нужно выполнить работу.
- Для любой работы (Длина последовательности ) .
Требуется минимизировать время окончания выполнения всех работ.
Описание алгоритма
- первый станок. - второй станок.
Разобьем все работы на четыре множества:
- - множество всех работ, которые должны выполнится только на .
- - множество всех работ, которые должны выполнится только на .
- - множество всех работ, которые должны выполнится сначала на затем на .
- - множество всех работ, которые должны выполнится сначала на затем на .
Решим задачу для и для . Получим расписание и .
Тогда оптимальное расписание для нашей задачи будет следующим:
- Расписание : сначала в соответсвии с расписанием . Затем в произвольном порядке. Затем в соответсвии с .
- Расписание : сначала в соответсвии с расписанием . Затем в произвольном порядке. Затем в соответсвии с .
Примечание: во время выполнения на или на могут возникнуть простои из-за того, что работа ещё не выполнилась на предыдущем станке.
Доказательство корректности алгоритма
- время выполнения множества работ на станке .
- множество всех работ, которые нужно сделать хотя бы раз на -м станке. (Формально )
| Лемма: | 
| Расписание, построенное данным алгоритмом, обладает следующим свойством : один из станков работает без простоев. | 
| Доказательство: | 
| Рассмотрим 2 варианта: | 
| Теорема: | 
| Расписание, построенное данным алгоритмом, является корректным и оптимальным. | 
| Доказательство: | 
| Корректность алгоритма очевидна. Докажем оптимальность. Пусть, для опеределенности работает без прерываний. Рассмотрим станок на котором достигается . | 
| </td></tr> </table> Сложность алгоритмаСложность алгоритма . | 

