遗传算法的matlab代码
时间: 2023-09-10 22:13:18 浏览: 49
以下是一个简单的遗传算法的 MATLAB 代码示例:
```
% 遗传算法示例
clear;clc;
% 初始化种群
popSize = 50; % 种群大小
chromLen = 20; % 染色体长度
pop = round(rand(popSize, chromLen));
% 迭代次数
maxGen = 100;
% 适应度函数
fitness = zeros(popSize, 1);
for i = 1:popSize
fitness(i) = sum(pop(i,:));
end
% 迭代
for i = 1:maxGen
% 选择
fitProp = fitness / sum(fitness);
[sortedFitProp, sortedIndex] = sort(fitProp, 'descend');
selectIndex = sortedIndex(1:popSize);
selectPop = pop(selectIndex, :);
% 交叉
crossRate = 0.8; % 交叉概率
crossPop = zeros(size(selectPop));
for j = 1:2:popSize-1
if rand < crossRate
crossPoint = round(rand*chromLen);
crossPop(j,:) = [selectPop(j,1:crossPoint) selectPop(j+1,crossPoint+1:end)];
crossPop(j+1,:) = [selectPop(j+1,1:crossPoint) selectPop(j,crossPoint+1:end)];
else
crossPop(j,:) = selectPop(j,:);
crossPop(j+1,:) = selectPop(j+1,:);
end
end
% 变异
mutateRate = 0.01; % 变异概率
mutatePop = crossPop;
for j = 1:popSize
for k = 1:chromLen
if rand < mutateRate
mutatePop(j,k) = 1 - mutatePop(j,k);
end
end
end
% 新一代种群
pop = mutatePop;
% 计算适应度
for j = 1:popSize
fitness(j) = sum(pop(j,:));
end
% 输出结果
fprintf('第 %d 代最大值为 %d\n', i, max(fitness));
end
```
这个示例中,我们使用二进制编码来表示染色体,染色体的长度为 20 位。首先,我们随机初始化了一个大小为 50 的种群,然后在每次迭代中,我们计算每个个体的适应度,并选择适应度较高的个体进行交叉和变异,生成新的种群。最后,我们输出每一代的最大适应度值。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)