1984_5_part_2 - E-study.in.ua

advertisement
16
2. НЕКОТОРЫЕ АЛГОРИТМЫ РЕШЕНИЯ ОДНОГО КЛАССА
ЗАДАЧ БЕЗУСЛОВНОЙ ОПТИМИЗАЦИИ
В этой главе проводится исследование методов решения задач, математические модели которых обсуждались в главе 1. Первым для исследования выбран представитель точных
методов – метод ветвей и границ, исследованию которого посвящен раздел 2.1. Однако, хотя
метод ветвей и границ и обеспечивает получение точного решения, временные затраты с ростом размерности задачи становятся настолько велики, что исключают в этом случае его использование. Поэтому имеет смысл разрабатывать приближенные алгоритмы решения оптимизационных комбинаторных задач. В качестве представителя приближенных алгоритмов
был выбран метод вектора спада, который исследуется в 2.2. Для начала своей работы метод
вектора спада требует начального приближения, которое может быть найдено различными
методами, в том числе описанным в 2.3 представителем стохастических методов – методом
Монте–Карло. Рассмотренная при этом процедура получения случайных перестановок, равномерно распределенных по пространству P или некоторому его подпространству, применяется также в рассмотренном ниже алгоритме последовательного типа.
В разделах 2.4 – 2.7 предлагается и изучается один подход к построению локально–
оптимальных алгоритмов последовательного типа.
В разделе 2.4 обсуждается алгоритм решения задачи размещения радиоэлектронных
элементов в конструктивных узлах ЭВМ, который был предложен в работе [51].
Построение этого алгоритма основано на использовании статистических свойств целевой функции задачи. Статистические свойства критерия используются в различных методах решения оптимизационных (комбинаторных) задач (см., например, [46]). В ходе работы
алгоритмов, реализующих эти методы, приходится многократно вычислять значение критерия. Это увеличивает время решения задачи и является недостатком этих методов. Поэтому
при построении предложенного в [51] алгоритма была принята попытка избежать подобных
вычислений. Был построен алгоритм, который формально можно отнести к последовательным алгоритмам (см., например, [32,45]).
В результате развития идеи, положенной в основу построения упомянутого алгоритма, в [53,54] был предложен подход к решению комбинаторных оптимизационных задач.
Общая схема решения этих задач приводится в разделе 2.5, а в 2.6 обсуждается один из алгоритмов, которые вкладываются в эту схему. В схемах этих алгоритмов есть пункты, в которых вычисляются некоторые статистические характеристики критерия. В общем случае эти
характеристики определяются при помощи метода Монте–Карло, что требует многократного
вычисления значений целевой функции. Однако существуют задачи, в том числе некоторые
из рассматриваемых в данной работе, в которых для вычисления этих характеристик можно
вывести простые формулы. В разделе 2.7 это показано на примере линейной задачи о назначениях.
В разделе 2.8 приводятся результаты сравнения эффективности исследуемых алгоритмов.
17
2.1. Один новый алгоритм, реализующий схему метода ветвей т границ
Метод ветвей и границ начал разрабатываться в начале 60–х годов. В работе [59] этот
метод применяется для решения задачи целочисленного линейного программирования. В
работе [61] метод ветвей и границ используется для решения задачи о коммивояжере.
Известно [47], что различные модификации метода ветвей и границ различаются тремя основными моментами: способом ветвления, стратегией ветвления и способом вычислений нижней оценки. Алгоритмы метода ветвей и границ, которые предлагаются и рассматриваются в настоящей работе, имеют следующие особенности в реализации этих основных моментов.
Способ ветвления. Способ ветвления в рассматриваемых алгоритмах – покомпонентное ветвление [39]. Вариантом ветвления является множество Pk – множество перестановок p   p1 ,..., pn  , у которых первые k компонент фиксированы и равны известным в
данный момент работы алгоритма числам p1 ,...., pk . В начале работы алгоритма вариантом
ветвления является все множество P  P0 . При ветвлении каждый такой вариант порождает
n  k новых вариантов – множеств Pk 1,r , r  I k , у которых зафиксирована уже и  k  1 компонента.
Стратегия ветвления. Под стратегией ветвления подразумевается способ выбора для
рассмотрения очередного варианта ветвления. В описанных в диссертационной работе алгоритмах стратегией ветвления является ветвление по заранее выбранному пути, а конкретно –
выбор очередного варианта происходит по принципу «иди влево» по дереву решений.
Выбор указанной стратегии ветвления был определен тем обстоятельством, что она
может быть использована при решении всех типов задач, рассмотренных в работе. Эта стратегия ветвления позволяет, кроме того, хранить в оперативной памяти ЭВМ только два варианта ветвления: рекордный и текущий, чем обеспечивается существенная экономия памяти
ЭВМ.
Способ вычисления нижней оценки критерия. Рассмотрим способы вычислений
нижних оценок поочередно для задач: линейная задача о назначениях, задача о коммивояжере, квадратичная задача о назначениях, задача разбиения, задача размещения, задача расписания.
1. Нижняя оценка в линейной задаче о назначениях. Рассмотрим некоторый вариант
ветвления – множество Pk , k 1,..., n 1 . Значение критерия f  p  , вычисляемое по формуле (1.1) можно представить в виде
k
f  p    cipi 
i 1
n
c
i  k 1
ipi
.
(2.1)
Так как в перестановках p  Pk компоненты p1 ,...., pk фиксированы, то для любого
индекса i k  1,..., n компонента pi принимает значения из множества I k . Поэтому
cipi  min cij .
jI k
18
Из последнего неравенства и равенства (2.1) следует, что выражение
k
 k   cip 
i 1
i
n
 min c
i  k 1
jI k
ipi
(2.2)
является нижней оценкой для значения критерия (1.1) на множестве Pk при k 1,..., n 1 .
При k  0 , выполнив аналогичные преобразования, получим
n
0   min cij .
(2.3)
jI 0
i 1
При k  n , очевидно,
n
n   cip .
i 1
i
(2.4)
2. Нижняя оценка в задаче о коммивояжере. При исследовании задачи о коммивояжере будем рассматривать две нижних оценки. Вывод равенства, определяющего первую
оценку, аналогичен выводу равенств (2.2), (2.3) и (2.4) в случае линейной задачи о назначениях. Учитывая, что критерий задан формулой (1.2), получим соответствующие равенства в
виде:
 n
cij ,
если k  0 или k  1;
 min
jI
i 1 j  i1

 k
k   c pi1 pi   min cij , если1  k  n;
jI k \ p1
iI k 1
 i2
 n
 c pi1 pi  c pn p1 ,
если k  n.
 i  2
 2.5
Для определения способа вычисления второй нижней оценки введем следующие обозначения. Пусть   P  – оптимальное значение критерия при решении линейной задачи о
назначениях с той же матрицей C , что и в задаче о коммивояжере. Пусть   Pk  – оптимальное значение критерия, если перед решением линейной задачи о назначениях из исходной
матрицы вычеркнуть строки и столбцы с номерами соответственно p1 ,...., pk 1 и p2 ,...., pk . В
последнем случае размерность матрицы равна, очевидно,  n  k  1   n  k  1 .
Известно [44], что   P  является нижней оценкой оптимального решения задачи о
коммивояжере. Используя этот факт, вторую нижнюю оценку можно определить так:

  P  ,

 k
k   c pi1 pi    Pk  ,
 i 2
 n
 c pi1 pi  c pn p1 ,
 i 2
если k  0 или k =1
если 1<k  n;
если k  n.
 2.6 
19
Сравним оценки (2.5) и (2.6). Пусть k  0 или k  1 . Значение  k в (2.5) равно в этом
случае сумме минимальных элементов всех строк матрицы C . Значение   P  также является суммой некоторых n элементов матрицы C , по одному из каждой строки, но в общем
случае не минимальных. Аналогичное рассуждение можно провести при 1  k  n , а при
k  n обе оценки равны. Поэтому можно утверждать, что оценка (2.6) не меньше, чем (2.5).
3. Нижняя оценка в квадратичной задаче о назначениях. Рассмотрим различные способы вычисления нижней оценки критерия на множестве Pk при k 1,..., n 1 . Преобразуем
вначале выражение (1.3) к такому виду:
k
k
k
f  p    cij bpi p j  
i 1 j 1
n
n

i 1 j  k 1
k
n
cij bpi p j    cij bpi p j  
i  k 1 j 1
n
cb
i  k 1 j  k 1
ij pi p j
.
(2.7)
Обозначим uk , vk , wk оценки снизу для различных слагаемых из правой части (2.7), а
именно:
k
uk  
n
cb
i 1 j  k 1
vk 
wk 
n
ij pi p j
,
(2.8)
,
(2.9)
k
 c b
i  k 1 j 1
n
ij pi p j
n
 cb
i  k 1 j  k 1
ij pi p j
.
(2.10)
Нижнюю оценку  k для f  p  тогда можно будет вычислить по формуле:
k
k
k   cij bp p  uk  vk  wk .
i 1 j 1
i
j
(2.11)
Так как элементы матриц C и B неотрицательны, то самая простая оценка для сумм
(2.8) – (2.10) получится, если положить:
uk  0 ,
vk  0 ,
( 2.11 )
wk  0 .
Рассмотрим вычисление отличных от нуля оценок uk , vk , wk . Для этого введем некоторые обозначения. Обозначим a и a векторы, компонентами которых являются компоненты
вектора a , упорядоченные по возрастанию или, соответственно, по убыванию. Можно показать [41], что для скалярного произведения любой пары векторов a и b справедливо соотношение:
 a, b    a , b    a , b  .
(2.12)
Обозначим  строго возрастающую функцию, которая взаимно однозначно отображает конечное множество  различных действительных чисел на множестве первых 
натуральных чисел (  – мощность множества  ).
20
Построим вначале нижнюю оценку uk . Легко видеть, что выражение
k
c b
i 1
ij pi p j
в за-
висимости от значений j k  1,..., n и p j  I k может принимать  n  k  различных значе2
ний,
которые
удобно
представить
как
значения
элементов
некоторой
матрицы
S  stq  , t , q  1,..., n  k  . Элементы матрицы S можно тогда определить равенством:
k
s j  k ,  l    cij bpi l ,
(2.13)
i 1
где j k  1,..., n , а областью определения функции  является множество I k : l  I k . Из
этого равенства следует, что величину uk можно определить, учтя (2.8):
uk  min
pPk
n
s
j  k 1
 
