
- •Экономическая кибернетика
- •Задачі динамічного програмування
- •Основні принципи динамічного моделювання
- •2. Загальна постановка задачі динамічного програмування
- •Пример решения задачи о дилижансе
- •Варианты задачи 1 «Задача о дилижансе»
- •Метод ветвей и границ
- •Задача о коммивояжере
- •Варианты «Задачи о комивояжере»
- •Задача Джонсона
- •Алгоритм решения
- •Пример решения задачи Джонсона (задачи о трех станках)
- •Решить с помощью табличного редактора Excel
Задача Джонсона
Постановка задачи:
Необходимо обработать на трех станках n деталей. У всех деталей одна и та же последовательность обработки: 1-й, 2-й и 3-й станки. Времена обработки деталей на каждом станке приведены в таблице:
-
Детали
Станки
1
2
…
n
Σ
Станок 1
a1
a2
…
an
Σ ai
Станок 2
b1
b2
…
bn
Σ bi
Станок 3
c1
c2
…
cn
Σ ci
Требуется составить оптимальную последовательность обработки всех n деталей на этих станках, т.е. такую последовательность запуска деталей на обработку, для которой время окончания обработки на всех станках будет наименьшим.
Алгоритм решения
Эта задача решается методом ветвей и границ, для этого введем ряд параметров:
σk={i1, i2, …,ik} –произвольная последовательность из k деталей;
σk+1={σk , ik+1} – произвольная последовательность из k+1 деталей;
A(σk), B(σk) и C(σk) - моменты окончания обработки последовательности деталей σk на первом, втором и третьем станках соответственно. Для последовательности σk+1 аналогичные моменты можно вычислить по рекурентным формулам:
A(σk+1) = A(σk)+ak+1;
B(σk+1) = max(A(σk+1),B(σk)) + bk+1;
C(σk+1) = max(B(σk+1),C(σk)) + ck+1.
О
ценки:
δ Ak= A(σk) +Σ ai + min (bi + ci), по всем i Є σk (по всем деталям i не входящим в последовательность σk);
δBk= B(σk) +Σ bi + min ci, по всем i Є σk;
δ Ck= C(σk) +Σ ci, по всем i Є σk.
Величина δAk имеет смысл оценки окончания обработки всей последовательности деталей на всех станках. Таким образом, можно сказать, что обработка всех деталей на трех станках завершится не ранее чем через δAk , δBk и δCk.
Введем обозначение
ξ = max(δAk, δBk, δCk),
тогда С(σn) ≥ ξ,
т.е. величина ξ является оценкой (нижней границей) момента окончания всех n деталей на трех станках, при условии, что последовательность σk прошла обработку на всех станках. Очевидно, если взять другую последовательность (из других номеров) деталей, то величина ξ может быть иной. Та из последовательностей σk, для которой ξ имеет меньшее значение, является более предпочтительной для рассмотрения в первую очередь.
Пример решения задачи Джонсона (задачи о трех станках)
Пусть условия задачи заданы следующей таблицей:
-
Детали
Станки
1
2
3
4
Станок 1
4
8
3
8
Станок 2
10
12
7
9
Станок 3
6
8
4
9
0-й шаг, когда в последовательности 0 деталей:
Очевидно, что δA0 = δB0 = δC0.
Т огда
δ A0= 0 +Σ ai + min (bi + ci)=34, по всем i=1,n;
δ B0= 0 +Σ bi + min ci= 42, по всем i=1,n;
δC0= 0 +Σ ci = 27, по всем i=1,n;
Оценим перспективность каждого из подмножеств последовательностей обработки, т.е. для каждого из подмножеств необходимо вычислить их ξi, где i=1, 2, 3, 4.
Для i = 1:
A(σ1) = A(σo)+a1
B(σ1) = max(A(σ1),B(σ0)) + b1
C(σ1) = max(B(σ1),C(σ0)) + c1
δA1= A(σ1) +Σ ai + min (bi + ci), по всем i ≠1;
δB1= B(σ1) +Σ bi + min ci , по всем i ≠1;
δC1= C(σ1) +Σ ci , по всем i ≠1.
В таком случае, введем обозначение
ξ1 = max(δA1, δB1, δC1) .
Теперь можно сказать, что если обработка деталей начнется с детали № 1, то закончится обработка не ранее чем через ξ1.
Для i = 2:
A(σ1) = A(σo)+a2 ;
B(σ1) = max(A(σ1),B(σ0)) + b2
C(σ1) = max(B(σ1),C(σ0)) + c2
δA1= A(σ1) +Σ ai + min (bi + ci), по всем i ≠1;
δB1= B(σ1) +Σ bi + min ci , по всем i ≠1;
δC1= C(σ1) +Σ ci , по всем i ≠1.
Найдем maxξ2.
Аналогично вычисляем для других подмножеств.
Теперь можно сказать, какое подмножество на данном этапе является наиболее перспективным .
Все вычисления удобно проводить в такой таблице:
-
σk
A(σk)
B(σk)
C(σk)
ξk
δAk
δBk
δCk
Перспективным является множество 1.
Разбиваем это множество возможных последовательностей обработки на подмножества. В этих подмножествах все последовательности начинаются деталью № 1, а вторые детали у них разные из оставшихся (кроме №1). После вычислений и сравнения оценок множеств получим перспективное множество (последовательность деталей σ2={1,2}, последовательность обработки, начинающаяся деталями 1,2). И так далее. После выполнения последовательности из четырех шагов , получаем оптимальную последовательность обработки деталей:
σ5*={3,4,1,2}с наименьшим временем обработки 43 часа.
т
тттттттттттт
Варианты задачи Джонсона о трех станках: