Эвристический алгоритм определения главных граней при решении задачи линейного программирования

УДК 519.852.67

И.Ю. ГРИШИН, канд. техн. наук, РВУЗ "КГУ"

ЭВРИСТИЧЕСКИЙ АЛГОРИТМ ОПРЕДЕЛЕНИЯ ГЛАВНЫХ

ГРАНЕЙ ПРИ РЕШЕНИИ ЗАДАЧИ ЛИНЕЙНОГО

ПРОГРАММИРОВАНИЯ

Рассмотрен алгоритм определения внутреннего многогранника из множества вложенных выпуклых многогранников, заданных системой линейных неравенств. Такой алгоритм может эффективно использоваться при решении задачи линейного программирования методом главных граней, являющего реальной альтернативой симплекс-методу. Приведен пример применения алгоритма, показана его вычислительная эффективность.

Ключевые слова: алгоритм, многогранник, система линейных неравенств, задача линейного программирования, симплекс-метод.

Постановка проблемы. Известен метод решения задачи линейного программирования [1, 2], позволяющий находить гипергрань многогранника, на которой находится точка оптимума. После замены одного из линейных ограничений-неравенств равенством осуществляется снижение размерности исходной задачи и определяется следующая гипергрань, содержащая оптимальное решение. Эта гипергрань является смежной с ранее найденной. Однако при снижении размерности задачи часть из исходных ограничений-неравенств может стать несовместными, что приводит к неправильному определению очередной главной грани и, как следствие, к неверному нахождению оптимальной точки. В общей постановке задача нахождения граней, смежных с заданной гранью (или задача определения внутреннего многогранника из множества вложенных выпуклых многогранников, заданных системой линейных неравенств) в настоящее время не решена [3]. Поэтому имеет смысл использовать достаточно простые эвристические алгоритмы последовательного определения главных граней.

Анализ литературы. Широко известен метод определения совместности системы линейных уравнений [4], состоящий в вычислении ранга матрицы системы и сравнении его с количеством переменных. Данный метод может быть применен и для решения задачи линейного программирования после приведения имеющихся ограничений-неравенств к ограничениям-равенствам. Однако с вычислительной точки зрения этот метод неэффективен, поскольку количество операций, необходимых для его реализации, зависит экспоненциально от размерности задачи и количества ограничений. В работе [5] изложен метод и алгоритм определения совместности систем линейных неравенств, однако он тоже малоприменим для систем большой размерности вследствие своей высокой вычислительной трудоемкости.

Цель статьи - предложить практически реализуемый алгоритм определения совместности систем линейных неравенств для нахождения смежных гиперграней с целью его применения в методе главных граней решения задачи линейного программирования.

Основы эвристического алгоритма. Главная грань и грани смежные с ней [6] показаны на рисунке. При проекции на координатные плоскости смежные грани выбираемой главной грани образуют грани внутреннего многогранника. Прямая, проведенная через внутреннюю точку Р этого многогранника параллельно оси координат, пересекает его грани в точках, имеющих минимальное (по модулю) расстояние по оси координат до точки Р.

Рис. Главная и смежные с ней грани

Поиск оптимальных (квазиоптимальных) решений предложенным способом рассмотрим на примере. В качестве внутренних точек на следующей итерации целесообразно брать точки пересечения этих прямых с выбираемой гиперплоскостью Ьк и проецировать их на координатную плоскость, нормаль которой наиболее близка к нормали грани Ьк, то есть коэффициент при

соответствующем х}- в уравнении гиперплоскости Ц должен быть

наибольшим по модулю.

Для наглядности коэффициенты целевой функции и неравенств записаны в виде таблиц коэффициентов (табл. 1, 2, 4, 5). В таблицах расстояний (табл. 3) в строках даны значения координат х}- точек пересечения прямой Х'^,

параллельной оси X^, с соответствующими гиперплоскостями. Координаты

смежных граней, имеющих наименьшую удаленность по прямым от точки Р , подчеркнуты.

Пример. Решить задачу распределения ресурсов (предполагается, что исходная система неравенств совместна и не содержит лишних ограничений).

Найти тах г = 3х1 + 4х2 + 8х3 + 5х4 +12х5 + 2х6, п =(3, 4, 8, 5, 12, 2) при ограничениях