j k ,  p j
.
(2.14)
Другими словами, для того, чтобы определить значение uk , требуется решить линейную задачу о назначениях с матрицей S .
Выполняя аналогичные преобразования для величины vk , получим:
vk  min
pPk
n
 s
 
j k ,  p j
j  k 1
,
(2.15)
k
где sj  k ,   p    cij blpi , j  k  1,..., n , l  I k .
j
i 1
Для вычисления нижней оценки суммы (2.10), большей нуля, обозначим c k  вектор,
компонентами которого являются  n  k  величин cij , i, j k  1,..., n , а b k  – вектор, ком2
поненты которого – величины bij , i, j  I k . Тогда, если воспользоваться свойствами скалярного произведения векторов (2.12), получим, что неравенство


n
c  k  , b k  
n
 cb
i  k 1 j  k 1
ij pi p j
справедливо для всех p  Pk . Поэтому в качестве wk можно взять левую часть этого неравенства:

wk  c  , b
k
k
.
(2.16)
Таким образом, получены отличные от нуля нижние оценки: uk – (2.13), (2.14), vk –
(2.15), wk – (2.16). При выводе выражений для вычисления этих величин были использованы
два известных [58,60] приема. Первый прием состоит в использовании решения некоторой
линейной задачи о назначениях для определения величин uk и vk . Второй прием основан на
применении свойства скалярного произведения векторов (2.12) для определения величины
wk . С целью дальнейшего увеличения оценки wk применим комбинацию первого и второго
приемов.
21
Рассмотрим вначале матрицы, которые получены из исходных матриц C и B путем
вычеркивания из них столбцов с номерами соответственно 1,...., k и p1 ,..., pk . Обозначим,
k
k
ci  , i k  1,..., n вектор–строки матрицы, которая получена из C , а bi  – вектор–строки
матрицы, полученной из B . Имея ввиду эти обозначения, легко увидеть, что при
i k  1,..., n значение суммы
n
cb
ij pi p j
j  k 1
равно скалярному произведению вектор – строки ci k  на вектор, компонентами которого являются компоненты вектор – строки bpki  , упорядоченные в соответствии с некоторой перестановкой p   p1 ,... pn  . Поэтому, если учесть, что скалярное произведение (2.16) обладает
свойством (2.12), получим
n
cb
j  k 1
ij pi p j


 ci k  , bp ki  .
(2.17)
Очевидно, рассматриваемому множеству Pk соответствует всего  n  k  различных
2
k
векторов ct k  и bq  , t  k  1,..., n, q  I k и, следовательно,  n  k  различных скалярных
2
произведений этих векторов. Представим совокупность таких скалярных произведений в
виде матрицы S  stq  , t , q  1,..., n  k  , элементы которой определяются равенством

si k ,  l   ci  , bl
k
k

(2.18)
где i k  1,..., n , а областью определения функции  является множество I k : l  I k .
Учитывая неравенство (2.17) и равенство (2.18), можно утверждать, что для значения
суммы (2.10) при p  Pk справедлива следующая оценка:
n
n

i  k 1 j  k 1
cij bpi p j 

n
i  k 1

ci k  , bp ki  
n
s
i  k 1
i  k ,   pi 
.
Из этого соотношения следует вид искомого равенства для wk :
wk  min
pPk
n
s
i  k 1
i  k ,   pi 
,
(2.19)
где элементы матрицы S определяются по формуле (2.18).
Таким образом, чтобы определить оценку wk в (2.19), необходимо решить линейную
задачу о назначениях с матрицей S – (2.18). Легко видеть, что полученное в результате значение wk является скалярным произведением двух векторов. Один из этих векторов образован из элементов матрицы C , а другой – из элементов bij , i, j  I k матрицы B . В общем случае эти векторы не совпадают с векторами c k  и b k  , которые используются в (2.16). Поэтому можно утверждать, что полученная в результате проведенных преобразований оценка
(2.17) повышена по сравнению с (2.16).
22
4. Нижняя оценка в задаче разбиения. Рассмотрим способ вычисления нижней оценки
 k на множестве Pk , k 1,..., n 1 . Для этого обозначим Nl k  , l  1,..., q множества, которые определены на перестановке p  Pk следующим равенством:
Nl k   Nl  p    p1 ,..., pk  , l 1,..., q .
В этом равенстве число q и множества Nl  p  имеют тот же смысл, что и в главе 1.
При таких обозначениях очевидна следующая оценка для слагаемых в сумме (1.5):
Si  Nl  p   Si  Nl  p    p1 ,..., pk   Si  Nl k  .
Если учесть монотонность функции Sign , то из последнего неравенства следует, что
значение критерия (1.5) для p  Pk можно оценить снизу выражением
z
q
k   Sign Si  N l k  .
(2.20)
i 1 l 1
5. Нижняя оценка в задаче размещения. Для того, чтобы определить способ вычисления нижней оценки критерия на множестве Pk , из множества контактов, входящих в цепь с
номером i , i 1,..., n , выберем те, которые принадлежат модулям с номерами 1,..., k . Если
(1.6) – набор координат всех контактов, входящих в цепь i при заданном размещении p  Pk ,
то в этот набор входят и координаты выбранных контактов. Очевидно, что полупериметр
минимального прямоугольника, охватывающего выбранные контакты (обозначим его Qi k  ),
не больше полупериметра минимального прямоугольника Qi p  , охватывающего все контакты i –ой цепи:
Qi   Qi p  , p  Pk , i  1,..., n .
k
(2.21)
Просуммировав обе части неравенства (2.21) по всем номерам цепей i 1,..., u , получим формулу для вычисления нижней оценки критерия на множестве Pk :
u
u
i 1
i 1
k   Qi k    Qi  p   f  p  , p  Pk .
(2.22)
6. Нижняя оценка в задаче расписания. Рассмотрим способ построения нижней оценки критерия для перестановок p  Pk . Предположим, что при помощи алгоритма, описанного
в 1.4, составлено расписание, соответствующее некоторой перестановке p  Pk . Обозначим
T j k  время окончания работы j  го прибора при условии, что приборы будут выполнять
только требования p1 ,..., pk . Если учесть обозначения раздела 1.4, то очевидно, что
T j k   T j , j  1,..., m .
(2.23)
Вычислив максимальные значения обеих частей неравенства (2.23) по всем номерам
приборов, получим нижнюю оценку  k для значений критерия f  p  на множестве Pk :
k  max T j k   max T j  f  p  .
j 1, m
j 1, m
(2.24)
23
Оценка (2.24) используется в работе [39]. Для определения другого способа вычисления нижней оценки оценим вначале снизу вспомогательное выражение
 T
m
j 1
j

 T j k  ,
вычисленное для некоторой перестановки p  Pk . Значение этого выражения равно сумме
длительности простоев приборов при выполнении ими требований с номерами из множества
I k и суммарной длительности выполнения этих требований –
n

l  k 1
pl
. Поэтому, если из та-
кой суммы вычесть длительность простоев, получим:
n
m


  p   Tj  Tjk  .
l
l  k 1
j 1
Прибавив к обеим частям этого неравенства величину
m
 T  
j 1
k
j
и разделив обе его ча-
сти на m , получим :
n
 1 m k 
1  m k 
  T j    pl    T j .
m  j 1
l  k 1
 m j 1
(2.25)
Воспользуемся тем, что для всех j 1,..., m справедливы неравенства
T j  max Ti .
(2.26)
i 1, m
Просуммировав левые и правые части этих неравенств по всем j 1,..., m , получим:
m
T
j 1
 m  max Ti .
j
(2.27)
i 1, m
Из анализа неравенств (2.25) и (2.27) следует, что
n
1  m k 

T

 j
  pl
m  j 1
l  k 1

(2.28)
Ti  f  p  .
  max
i 1, m

Из соотношений (2.24) и (2.28) следует способ вычисления второй нижней оценки для
значения критерия f  p  на множестве Pk :

1 
m 

m






k  max    T j k    i  , max T j k   .
i 1, m
j 1
iI k
(2.29)
Легко видеть, что оценка (2.29) не меньше оценки (2.28).
Результаты проведенных выше преобразований можно сформулировать в виде следующих теорем о нижних оценках.
Теорема 2.1. Пусть задано k 0,..., n , произвольное множество
Pk и критерий
f  p  , определяемый по формуле (1.1). Тогда для всех p  Pk выполняется неравенство
k  f  p  ,
где значение  k определяется из равенств (2.2)–(2.4).
24
Теорема 2.2. Пусть задано k 0,..., n , произвольное множество
Pk и критерий
f  p  , определяемый по формуле (1.2). Тогда для всех p  Pk выполняется неравенство
k  f  p  ,
где значение  k определяется из равенств (2.5) или (2.6).
Теорема 2.3. Пусть задано k 1,..., n , произвольное множество
Pk и критерий
f  p  , определяемый по формуле (1.3). Тогда для всех p  Pk выполняется неравенство
k
k
k   cij bp p  uk  vk  wk  f  p  ,
i 1 j 1
i
j
где uk вычисляется по любой из формул ( 2.11 ) или (2.14), vk – ( 2.11 ) или (2.15), wk –
( 2.11 ), (2.16) или (2.19).
Теорема 2.4. Пусть задано k 1,..., n 1 , произвольное множество
Pk и критерий
f  p  , определяемый по формуле (1.5). Тогда для всех p  Pk выполняется неравенство
k  f  p  ,
где значение  k определяется из (2.20).
Теорема 2.5. Пусть задано k 1,..., n 1 , произвольное множество
Pk и критерий
f  p  , определяемый по формуле (1.9). Тогда для всех p  Pk выполняется неравенство
k  f  p  ,
где значение  k определяется из (2.22).
Теорема 2.6. Пусть задано k 1,..., n 1 , произвольное множество
Pk , критерий
f  p  , определяемый по формуле (1.12) и множество допустимых перестановок P  . Тогда
для всех p  Pk  P выполняется неравенство
k  f  p  ,
где значение  k определяется из (2.24).
Оканчивая описание способов вычисления нижних оценок, сделаем одно общее замечание. Из сравнения различных оценок в тех задачах, где их приведено несколько, можно
заметить, что чем большая нижняя оценка, тем больший объем вычислений должен быть
выполнен при определении ее значения. С одной стороны, большая нижняя оценка обеспечивает вероятность отсева большего числа вариантов, что способствует уменьшению времени работы алгоритма. С другой стороны, при этом растет время, необходимое для вычисления нижней оценки. Поэтому, чтобы ответить на вопрос о том, какую из приведенных оценок следует выбрать, необходимо провести дополнительные исследования в каждом конкретном случае.
25
Приведем теперь схему работы предлагаемого алгоритма метода ветвей и границ, основные моменты которой были определены выше.
1. Начало работы алгоритма. Произвольно задать рекордную перестановку p . Задать
текущую перестановку p  1,..., n  . F  f  p  . k  0.
2. Начало прямого движения по дереву вариантов.
3. k  k  1 . Вычислить нижнюю оценку  k на множестве Pk , которое определено
компонентами p1 ,..., pk текущей перестановки.
4. Если k  n , то перейти к 5, иначе перейти к 6.
5. Если k  F , то перейти к 3, иначе перейти к 8.
6. Если k  F , то заменить рекорд: p  p, F  k .
7. k  k 1 .
8. Начало обратного движения по дереву вариантов.
9. k  k 1 . Если среди компонент pk  2 ,..., pn есть большие, чем pk 1 , то из всех таких компонент выбрать наименьшую. Пусть индекс этой компоненты j .
10. если компонента p j найдена, то выполнить транспозицию pk 1 и p j , затем упорядочить по возрастанию компоненты pk  2 ,..., pn и перейти к 2, иначе перейти к 11.
11. Если k  0 , то перейти к 9, иначе перейти к 12.
12. Конец работы алгоритма. p – решение задачи.
2.2. О реализации одного алгоритма локальной оптимизации итерационного типа
В этом разделе предлагаются и исследуются алгоритмы, разработанные на основе модификации общей схемы метода вектора спада.
Метод вектора спада является итерационным методом направленного перебора и относится к дискретным аналогам градиентных методов [22]. Этот метод был успешно применен для решения многих классов дискретных задач (см., например, [43,44,45]). Основной
предпосылкой применения этого метода для решения той или иной дискретной оптимизационной задачи является возможность метризации пространства решений. На пространстве
перестановок P можно определить метрики различных типов [3,46]. При разработке алгоритмов, которые рассматриваются в настоящей работе, была выбрана транспозиционная
метрика, которая впервые была исследована в работе [24]. Эта метрика была использована
при решении задачи размещения в работах [14,44,46].
Введем некоторые обозначения. Обозначим v номер текущей итерации при работе
алгоритма. Для начала своей работы алгоритм требует задания начального приближения,
которое обозначим p 0   p10 ,..., pn0  . Решение, полученное при окончании очередной итерации v , обозначим
p v   p1v ,..., pnv  . На каждой итерации v выполняется просмотр точек
окрестности заданного радиуса  с центром в точке p v . В данном случае под окрестностью
26
понимается следующее. Назовем транспозицией операцию над перестановкой, при которой
меняются местами две ее компоненты. Минимальное число транспозиций, за которое перестановку p  P можно преобразовать в перестановку p  P , обозначим d  p, p . В [24]
показано, что определенная таким образом функция d  p, p удовлетворяет аксиомам метрики.
Определение. Окрестностью L  p v  радиуса  с центром p v называется множество
перестановок p  P таких, что d  p v , p    .
Большое значение для ускорения работы алгоритмов метода вектора спада имеет способ вычисления компонент вектора спада [44] , которые определяются следующим образом:
v  p   f  p   f  pv  ,
(2.30)
где p  L  p v  . Для большинства из рассматриваемых в работе задач можно получать значение v  p  , выполняя значительно меньшее число операций, чем при формальном применении равенства (2.30). Рассмотрим вначале такие способы вычисления v  p  при   1 . В
этом случае в окрестность L  p v  попадают те точки p , у которых только две компоненты
отличаются от компонент точки p v . Обозначим эти компоненты piv , i 1,..., n 1 и p vj ,
j i  1,..., n , определим компоненты pl , l 1,..., n соответствующей им перестановки p
в виде следующего равенства:
 plv , если l  i, l  j ,

pl   p vj , если l  i,
 v
 pi , если l  j.
 2.31
1. Вычисление компонент вектора спада при решении линейной задачи о назначениях. Представим выражения для вычисления f  p  и f  p v  , задаваемых равенством (1.1),
в следующем виде:
f  p 
n
c
lpl
 cipi  c jp j
(2.32)
lplv
 cipv  c jpv
(2.33)
l 1
l i , j
f  pv  
n
c
l 1
l i , j
i
j
Вычитая соответствующие части равенства (2.33) из (2.32), а также учитывая (2.30) и
(2.31), получим
v  p   f  p   f  p v   cipv  c jpv  cipv  c jpv .
j
i
i
(2.34)
j
2. Вычисление компонент вектора спада при решении задачи о коммивояжере.
Рассмотрим общий случай, когда значения индексов i и j удовлетворяют системе неравенств:
27
1  i  j  n 1 .
(2.35)
Представим выражения для вычисления f  p  и f  p v  , задаваемые равенством (1.2)
в виде:
f  p   c pn p1 
n

c pl 1 pl  c pi1 pi  c pi pi1  c p j1 p j  c p j p j1 ,
l 1
l  i ,i 1, j , j 1
f  p v   c pv pv 
n 1
n

l 1
l  i ,i 1, j , j 1
c pv
v
l 1 pl
 c pv
v
i 1 pi
 c pv pv  c pv
v
j 1 p j
i 1
i
(2.36)
 c pv pv .
(2.37)
j 1
j
Вычитая соответствующие части равенства (2.37) из (2.36), а также учитывая (2.30) и
(2.31), получим:
 v  p   c pv
v
i 1 p j
 c pv pv  c pv
 c pv pv  c pv
v
j 1 pi
j i 1
 c pv pv  c pv
v
i 1 pi
j 1
i
i
v
j 1 p j
i 1
 c pv pv
j
j 1
(2.38)
В тех случаях, когда значения индексов i и j не удовлетворяют неравенствам (2.35),
вид формул будет другим, чем (2.38). Очевидно, однако, что число арифметических операций, которые требуется выполнять в этих случаях, также будет постоянным, не зависящим от
n.
3. Вычисление компонент вектора спада при решении квадратичной задачи о
назначениях. Представим выражения для вычисления f  p  и f  p v  , задаваемые равенством (1.3) в виде:
f  p 
n

n
n


 clqbpl pq   clibpl pi  cl j bpl p j  cil bpi pl  c jl bp j pl 
l 1 q 1
l i , j q i , j
l 1
l i , j
ciibpi pi  c jibp j pi  cij bpi p j  c jj bp j p j ,
f  pv  
n
n
 c
l 1 q 1
l i , j q i , j
n
b
lq plv pqv

(2.39)

  clibpv pv  clj bpv pv  cil bpv pv  c jl bpv pv 
l 1
l i , j
l
i
l
j
i
l
j l
cii bpv pv  c ji bpv pv  cij bpv pv  c jj bpv pv .
i
i
j i
i
j
j
(2.40)
j
Вычитая правую и левую части равенства (2.40) из соответствующих частей равенства
(2.39), а также учитывая (2.30) и (2.31), получим:
v  p  
  c
n
l 1
l i , j
li




 clj  bpv pv  bpv pv   cil  c jl  bpv pv  bpv pv  

l j
l i
j l
i l




  cii  c jj  bpv pv  bpv pv   cij  c ji  bpv pv  bpv pv .
j
j
i
i
j i
i
j
(2.41)
4. Вычисление компонент вектора спада при решении задачи разбиения. Для
ускорения вычисления величины v  p  при решении задачи разбиения предлагается [51] в
начале работы алгоритма составить для каждого из модулей g , g 1,..., n список Gg цепей,
28
в которые он входит. Тогда, используя (1.5), можно получить следующее равенство для вычисления v  p  :
v  p  
q
   Sign S
gGi G j l 1
g
 N l  p   Sign S g  N l  p v  

(2.42)
5 Вычисление компонент вектора спада при решении задачи размещения. При
решении этой задачи применяется аналогичный прием, что и при решении задачи разбиения.
В начале работы алгоритма для каждого из модулей g , g 1,..., n составляется список цепей, в которые он входит. Тогда, используя преобразованные соответствующим образом равенства (1.7), (1.8), (1.9), можно получить:
v  p  

gGi G j
Qg  p   Qg  p v  .


(2.43)
Таким образом, рассмотрены способы вычисления компонент вектора спада в случае,
когда   1 . Если   1 , то для того, чтобы определить значение функции v  p  в точке
p  L  p v  , требуется произвести несколько транспозиций и при выполнении каждой из них
применить соответствующую формулу из (2.34), (2.38), (2.41), (2.42), (2.43).
В конкретной модификации алгоритмов метода вектора спада просмотр точек окрестности L  p v  осуществляется в некотором порядке. Для описания этого порядка удобно
применять следующие обозначения. Будем рассматривать последовательность операторов


   1 , 2 ,..., k    ,
(2.44)
где k    – число точек в окрестности L  p v  . Очередная точка окрестности p  L  p v 
является результатом применения к центру окрестности одного из операторов   :
p  l  p v  , l  1,..., k    .
Учитывая эти и введенные выше обозначения, приведем схему первого из двух рассматриваемых в этом разделе алгоритмов метода вектора спада.
1.
v  1 . Задать
 . Произвольно задать или определить алгоритмически
