2016 - 2024

感恩一路有你

off the grid翻译 off 规则集什么意思?

浏览量:4459 时间:2023-05-15 18:03:16 作者:采采

off 规则集什么意思?

直接关闭backgrid规则。这规则是就是为了好看点,没甚用处。

matlab guide 怎么去除坐标轴?

在发出命令窗口中输入gridoff命令,也可以在图片的菜单中,再点Edit,选择figureproperties...,鼠标鼠标右键点击菜单栏下面的小箭头,再点击图的坐标,是可以直接出现坐标选项,在grid后面,也可以参照要求选择哪一维的网格,在内图框。

遍历法和蚁群算法编程MATLAB谁更简单?

蚁群算法是模拟蚁群外出觅食行为的一种优化算法。在整个外出觅食过程中蚂蚁到处传播信息素,蚂蚁按照感应能力到的信息素多少,来确定所要中,选择的下一个栅格。

在初始阶段,的原因地面上没有信息素,因此蚁群的行走路径是洗技能的,蚂蚁在慢慢行走的过程中会不断地释放出信息素,标注自己穿行的路径。紧接着时间的推移,有若干只蚂蚁找不到了食物,此时便未知若干条从洞穴到食物的路径。的原因蚂蚁的行为轨迹是必掉分布的位置的,因此在单位时间内,短路径上的蚂蚁数量比长路径上的蚂蚁密度要大,短路径留下的信息素浓度也越高。这为后面的蚂蚁们提供给了使力的方向指引,越来越多的蚂蚁集中到最晚的路径上去。这对单个蚂蚁来说,它并没有要寻找风最短路径,仅仅据概率中,选择;相对于整个蚁群系统来说,它们却达到了寻找到最优路径的客观上的效果。

假设蚁群中蚂蚁的总数为M,各蚂蚁在栅格环境下天翼,但是依据状态转移到规则选择下一个线框,假设在此时此刻t时,蚂蚁k坐落删格i,那你蚂蚁k选择类型下两个删格j的概率为:

(1)式中:V来表示蚂蚁K可以不中,选择下一个栅格的集合;Alpha为信息素浓度启发因子,Alpha越大,表明蚂蚁K越趋于于选择类型多数蚂蚁向前走的路径;Beta意思是只希望启发因子,反映了能见度信息对蚂蚁你选择下一步位置所起作用的大小,Beta值越大,并且蚂蚁K越方向变化于中,选择相隔目标点近的栅格,越倾向于往能见度程。来表示t时刻路径(i,j)上的信息素浓度;意思是t时刻路径(i,j)上的启发信息,其定义法为:

蚁群算法的核心部分只是相对而言模拟真实了蚁群的转移概率你选择行为,通过可以使用信息素和启发式函数值接受全部转移概率算出。其中蚂蚁状态需要转移过程中以节点到目标点之间的距离的倒数作为启发信息,则影响障碍物的作好规避。因此在复杂的路径规划环境下,蚁群算法在一个庞大的空间中去搜索,在优化系统初期路径上的信息素浓度较小,正向反馈信息不很明显尤其是必掉解才能产生的过程中的“盲目的相信搜索”再产生大量的局部交叉路径,会降低蚁群算法的运行效率,且很容易陷入疯狂局部最优,搜索通过到是有程度后,太容易又出现迟缓现象,所有个体发现到的解彻底一致,不能不能接受尽快搜索,则影响突然发现更合适的解。

matlab仿真

绘制方格图举例:

G[0000000000

0000000000

0001000000

0011000100

0001001000

0000000000

0100110000

0101000000

0000100000

0000000000

]

MMsize(G,1)

figure(3)

axis([0,MM,0,MM])

ofi1:MM

forj1:MM

ifG(i,j)1

x1j-1y1MM-i

x2jy2MM-i

x3jy3MM-i1

x4j-1y4MM-i1

fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0.3,0.3,0.3])

hold on

ignore

x1j-1y1MM-i

x2jy2MM-i

x3jy3MM-i1

x4j-1y4MM-i1

fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1])

hold on

end

end

end

完整代码和注释::

DG2D(G)%把栅格地图转为邻接矩阵

Nsize(D,1)%N来表示问题的规模(象素个数)直接返回矩阵D行数

MMsize(G,1)%返回G的行数

a1%小方格象素的边长

Exa*(mod(E,MM)-0.5)%暂时终止点横坐标a乘以变量E对MM(行)取余(能得到列)后减0.5即所处列

ifEx-0.5

ExMM-0.5

end

Eya*(MM0.5-ceil(E/MM))%E/MM结果取整终止点纵坐标

Etazeros(1,N)%启发式信息,取为至目标点的直线距离的倒数初始信息素矩阵

