Узбекистан, nukus, qmu, 2013 |
Лекция 6: Некоторые задачи нелинейного программирования и нахождение опорного плана для задачи линейного программирования
Параллельное решение задач НП при линейных ограничениях
Пусть решается задача
f(x1, ... ,xn) -> max
при ограничениях
g1(x1, ... ,xn) >= 0
g2(x1, ... ,xn) >= 0
...
gm(x1, ... ,xn) >= 0
и при условиях: gi — линейны, xi >= 0, i = 1, ... ,m.
Предположим, что гиперплоскости gi, i = 1, ... ,m, возможно, совместно с координатными плоскостями, образуют в n -мерном пространстве выпуклый многогранник R допустимых решений, т.е. область задания функции f.
Определим, как и ранее, все вершины {X1, ... ,Xn}, Xl =(x1(l) , ... ,xn(l) ), l = 1, ... ,N, этого многогранника в результате решения Cm + nn систем n линейных уравнений на основе всех заданных и возможных его граней




Т.е., задавая разные значения k1, k2, ... ,k_{N-1} так, чтобы выполнялось условие 0<= kl <= 1, так же как и для

Распараллеливание возможно на двух этапах решения:
- Распределение систем линейных уравнений между процессорами для нахождения всех вершин многогранника допустимых решений. (Эквивалентно прямому перебору при решении задачи линейного программирования.)
- Распределение между процессорами узлов сетки — точек многогранника допустимых решений для нахождения и анализа в них значений целевой функции.
Метод допускает развитие и совершенствование.
Например, движение в сторону возрастания функции f может быть направленным, определяемым с помощью конечно-разностных значений частных производных по параметрам kl в точке текущего анализа функции f. Это вариант так называемого градиентного метода. Эти же значения частных производных могут определять переменный шаг h.
Пример (рис. 6.1)
f(x,y)=x2+y -> max
при ограничениях
-x-2y+12 >= 0
-3x-y+21 >= 0
и при условии x,y >= 0.
Решая попарно уравнения границ, находим
Xl=(0,0), X2=(0,6), X3=(6,3), X4=(7,0).
Уравнение многогранника R:

Пусть h — шаг изменения каждого ki для получения испытываемой точки X многогранника R. Будем перебирать точки
k1 = 0, k2 = 0, k3 = 0 ( тем самым k4 = 1);
k1 = h, k2 = 0, k3 = 0 (k4 = 1-h);
k1 = h, k2 = h, k3 = 0 (k4 = 1-2h);
k1 = h, k2 = h, k3 = h (k4 = 1-3h);
k1 = 2h, k2 = h, k3 = h (k4 = 1-4h);
...
Однако нам надо следить, чтобы величина k4 = 1 - k1 - k2 - k3 оставалась неотрицательной.
Выполнив такой перебор, например, для h = 0,1, получим max f(x,y) = f*(k1 = 0, k2 = 0, k3 = 0, k4 = 1) = f(7,0) = 49.