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

Matlab 如何编写自定义GA函数的签名?(选择、变异、交叉),matlab,genetic-algorithm,Matlab,Genetic Algorithm,我很难找到关于如何为遗传算法编写自定义选择、变异、交叉函数签名的文档 我不知道ga()函数是如何工作的。(我知道这是存在的:),但这些函数如何通信,它们对输入和输出的期望是什么 问答,更多关于我的问题: 这是我的GA选项: options = gaoptimset(... 'PopulationSize', 10, ... 'Generations', 50, ...

我很难找到关于如何为遗传算法编写自定义选择、变异、交叉函数签名的文档

我不知道ga()函数是如何工作的。(我知道这是存在的:),但这些函数如何通信,它们对输入和输出的期望是什么

问答,更多关于我的问题:

这是我的GA选项:

options = gaoptimset(...
                      'PopulationSize',    10, ...
                      'Generations',       50, ...
                      'CrossoverFcn',      {'crossoverscattered'}, ...
                      'MutationFcn',       { @Mutation, 0.01 }, ...
                      'SelectionFcn',      { @RouletteWheelSelection }, ...
                      'UseParallel',       true, ...
                      'Display', 'iter' ...
                     );
MyGA功能:

lb = 1;  % Lower bound on x
ub = 3;  % Upper bound on x
nvars = 1;
x = ga(@GaFitness,nvars,[],[],[],[],lb,ub,[],[],options); 
我的GaFitnessFcn签名(目前):

My突变函数签名:

 function chromosome  = Mutation( chromosome )
function selected_chromosome = RouletteWheelSelection( population )
我的选择功能签名:

 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.

使用Matlab2016b。

没有输入
GaFitness()
?好吧,我正在尝试找出我的输入需要是什么,以及我的输出。我假设这是一条染色体,它是模糊控制器的一组规则。这是我关于我的问题的问答:你想优化什么函数
GaFitness()
将一条染色体作为输入并返回一个值,值越高的一条染色体将被选为轮盘选择tournament@adam.Yes,我想优化
GaFitness()
,在
GaFitness
中更精确地优化模糊控制规则。因此,我假设输入将是一组规则(染色体,exp.:[
1,2,3,1,1..]
,并基于该输入,返回受新模糊设置影响的xy变量的结果。可能会对您有所帮助。
GaFitness()没有输入
?好吧,我想知道我的输入和输出需要是什么。我假设这是一条染色体,它是模糊控制器的一组规则。这是我关于我的问题的问答:你想优化什么函数?
GaFitness()
将一条染色体作为输入并返回一个值,值越高,则为
RouletteWheelSelection
tournament@adam.Yes,我想优化
GaFitness()
,更精确地说是
GaFitness
中的模糊控制规则。因此,我假设输入将是一组规则(染色体,实验:[
1,2,3,1,1..]
并基于该输入,返回受新模糊设置影响的xy变量的结果。或许可以帮助您。