Решим задачу по примеру нашей целевой функции 3×1 – 2×2 – 0.5×1^2 – x2^2 + x1x2 при ограничениях 2×1 + x2 ≤ 2, x1 + x2 ≤ 2, x1, x2 ≥ 0.
1. Найдем градиент целевой функции:
gradF = (∂F/∂x1, ∂F/∂x2) = (3 – x2 – x1, -2 + x1 – 2×2)
2. Найдем значение целевой функции в начальной точке X(0):
F(X0) = 3*1 – 2*1 – 0.5*1^2 – 1^2 + 1*1 = 2
3. Проведем итерацию:
Итерация 1:
а) Определим градиент целевой функции в точке X(0):
gradF(X0) = (3 – 1 – 1, -2 + 1 – 2*1) = (-1, -3)
b) Рассмотрим угловую точку области допустимых решений, соответствующую предельно допустимому (без нарушения ограничений) направлению градиента:
2×1 + x2 = 2
x2 = 2 – 2×1
Подставляем x2 = 2 – 2×1 в градиент целевой функции:
gradF(X0) = (-1, -3)
c) Проверяем условие:
(-1)(-1) + (-3)(-3) = 1 + 9 = 10 > 0
4. Двигаемся вдоль градиента:
X(1) = X(0) + λ * gradF(X0)
Находим λ:
gradF(X0) * gradF(X0) ≤ 0.0001
(λ * gradF(X0)) * (λ * gradF(X0)) ≤ 0.0001
λ^2 * (gradF(X0))^2 ≤ 0.0001
λ^2 * (-1)^2 + (-3)^2 ≤ 0.0001
10λ^2 ≤ 0.0001
λ^2 ≤ 0.00001
λ ≤ 0.01
Таким образом, мы можем выбрать любое значение λ из интервала [0, 0.01]. Например, можно взять λ = 0.01.
5. Подставляем найденное значение λ в формулу для X(1):
X(1) = X(0) + λ * gradF(X0)
X(1) = (1,1) + 0.01 * (-1, -3)
X(1) = (1,1) + (-0.01, -0.03)
X(1) = (1 – 0.01, 1 – 0.03)
X(1) = (0.99, 0.97)
6. Проверяем выполнение ограничений:
2*x1 + x2 = 2*0.99 + 0.97 = 1.98 + 0.97 = 2.95 > 2 – ограничение не выполняется
x1 + x2 = 0.99 + 0.97 = 1.96 > 2 – ограничение не выполняется
x1, x2 ≥ 0 – ограничение выполняется
Ограничение 2×1 + x2 ≤ 2 не выполняется. Значит, мы достигли граничной точки области допустимых решений и здесь наше решение останавливается. Окончательное решение задачи будет X(1) = (0.99, 0.97), где целевая функция принимает максимальное значение F(X1) = 3*0.99 – 2*0.97 – 0.5*0.99^2 – 0.97^2 + 0.99*0.97.