Display/Plot Functions for Genetic Algorithm seemingly not working when I include nonlinear constraint
13 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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?
0 commentaires
Réponses (1)
Alan Weiss
le 6 Oct 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 commentaire
Peiman Khandar
le 26 Mai 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
Voir également
Catégories
En savoir plus sur Genetic Algorithm dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!