Fix function evaluations in ga

조회 수: 7 (최근 30일)
sandeep singh chauhan
sandeep singh chauhan 2016년 1월 26일
댓글: Emily Kambalame 2022년 8월 26일
I want to fix my number of maximum function evaluation as stopping criteria in ga. How can i do it?
  댓글 수: 2
Geoff Hayes
Geoff Hayes 2016년 1월 26일
Sandeep - do you mean that you want the genetic algorithm to iterate for some maximum number of iterations/generations?
sandeep singh chauhan
sandeep singh chauhan 2016년 1월 26일
No, I want to use genetic algorithm that will stop with maximum function evaluations

댓글을 달려면 로그인하십시오.

답변 (2개)

Brendan Hamm
Brendan Hamm 2016년 1월 26일
This is controlled in the Generations property of the Genetic Algorithm options. Obtain the default options:
>> options = gaoptimset(@ga)
options =
PopulationType: 'doubleVector'
PopInitRange: []
PopulationSize: '50 when numberOfVariables <= 5, else 200'
EliteCount: '0.05*PopulationSize'
CrossoverFraction: 0.8000
ParetoFraction: []
MigrationDirection: 'forward'
MigrationInterval: 20
MigrationFraction: 0.2000
Generations: '100*numberOfVariables'
TimeLimit: Inf
FitnessLimit: -Inf
StallGenLimit: 50
StallTest: 'averageChange'
StallTimeLimit: Inf
TolFun: 1.0000e-06
TolCon: 1.0000e-03
InitialPopulation: []
InitialScores: []
NonlinConAlgorithm: 'auglag'
InitialPenalty: 10
PenaltyFactor: 100
PlotInterval: 1
CreationFcn: @gacreationuniform
FitnessScalingFcn: @fitscalingrank
SelectionFcn: @selectionstochunif
CrossoverFcn: @crossoverscattered
MutationFcn: {@mutationgaussian [1] [1]}
DistanceMeasureFcn: []
HybridFcn: []
Display: 'final'
PlotFcns: []
OutputFcns: []
Vectorized: 'off'
UseParallel: 0
Now you can change the Generations and pass this in to the options input of your call to ga
>> options.Generations = '200*numberOfVariables';
>> ga(...,options); % Fill in the ... with your function, constraints, etc.
  댓글 수: 4
UbuntuXenial
UbuntuXenial 2019년 3월 28일
Can you please explain how to determine the dependence? I want to run GA/MOGA only up to certain MaxFunctionEvaluations but this isn't a valid optimoption for these algorithms.
Emily Kambalame
Emily Kambalame 2022년 8월 26일
I also dont want to use the max generation but rather the maximum function evaluation as my stopping condition. How should i approach my problem? Take note that my constraints are satified using Epanet simulator and am NSGA 2 to optimise.

댓글을 달려면 로그인하십시오.


Matt J
Matt J 2016년 1월 26일
편집: Matt J 2016년 1월 26일
The following nested function strategy might be a way to cheat. Basically, it keeps a running count, funEvals, of the number of calls to the fitness function. When funEvals exceeds a specified MaxFunEvals, the FitnessFcn output is forced to -Inf, which I think must trigger the FitnessLimit stopping criterion.
function runEverything(MaxFunEvals)
funEvals=0;
bestFitness=inf;
[x,fval,exitflag,output,population,scores] = ga(@FitnessFcn,...);
fval=bestFitness;
function val = FitnessFcn(x)
...
bestFitness=min(bestFitness,val);
funEvals=funEvals+1; %increment counter
if funEvals>=MaxFunEvals
val=-inf;
end
end
end

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by