Error in the configuration for a Genetic Algorithm - Integral Values output

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 个评论

What are MLP_Pipeline and fit_MLP ? They are not part of any toolbox I can find.
They are wrappers I have written for the fit and train functions. Here:
classdef MLP_pipeline < handle
properties
input_training
input_test
output_training
output_test
fitted_net
trained_net
end
methods
function obj = fit_MLP(obj,neural_net_param,training_function)
obj.fitted_net = fitnet(neural_net_param,training_function);
end
function obj = train_MLP(obj)
obaj.trained_net = train(obj.fitted_net,obj.input_training,obj.output_training);
end
function predicted_output = predictor(obj)
predicted_output = obj.trained_net(obj.input_test);
end
function error_values = generate_error(obj,predicted_output)
error_values = gsubtract(obj.output_test,predicted_output);
end
function performanceValue = generatePerformance(obj,predicted_output)
performanceValue = perform(obj.trained_net,obj.output_test,predicted_output);
end
end
end

请先登录,再进行评论。

回答(0 个)

类别

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by