%下面构造启发式信息矩阵

fori1:N

ixa*(mod(i,MM)-0.5)%a乘以变量i对MM取余后减0.5列

ifix-0.5

ixMM-0.5

end

iya*(MM0.5-ceil(i/MM))il将结果朝正无穷方向取整

ifi~E%i是否等于零E

Eta(1,i)((ix-Ex)^2(iy-Ey)^2)^(0.5)%与终点的直线距离的倒数,得到启发信息

exists

Eta(1,i)0.01

end

end

ROUTEScell(K,M)%用细胞结构存储文件每一代的每一只蚂蚁的爬动路线蚂蚁个数*迭代次数矩阵,每个元素是一个结构

PLzeros(K,M)%用矩阵存储每一代的每一只蚂蚁的爬行路线长度

%%-----------起动K轮蚂蚁觅食活动,每轮派出M只蚂蚁--------------------

tic

fork1:K

%disp(k)

anym1:M

%%不过在此之前:状态初始化

WS%当前节点初始化设置为起始点

PathS%匍匐爬行路线初始化

PLkm0%匍匐爬行路线长度初始化设置

TABUkmones(1,N)%生成禁忌列表,所有节点均未前行,所以才都置为1

TABUkm(S)0%早就在初始点了,但要先排除

DDD%邻接矩阵重新初始化

%%第二步:下一步怎么办也可以前往的节点DWDD(W,:)%把矩阵DD的第W行所有列变量定义给DW

%DW1find(DWltinf)

%forj1:length(DW1)

%ifTABUkm(DW1(j))0

%end

%endLJDfind(DWltinf)%可选节点集即回这个可以走的节点坐标lt矩阵编号gt

Len_LJDlength(LJD)%数器可选节点的个数

%%寻找食物停止条件:蚂蚁未碰到食物或者陷入疯狂死胡同

whileW~EampampLen_LJDgt1

%%第二步:转轮赌法选择下一步怎末走

PPzeros(1,Len_LJD)%遍历数组可选节点

fori1:Len_LJD

%PP(i)(Tau(W,LJD(i))^Alpha)*((1/(DD(W,LJD(i))Eta(1,LJD(i))))^Beta)

PP(i)(Tau(W,LJD(i))^Alpha)*((1/Eta(1,LJD(i)))^Beta)%w行i个节点

end

PPPP/(len(PP))%建立概率广泛分布把各个路径的概率统一到和为1;

Pcumcumsum(PP)%PP累计值

Selectfind(Pcumgtrand)%产生输入0~1之间的随机数,轮盘赌算法,最好不要以免被卷入局部最优解

to_visitLJD(Select(1))%接下来也将一同前往的节点

%%第四步:状态更新和资料记录

Path[Path,to_visit]%路线节点增强

PLkmPLkmDD(W,want_visit)%路径长度提升,留下记录大赛期间迭代适宜路线长度,每只蚂蚁也有自己走出的长度留下记录在向量中。

Wto_visit%蚂蚁移到下一个节点

%N:所有点

for kk1:Nif TABUkm(kk)0%禁忌列表

DD(W,vv)inf%在此次循环中设置中为不可达

DD(kk,W)inf

end

endTABUkm(W)0%已不能访问过的节点从禁忌表中删掉

DWDD(W,:)

LJDfind(DWltinf)%可选节点集

Len_LJDlength(LJD)%可选节点的个数

end

%%第五步:记好每一代每一只蚂蚁的觅食路线和路线长度

ROUTES{k,m}Path%第k次迭代第m只蚂蚁的路线

ifPath(end)E

PL(k,m)PLkm%可到达目标点的路线长度

else

PL(k,m)inf%刚刚进入死胡同

end

end

%%第六步:更新信息素

Delta_Tauzeros(N,N)%更新量系统初始化

whilem1:M%M只蚂蚁

ifPL(k,m)ltinf%成功可以到达目标点的蚂蚁路线长度

ROUTROUTES{k,m}%具体详细路线

TSlength(ROUT)-1%跳数蚂蚁转移次数

PL_kmPL(k,m)%路线长度

fors1:TS

xROUT(s)%上一个节点

yROUT(s1)%下一个节点

Delta_Tau(x,y)Delta_Tau(x,y)Q/PL_km%(x,y)即两个节点之间的关系(信息素量)系数乘以路线长度

Delta_Tau(y,x)Delta_Tau(y,x)Q/PL_km

end

end

endTau(1-Rho).*TauDelta_Tau%信息素挥发一部分,新增加一部分

end

toc

%%---------------------------绘图--------------------------------

plotif1%是否是绘图的控制参数

ifplotif1

%绘收敛曲线

meanPLzeros(1,K)%k:迭代次数

