发明名称 一种改进和声搜索算法求解非线性规划及绝对值方程的方法
摘要 发明公开了一种改进和声搜索算法求解非线性规划及绝对值方程的方法。求解非线性规划包括:定义问题与和参数值;初始化和声记忆库;通过学和声记忆库、嵌入正态分布的音调微调、随机选择音调生成新的和声;对新解进行评估;检查是否达到算法终止条件;求解绝对值方程方法为:定义问题与参数值;初始化和声记忆库;通过学和声记忆库、音调微调、随机选择音调生成新的和声,设定一个概率WSR,通过比较随机数Rand与WSR来选取待更新的和声;之后对新解进行评估;检查是否达到算法终止条件。本发明应用改进后的算法求解了非线性规划及绝对值方程,提高了数值稳定性、运算速度和精度。
申请公布号 CN103631758A 申请公布日期 2014.03.12
申请号 CN201310624762.4 申请日期 2013.11.21
申请人 陕西理工学院 发明人 雍龙泉
分类号 G06F17/10(2006.01)I 主分类号 G06F17/10(2006.01)I
代理机构 代理人
主权项 1.一种改进和声搜索算法求解非线性规划的方法,其特征在于,该改进和声搜索算法求解非线性规划的方法包括以下步骤:第一步,定义问题与参数值:假设问题为最小化,形式如下minf(x),s.t.x<sub>i</sub>∈X<sub>i</sub>,i=1,2,…,N,f(x)是目标函数,x是由决策变量x<sub>i</sub>构成的解向量(i=1,2,…,N),每一个变量的值域为X<sub>i</sub>:x<sub>i</sub><sup>L</sup>≤X<sub>i</sub>≤x<sub>i</sub><sup>U</sup>,N为决策变量个数,算法参数有:和声记忆库的大小、学习和声记忆库概率、音调微调概率、音调微调带宽、创作的次数;第二步,初始化和声记忆库:随机生成HMS个和声x<sup>1</sup>,x<sup>2</sup>,…,x<sup>HMS</sup>放入和声记忆库,和声记忆库可以类比于遗传算法中的种群,和声记忆库如下:<![CDATA[<math><mrow><mi>HM</mi><mo>=</mo><mfenced open='[' close=''><mtable><mtr><mtd><msup><mi>x</mi><mn>1</mn></msup></mtd></mtr><mtr><mtd><msup><mi>x</mi><mn>2</mn></msup></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><msup><mi>x</mi><mi>HMS</mi></msup></mtd></mtr></mtable></mfenced><mo>|</mo><mfenced open='' close=']'><mtable><mtr><mtd><mi>f</mi><mrow><mo>(</mo><msup><mi>x</mi><mn>1</mn></msup><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mi>f</mi><mrow><mo>(</mo><msup><mi>x</mi><mn>2</mn></msup><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mi>f</mi><mrow><mo>(</mo><msup><mi>x</mi><mi>HMS</mi></msup><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='[' close=''><mtable><mtr><mtd><msubsup><mi>x</mi><mn>1</mn><mn>1</mn></msubsup></mtd><mtd><msubsup><mi>x</mi><mn>2</mn><mn>1</mn></msubsup></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msubsup><mi>x</mi><mi>N</mi><mn>1</mn></msubsup></mtd></mtr><mtr><mtd><msubsup><mi>x</mi><mn>1</mn><mn>2</mn></msubsup></mtd><mtd><msubsup><mi>x</mi><mn>2</mn><mn>2</mn></msubsup></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msubsup><mi>x</mi><mi>N</mi><mn>2</mn></msubsup></mtd></mtr><mtr><mtd><mo>.</mo></mtd><mtd><mo>.</mo></mtd><mtd></mtd><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd><mtd><mo>.</mo></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd><mtd><mo>.</mo></mtd><mtd></mtd><mtd><mo>.</mo></mtd></mtr><mtr><mtd><msubsup><mi>x</mi><mn>1</mn><mi>HMS</mi></msubsup></mtd><mtd><msubsup><mi>x</mi><mn>2</mn><mi>HMS</mi></msubsup></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msubsup><mi>x</mi><mi>N</mi><mi>HMS</mi></msubsup></mtd></mtr></mtable></mfenced><mo>|</mo><mfenced open='' close=']'><mtable><mtr><mtd><mi>f</mi><mrow><mo>(</mo><msup><mi>x</mi><mn>1</mn></msup><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mi>f</mi><mrow><mo>(</mo><msup><mi>x</mi><mn>2</mn></msup><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mi>f</mi><mrow><mo>(</mo><msup><mi>x</mi><mi>HMS</mi></msup><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>;</mo></mrow></math>]]></maths>第三步,生成一个新的和声:生成新的和声x<sub>i</sub>′=(x′<sub>1</sub>,x′<sub>2</sub>,…,x′<sub>N</sub>),新和声的每一个音调x<sub>i</sub>′(i=1,2,…,N)通过以下三种机理产生,学习和声记忆库,音调微调,随机选择音调;新解的第一个变量x′<sub>1</sub>有HMCR的概率选自HM中<img file="FSA0000098294030000012.GIF" wi="209" he="62" />的任何一个值,有1-HCMR的概率选自HM外,且在变量范围内的任何一个值,同样的,其它变量的生成方式如下:<![CDATA[<math><mrow><msubsup><mi>x</mi><mi>i</mi><mo>&prime;</mo></msubsup><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>x</mi><mi>i</mi><mo>&prime;</mo></msubsup><mo>&Element;</mo><mrow><mo>(</mo><msubsup><mi>x</mi><mi>i</mi><mn>1</mn></msubsup><mo>,</mo><msubsup><mi>x</mi><mi>i</mi><mn>2</mn></msubsup><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msubsup><mi>x</mi><mi>i</mi><mi>HMS</mi></msubsup><mo>)</mo></mrow><mo>,</mo></mtd><mtd><mi>ifrand</mi><mo>&lt;</mo><mi>HMCR</mi></mtd></mtr><mtr><mtd><msubsup><mi>x</mi><mi>i</mi><mo>&prime;</mo></msubsup><mo>&Element;</mo><msub><mi>X</mi><mi>i</mi></msub><mo>,</mo></mtd><mtd><mi>otherwise</mi></mtd></mtr></mtable></mfenced><mo>;</mo><mrow><mo>(</mo><mi>i</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>N</mi><mo>)</mo></mrow></mrow></math>]]></maths>rand表示[0,1]上的均匀分布的随机数;其次,如果新的和声x′<sub>i</sub>来自和声记忆库HM,音调微调时采用如下操作<![CDATA[<math><mrow><msubsup><mi>x</mi><mi>i</mi><mo>&prime;</mo></msubsup><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>x</mi><mi>i</mi><mo>&prime;</mo></msubsup><mo>+</mo><mi>NR</mi><mo>&times;</mo><mi>bw</mi><mo>,</mo></mtd><mtd><mi>ifrand</mi><mo>&lt;</mo><mi>PAR</mi></mtd></mtr><mtr><mtd><msubsup><mi>x</mi><mi>i</mi><mo>&prime;</mo></msubsup><mo>,</mo></mtd><mtd><mi>otherwise</mi></mtd></mtr></mtable></mfenced><mo>;</mo><mrow><mo>(</mo><mi>i</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>N</mi><mo>)</mo></mrow></mrow></math>]]></maths>其中,bw为音调微调带宽,PAR为音调微调概率;NR是一个服从标准正态分布的随机数,<img file="FSA0000098294030000022.GIF" wi="530" he="74" />这里u<sub>1</sub>和u<sub>2</sub>均表示上均匀分布的随机数;第四步,更新和声记忆库对第三步中的新解进行评估,如果优于和声记忆库中的函数值最差的一个,则将新解更新至和声记忆库(HM)中,具体操作如下:<![CDATA[<math><mrow><mi>If f</mi><mrow><mo>(</mo><msup><mi>x</mi><mo>&prime;</mo></msup><mo>)</mo></mrow><mo>&lt;</mo><mi>f</mi><mrow><mo>(</mo><msup><mi>x</mi><mi>worst</mi></msup><mo>)</mo></mrow><mo>=</mo><munder><mi>max</mi><mrow><mi>j</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>HMS</mi></mrow></munder><mi>f</mi><mrow><mo>(</mo><msup><mi>x</mi><mi>j</mi></msup><mo>)</mo></mrow><mo>,</mo><mi>then</mi><msup><mi>x</mi><mi>worst</mi></msup><mo>=</mo><msup><mi>x</mi><mo>&prime;</mo></msup><mo>;</mo></mrow></math>]]></maths>第五步,检查是否达到算法终止条件重复第三步和第四步,直到创作次数达到Tmax。
地址 723000 陕西省汉中市汉台区东关小关子