
遗传算法的MATLAB代码。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
该遗传算法旨在寻找函数的最优值。程序 `ga_main()` 实现了遗传算法的核心逻辑。参数 `n` 代表种群规模,`ger` 表示迭代次数,`pc` 定义交叉概率,`pm` 指定变异概率,`v` 构成了初始种群,其规模为 `n`。函数 `f` 则是目标函数,用于评估每个个体的适应度,而变量 `fit` 则存储了每个个体的适应度向量。此外,`vx` 记录了最优适应度值向量,而 `vmfit` 则保存了平均适应度值向量。首先清空屏幕、关闭所有图形窗口并清除命令行历史记录。然后使用计时器开始计算时间。
设定种群规模为 20 (`n=20`) 和迭代次数为 100 (`ger=100`)。交叉概率设置为 0.65 (`pc=0.65`),变异概率设置为 0.05 (`pm=0.05`)。初始种群 `v` 通过 `init_population(n,22)` 函数生成,该函数创建了一个规模为 n 的初始种群,每个个体拥有 22 个二进制位(生成一个 20 * 22 的 0-1 矩阵)。确定变量 X 的范围为 [xmin, xmax] = [0, 9]。目标函数 `f(x)` 定义为 x + 10*sin(x.*5) + 7*cos(x.*4)。
接下来计算适应度并绘制初始种群的图形:使用解码函数 `decode(v(:,1:22),xmin,xmax)` 将二进制编码转换为十进制数值;计算适应度值 `fit = eval(f)` 并利用 figure(1) 打开第一个绘图窗口;绘制初始函数的隐式图像和初始种群的适应度图像;设置坐标轴标签和标题。
随后进入迭代过程:初始化平均适应度向量 `vmfit=[]` 和最优适应度向量 `vx=[]`;设置迭代计数器 `it=1`;在 while 循环中持续迭代直到达到最大迭代次数 (`it<=ger`)。在每次迭代中执行选择、交叉和变异操作:通过轮盘赌选择法复制算子 (`vtemp=roulette(v,fit)`);进行交叉运算 (`v=crossover(vtemp,pc)`);根据变异概率对个体进行随机变异(`M=rand(N,L)<=pm; v=v-2.*(v.*M)+M;`) 。最后,更新最优解、平均适应度值、最优适应度值以及迭代计数器。
全部评论 (0)


