如何编写自定义GA函数的签名? (选择,变异,交叉)

时间:2019-06-25 17:31:52

标签: matlab genetic-algorithm

我很难找到有关如何为遗传算法编写自定义选择,突变,交叉功能的签名的文档。

我不知道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。

0 个答案:

没有答案