发明名称 一种基于遗传算法的无线传感网多目标优化路由方法
摘要 一种基于遗传算法的无线传感网多目标优化路由方法,该方法利用基站的存储空间充裕、能量充足和计算能力强的优势,采用全局搜索无线多媒体传感器网络多路径多目标优化路由的策略,在基于前向邻居概念的网络模型和多目标优化函数的基础上,设计特定的编码方案及选择、交叉、变异算子。本发明结构简单,引入了遗传算法和Pareto多目优化方法,设计特定的编码方案及选择、交叉、变异算子,最终实现优化求解,在全局范围内搜索WMSNs多路径多目标优化路由,提高了方法稳定性,在多路径多目标优化上可行、有效。
申请公布号 CN105430707A 申请公布日期 2016.03.23
申请号 CN201510740359.7 申请日期 2015.11.03
申请人 国网江西省电力科学研究院;国家电网公司;国网江西省电力公司;河南许继仪表有限公司 发明人 曾伟;叶远誉;范瑞祥;江峰;郝玉国;刘永光;王军;方旭
分类号 H04W40/04(2009.01)I 主分类号 H04W40/04(2009.01)I
代理机构 南昌市平凡知识产权代理事务所 36122 代理人 姚伯川
主权项 一种基于遗传算法的无线传感网多目标优化路由方法,其特征在于,包括以下步骤:(1)随机生成网络拓扑,初始化参数;基站收集网络初始信息,得到网络的各个节点的前向邻居矩阵A、可靠性性矩阵Re、时延矩阵De、能量矩阵E、时延抖动矩阵Jit和带宽矩阵SNR;(2)根据前向邻居矩阵A找源节点的代理源节点集NB和数目length<sub>NB</sub>,初始化最优路径解集MM_Path=Φ;初始化i=1;(3)如果i≤length<sub>NB</sub>,则执行(4),否则执行(13);(4)置StartN=NN(i),生成父代种群father和子代种群child;置Counter=1,初始化bestPath=Φ;用节点ID号表示染色体中的基因,则一个染色体是由source节点到sink节点的路径上的节点ID号序列组成;每条染色体的第一个基因为source节点ID号,最后一个基因为sink节点ID号;每相邻的两个基因为WMSNs一条实际存在可相互通信的链路;假设网络的节点个数为n,source节点ID号为k=1,sink节点ID号m=n,则对应的染色体可表示为一个有序序列:<1…i…j…n>,1<i,j<n且i≠j;(5)如果Counter&lt;λ,则执行(6),否则执行Stepll,λ为迭代次数;(6)将种群father和child合群为farm,对farm的每个个体计算其适应度值,求Pareto最优解集,对最优解集i约束,得到本次迭代最优解集并保存在bestPath中;(7)对本代最优解集之外的个体解码、计算其适应度值,按照个体的适应度升序排列,根据排序号计算选择概率,计算轮盘赌选择区域,按轮盘赌选择方法选择个体;多路径多目标优化函数构造适应度函数为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>fit</mi><mi>i</mi></msub><mo>=</mo><mfrac><mrow><mn>1</mn><mo>+</mo><msub><mi>d</mi><mi>max</mi></msub><mo>-</mo><msub><mi>del</mi><mi>i</mi></msub></mrow><mrow><mn>1</mn><mo>+</mo><msub><mi>d</mi><mi>max</mi></msub><mo>-</mo><msub><mi>d</mi><mi>min</mi></msub></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>+</mo><msub><mi>rel</mi><mi>i</mi></msub><mo>-</mo><msub><mi>r</mi><mi>max</mi></msub></mrow><mrow><mn>1</mn><mo>+</mo><msub><mi>r</mi><mi>max</mi></msub><mo>-</mo><msub><mi>r</mi><mi>min</mi></msub></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>+</mo><msub><mi>e</mi><mi>max</mi></msub><mo>-</mo><msub><mi>e</mi><mi>i</mi></msub></mrow><mrow><mn>1</mn><mo>+</mo><msub><mi>e</mi><mi>max</mi></msub><mo>-</mo><msub><mi>e</mi><mi>min</mi></msub></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>+</mo><msub><mi>snr</mi><mi>i</mi></msub><mo>-</mo><msub><mi>s</mi><mi>min</mi></msub></mrow><mrow><mn>1</mn><mo>+</mo><msub><mi>s</mi><mi>max</mi></msub><mo>-</mo><msub><mi>s</mi><mi>min</mi></msub></mrow></mfrac><mo>+</mo><mfrac><mrow><mn>1</mn><mo>+</mo><msub><mi>j</mi><mi>max</mi></msub><mo>-</mo><msub><mi>jit</mi><mi>i</mi></msub></mrow><mrow><mn>1</mn><mo>+</mo><msub><mi>j</mi><mi>max</mi></msub><mo>-</mo><msub><mi>j</mi><mi>min</mi></msub></mrow></mfrac></mrow>]]></math><img file="FDA0000837398810000011.GIF" wi="1621" he="143" /></maths>其中,del<sub>i</sub>、rel<sub>i</sub>、e<sub>i</sub>、snr<sub>i</sub>、jit<sub>i</sub>分别表示种群中第i个个体的网络时延、可靠性、剩余能量、传输速率、时延抖动大小;d<sub>max</sub>和d<sub>min</sub>分别表示种群中第i个个体的网络时延的最大值和最小值;r<sub>max</sub>和r<sub>min</sub>分别表示种群中第i个个体的可靠性的最大值和最小值;e<sub>max</sub>和e<sub>min</sub>分别表示种群中第i个个体的剩余能量的最大值和最小值;s<sub>max</sub>和s<sub>min</sub>分别表示种群中第i个个体的传输速率的最大值和最小值;j<sub>max</sub>和j<sub>min</sub>分别表示种群中第i个个体的时延抖动大小的最大值和最小值;根据个体是否满足时延约束和可靠性约束的情况,对其适应度值给以适当的奖惩,时延和可靠性的奖惩函数分别构造为:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>qd</mi><mi>i</mi></msub><mo>=</mo><mfrac><mrow><msup><mrow><mo>(</mo><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mi>k</mi></msup><mrow><mo>(</mo><msub><mi>del</mi><mi>i</mi></msub><mo>-</mo><mi>d</mi><mi>c</mi><mo>)</mo></mrow></mrow><mrow><msup><mrow><mo>(</mo><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mi>k</mi></msup><mo>+</mo><msub><mi>del</mi><mi>i</mi></msub><mo>-</mo><mi>d</mi><mi>c</mi></mrow></mfrac><mo>,</mo><mfenced open = '{' close = ''><mtable><mtr><mtd><mrow><msub><mi>del</mi><mi>i</mi></msub><mo>-</mo><mi>d</mi><mi>c</mi><mo>&le;</mo><mn>0</mn><mo>,</mo><mi>k</mi><mo>=</mo><mn>1</mn><mo>;</mo></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>del</mi><mi>i</mi></msub><mo>-</mo><mi>d</mi><mi>c</mi><mo>&gt;</mo><mn>0</mn><mo>,</mo><mi>k</mi><mo>=</mo><mn>2</mn><mo>;</mo></mrow></mtd></mtr></mtable></mfenced><msub><mi>qr</mi><mi>i</mi></msub><mo>=</mo><mfrac><mrow><msup><mrow><mo>(</mo><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mi>k</mi></msup><mrow><mo>(</mo><msub><mi>rel</mi><mi>i</mi></msub><mo>-</mo><mi>r</mi><mi>c</mi><mo>)</mo></mrow></mrow><mrow><msup><mrow><mo>(</mo><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mi>k</mi></msup><mo>+</mo><msub><mi>rel</mi><mi>i</mi></msub><mo>-</mo><mi>r</mi><mi>c</mi></mrow></mfrac><mo>,</mo><mfenced open = '{' close = ''><mtable><mtr><mtd><mrow><msub><mi>rel</mi><mi>i</mi></msub><mo>-</mo><mi>r</mi><mi>c</mi><mo>&le;</mo><mn>0</mn><mo>,</mo><mi>k</mi><mo>=</mo><mn>1</mn><mo>;</mo></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>rel</mi><mi>i</mi></msub><mo>-</mo><mi>r</mi><mi>c</mi><mo>&gt;</mo><mn>0</mn><mo>,</mo><mi>k</mi><mo>=</mo><mn>2</mn><mo>;</mo></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000837398810000021.GIF" wi="1702" he="159" /></maths>其中dc,rc分别为时延和可靠性的约束值,如果满足约束,则qd<sub>i</sub>和qr<sub>i</sub>值为正,个体的适应值得到奖励,否则qd<sub>i</sub>和qr<sub>i</sub>值为负,个体的适应值得到惩罚;综上所述,可得个体适应度计算函数Fit(i):Fit(i)=fit<sub>i</sub>+qd<sub>i</sub>+qr<sub>i</sub>;(8)将最优解集和根据轮盘赌选择出种群初始规模大小的个体作为新一代种群f,保存副本为父代father;采用按个体适应度轮盘赌方法和Pareto Front两种选择方法相结合的选择策略;首先对每一代父种群和子种群采用Pareto Front选择多目标最优解集,将其保存在最优解集中,并选择其为下一代种群的部分个体;通过使用Pareto Front在父代、规模为2N的子代种群选择出来的最优解数小于初始化种群的规模N,通过设计选择概率函数和使用轮盘赌方法选择个体并补充到下一代中,以保证种群规模不变;在轮盘赌选择法中各个个体的选择概率和其适应度值成比例;设群体大小为n,其中个体i的适应度为f(i),则个体i被选择的概率如公式<img file="FDA0000837398810000022.GIF" wi="477" he="134" />所示;首先将种群中的个体按照个体的适应值升序排序,记录每个个体的排序号;然后将个体的排序号作为其适应值,即Fit(i)=i,i为个体排序号;按照公式<img file="FDA0000837398810000031.GIF" wi="541" he="135" />将选择概率转换为轮盘赌随机选择区域;(9)种群f根据交叉概率和变异概率分别进行单点交叉和变异生成新一代种群,保存副本记为child;(9.1)根据个体和种群的适应度设计交叉概率,用<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mi>P</mi><mi>c</mi></msub><mo>=</mo><mfenced open = '{' close = ''><mtable><mtr><mtd><msub><mi>p</mi><mrow><mi>c</mi><mn>1</mn></mrow></msub><mo>,</mo><mn>0.5</mn><mo>(</mo><mi>f</mi><mi>i</mi><msub><mi>t</mi><mi>i</mi></msub><mo>+</mo><mi>f</mi><mi>i</mi><msub><mi>t</mi><mi>j</mi></msub><mo>)</mo><mo>&le;</mo><mi>f</mi><mi>i</mi><msub><mi>t</mi><mrow><mi>o</mi><mi>v</mi><mi>e</mi><mi>r</mi></mrow></msub></mtd></mtr><mtr><mtd><mrow><msub><mi>p</mi><mrow><mi>c</mi><mn>1</mn></mrow></msub><mo>-</mo><mfrac><mrow><mo>(</mo><msub><mi>p</mi><mrow><mi>c</mi><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>p</mi><mrow><mi>c</mi><mn>2</mn></mrow></msub><mo>)</mo><mo>(</mo><mn>0.5</mn><mo>(</mo><mrow><msub><mi>fit</mi><mi>i</mi></msub><mo>+</mo><msub><mi>fit</mi><mi>j</mi></msub></mrow><mo>)</mo><mo>-</mo><msub><mi>fit</mi><mrow><mi>o</mi><mi>v</mi><mi>e</mi><mi>r</mi></mrow></msub><mo>)</mo></mrow><mrow><msub><mi>fit</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub><mo>-</mo><msub><mi>fit</mi><mrow><mi>o</mi><mi>v</mi><mi>e</mi><mi>r</mi></mrow></msub></mrow></mfrac><mo>,</mo><mi>o</mi><mi>t</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>s</mi></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000837398810000032.GIF" wi="1068" he="238" /></maths>表示;其中,p<sub>c1</sub>和p<sub>c2</sub>为常数且0<p<sub>c2</sub><p<sub>c1</sub><1,fit<sub>i</sub>和fit<sub>j</sub>分别为随机选中的进行交叉的两个个体的适应度值,fit<sub>over</sub>为当前种群的平均适应度值,fit<sub>max</sub>为当前种群的最大个体适应度值;(9.2)生成新的链路,具体过程如下:a)随机产生一个变异基因位i作为变异点,除了i位之外,其它的基因位保持不变(i≠1且i≠n);b)第i位基因变异为v<sub>i‑1</sub>的前向邻居节点和v<sub>i+1</sub>的后向邻居节点的交集中的某一节点,即第i位基因变异的范围为C=F<sub>i‑1</sub>∩B<sub>i+1</sub>;如果C=φ,则第i位基因不发生变异,否则按照变异概率P<sub>m</sub>在集合C中随机选择某一元素进行替换;变异概率P<sub>m</sub>表示为:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mi>P</mi><mi>m</mi></msub><mo>=</mo><mrow><mo>{</mo><mrow><mtable><mtr><mtd><msub><mi>p</mi><mrow><mi>m</mi><mn>1</mn></mrow></msub><mo>,</mo><mi>f</mi><mi>i</mi><msub><mi>t</mi><mi>i</mi></msub><mo>&le;</mo><mi>f</mi><mi>i</mi><msub><mi>t</mi><mrow><mi>o</mi><mi>v</mi><mi>e</mi><mi>r</mi></mrow></msub></mtd></mtr><mtr><mtd><mrow><msub><mi>p</mi><mrow><mi>m</mi><mn>1</mn></mrow></msub><mo>-</mo><mfrac><mrow><mo>(</mo><msub><mi>p</mi><mrow><mi>m</mi><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>p</mi><mrow><mi>m</mi><mn>2</mn></mrow></msub><mo>)</mo><mo>(</mo><msub><mi>fit</mi><mi>i</mi></msub><mo>-</mo><msub><mi>fit</mi><mrow><mi>o</mi><mi>v</mi><mi>e</mi><mi>r</mi></mrow></msub><mo>)</mo></mrow><mrow><msub><mi>fit</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub><mo>-</mo><msub><mi>fit</mi><mrow><mi>o</mi><mi>v</mi><mi>e</mi><mi>r</mi></mrow></msub></mrow></mfrac></mrow></mtd></mtr></mtable><mo>,</mo><mi>o</mi><mi>t</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>s</mi></mrow></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000837398810000033.GIF" wi="918" he="230" /></maths>其中,p<sub>m1</sub>和p<sub>m2</sub>为常数,且0<p<sub>m2</sub><p<sub>m1</sub><1,fit<sub>i</sub>、fit<sub>over</sub>和fit<sub>max</sub>表示的意义同(9.1);(10)设Counter'=Counter+1,执行(5);(11)从best Path中Pareto排序选择一条路径作为以当前虚拟点为起点的最优路径,并将其保存在MM_Path中,同时将该路径上的所有节点标记为不可用;(11.1)设source节点为v<sub>i</sub>,置path=<1>,置当前搜索节点v<sub>i</sub>=v<sub>1</sub>;(11.2)判断当前搜索节点v<sub>i</sub>,是否为sink节点,若是则执行(11.5),否则执行(11.3);(11.3)依据邻接矩阵A判断当前搜索节点v<sub>i</sub>,的前向邻居节点集合F<sub>i</sub>是否为空集,若是则执行回退操作,否则执行(11.4);(11.4)将F<sub>i</sub>的成员按照其距sink节点的距离d<sub>jn</sub>(其中令d<sub>nn</sub>=1)降序排列得<img file="FDA0000837398810000041.GIF" wi="405" he="79" />为F<sub>i</sub>按照d<sub>jn</sub>降序排列的顺序号;对<img file="FDA0000837398810000042.GIF" wi="69" he="78" />做如下变换:<img file="FDA0000837398810000043.GIF" wi="581" he="79" />其中w为常数,v<sub>j</sub>∈F<sub>i</sub>;计算F<sub>i</sub>的成员成为下一跳转发节点的选择概率:<img file="FDA0000837398810000044.GIF" wi="445" he="79" />其中D<sub>i</sub>={d<sub>jn</sub>|v<sub>j</sub>∈F<sub>I</sub>},若v<sub>j</sub>被选为下一跳节点,将v<sub>j</sub>加入path中:path=<1…j>;将v<sub>j</sub>作为当前搜索节点v<sub>i</sub>,执行(11.2);(11.5)输出path;(12)令i=i+1,执行(5);(13)输出MM_Path。
地址 330096 江西省南昌市民营科技园民强路88号