基于回溯搜索优化算法的WSN覆盖优化
文章目录
- 一、理论基础
- 1、回溯搜索优化算法
- (1)种群初始化
- (2)选择Ⅰ
- (3)变异
- (4)交叉
- (5)选择Ⅱ
- 2、BSA算法伪代码
- 二、仿真实验与结果分析
- 三、参考文献
一、理论基础
1、回溯搜索优化算法
回溯搜索优化算法(Backtracking Search Optimization Algorithm, BSA)是Civicioglu在2013年提出的一种求解优化问题的进化算法。该算法结构简单,仅有一个控制参数,使其受初始控制参数影响很小,且在变异策略中充分考虑历史种群的影响,并采用了新型的交叉方式,使算法具有较强的搜索能力,能够很好地解决不同类型的优化问题,已被广泛用于许多工程领域。
回溯搜索优化算法与差分进化算法在框架上有一定的相似性,不同之处在于该算法有两个选择过程分别是选择Ⅰ和选择Ⅱ。BSA算法通常包含种群初始化、选择Ⅰ、变异、交叉和选择Ⅱ五个步骤。
(1)种群初始化
BSA通过上界和下界随机产生poppoppop和historical_pophistorical\_ pophistorical_pop,如式(1)和式(2)所示。popi,j=rand×(upj−lowj)+lowj(1)pop_{i,j}=rand\times(up_j-low_j)+low_j\tag{1}popi,j=rand×(upj−lowj)+lowj(1)historical_popi,j=rand×(upj−lowj)+lowj(2)historical\_ pop_{i,j}=rand\times(up_j-low_j)+low_j\tag{2}historical_popi,j=rand×(upj−lowj)+lowj(2)其中,popi,jpop_{i,j}popi,j为初始种群,historical_popi,jhistorical\_ pop_{i,j}historical_popi,j为历史种群,i=1,2,⋯,Ni=1,2,\cdots,Ni=1,2,⋯,N,j=1,2,⋯,Dj=1,2,\cdots,Dj=1,2,⋯,D,NNN为种群数量,DDD为问题维数,lowjlow_jlowj和upjup_jupj分别是变量的下界和上界。
(2)选择Ⅰ
BSA在每次迭代之前通过式(3)产生新的历史种群historical_pophistorical\_ pophistorical_pop。ifa<bthenhistorical_pop=pop(3)\text{if}\,\,a<b\,\,\text{then}\,\,historical\_ pop=pop\tag{3}ifa<bthenhistorical_pop=pop(3)其中,a,ba,ba,b是(0,1)(0,1)(0,1)均匀分布的随机数,当生成historical_pophistorical\_ pophistorical_pop后,需对historical_pophistorical\_ pophistorical_pop中的个体利用式(4)进行随机排序。historical_pop=permuting(historical_pop)(4)historical\_ pop=permuting(historical\_ pop)\tag{4}historical_pop=permuting(historical_pop)(4)其中,permutingpermutingpermuting是随机排序函数。
(3)变异
为了生成新的个体,采用式(5)进行变异操作:offsprings=pop+F×(historical_pop−pop)(5)offsprings=pop+F\times(historical\_ pop-pop)\tag{5}offsprings=pop+F×(historical_pop−pop)(5)其中,FFF为变异尺度系数,F=3×randnF=3\times randnF=3×randn,randnrandnrandn为标准正态分布随机数。
(4)交叉
BSA的交叉策略是一种基于两种交叉方式等概率调用的联合交叉策略。首先,生成一个初始值为1、大小为N×DN\times DN×D的矩阵;然后,通过式(6)更新矩阵MapMapMap;最后,通过矩阵MapMapMap来确定种群交叉的位置,具体如式(7)所示:{Mapi,u[1:ceil(mixrate×rand×D)]=0,a<bMapi,randi(D)=1,otherwise(6)\begin{dcases}Map_{i,u[1:ceil(mixrate\times rand\times D)]}=0,\quad a<b\\[2ex]Map_{i,randi(D)}=1,\quad\quad\quad\quad\quad\quad\text{otherwise}\end{dcases}\tag{6}⎩⎨⎧Mapi,u[1:ceil(mixrate×rand×D)]=0,a<bMapi,randi(D)=1,otherwise(6)Ti,j={offspringsi,j,Mapi,j=0popi,j,otherwise(7)T_{i,j}=\begin{dcases}offsprings_{i,j},\quad Map_{i,j}=0\\[2ex]pop_{i,j},\quad\quad\quad\quad\,\,\,\, \text{otherwise}\end{dcases}\tag{7}Ti,j=⎩⎨⎧offspringsi,j,Mapi,j=0popi,j,otherwise(7)其中,a,ba,ba,b是(0,1)(0,1)(0,1)均匀分布的随机数;mixratemixratemixrate是交叉率;randrandrand是(0,1)(0,1)(0,1)均匀分布的随机数;DDD是问题维数;randi(D)randi(D)randi(D)是(0,D)(0,D)(0,D)内的一个随机整数;u=randperm(D)u = randperm(D)u=randperm(D)是对DDD重新排序;ceilceilceil是向上取整。BSA通过这种新交叉方式产生种群TTT。然后对生成的新种群TTT进行边界越界处理,对超出边界的个体按式(1)重新生成。
(5)选择Ⅱ
比较新种群和初始种群的适应度值,保留适应度值小的个体并且记录当前最优解和最优个体,同时更新当代种群,具体如式(8)所示:popi={Ti,fitness(Ti)<fitness(popi)popi,otherwise(8)pop_i=\begin{dcases}T_i,\quad\quad fitness(T_i)<fitness(pop_i)\\[2ex]pop_i,\quad \text{otherwise}\end{dcases}\tag{8}popi=⎩⎨⎧Ti,fitness(Ti)<fitness(popi)popi,otherwise(8)重复上述步骤,直至满足终止条件即可。
2、BSA算法伪代码
BSA算法伪代码如下图所示。
图1 BSA算法伪代码
二、仿真实验与结果分析
节点覆盖模型采用0/1模型,请参考这里。
①设监测区域为50m×50m50m\times50m50m×50m的二维平面,传感器节点个数N=35N=35N=35,其感知半径是Rs=5mR_s=5mRs=5m,通信半径Rc=10mR_c=10mRc=10m,迭代500次。初始部署、BSA优化覆盖、BSA算法覆盖率进化曲线如下图所示。
初始部署和最终部署的节点位置及对应的覆盖率分别为:
初始位置:
47.124 47.9344
32.5198 30.4192
4.5342 18.0913
46.4069 4.2561
28.2659 28.5879
46.3592 28.6416
47.9616 34.6558
18.8673 29.756
0.11117 39.4307
14.8831 15.3668
21.089 34.6613
10.1279 31.8318
40.5279 33.284
37.8267 42.3
46.4861 4.868
1.553 6.1206
23.6908 46.7875
33.2589 24.9997
39.0657 20.0988
6.0795 42.5905
39.2437 37.0335
34.4225 48.9753
30.9386 44.1549
46.4969 46.5101
5.3762 10.1219
32.1108 17.3128
7.9179 2.2977
34.038 25.5166
12.1176 22.4935
41.0189 27.5623
27.2771 4.0213
15.9385 16.8411
17.207 3.2149
33.3682 14.7687
44.8786 22.0029
初始覆盖率:0.68589
最优位置:
0 46.5608
28.8421 30.8317
5.6644 18.6004
46.5196 3.4667
28.3778 39.7438
45.5776 29.1696
45.2379 35.0487
18.8673 1.6263
14.0855 40.6004
15.4417 48.4898
21.4952 35.5414
10.7442 32.0443
17.5666 32.7407
38.113 5.556
0.35894 5.5321
1.5414 36.889
23.2231 46.3201
33.7721 24.3522
24.8332 19.816
7.5879 42.1201
37.0714 37.3455
34.4225 47.1616
30.4075 17.1938
45.7491 45.384
5.3762 11.0979
35.1515 13.3957
8.7832 2.5393
20.6683 26.1557
12.1176 22.6683
0.84542 27.4787
27.8354 3.9388
21.4406 11.7861
13.3941 11.2898
45.3908 14.7022
43.9823 22.3353
最优覆盖率:0.8589
②设监测区域为20m×20m20m\times20m20m×20m的二维平面,传感器节点个数N=24N=24N=24,其感知半径是Rs=2.5mR_s=2.5mRs=2.5m,通信半径Rc=5mR_c=5mRc=5m,迭代500次。初始部署、BSA优化覆盖、BSA算法覆盖率进化曲线如下图所示。
初始部署和最终部署的节点位置及对应的覆盖率分别为:
初始位置:
10.1231 12.9502
14.3391 12.1233
13.4715 3.0371
1.2104 5.771
8.725 9.3677
2.0251 0.83083
15.9921 16.03
16.9868 18.041
18.2207 16.1717
9.1811 18.1447
3.9475 17.8618
9.2425 2.7359
1.8625 12.5561
18.5876 11.5972
12.7748 16.9615
15.7844 5.2876
9.1319 15.0238
15.042 14.653
0.38377 12.3122
18.9084 12.5346
1.6442 11.6659
15.8214 11.0128
8.1621 6.7259
17.6736 1.2873
初始覆盖率:0.70975
最优位置:
8.9069 8.3014
18.2393 4.7769
14.0097 17.819
2.2386 17.0904
9.445 17.5835
10.4066 12.174
16.6946 0.69316
0.21363 9.8217
13.8475 7.0866
4.457 1.0457
19.5863 10.5938
7.7861 0.86812
0.072549 1.4563
15.2427 10.5352
4.2111 12.322
12.8047 1.0715
4.984 5.2729
12.6191 14.4157
18.4766 19.9354
10.1765 5.3295
5.3901 9.7
1.7606 5.8059
17.8318 15.9513
5.3892 17.7656
最优覆盖率:0.87755
③设监测区域为100m×100m100m\times100m100m×100m的二维平面,传感器节点个数N=35N=35N=35,其感知半径是Rs=10mR_s=10mRs=10m,通信半径Rc=20mR_c=20mRc=20m,迭代500次。初始部署、BSA优化覆盖、BSA算法覆盖率进化曲线如下图所示。
初始部署和最终部署的节点位置及对应的覆盖率分别为:
初始位置:
17.4147 85.7722
77.2585 45.9465
93.9948 21.9034
93.7464 56.6486
21.2996 84.1832
85.0283 41.7371
94.6524 46.6222
35.0798 72.6364
48.0477 59.5051
74.9584 73.4895
3.9251 5.0775
32.9689 86.4033
83.3193 76.4871
10.8632 67.2208
55.4786 82.9804
17.8693 94.6589
63.2786 46.4459
73.4102 26.4675
45.6915 59.011
2.3292 46.9054
67.5321 26.7515
22.8698 30.6846
35.6113 32.7242
11.9705 30.3345
28.8913 70.4301
52.3793 96.2492
29.054 79.9265
63.5569 10.1929
77.1899 81.7939
65.7461 75.2585
95.1037 75.9692
36.8222 6.2811
78.8527 28.4769
43.9197 17.6966
58.8876 25.9329
初始覆盖率:0.68493
最优位置:
68.362 39.8069
42.4735 40.1471
30.9132 24.0716
93.2503 43.8365
83.3062 54.3827
12.9007 26.1287
92.7266 100
8.444 69.8985
36.2364 7.8423
60.6229 65.3817
75.8586 71.1338
39.758 64.2407
59.1204 13.4932
69.3549 88.4127
8.9913 35.1674
16.7231 7.8267
26.5689 38.3477
89.5034 84.2039
23.995 59.8732
36.0154 94.3748
66.1861 55.3857
15.7094 96.833
98.7229 12.4147
67.7447 7.5694
95.8975 72.1728
9.1492 51.2291
55.319 42.8871
71.2064 21.1396
80.7131 6.5392
9.2481 87.1618
45.4099 23.4949
29.1164 85.5924
88.2643 28.2161
52.035 85.1147
43.1142 74.197
最优覆盖率:0.84982
实验结果表明:BSA算法实现了较高的网络覆盖率,节点分布更加均匀,覆盖盲区和感知范围重叠区面积更少,可以验证BSA算法的有效性。
三、参考文献
[1] Pinar Civicioglu. Backtracking Search Optimization Algorithm for numerical optimization problems[J]. Applied Mathematics and Computation, 2013, 219: 8121-8144.
[2] 魏锋涛, 史云鹏, 石坤. 具有组合变异策略的回溯搜索优化算法[J]. 计算机工程与应用, 2020, 56(9): 41-47.
基于回溯搜索优化算法的WSN覆盖优化相关推荐
- 基于改进鲸鱼优化算法的WSN覆盖优化
文章目录 一.理论基础 1.WSN节点覆盖模型 2.基本鲸鱼算法 3.改进鲸鱼优化算法 (1)量子位Bloch球面初始化 (2)改进搜索猎物过程 (3)莱维飞行扰动策略 二.算法流程 三.仿真实验与分 ...
- 基于流向算法的WSN覆盖优化
文章目录 一.理论基础 1.流向算法 2.FDA算法流程图 二.WSN覆盖优化仿真 1.二维覆盖优化 2.三维覆盖优化 三.参考文献 一.理论基础 1.流向算法 流向算法(Flow Direction ...
- 【布局优化】基于遗传算法的的无线传感器网(WSN)覆盖优化Matlab源码
一.WSN模型 1.1 动机 近年来,随着对等网络.云计算和网格计算等分布式环境的发展,无线传感器网络(WSN)得到了广泛的应用.无线传感器网络(WSN)是一种新兴的计算和网络模式,它可以被定义为一个 ...
- 【WSN定位】基于matlab磷虾群算法求解WSN定位优化问题【含Matlab源码 448期】
⛄一. 磷虾群算法简介 通过研究南极磷虾觅食和生活习性的仿真模拟实验, 2012年Gandomi和Alavi提出了一种处理复杂优化问题的磷虾群算法.KH算法仍然属于粒子智能算法, 它采用实数编码随机产 ...
- 【优化调度】基于matlab帝国企鹅算法求解航空调度优化问题【含Matlab源码 YXS001期】
一.帝企鹅算法简介 目前,关于帝企鹅算法在国内外研究较少,在中对该算法进行了分析,并且与常见的粒子群算法.萤火虫算法进行了对比分析. 帝企鹅从事各种活动,如狩猎.群体觅食,是群居性动物.每当恶劣的气候 ...
- 【布局优化】基于鲸鱼算法实现3D无线传感器网(WSN)覆盖优化 Matlab源码
一.WSN模型 二.鲸鱼算法 2.1. 鲸鱼优化算法的生物机制 图1 座头鲸的泡泡捕食示意图 据研究,鲸鱼大脑的某些区域有与人类相似的梭形细胞,而这些细胞负责人类的判断.情感和社会行为.鲸 ...
- 基于社交网络搜索算法的WSN覆盖优化和工程优化
文章目录 一.理论基础 1.社交网络搜索算法 1.1 情绪1:模仿 1.2 情绪2:对话 1.3 情绪3:争论 1.4 情绪4:创新 2.SNS算法流程图 二.仿真实验与结果分析 1.WSN覆盖优化 ...
- 改进灰狼优化算法在WSN节点部署中的应用
文章目录 一.理论基础 1.节点与覆盖模型 2.灰狼优化算法基本原理 3.改进灰狼优化算法 (1)非线性收敛因子 (2)δ\deltaδ狼的融合变异 二.节点部署优化算法 1.算法步骤 2.算法流程图 ...
- 复现一篇分布式装配置换流水车间调度问题的代码——基于回溯搜索的超启发式算法
复现一篇分布式装配置换流水车间调度问题的代码--基于回溯搜索的超启发式算法 摘要 算法框架 说明 代码 测试类 算法主体 Assignment Heuristics Individual Method ...
最新文章
- java调用、执行groovy代码
- 优化Java序列化– Java,XML,JSON,Kryo,POF
- linux操作系统之线程同步及互斥量
- nginx 电子书_13本免费的电子书,拿走,不谢
- linux网络日志文件,系统日志文件 进程配置文件 进程信息文件 网络连接文件
- Mysql (21)---连接的使用
- vim打造成C++的IDE
- 【linux之bash】
- dcp9020cdn硒鼓!错误_显示硒鼓错误的解决办法
- 英伟达各版本CUDA地址以及与驱动对应关系
- 存储程序式计算机特征,冯.诺依曼机模型是以运算器为中心的存储程序式的计算机模型,它由五大部分构成,即运算器、控制器、存储器、输入设备和输出设备...
- 计算机英语形成性考核册,开放英语1形成性考核册答案(中央广播电视大学外语部)doc...
- selenium中文文档_基于selenium的大麦网演唱会抢票程序
- 网络营销实战密码——策略、技巧、案例(修订版)
- 计算机课前导学结题报告,《导学──自悟》课题研究的结题报告
- css来回摆动,css3 animation(左右摆动) (放大缩小)
- 百度云下载文件方法:PC 和 群晖 Docker
- ORA-15018: diskgroup cannot be created
- L1-020 帅到没朋友(两种方法)
- 范德堡大学排名计算机,【usnews世界大学排名2019】2019范德堡大学排名(USNews排名)...
热门文章
- Element tree树组件 鼠标双击事件
- ajax调用fastreport,使用Ajax更新ASP.Net MVC项目中的报表对象
- Discuz!NT 代码阅读笔记(8)--DNT的几个分页存储过程解析
- JavaScript获取元素
- Spring Cloud Gateway(二):Spring Cloud Gateway整合Eureka应用
- odoo tree 颜色设置decoration
- 屏蔽第三方网站中的百度广告和百度推荐
- 支撑电子政务平台的CMS内容管理系统
- python的上下文管理用哪个关键字_正确理解python中的关键字“with”与上下文管理器...
- 发那科2021参数_FANUC常用参数说明