%% 清空环境
clc
clear
%% 遗传算法参数
maxgen=30; %进化代数
sizepop=100; %种群规模
pcross=[0.6]; %交叉概率
pmutation=[0.01]; %变异概率
lenchrom=[1 1]; %变量字串长度
bound=[-5 5;-5 5]; %变量范围
%% 个体初始化
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %种群结构体
avgfitness=[]; %种群平均适应度
bestfitness=[]; %种群最佳适应度
bestchrom=[]; %适应度最好染色体
% 初始化种群
for i=1:sizepop
individuals.chrom(i,:)=Code(lenchrom,bound); %随机产生个体
x=individuals.chrom(i,:);
individuals.fitness(i)=fun(x); %个体适应度
end
%找最好的染色体
[bestfitness bestindex]=min(individuals.fitness);
bestchrom=individuals.chrom(bestindex,:); %最好的染色体
avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度
% 记录每一代进化中最好的适应度和平均适应度
trace=[];
%% 进化开始
for i=1:maxgen
% 选择操作
individuals=Select(individuals,sizepop);
avgfitness=sum(individuals.fitness)/sizepop;
% 交叉操作
individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);
% 变异操作
individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i maxgen],bound);
if mod(i,10)==0
warning off
individuals.chrom=nonlinear(individuals.chrom,sizepop);
end
% 计算适应度
for j=1:sizepop
x=individuals.chrom(j,:);
individuals.fitness(j)=fun(x);
end
%找到最小和最大适应度的染色体及它们在种群中的位置
[newbestfitness,newbestindex]=min(individuals.fitness);
[worestfitness,worestindex]=max(individuals.fitness);
% 代替上一次进化中最好的染色体
if bestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=individuals.chrom(newbestindex,:);
end
individuals.chrom(worestindex,:)=bestchrom;
individuals.fitness(worestindex)=bestfitness;
avgfitness=sum(individuals.fitness)/sizepop;
trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度
end
%进化结束
%% 结果显示
[r c]=size(trace);
figure
plot([1:r]',trace(:,1),'r-',[1:r]',trace(:,2),'b--');
title(['函数值曲线 ' '终止代数=' num2str(maxgen)],'fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('函数值','fontsize',12);
legend('各代平均值','各代最佳值','fontsize',12);
ylim([1.5 8])
disp('函数值 变量');
ylim([-0.5 8])
grid on
% 窗口显示
disp([bestfitness x]);
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于matlab遗传算法和非线性规划的函数寻优算法.zip (45个子文件)
基于matlab遗传算法和非线性规划的函数寻优算法
案例1
Select.m 850B
Code.m 389B
Genetic.m 3KB
Cross.m 1KB
test.m 269B
fun.m 139B
Mutation.m 1KB
案例2非线性
Select.m 850B
nonlinear.m 233B
Code.m 389B
Genetic.m 3KB
Cross.m 1KB
test.m 269B
fun.m 112B
Mutation.m 1KB
案例2
Select.m 850B
Code.m 389B
Genetic.m 3KB
Cross.m 1KB
test.m 269B
fun.m 112B
Mutation.m 1KB
案例1非线性
Select.m 850B
main.m 3KB
nonlinear.m 293B
Code.m 389B
Cross.m 1KB
test.m 269B
fun.m 139B
Mutation.m 1KB
案例3
Select.m 850B
Code.m 389B
Genetic.m 3KB
Cross.m 1KB
test.m 269B
fun.m 79B
Mutation.m 1KB
案例3非线性
Select.m 850B
nonlinear.m 233B
Code.m 389B
Genetic.m 3KB
Cross.m 1KB
test.m 269B
fun.m 79B
Mutation.m 1KB
共 45 条
- 1
资源评论
AI拉呱
- 粉丝: 2758
- 资源: 5458
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功