遗传算法求解最优非零值插入点

频率抽样法设计滤波器

Posted by HT on November 30, 2019

前言

频率抽样法设计滤波器的内核并不在于非零点的优化,但在实际设计过程中,非零点优化是一个很重要的步骤。 若不插入非零点,在时域会产生振铃效应。对实际滤波器阻带衰减的特性会有影响。 在插入非零点个数一定的情况下。优化非零点的取值可以在保证过渡带宽不变的情况下使得阻带衰减最大。

1.遗传算法

1.1基本运算过程

  1. 初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。
  2. 个体评价:计算群体P(t)中各个个体的适应度。
  3. 选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。
  4. 交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。
  5. 变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t+1)。
  6. 终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。

1.2设计方案

  • 编码方案:怎样把优化问题的解进行编码。
  • 适应度函数:怎样根据目标函数构建适应度函数。
  • 选择策略:优胜劣汰。
  • 控制参数:种群的规模、算法执行的最大代数、执行不同遗传操作的概率等。
  • 遗传算子:选择、交叉、变异。
  • 算法终止准则:规定一个最大的演化代数,或算法在连续多少代以后解的适应值没有改进。

2.设计算法

对于非零点优化问题,适应度函数即为滤波器阻带衰减。

在实现算法中,使用matlab中的cell用法定义结构体。

可以根据已知的非零点优化值对滤波器性能的影响,缩小搜索空间的范围。

最后附上GitHub:https://github.com/zht1999/GeneA