Error in the configuration for a Genetic Algorithm - Integral Values output
Show older comments
Im trying to find the correct number of neurons that go into each of the 3 Hidden Layers in an NN through a genetic algorithm, that gives out integral values for number of neurons in each layer.
My function takes in the arguments for number of neurons in each layer, and outputs the RMSE for that configuration. Heres the function I wanna minimize.
function output_rmse = CalculateBestConfiguration(NeuronsIn_HL_1,NeuronsIn_HL_2,NeuronsIn_HL_3)
%% Create Pipeline
trainer1 = MLP_pipeline;
%% Generate Data
[X_data , Y_data, q1_set, ~, ~,~,~,~,~] = PlotWorkspace(10,7,5);
[trainInd,testInd] = dividerand(length(q1_set),80,20);
%% Feed Training Data
trainer1.input_training = [X_data(trainInd);Y_data(trainInd)];
trainer1.output_training = q1_set(trainInd);
%% Train the Perceptron Model
trainer1.fit_MLP([NeuronsIn_HL_1,NeuronsIn_HL_2,NeuronsIn_HL_3],'trainbr');
trainer1.train_MLP()
%% Feed Test Data
trainer1.input_test = [X_data(testInd);Y_data(testInd)];
trainer1.output_test = q1_set(testInd);
%% Predict Results
theta_predicted1 = trainer1.predictor();
%% Evaluate Accuracy
error_values1 = trainer1.generate_error(theta_predicted1);
output_rmse = sqrt(mean(error_values1.^2));
end
Theres something wrong with my configuration for the GA. I am not able to find it.
opt = optimoptions('ga');
% opt.InitialPopulationMatrix = ones(30,3);
opt.MaxTime = 4*60*60;
opt.MigrationFraction = 1.0000e-06;
% opt.MutationFunction= 'mutationgaussian';
opt.PopulationSize = 30;
opt.FunctionTolerance = 1e-4;
opt.MaxGenerations = 500;
fun = @CalculateBestConfiguration;
IntCon = 1:3;
lb = [1,1,1];
ub = [21,21,21];
A = [3 3 3];
b = 180;
nvars = 3;
nonlcon = [];
Solution = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon,opt);
Here's my error:
Not enough input arguments.
Error in CalculateBestConfiguration (line 11)
trainer1.fit_MLP([NeuronsIn_HL_1,NeuronsIn_HL_2,NeuronsIn_HL_3],'trainbr');
Error in createAnonymousFcn>@(x)fcn(x,FcnArgs{:}) (line 11)
fcn_handle = @(x) fcn(x,FcnArgs{:});
Error in fcnvectorizer (line 13)
y(i,:) = feval(fun,(pop(i,:)));
Error in gaminlppenaltyfcn
Error in gapenalty
Error in makeState (line 64)
Score = FitnessFcn(state.Population(initScoreProvided+1:end,:));
Error in galincon (line 17)
state = makeState(GenomeLength,FitnessFcn,Iterate,output.problemtype,options);
Error in gapenalty
Error in gaminlp
Error in ga (line 393)
[x,fval,exitFlag,output,population,scores] = gaminlp(FitnessFcn,nvars, ...
Error in untitled (line 18)
Solution = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon,opt);
Caused by:
Failure in user-supplied fitness function evaluation. GA cannot continue.
Failure in initial user-supplied fitness function evaluation. GA cannot continue.
2 Comments
Walter Roberson
on 10 Apr 2019
What are MLP_Pipeline and fit_MLP ? They are not part of any toolbox I can find.
Aniketh Ramesh
on 10 Apr 2019
Answers (0)
Categories
Find more on Genetic Algorithm in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!