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

📄 one_domain.m

📁 基于蚂蚁算法的一维函数优化
💻 M
字号:
%构造函数
function y_fun=fun(x)
y=5*x^6-36*x^5+82.5*x^4-60*x^3+36


%将蚁群在解空间按一定方式作初始分布
dx=0.01;
Ev=50;
p=0.01;
Ilast=0;
C=150
start=0;
ending=3.5;
count=1;
n=9;
Drl=(ending-start)/n;
Dmrl=Drl;
i=1:n;
Nr(i)=1;
x(i)=start+(i-1/2)*Drl;
xl(i)=start+(i-1)*Drl;
xr(i)=start+i*Drl;
Dmrl=Drl;


while count<500
%根据蚁群所处解空间位置的优优伶决定当前蚁群的信息量分布
for i=1:9
    sum=0;
    for j=1:9
M(i)=C-fun(x(i));  %最小值函数
Ti=inline('M(j)*exp(-k(j)*(x-x(j))/(1+exp(-k(j)*(x-x(j)))^2');
IN(j)=quad('Ti',xl(i),xr(i));
sum=sum+IN(j);
end
IN(i)=sum;
end
I(i)=IN(i)+p*Ilast(i)-Ev;
Isum=sum(I);
Nm(i)=I(i)/Isum*N;
Ilast(i)=I(i);

%根据各子区间内应有的蚁群分布与当前蚁群分布之间的差别,决定蚁群的移动方向,并加以移动
for  i=1:n
    NML(i)=0
   for j=1:i-1
NML(i)=Nm(j)+NML(i);
end
end
NR(i)=NML(I)

for  i=1:n
    NMR(i)=0
   for j=i+1:n
NMR(i)=Nm(j)+NMR(i)
end
end

for  i=1:n
    NRL(i)=0
   for j=1:i-1
NRL(i)=Nr(j)+NRL(i)
end
end


for  i=1:n
    NRR(i)=0
   for j=1:i-1
NRR(i)=Nr(j)+NRR(i)
end
end

%规则
i=1:n
if NRL(i)>NML(i)&NR(i)=NM(i)&NRR(i)>NMR(i)
    x(i)=x(i)-dx
    Nr(i)=Nr(i)-dn
elseif NRL(i)>NML(i)&NR(i)=NM(i)&NRR(i)>NMR(i)
    x(i)=x(i)+dx 
      Nr(i)=Nr(i)+dn
elseif NRL(i)>NML(i)&NR(i)=NM(i)&NRR(i)>NMR(i)
    x(i)=x(i)+dx
     Nr(i)=Nr(i)+dn
elseif NRL(i)>NML(i)&NR(i)=NM(i)&NRR(i)>NMR(i)
    x(i)=x(i)+dx
     Nr(i)=Nr(i)+dn
elseif NRL(i)>NML(i)&NR(i)=NM(i)&NRR(i)>NMR(i)
    x(i)=x(i)-dx
     Nr(i)=Nr(i)-dn
elseif NRL(i)>NML(i)&NR(i)=NM(i)&NRR(i)>NMR(i)
    x(i)=x(i)-dx
     Nr(i)=Nr(i)-dn
elseif NRL(i)>NML(i)&NR(i)=NM(i)&NRR(i)>NMR(i)
    x(i)=x(i)+dx
     Nr(i)=Nr(i)+dn
end
count=count+1

end
       
    
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -