发明名称 一种基于策略适应性差分进化的全局优化方法
摘要 一种基于策略适应性差分进化的全局优化方法,首先,计算出种群中各个体与当前种群中最优个体之间的距离,并分别根据距离和目标函数值对整个种群进行排名;然后,根据距离排名和目标函数值排名的平均误差值判断当前种群中个体的分布情况,进而判断算法搜索所处的状态,即全局探测和局部搜索,同时对每种搜索状态设置多个不同的变异策略;最后,对于种群中的每个个体从其对应的状态策略池中随机选择一个变异策略来产生新个体,从而达到平衡算法全局探测能力和局部增强能力的效果。本发明有效避免策略选择不当而影响算法的性能、提升优化性能。
申请公布号 CN105678401A 申请公布日期 2016.06.15
申请号 CN201511010201.0 申请日期 2015.12.29
申请人 浙江工业大学 发明人 张贵军;周晓根;俞旭锋;郝小虎;徐东伟;李章维
分类号 G06Q10/04(2012.01)I;G06N3/12(2006.01)I 主分类号 G06Q10/04(2012.01)I
代理机构 杭州斯可睿专利事务所有限公司 33241 代理人 王利强
主权项 一种基于策略适应性差分进化的全局优化方法,其特征在于:所述优化方法包括以下步骤:1)初始化:设置种群规模N<sub>P</sub>,初始交叉概率C<sub>R</sub>,初始增益常数F;2)随机生成初始种群P={x<sup>1,g</sup>,x<sup>2,g</sup>,...,x<sup>Np,g</sup>},并计算出各个体的目标函数值,其中,g为进化代数,x<sup>i,g</sup>,i=1,2,…,Np表示第g代种群中的第i个个体,若g=0,则表示初始种群;3)根据各个体x<sup>i,g</sup>的目标函数值f(x<sup>i,g</sup>)对各个体进行降序排列,并记下各个体的排名F<sup>i,g</sup>,并找出当前种群中的最优个体x<sup>best,g</sup>,其中,F<sup>i,g</sup>表示第g代种群中第i个个体的目标函数值排名;4)根据公式(1)计算出初始种群中各个体与最优个体x<sup>best,g</sup>之间的距离d<sup>i,g</sup>;<maths num="0001"><math><![CDATA[<mrow><msup><mi>d</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msup><mo>=</mo><mrow><mo>(</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>N</mi><mi>p</mi></msub></munderover><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mi>i</mi><mo>+</mo><mn>1</mn></mrow><msub><mi>N</mi><mi>P</mi></msub></munderover><msqrt><mrow><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msup><mrow><mo>(</mo><mrow><msubsup><mi>x</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>-</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>b</mi><mi>e</mi><mi>s</mi><mi>t</mi><mo>,</mo><mi>g</mi></mrow></msubsup></mrow><mo>)</mo></mrow><mn>2</mn></msup></mrow></msqrt><mo>)</mo></mrow><mo>/</mo><mrow><mo>(</mo><msub><mi>N</mi><mi>p</mi></msub><mo>(</mo><mrow><msub><mi>N</mi><mi>p</mi></msub><mo>-</mo><mn>1</mn></mrow><mo>)</mo><mo>/</mo><mn>2</mn><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000894145820000011.GIF" wi="1382" he="166" /></maths>其中,d<sup>i,g</sup>表示第g代种群中第<u>i</u>个个体与最优个体x<sup>best,g</sup>之间的距离,<img file="FDA0000894145820000012.GIF" wi="78" he="77" />表示第g代种群中第<u>i</u>个个体x<sup>i,g</sup>的第j维元素,<img file="FDA0000894145820000013.GIF" wi="127" he="79" />表示第g代种群中第<u>最优</u>个体x<sup>best,g</sup>的第j维元素,N为问题维数,N<sub>P</sub>为种群规模;5)根据各个体与最优个体之间的距离d<sup>i,g</sup>进行降序排列,并记下各个体的排名D<sup>i,g</sup>,D<sup>i,g</sup>表示第g代种群中第i个个体的距离排名;6)根据式(2)计算每一代中目标值排名和距离排名的平均误差值E<sup>g</sup>:<maths num="0002"><math><![CDATA[<mrow><msup><mi>E</mi><mi>g</mi></msup><mo>=</mo><mfrac><mn>1</mn><msub><mi>N</mi><mi>p</mi></msub></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>N</mi><mi>p</mi></msub></munderover><mo>|</mo><mrow><msup><mi>F</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msup><mo>-</mo><msup><mi>D</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msup></mrow><mo>|</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000894145820000014.GIF" wi="1123" he="158" /></maths>其中E<sup>g</sup>表示第g代种群的平均误差值;7)根据公式(3)将平均误差值E<sup>g</sup>进行归一化处理:<maths num="0003"><math><![CDATA[<mrow><msup><mover><mi>E</mi><mo>&OverBar;</mo></mover><mi>g</mi></msup><mo>=</mo><mfrac><mrow><msup><mi>E</mi><mi>g</mi></msup><mo>-</mo><msubsup><mi>E</mi><mrow><mi>m</mi><mi>i</mi><mi>n</mi></mrow><mi>g</mi></msubsup></mrow><mrow><msubsup><mi>E</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow><mi>g</mi></msubsup><mo>-</mo><msubsup><mi>E</mi><mrow><mi>m</mi><mi>i</mi><mi>n</mi></mrow><mi>g</mi></msubsup></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000894145820000015.GIF" wi="1046" he="141" /></maths>其中,<img file="FDA0000894145820000016.GIF" wi="77" he="63" />表示平均误差值E<sup>g</sup>的归一化值,平均误差值<img file="FDA0000894145820000017.GIF" wi="93" he="70" />表示E<sup>g</sup>的最小值,取值始终为0,<img file="FDA0000894145820000018.GIF" wi="102" he="70" />为E<sup>g</sup>的最大值,当种群规模N<sub>p</sub>为偶数时,<img file="FDA0000894145820000019.GIF" wi="294" he="79" />当种群规模N<sub>p</sub>为奇数时,<maths num="0004"><math><![CDATA[<mrow><msubsup><mi>E</mi><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow><mi>g</mi></msubsup><mo>=</mo><mrow><mo>(</mo><msup><msub><mi>N</mi><mi>p</mi></msub><mn>2</mn></msup><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>/</mo><mn>2</mn><msub><mi>N</mi><mi>p</mi></msub><mo>;</mo></mrow>]]></math><img file="FDA00008941458200000110.GIF" wi="468" he="82" /></maths>8)判断进化过程所处的状态,对种群中的每个个体随机选择变异策略进行变异:8.1)如果<img file="FDA00008941458200000111.GIF" wi="341" he="70" />则算法处于全局探测阶段,根据式(4)进行变异:<maths num="0005"><math><![CDATA[<mrow><msubsup><mi>v</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msubsup><mi>x</mi><mi>j</mi><mrow><mi>p</mi><mi>b</mi><mi>e</mi><mi>s</mi><mi>t</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>+</mo><mi>F</mi><mo>&CenterDot;</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>a</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>-</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>b</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>)</mo></mrow><mo>,</mo></mrow></mtd><mtd><mrow><mi>i</mi><mi>f</mi><mi> </mi><mi>r</mi><mi>a</mi><mi>n</mi><mi>d</mi><mi>n</mi><mrow><mo>(</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>)</mo></mrow><mo>=</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mi>x</mi><mi>j</mi><mrow><mi>a</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>+</mo><mi>F</mi><mo>&CenterDot;</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>p</mi><mi>b</mi><mi>e</mi><mi>s</mi><mi>t</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>-</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>a</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>)</mo></mrow><mo>+</mo><mi>F</mi><mo>&CenterDot;</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>b</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>-</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>c</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>)</mo></mrow><mo>,</mo></mrow></mtd><mtd><mrow><mi>i</mi><mi>f</mi><mi> </mi><mi>r</mi><mi>a</mi><mi>n</mi><mi>d</mi><mi>n</mi><mrow><mo>(</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>)</mo></mrow><mo>=</mo><mn>2</mn></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mi>x</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>+</mo><mi>F</mi><mo>&CenterDot;</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>p</mi><mi>b</mi><mi>e</mi><mi>s</mi><mi>t</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>-</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>)</mo></mrow><mo>+</mo><mi>F</mi><mo>&CenterDot;</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>a</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>-</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>b</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>)</mo></mrow><mo>,</mo></mrow></mtd><mtd><mrow><mi>o</mi><mi>t</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>w</mi><mi>i</mi><mi>s</mi><mi>e</mi></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000894145820000021.GIF" wi="1534" he="238" /></maths>8.2)如果<img file="FDA0000894145820000022.GIF" wi="343" he="70" />则算法处在局部搜索阶段,则根据式(5)进行变异:<maths num="0006"><math><![CDATA[<mrow><msubsup><mi>v</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msubsup><mi>x</mi><mi>j</mi><mrow><mi>b</mi><mi>e</mi><mi>s</mi><mi>t</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>+</mo><mi>F</mi><mo>&CenterDot;</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>a</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>-</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>b</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>)</mo></mrow><mo>,</mo></mrow></mtd><mtd><mrow><mi>i</mi><mi>f</mi><mi> </mi><mi>r</mi><mi>a</mi><mi>n</mi><mi>d</mi><mi>n</mi><mrow><mo>(</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>)</mo></mrow><mo>=</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mi>x</mi><mi>j</mi><mrow><mi>a</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>+</mo><mi>F</mi><mo>&CenterDot;</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>b</mi><mi>e</mi><mi>s</mi><mi>t</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>-</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>a</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>)</mo></mrow><mo>+</mo><mi>F</mi><mo>&CenterDot;</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>b</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>-</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>c</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>)</mo></mrow><mo>,</mo></mrow></mtd><mtd><mrow><mi>i</mi><mi>f</mi><mi> </mi><mi>r</mi><mi>a</mi><mi>n</mi><mi>d</mi><mi>n</mi><mrow><mo>(</mo><mn>1</mn><mo>,</mo><mn>3</mn><mo>)</mo></mrow><mo>=</mo><mn>2</mn></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mi>x</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>+</mo><mi>F</mi><mo>&CenterDot;</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>b</mi><mi>e</mi><mi>s</mi><mi>t</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>-</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>)</mo></mrow><mo>+</mo><mi>F</mi><mo>&CenterDot;</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>a</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>-</mo><msubsup><mi>x</mi><mi>j</mi><mrow><mi>b</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>)</mo></mrow><mo>,</mo></mrow></mtd><mtd><mrow><mi>o</mi><mi>t</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>w</mi><mi>i</mi><mi>s</mi><mi>e</mi></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000894145820000023.GIF" wi="1524" he="245" /></maths>在8.1)和8.2)中,rand(0,1)表示在区间[0,1]之间随机生成一个小数,j=1,2,…,N,N为问题维数,g为进化代数,randn(1,3)表示在区间[1,3]之间随机生成一个整数,a,b,c∈{1,2,...,N<sub>p</sub>},a≠b≠c≠i,i为当前目标个体的索引,<img file="FDA0000894145820000024.GIF" wi="72" he="78" />为第g代种群中第i个目标个体的变异个体的第j维元素,<img file="FDA0000894145820000025.GIF" wi="308" he="78" />分别为第g代种群中第a、b、c个个体的第j维元素,<img file="FDA0000894145820000026.GIF" wi="131" he="85" />为从0.5N<sub>p</sub>randb(0,1)个个体中随机选取的最优个体的第j维元素,randb(0,1)表示随机产生0到1之间的小数,<img file="FDA0000894145820000027.GIF" wi="118" he="77" />为当前第g代种群中的最优个体的第j维元素,F表示增益常数;9)根据公式(6)对每个变异个体进行交叉生成新个体trial<sup>i,g</sup>:<maths num="0007"><math><![CDATA[<mrow><msubsup><mi>trial</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><msubsup><mi>v</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msubsup></mtd><mtd><mtable><mtr><mtd><mrow><mi>i</mi><mi>f</mi><mrow><mo>(</mo><mi>r</mi><mi>a</mi><mi>n</mi><mi>d</mi><mi>b</mi><mo>(</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo>)</mo></mrow><mo>&le;</mo><msub><mi>C</mi><mi>R</mi></msub></mrow></mtd><mtd><mrow><mi>o</mi><mi>r</mi></mrow></mtd><mtd><mrow><mi>j</mi><mo>=</mo><mi>r</mi><mi>n</mi><mi>b</mi><mi>r</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mtd></mtr><mtr><mtd><msubsup><mi>x</mi><mi>j</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msubsup></mtd><mtd><mrow><mi>o</mi><mi>t</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>w</mi><mi>i</mi><mi>s</mi><mi>e</mi></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000894145820000028.GIF" wi="1438" he="160" /></maths>其中,j=1,2,…,N,<img file="FDA0000894145820000029.GIF" wi="142" he="71" />表示第g代种群中第i个目标个体对应的新个体trial<sup>i,g</sup>的第j维元素,randb(0,1)表示为随机产生0到1之间的小数,rnbr(j)表示随机产生1到N之间的整数,C<sub>R</sub>表示交叉概率;10)根据公式(7)对每个新个体进行种群更新:<maths num="0008"><math><![CDATA[<mrow><msup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi><mo>+</mo><mn>1</mn></mrow></msup><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msup><mi>trial</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msup><mo>,</mo></mrow></mtd><mtd><mrow><mi>i</mi><mi>f</mi><mi> </mi><mi>f</mi><mrow><mo>(</mo><msup><mi>trial</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msup><mo>)</mo></mrow><mo>&le;</mo><mi>f</mi><mrow><mo>(</mo><msup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msup><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msup><mo>,</mo></mrow></mtd><mtd><mrow><mi>o</mi><mi>t</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>w</mi><mi>i</mi><mi>s</mi><mi>e</mi></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA00008941458200000210.GIF" wi="1277" he="149" /></maths>其中,<maths num="0009"><math><![CDATA[<mrow><msup><mi>trial</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msup><mo>=</mo><mrow><mo>(</mo><msubsup><mi>trial</mi><mn>1</mn><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>,</mo><msubsup><mi>trial</mi><mn>2</mn><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>trial</mi><mi>N</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi></mrow></msubsup><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA00008941458200000211.GIF" wi="724" he="72" /></maths><maths num="0010"><math><![CDATA[<mrow><msup><mi>x</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi><mo>+</mo><mn>1</mn></mrow></msup><mo>=</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mn>1</mn><mrow><mi>i</mi><mo>,</mo><mi>g</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>,</mo><msubsup><mi>x</mi><mn>2</mn><mrow><mi>i</mi><mo>,</mo><mi>g</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>x</mi><mi>N</mi><mrow><mi>i</mi><mo>,</mo><mi>g</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA00008941458200000212.GIF" wi="614" he="71" /></maths><img file="FDA00008941458200000213.GIF" wi="123" he="61" /><img file="FDA00008941458200000214.GIF" wi="378" he="71" />公式(7)表明,如果新个体优于目标个体,则新个体替换目标个体,否则保持目标个体不变;11)判断是否满足终止条件,如果满足,则保存结果并退出,否则返回步骤3)。
地址 310014 浙江省杭州市下城区朝晖六区潮王路18号浙江工业大学