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