Приближенные методы решения ЗНЛП

Используя градиентные методы, можно найти решение любой ЗНЛП.

Метод Франка-Вульфа применим, если ƒ(x1, x2, …, xn)→max и является вогнутой функцией на выпуклом множестве Ω, т.е.

При условиях ∑aijxj≤bi; i=1;m; xj≥0, то применяется следующий алгоритм:

Найти исходное допустимое решение задачи

Найти градиент функции ƒ

Построить функцию

; найти ее максимальное значение Z(k)

По формуле , где - произвольно, или находится как наименьшее решение уравнения , найти новое приближение х(k).

Проверить необходимость перехода к последующему допустимому решению, приняв в качестве критерия оценки неравенство

. Если неравенство не выполнено, тогда переходим к пункту 2, где x(0)=х (к), в противном случае решение задачи найдено.

Метод штрафных функций применим, если ƒ(x1, x2, …, xn)→max

и ƒ вогнутая на Ω Ω: gi(x1, x2,…, xn)≤bi xj≥0, где gi - выпуклые функции.

Алгоритм метода:

1. Найти исходное допустимое решение задачи

2. Выбрать шаг вычислений

3. Найти и

4. По формуле

Определить координаты точки определяющей новое решение задачи, где αi(x1,x2,…,xn)=0, если bi-gi(x1,…xn)≥0 и αi(x1,x2,…,xn)=αi,

если bi-gi<0 и αi – весовые коэффициенты.

Начинают итерационный процесс при малых αi, постепенно их увеличивая.

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

В случае необходимости переходят к этапу 2, в противоположном случае решение найдено.

6. Устанавливают значение весовых коэффициентов и переходят к этапу 4

Замечание: произвольный выбор значений αi приводит к значительным колебаниям удаленности определяемых точек от области допустимых решений. Этот недостаток устраняется при решении задачи методом Эрроу – Гурвица, согласно которому на очередном шаге числа αi выбирают по формуле: , где αi (0) – произвольное положительное число.

Пример. Найти методом штрафных функций максимальное значение функции f = -x21 – x22

при условиях

(x1–7)2 + (x2 – 7)2 ≤ 18, (14)

x1;x2≥ 0. (15)

Решение. Целевая функция данной задачи представляет собой отрицательно-определенную квадратичную форму и, значит, вогнута. В то же время область допустимых решений задачи, определяемая ограничениями (14) и (15), - выпуклая. Следовательно, данная задача является задачей выпуклого программирования. Для нахождения ее решения применяется метод штрафных функций.

Полагается Х(0) = (6, 7). Берется λ = 0,1. Обозначается через

g (x1, x2) = 18 - (x1 – 7)2 - (x2 – 7)2 и определяются частные производные от функций f (x1, x2) и g (x1, x2) по переменным х1 и х2:

∂f/∂х1 = -2x1;

∂g/∂х1 = -2x1 +14;

∂f/∂х2 = -2x2;

∂g/∂х2 = -2x2 + 14.

Теперь, используя формулу (12), строятся последовательности точек, одна из которых определит приемлемое решение.

I итерация. Так как точка Х(0) = (6, 7) принадлежит области допустимых решений задачи, то второе слагаемое в квадратных скобках формулы (12) равно нулю. Значит координаты следующей точки Х(1) вычисляются по формулам

х1(1) = max {0; x1(0) + λ (∂f (X0)/∂х1)} = max {0; 6 + 0,1 * (-2) * 6} = 4,8;

х2(1) = max {0; x2(0) + λ (∂f (X0)/∂х2)} = max {0; 7 + 0,1 * (-2) * 7} = 5,6.

Проверяется теперь, принадлежит ли эта точка области допустимых решений задачи. Для этого находится g (X(1)) = 18 – 4,48 – 1,96 = 11,2. Так как g (X(1)) > 0, тоX(1) принадлежит области допустимых решений. В этой точке f (X(1)) = -54,4.

II итерация. Находятся

х1(2) = max {0; 0,48 + 0,1 * (-2) * 4,8} = 3,84;

х2(2) = max {0; 0,56 + 0,1 * (-2) * 5,6} =4,48;

g (X(2)) = 18 – 9,9856 – 6,3504 = 1,664 > 0;

f (X(2)) = -34,816.

III итерация. Находятся

х1(3) = max {0; 0,384 + 0,1 * (-2) * 3,84} = 3,072;

х2(3) = max {0; 0,448 + 0,1 * (-2) * 4,48} =3,584;

g (X(3)) = 18 –15,429184 – 11,669056 ≈ -9,0981.

IV итерация. Точка Х(3) не принадлежит области допустимых решений задачи. Следовательно,

х1(4) = max {0; x1(3) + λ [(∂f (X3)/∂х1) + α (∂g (X(3))/ ∂x1)]} = max {0; 3,072 + 0,1 * [(-2) * 3,072 + α [(-2) * 3,072 + 14)]} = max {0; 2,4576 + α * 0,7856};

