Практика 3: Метод симплексов
Для начала необходимо задать стартовую точку и построить в её окружности симплекс. Путём операций по сжатию, растяжению, отражению переходим к точке минимума. Подробнее об этом в теории.
Пример решения задачи
Дано:
Функция f(x)=x2+y2
Начальные точки симплекса
x0=[5;5],x1=[3,6],x2=[5,2]
Параметры:
α=1,β=0,5,γ=1
Шаг 1. Обозначение точек
Необходимо вычислить значения функции в точках симплекса и обозначить их как: best, lousy, worst.
f(x0)=50,f(x1)=45,f(x2)=29.
xb=x2=[5,2],xl=x1=[3,6],xw=x0=[5,5]
Находим xa - среднее значение точек (кроме worst)
xa=2([5,2]+[3,6])=[4,4]
Шаг 2. Отражение
(производится всегда после оценки точек) по формуле:
xr=xa+α(xa−xw)
xr=[4,4]+1∗([4,4]−[5,5])=[3,3]
Находим значение функции в точке f(xr) = 18. Далее у нас есть несколько вариантов событий, но так как f(xr) < f(xb), то следующим шагом будет
Шаг 3. Растяжение
xe=xr+γ∗(xr−xa)
xe=[3,3]+1∗([3,3]−[4,4])=[2,2]
Находим значение функции в точке f(xe)=8. Так как f(xe)<f(xb), тогда xw=xe Затем переходим на шаг 1
Обозначаем точки
f(5,2)=29,f(3,6)=45,f(2,2)=8
На этот раз xb=[2,2],xl=[5,2],xw=[3,6]. Находим xa=2([2,2]+[5,2])=[3,5,2]
Затем следует отражение:
xr=[3,5,2]+1∗([3,5,2]−[3,6])=[4,−2]
Находим значение функции в точке f(xr) = 20. В этот раз f(xb)<f(xr) и f(xr)<f(xl) в этом случае xw=xr.
Обозначаем точки
f(5,2)=29,f(4,−2)=20,f(2,2)=8
На этот раз xb=[2,2],xl=[4,−2],xw=[5,2]. Находим xa=2([2,2]+[4,−2])=[3,0]
Затем следует отражение:
xr=[3,0]+1∗([3,0]−[5,2])=[1,−2]
Находим значение функции в точке f(xr) = 5. В этот раз f(xr)<f(xb), поэтому следующим шагом будет
Растяжение
xe=xr+γ=1∗(xr−xa)
xe=[1,−2]+1∗([1,−2]−[3,0])=[−1,0]
Находим значение функции в точке f(xe)=1. Так как f(xe)<f(xb), тогда xw=xe Затем переходим на шаг 1
Обозначаем точки
f(−1,0)=1,f(4,−2)=20,f(2,2)=8
На этот раз xb=[−1,0],xl=[2,2],xw=[4,−2]. Находим xa=2([−1,0]+[2,2])=[0,5,1]
Затем следует отражение:
xr=[0,5,1]+1∗([0,5,1]−[4,2])=[−3,0]
Находим значение функции в точке f(xr) = 9. В этот раз f(xr)>f(xb) и f(xr)>f(xl), но в то же время f(xr)<f(xw), поэтому настало время для
Шаг 4. Внешнее сжатие
xo=xa+β∗(xa−xw)
xo=[0,5,1]+0,5∗([0,5,1]−[4,−2])=[−1,25,2,25]
Найдем значение функции f(xo)=6,625 и f(xo)<f(xr), поэтому xw=xo и возвращаемся на шаг 1. И это было 10 вычисление целевой функции, поэтому можно остановиться.