p 0   p10 ,..., pn0  .
2. Начало очередной итерации. v  v  1. s  0.
3. s  s 1.
4. если s  k    , то перейти к 7, иначе перейти к 5.
5. p  s  p v  . Вычислить v  p  – очередную компоненту вектора спада.
6. Если v  p   0 , то p v 1  p и перейти к 2, иначе перейти к 3.
7. Конец работы алгоритма p v – решение задачи.
29
В приведенной схеме отметим одну особенность. При просмотре точек очередной
окрестности L  p v  последовательно применяются операторы 1 , 2 ,..., s ,.. к точке
p v ,являющейся центром окрестности, причем s соответствует точке первого попавшегося
«улучшения» целевой функции. После перехода в новый центр окрестности p v 1 операторы
снова применяются в последовательности 1 , 2 ,... . Такой алгоритм генерации точек очередной окрестности назовем линейным генератором вариантов. Линейный генератор традиционно применяется в модификациях метода вектора спада [44,45]. В отличие от линейного
генератора вариантов предлагается применять алгоритм, который назовем кольцевым генератором вариантов. Этот алгоритм характеризуется тем, что (в приведенных обозначениях)
точки окрестности L  p v 1  генерируются путем применения операторов   , начиная с
s 1 :s 1 , s 2 ,... . Схема алгоритма метода вектора спада с кольцевым генератором вариантов состоит из следующих пунктов.
1. v  1 . s  0 . Задать  . Произвольно задать p 0   p10 ,..., pn0  .
2. Начало очередной итерации. v  v  1. t  0.
3. t  t  1 . Если t  k    , то перейти к 7, иначе перейти к 4.
4. s  s 1. Если s  k    , то s  1 .
5. p  s  p v  Вычислить v  p  – очередную компоненту вектора спада.
6. Если v  p   0 , то p v 1  p и перейти к 2, иначе перейти к 3.
7. Конец работы алгоритма p v – решение задачи.
Сравнение линейного и кольцевого генератора вариантов приводится в 2.8.
2.3. Разработка одного алгоритма решения задач безусловной оптимизации,
основанного на использовании идей метода Монте–Карло
Итерационные алгоритмы, к которым относятся алгоритмы метода вектора спада,
требуют для начала своей работы начального приближения. Для этих целей в ПП ВЕКТОР–2
включен ряд алгоритмов, в том числе и алгоритмы метода Монте–Карло [4]. Процедура генерации случайных перестановок, равномерно распределенных по пространству P , кроме
того, используется в предложенном ниже последовательном алгоритме.
Приведем схему алгоритмов метода Монте–Карло, которые предназначены для решения комбинаторных задач оптимизации на перестановках.
1. Задать число бросаний r  1. i  0. F  .
2. i  i  1. С помощью процедуры, использующей датчик случайных чисел, получить
перестановку p   p1 ,..., pn  первых n натуральных чисел.
3. Вычислить f  p  .
30
4. Если f  p   F , то p 0  p и F  f  p  .
5. Если i  r , то перейти к 2, иначе перейти к 6.
6. Конец работы алгоритма. p 0 – решение задачи.
Эта схема алгоритмов метода Монте–Карло проста и не требует, вообще говоря, комментариев. Остановимся лишь на процедуре получения случайных перестановок, которая
используется в пункте 2 схемы.
Работа этой процедуры может быть описана тремя пунктами.
1. Получить n независимых равномерно распределенных на  0,1 чисел t1 ,..., tn . Обозначить t   t1 ,..., tn  .
2. Вычислить n натуральных чисел  i по формулам:

1

i  
ti  1, i  1,..., n ,
 n  i  1 
где квадратные скобки означают целую часть числа. Обозначить   1 ,...,  n     t  .
3. Обозначить: N – множество первых n натуральных чисел; p   p1 ,..., pn  – произвольную перестановку множества N , Ii  p  – множество N \  p1 ,..., pi  , в том числе I 0  p  
 N ; vij  p  , j 1,..., n  i  1 – пронумерованные в порядке возрастания элементы множества Ii 1  p  . Вычислить последовательно n натуральных чисел pi , i 1,..., n , являющихся
компонентами искомой перестановки p по формулам pi   i i .Эту процедуру вычисления p
обозначить  :
p         t   .
При рассмотрении работы приведенной процедуры нас интересует доказательство
того факта, что получаемая в итоге перестановка p может принимать значения, равномерно
распределенные по пространству P :
Теорема 2.7. Пусть p c – перестановка, генерируемая датчиком случайных чисел. Тогда для любой перестановки p  P :
P  p c  p 
1
n!
(2.45)
Проведем доказательство соотношения (2.45), последовательно определяя распределения вероятностей тех величин, которые вычисляются в процессе работы процедуры.
1. Величины ti , i 1,..., n – независимые, равномерно распределенные на  0,1 случайные величины в силу способа построения датчика случайных чисел [7].
2. Из того, что  i является функцией только ti , следует независимость между собой
 i , i 1,..., n . Кроме того, из равномерного распределения ti на  0,1 следует, что вероятj
j 

 1,
ность попадания ti в полуинтервал 
 для любого j 1,..., n  i  1 равна
n  i 1
 n  i 1
31
1
. Поэтому функция распределения случайной величины  i , i 1,..., n задается
n  i 1
формулой:
  j  1,..., n  i  1   Ρ  i  j 
1
.
n  i 1
(2.46)
Из (2.46) и из независимости величин  i , i 1,..., n следует, что вероятность получения любого наперед заданного вектора    1,...,  n  равна произведению соответствующих вероятностей для его компонент:
n
n
i 1
i 1
Ρ      t       Ρ  i   i  
1
1
 .
