⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pureimp.m

📁 最优化中非线性规划中改进的单纯形算法matlab实现
💻 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 + -