extra paramters to ga output function
显示 更早的评论
I want to write an output function to the ga algorithm that will use and also change variables in my workspace in each iteration (plots, changes to a connected device etc). I read about it in the documentation but I couldn't quite figure it out. I would like to avoid using global variables, so is there a syntax example on how to add these extra input and output parameters? For example (which I know is incorrect but explains my intentions):
function [state,options,optchanged,a,b] = gaIterationOutput(options,state,flag,a,b,c,d)
% Do stuff with state,options,optchanged
% Do stuff with a,b,c,d
end
Here a,b,c,d are extra input parameters, and a,b are also sent as output parameters to the workspace. I understand it somehow needs to be done using anonymous functions, but I didn't understand exactly how.
Also, is it necessary to explicitly write
optchanged = false;
as can be seen in examples? (That is indeed the case with my code)
Thanks.
采纳的回答
更多回答(1 个)
Walter Roberson
2016-8-30
0 个投票
Yes, it is necessary to optchanged = false;
It is not possible to have extra outputs.
In your situation I would suggest not having the extra variables as inputs or outputs. Instead I would suggest that you use nested functions with shared variables. See http://www.mathworks.com/help/matlab/matlab_prog/share-data-between-workspaces.html#f0-50984
5 个评论
Johnathan Viernik
2016-8-31
Johnathan Viernik
2016-8-31
Walter Roberson
2016-9-1
Nest the definition of the output function within the function that defines the variables you want to be able to alter, which might be the main function.
Kurt Stewart
2019-8-21
Use this to have it pass through the state
state.extra_param=extra_param
Then you can save things in the output function
case {'iter','interrupt'}
disp('Iterating ...')
fname=[pwd,'\','analysis',date_var,'.mat'];
gen_num=state.Generation;
%gen_str=['gen',num2str(gen_num)]
gen_data(gen_num).state=state;
save(fname,'gen_data')
Hope this helps any in the future!
Kurt Stewart
2019-8-29
I am not sure how you got your solution to work, but I am working on it
类别
在 帮助中心 和 File Exchange 中查找有关 Whos 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!