⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 遗传算法.m

📁 这是一个遗传神经网络
💻 M
字号:
p=zeros(50,12);
p_test=zeros(50,30);
%50*18的输入样本
for i=1:50
    for j=1:12
        p(i,j)=dd(i,j);
    end
end
%测试样本
for i=1:50
    for j=1:30
        p_test(i,j)=dd(i,j+18);
    end
end  
t=[1 0;1 0;1 0;1 0;1 0;1 0;0 1;0 1;0 1;0 1;0 1;0 1]';%2×18的目标样本
variable=zeros(1,780);%1×77的矩阵,用于存放种群样本
%f=zeros(2,1);%用于存放测试样本的结果
nind=30;%个体数目
maxgen=50;%最大遗传代数
nvar=780;%变量的维数
preci=20;%变量的二进制位数
ggap=1;%代沟
%fieldD=[20*5252;-10;10;1;0;1;1];
fieldD=[rep([20],[1,780]);rep([-1;1],[1,780]);rep([1;0;1;1],[1,780])];%区域表述器
chrom=crtbp(30,780*20);%创建初始种群
gen=0;%代计数器
objvar=bs2rv(chrom,fieldD);%计算初始种群的十进制转换
objv=objfunval(objvar,p,t);%计算初始种群个体的目标函数值
while gen<maxgen,        %迭代
    fitnv=ranking(objv); %分配适应度值
    selch=select('sus',chrom,fitnv,ggap);%选择
    selch=recombin('xovsp',selch,0.7); %重组
    selch=mut(selch);  %变异
    objvar=bs2rv(selch,fieldD); %计算子代种群的十进制转换
    objvsel=objfunval(objvar,p,t);%计算子代的目标函数值
    [chrom objv]=reins(chrom,selch,1,1,objv,objvsel);%重插值
    gen=gen+1; %代计数器增加
end
objvar=bs2rv(chrom,fieldD);%遗传优化后的权值
i=0;
[y,i]=min(objv);
variable=objvar(i,:);%遗传后的最优权值
wij=fenpei(variable);%将最优权值种群通过fenpei函数变成矩阵形式赋给wij
net=newff(minmax(p),[15 2],{'logsig','logsig'},'traingdx');%建立BP网络
net.iw{1,1}=wij;%用wij初始化网络输入层到输出层的权值
net.trainparam.epochs=500;%设定训练次数
net.trainparam.goal=0.001;%设定满足的目标
LP.lr=0.5;%学习率
net=train(net,p,t);%训练网络
%p_test=[d3 d4 d8 d11];%测试样本
f=sim(net,p_test)%仿真

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -