J2ni2Cmax — различия между версиями
Watson (обсуждение | вклад) (→Доказательство корректности алгоритма) |
Watson (обсуждение | вклад) (→Описание алгоритма) |
||
Строка 15: | Строка 15: | ||
Разобьем все работы на четыре множества: | Разобьем все работы на четыре множества: | ||
<ol> | <ol> | ||
− | <li><tex>I_{1}</tex> - множество всех работ, которые должны | + | <li><tex>I_{1}</tex> - множество всех работ, которые должны выполниться только на <tex>M_{1}</tex>. </li> |
− | <li><tex>I_{2}</tex> - множество всех работ, которые должны | + | <li><tex>I_{2}</tex> - множество всех работ, которые должны выполниться только на <tex>M_{2}</tex>. </li> |
− | <li><tex>I_{12}</tex> - множество всех работ, которые должны | + | <li><tex>I_{12}</tex> - множество всех работ, которые должны выполниться сначала на <tex>M_{1}</tex> затем на <tex>M_{2}</tex>. </li> |
− | <li><tex>I_{21}</tex> - множество всех работ, которые должны | + | <li><tex>I_{21}</tex> - множество всех работ, которые должны выполниться сначала на <tex>M_{2}</tex> затем на <tex>M_{1}</tex>. </li> |
</ol> | </ol> | ||
Решим задачу [[F2Cmax|<tex>F2 \mid \mid C_{max}</tex>]] для <tex>I_{12}</tex> и для <tex>I_{21}</tex>. Получим расписание <tex>S_{12}</tex> и <tex>S_{21}</tex>. | Решим задачу [[F2Cmax|<tex>F2 \mid \mid C_{max}</tex>]] для <tex>I_{12}</tex> и для <tex>I_{21}</tex>. Получим расписание <tex>S_{12}</tex> и <tex>S_{21}</tex>. |
Версия 18:57, 22 июня 2013
Содержание
Постановка задачи
Рассмотрим задачу:
- Дано работ и станка.
- Для каждой работы известно её время выполнения на каждом станке .
- Для каждой работы известна последовательность станков - порядок, в котором нужно выполнить работу.
- Для любой работы (Длина последовательности ) .
Требуется минимизировать время окончания выполнения всех работ.
Описание алгоритма
- первый станок. - второй станок.
Разобьем все работы на четыре множества:
- - множество всех работ, которые должны выполниться только на .
- - множество всех работ, которые должны выполниться только на .
- - множество всех работ, которые должны выполниться сначала на затем на .
- - множество всех работ, которые должны выполниться сначала на затем на .
Решим задачу для и для . Получим расписание и .
Тогда оптимальное расписание для нашей задачи будет следующим:
- Расписание : сначала в соответсвии с расписанием . Затем в произвольном порядке. Затем в соответсвии с .
- Расписание : сначала в соответсвии с расписанием . Затем в произвольном порядке. Затем в соответсвии с .
Примечание: во время выполнения
на или на могут возникнуть простои из-за того, что работа ещё не выполнилась на предыдущем станке.Доказательство корректности алгоритма
- время выполнения множества работ на станке .
- множество всех работ, которые нужно сделать хотя бы раз на -м станке. (Формально )
Лемма: |
Расписание, построенное данным алгоритмом, обладает следующим свойством : один из станков работает без простоев. |
Доказательство: |
Рассмотрим 2 варианта:
|
Теорема: |
Расписание, построенное данным алгоритмом, является корректным и оптимальным. |
Доказательство: |
Корректность алгоритма очевидна. Докажем оптимальность. Пусть, для опеределенности работает без прерываний.Рассмотрим станок на котором достигается . |
Сложность алгоритма
Время работы алгоритма равно времени работы алгоритма .
Сложность алгоритма
.