Г.Б. БРОНФЕЛЬД
АЛГОРИТМ РЕШЕНИЯ
ЗАДАЧИ ОПТИМАЛЬНОГО РАСПРЕДЕЛЕНИЯ
ПЛАНА ПРОИЗВОДСТВА
При современных масштабах народного
хозяйства особенно важно применение для решения экономических задач оптимальных
методов, чему положено начало Л.В.Канторовичем [1].
Рассмотрим одну из задач, поставленных
Л.В.Канторовичем[1, 2], с которой
началось рассмотрение задач линейного программирования.
Имеется множество предприятий (участков,
станков) I = {i:i = 1, 2, …, m},
на
которых необходимо выпускать множество видов изделий J = {j:j = 1, 2, …, n} в
заданном ассортименте. Ассортиментный набор изделий задан вектор-столбцом {b j0 }. Известна матрица производительности i – го предприятия по
выпуску j - го изделия
[ a/ij
]. Пусть x ij – время работы i – го предприятия по выпуску
j – го изделия.
Примем за единицу времени время, на которое рассчитана вся
программа работы. Требуется так
распределить производство изделий между предприятиями, т.е. найти вектор [ x*ij
] , чтобы в единицу времени выпускалось
максимальное количество полных ассортиментных наборов изделий μ .
Для
автомобильной промышленности эта задача может быть интерпретирована как
задача распределения заданий по выпуску комплектующих изделий по заводам с целью максимизации количества выпускаемых
автомобилей на сборочном заводе.
Итак, требуется найти вектор
оптимального решения [ х*ij
], максимизирующий линейную форму L при условиях
L =
μ , (1)
m
∑ a/ij
xij ≥ bj0 μ , (2)
i=1
n
∑
xij = 1 , (3)
j=1
xij ≥
0, (4)
a/ij ≥
0, bj0 > 0 . (5)
Преобразуем
(2) – (5) к следующему виду
m
∑ aij
xij ≥ μ , (6)
i=1
n
∑ xij = 1 , (7)
j=1
xij
≥ 0, aij ≥ 0 . (8)
Для решения данной задачи
малой и средней размерности известны эффективные методы решения [2, 3], однако
возникают трудности при решении задач большой размерности. Кроме того,
существует проблема вырожденности матриц условий, а также
нечувствительности известных методов к
особенностям условий задачи, например, к слабозаполненности матриц.
Далее предлагается итеративный метод,
позволяющий находить оптимальное решение с точностью до ε
за конечное число итераций, использующий идеи метода максимального
элемента [4] и метода ветвей и границ
[5].
Предлагаемый метод ориентирован на
решение рассматриваемой задачи малой, средней и большой размерности; отсутствует
проблема вырожденности. Эффективность метода повышается при решении задач со
слабозаполненной матрицей [aij ], большой разницей в
величинах aij , при использовании условия целочисленности решения [ xij ].
К преимуществам предлагаемого алгоритма
можно отнести то, что решается задача меньшей размерности, чем требуется для
методов линейного программирования. Так, при приведении данной задачи (6) – (8)
к стандартному виду задачи линейного программирования [3] ее размерность увеличивается с (m+1) x (n+m+1) до [n(m+1)+1] x (n+m+1), что усложняет ее решение.
Обозначим t - номер
итерации поиска максимального количества ассортиментных наборов μ *
для t ε T = {t: t = 1,
2, … , R} , где t = R при
μt -
μt-1 ≤ ε , (9)
μt - количество
ассортиментных наборов на t – й
итерации поиска.
В
[2, 3] показано, что задача (1),
(6) - (8) имеет μ* , которому соответствует
вполне определенное значение вектора [ x*ij
].
Для поиска μR = μ* c точностью до ε введем итеративную процедуру
μt+1 = μt + α , (10)
где α - переменный шаг
изменения μt
. Процедура (10) с условием окончания
поиска (9) сходится за конечное число итераций
R к μR ,
принимаемому за μ* [6].
Теперь покажем, каким образом на каждой
итерации ищется допустимое решение
[ xtij]*.
Введем оценки
svtij = aij dvtij, (11)
где dvtij - ресурс переменных xvtij ,
определяемый на v – м шаге
и t – й итерации. Здесь
v = 1, 2, …, W – номер шага поиска
подходящего закрепления оценок на t – й итерации.
В начале каждой итерации
ì 1, если aij > 0,
d1tij = í
î 0, если aij = 0 .
Матрицу производительности
[ a ij ] при переменных xvtij
преобразуем в матрицу оценок [ svtij ]. В
соответствии со структурой матрицы [ svtij ] введем классы оценок svtij .
Определение 1. Оценкой А - класса
называем оценку svtil,
ℓ Î J, которая единственная имеет
svtil >0 в
ℓ – м столбце матрицы [svtij ].
Определение 2.
Оценкой В - класса называем оценку svtkj , k Î I которая единственная имеет
svtkj >0 в k – й
строке матрицы [svtij].
Определение
3. Оценкой С - класса называем оценку
svtkl , k ÎI,
ℓ Î J которая имеет величину svtkl соответствующую условиям:
svtkl ≥ svtil, j = ℓ, k ¹ i (12)
svtkj ≤
svtij (13)
Какое-то из неравенств (12), (13) должно быть строгое.
Определение
4. Оценкой D - класса
называем оценку svtij , которая имеет величину svtij > 0 и которая не подходит
под предыдущую классификацию и закрепляется по
max svtij для " i ε I и " j ε J.
(14)
Под
закреплением оценки svtij понимается
определение для данного номера (i, j)
dvtij , svtkl при k ¹ i, ℓ ¹ j и вводимых величинах bvtj для
оценки μt в j-х строках неравенств
(6). Оценки svtij в процессе работы алгоритма
могут переходить из одного класса в
другой.
Введение оценок С- и D -
классов основано на применении идеи максимального элемента для поиска
допустимого решения [4].
1.
Оценки svtij матрицы [svtij] объединим
в подмножества
Ivtj
= { svtij : svtij >
0, i ε I }.
Внутри Ivtj
оценки svtij пронумеруем в порядке убывания их величины. Подмножества Ivtj будут соответствовать сжатым и упорядоченным j – м столбцам матрицы [svtij] . Подмножества Ivtj образуют
множество JvtM = { Ivtj : j ε J}.
Введем множества
Xvtj = { dvtij : dvtij = xvtij , i ε I}
для элементов
dvtij, зафиксированных в них, как значения переменных xvtij .
2.
Определим, есть ли в подмножествах Ivtj оценки А -
класса. Введем величины
bvtj для оценки μt в j – х
строках неравенств (6)
bvtj
≤ μt.
В начале каждой итерации bvtj = μt. Пусть
svtkl - оценка А - класса для
некоторого номера
( k, ℓ) ε N = { (k, ℓ): k ε I, ℓ ε J} .
Тогда определяем
ì svtkl / akl , если svtkl < bvtl ,
dvtkl = í
(15)
î bvtl / akl, если svtkl
≥ bvtl .
Далее находим остаток svtkj в подмножествах Ivtj
ì 0 , если svtkl ≤ bvtl
svtkj = í
î ((svtkl - bvtl )/ akl ) akj , если svtkl > bvtl , j ¹ ℓ
и новые значения
ì bvtl - svtkl , если svtkl
< bvtl ,
bvtl =
í
î0 , если svtkl ≥
bvtl .
3.
Определяем, есть ли в подмножествах Ivtj оценки В -
класса.
Пусть svtkl - оценка В - класса для некоторого номера (k, ℓ) ε N .
Тогда
dvtkl = svtkl / akl ,
ì 0 , если svtkl
≥ bvtj ,
svtil
= í (16)
î svtil
, если svtkl
< bvtj , k ¹ i,
ℓ ¹ j,
ì bvtl - svtkl , если svtkl < bvtl ,
bvtl = í
î0 , если
svtkl ≥ bvtl .
4. Проверяем, не пустые ли
подмножества Ivtj и множество JvtM .
Может
получиться, что Ivtj = Æ, а bvtj > 0, т.е. не выполнено ограничение (6). Это
означает, что решение не найдено при данном варианте закрепления оценок. Для поиска решения осуществляем перебор
возможных закреплений оценок С- , D - классов в
подмножествах Ivtj рекурсивно по методу ветвей и границ, начиная с
последнего шага [5]. Для ускорения обнаружения ветвей закрепления
оценок svtij, не обеспечивающих
выполнения ограничений (6), используем оценки
Pvt и Qvtj, которые точно определяют «удачность» или
«неудачность» ветви
m n
Pvt = ∑ max svtij - ∑ bvtj , для svtij ε Ivtj, (17)
i=1 j εJ j=1
m
Qvtj = ∑ svtij - bvtj
, для svtij
ε Ivtj
. (18)
i=1
Оценка Pvt ≥ 0 является необходимой, но не достаточной
оценкой выполнения ограничений (6).
Оценка Qvtj ≥ 0 является
достаточным условием выполнения (6).
Если
Pvt ≥ 0 ,
Qvtj ≥ 0 , (19)
то поиск
допустимого решения на данной итерации продолжается.
Если
Pvt < 0, Qvtj ≥ 0 или
(20)
Pvt ≥ 0 , Qvtj <
0,
(21)
то ограничения (6) не выполняются, и начинается
рекурсивный перебор возможных закреплений оценок D- и С - классов по методу
ветвей и границ на данной t – й
итерации. Если перебор закреплений оценок
svtij не дает результатов, переходим к пункту 8.
5.
Поиск оценок А- и В- классов.
Если
они есть, переходят к пункту 2.
6. В
оставшихся подмножествах Ivtj ищем
оценки С – класса.
Пусть svtkl - оценка С - класса по
(12), (13) с номером (k,
ℓ) ε
N
.
Определяем
ì svtkl / akl , если svtkl < bvtl ,
dvtkl = í (22)
î bvtl / akl, если svtkl
≥ bvtl .
ì 0 , если svtkl ≥ bvtl ,
svtil = í (23)
î svtil
, если svtkl
< bvtl ,
i ¹ k,
ì 0 , если svtkl ≤
bvtl
svtkj =
í (24)
î ((svtkl - bvtl )/ akl
) akj , если svtkl >
bvtl , j ¹ ℓ
ì bvtl - svtkl , если svtkl
< bvtl ,
bvtl =
í (25)
î0 , если svtkl ≥
bvtl .
Затем выполняем пункт 2. Если оценок С - класса нет, переходим к пункту 7.
7. В
оставшихся подмножествах Ivtj ищем
оценки D – класса по (14).
Пусть svtkl -
оценка D – класса для номера
(k, ℓ) ε N . Определение
dvtkl , svtil , svtkj , bvtl соответствует пункту 6 по формулам (22) – (25). Затем выполняем пункт 2.
8. В
соответствии с (10) формируется новое значение
μt+1 до
выполнения условия (9) и нахождения
μR .
Покажем
возможный способ формирования переменного шага
α . Принцип формирования α основан на нахождении некоторого
начального μ0 и
равномерного приближения к снизу, а
при μt
> μ*, что
определяется по (20), (21), применяется способ дихотомии.
Из (7) найдем условное среднее значение xijcp
xijcp = m /
(n + m) . (26)
Из
граничного значения
Pvt = 0, (27)
являющегося необходимой оценкой наличия допустимого решения для xijcp, найдем граничные условия
μгр
= bvtjгр (28)
Из (17) и (27) находим
m n
Pvt = ∑ max svtij - ∑ bvtjгр = 0
i=1 j ε J j=1
Или с учетом (28), (11) получаем
m
∑
max aij xijcp - n μгр =
0 (29)
i=1 j ε J
Теперь из (26) и (29) находим
m
μгр = m / n (n+m) ∑ max
aij .
i=1 j ε J
Определим исходное μ0, используемое в процедуре (10), следующим
образом
μ0 = μгр / 10
.
Переменный шаг изменения μt
находим в виде
ì 0,1 μt / 10k при оценках
(19) (30)
α = í
î - μt -
μt-1 / 2
при оценках (20), (21) (31)
где k - количество нахождений α по формуле
(31).
При
нахождении μR решением является
[ x*ij
] =
[ d WRij ] .
Приведем численный пример, взятый из практического опыта решения задачи, описанной в [7].
Задан
план выпуска на участке {bj0}
ассортиментного набора 16 изделий на 20 агрегатах. Задана
производительность работы i – х агрегатов по j – м изделиям
[ a/ij ] , а также ресурс времени
работы i - х агрегатов (правая часть
равенств (3)). Требуется так
распределить выпуск изделий по агрегатам, чтобы за заданный ресурс времени
работы агрегатов выпустить максимальное количество продукции пропорционально
плановому заданию, т.е. найти [ x*ij
] при максимизации μ .
Условия задачи записываются в виде
(1), (2), (4) и несколько измененном виде (3) (см.табл.1 и 2).
Табл.1.
|
|
|
|
|
|
1,52х0701 |
+1,52х0801 |
|
|
|
|
|
|
|
|
|
|
|
|
|
51μ |
1,52х0102 |
+1,52х0202 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+1,52х1902 |
|
|
216 μ |
|
|
|
|
|
|
|
1,52х0803 |
|
|
|
|
|
|
|
|
|
|
|
|
|
69μ |
|
|
|
|
|
|
1,52х0704 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33μ |
|
|
|
|
|
|
1,52х0705 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72μ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1,52х1806 |
|
+1,52х2006 |
|
51μ |
|
|
1,52х0307 |
+1,52х0407 |
|
|
|
|
|
|
|
|
|
|
|
|
|
+1,52х1807 |
|
+1,52х2007 |
|
60μ |
|
|
1,52х0308 |
+1,52х0408 |
|
|
|
|
|
|
|
|
|
|
|
|
|
+1,52х1808 |
|
|
|
42μ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1,52х1709 |
|
|
|
|
60μ |
|
|
1,44х0310 |
+1,44х0410 |
|
|
|
|
|
|
|
|
+1,44х1310 |
+1,44х1410 |
|
|
|
+1,44х1810 |
|
|
|
114μ |
|
|
1,52х0311 |
+1,52х0411 |
+1,52х0511 |
|
|
|
|
|
|
|
|
|
|
|
|
+1,52х1811 |
|
|
|
30μ |
|
|
1,52х0312 |
+1,52х0412 |
+1,52х0512 |
|
|
|
|
|
|
|
|
|
|
|
|
+1,52х1812 |
|
|
|
90μ |
|
|
1,52х0313 |
+1,52х0413 |
+1,52х0513 |
|
|
|
|
|
|
|
|
|
|
|
1,52х1713 |
|
|
|
|
33μ |
|
|
1,52х0314 |
+1,52х0414 |
|
+1,52х0614 |
|
|
+1,52х0914 |
+1,52х1014 |
|
|
|
|
+1,52х1514 |
+1,52х1614 |
|
|
|
|
|
318μ |
|
|
|
|
|
|
|
|
|
|
1,52х1115 |
+1,52х1215 |
|
|
|
|
|
+1,52х1815 |
|
|
|
24μ |
|
|
|
|
|
|
|
|
|
|
1,52х1116 |
+1,52х1216 |
|
|
|
|
|
+1,52х1816 |
|
|
|
111μ |
Табл.2.
|
Х0102 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=16 |
|
Х0202 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=60 |
|
|
|
|
|
|
Х0307 |
+х0308 |
|
+х0310 |
+х0311 |
+х0312 |
+х0313 |
+Х0314 |
|
|
=16 |
|
|
|
|
|
|
Х0407 |
+х0408 |
|
+х0410 |
+х0411 |
+х0412 |
+х0413 |
+х0414 |
|
|
=60 |
|
|
|
|
|
|
|
|
|
|
Х0511 |
+х0512 |
+х0513 |
|
|
|
=80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Х0614 |
|
|
=80 |
Х0711 |
|
|
+х0704 |
+х0705 |
|
|
|
|
|
|
|
|
|
|
|
=80 |
Х0801 |
|
+х0803 |
|
|
|
|
|
|
|
|
|
|
|
|
|
=80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Х0914 |
|
|
=37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Х1014 |
|
|
=39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Х1115 |
+Х1116 |
=37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Х1215 |
+х1216 |
=39 |
|
|
|
|
|
|
|
|
|
Х1310 |
|
|
|
|
|
|
=40 |
|
|
|
|
|
|
|
|
|
Х1410 |
|
|
|
|
|
|
=18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Х1514 |
|
|
=40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Х1614 |
|
|
=18 |
|
|
|
|
|
|
|
|
Х1709 |
|
|
|
+Х1713 |
|
|
|
=80 |
|
|
|
|
|
Х1806 |
+х1807 |
+х1808 |
|
+Х1810 |
+х1811 |
+х1812 |
|
|
+х1815 |
+х1816 |
=50 |
|
Х1902 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=80 |
|
|
|
|
|
Х2006 |
+х2007 |
|
|
|
|
|
|
|
|
|
=80 |
В
примере в правой части равенств использованы разные величины ресурсов времени,
что не влияет на работу метода (см. табл.2) .
Решение с помощью описанного метода
находится за 6 итераций с 16 шагами закрепления оценок. Для рассматриваемого
алгоритма программа на ЭВМ еще не закончена, однако с помощью логарифмической
линейки находится значение 39 переменных (10
переменных определяется из исходных условий) за 3 часа.
Решением является:
μ =1,08 (с точностью до 0,01);
х0801
= 30,97; х0701 = 5,39; х0102 = 16,0; х0202 = 60,0; х1902 = 16,0;
х0803
= 49,03; х0704 = 23,45; х0705 = 51,16; х1806 = 0; х2006 = 36,24;
х0307
= 0; х0407 =
0; х1807 =
0; х2007 =
43,76; х0308 = 0;
х0408
= 29,84; х0108 =
0; х1709 =
42,63; х0310 = 0; х0410 = 30,16;
х1310
= 0; х1410 =
0; х1810 =
0; х0311 = 0; х0411 = 0;
х0511
= 21,32; х1811 =
0; х0312 =
0; х0412 = 0;
х0512 = 0;
х1812
= 5,27; х0313 =
0; х0413 =
0; х0513 = 0;
х1713 = 37,37;
х0314
= 16,0; х0414 =
0; х0614 =
80; х0914 = 37;
х1014 = 39;
х1514
= 40; х1614 =
18; х1115 =
0; х1215 = 0;
х1815 = 17,05;
х1116
= 37; х1216 =
39; х1816 =
27,68.
Решение указанного численного
примера на ЭВМ ЕС-1020 с использованием пакета линейного программирования LPS/30
занимает около 2 часов.
Предлагаемый алгоритм позволяет решать некоторые задачи нелинейного
программирования, в частности задачу [7] с невыпуклой областью
допустимых решений.
ЛИТЕРАТУРА
1.
Канторович
Л.В. Математические методы организации
и планирования производства. Л., ЛГУ, 1939.
2.
Канторович
Л.В. Экономический расчет наилучшего использования ресурсов. М., АН СССР. 1960.
3.
Юдин
Д.Б., Гольштейн Е.Г. Линейное программирование. Теория, методы и приложения.М.,
«Наука», 1969.
4.
Берзин
Е.А. Оптимальное распределение ресурсов и элементы синтеза систем. М., «Советское
радио», 1974.
5.
Корбут
А.А., Финкельштейн Ю.Ю. Дискретное программирование. М., «Наука», 1969.
6.
Беленький
В.В., Волконский В.А. и др. Итеративные методы теории игр и программирования.
М., «Наука», 1974.
7.
Автоматизированная система управления
технологическим процессом производства листа из полистирола на Нелидовском
заводе пластмасс. Алешин А.Я. и др. – В кн.:«Всесоюзное научно-техническое
совещание по автоматизации
технологических процессов химической промышленности» (3-5 сентября 1974
г., Северодонецк). Тезисы докладов. Первая секция «Научно-технические и
организационные проблемы разработки АСУТП». М., НИИТЭХИМ, 1974, с.127-145.