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

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

где r – положительная величина.
Тогда функция    принимает вид
   принимает вид
 .
  .
Если х принимает допустимые значения, т.е. значения, для которых    , то Z принимает значения, которые больше соответствующих значений
  , то Z принимает значения, которые больше соответствующих значений    (истинной целевой функции данной задачи), и разность можно уменьшить за счет того, что r может быть очень малой величиной. Но если х принимает значения, которые хотя и являются допустимыми, но близки к границе области ограничений, и по крайней мере одна из функций
   (истинной целевой функции данной задачи), и разность можно уменьшить за счет того, что r может быть очень малой величиной. Но если х принимает значения, которые хотя и являются допустимыми, но близки к границе области ограничений, и по крайней мере одна из функций    близка к нулю, тогда значения функции
   близка к нулю, тогда значения функции    , и следовательно значения функции Z станут очень велики. Таким образом, влияние функции
  , и следовательно значения функции Z станут очень велики. Таким образом, влияние функции    состоит в создании «гребня с крутыми краями» вдоль каждой границы области ограничений. Следовательно, если поиск начнется из допустимой точки и осуществляется поиск минимума функции
   состоит в создании «гребня с крутыми краями» вдоль каждой границы области ограничений. Следовательно, если поиск начнется из допустимой точки и осуществляется поиск минимума функции    без ограничений, то минимум, конечно, будет достигаться внутри допустимой области для задачи с ограничениями. Полагая r достаточно малой величиной, для того чтобы влияние
   без ограничений, то минимум, конечно, будет достигаться внутри допустимой области для задачи с ограничениями. Полагая r достаточно малой величиной, для того чтобы влияние    было малым в точке минимума, мы можем сделать точку минимума функции
   было малым в точке минимума, мы можем сделать точку минимума функции    без ограничений совпадающей с точкой минимума задачи с ограничениями.
  без ограничений совпадающей с точкой минимума задачи с ограничениями.
Алгоритм метода штрафных функций
Пусть имеется следующая задача: Минимизировать    при ограничениях
   при ограничениях    ,
  ,   .
  .
Начальный этап Выбрать    в качестве константы остановки, начальную допустимую точку
   в качестве константы остановки, начальную допустимую точку    
     , для которой
  , для которой    ,
  ,    , скаляр
  , скаляр    и
   и    . Положить k=1 и перейти к основному этапу.
  . Положить k=1 и перейти к основному этапу.
Основной этап. k-я итерация.
Первый шаг. При исходной точке    решить следующую задачу безусловной оптимизации:
   решить следующую задачу безусловной оптимизации:
 минимизировать, где
   минимизировать, где
 - параметр, значения которого убывают с каждой итерации
   - параметр, значения которого убывают с каждой итерации    при
   при    ;
  ;    - положительные весовые коэффициенты.
   - положительные весовые коэффициенты.
Примерами штрафных функций являются:
1) обратная функция   
2) логарифмическая функция   
Положить    равным оптимальному решению задачи минимизации и перейти ко второму шагу.
   равным оптимальному решению задачи минимизации и перейти ко второму шагу.
Минимизация штрафной функцию может быть выполнена любым методом безусловной оптимизации, например, градиентным.
Второй шаг
Если    , то остановиться. Решение является искомым.
  , то остановиться. Решение является искомым.
В противном случае положить    . Изменить
  . Изменить    и перейти к первому шагу (k+1)-й итерации.
   и перейти к первому шагу (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 |