Материал: Пособие в_4_20_деф_мн

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

%plot(x1(1), x1(2), 'bo'); hold on; %plot(x2(1), x2(2), 'g*'); hold on; %plot(x3(1), x3(2), 'r*'); grid on;

patch([x1(1) x2(1) x3(1)], [x1(2) x2(2) x3(2)], [1 1 1], 'FaceColor', 'none')

F1 = F(x1);

F2 = F(x2);

F3 = F(x3);

sprintf('ЦФ в точке х1 %f', F1) sprintf('ЦФ в точке х2 %f', F2) sprintf('ЦФ в точке х3 %f', F3)

%самая высокая точка F

Fmax = max([F1 F2 F3]); switch Fmax

case F1

xh = x1; nh = 1; case F2

xh = x2; nh = 2; case F3

xh = x3; nh = 3;

end

%самая низкая точка F Fmin = min([F1 F2 F3]); switch Fmin

case F1

xl = x1; case F2

xl = x2; case F3

xl = x3;

end

%Центр тяжести, спроецированный на ребро симплекса, относительно которого выполняется отображение

x4 = 1./n .* (x1+x2+x3-xh); plot(x4(1), x4(2), 'kh'); F4 = F(x4);

% проверка критерия достаточной малости симплекса if (((F1-F4)^2+(F2-F4)^2+(F3-F4)^2)/3 < TolFun),

disp('Сходимость достигнута');

6

sprintf('x1 опт = %f, x2 опт = %f, Fmin = %f', xl(1), xl(2), Fmin)

break;

end

% отображаем точку

x5 = x4 + alpha*(x4-xh); plot(x5(1), x5(2), 'ms'); F5 = F(x5);

sprintf('ЦФ в точке х5 %f', F(x5))

if (F5 < F(xh)), % в новой точке получено меньшее значение ЦФ

x(:,nh) = x5;

plot([xh(1) x5(1)], [xh(2) x5(2)], '--')

 

% растяжение вершины

 

x6

=

x4 + gamma*(x4-xh);

%

x6 = x4 + gamma*(x5-x4);

 

plot(x6(1), x6(2), 'c^');

 

F6

= F(x6);

 

plot([xh(1) x6(1)], [xh(2) x6(2)], '--')

 

if (F6 < F5), % в новой точке получено меньшее значе-

ние ЦФ

 

 

 

 

x(:,nh) = x6;

 

else

% сжатие вершины

 

 

x7

= x4 + beta*(x4-xh);

%

 

x7 = x4 + beta*(xh-x4);

 

 

plot(x7(1), x7(2), 'cv');

 

 

F7

= F(x7);

if (F7 < F5), % в новой точке получено меньшее значен ЦФ x(:,nh) = x7;

end end

else % сжатие симплекса

if (x1 ~= xl), x(:,1) = xl + 0.5*(x1 - xl); end if (x2 ~= xl), x(:,2) = xl + 0.5*(x2 - xl); end if (x3 ~= xl), x(:,3) = xl + 0.5*(x3 - xl); end

end

x1 = x(:,1);

x2 = x(:,2);

x3 = x(:,3); end

7