Г.Б. БРОНФЕЛЬД

 

 

              АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ ОПТИМАЛЬНОГО РАСПРЕДЕЛЕНИЯ        ПЛАНА  ПРОИЗВОДСТВА                   

 

 

     При современных масштабах народного хозяйства особенно важно применение для решения экономических задач оптимальных методов, чему положено начало Л.В.Канторовичем [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.

 

 

 

 

 

 

 

 

 

 

 



Хостинг от uCoz