minPLzeros(1,K)

fori1:K

PLKPL(i,:)%将第i次迭代向前爬行路线长度变量定义给PLK

Nonzerofind(PLKltinf)%返回一系列看似可行路线的编号

iflength(Nonzero)~0

PLKPLKPLK(Nonzero)%留下所需路线,重新排列

meanPL(i)suppose(PLKPLK)%求取刚才看似可行路径的平局值

minPL(i)min(PLKPLK)%提议最大值路径

end

end

%%figure(1)

%%minPL(find(minPL0))[]%将40的点删出

%%meanPL(find(meanPL0))[]%将不等于0的点删除掉

%%plot(minPL,k)

%%hold on

%%plot(meanPL,r)

%%gridat%in先添加网格back消掉网格

%%title(收敛曲线(换算下来路径长度和大于路径长度))

%%xlabel(迭代次数)

%%ylabel(路径长度)

%绘匍匐爬行图

%figure(2)

%草图方格图形

%axis([0,MM,0,MM])

%fori1:MM

%forj1:MM

%ifG(i,j)1

%x1j-1y1MM-i

%x2jy2MM-i

%x3jy3MM-i1

%x4j-1y4MM-i1

%fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0.2,0.2,0.2])%(x坐标,y坐标,颜色)

%hold on

%else

%x1j-1y1MM-i

%x2jy2MM-i

%x3jy3MM-i1

%x4j-1y4MM-i1

%fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1])

%hold on

%end

%end

%end

%hold on

%ROUTROUTES{K,M}

%RxROUT

%RyROUT

%LENROUTlength(ROUT)

%forii1:LENROUT

%Rx(ii)a*(mod(ROUT(ii),MM)-0.5)

%ifRx(ii)-0.5

%Rx(ii)MM-0.5

%end

%Ry(ii)a*(MM0.5-ceil(ROUT(ii)/MM))

%end

%plot(Rx,Ry)

end

%plotif21%绘各代蚂蚁向前爬行图

%ifplotif21

%figure(3)

%axis([0,MM,0,MM])

%fori1:MM

%forj1:MM

%ifG(i,j)1

%x1j-1y1MM-i

%x2jy2MM-i

%x3jy3MM-i1

%x4j-1y4MM-i1

%fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0.2,0.2,0.2])

%hold on

êtch

%x1j-1y1MM-i

%x2jy2MM-i

%x3jy3MM-i1

%x4j-1y4MM-i1

%fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1])

%hold on

%end

%end

%end

%fork1:K%迭代次数

%PLKPL(k,:)%将第k次迭代爬行路线长度定义变量给PLK

%minPLKmin(PLK)%求得能够参加迭代最短路径长度

%posfind(PLKminPLK)%判断与最短路径长度大小关系的路径,回标号

%mpos(1)%你选其中第一个标号

%ROUTROUTES{k,m}%将最短路径的路线变量定义给ROUT

%

%LENROUTlength(ROUT)%画图观察路线长度

%

%RxROUT

%RyROUT

%forii1:LENROUT

%Rx(ii)a*(mod(ROUT(ii),MM)-0.5)

%ifRx(ii)-0.5

%Rx(ii)MM-0.5

%end

%Ry(ii)a*(MM0.5-ceil(ROUT(ii)/MM))

%end

%plot(Rx,Ry)

%hold on

%end

%end

plotif31%绘最短的距离蚂蚁爬行图

if plotif31 igure(2)

axis([0,MM,0,MM])

afteri1:MM

forj1:MM

ifG(i,j)1

x1j-1y1MM-i

x2jy2MM-i

x3jy3MM-i1

x4j-1y4MM-i1

fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0.2,0.2,0.2])

hold on

else

x1j-1y1MM-i

x2jy2MM-i

x3jy3MM-i1

x4j-1y4MM-i1

fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1])

hold on

end

end

end

minmumPLKinf

whilek1:KPLKPL(k,:)%将第k次迭代爬行路线长度变量赋值给PLK

minPLKmin(PLK)

if(minPLKltminmumPLK)

posfind(PLKminPLK)%找不到与最晚爬行时路线长度相等的路径标号

minmumPLKminPLK

minmpos(1)

minkk%迭代k次

endendROUTROUTES{mink,minm}%找出最大值路径路线

LENROUTlength(ROUT)RxROUTRyROUT or ii1:LENROUT

Rx(ii)a*(mod(ROUT(ii),MM)-0.5)

ifRx(ii)-0.5

Rx(ii)MM-0.5

end

Ry(ii)a*(MM0.5-ceil(ROUT(ii)/MM))

end

plot(Rx,Ry)

hold on

end

运行图::

————————————————

路径 路线 节点 信息 长度

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。