📄 pureimp.m
字号:
%改进单纯形 非线性优化
clc;
clear;
x=[4.0 4.0;%x1
5.0 4.0;%x2
4.0 5.0]%x3
alfa=1.0;
beta=0.5;
gama=2.0;
e=0.3;
N=0;
while N<1000
for i=1:3
f(i)=100*(x(i,1)^2-x(i,2))^2+(1-x(i,1))^2+3*x(i,1)*x(i,2);
end
if f(1)>f(2) && f(1)>f(3)
h=1
elseif f(2)>f(1) && f(2)>f(3)
h=2
else
h=3
end
if f(1)<f(2) && f(1)<f(3)
l=1
elseif f(2)<f(1) && f(2)<f(3)
l=2
else
l=3
end
xo=[(x(1,1)+x(2,1)+x(3,1)-x(h,1))/2 (x(1,2)+x(2,2)+x(3,2)-x(h,2))/2]
xr=(1+alfa)*xo-alfa*x(h,:)
fr=100*(xr(1)^2-xr(2))^2+(1-xr(1))^2+3*xr(1)*xr(2);
if fr<f(l)
xe=gama*xr+(1-gama)*xo
fe=100*(xe(1)^2-xe(2))^2+(1-xe(1))^2+3*xe(1)*xe(2);
if fe<f(l)
x(h,:)=xe
else
x(h,:)=xr
end
elseif fr>f(l),fr<f(h)
x(h,:)=xr
xc=beta*x(h,:)+(1-beta)*xo
fc=100*(xc(1)^2-xc(2))^2+(1-xc(1))^2+3*xc(1)*xc(2);
if fc<f(h),fc<fr
x(h,:)=xc
else
for i=1:3
x(i,:)=(x(i,:)+x(l,:))/2
end
end
elseif fr>f(h)
xc=beta*x(h)+(1-beta)*xo;
fc=100*(xc(1)^2-xc(2))^2+(1-xc(1))^2+3*xc(1)*xc(2);
if fc<f(h),fc<fr
x(h)=x(c);
else
for i=1:3
x(i)=(x(i)+x(l))/2;
end
end
end
N=N+1
f(l)
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -