Multiple objective functions with fgoalattain

5 views (last 30 days)
I have multiple objective functions F1(x), F2(x), F3(x), ... Fn(x) that I would like to use fgoalattain to optimize simultaneously.
I have tried putting the objective functions in a cell array function handle:
fun = cellstr(string);
fun = cellfun(@str2func, fun, 'UniformOutput', false);
'string' is a cell array of strings which corresponds to function names (m files).
Each objective function has an associated goal and weight, such that length(fun) == length(goal) == length(weight)
Then I tried to call fgoalattain:
[x,fval] = fgoalattain(@(x)fun(x,par1, par2, par3, par4),x0,goal,weight)
However I get the following error:
Index in position 1 is invalid. Array indices must be positive integers or logical values.
Would anyone be able to help me with this optimization problem?

Answers (1)

Divya Gaddipati
Divya Gaddipati on 12 Aug 2020
The input to fgoalattain should be a single function handle. You can define all your objective functions in an array as follows
fun = @(x)[F1(x); F2(x);.. FN(x)];
For more information, refer to the examples in the following link


Find more on Get Started with Optimization Toolbox 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!