سلام دوست عزیز
خواهش میکنم. در مورد سوالتون باید بگم در صورتی که از 7 نرون در لایه پنهان استفاده کنید طول کروموزم به شدت افزایش پیدا میکنه. اگه بخوایم حساب کنیم تعداد وزن های لایه ورودی 28=7*4 و 7 تا بایاس برای لایه پنهان و در لایه خروجی 7 تا وزن و یک بایاس داریم که در مجموع تعداد ژن ها در کروموزم برابر 43 تا میشه. اما تو برنامه این تغییرات رو باید اعمال کنی
function Z = ff(x)
load dataset
P=meas(1:120,1:4)';
T=meas(1:120,7)';
[pn,minp,maxp] = premnmx(P);
net=newff([minp,maxp],[7 1],{'tansig','tansig'});
%net=init(net);
net.trainparam.epochs=500;
net.trainparam.goal=0.001;
%---------------
w1(1,1:4)=x(1:4);
w1(2,1:4)=x(5:8);
w1(3,1:4)=x(9:12);
w1(4,1:4)=x(13:16);
w1(5,1:4)=x(17:20);
w1(6,1:4)=x(21:24);
w1(7,1:4)=x(25:28);
w2(1,1:7)=x(29:35);
bb1(1,1)=x(36);
bb1(2,1)=x(37);
bb1(3,1)=x(38);
bb1(4,1)=x(39);
bb1(5,1)=x(40);
bb1(6,1)=x(41);
bb1(7,1)=x(42);
%----------------
net.IW(1,1)={w1};
net.LW(2,1)={w2};
net.b(1)={bb1};
net.b(2)={x(43)};
Y = sim(net,P);
e=T-Y;
mse=sqrt((sum((e.^2),'double'))/120);
Z=mse;
end
و تو برنامه اصلی هم باید تغییرات زیر رو اعمال کنی
clc;
clear;
%-------------------------------
options_me = gaoptimset(@ga);
options_me.PopulationSize=10;
options_me.EliteCount=2;
options_me.CrossoverFraction=0.8000;
options_me.MigrationFraction=0.2000;
options_me.Generations=10;
options_me.StallGenLimit=20;
LB=-512;
UB=512;
[x ffitness]=ga(@ff,43,[],[],[],[],LB,UB,[],options_me);
options = gaoptimset(@ga)
%-------------------------------------------------------------
load dataset
P=meas(1:120,1:4)';
T=meas(1:120,7)';
[pn,minp,maxp] = premnmx(P);
net=newff([minp,maxp],[7 1],{'tansig','tansig'});
%net=init(net);
%---------------
w1(1,1:4)=x(1:4);
w1(2,1:4)=x(5:8);
w1(3,1:4)=x(9:12);
w1(4,1:4)=x(13:16);
w1(5,1:4)=x(17:20);
w1(6,1:4)=x(21:24);
w1(7,1:4)=x(25:28);
w2(1,1:7)=x(29:35);
bb1(1,1)=x(36);
bb1(2,1)=x(37);
bb1(3,1)=x(38);
bb1(4,1)=x(39);
bb1(5,1)=x(40);
bb1(6,1)=x(41);
bb1(7,1)=x(42);
%----------------
net.IW(1,1)={w1};
net.LW(2,1)={w2};
net.b(1)={bb1};
net.b(2)={x(43)};
net.trainparam.epochs=2000;
net.trainparam.goal=0.008;
net=train(net,P,T);
Y=sim(net,P);
subplot(2,1,1);
plot(1:120,T,'+',1:120,Y,'o');
axis([0 121 -1 2]);
title('Train');
xlabel('number of sample');
ylabel('output');
legend('target','Output');
%------------------------------------------------------------------
P1=meas(121:150,1:4)';
T1=meas(121:150,7)';
Y1=sim(net,P1);
subplot(2,1,2);
plot(1:30,T1,'+',1:30,Y1,'o');
axis([0 31 -1 2]);
title('Test');
xlabel('number of sample');
ylabel('output');
legend('target','Output');