我很难找到有关如何为遗传算法编写自定义选择,突变,交叉功能的签名的文档。
我不知道ga()函数如何工作。 (我知道它存在:link),但是这些功能如何通信,它们对输入和输出的期望是什么?
问题解答,有关我的问题的更多信息:link
这是我的GA选项:
options = gaoptimset(...
'PopulationSize', 10, ...
'Generations', 50, ...
'CrossoverFcn', {'crossoverscattered'}, ...
'MutationFcn', { @Mutation, 0.01 }, ...
'SelectionFcn', { @RouletteWheelSelection }, ...
'UseParallel', true, ...
'Display', 'iter' ...
);
我的 GA 功能:
lb = 1; % Lower bound on x
ub = 3; % Upper bound on x
nvars = 1;
x = ga(@GaFitness,nvars,[],[],[],[],lb,ub,[],[],options);
我的 GaFitness Fcn签名(目前):
function result = GaFitness()
我的突变功能签名:
function chromosome = Mutation( chromosome )
我的选择功能签名:
function selected_chromosome = RouletteWheelSelection( population )
如果您需要有关我的问题的更多信息或更多代码,请告诉我。
这是我得到的错误:
Error using GaFitness
Too many input arguments.
Error in createAnonymousFcn>@(x)fcn(x,FcnArgs{:}) (line 11)
fcn_handle = @(x) fcn(x,FcnArgs{:});
Error in makeState (line 47)
firstMemberScore = FitnessFcn(state.Population(initScoreProvided+1,:));
Error in galincon (line 17)
state = makeState(GenomeLength,FitnessFcn,Iterate,output.problemtype,options);
Error in ga (line 374)
[x,fval,exitFlag,output,population,scores] = galincon(FitnessFcn,nvars, ...
Caused by:
Failure in initial user-supplied fitness function evaluation. GA cannot continue.
使用Matlab 2016b。