It finds the minimum of a n variables function with the Particle Swarm Optimization Algorithm.
% The input parameters are:
% -func: it's the objective function's handle to minimize
% -numInd: it's the number of the swarm's elements
% -range: it's the range in which the elements must be created
% -n_var: it's the number of function's variables
% -tolerance: it's the tolerance for the stop criterion on the swarm's
% radius
% -numIter: it's the max iterations' number
% -pesoStoc: it's the swarm's movability
%
% The output parameters are:
% -p_min: the minimum point find
% -f_min: the minimum value of the function
% -iter: the number of iterations processed
Hi Andrea, I am doing a classification problem. I am classifying a protein as either cancerous or not with 644 features. My guide instructed me to optimize the feature vector using PSO. I am clear with your code, but I don't know how to write the objective function. My SVM classifier works well with 644 features and put in two groups (1 or 0). Hope you can help me. Thanks
Hello Michael, it do run but u need to define the range and other input parameters as given by Mr Andrea, it runs perfectly,but my only doubt is the minimal value because i got 1.0e+006,so i want be sure is it the minimum value?
Thank you so much
Why does the example fail to run in matlab? I got this message when I ran the file.The message reads :"??? Input argument "range" is undefined.
Error in ==> pso at 19
range_min=range(1); % Range for initial swarm's elements "
I am trying to solve Skew correction problem with PSO. I have a prob with defining the objective function.
This is a simple example given above. The problem I am facing is that I have to maximize the difference of maxima and minima of the projection profile of the image. Given as,
F(theta)=PP(maxima)-PP(minima);
theta here is swarm particle (1D)
How should i be using this 'theta' in my function to maximize the objective function given as above.
The objective function have to be a matlab function (you can create a .m function) with its input and output parameters. After you created the function, you can obtain the function handler with the @ symbol. A simple example: if c = sum(a) is my function, I will create the follow matlab function.
function c=sum(a)
c=a(1)+a(2);
where 'a' is a vector that contain the input parameters. After I can define the function handle:
f_vett=@(x) sum(x)
where f_vett is a multivariable function and x is the vector that contains the variables of the function.
Now, if f_vett is a objective function, you can use the pso algorithm as follow: