Реферат: Методы Хука-Дживса
Pi =bi +2(bi+1 -bi ) .
2. Затем исследование следует продолжать вокруг точки Р1 (Рi ) .
3. Если наименьшее значение на шаге В, 2 меньше значения в базисной точке b2 (в общем случае bi+1 ), то получают новую базисную точку b3 (bi+2 ), после чего следует повторить шаг В, 1. В противном случае не производить поиск по образцу из точки b2 (bi+1 ), а продолжить исследования в точке b2 (bi+1 ).
Г. Завершить этот процесс, когда длина шага (длины шагов) будет уменьшена до заданного малого значения.
Модифицированный метод Хука-Дживса
Этот метод нетрудно модифицировать и для учета ограничений .Было выдвинуто предложение , что для этого будет вполне достаточно при решении задачи минимизации присвоить целевой функции очень большое значение там,где ограничения нарушаются .К тому же такую идею просто реализовать с помощью програмирования .
Нужно проверить ,каждая ли точка ,полученная в процессе поиска , принадлежит области ограничений .Если каждая , то целевая функция вычисляется обычным путем . Если нет , то целевой функции присваивается очень большое значение . Таким образом , поиск будет осуществляться снова в допустимой области в направлении к минимальной точке внутри этой области.
В тексте прогаммы модифицированного метода прямого поиска Хука-Дживса сделана попытка реализовать такую процедуру. Рассматриваемая задача формулируется следующим образом :
минимизировать f (x1 ,x2 ) = 3x1 2 +4x1 x2 +5x2 2 ,
при ограничениях x1 x2 x1 +x2 .
Текст программы
program HuDjMody;
(*** Модифицированный метод Хука-Дживса ***)
(*** (при наличии ограничений) ***)
uses crt;
label 0,1,2,3,4,5,6,7;
var k,h,z,ps,bs,fb,fi :real;
i,j,n,fe :integer;
x,y,b,p :array[1..10] of real;
(*** Процедура,вычисляющая функцию ***)
procedure calculate;
begin
z:=3*sqr(x[1])+(4*x[1]*x[2])+(5*sqr(x[2]));
if (x[1]<0) or (x[2]<0) or ((x[1]+x[2])<4) then
z:=1.7e+38;
fe:=fe+1; (*** Счетчик ***)
end;
begin
clrscr;
gotoxy(20,2);
writeln('Модифицированный метод Хука-Дживса');