• 大小: 4KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-06
  • 语言: Matlab
  • 标签: agent  matlab  

资源简介

用matlab实现了agent的蜂拥行为

资源截图

代码片段和文件信息

%Olfati算法2
%---------系统赋初始值------------------------
clear;clc;
loop=500;                               %确定循环周期
s=0.1;                                  %s取值范围为(01)
n=50;                                   %确定智能体个数
m=50;                                   %确定领导者直接影响智能体数目
r=6;                                    %确定智能体感知半径
ra=(1/s)*[sqrt(1+s*(r^2))-1];
dw=5;                                   %确定网格Lattice距离
dwa=(1/s)*[sqrt(1+s*(dw^2))-1];
h=0.9;                                  %定义参数h,其取值范围为(01)
size=50;                                %定义初始范围
a=1;b=2;                                %0<=a<=b
c1=0.1;c2=0.2;                          %领导者影响函数参数,c1c2>0
step=0.1;                               %确定步长
%-----------系统初始化--------------------------
q=size*rand(2n);                       %初始化智能体初始位置向量
p=2*rand(2n)-1;                        %初始化智能体初始速度向量
qr=size*rand(21);                      %初始领导者位置向量
pr=2*rand(21)-1;                       %初始领导者速度向量
qqr=zeros(2loop);                      %每个时间段领导者的位置向量
ppr=zeros(2loop);                      %每个时间段领导者的速度向量
uur=zeros(2loop);                      %每个时间段领导者的加速度向量
qq=zeros(2nloop);                     %每个时间段智能体的位置向量
pp=zeros(2nloop);                     %每个时间段智能体的速度向量
%----------开始循环--------------------------
%---------对智能体进行循环,实验主题---------
 for ld=1:loop
     qq(::ld)=q(::);
     pp(::ld)=p(::); 
     qqr(:ld)=qr(::);
     ppr(:ld)=pr(::); 
     ur=cos(qr(:1));
     uur(:ld)=ur(::);
    %定义共识网络A,判断智能体之间的相互影响
    A=zeros(nn);
    for i=1:n
        for j=1:n
            if [q(1i)-q(1j)]^2+[q(2i)-q(2j)]^2<=r^2
                A(ij)=1;
            end
        end    
    end
    for i=1:n
        A(ii)=0;
    end
    d=zeros(nn);
    for i=1:n
        for j=1:n
            d(ij)=sqrt((q(1i)-q(1j))^2+(q(2i)-q(2j))^2);
        end
    end
    %实现fya(z)
    %计算n(ij)
    N=zeros(nn2);
    for i=1:n
        for j=1:n
            N(ij1)=(q(1j)-q(1i))/sqrt(1+s*d(ij)^2);
            N(ij2)=(q(2j)-q(2i))/sqrt(1+s*d(ij)^2);
        end
    end
    %计算da=||qj-qi||σ
    da=zeros(nn);
    for i=1:n
        for j=1:n
            da(ij)=(1/s)*[sqrt(1+s*(d(ij)^2))-1];
        end
    end
    %计算fya(da)
    fya=zeros(nn);
    ph=zeros(nn);
    for i=1:n
        for j=1:n
            z1=da(ij)/ra;
            if z1=0      
                 ph(ij)=1;
            elseif z1<=1 | z1>=h
                 ph(ij)=0.5*(1+cos(pi*((z1-h)/(1-h))));
            else
                 ph(ij)=0;
            end
            z2=da(ij)-dwa;
            c=(b-a)/sqrt(4*a*b);
            fy(ij)=0.5*((a+b)*((z2+c)/sqrt(1+(z2+c)^2))+(a-b));
            fya(ij)=ph(ij)*fy(ij)*A(ij);
        end
    end
    %-----------------求智能体的位置影响------------------
    %求u11=fya*N(ij)
    u11=zeros(nn2);
    for i=1:n
        for j=1:n
            u11(ij1)=fya(ij)*N(ij1);
            u11(ij2)=fya(ij)*

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7128  2010-06-13 13:31  agent2.m

     文件       7872  2010-06-13 13:41  Mulleader.m

----------- ---------  ---------- -----  ----

                15000                    2


评论

共有 条评论