clc;
clear;
close all;
warning off;
rng('default');
global CROSS_RATE
global MUTATION_RATE
global POP_SIZE
global DNA_SIZE
global X_BOUND
DNA_SIZE = 10 ; % DNA length
POP_SIZE = 100 ; % population size
CROSS_RATE = 0.8; % 交配概率(DNA交叉互换)
MUTATION_RATE = 0.003;
N_GENERATIONS = 50;
X_BOUND = [0, 5];
%生成种群及环境(函数)
pop = randsrc(POP_SIZE,DNA_SIZE,[0,1]);
x = 0:0.025:5;
y = sin(10.*x).*x + cos(2.*x).*x ;
for gen = 1:N_GENERATIONS
%翻译DNA,求个体表现型
individuals = translateDNA(pop);
F_values = Fun(individuals) ;
%数据可视化
figure(1)
plt = plot(x,y,'b','linewidth',1.4);grid on
axis([0 5 -10 8]),grid on
hold on
sct = scatter(individuals,F_values,'or');
axis([0 5 -10 8]),grid on
hold off
%求适应度
fitness = get_fitness(F_values);
%求最高适应度及对应序号,以及最佳个体
[best_fitness,idx_of_best] = max(fitness);
best_individual = translateDNA(pop(idx_of_best,:));
%交配繁殖后代
pop = select(pop, fitness);
pop_copy = pop;
for i = 1:POP_SIZE
parent = pop(i,:); %原种群作为亲代
child = crossover(parent, pop_copy); %亲代DNA交叉互换得到子代DNA
child = mutate(child); %子代基因突变
pop(i,:) = child; % 亲代被子代所取代
end
end
%运行结果:
best_fitness;
idx_of_best;
best_individual;
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1.版本:matlab2022A,包含仿真操作录像,代码中文注释,操作录像使用windows media player播放。 2.领域:GA优化 3.内容:基于GA优化算法的波浪函数最优解计算,并动态显示优化值搜索过程以及局部最优解显示。优化目标函数为: function [Fun] = Fun(x) Fun = sin(10.*x).*x + cos(2.*x).*x ; end 4.注意事项:注意MATLAB左侧当前文件夹路径,必须是程序所在文件夹位置,具体可以参考视频录。
资源推荐
资源详情
资源评论
收起资源包目录
基于GA优化算法的波浪函数最优解计算,并动态显示优化值搜索过程以及局部最优解显示.rar (9个子文件)
20231202_145323.mp4 1.24MB
1.jpg 34KB
code
select.m 565B
translateDNA.m 383B
crossover.m 552B
mutate.m 279B
Main.m 1KB
Fun.m 123B
get_fitness.m 287B
共 9 条
- 1
资源评论
fpga和matlab
- 粉丝: 16w+
- 资源: 2563
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功