Effacer les filtres
Effacer les filtres

not enough input arguments

2 vues (au cours des 30 derniers jours)
aaliyan javaid
aaliyan javaid le 8 Avr 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

Réponse acceptée

Cris LaPierre
Cris LaPierre le 8 Avr 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.
  1 commentaire
aaliyan javaid
aaliyan javaid le 9 Avr 2021
thanks alot for the help

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Graphics Object Programming dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by