遗传算法matlab程序
时间: 2023-07-07 07:19:05 浏览: 38
遗传算法是一种基于生物进化原理的优化算法,常用于求解函数的最优解或近似最优解。下面是一个简单的遗传算法 Matlab 程序,以求解函数 f(x) = x^2 的最小值为例:
```matlab
% 遗传算法 Matlab 程序
% 定义函数 f(x)
f = @(x) x^2;
% 定义遗传算法参数
popSize = 50; % 种群大小
numVar = 1; % 变量个数
numGen = 50; % 迭代次数
pc = 0.8; % 交叉概率
pm = 0.1; % 变异概率
lb = -10; % 变量下界
ub = 10; % 变量上界
% 初始化种群
pop = lb + (ub-lb)*rand(popSize,numVar);
% 迭代
for i = 1:numGen
% 计算适应度值
fitVal = f(pop);
% 选择操作
idx = randsample(popSize,popSize,true,fitVal./sum(fitVal));
popSel = pop(idx,:);
% 交叉操作
idx = rand(popSize,1) < pc;
popCross = popSel(mod(1:popSize,popSize)+1,:);
popCross(idx,:) = 0.5 * (popCross(idx,:) + popSel(idx,:));
% 变异操作
idx = rand(popSize,numVar) < pm;
popMut = popCross;
popMut(idx) = lb + (ub-lb) * rand(sum(sum(idx)),1);
% 更新种群
pop = popMut;
end
% 输出最优解
[bestFitVal,idx] = min(fitVal);
bestSol = pop(idx,:);
disp(['最小值为:',num2str(bestFitVal),',最优解为:',num2str(bestSol)]);
```
此程序实现了一个简单的遗传算法,其中定义了函数 f(x)、遗传算法参数、初始化种群、选择、交叉、变异等操作,最后输出了最优解。你可以根据自己的需要进行修改和扩展。