Opij1Cmax — различия между версиями
Qradimir (обсуждение | вклад) м (→Оценка сложности алгоритма) |
Qradimir (обсуждение | вклад) м |
||
| Строка 7: | Строка 7: | ||
===Описание алгоритма=== | ===Описание алгоритма=== | ||
Минимальное значение <tex> T_{min} </tex> минимизуруемой функции упирается в следующие ограничения: | Минимальное значение <tex> T_{min} </tex> минимизуруемой функции упирается в следующие ограничения: | ||
| − | # В допустимом расписании на каждом станке надо обработать каждую работу, поэтому <tex> T_{min} \ | + | # В допустимом расписании на каждом станке надо обработать каждую работу, поэтому <tex> T_{min} \geqslant n </tex>. |
| − | # В допустимом расписании каждую работу нужно обработать на всех станках, причем ее нельзя обрабатывать на двух станках одновременно, поэтому <tex> T_{min} \ | + | # В допустимом расписании каждую работу нужно обработать на всех станках, причем ее нельзя обрабатывать на двух станках одновременно, поэтому <tex> T_{min} \geqslant m </tex>. |
Тогда <tex> T_{min} = \max{(m, n)} </tex>. | Тогда <tex> T_{min} = \max{(m, n)} </tex>. | ||
| − | В случае <tex> n \ | + | В случае <tex> n \geqslant m </tex> оптимальное расписание циклическими сдвигами последовательности <tex> 1 \dots n </tex> и выглядит следующим образом: |
'''1 2 3 ... k k+1 ... n-1 n''' | '''1 2 3 ... k k+1 ... n-1 n''' | ||
'''M_1''' 1 2 3 ... k k+1 ... n-1 n | '''M_1''' 1 2 3 ... k k+1 ... n-1 n | ||
Версия 12:35, 6 июня 2016
| Задача: |
| Дано одинаковых станков, которые работают параллельно и работ, котороые необходимо выполнить в произвольном порядке на всех станках. Время выполнения каждой работы на любом станке одинаково и равно 1. Необходимо минимизировать время выполнения всех работ. |
Алгоритм
Описание алгоритма
Минимальное значение минимизуруемой функции упирается в следующие ограничения:
- В допустимом расписании на каждом станке надо обработать каждую работу, поэтому .
- В допустимом расписании каждую работу нужно обработать на всех станках, причем ее нельзя обрабатывать на двух станках одновременно, поэтому .
Тогда .
В случае оптимальное расписание циклическими сдвигами последовательности и выглядит следующим образом:
1 2 3 ... k k+1 ... n-1 n M_1 1 2 3 ... k k+1 ... n-1 n M_2 n 1 2 ... k-1 k ... n-2 n-1 . ... ... ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... M_m n-m+2 n-m+3 ... ... ... ... ... n-m n-m+1
Если же , добавим фиктивных работ с номерами , построим расписание способом выше и удалим из полученного расписания фиктивные работы.
Оценка сложности алгоритма
Минимальное значение вычисляется за времени. Построение расписания сводится к заполнению матрицы размером и выполняется за времени.