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

📄 synnpath061029.m

📁 前向链路的信道路径仿真 为通信事业做出点小小事情
💻 M
字号:
function main()
%算法来源于Real-time Path Planning in Dynamic Environments-a Comparison of Three
%Neural
N=50;              %栅格数
V=100;
SP=0.34;%出发点位置
TPX=0.76;%目标点坐标
TPY=0.76;
axis([0,1,0,1])
axis on
XX=[1/N:1/N:1];
YY=[1/N:1/N:1];
HandleStart=line([SP SP],[SP SP]);  %设置开始点
HandleTarget=line([TPX TPX],[TPY TPY]); %设置目标点
set(HandleStart,'marker','pentagram','color',[0 0 0])
set(HandleTarget,'marker','*','color','r')
%Set the position of the Obstacle
line([0.2 0.8],[0.4 0.4])%第1条线
line([0.2 0.8],[0.6 0.6])%第2条线
line([0.4 0.4],[0.2 0.8])%第3条线
line([0.6 0.6],[0.2 0.8])%第4条线
line([0.32 0.48],[0.2 0.2])%第5条线
line([0.2 0.28],[0.2 0.2])%第6条线
line([0.2 0.2],[0.2 0.48])%第7条线
line([0.2 0.2],[0.52 0.8])%第8条线
line([0.2 0.28],[0.8 0.8])%第9条线
line([0.32 0.48],[0.8 0.8])%第10条线
line([0.52 0.68],[0.8 0.8])%第11条线
line([0.72 0.8],[0.8 0.8])%第12条线
line([0.8 0.8],[0.52 0.8])%第13条线
line([0.8 0.8],[0.2 0.48])%第14条线
line([0.72 0.8],[0.2 0.2])%第15条线
WS=zeros(N,N);  %初始化工作空间
II=zeros(N,N);  %初始化外部输入空间
for i=1:100     %使从目标点出发向周围扩散的神经元势值到达出发点
II=CacuII(WS,N,V,TPX,TPY);  %计算外部输入空间
WS=CacuWS(WS,N,II); %计算工作空间
if(WS(10,10)>0)    break
    end
end
i=SP*N;   %从出发点开始规划
j=SP*N;
for t=1:100
    %TPY=TP-1/N;
    %HandleTarget=line([TP TPY],[TP TPY]); %设置目标点
    %set(HandleTarget,'marker','*','color','r')
    II=CacuII(WS,N,V,TPX,TPY);
    WS=CacuWS(WS,N,II);
   %爬山法搜索周围势值最大的神经元作为下一个神经元);
   MaxMin=[WS(i-1,j) WS(i-1,j+1) WS(i,j+1) WS(i+1,j+1) WS(i+1,j) WS(i+1,j-1) WS(i,j-1) WS(i-1,j-1)];
   Max=WS(i-1,j);
   m=1;
   for n=2:8
       if(Max<MaxMin(n)) Max=MaxMin(n); m=n;
       end
   end
   if(m==1) i=i-1;
   elseif(m==2) i=i-1;j=j+1;
   elseif(m==3) j=j+1;
   elseif(m==4) i=i+1;j=j+1;
   elseif(m==5) i=i+1;
   elseif(m==6) i=i+1;j=j-1;
   elseif(m==7) j=j-1;
   else i=i-1;j=j-1;
   end
  
    pause(0.05)
    HandleRobot=line([i/N,i/N],[j/N j/N]);  %绘制下一个神经元
    set(HandleRobot,'marker','o','color','g')
    if(WS(i,j)==1) break
    end
end

function II=CacuII(WS,N,V,TPX,TPY)
for i=1:N
    for j=1:N
        if ((i>9)&(i<41)&(j==20))    II(i,j)=-V;%第1条线
        elseif((i>9)&(i<41)&(j==30))  II(i,j)=-V;%第2条线
        elseif((i==20)&(j>9)&(j<41))   II(i,j)=-V;%第3条线
        elseif((i==30)&(j>9)&(j<41))   II(i,j)=-V;%第4条线
        elseif((i>16)&(i<25)&(j==10))    II(i,j)=-V;%第5条线
        elseif((i>9)&(i<14)&(j==10))   II(i,j)=-V;%第6条线
        elseif((i==10)&(j>9)&(j<25))    II(i,j)=-V;%第7条线
        elseif((i==10)&(j>25)&(j<41))    II(i,j)=-V;%第8条线
        elseif((i>9)&(i<15)&(j==40))   II(i,j)=-V;%第9条线
        elseif((i>15)&(i<25)&(j==40))   II(i,j)=-V;%第10条线
        elseif((i>25)&(i<35)&(j==40))   II(i,j)=-V;%第11条线
        elseif((i>35)&(i<41)&(j==40))   II(i,j)=-V;%第12条线
        %elseif((i==40)&(j>25)&(j<41))   II(i,j)=-V;%第13条线
        elseif((i==40)&(j>9)&(j<25))   II(i,j)=-V;%第14条线
        elseif((i>35)&(i<41)&(j==10))   II(i,j)=-V;%第15条线    
        elseif ((i==1)|(i==N)|(j==1)|(j==N))     II(i,j)=-V;
        elseif ((i==(TPX*N))&(j==(TPY*N)))    II(i,j)=V;
        end
    end
end
function WS=CacuWS(WS,N,II)
Tij1=exp(-10);%神经网络权重
Tij2=exp(-100);
a=0.5;        %g函数斜率
for i=2:N-1
    for j=2:N-1
        u=Tij1*(WS(i-1,j)+WS(i,j+1)+WS(i+1,j)+WS(i,j-1))+Tij2*(WS(i-1,j+1)+WS(i+1,j+1)+WS(i+1,j-1)+WS(i-1,j-1));
        u=u+II(i,j);
        if (u<=0)   WS(i,j)=0;
        elseif (u>=1)   WS(i,j)=1;
        else    WS(i,j)=a*u;
        end
    end
end

           
            

⌨️ 快捷键说明

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