Ц : 3х + 2х2 — х + 6х4 + х + х — 24, п = (3, 2, — 1, 6, 1, 1) ;

Ц : х + 6х2 + х + 2х6 —18, п2 = (1, 6, 1, 0, 0, 2);

Ц : х4 + 2х5 —12, п = (0, 0, 0, 1, 2, 0) ;

Ц : 3х4 + х5 —12, п4 = (0, 0, 0, 3, 1, 0) ;

Ц : 2х + X + х — 24, п5 = (2, 1, 1, 0, 0, 0) ;

Ц : 2х + х + 3х6 — 36, п6 = (0, 0, 2, 0, 1, 3) ;

Ц6+] : — х] — 0 ] =1,6 •

В табл. 1 представлена запись исходной задачи.

Таблица 1

Исходная задача

х1 х2 х3 х4 х5 х6

г 3 4 8 5 12 2

А 3 2 -1 6 1 1 24

Ц2 1 6 1 0 0 2 18

4 0 0 0 1 2 0 12

Ц4 0 0 0 3 1 0 12

Ц5 2 1 1 0 0 0 24

4 0 0 2 0 1 3 36

Ь : х4 = 12 — 2х5

Ью : х5 — 6

На первой итерации находится первая главная грань. Вычисляется проекция по формуле рг^ п = _п ^. Максимальное значение имеет

_ 5 + 24 29 , „ _

ргщП = = —^=, то есть первая главная гипергрань 13: х4 + 2х5 = 12.

Исключается переменная х4 = 12 - 2х5. В результате получена табл. 2.

Таблица 2

Исключена переменная х4

х1 х2 х3 х5 хб

2 3 4 8 2 2

3 2 -1 -11 1 -48

Ц2 1 6 1 0 2 18

Ц.0 0 0 0 1 0 6

Ц4 0 0 0 -5 0 -24

Ц5 2 1 1 0 0 24

Цб 0 0 2 1 3 36

^2 : 6х2 = 18 — х1 — х3 — 2х6

^8 : —18 + х1 + х3 + 2хб ^ 0

На второй итерации через внутреннюю точку Р (1, 1, 1, 5, 2) проводятся

прямые Х^, параллельные осям Хг, Х2, Х3, Х5, Хб. Подставляя

координаты точки Р , находятся координаты точек пересечения этих прямых с

гиперплоскостями /.,....../,б И координатными ПЛОСКОСТЯМИ /,7......../,, 2 . По

координатам точек определяются ближайшие, то есть смежные грани.

Например, для определения точек пересечения прямой Х '6 с гиперплоскостями подставляются в уравнения табл. 2 значения

Х1 = х2 = X = 1, X = 5 •

Тогда для гиперплоскостей Ц , Ь2, Ь6:

Ц : 3-1 + 2-1 -1-1-11-5 + 1- х6 = 48 ^ х6 = 3 ;

Ц? : 1-1 + 6 -1 + 1-1 + 2 - Хб = 18 Хб = 5 ;

Ц : 2 -1 + 1- 5 + 3- х = 36 ^ хб =

29

3

Решая аналогичные уравнения для Ц, Ь5, Ц0 получаем хб =

Расстояние от точки Р до гиперплоскости по прямой X- равно Sj = |х- - х°|, где х0 - значение координаты точки Р . Минимальное расстояние Sj соответствует минимальному значению х- при х  > х° и максимальному значению х- при х- < х°. Каждая прямая X'- пересекается только с одной координатной плоскостью Ь6+- (х- = 0), поэтому координата

точки пересечения х- = 0 , Sj = |х- - х0| = х'0 .

Для прямой X- значение х° = 2 и минимальные расстояния до точки Р по прямой X6 имеют гиперплоскости Ц (х6 = 3 , S6 = |3 - 2\ = 1) и Ц (х6 = 0 , S6 = |0 - 2 = 2). Аналогично могут быть вычислены расстояния до гиперплоскостей по прямым X-, X-, X-, X-. Результаты вычислений приведены в табл. 3.

Таблица 3

Расстояния до гиперплоскостей на второй итерации

Ц X - \ 4 4 40 4 4 4 4+-

X; 1,33 7 да да 11 да 0

X 2 15 2 да да 21 да 0

X 3 0 7 да да 21 12,5 0

X 5 4,3 да 6 4,8 да 28 0

X 6 3 5 да да да 29/3 0

Из табл. 3 следует, что с гранью Ц являются смежными грани Ц, Ц,

/,7... /,|0. /,|2. Из смежных граней максимальную величину проекции

РП п = 5,68 имеет грань Ц. Исключается переменная х2, так как в уравнении Ц коэффициент при ней максимален. В результате получаем соотношение 6х2 = 18 - х - х - 2х6 и после второй итерации имеем табл. 4.

Произведя аналогичные вычисления для других граней получим табл. 5.

Из табл. 5 следует, что оптимальным решением является х5 = 4,8, а далее могут быть найдены остальные значения оптимального решения:

х1 = 0,5х5 = 2,4 ; х3 = 18-1 х5 = 15,6 ;

хб = 12 — 2 х3 — 1 х5 = 0 ; х2 = 0 ; х4 = 12 — 2х5 = 2,4 ;

2^ = 201,6 .

Таблица 4

Исключена переменная х2

х1 хз х5 х6

2 7 22 6 2

4 8 -4 -33 1 -162

4 1 1 0 2 18

4о 0 0 1 0 6

4 0 0 -5 0 -24

4 11 5 0 3 126

к 0 2 1 3 36

4: 3х6 = 36 — 2х3 — х5

42 : 2хз + х5 — 36 < 0

Таблица 5

Исключена переменная хг

х5

2 -4,5

4 -40,5 -135

4 -2 0

40 1 6

4 -5 -24

4 9 108

4 1 36

Ь4 : х5 = 4,8

В том случае, когда грани с наибольшими значениями величин проекций не входят в список смежных, целесообразно выбирать их главными и искать смежные к ним грани. Например, на второй итерации грани Ь5, £6 не определены как смежные к грани £3. Однако, взяв их смежными вместо грани

£3, может быть определено, что грань £3 будет смежной как к грани Ь5, так и к грани Ь6.

Далее, используя полярный многогранник, могут быть найдены пары несмежных гиперграней: (Ц, Ь6), (Ь4, Ь5), (Ь5, Ь6), (Ь5, Ь7), (Ь6, Ь9), (Ь4, ^0), (Ь3, Ь11). Приведенные результаты согласуются с данными табл. 3, 5.

Программа для ЭВМ, реализующая предлагаемый метод, включает в себя девять достаточно простых процедур, что позволяет легко её адаптировать для решения конкретных оптимизационных задач. Реализация программы осуществляется в два этапа. На первом этапе выполняются п — 1 итерация поиска главных граней, аналогичная рассмотренному примеру. В результате формируется треугольная матрица коэффициентов уравнений главных граней путем перенумерования строк и столбцов исходной матрицы. На каждой итерации последовательно вызываются пять процедур, выполняющих над матрицей ограничений-неравенств следующие операции:

1. Производится определение смежных граней по признаку наименьшего удаления по прямой Х'^ до внутренней точки. При этом осуществляется

формирование массивов признаков смежных граней, расстояний ^ и

индексов прямых Х^-. Эти данные используются для вычисления внутренней

точки на следующей итерации.

2. Вычисляются проекции ргпп вектора п на вектора п .

3. Производится определение разрешающей строки по признаку минимальной проекции и осуществляется обмен номерами двух строк в матрице ограничений-неравенств с присвоением разрешающей строке номера 1.

4. Осуществляется преобразование матрицы ограничений и строки коэффициентов целевой функции путем вычитания разрешающей строки из последующих строк с обнулением первого столбца. Данная процедура соответствует прямому ходу решения системы линейных уравнений методом Гаусса. Далее первая строка исключается из матрицы ограничений и добавляется к матрице главных граней.

На втором этапе последовательно выполняются две процедуры:

1. Производится расчет последней, п -й итерации.

2. Осуществляется преобразование полученной треугольной матрицы главных граней по формулам обратного хода метода Гаусса.

Исходные данные должны быть подготовлены в виде файла соответствующей структуры, тогда главная программа вначале запускает процедуру присвоения начальных значений на основе информации такого файла.

Следует отметить, что выбор несмежной грани приводит к несовместности системы линейных ограничений. В работе [7] показано, что

вычислительная трудоемкость строгих алгоритмов определения совместности имеет полиномиальную сложность. Следовательно [8], алгоритм метода главных граней имеет сложность, не превосходящую полиномиальную.

Выводы. В результате проделанной работы предложен новый алгоритм определения главных граней при решении задачи линейного программирования, имеющий эвристический характер.

Предложенный алгоритм в совокупности с методом главных граней имеет полиномиальную сложность и может явиться альтернативой симплекс-методу.

Следует учесть, что с помощью эвристического алгоритма можно с определенной вероятностью найти неоптимальную смежную грань, что даст квазиоптимальную точку решения задачи линейного программирования. Однако очевидно, что такая точка может служить исходной вершиной для определения, например, симплекс-методом, оптимальной вершины за конечное число итераций. Данный подход рационален и возможен благодаря свойству устойчивости предлагаемого алгоритма.

Список литературы: 1. Grishin I., Potapov G. Linear programming: a new polynomial-time algorithm // Вісник Східноукраїнського національного університету ім. В. Даля. - Луганск: СНУ. - 2007. -№1 С107). - С. 113-119. 2. Grishin I., Potapov G. A new polynomial-time algorithm for linear programming / The 5th International conference IT&M Information technologies and management. Programme and Theses. Riga, Latvia, April 12-13, 2007. - P. 45-4б. 3. Ашманов С.А. Линейное программирование. - М.: Наука, 1981. - 340 с. 4. Черников С.Н. Линейные неравенства. - М.: Наука, 1968. - 488 с. 5.ХачиянЛ. Г. Сложность задач линейного программирования. - М.: Знание, 1987. - N°. 10. 6. Потапов Г.Г., Грішин І.Ю. Вирішення задачі лінійного програмування методом послідовного визначення головних гіперграней / Ден. В ДНТБ України, реф. в РЖ "Депоновані наукові роботи", 2007. - № 1-2. - 10 с. 7. Поляк Б.Т. Рандомизированные алгоритмы решения выпуклых неравенств // Межвузовский сборник "Стохастическая оптимизация в информатике". -С.-Петербургский гос. университет, 2005. - С. 150-1б9. 8. Ахо А., Хопкрофт Дж, Ульман Дж. Построение и анализ вычислительных алгоритмов. - М.: Мир, 1979. - 536 с.

УДК 519.852.67

Евристичний алгоритм визначення головних граней при вирішенні задачі лінійного програмування / Грішин І.Ю. // Вісник НТУ "ХПІ". Тематичний випуск: Інформатика і моделювання. - Харків: НТУ "ХПІ". - 2008. - № 49. - С. 33 - 41.

Розглянутий алгоритм визначення внутрішнього многогранника з множини вкладених опуклих многогранників, заданих системою лінійних нерівностей. Такий алгоритм може ефективно використовуватися при вирішенні задачі лінійного програмування методом головних граней, що робить його реальною альтернативою симплекс-методу. Приведений приклад використання алгоритму, показана його обчислювальна ефективність. Іл.: 1. Табл.: 5. Бібліогр.: 8 назв.

Ключові слова: алгоритм, многогранник, система лінійних нерівностей, задача лінійного програмування, симплекс-метод.

UDK 519.852.б7

Heuristic algorithm of main verges determination at the decision of linear programming task / Grishin I.Y. // Herald of the National Technical University "KhPI". Subject issue: Information Science and Modeling. - Kharkov: NTU "KhPI". - 2008. - №. 49. - P. 33 - 41.

The algorithm of determination of internal polyhedron is considered from the great number of the inlaid protuberant polyhedrons, linear inequalities set the system. Such algorithm can be effectively used for the decision of task of the linear programming of main verges a method, showing the real alternative to the simplex-method. The example of application of algorithm is resulted, its calculable efficiency is rotined. Figs: 1. Tabl.: 5. Refs: 8 titles.

Keywords: algorithm, polyhedron, set of linear inequalities, the linear programming task, simplex-method.

Поступила в редакцию 10.04.2008