МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ
По-прежнему остается открытым вопрос исчерпывающего описания множества решений СЛН. Проблемы настройки нейросетей также остаются за рамками данной статьи.
Библиографический список
1. Балакин, Г.В. Методы сведения булевых уравнений к системам пороговых соотношений / Г.В. Балакин, В.Г. Никонов // Обозрение прикл. и про-мышл. матем., сер. «Дискр. матем.». - 1994. - Т 1. - Вып. 3. - С. 389-401.
2. Гаврилкевич, М. Введение в нейроматематику / М. Г аврилкевич // Обозрение прикл. и промышл. матем., сер. «Дискр. матем.». - 1994. - Т. 1. - Вып.
3. - С. 377-388.
3. Григорьев, В.Р. Нейронные сети и клеточные автоматы / В.Р. Григорьев // Обозрение прикл. и промышл. матем., сер. «Дискр. матем.». - 1994. - Т. 1.
- Вып. 3. - С. 357-376.
4. Ежов, А. Нейрокомпьютинг и его применения в экономике и бизнесе (серия «Учебники экономико-аналитического института МИФИ») / А. Ежов, Б. Шумский. - М.: МИФИ, 1998.
5. Никонов, В.Г. Пороговые представления булевых функций / В.Г. Никонов // Обозрение прикл. и промышл. матем., сер. «Дискр. матем.». - 1994. - Т. 1.
- Вып. 3. - С. 402-457.
6. Рыбников, К.К. Прикладные задачи, сводящиеся к анализу и решению систем линейных неравенств. Метод разделяющих плоскостей / К.К. Рыбников, В.Г. Никонов // Вестн. Моск. гос. ун-та леса - Лесной вестник. - 2002. - № 2(22). - С. 191-195.
ГРАДИЕНТНЫЙ АЛГОРИТМ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ НЕРАВЕНСТВ С К-ЗНАЧНЫМИ НЕИЗВЕСТНЫМИ
В.Г. НИКОНОВ, действительный член РАЕН, доктор технических наук П.Н. СИТНИКОВ, сотрудник лаборатории «ТВП», Москва.
Р
ассматривается задача поиска решений системы линейных неравенств
an x + an x2 + ... + aXn xn < b
< . . . (1)
a,x,+ am2 x9 + ... + amnxn < b ^ m1 1 m2 2 mn n m
действительные, x. e 0,1 ,... k - 1.
гДе aF
К анализу и решению систем (1) сводится широкий класс прикладных задач дискретной математики [2, 3, 5].
Для решения системы (1) в случае, когда неизвестные х. - двоичные, Э. Балашем был разработан алгоритм направленного перебора, получивший имя автора [1, 4, 7]. Для обоснования алгоритма Э. Балаш ввел понятие невязки p(x) системы на произвольном векторе х, определив ее суммой разностей левых и правых частей тех неравенств системы, которые не выполняются при подстановке в них данного вектора
p( x) = Zft (^,
i=1
(2)
где
Алгоритм стартовал из вектора (0,0,...,0) и на первом шаге переходил в тот вектор (0,..1,..,0), на котором минимизировалась невязка системы. Затем проставлялась вторая единица и также выбирался вариант вектора, в котором невязка была наименьшей. Далее логика алгоритма повторялась до того момента, когда находилось решение системы, либо алгоритм попадал в так называемую тупиковую точку, когда любой вариант проставления очередной единицы приводил к увеличению невязки в сравнении с невязкой на предыдущем шаге.
Известны различные способы выхода из тупиковой точки, например предложенный автором Э.Балашем возврат назад с запретом перехода на предыдущем шаге в ту вершину, которая породила тупиковую точку (из оставшихся также выбирается вариант, минимизирующий невязку).
Алгоритм Балаша показал свою эффективность для большого числа прикладных задач. Основным его недостатком является принципиальное отсутствие каких-либо оценок эффективности, кроме эмпирических, в силу наличия частных случаев
ЛЕСНОЙ ВЕСТНИК 2/2008
115
МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ
систем (1), для которых алгоритм Балаша приближается к перебору всех вариантов решений.
Переход от двоичных переменных к к-значным приводит к значительному усложнению задачи. Уже на первом шаге у вектора (0,0,...,0) оказывается не «и», а «п(к - 1)» соседних векторов, так как выделенной переменной можно придать уже «к - 1» возможных значений. Алгоритм, построенный на рассмотрении всех соседних векторов (на первом шаге «п(к - 1)») и выделении оптимального по невязке, назовем базовым (алгоритм № 1).
Вместе с тем анализ строения систем неравенств (1) и поведения невязки (2) позволяет в k-значном случае значительно сократить число опробуемых вариантов. При этом на первом шаге, так же как в алгоритме Ба-лаша для систем с булевыми переменными, рассматриваются векторы (0,..,1,..,0) с проставлением на v-м месте не произвольного значения s е 0,1,..., к -1, а лишь значения s = 1.Выделяется тот вариант v, при котором минимизируется значение невязки (2). Изменение переменной xv оказывается наиболее «чувствительным» для невязки системы, что делает обоснованным следующий этап алгоритма: доопределение значения x Для этого сразу после выделения v рассматриваются все векторы вида (0,..,1,..,0), (0,..,2,..,0) ,..., (0,..,к-1,..,0) и среди них выделяется тот, на котором минимизируется невязка. И только после нахождения оптимального в смысле невязки варианта переменной xv алгоритм переходит к простановке следующей «1», выделению наиболее влиятельной переменной из оставшихся и ее доопределению. На последующих шагах алгоритм индуктивно повторяет данную процедуру.
Представленный алгоритм назовем градиентным алгоритмом решения систем линейных неравенств путем последовательного нахождения неизвестных (алгоритм №2). Название отражает внутреннюю логику алгоритма, когда первоначально выделяется переменная, изменение которой приводит к наибольшему снижению невязки, а затем выбирается ее окончательное значение, оптимизирующее невязку.
Приемы выхода из тупиковых точек для алгоритма в к-значном случае аналогичны предложенным в булевом случае и включают возврат на шаг назад или случайное изменение координат тупиковой точки.
Необходимо отметить, что при нахождении решения некоторых классов систем линейных неравенств не возникает тупиковых ситуаций. Для них удалось получить оценку трудоемкости работы как базового, так и модифицированного алгоритма. Прежде чем говорить о таких классах систем, введем для систем неравенств с к-значными переменными понятие монотонного шага алгоритмов №1 и №2 [1]. Определение 1
Назовем i-й шаг алгоритмов №1 и №2 монотонным, если все неравенства, выполняющиеся на предыдущем шаге, выполняются и на (i + 1) шаге.
Определение 2
Назовем систему (1) монотонной относительно алгоритмов № 1 и № 2, если все шаги алгоритмов при нахождении решения являются монотонными.
Частным случаем монотонной системы является система с матрицей, удовлетворяющая свойству
sign(a.) = const (3)
при фиксированном j и произвольном i. Утверждение 1
Если матрица системы (1) обладает свойством (3), то она монотонна относительно 1 и 2 алгоритмов.
Доказательство
Очевидно, что путем инвертирования переменных систему (1) при условии (3) можно свести к системе с неотрицательной матрицей A и правой частью b
Ax > b. (4)
Покажем, что система (4) будет являться монотонной. Пусть x - приближение решения на t-ом шаге, и первые r неравенств выполняются. Покажем, что они будут выполняться и на t + j при любом j. В силу неотрицательности коэффициентов матрицы A х для любого t + j приближения
Х11 > ю* А >b,*=1,r,
j =1 j1=1
где xt+j и xt - это t + j и t приближения решения соответственно.
116
ЛЕСНОЙ ВЕСТНИК 2/2008
МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ
Утверждение доказано.
Утверждение 2
Если система (1) совместна, а матрица A удовлетворяет условиям (3), то при нахождении решения алгоритмами 1 и 2 не возникает тупиковых ситуаций.
Доказательство
Согласно предыдущему доказательству система (1) при условиях (3) приводится к виду (4) и является монотонной. Для доказательства утверждения достаточно показать, что невязка не будет возрастать на каждом шаге. Пусть на t-м шаге х0 приближение решения, а невязка равна
т
р'=1р', р'=-
w
Ь, -2>у -Xj ,еслиХд -Xj -/> <()
>i >i
О в противном случае.
Покажем, что pt+1 < pt.
В силу положительности коэффициентов и монотонности системы
t+1 1 t+1 ^ > t t
р =Ер, <!р- =р .
i=1 i=1
Мы показали, что невязка в данном случае не возрастает от шага к шагу и тупиковых ситуаций не возникает.
Утверждение доказано.
Модифицированный алгоритм несет в себе значительные выгоды в сравнении с базовым. Действительно, в предположении отсутствия тупиковых точек, трудоемкость базового алгоритма W1 оценивается суммой
n П
W=l(n-/)k «к-, (5)
i=1 2
а трудоемкость предложенного градиентного алгоритма
n П
W2 =E(n-i+к) « kn +—, (6)
i=1 2
где k-размерность логики переменных, а n-количество неизвестных.
Приведем пример работы градиентного алгоритма в отсутствии тупиковых точек._ Пример 1
Рассмотрим систему неравенств сдвигового типа, в которой х. е {0,1,2,3}, i=1,7, а переменные xv с номерами v > 8 рекуррентно выражаются через х1,...,х7 по формуле
X8+i = X+i + X2+i (m0d 4). (7)
X + x2 + x• x2 < 2 x2 + x + x2 • x < 4 x2 + x. + x2 • x. > 3 X. + x4 + x. • x4 > 8 x4 + x5 + x4 • x5 < 7 x4 + x5 + x4 • x5 > 5 x5 + x6 + x5 • x6 < 2 x6 + x + x6 • x7 < 4 x6 + x + x6 • x7 > Ъ
+ x +x7 • x < 7 (8)
x + xj + x7 • x > 5 x + x + xj • x < 7 x + x + x • x > 5 x + X0 + x • X0 < 7 x + X0 + x • X0 > 5
X0 + X1 + X0 • X1 < 7 X0 + X1 + X0 • X1 > 5
XI + X2 + X1 • X2 < 7 ,X1 + X2 + X1 • X2 > 5
В целом система (8) зависит от первых 7 переменных в силу формулы (7).
Для решения системы (5) используем градиентный алгоритм последовательного нахождения неизвестных. Выпишем векторы, получаемые в ходе работы алгоритма, и соответствующие им значения невязки p.
Г 1,0,6*0,0,0,01”
О
[ 0,0,0,0,0,0,0 1 |р=44|
[0,1,0,0,0,0,01 [Р=39]
[0,0,1,0,0,0,01 р=з7
[ 0,0,0,1,0,0,01 р=37
[0,0,0,0,0,0,11
, р=42 [0,0,0,0,0,1,01 ' fP=42l
[0,0,0,0,1,0,0]
\р=щ
На следующем шаге работы алгоритма используем вектор (0010000), поскольку у него минимальное значение невязки (р = .7) среди всех рассмотренных векторов. Опробуем в качестве третьей координаты 2 и ..
ЛЕСНОЙ ВЕСТНИК 2/2008
117
МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ
Так как для вектора (0020000) значение невязки p = 29, для (0030000) p = 27, зафиксируем 3 в качестве третьей координаты вектора-решения. Аналогично, выбирая минимальную невязку, будем повторять операции:
Минимизация невязки наблюдается на векторе (0031000), p = 19. Определим оптимальное значение х4:
^0,0,3,3,0,0,oJ
р=22
0,0,3,2,1,0,0
0,0,3,2,2,0,0
Очевидно, что на пятом месте следует фиксировать 1.
Невязка минимизируется на векторе (1032100), переберем варианты для первой координаты.
1,0,3,2,1,0,0
/>=10
2,0,3,2,1,0,0
3,0,3,2,1,0,0
р=13
р=21
Фиксируем 2 на четвертой позиции, продолжаем работу алгоритма для вектора (0032000):
Теперь возьмем вектор (0032100), так как у него минимальная невязка p = 7.
Значит можно фиксировать на первом месте 1.
Минимизация невязки произошла на векторе (1032101). Рассмотрим на седьмой позиции 2 и 3:
1,0,3,2,1,0,1
1,0,3,2,1,0,2
/ I ^
р=1
1,0,3,2,1,0,3
р=0
118
ЛЕСНОЙ ВЕСТНИК 2/2008
МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ
На векторе (1032103) невязка равна 0, значит это и есть искомый вектор-решение.
В процессе решения системы (8) градиентным алгоритмом было проделано 35 итераций (W1 = 35). В то же время выполнение «базового» алгоритма Балаша потребовало бы в лучшем случае совершить W1 = 7-3 + 6-3 + 5-3 + 4-3 + 3-3 = 75 итераций.
Вместе с тем, анализ и решение систем (1) составляют сложную проблему дискретной математики, требующую проведения дальнейших глубоких исследований, прежде всего из-за возможности попадания в тупиковые точки в процессе поиска решений. Проиллюстрируем поведение градиентного алгоритма в случае обнаружения в процессе его работы тупиковой точки.
Пример 2
Используем градиентный алгоритм последовательного нахождения неизвестных для решения системы неравенств, как и в предыдущем примере - сдвигового типа. Переменные ху с номерами v > 8 выражаются через исходные х ..., х7 по формуле (7).
X + 2 х2 < 2
X — 2 х, <—4 х4 > 2
X; - 2 х4 > —3 х4 + 2 х5 > 3 х5 <1
х5 + 2 х6 < 2
х6 + 2 х7 <—4
< х7 + 2х > 3 . (9)
х <1
х — 2 х9 <—4
х + 2 Х0 > 3
х.о <1
Х0— 2 Х1 <—4 X: + 2 Х2 > 3 Х2 <1
^х.2 — 2Хв <—4
В ходе работы алгоритма осуществляется опробование вариантов вектора-решения
х0 =1х10, Х20, х/, Х40, Х50, Х60, Х70), х° е {0,1,2,3,4}, /=1,7 . Выпишем векторы, получаемые в ходе работы алгоритма, и соответствующие им значения невязки р.
Возьмем вектор (0000100), так как у него минимальное значение невязки p = 27. Рассмотрим в качестве пятой координаты 2 и 3.
Так как у вектора (0000200) p = 28, (0000300) р = 31,то зафиксируем 1 на пятой позиции.
Аналогично, выбирая минимальную невязку, будем повторять операции:
Минимизация невязки наблюдается на векторе (0000101), р = 23. Определим оптимальное значение х 0:
6
ЛЕСНОИ ВЕСТНИК 2/2008
119
МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ
Фиксируем 3 на седьмом месте, продолжаем работу алгоритма для вектора (0000103):
Невязка минимизируется на векторе (0021103), переберем варианты для четвертой координаты.
Значит можно фиксировать на четвертом месте 2.
Уменьшения невязки не происходит. Возвращаемся к вектору (0021103), анализируем поведение невязки на соседних векторах.
Теперь возьмем вектор (0010103), так как у него минимальная невязка p = 10.
0,0,2,1,1,0,3 ^3 II 0\
Г *\ 1,0,2,1,1,0,3 ^ 1 /- 0,1,2,1,1,0,3 S. Г л 0,0,2,1,1,1,3
^3 II ^1 ^3 II ^1 р=14
Невязка и в этом случае только увеличивается. Возвращаемся еще на один шаг к вектору (0030103), рассматриваем невязку на соседних наборах
Видно, что на третьем месте следует фиксировать 2.
1,03,0,1,03
Минимизация невязки произошла на векторе (0031103). Рассмотрим на четвертом месте 2 и 3:
120
ЛЕСНОЙ ВЕСТНИК 2/2008