n  i  1 n!
3. Функция  является взаимно однозначным отображением множества векторов  
на множество перестановок P . Это легко доказать, если принять во внимание, что: 1) оба эти
множества имеют одну и ту же мощность – n! и 2) для любых   и   : если      , то и
p      p      . Поэтому вероятность получения произвольной перестановки p  P
равна вероятности получения соответствующего ей вектора    1  p  , то есть
1
.
n!
Теорема 2.7 доказана.
Описанную процедуру можно модифицировать для получения случайных перестановок, равномерно распределенных по множеству Pk при k 1,..., n 1 . Это можно сделать,
если на время работы процедуры перенумеровать элементы множества I k первыми n  k
натуральными числами. Такая модифицированная процедура применяется в описанных ниже
последовательных алгоритмах, где важно, чтобы получаемые перестановки были равномерно
распределены по области допустимых вариантов.
2.4. Последовательный алгоритм решения задачи размещения узлов ЭВМ
Обсуждаемый в данном разделе алгоритм решения задачи, описанной в 1.3, является
алгоритмом последовательного типа [28,31]. В основу большинства таких алгоритмов положен эвристический принцип оптимизации целевой функции, сводящийся к выбору на данном шаге оптимизации локально оптимальной позиции для одного из модулей. При этом
модуль и позиция выбираются независимо.
При выборе очередного модуля (кандидата) в предлагаемом алгоритме используется
известный прием [48,55], основанный на вычислении «меры связности» между всеми парами
модулей, входящих в одну цепь.
Предположим, что все деревья, реализующие соединения в некоторой цепи, состоящей из k модулей, равновероятны. Тогда математическое ожидание числа связей между любыми двумя модулями этой цепи равно
2
, математическое ожидание всех связей между моk
32
дулями i и j равно cij 
2
k
lM ij
, где M ij – множество номеров цепей, в которые входят оба
l
модуля i и j , kl – число модулей в цепи, номер которой равен l . Вычисляя сумму
n
ci   cij , получим математическое ожидание числа всех связей модуля с номером i . В
j 1
предлагаемом алгоритме кандидаты выбираются в порядке убывания величин
ci ,
i 1,..., n . При этом, если по условию задачи есть модули, которые необходимо поместить
в закрепленные за ними позиции, то такие модули назначаются в алгоритме первыми кандидатами
в
нарушение
очереди,
составленной
по
убыванию
величин
ci ,
i 1,..., n .Выбранный кандидат должен быть установлен в одну из незанятых еще позиций.
При выборе позиции должны быть учтены связи кандидата с остальными модулями. Известно [31,48], что на этапе выбора позиции для кандидата учитываются, как правило, его связи
только с уже размещенными модулями. При создании описываемого алгоритма была предпринята попытка учесть на этом этапе связи кандидата не только с уже размещенными, но
также и с неразмещенными модулями. Для оценки суммарной длины всех связей кандидата
предлагается использовать математическое ожидание длины связей между модулями. С этой
целью внесем коррекцию в модель решаемой задачи.
Будем интерпретировать модули и позиции на плате в виде точек. Поэтому, если модули с номерами i и j размещены в позициях, номера которых соответственно равны pi и
p j , то математическое ожидание связей между этими модулями будет равно произведению
cij bpi p j , где cij – математическое ожидание числа связей между i –м и j –м модулями, а bpi p j –
расстояние между занимаемыми позициями. Если модуль с номером j еще не установлен в
некоторую позицию, то определим величину bpi p j как среднее арифметическое расстояний
от позиции pi до всех свободных позиций. В результате оценка суммарной длины связей
между модулем i и остальными модулями, как размещенными, так и неразмещенными, равна
n
bi   cij bpi p j
(2.47)
j 1
Резюмируя сказанное выше, работу предлагаемого алгоритма кратко можно описать в
виде следующей схемы.
1.Упорядочить модули по убыванию математического ожидания числа всех связей
модуля (составить очередь кандидатов). Если есть модули, закрепленные по условиям задачи, то поставить их в начало очереди и назначить в выделенные для них позиции.
2. i  i0 , где i0 – число закрепленных модулей.
3. i  i  1. Выбрать очередного кандидата из очереди.
4. Выбрать позицию для кандидата, исходя из минимума оценки суммарной длины
его связей, вычисляемой по формуле (2.47).
33
5. Если i  n , то перейти к назначению в позицию очередного кандидата (п. 3); если
i  n, то окончить работу алгоритма.
Предлагаемый алгоритм реализован в виде программного модуля на языке ФОРТРАН, включен в пакет ВЕКТОР – IВ [11], затем в пакет ВЕКТОР–2 [12,13], и прошел опытную эксплуатацию. Для определения эффективности этого алгоритма был проведен численный эксперимент на ЭВМ БЭСМ–6. В этом эксперименте исследуемый алгоритм рассматривался как алгоритм нахождения начального приближения. Сравнивались два комплекса алгоритмов:
а) предлагаемый алгоритм для начального приближения и алгоритм метода вектора
спада для нахождения локального экстремума;
б) алгоритм метода Монте–Карло и алгоритм метода вектора спада.
Была решена серия реальных задач различных размерностей. Для каждой задачи
начальное приближение находилось сначала предлагаемым алгоритмом, а затем несколько
раз алгоритмом метода Монте–Карло с различным числом бросаний. Результаты эксперимента приведены в таблице 2.1. Предлагаемый алгоритм в таблице обозначен ММС; метод
Монте–Карло – ММК; число позиций на плате – M ; число модулей – N ; время работы алгоритмов – t (в секундах); значение критерия в точке решения – f . В верхней строке таблицы обозначены номера задач, в крайнем левом столбце – номера примеров.
Таблица 2.1
ММС
t
f
1
2
20
24
18
24
1,4
2,2
4686,5 5199,5
МВС
t
f
10,8
22,7
4230,0 4834,5
ММК
(10)
t
f
1,1
2,3
3,1
3,0
4,8
7,0
5821,5 6937,5 11807,5 10495,0 16949,0 21531,0
МВС
t
f
13,4
27,4
4029,5 4534,5
38,0
8620,0
32,1
8580,0
243,6
633,4
10011,5 13854,0
ММК
(50)
t
f
9,4
12,0
14,4
5351,0 6788,5 11672,5
13,1
9790,0
22,6
40,3
16949,0 21282,5
t
f
16,0
22,6
4186,0 4903,5
35,7
9102,5
50,2
6867,5
241,8
384,0
10011,5 14151,5
ММК
(10)
t
f
16,8
21,3
29,3
5047,0 6718,0 11597,5
28,7
9685,0
49,6
77,7
16499,0 21282,5
МВС
t
f
11,4
22,0
3879,5 4688,5
28,5
8900,0
56,3
6770,0
150,3
363,2
10997,5 14151,5
ММК
(200)
t
f
35,0
46,4
65,7
4911,5 6305,5 11322,5
56,1
9685,0
93,0
144,5
16499,0 20319,0
M
N
1
2
3
МВС
4
5
3
30
29
2,9
9660,0
4
5
6
30
45
60
30
45
60
3,8
11,9
26,2
9657,5 14960,0 18544,5
31,9
8710,0
43,7
139,0
446,1
7080,0 10916,5 14293,0
34
МВС
t
f
14,9
25,6
4121,5 4836,5
58,1
8705,0
54,0
6770,0
148,7
414,1
10997,5 14508,0
ММК
(400)
t
f
64,2
87,8
118,2
4770,0 6305,5 11145,0
108,6
9685,0
198,1
289,4
15496,5 20319,0
МВС
t
f
15,0
26,1
3984,0 4836,5
54,9
6770,0
182,9
414,1
10087,5 14508,0
6
28,3
8517,5
Анализ результатов эксперимента позволяет сделать следующие выводы:
1. Общее время получения окончательного результата комплексом алгоритмов ММС
и МВС во всех случаях меньше, чем комплексом ММК и МВС.
2. Точность решения, получаемого алгоритмом ММС выше, чем алгоритмом ММК, а
время решения, соответственно, меньше.
Поэтому предлагаемый алгоритм можно применять для нахождения начального приближения, а также, ввиду его быстродействия, для нахождения решения при большой размерности задачи.
Данные, представленные в таблице 2.1, позволяют сделать еще один вывод, касающийся точности решения, которое получают методом вектора спада: между значениями критерия в точке решения и в точке начального приближения нет монотонной зависимости.
2.5. Общая схема одного класса последовательных алгоритмов
Заданием целевой функции f неявно задается закон распределения ее значений Ff
на множестве P , а также на различных его подмножествах, которые выше обозначены
Pk , k 0,1,..., n . В рассматриваемых задачах не представляется возможным в простой и
удобной форме задавать функцию Ff . Поэтому наряду с Ff будем рассматривать некоторый
явно заданный закон распределения – функцию Ф , зависящую от m параметров a1 ,..., am ,
которая аппроксимирует Ff . При этом параметры a1 ,..., am будут принимать различные значения на различных множествах Pk , k 0,1,..., n .
Предлагаемый подход к решению задач типа (I) основан на том, что считается истинным следующее основное предположение.
Основное предположение. Функция Ф  а1 ,..., ат  при определенных значениях ее параметров задает законы распределения значений критерия f на подмножествах
Pk , k 
0,1,..., n пространства P :
Ff  Ф  a1 ,..., am  .
(2.48)
На основании модификаций этого предположения можно построить различные алгоритмы решения задач типа (I). Общая схема этих алгоритмов включает такие основные пункты.
35
1. На k  ом шаге работы алгоритма  k  1,..., n  множество Pk 1 разбивается на определенное число подмножеств Pk .
2. Для каждого множества Pk – определенной части множества Pk 1 – вычисляются
значения параметров функции распределения Ф .
3. В результате сравнительного анализа полученных в пункте 2 законов распределения выделяется то множество Pk , в котором вероятнее всего находится искомая точка p .
4. Выделенное множество Pk рассматривается в следующем  k  1  м шаге алгоритма. Остальные множества исключаются из дальнейшего рассмотрения.
5. Работа алгоритма прекращается, когда k  n . При этом множество Pk состоит из
одной точки. Эта точка объявляется решение задачи.
При построении алгоритмов, вкладывающихся в приведенную схему, требуется уточнить второй и третий пункты этой схемы. В общем случае, когда критерий f задается достаточно сложной формулой, либо его вычисление связано с выполнением некоторой процедуры, предлагается для реализации второго пункта схемы применять алгоритм, который является модификацией для данной задачи метода Монте–Карло. С этой целью проводят специальный эксперимент, использующий процедуру получения случайных перестановок. В результате этого эксперимента получают достаточное число перестановок, равномерно распределенных по тому множеству Pk , которое рассматривается в данном пункте работы алгоритма. На основании анализа значений f на этих перестановках и производится вычисление
параметров функции Ф . Алгоритмы, использующие для вычисления параметров функции Ф
процедуру метода Монте–Карло, включены в ПП ВЕКТОР–2 и применяются для решения
значительного числа представленных в этом пакете задач комбинаторной оптимизации.
Группа таких алгоритмов рассматривается в разделе 2.3. Однако для некоторых их этих задач удается вывести формулы для прямого вычисления параметров функции Ф . Вывод таких формул показан в разделе 2.4 на примере линейной задачи о назначениях.
В третьем пункте приведенной схемы речь идет о проведении сравнительного анализа
параметров функции распределения Ф . Так как при реализации этого пункта схемы считается известным вид функции Ф , то отсюда следует, что доступна информация о точной нижней границе значений критерия f на каждом из сравниваемых множеств Pk . Можно считать,
что искомая точка p вероятнее всего находится в том из множеств Pk , на котором точная
нижняя грань функции f наименьшая.
Рассмотрим теперь вопрос о том, к какому типу отнести алгоритмы, общая схема которых обсуждается данном разделе. Очевидно, что равенство (2.48) в общем случае является
не точным, а приближенным. Поэтому, применяя алгоритмы, о которых идет речь, получают,
как правило, приближенное решение. Вопрос о степени соответствия между истинностью
основного предположения и точностью получаемого решения является предметом отдельного исследования и в настоящей работе не рассматривается.
36
Сравним приведенную здесь схему алгоритмов со схемой алгоритмов метода ветвей и
границ, которая приведена выше. Рассмотрим один предельный случай, когда равенство
(2.48) выполняется в точности. В этом случае нижняя оценка, которая используется в методе
ветвей и границ, является точной. Поэтому можно выбрать такую стратегию ветвления: из
всех вариантов ветвления выбирается тот, на котором нижняя оценка наименьшая, а остальные варианты из дальнейшего рассмотрения исключаются. Легко видеть, что в этом предельном случае схемы рассматриваемых алгоритмов совпадают. Это дает повод определить
предлагаемые алгоритмы как модификации метода ветвей и границ.
Рассмотрим теперь другую особенность предлагаемых алгоритмов. Для выбора подмножества, в котором предполагается найти решение задачи, на соответствующем шаге алгоритма исследуется информация о статистических свойствах критерия. Эта особенность
дает повод отнести предлагаемые алгоритмы к группе стохастических оптимизационных
алгоритмов.
Есть еще одна характерная черта в схеме предлагаемых алгоритмов. Процесс последовательного построения вложенных одно в другое множеств Pk , k 0,..., n можно представить как последовательное построение перестановки p : выбором множества Pk определяется значение k  ой компоненты p k 1,..., n . Это последнее обстоятельство дает повод отнести предлагаемые алгоритмы к группе комбинаторных алгоритмов последовательного построения решения.
2.6. Метод среднего значения
Как видно из общей схемы предлагаемых алгоритмов, нет необходимости задавать
вид функции распределения в точности. Достаточно при формулировке предположения, на
основании которого строится тот или иной алгоритм, указать лишь на свойства этой функции, которые позволяли бы выбирать «перспективные» множества. Так при построении алгоритма, который здесь будем называть алгоритмом среднего значения, основное предположение высказывается в такой форме.
Предположение 1. При фиксированном k кривые, изображающие функции распределения значений критерия на подмножествах Pkr , r  I k 1 , множества Pk 1 являются конгруэнтными.
Если строить схемы алгоритмов, исходя из этого предположения, то очевидно, что из
всех параметров функции распределения значений критерия для анализа достаточно выбрать
всего один. Этот параметр должен определять относительное смещение кривых, изображающих функцию Ф , вдоль оси абсцисс. Таким параметром является среднее значение критерия на рассматриваемых множествах. Из конгруэнтности кривых Ф следует, что точная
нижняя грань критерия будет меньше на том множестве, на котором среднее значение критерия будет меньшим.
Таким образом, схема работы алгоритма среднего значения включает такие пункты.
1. k  0 .
37
2. k  k  1 . Вычислить средние значения критерия akr на множествах Pkr , r  I k 1 .
3. Найти такое r   I k 1 , чтобы akr  было минимальным из всех akr , r  I k 1 .
4. pk  r  .
5. Если k  n 1, то перейти к 2, иначе перейти к 6.
6.
Положить
pn
равным
элементу,
который
определятся
соотношением
N \  p1 ,..., pn1 . Конец работы алгоритма. Перестановка p   p1 ,..., pn  – решение задачи.
Рассмотрим случай, когда для вычисления средних значений критерия akr , r  I k 1
используется процедура метода Монте–Карло. Будем изучать простейший случай, когда
число бросаний  задается до начала работы алгоритма. Тогда в качестве оценки величин
akr , r  I k 1 можно использовать выражение

f  p   ,


1
l
(2.49)
l 1
где pl   Pkr – случайно получаемые перестановки.
Пусть число операций, которое требуется произвести при вычислении критерия
f  p  , оценивается сверху функцией T f  n  , где, как и выше, n – размерность задачи. Как
видно из приведенной схемы, на k  ом шаге алгоритма требуется вычислить n  k  1 величин (2.49). Очевидно, это потребует не больше, чем  n  k  1  T f  n     1 арифметических операций. Число операций сравнения, которые требуется произвести при отработке
пункта 3 схемы, равно n  k . Поэтому суммарное число операций, которое требуется выполнить на всех шагах работы алгоритма, тогда оценивается сверху таким выражением:
n 1
n 1
  n  k  1 T  n     1    n  k  
f
k 1
k 1
n 1




  n  1 n  1   k   T f  n     1  n  n  1   k 
k 1 
k 1

n 1
n  n  1 
n  n  1

  n  1 n  1 

 T f  n     1  n  n  1 
2 
2



 n  2  n  1 T

2

f
 n     1 
n  n  1

2

n 1
 n  2   T f  n   1  1  n  O  n 2T f  n   .
