How can one pass arguments to a custom CrossoverFunction in ga?

조회 수: 5 (최근 30일)
Mitsu
Mitsu 2020년 11월 6일
댓글: Mitsu 2020년 11월 6일
Hello,
I am implementing a custom crossover function following the documentation.
I need to pass 2 additional variables along with the solution and the rest of the GA-related parameters (parents, options, etc).
The previous doc page refer to "Passing Extra Parameters" to see how to pass additional arguments, and I believe I am doing it the same way it is explained there.
I define the function this way:
function xoverKids = ga_crossover(parents,options,nvars,FitnessFcn,~,thisPopulation,par1,par2)
xoverKids = []; %test
end
And I tell ga() to use it via:
options.CrossoverFcn = @(x) ga_crossover(x,par1,par2);
% (...)
x = ga(ObjectiveFunction,nvars,[],[],[],[],lb,ub,ConstraintFunction,options);
I get the error that there are too many input arguments.
Inside MATLAB's own stepGa.m, the variable options.CrossoverFcnArgs that is passed as argument to the crossover function appears empty, so I think I am not setting up the function+arguments properly in the options.
Could you help me fix this?
Thank you!

채택된 답변

Matt J
Matt J 2020년 11월 6일
편집: Matt J 2020년 11월 6일
The CrossoverFcn must accept 5 input arguments,
options.CrossoverFcn = @(parents,options,nvars,FitnessFcn,unused,thisPopulation) ...
ga_crossover(parents,options,nvars,FitnessFcn,unused,thisPopulation,par1,par2)

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Genetic Algorithm에 대해 자세히 알아보기

제품


릴리스

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by