Defining objective function using nested functions (Genetic Algorithm Solver)
1 view (last 30 days)
Show older comments
Azime Beyza Ari
on 23 Mar 2022
Commented: Azime Beyza Ari
on 23 Mar 2022
Hello everyone,
I am trying to do a maximization problem using optimization toolbox genetic algorithm solver. My objective function has parameters so I need to write a nested function(Since i have extra parameters besides from my variables) But i am having a trouble writing it. Here is what my objective function looks like and i wrote so far;
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/938719/image.png)
function z = objectivefunc(x,r,aii)
z= sum(x.*r.*aii, 'all');
end
(I reshaped my matrixes to be a row vector.)
X is my decsision variable and its dimensions are 1*1296 and r and aii are my parameters with dimensions 1*1296. I have looked through the documentation matlab provides and found this one;
I am very new to MATLAB so i really do not know how to write it correctly. So, any ideas or suggestions on how to implement nested functions to my problem?
3 Comments
Torsten
on 23 Mar 2022
Edited: Torsten
on 23 Mar 2022
This problem has nothing to do with nested functions. You pass r and a to objectivefunc - so the two matrices can be accessed there. Maybe in a former version of your code, you did not include r and a in the list of parameters passed to objectivefunc and so someone suggested that you should use nested functions (because r and a are then also visible in objectivefunc although you don't pass them).
If you define the array of initial values for the unknowns x0 for "ga" as a 36x36 matrix, you will find them in objectivefunc also as a 36x36 matrix and you can use Matt's answer to calculate z if r is 36x36 and a is 36x1.
Accepted Answer
More Answers (0)
See Also
Categories
Find more on Genetic Algorithm in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!