2
(2.50)
В проводимых вычислениях оценки временной сложности алгоритма итоговый результат должен быть получен с точностью до мультипликативной постоянной. Из этого следует, что можно допускать неточности при подсчете числа арифметических операций, при
условии, что значение максимального показателя степени при n и  в выражения типа
(2.50) будет вычислено верно. (Подробнее об этом см., например, в [1]). Поэтому, если обозначить время работы алгоритма T  n,   , то, исходя из (2.50), можно утверждать, что
38
T  n,    O  n 2 T f  n   .
(2.51)
Для оценки точности получаемого решения был проведен численный эксперимент,
результаты которого обсуждаются ниже. Что же касается теоретической оценки точности
решения, то можно показать, что с ростом  растет вероятность выполнения системы неравенств:
a  a1 p1  a1 p2  ...  a1 pn  f  p 
(2.52)
где p   p1 ,..., pn  – полученное решение, а a – среднее значение критерия на всем множестве P . Другими словами, можно лишь утверждать, что получаемое решение не «хуже»
среднего значения критерия на всей области его определения, да и то с вероятностью, которая зависит от числа бросаний  :
f  p  a .
(2.53)
2.7. Вычисление точных значений параметров функции распределения
значений критерия
Как было показано в предыдущем разделе, для вычисления оценок среднего значения
методом Монте–Карло требуется порядка Tf  n  арифметических операций. Рассмотрим на
примере линейной задачи о назначениях как эти вычисления провести за меньшее число
операций и к тому же вычислить эти величины не приближенно, а точно. Затем приведем
аналогичные результаты для задачи о коммивояжере и квадратичной задачи о назначениях.
Рассмотрим способ вычисления величины akr при k 1,..., n 1 , r  I k 1 , если решается линейная задача о назначениях.
Подставляя правую часть равенства (1.1) в (0.6) вместо f  p  и изменяя порядок
суммирования, получим:
akr 
Сумма
c
pPkr
ipi
1
 n


  cipi   P
pPkr  i 1

kr
1
Pkr
n


.

  c
i 1
 pPkr
ipi
в последнем выражении вычисляется различным образом для
i 1,..., k и для i k  1,..., n . Если i 1,..., k , то значение величины pi является одним и
тем же для всех p  Pkr , следовательно
c
pPkr
ipi
 Pkr cipi , i 1,..., k .
Если же i k  1,..., n , то легко показать, что в сумму
(2.54)
c
pPkr
ipi
входят n  k различных
слагаемых, именно cij , j  I k , причем каждое по одному и тому же числу раз. Поэтому
c
pPkr
ipi

1
Pkr
nk
c ,
jI k
ij
j k  1,..., n .
(2.55)
39
Складывая правые части равенств (2.54) и (2.55), получим
k
akr   cipi 
i 1
1 n
  cij , pk  r .
n  k i k 1 jIk
(2.56)
Введем обозначения:
 kr  ckr 
n
1
cir ,

n  k i  k 1
k 1
 k   cip 
i 1
i
1 n
  cij .
n  k i  k 1 jI k 1
(2.57)
(2.58)
Легко проверить, что
akr   kr   k
и что величина  k при фиксированном k принимает одно и то же значение при всех r  I k 1 .
Из этого следует, что для того, чтобы на k –ом шаге работы алгоритма выбрать множество
Pkr , которому соответствует наименьшая из величин akr , достаточно вычислить и сравнить
между собой величины  kr , r  I k 1 . Замена вычисления величин akr вычислением величин
 kr сокращает число арифметических операций, которые требуется выполнить на k –ом шаге работы алгоритма. Это следует из сравнения правых частей равенств (2.56) и (2.57). С целью дальнейшего сокращения числа операций предлагается вычислять вспомогательные величины  kr для всех r  I k 1 по формулам
n
 cir ,
 kr   i 1

 k 1,r  ckr ,
если k  1,
(2.59)
если 2  k < n.
Из равенств (2.57) и (2.59) следует, что
 kr  ckr 
1
 kr .
nk
Оценим временную сложность алгоритма среднего значения, если вместо величин akr
вычисляются и анализируются величины  kr и  kr . Для этого потребуется вычислить число
арифметических операций, которые выполняются на k –ом шаге работы алгоритма. При выполнении пункта 2 схемы для вычисления величин  kr и  kr , r  I k 1 , достаточно в общей
сложности 2n  3 (при k =1) или 4  n  k 1 (при k  1 ) арифметических операций. Число
операций сравнения, которые требуется выполнить при отработке пункта 3 схемы, равно
n  k . Суммарное число операций, выполненное на всех шагах работы алгоритма, тогда равно
n 1
n 1
k 2
k 1
2n  3   4  n  k  1    n  k  
5 2 17
n  n  15 .
2
2
(2.60)
Как было уже отмечено, в проводимых вычислениях оценки временной сложности
алгоритма итоговый результат должен быть получен с точностью до мультипликативной
40
постоянной. Из этого следует, что можно допускать неточности при подсчете числа операций, при условии, что значение максимального показателя степени при n в выражениях типа
(2.60) будет вычислено верно. Поэтому, если обозначить время работы алгоритма T  n  , то,
исходя из (2.60), можно утверждать, что T  n   O  n 2  .
Таким образом, показано, что применение вычисления точных значений величин  kr
и  kr вместо процедуры метода Монте–Карло позволяет уменьшить временную сложность
алгоритма. Кроме того, требуемые величины вычисляются не приближенно, а точно. Вследствие этого оценка (2.53) перестает носить вероятностный характер и является точной.
Применяя методику, приведенную для линейной задачи о назначениях, можно показать, что справедливы следующие результаты.
Для задачи о коммивояжере величины  kr и  kr следует вычислять по формулам:
n
 cir  c p1r ,
 kr   i 1

 k 1,r  c pk 1r ,
 kr  c p
k 1r

если k  2,
если 3  k  n.


1
crp1   kr .
nk
Временная сложность алгоритма для этой задачи T  n   O  n 2  .
При решении квадратичной задачи о назначениях удобно использовать вспомогательные величины  ki и  ki , i 1,..., n :
n
 cij ,
 ki   j 2

 k 1,i  cik ,
если k  1,
если 2  k < n,
n
 c ji ,
 ki   j 2
   c ,
 k 1,i ki
если k  1,
если 2  k < n.
n 1
 kr    cik bp r  cki brp   ckk brr 
i 1
n
  cii 
i  k 1
i
i
1
brr 
nk
k 1
1  n
c
b

  kj  rl  bpi r  ki  brpi  ki 
n  k  j  k 1 lI k
i 1


  c b
n
j  k 1
n
1
 ki  cii    brq  bqr  .
 n  k  n  k  1 i
 k 1
qI k
Временная сложность алгоритма для этой задачи T  n   O  n3  .
jk
lI k
rl



41
2.8. О сравнении алгоритмов
В этом разделе приводятся результаты численного эксперимента по решению ряда
модельных и практических задач описанными выше алгоритмами и на основании этого эксперимента, а также теоретического исследования, делаются выводы относительно их эффективности.
Рассмотрим вначале вопрос о том, какой величиной следует оценивать точность решения при использовании приближенных алгоритмов в случае, когда данные для численного
эксперимента генерируются датчиком случайных чисел. Дело в том, что применяемая обычно оценка

f  f
,
f
(2.61)
где f – полученное решение, а f – точное решение, для рассматриваемых задач допускает
возможность неоднозначных выводов об эффективности алгоритмов. Поясним сказанное на
примере линейной задачи о назначениях.
Предположим, что была решена задача (0.1), (1.1) с некоторой матрицей C и получены величины f , f и  , которые входят в равенство (2.61). Рассмотрим теперь задачу с модифицированной матрицей C , соответствующие элементы которой отличаются от исходных
на одну и ту же величину s :
cij  cij  s, i, j 1,..., n .
Очевидно, что между целевыми функциями этих двух задач на всей области определения выполняется соотношение:
f   p   f  p   ns ,
где f   p  – критерий для модифицированной задачи.
Понятно также, что при решении модифицированной задачи предлагаемый алгоритм
дал бы то же решение (ту же перестановку), что и для исходной задачи. Однако оценка точности алгоритма   , вычисленная по формуле (2.61), изменилась бы:
 
f   f
f  f

,
f
f  ns
или

    1 

ns 
.
f 
Таким образом, произвольно выбирая для численного эксперимента значение s , будем получать различные значения точности получаемого решения, в том числе как угодно
малые. Причем следует заметить, что увеличение точности в таком эксперименте объясняется не повышением эффективности алгоритма, а подбором исходных данных.
Подобное рассуждение справедливо и для других задач, изучаемых в работе. Поэтому, чтобы избежать такой неоднозначности, наряду с (2.61) предлагается оценивать точность
решения по формуле
42
f a

,
(2.62)

где a и  – соответственно среднее значение и среднее квадратичное отклонение значений
критерия на всей области его определения.
Применяя методику, приведенную для вывода величин  kr и  kr , можно получить
выражения для вычисления величин a и D   2 :
– для линейной задачи о назначениях:
a
1 n n
 cij ,
n i 1 j 1
2
2
   ;
1  n n 2
1 n  n   n
2
D
 cij  a     cij     c ji   
n  1  i 1 j 1
n i 1  j 1   j 1   



– для задачи о коммивояжере:
a
1 n n
 cij ,
n  1 i 1 j 1
j i
2
2



  n

n
n
n
n
n



1
1
2
2
D
cij     c ji    cij c ji   ;
 cij  a 



n  2  i 1 j 1
n  1 i 1  j 1   j 1 
j 1

j i
j i
j i
j i







– для квадратичной задачи о назначениях:
 n n
 n n

1  n  n 
1


a    cii   bii  
bij  .
 cij 
n  i 1  i 1  n  n  1  i 1 j 1 
 i 1 jj 1i 
j i



Формула для вычисления D в квадратичной задаче о назначениях не приведена из-за
громоздкости. Для других задач точные формулы для вычисления a и D не получены. Однако, эти величины можно вычислять приближенно, используя выборку перестановок
p i , i  1,  , полученную методом Монте–Карло:
a

 f p ,

1
i
i 1
D

 f  p a

1
2
i
2
,
i 1
где p i  P – значение случайной перестановки при i  ом бросании, а  – число бросаний.
Для проведения численного эксперимента по решению линейной задачи о назначениях, задачи о коммивояжере и квадратичной задачи о назначениях были сгенерированы исходные данные – матрицы C и B – при помощи датчика случайных чисел. При этом элементы матриц считались значениями случайной величины, равномерно распределенной на
 0,1 . Для этих данных были вычислены величины
