Click here to Skip to main content
15,893,486 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
how I can Optimize number of neurons in Hidden Layer of Multilayer perceptron Neural Network by Genetics Algorithm???
Related Matlab Code:

Delphi
function [Network2] = TrainUsing_GA_Fcn(Network,Xtr,Ytr)


%% Problem Statement
IW = Network.IW{1,1}; IW_Num = numel(IW);
LW = Network.LW{2,1}; LW_Num = numel(LW);
b1 = Network.b{1,1}; b1_Num = numel(b1);
b2 = Network.b{2,1}; b2_Num = numel(b2);

TotalNum = IW_Num + LW_Num + b1_Num + b2_Num;

NPar = TotalNum;

VarLow = -1;
VarHigh = 1;
FunName = 'Cost_ANN_EA';

%% Algorithm Parameters
SelectionMode = 3; % 1 for Random, 2 for Tournment, 3 for ....
PopSize = 150;
MaxGenerations = 50;

RecomPercent = 15/100;
CrossPercent = 50/100;
MutatPercent = 1 - RecomPercent - CrossPercent;

RecomNum = round(PopSize*RecomPercent);
CrossNum = round(PopSize*CrossPercent);
if mod(CrossNum,2)~=0
    CrossNum = CrossNum - 1;
end

MutatNum = PopSize - RecomNum - CrossNum;

%% Initial Population
Pop = rand(PopSize,NPar) * (VarHigh - VarLow) + VarLow;

Cost = feval(FunName,Pop,Xtr,Ytr,Network);
[Cost Inx] = sort(Cost);
Pop = Pop(Inx,:);

%% Main Loop
MinCostMat = [];
MeanCostMat = [];

for Iter = 1:MaxGenerations
    %% Recombination
    RecomPop = Pop(1:RecomNum,:);
    
    %% CrossOver
        %% Parent Selection
        SelectedParentsIndex = MySelection_Fcn(Cost,CrossNum,SelectionMode);
    
        %% Cross Over
        CrossPop = [];
        for ii = 1:2:CrossNum
            Par1Inx = SelectedParentsIndex(ii);
            Par2Inx = SelectedParentsIndex(ii+1);

            Parent1 = Pop(Par1Inx,:);
            Parent2 = Pop(Par2Inx,:);
            

            [Off1 , Off2] = MyCrossOver_Fcn(Parent1,Parent2);
            
            CrossPop = [CrossPop ; Off1 ; Off2];
        end
    %% Mutation
    MutatPop = rand(MutatNum,NPar)*(VarHigh - VarLow) + VarLow;
    
    %% New Population
    Pop = [RecomPop ; CrossPop ; MutatPop];
    Cost = feval(FunName,Pop,Xtr,Ytr,Network);
    [Cost Inx] = sort(Cost);
    Pop = Pop(Inx,:);
   
    %% Display
    MinCostMat = [MinCostMat ; min(Cost)];
    [Iter MinCostMat(end)]
    MeanCostMat = [MeanCostMat ; mean(Cost)];
    subplot(2,1,1)
    plot(MinCostMat,'r','linewidth',2.5);
    xlim([1 MaxGenerations])
%     hold on
%     plot(MeanCostMat,':b','linewidth',2)
%     hold off
    
    subplot(2,1,2)
    plot(Pop(:,1),Pop(:,2),'rp')
    axis([VarLow VarHigh VarLow VarHigh])
    pause(0.05)
    
end
%% Final Result Demonstration
BestSolution = Pop(1,:);
BestCost = Cost(1);
Network2 = ConsNet_Fcn(Network,BestSolution);


What I have tried:

how I can Optimize number of neurons in Hidden Layer of Multilayer perceptron Neural Network by Genetics Algorithm In MATLAB Software???
Posted
Updated 6-Nov-16 7:04am
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900