not enough input arguments
6 views (last 30 days)
Show older comments
aaliyan javaid
on 8 Apr 2021
Commented: aaliyan javaid
on 9 Apr 2021
i am trying to run the built in matlab function for particle swram i have defined the objective function spearately na then called that function here is the code
function f = objective(p1,q1,p2,n,m)
f = (p1 * q1 + p2 * n * m );
end
objfcn = @objective;
nvar = 5;
lb = [-5 -5];
ub = [5 5];
options = optimoptions('particleswarm','swarmsize',100);
f = particleswarm(objective,nvar,lb,ub,options);
kindly help thanks
Accepted Answer
Cris LaPierre
on 8 Apr 2021
You have not set up your objective function correctly, and then you are also not passing it correctly to particleswarm.
- Write the objective function to accept a row vector of length nvars and return a scalar value.
This meains a single input variable, where each column corresponds to the values of each variable. You can split that vector into specific variables inside the objective function if you want, as I do below.
Also, your 'fun' input to particleswarm should be either objfcn or @objective.
nvar = 5;
lb = [-5 -5];
ub = [5 5];
opts = optimoptions('particleswarm','swarmsize',100);
f = particleswarm(@objective,nvar,lb,ub,opts);
function f = objective(params)
p1=params(1);
q1=params(2);
p2=params(3);
n=params(4);
m=params(5);
f = (p1 * q1 + p2 * n * m );
end
Note that this will run now, but it did not find a solution before it was terminated.
More Answers (0)
See Also
Categories
Find more on Get Started with MATLAB 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!