a и  по приведенным выше формулам.
Значения a и  приведены в таблице 2.2. Ниже, говоря о численном эксперименте, будем
43
подразумевать, в первую очередь, именно эти данные, на другие указывая особо. Результаты
численного эксперимента по решению этих задач разными алгоритмами приводятся ниже в
таблицах 2.3 – 2.5, 2.7, 2.8, 2.11 – 2.14.
Таблица 2.2
n
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
20
30
40
50
60
70
80
90
100
110
120
130
140
Линейная задача о Задача о коммивояжере Квадратичная задача о
назначениях
назначениях
a

a

a

1,12
0,26
1,38
0,00
1,33
0,02
1,59
0,56
1,60
0,11
2,53
0,17
1,92
0,36
1,85
0,39
3,70
0,18
2,34
0,44
2,47
0,43
5,56
0,22
2,94
0,46
2,86
0,49
8,64
0,34
3,47
0,62
3,51
0,58
12,02
0,45
3,97
0,66
3,92
0,67
15,75
0,54
4,61
0,73
4,71
0,69
21,33
0,65
4,94
0,81
5,10
0,79
24,62
0,77
5,29
0,87
5,36
0,86
28,03
0,91
5,83
0,88
5,87
0,90
34,01
0,94
6,16
0,95
6,24
0,95
38,03
0,99
6,56
1,00
6,57
1,03
43,04
1,10
7,07
1,06
7,13
1,05
49,97
1,19
7,57
1,09
7,56
1,09
57,28
1,35
9,69
1,24
9,69
1,25
93,98
1,70
14,72
1,54
14,66
1,54
216,60
2,50
19,64
1,83
19,61
1,83
385,56
3,39
24,57
2,04
24,56
2,04
603,45
4,24
29,60
2,24
29,56
2,24
876,41
5,06
34,61
2,42
34,65
2,41
1197,93
5,88
39,56
2,59
39,53
2,59
1565,06
6,72
44,56
2,74
44,64
2,74
1994,33
7,55
49,69
2,89
49,69
2,89
2468,75
8,40
54,65
3,03
54,69
3,03
–
–
59,69
3,16
59,67
3,17
–
–
64,71
3,29
64,72
3,29
–
–
69,73
3,42
65,21
3,30
–
–
Рассмотрим теперь результаты численного эксперимента для различных алгоритмов.
Эксперимент проводился, в основном, на ЭВМ БЭСМ–6.
Метод ветвей и границ. Численный эксперимент для этого метода проводился, в
первую очередь, с целью выяснения максимальной размерности задач, которые можно решить в приемлемое время.
В таблице 2.3 приведены результаты по решению линейных задач о назначениях. В
таблице t означает время в секундах, n, f ,  – те же, что и выше.
В таблице 2.4 приведены результаты эксперимента по решению задач о коммивояжере. Здесь t1 означает время решения в секундах для алгоритма, в котором нижняя оценка
вычисляется по формуле (2.5), а t 2 – по формуле (2.6).
44
Таблица 2.3
n
f
Таблица 2.4

t
n
f

t1
t2
2
0,866
–1,00
0,0
2
1,379
0,00
0,0
0,0
3
1,132
–1,79
0,0
3
1,486
–1,00
0,0
0,1
4
1,320
–1,66
0,0
4
1,488
–0,94
0,0
0,2
5
1,228
–2,54
0,1
5
1,598
–2,06
0,1
0,3
6
1,679
–2,71
0,4
6
1,763
–2,25
0,7
0,6
7
1,403
–3,33
0,4
7
1,555
–3,36
0,8
2,0
8
1,585
–3,62
2,0
8
1,616
–3,44
3,7
6,5
9
1,460
–4,29
1,5
9
2,334
–3,46
21,2
31,8
10
1,432
–4,32
4,6
10
2,087
–3,82
54,8
32,8
11
1,143
–4,78
5,3
11
1,519
–4,46
29,5
56,3
12
1,619
–4,80
24,3
12
1,992
–4,32
250,5
141,6
13
1,337
–5,06
35,5
14
1,368
–5,16
67,8
15
1,494
–5,28
320,9
16
1,443
–5,62
880,3
В таблице 2.5 приведены результаты эксперимента по решению квадратичных задач о
назначениях. Здесь величины tij , i 1, 2 , j 1, 2,3 означают время решения задачи, если
слагаемые в нижней оценке uk , vk вычисляются по формулам
 2.11
при i  1 и (2.14),
(2.15) при i  2 , а wk – по формулам  2.11 при j  1 , (2.16) – при j  2 , (2.20) – при j  3 .
Таблица 2.5
n
f

t11
t12
t13
t 21
t 22
t 23
2
0,131
–1,00
0,0
0,0
0,0
0,0
0,0
0,0
3
0,237
–0,92
0,0
0,0
0,1
0,1
0,1
0,1
4
0,350
–1,06
0,1
0,2
0,3
0,4
0,4
0,5
5
0,484
–3,33
0,8
1,2
2,2
2,2
1,4
1,6
6
0,756
–3,22
6,1
9,0
15,3
15,6
5,1
9,5
7
1,050
–3,37
52,5
78,3
114,5
105,3
19,9
55,7
8
1,382
–3,56
521,1
–
–
–
111,7
283,2
В таблице 2.6 приведены результаты эксперимента по решению ряда задач расписания методом ветвей и границ и методом вектора спада. На решение каждой задачи отводилось максимальное время 20 минут, после чего задача считалась нерешенной. Исходные
данные для задач были получены следующим образом. С помощью датчика случайных чисел
была получена последовательность значений псевдослучайного числа Z  z1 , z2 ,... , распределенного по равномерному закону на 1,1000 . Число требований n было образовано из z1 :
z 
 z

n  10   1  . Число приборов m   2  1 . Часть матрицы отношений над диагональю
10 
100 
45
 j  i
 z n 
заполнялась построчно единицами через промежутки, равные  l  l  3, 4,... .
1000 
Остальные элементы матрицы – нули.
Таблица 2.6
Метод ветвей и Метод вектора
границ
спада
Количество решаемых задач
60
60
Количество решенных задач
45
60
86,0
3,2
0
2,0
Среднее время решения задачи (сек.)
Средняя погрешность решения
Погрешность решения для метода вектора спада вычислялась по формуле, сходной с (2.61):

f  f
f
Приведенные в таблицах 2.3 – 2.6 результаты показывают невысокую эффективность
по времени решения предложенных алгоритмов метода ветвей и границ для решения задач
безусловной оптимизации.
Метод вектора спада. В численном эксперименте сравнивались две модификации
алгоритмов с линейным и кольцевым генераторами вариантов. Кроме того, был решен ряд
практических и известных из литературы тестовых задач.
В таблице 2.7 приведены результаты эксперимента по сравнению линейного и кольцевого генераторов вариантов при решении линейных задач о назначениях. n ,  , и t означают здесь то же, что и выше, f – значение критерия в точке полученного решения.
Таблица 2.7
n
10
20
30
40
50
60
70
80
90
100
110
120
130
140
Линейный генератор

t
f
1,453 –4,29
0,1
2,224 –6,03
1,0
1,623 –8,49
4,6
2,153 –9,57
8,2
2,046 –11,04 19,4
2,635 –12,05 43,7
3,118 –13,04 56,8
3,354 –14,00 80,6
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
Кольцевой генератор

f
t
1,453 –4,29 0,1
2,225 –6,03 0,3
2,366 –8,01 0,5
2,426 –9,42 1,5
2,624 –10,76 1,8
3,116 –11,83 2,2
3,707 –12,80 4,8
3,675 –13,87 4,6
3,483 –15,04 6,1
3,739 –15,89 8,1
3,768 –16,81 11,9
4,585 –17,42 10,6
3,933 –18,46 13,3
4,425 –19,11 19,4

2,6
3,8
3,1
4,8
3,7
3,2
5,1
3,7
4,0
4,1
4,8
3,7
4,0
4,5
Поясним значение величины  . Анализ схемы алгоритма с кольцевым генератором показывает, что время его работы затрачивается, в основном, на вычисление компонент вектора
спада. Число таких обращений за время работы обозначим  1 . Это число можно вычислять в
46
процессе проведения эксперимента.  означает отношение 1 k 1 , где k 1 – число точек в
окрестности радиуса 1, которое в используемой метрике равно n  n  1 2 . Пусть число операций, необходимое для вычисления одной компоненты вектора спада, ограничено сверху
величиной
T1  n  . Тогда временная сложность алгоритма определяется величиной
O  n 2T1  n   . Из (2.34) видно, что T1  n   const . Данные, приведенные в таблице, показыва-
ют, что  является медленно растущей по сравнению с n величиной. Поэтому можно сделать
вывод, что для этой задачи временная сложность алгоритма вектора спада равна O  n 2 
В таблице 2.8 приведены результаты эксперименты по решению задач коммивояжера.
Обозначения здесь те же, что и в таблице 2.7. Для этой задачи также T1  n   const . Поэтому
временная сложность алгоритма вектора спада равна O  n 2  .
Таблица 2.8
n
10
20
30
40
50
60
70
80
90
100
110
120
130
140
Линейный генератор

t
f
2,248 –3,61
0,1
2,842 –5,48
1,1
3,639 –7,18
4,0
4,525 –8,25 14,1
4,244 –9,96 22,5
5,879 –10,56 38,6
7,014 –11,45 62,0
6,773 –12,65 114,3
7,011 –13,75 153,4
8,002 –14,43 167,0
–
–
–
–
–
–
–
–
–
–
–
–
Кольцевой генератор

f
t
2,087 –3,82
0,1
2,962 –5,38
0,5
4,090 –6,89
0,8
5,057 –7,96
1,9
5,295 –9,45
3,3
5,800 –10,60
6,7
7,282 –11,34
5,9
6,602 –12,72 10,9
8,417 –13,24 13,9
8,110 –14,36 22,2
9,345 –14,97 16,4
10,113 –15,69 30,3
10,980 –16,32 36,1
10,552 –17,33 36,5

