MATLAB Answers

0

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

Asked by Nick Rowe on 1 Oct 2019
Latest activity Answered by Alan Weiss
on 6 Oct 2019
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 Comments

Sign in to comment.

1 Answer

Answer by Alan Weiss
on 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

  0 Comments

Sign in to comment.