遗传算法代码(求遗传算法(GA)C语言代码)
大家好,今天小编来为大家解答以下的问题,关于遗传算法代码,求遗传算法(GA)C语言代码这个很多人还不知道,现在让我们一起来看看吧!
遗传算法的matlab代码实现是什么
遗传算法我懂,我的论文就是用着这个算法,具体到你要遗传算法是做什么?优化什么的。。。我给你一个标准遗传算法程序供你参考:
该程序是遗传算法优化BP神经网络函数极值寻优:
%%该代码为基于神经网络遗传算法的系统极值寻优
%%清空环境变量
clc
clear
%%初始化遗传算法参数
%初始化参数
maxgen=100;%进化代数,即迭代次数
sizepop=20;%种群规模
pcross=[0.4];%交叉概率选择,0和1之间
pmutation=[0.2];%变异概率选择,0和1之间
lenchrom=[1 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=[avgfitness bestfitness];
%%迭代寻优
%进化开始
for i=1:maxgen
i
%选择
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);
%计算适应度
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);
plot([1:r]',trace(:,2),'r-');
title('适应度曲线','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
axis([0,100,0,1])
disp('适应度变量');
x=bestchrom;
%窗口显示
disp([bestfitness x]);
求遗传算法(GA)C语言代码
.----来个例子,大家好理解..--
基于遗传算法的人工生命模拟
#include<stdio.h>
#include<stdlib.h>
#include<graphics.h>
#include<math.h>
#include<time.h>
#include<string.h>
#include"graph.c"
/*宏定义*/
#define TL1 20/*植物性食物限制时间*/
#define TL2 5/*动物性食物限制时间*/
#define NEWFOODS 3/*植物性食物每代生成数目*/
#define MUTATION 0.05/*变异概率*/
#define G_LENGTH 32/*个体染色体长度*/
#define MAX_POP 100/*个体总数的最大值*/
#define MAX_FOOD 100/*食物总数的最大值*/
#define MAX_WX 60/*虚拟环境的长度最大值*/
#define MAX_WY 32/*虚拟环境的宽度最大值*/
#define SX1 330/*虚拟环境图左上角点x坐标*/
#define SY1 40/*虚拟环境图左上角点y坐标*/
#define GX 360/*个体数进化图形窗口的左上角点X坐标*/
#define GY 257/*个体数进化图形窗口的左上角点Y坐标*/
#define GXR 250/*个体数进化图形窗口的长度*/
#define GYR 100/*个体数进化图形窗口的宽度*/
#define GSTEP 2/*个体数进化图形窗口的X方向步长*/
#define R_LIFE 0.05/*初期产生生物数的环境比率*/
#define R_FOOD 0.02/*初期产生食物数的环境比率*/
#define SL_MIN 10/*个体寿命最小值*/
/*全局变量*/
unsigned char gene[MAX_POP][G_LENGTH];/*遗传基因*/
unsigned char iflg[MAX_POP];/*个体死活状态标志变量*/
跪求一份多目标遗传算法的代码,matlab的
我给你一个标准遗传算法程序供你参考:
该程序是遗传算法优化BP神经网络函数极值寻优:
%%该代码为基于神经网络遗传算法的系统极值寻优
%%清空环境变量
clc
clear
%%初始化遗传算法参数
%初始化参数
maxgen=100;%进化代数,即迭代次数
sizepop=20;%种群规模
pcross=[0.4];%交叉概率选择,0和1之间
pmutation=[0.2];%变异概率选择,0和1之间
lenchrom=[1 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=[avgfitness bestfitness];
%%迭代寻优
%进化开始
for i=1:maxgen
i
%选择
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);
%计算适应度
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);
plot([1:r]',trace(:,2),'r-');
title('适应度曲线','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
axis([0,100,0,1])
disp('适应度变量');
x=bestchrom;
%窗口显示
disp([bestfitness x]);
文章分享结束,遗传算法代码和求遗传算法(GA)C语言代码的答案你都知道了吗?欢迎再次光临本站哦!