Алгоритм метода штрафных функций

Изложение метода

Основная задача метода штрафных функций состоит в преобразовании задачи минимизации функции

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

Функция является штрафной. Необходимо, чтобы при нарушении ограничений она «штрафовала» функцию Z, т.е. увеличивала её значение.В этом случае минимум функции Z будет находиться внутри области ограничений. Функция , удовлетворяющая этому условию, может быть не единственной. Задачу минимизации можно сформулировать следующим образом:

минимизировать функцию

при ограничениях .

Функцию удобно записать следующим образом:

где r – положительная величина.

Тогда функция принимает вид

.

Если х принимает допустимые значения, т.е. значения, для которых , то Z принимает значения, которые больше соответствующих значений (истинной целевой функции данной задачи), и разность можно уменьшить за счет того, что r может быть очень малой величиной. Но если х принимает значения, которые хотя и являются допустимыми, но близки к границе области ограничений, и по крайней мере одна из функций близка к нулю, тогда значения функции , и следовательно значения функции Z станут очень велики. Таким образом, влияние функции состоит в создании «гребня с крутыми краями» вдоль каждой границы области ограничений. Следовательно, если поиск начнется из допустимой точки и осуществляется поиск минимума функции без ограничений, то минимум, конечно, будет достигаться внутри допустимой области для задачи с ограничениями. Полагая r достаточно малой величиной, для того чтобы влияние было малым в точке минимума, мы можем сделать точку минимума функции без ограничений совпадающей с точкой минимума задачи с ограничениями.

Алгоритм метода штрафных функций

Пусть имеется следующая задача: Минимизировать при ограничениях , .

Начальный этап Выбрать в качестве константы остановки, начальную допустимую точку , для которой , , скаляр и . Положить k=1 и перейти к основному этапу.

Основной этап. k-я итерация.

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

минимизировать, где

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

Примерами штрафных функций являются:

1) обратная функция

2) логарифмическая функция

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

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

Второй шаг

Если , то остановиться. Решение является искомым.

В противном случае положить . Изменить и перейти к первому шагу (k+1)-й итерации.

 

При реализации метода мы использовали штрафную функцию 1) R=1/g(i);

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

 

 

clc

clear

 

[x11 x22]=meshgrid([-15:0.1:15],[-15:0.1:15]);

syms x1 x2;

eps=10^(-5);

f=7*x1^2+2*x1*x2+5*x2^2-2*x1-10*x2;

z=7.*x11.^2+2.*x11.*x22+5.*x22.^2-2.*x11-10.*x22;

xx0=[5 10];

m=10000;

beta=0.5;

g1=x1+x2-6;

n=1;

k=0;

g=[g1];

plot(xx0(1),xx0(2),'o');

hold on

while(1)

plot(xx0(1),xx0(2),'.');

hold on

a=0;

for i=1:n

s=subs(g(i),[x1 x2],xx0);

if(abs(s)>=2*eps)

a=a+1/g(i);

end

end

if (a==0)

RES=xx0;

break;

end

F=f+m*a;

 

RES=method_NS(xx0,F,z,eps,g,n);

 

s=1/subs(g(i),[x1 x2],RES);

if (abs(m*s)<eps)

break;

end

 

m=m*beta;

k=k+1;

xx0=RES;

 

end

xx0

k

ff=subs(f,[x1 x2],xx0)

plot(RES(1),RES(2),'o');

 

Результаты:

Eps=10^(-5)

F=x1^2+x2^2

X0=[5 ; 10]

Xточное = [2 ; 2]

F(x)точное=8

m x F(x) Time (seconds) k
2.000004060440634 2.000007075540867 8.000044543992551 3.575780
2.000004717017259 2.000004719098306 8.000037744506781 5.27514
2.000004752794619 2.000004752790486 8.000038022385597 6.380273
2.000006127663761 2.000006127663761 8.000049021385184 9.462643
2.000006433557238 2.000006433557238 8.000051468540686 13.098821