2,2
3,4
2,6
3,4
3,7
5,3
3,3
4,7
4,7
4,7
3,8
5,9
5,3
5,2
Сравнив точность решения по таблицам 2.7 и 2.8, можем сделать вывод, что по точности линейный и кольцевой генераторы равноценны.
Кроме указанных в таблице 2.8 были решены еще две задачи о коммивояжере для 48 и
25 городов, которые будем называть первой и второй задачами Карпа по имени одного из
авторов статьи, где приведены данные для этих задач [49]. Первая задача Карпа была решена
10 раз из различных начальных приближений. Длина оптимального пути при этом колебалась в пределах от 14703 до 16894, величина 
от –11,197 до –10,494. Для этой задачи
a =49090,  =3071. Точное решение в этой задаче, по предположению авторов статьи, равно
11470. Вторая задача Карпа была решена 50 раз. Длина пути при этом была в пределах от
1849 до 2529, величина  от –8,074 до –6,269. Для этой задачи a =4890,  =377, а точное решение 1711 [30].
Для изучения эффективности алгоритма с кольцевым генератором вариантов для
квадратичной задачи о назначениях была решена 89 раз известная задача Штейнберга, в которой n  36 . В результате было получено одно из наиболее точных решений (см. таблицу
47
2.9, которая была приведена в [12] ). Начальные приближения для алгоритма вектора спада
были получены методом Монте–Карло при числе бросаний 20. В таблице 2.10 приведены
значения в точке начального приближения (ММК) и решения (МВС). Эти данные дают повод говорить об отсутствии зависимости между двумя величинами.
Таблица 2.9
Алгоритм
Длина Время, приведенное к
ЭВМ, IBM–7090, мин
Алгоритм Штейнберга
4895
5,2
Алгоритм связывания пар
4873
0,2
Алгоритм расширения ядра
5265
0,6
Алгоритм Джилмора степени
4548
1
Модификация Гиллера–Коннорса алгоритма Джилмора
4822
5
Алгоритм Гиллера
4475
3
Алгоритм парных перестановок
4458
6
Алгоритм неявного перебора Грейвса–Уинстона
4345
–
Алгоритм Холла
4419
–
Метод Реймонда
4222
3 (1 итерация)
Метод суживающихся окрестностей
4465
–
Метод вектора спада
4194
0,7
Таблица 2.10
ММК

МВС
ММК
МВС
ММК
МВС
6879
4282
7681
4505
7965
4415
7130
4346
7698
4463
7966
4449
7139
4323
7713
4569
7985
4737
7207
4488
7730
4305
7987
4370
7221
4364
7739
4676
7996
4569
7236
4574
7742
4470
8022
4480
7292
4468
7771
4380
8052
4403
7296
4514
7778
4514
8074
4362
7299
4397
7779
4448
8097
4488
7344
4648
7786
4661
8112
4375
7354
4580
7789
4631
8138
4990
7386
4333
7791
4707
8179
4210
7410
4263
7796
4194
8204
4368
4407472
4484
7805
4465
8223
4406
7505
4683
7806
4507
8241
4438
7518
4546
7811
4510
8271
4452
7538
4911
7811
4252
8276
4478
Лучший из известных автору результатов (4125) приведен в работе [57].
48
7589
4636
7811
4463
8307
4397
7606
4695
7814
4795
8323
4519
7608
4340
7829
4454
8337
4292
7613
4717
7839
4884
8356
4726
7614
4422
7839
4886
8357
4521
7616
4341
7843
4607
8418
4417
7623
4526
7848
4447
8425
4607
7636
4398
7858
4710
8435
4697
7641
4721
7878
4455
8459
4545
7652
4496
7893
4502
8556
4423
7657
4350
7908
4406
8729
4398
7671
4491
7910
4531
8787
4502
7677
4669
7955
4481
–
–
В рамках эксперимента методом вектора спада была решена одна практическая задача
разбиения. Множество из 96 корпусов интегральных схем было разбито на два равных подмножества. Число разорванных цепей при этом было равно 43. Решение этой задачи опытным конструктором дало результат, равный 99. Этот пример свидетельствует о высокой эффективности алгоритма.
Эксперимент по решению ряда практических задач размещения описан в разделе 2.4
(таблица 2.1). Эти данные также подтверждают вывод о том, что нет прямой зависимости
значения критерия в точке приближенного решения от его значения в точке начального приближения. В описанной выше таблице 2.6 приведены результаты эксперимента по решению
задач расписания.
Результаты проведенного эксперимента позволяют считать эффективность алгоритма
вектора спада высокой.
Метод Монте–Карло. Если обозначить T1  n  – число операций, необходимых для
вычисления целевой функции, а m – число бросаний, то вычислительная сложность алгоритма будет тогда равна O  mT1  n   .
В описанной выше таблице 2.1 приведены результаты эксперимента по решению задачи размещения при значениях m от 10 до 400 и n – от 20 до 60.
В таблице 2.11 приведены результаты эксперимента по решению квадратичных задач
о назначениях при m =10. Кроме того, выборочно были решены некоторые из этих задач при
m =1000.
Таблица 2.11
n
10
20
30
40
50
60
70
80

–1,98
–2,95
–2,10
–0,63
–1,15
–1,34
–1,72
–1,04
t
0,4
0,9
1,6
2,6
3,9
5,5
7,0
8,9
49
Время счета при этом увеличилось в 100 раз, а максимальная точность  составила величину –4,37.Эти данные дают основание заключить, что метод Монте–Карло имеет смысл применять только для построения начального приближения.
Метод среднего значения. Как было показано выше, временная сложность алгоритмов этого метода для линейной задачи о назначениях и задачи о коммивояжере составляет
O  n 2  , а для квадратичной задачи – O  n3  . В таблице 2.12 приведены результаты экспери-
мента по решению этих трех задач методом среднего значения. Кроме того, этим методом
были решены первая и вторая задачи Карпа с результатами, соответственно f  13709 ,  
–11,521 и f  2012,   7, 641.
Таблица 2.12
n
Линейная задача Задача о коммивояжере Квадратичная задача
о назначениях
о назначениях

t

t

t
10
–3,97
0,0
–3,82
0,0
–3,68
0,2
20
–6,03
0,1
–5,61
0,1
–6,74
1,1
30
–8,12
0,1
–7,89
0,1
–8,39
3,5
40
–9,17
0,2
–9,03
0,2
–9,82
8,5
50
–10,70
0,2
–10,42
0,3
–12,50
15,3
60
–11,98
0,4
–11,73
0,4
–13,83
24,6
70
–12,62
0,5
–12,81
0,5
–15,00
41,0
80
–14,05
,07
–13,94
0,7
–15,79
55,9
90
–14,59
,09
–14,70
0,9
–18,85
80,1
100
–15,45
1,0
–15,77
1,1
–19,25
106,5
110
–16,36
1,3
–16,39
1,3
–
–
120
–17,47
1,5
–17,28
1,5
–
–
130
–18,00
1,9
–18,43
1,8
–
–
140
18,62
2,0
19,04
2,0
–
–
В приведенной выше таблице 2.1 приведены результаты эксперимента по решению
ряда задач размещения.
Чтобы получить более полное представление о точности решения, которая характеризуется величиной  , был проведен эксперимент по решению задачи о назначениях венгерским алгоритмом [29]. Результаты этого эксперимента представлены в таблице 2.13. Сравнивая приведенные данные с результатами эксперимента по решению этих задач другими
методами, приходим к выводу, что метод вектора спада и метод среднего значения позволяют получить решение, которое гораздо ближе к минимуму, чем к среднему.
Для сравнения предлагаемых алгоритмов с известными алгоритмами было решено
выбрать приближенный алгоритм малой трудоемкости. Этому требованию удовлетворяет
G  алгоритм для решения задачи о коммивояжере, предложенный и исследованный в работе
[26]. Трудоемкость этого алгоритма составляет O  n3  . В таблице 2.14 приводятся результа-
50
ты эксперимента по решению этим алгоритмом тех же задач, что и предложенными в диссертационной работе алгоритмами (см. таблицы 2.8 и 2.12) . Сравнение трех таблиц показывает, что при решении задачи о коммивояжере алгоритмы методов вектора спада и среднего
значения и G –алгоритм сравнимы по точности решения.
Таблица 2.13
t
n
n

f
Таблица 2.14
t

10
1,432
–4,32
0,1
10
–3,08
0,0
20
1,613
–6,53
0,5
20
–4,94
0,2
30
1,430
–8,62
2,5
30
–7,55
0,7
40
1,488
–9,93
4,0
40
–8,63
1,5
50
1,324
–11,39
6,7
50
–10,46
3,0
60
1,467
–12,57
14,5
60
–11,72
5,0
70
1,439
–13,74
23,6
70
–12,8
7,8
80
1,543
–14,70
29,4
80
–13,92
11,7
90
1,495
–15,76
35,0
90
–14,87
16,8
100
1,517
–16,56
51,7
100
–15,5
23,2
110
1,438
–17,58
61,5
110
–16,47
31,2
120
1,574
–18,37
75,6
120
–17,69
40,3
130
1,500
–19,20
101,5
130
–18,33
51,8
140
1,453
–19,98
126,6
140
–19,29
67,7
Проанализировав в целом результаты проведенного эксперимента, можем сделать
общий вывод о том, что каждый из алгоритмов имеет, по сравнению с другими, свои преимущества и недостатки, которые определяют его место в процессе решения задач, что указано ниже в кратких выводах к главе.
РЕЗУЛЬТАТЫ И КРАТКИЕ ВЫВОДЫ К ГЛАВЕ 2
1. Предложенная в работе схема метода ветвей и границ применима для решения всех
типов задач, изучаемых в работе. Доказана корректность построенных нижних оценок.
2. Показана эффективность предложенного кольцевого генератора вариантов по сравнению с линейным в методе вектора спада. Показано, что временная сложность алгоритма
равна O  T1  n   .
3. Доказано, что предложенный способ генерации случайных перестановок в алгоритмах метода Монте–Карло обеспечивает их равномерное распределение по множеству P .
4. Доказано, что временная сложность алгоритмов метода среднего значения при решении линейной задачи о назначениях и задачи о коммивояжере равна O  n 2  , а квадратичной задачи о назначениях – O  n3  .
5. Комплекс алгоритмов, состоящий из метода ветвей и границ, метода вектора спада,
метода Монте–Карло и метода среднего значения является эффективным средством для ре-
51
шения изучаемых задач. Место каждого алгоритма в этом комплексе определятся следующим образом:
– метод ветвей и границ целесообразно применять для решения задач небольшой размерности, когда требуется точное решение;
– метод среднего значения применяется для быстрого получения решения с довольно
высокой точностью;
– метод Монте–Карло применяется для получения ряда начальных приближений;
– метод вектора спада применяется для уточнения решения, полученного другими
методами.
Download