Display/Plot Functions for Genetic Algorithm seemingly not working when I include nonlinear constraint

10 visualizaciones (últimos 30 días)
I can't seem to get the iterative display or plot functions to work correctly for the genetic algorithm when I include a nonlinear constraint. Basically, a subset of my variables are the off-diagonals of a matrix that must be postive definite, so it is advantageous if I can force GA to search over the subset of the parameter space that guarantees this. Code is as follows:
options = optimoptions(@ga,'UseParallel',true,...
'PopulationSize',R,'MaxStallGenerations',30,'FitnessLimit',0,...
'PlotFcn',{@gaplotbestf},'display','iter',...
'MutationFcn',{@mutationadaptfeasible,1.5,0.5},'CrossoverFraction',...
0.5,'CrossoverFcn',{@crossoverintermediate,(1/8)*ones(1,14)},...
'InitialPopulationMatrix',X0);
con = @(theta)nlincon(theta); % nonlinear constraint function
calibrating= @(theta)model(moments,mom_var,theta,store,sigma,eta,r,A); % objective function
[theta,fval] = ga(calibrating,14,[],[],[],[],lb,ub,con,options);
when I use the above code, I get neither the iterative GA display output to show up, nor do I get the plot function to, well, plot. However, if I simply set the nonlinear constraint option to "[]", both the iterative display and plot functions work correctly. Can someone give me a clue here as to what I'm doing wrong?

Respuestas (1)

Alan Weiss
Alan Weiss el 6 de Oct. de 2019
When you use a nonlinear constraint function, ga uses a different algorithm that takes many, many more iterations internally than usual before it outputs a single plot or iterative display result. For an example, see Nonlinear Constraints Using ga. Notice how many internal function evaluations happen before a single iterative display result or a plot appears. For details of the algorithm, see Nonlinear Constraint Solver Algorithms.
Alan Weiss
MATLAB mathematical toolbox documentation
  1 comentario
Peiman Khandar
Peiman Khandar el 26 de Mayo de 2020
I have a question about internal function evaluations. how can we collect them in a single matrix to see the proceeds. since we could not write for loop for it? does it have specific method ?
thanks

Iniciar sesión para comentar.

Categorías

Más información sobre Genetic Algorithm en Help Center y File Exchange.

Productos


Versión

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by