How to output additional variables from objective function using ga optimization?
15 views (last 30 days)
Alan Weiss on 10 Apr 2023
I am not sure what you are trying to do. You might be trying to pass intermediate values calculated within ga to reuse, for example in a constraint function. I am sorry, but that generally does not work for ga, as the order of operations that ga internally uses does not lend itself to that purpose. In other words, the technique in Objective and Nonlinear Constraints in the Same Function does not work for ga.
If you are trying to do something else, ask again with more detail.
MATLAB mathematical toolbox documentation
Star Strider on 10 Apr 2023
‘Does anyone have an idea on how to do that?’
After the optimisation terminates, run the objective function with the optimised parameter values and return all the desired outputs.
If the fitness function returns several results, for example:
function [a,b,c] = ftnsfcn(a,x)
... CODE ...
and the ga call is something like this:
[A,fval] = ga(@(a)ftnsfcn(a,x), NrParms);
after the optimiization terminates, run this:
[a,b,c] = ftnsfcn(A,x)
This would be easier to illustrate with a more specific example if you have one to share.
Walter Roberson on 10 Apr 2023
Have your objective function return a data structure of additional values. memoize() your objective function with a fair size buffer. Have the output function (which runs once per generation) fetch the best value of the model parameters and call the memorized function to retrieve the associated data structure, and store the values somewhere.