% First a set of some funny data, sin(x) is quite nice p = [0:0.1:2*pi]; % input t = sin(p); % output % Neural net with default values of gradient descent net1 = newff([0 2*pi],[3 1],{'logsig' 'purelin'},'trainscg'); net1.trainParam.epochs = 150; % these are smaller just for the demo net1.performFcn = 'msereg'; net1.performParam.ratio = 0.995; net1.trainParam.show = 25; tic net1 = train(net1,p,t); toc % Neural net with DE learning net2 = newff([0 2*pi],[3 1],{'logsig' 'purelin'},'traindiffevol'); net2.trainParam.epochs = 150; % these are smaller just for the demo net2.trainParam.show = 25; net2.performFcn = 'msereg'; net2.performParam.ratio = 0.995; net2.trainParam.popsizew = 1; %net2.trainParam.initw = 100; net2.trainParam.cr = 0.5; net2.trainParam.f = 0.8; tic [net2, tr2] = train(net2, p, t); toc % Neural net with default values of gradient descent net3 = newff([0 2*pi],[3 1],{'logsig' 'purelin'},'trainscg'); net3.trainParam.epochs = 100; % these are smaller just for the demo net3.trainParam.show = 25; net3.performFcn = 'msereg'; net3.performParam.ratio = 0.999; net3 = setx(net3,getx(net2)); tic net3 = train(net3,p,t); toc % Test nets and plot the original and modeled data test1 = sim(net1, p); test2 = sim(net2, p); test3 = sim(net3, p); figure; set(plot(p, t, 'k-'), 'LineWidth', 2); % original hold; set(plot(p, test1, 'r--'),'LineWidth', 2); set(plot(p, test2, 'g.'), 'LineWidth', 2); % DE learning set(plot(p, test3, 'b-.'), 'LineWidth', 2); grid; legend('sin(x)', 'trainscg', 'traindiffevol', 'traindiffevol + trainscg'); set(xlabel('x'),'FontSize', 12); set(ylabel('y'),'FontSize', 12);