х2(4) = max {0; x2(3) + λ [(∂f (X3)/∂х2) + α (∂g (X(3))/ ∂x2)]} = max {0; 3,584 + 0,1 [(-2) * 3,584 + α ((-2) * 3,584)]} = max {0; 2,8672 + α * 0,6832}.

Чтобы выбрать число α, целесообразно взять его так, чтобы точка Х(4) не слишком далеко удалялась то границы области допустимых решений и вместе с тем принадлежала этой области. Этим требованиям удовлетворяет, в частности, α = 1,9. При данном значении получается

х1(4) = max {0; 2,4576 + 1,9 * 0,7856} ≈ 3,95;

х2(4) = max {0; 2,8672 + 1,9 * 0,6832} ≈ 4,165;

g (X(4)) = 18 – 9,3025 – 8,037225 ≈ 0,66;

f (X(4)) ≈ -32,95.

V итерация. Находятся

х1(5) = max {0; 3,95 + 0,1 * (-2) * 3,95} ≈ 3,16;

х2(5) = max {0; 4,165 + 0,1 * (-2) * 4,165 } ≈ 3,332;

g (X(5)) = 18 – 14,7456 – 13,454224 ≈ -10,2.

VI итерация. Находятся

х1(6) = max {0; 3,16 + 0,1 * [(-2) * 3,16 + 1,9 * ((-2) * 3,16 + 14)]} ≈ 3,987;

х2(6) = max {0; 3,332 + 0,1 * [(-2) * 3,332 + 1,9 * ((-2) * 3,332 + 14)]} ≈ 4,059;

g (X(6)) = 18 – 9,078169 – 8,649481 ≈ 0,272;

f (X(6)) ≈ -32,372.

VII итерация. Находятся

x1(7) = max {0; 3,987 + 0,1 * (-2) * 3,987} ≈ 3,189;

x2(7) = max {0; 4,059 + 0,1 * (-2) * 4,059 } ≈ 3,247;

g (X(7)) = 18 – 10,169721 – 10,543009 ≈ -2,713.

VIII итерация. Находятся

х1(8) = max {0; 3,189 + 0,1 * [(-2) * 3,189 + 1,9 * ((-2) * 3,189 + 14)]} ≈ 3,999;

х2(8) = max {0; 3,247 + 0,1 * [(-2) * 3,247 + 1,9 * ((-2) * 3,247 + 14)]} ≈ 4,024;

g (X(8)) = 18 – 9,006001 – 8,856576 ≈ 0,137;

f (X(8)) ≈ -32,185.

IX итерация. Находятся

x1(9) = max {0; 3,999 + 0,1 * (-2) * 3,999} ≈ 3,199;

x2(9) = max {0; 4,024 + 0,1 * (-2) * 4,024} ≈ 3,219;

g (X(9)) = 18 – 14,447601 – 14,295961 ≈ -10,744.

X итерация. Находятся

х1(10) = max {0; 3,199 + 0,1 * [(-2) * 3,199 + 1,9 * ((-2) * 3,199 + 14)]} ≈ 4,004;

х2(10) = max {0; 3,219 + 0,1 * [(-2) * 3,219 + 1,9 * ((-2) * 3,219 + 14)]} ≈ 4,012;

g (X(10)) = 18 – 8,976016 – 8,928144 ≈ 0,096;

f (X(10)) ≈ -32,128.

XI итерация. Находятся

x1(11) = max {0; 4,004 + 0,1 * (-2) * 4,004} ≈ 3,203;

x2(11) = max {0; 4,012 + 0,1 * (-2) * 4,012} ≈ 3,21;

g (X(11)) = 18 – 14,417209 – 14,3641 ≈ -10,781.

XII итерация. Находятся

х1(12) = max {0; 3,203 + 0,1 * [(-2) * 3,203 + 1,9 * ((-2) * 3,203 + 14)]} ≈ 4,005;

х2(12) = max {0; 3,21 + 0,1 * [(-2) * 3,21 + 1,9 * ((-2) * 3,21 + 14)]} ≈ 4,008;

f (X(12)) ≈ -32,104.

Сравнивая значения целевой функции, найденные в точках, полученных после X и XII итераций, видно, что они с точностью до 10-1 совпадают. Это означает близость точки, найденной на последней итерации, к точке максимального значения целевой функции. Так как точка Х(12) находится вблизи границы области допустимых решений (поскольку g(X(12))≈0,078), то х*1=4,005 и х*2=4,012 можно считать приемлемым решением задачи. Это решение при необходимости можно уточнить дальнейшими шагами.

Пример. Используя метод Эрроу-Гурвица, найти решение предыдущей задачи.

Решение. Как следует из решения предыдущей задачи, при нахождении решения этой задачи методом Эрроу-Гурвица первые три итерации при одинаковых значениях λ = 0,1 в обоих случаях совпадают. Это объясняется тем, что каждая из последовательно получаемых точек принадлежит области допустимых решений, а поэтому αi(k) = 0 (k = 1, 2, 3) независимо от того, находится ли оно по формуле (1) или (3).

IV итерация. Так как g (X(3)) < 0, то координаты следующей точки находятся по формуле (2):

х1(4) = max {0; x1(3) + λ * [(∂f (X(3))/∂х1) + α(4) * (∂g (X(3)) /∂х1)]} =

=max {0; 3,072 + 0,1 * [(-2) * 3,072 + α(4) * ((-2) * 3,072 + 14)]};

х2(4) = max {0; x2(3) + λ * [(∂f (X(3))/∂х2) + α(4) * (∂g (X(3)) /∂х2)]} =

= max {0; 3,584 + 0,1 * [(-2) * 3,584 + α(4) * ((-2) * 3,072 + 14)]}.

Число α(4) находится по формуле (2.21):

α(4) = max {0; α(3) - 0,1 * g(X(3))} = max {0; 0 – 0,1 * (-9,0981)} ≈ 0,91.

Таким образом, х1(4) ≈ 3,172; х2(4) ≈ 3,489; g (X(4)) ≈ -8,981.

V итерация. Найденная точка Х(4) = (3,172; 3,489) не принадлежит области допустимых решений исходной задачи. Поэтому отыскиваются координаты следующей точки, предварительно найдя α.

α(5) = max {0; 0,91 – 0,1 * (-8,981)} ≈ 1,81.

х1(5) = max {0; 3,172 + 0,1 * [(-2) * 3,172 + 1,81 * ((-2) * 3,172 + 14)]} ≈ 3,923;

х2(5) = max {0; 3,489 + 0,1 * [(-2) * 3, 489 + 1,81 * ((-2) * 3, 489 + 14)]} ≈ 4,062;

g (X(5)) ≈ -0,1.

VI итерация. Находятся

α(6) = max {0; 1,81 – 0,1 * (-0,1)} ≈ 1,82;

х1(6) = max {0; 3,923 + 0,1 * [(-2) * 3, 923 + 1,82 * ((-2) * 3, 923 + 14)]} ≈ 4,258;

х2(6) = max {0; 4,062 + 0,1 * [(-2) * 4,062 + 1,82 * ((-2) * 4,062 + 14)]} ≈ 4,319;

g (X(6)) ≈ 1,294;

f (X(6)) ≈ -36,784.

VII итерация. Находятся

х1(7) = max {0; 4,258 + 0,1 * [(-2) * 4,258]} ≈ 3,406;

х2(7) = max {0; 4,319 + 0,1 * [(-2) * 4,319]} ≈ 3,455;

g (X(7)) ≈ -7,484.

VIII итерация. Находятся

α(8) = max {0; 1,82 – 0,1 * (-7,484)} ≈ 2,57;

х1(8) = max {0; 3,406 + 0,1 * [(-2) * 3,406 + 2,57 * ((-2) * 3,406 + 14)]} ≈ 4,572;

х2(8) = max {0; 3,455 + 0,1 * [(-2) * 3,455 + 2,57 * ((-2) * 3,455 + 14)]} ≈ 4,586;

g (X(8)) ≈ 6,278;

f (X(8)) ≈ -41,935.

IX итерация. Находятся

х1(9) = max {0; 4,572 + 0,1 * [(-2) * 4,572]} ≈ 3,658;

х2(9) = max {0; 4,586 + 0,1 * [(-2) * 4,586]} ≈ 3,669;

g (X(9)) ≈ -4,265.

X итерация. Находятся

α(10) = max {0; 2,57 – 0,1 * (-4,265)} ≈ 3;

х1(10) = max {0; 3,658 + 0,1 * [(-2) * 3,658 + 3 * ((-2) * 3,658 + 14)]} ≈ 4,931;

х2(10) = max {0; 3,669 + 0,1 * [(-2) * 3,669 + 3 * ((-2) * 3,669 + 14)]} ≈ 4,934;

g (X(10)) ≈ 9,451.

XI итерация. Находятся

х1(11) = max {0; 4,931 + 0,1 * [(-2) * 4,931]} ≈ 3,945;

х2(11) = max {0; 4,934 + 0,1 * [(-2) * 4,934]} ≈ 3,947;

g (X(11)) ≈ -0,654.

XII итерация. Находятся

α(12) = max {0; 3 – 0,1 * (-0,654)} ≈ 3,06;

х1(12) = max {0; 3,945 + 0,1 * [(-2) * 3,945 + 3,06 * ((-2) * 3,945 + 14)]} ≈ 5,026;

х2(12) = max {0; 3,947 + 0,1 * [(-2) * 3,947 + 3,06 * ((-2) * 3,947 + 14)]} ≈ 5,026;

g (X(12)) ≈ 10,207; f (X(12)) ≈ -50,521.

XIII итерация. Находятся

х1(13) = max {0; 5,026 + 0,1 * [(-2) * 5,026]} ≈ 4,021;

х2(13) = max {0; 5,026 + 0,1 * [(-2) * 5,026]} ≈ 4,021;

g (X(13)) ≈ 0,251; f (X(13)) ≈ -32,337.

Полученное на данной итерации решение х*1 = 4,021 и х*2 = 4,021 можно считать приемлемым. Это решение при необходимости следует улучшить, продолжив итерационный процесс до получения результата требуемой точности.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: