- •Оглавление
- •Введение
- •Работа №1. Графический метод решения задачи линейного программирования
- •Работа №2. Решение задачи линейного программирования симплекс-методом
- •Работа 3. Задача коммивояжера (метод ветвей и границ)
- •Матрица стоимостей (условные единицы)
- •Редукция строк
- •Редукция столбов
- •Значения АiиВj
- •Значения Фij
- •Преобразованная матрица стоимости
- •Вторая матрица решений
- •Третья матрица решений
- •Матрица стоимости возврата
- •Работа №4. Транспортная задача
- •Работа №5. Нелинейное программирование
- •Работа №6. Планирование рабочей силы
- •Работа №7. Оптимизация замены оборудования на предприятии
- •Варианты задания для выполнения работы
- •Работа №8. Задачи упорядочевания (алгоритм джонса)
- •Алгоритм джонсона для решения задачи упорядочения nх2
- •Варианты для задания №1
- •Варианты для задания №2
- •Вопросы к лабораторной работе №1
- •Список литературных источников
- •«Оптимизация инженерных решений»
- •400131, Г. Волгоград, пр. Им. В. И. Ленина, 28. Корп. 1
Алгоритм джонсона для решения задачи упорядочения nх2
Джонсон в 1963 г. предложил алгоритм построения оптимальной последовательности обработки для случая n деталей и двух станков с жесткими и одинаковыми маршрутами обработки, когда в качестве критерия оптимальности выбирается минимум общей продолжительности обработки, а начальные и конечные директивные сроки и таковы, что накладываемые этими сроками ограничения можно не учитывать.
АЛГОРИТМ ДЖОНСОНА
1. Найти наименьший элемент в таблице значений {ai,bi}.
2. Если этот наименьший элемент принадлежит столбцу значений ai, то деталь с соответствующим номером i поставить на первое свободное место последовательности (в первый раз это будет первое место, во второй – второе и т.д.); если же наименьший элемент принадлежит столбцу значений bi, то деталь с соответствующим номером i поставить на последнее свободное место последовательности (в первый раз это будет n-е место, во второй – (n - 1) и т.д.); если одновременно найдется несколько одинаковых наименьших элементов, то среди них можно выбирать любой, принять за наименьший и поступать так, как описано в начале пункта 2 алгоритма.
3. Из таблицы значений {ai,bi} вычеркнуть строку, соответствующую выбранному наименьшему элементу, и проверить, остались ли еще не вычеркнутые строки.
4. Если не вычеркнутые строки еще остались, то рассматривать их как новую таблицу значений {ai,bi} и перейти к пункту 1 алгоритма; если вычеркнуты все строки таблицы, то это означает, что алгоритм свою работу закончил.
Применим алгоритм Джонсона к таблице примера, рассмотренного в первом параграфе данной главы.
1. Просматривая таблицу значений {ai,bi} находим, что минимальным является b1=1.
2.Это означает, что деталь с номером i* = 1 в оптимальной последовательности должна быть последней, т.е. иметь номер iнов = n =5.
3. Вычеркиваем из таблицы первую строку.
4. Так как еще остались не вычеркнутые строки, то возвращаемся к первому пункту алгоритма Джонсона.
5. Находим, что минимальным элементом остаточной таблицы является a5 = 2.
6. Ставим деталь с номером i* = 5 на первое место оптимальной последовательности, т.е. присваиваем номеру i* значение 1.
7. Вычеркиваем из таблицы пятую строку.
8. Так как еще остались не вычеркнутые строки, то опять возвращаемся к первому пункту алгоритма.
9. Находим, что минимальными являются a4 = b2 = 4.
10. Выбираем деталь, например, с номером i* = 4 и помещаем ее в первое свободное место оптимальной последовательности, т.е. присваиваем номеру iнов значение 2.
11. Вычеркиваем четвертую строку.
12. Возвращаемся к началу.
13. Находим, что (ai,bi) = b2 = 4.
14. Присваиваем детали с номером i* = 2 номер iнов = n – 1 = 4.
15. Вычеркиваем вторую строку.
16. Возвращаемся к таблице, содержащей еще одну строку. Конечно, для оставшейся не вычеркнутой детали осталось всего одно свободное место в оптимальной последовательности с номером iнов = 3, поэтому решение уже получено – оптимальная последовательность в прежних номерах деталей буде иметь вид 5,4,3,2,1. Это же решение мы получили бы, если бы продолжили алгоритм Джонсона до конца (что сделала бы ЭВМ, работая по программе, реализующей алгоритм Джонсона). Действительно, проверив оставшуюся строку, ЭВМ обнаружила бы, что min(ai,bi) = a3 = 6, и поместила бы деталь с номером i* = 3 в первое свободное место, т.е. присвоила бы ей номер 3. Вычеркнув третью строку таблицы, ЭВМ обнаружила бы, что не вычеркнутых строк больше не осталось, и вышла бы на конец алгоритма – печать результата и останов работы программы.
У читателя может возникнуть сомнение, правильно ли поступаем, когда, обнаружив два (или больше) одинаковых минимальных элемента, принадлежащих одному и тому же столбцу (например, столбцу А), мы выбираем в качестве первого любой из этих элементов, не обращая внимания на значение соответствующего ему элемента в другом столбце (например, в столбце В).
На это сомнение можно ответить, что, согласно правилу Джонсона, в этом случае порядок следования (и, следовательно, порядок выбора деталей) безразличен, так как если min(aj+1,bj) = min(aj,bj+1) = aj+1 = aj, то X(S') = X(S”) независимо от того, какое соотношение между bj и bj+1. Аналогично получаем, что при min(aj+1,bj) = min(aj,bj+1) = bj = bj+1 будет иметь место X(S’) = X(S”) независимо от значений aj и aj+1.
Проиллюстрируем сказанное на примере задачи n × 2, заданной при помощи таблицы 8.2.
i |
at |
bi |
3 |
8 |
9 |
1 |
6 |
6 |
2 |
8 |
6 |
5 |
9 |
4 |
4 |
4 |
2 |
i |
at |
b |
1 |
6 |
6 |
3 |
8 |
9 |
2 |
8 |
6 |
5 |
9 |
4 |
4 |
4 |
2 |
i |
at |
b |
3 |
8 |
9 |
2 |
8 |
6 |
1 |
6 |
6 |
5 |
9 |
4 |
4 |
4 |
2 |
i |
ai |
b |
1 |
6 |
6 |
2 |
8 |
6 |
3 |
8 |
9 |
4 |
4 |
2 |
5 |
9 |
4 |
Пользуясь алгоритмом Джонсона, мы можем получить оптимальные последовательности обработки, которым соответствуют табл. 8.3, 8.4 и 8.5.
Общая формула для расчета простоя
(8.1)
или
,
(8.2)
где
Найдем
для
этих последовательностей
Для последовательности, соответствующей табл. 8.3:
X = max(8; 5; 7; 10;10) = 10.
Для последовательности, соответствующей табл. 8.4:
X = max(8; 7; 7; 10;10) = 10.
Для последовательности, соответствующей табл. 8.5:
X = max(6; 8; 7; 10;10) = 10.
Сумма простоев во всех трех последовательностях получилась одинаковой (Х = 10). Различие лишь в распределении простоев: в первом случае x1 = 8, x2 = 2; во втором x1 = 8, x2 = 2, в третьем x1 = 6, x2 = 2, x4 = 2.
Это может быть учтено при планировании заполнения простоев фоновой работой.
Алгоритм Джонсона для задачи n × 2 может быть модифицирован и сведен к следующему:
1. Находим все детали, для которых ai ≤ bi и упорядочиваем их в порядке возрастания ai.
2. Оставшиеся детали, для которых ai>bi, упорядочиваем в порядке убывания bi.
3. Подписываем список деталей второй группы под списком деталей первой группы, т.е. обрабатываем сначала детали первой группы в порядке возрастания ai, затем детали второй группы в порядке убывания bi.
АЛГОРИТМ ДЖОНСОНА ДЛЯ РЕШЕНИЯ ЗАДАЧИ УПОРЯДОЧЕНИЯ n×3
Рассмотрим задачу выбора оптимальной последовательности обработки n деталей на трех станках в случае, когда все детали имеют жесткий и одинаковый маршрут и выполняются те же специальные условия, которые были оговорены при постановке задачи упорядочения n × 2.
Обозначим станки черезА, В, С, нормы времени обработки детали i соответственно через ai, bi и ci, простои станка В через xi , станка С – через yi. График Ганта в этом случае будет иметь следующий вид (рис.8.2)
Рис.8.2 График Ганта для случая n × 3
Решение
задачи
n 3
при выполнении условия
сводится
к решению задачи n2,
если только интерпретировать:
aibidi- как норму времени обработки детали i на некотором станке Di,
bicieiкак норму времени обработки детали i на некотором станке Ei.
Отсюда получаем следующий алгоритм решения задачи упорядочения при n3 в случае выполнения условия .
Алгоритм
1. Производим построчное сложение элементов первого и второго столбцов таблицы: diaibi.
2. Производим сложение второго и третьего столбцов таблицы: eibici.
3. К новой таблице n2 применяем алгоритм Джонсона, используемый для задачи упорядочения n2.
Тема: Решение задачи упорядочения обработки n деталей на mcтанках (m=2 и m=3) с использованием алгоритма Джонсона
Задание 1. Решение задачи упорядочения с n деталями и 2-я станками
Изучить по изложенному выше теоретическому материалу:
математическую модель задачи упорядочения n деталей на 2-х станках;
вывод правила Джонсона для данной задачи;
алгоритм Джонсона для данной задачи.
Пример 1. Пусть имеются исходные данные, приведенные в таблице:
i |
ai |
bi |
1 |
9 |
3 |
2 |
6 |
2 |
3 |
4 |
1 |
4 |
2 |
7 |
5 |
3 |
6 |
Определим простой X последнего станка B по формуле:
,
где
Для этого определим значения функции K (1), K (2), K (3), K (4), K (5). Их удобно вычислять по рекуррентной формуле:
K(1) = a
K(i) =K(i –1) +ai –bi-1,i = 2,3,4,5 .
Используя эту формулу, получим:
K(1) = 9, K(2) = 12, K(3) = 14, K(4) = 13, K(5) = 9. Найдем простой X 2-го станка, как максимум из полученных значений:
X = max(9,12,14,13,9) = 14.
Время окончания обработки всех деталей на двух станках равно
Построим график Ганта для исходной последовательности:
Как видно из графика, время окончания обработки всех деталей на двух станках совпадает с расчетным и равно 34.
Используя алгоритм Джонсона, найдем оптимальную последовательность: 4, 5, 1, 2, 3. Преобразуем исходную таблицу в соответствии с найденной последовательностью
iопт |
ai |
bi |
1 |
2 |
7 |
2 |
3 |
6 |
3 |
9 |
3 |
4 |
6 |
2 |
5 |
4 |
1 |
Как и для исходной последовательности, найдем прострой 2-го станка.
K(1) = 2,K(2) = K(1) + 3 - 7 = -2, K(3) = K(2) + 9 - 6 = 1,
K(4) = K(3) + 6 - 3 =4, K(5) =K(4) + 4 - 2 = 6 .
X= max(2, -2,1,4,6) = 6.
Время окончания обработки всех деталей на двух станках в порядке оптимальной последовательности равно
Построим график Ганта для оптимальной последовательности запуска деталей в обработку:
Как видно из графика, время окончания обработки всех деталей на двух станках для оптимальной последовательности совпадает с расчетным, и равно 26, что значительно лучше, чем это же время для исходной последовательности.
