title: Particle swarm optimization in matlab
body: <p>I new in matlab i need some help about with a code in matlab. I want make the Particle Swarm Optimization and i want put  a mouse click to define a point in space with a window size [min1, max1] and [min2, max2]. Then a cluster consisting of n = 10 particles initialized and searches for the point set initially by the user. </p>
  
  <p>my code is this:</p>
  
  <pre><code>clear all;
  
  numofdims = 30;
  
  numofparticles = 50;
  
  c1 = 2;
  
  c2 = 2;
  
  numofiterations = 1000;
  
  V = zeros(50, 30);
  
  initialpop = V;
  
  Vmin = zeros(30, 1);
  
  Vmax = Vmin;
  
  Xmax = ones(30, 1) * 100;
  
  Xmin = -Xmax;
  
  pbestfits = zeros(50, 1);
  
  worsts = zeros(50, 1);
  
  bests = zeros(50, 1);
  
  meanfits = zeros(50, 1);
  
  pbests = zeros(50, 30);
  
  initialpop = Xmin + (Xmax - Xmin) .* rand(numofparticles, numofdims);
  
  X = initialpop;
  
  fitnesses = testfunc1(X);
  
  [minfit, minfitidx] = min(fitnesses);
  
  gbestfit = minfit;
  
  gbest = X(minfitidx, :);
  
  for i = 1:numofdims
  
      Vmax(i) = 0.2 * (Xmax(i) - Xmin(i));
  
      Vmin(i) = -Vmax(i);
  
  end
  
  
  for t = 1:1000
  
      w = 0.9 - 0.7 * (t / numofiterations);
  
  
      for i = 1:numofparticles
  
          if(fitnesses(i) &lt; pbestfits(i))
  
              pbestfits(i) = fitnesses(i);
  
              pbests(i, :) =  X(i, :);
  
          end
  
      end
  
      for i = 1:numofparticles
  
          for j = 1:numofdims
  
              V(i, j) = min(max((w * V(i, j) + rand * c1 * (pbests(i, j) - X(i, j))...
  
                  + rand * c2 * (gbest(j) - X(i, j))), Vmin(j)), Vmax(j));
  
              X(i, j) = min(max((X(i, j) + V(i, j)), Xmin(j)), Xmax(j));
  
          end
  
      end
  
  
      fitnesses = testfunc1(X);
  
      [minfit, minfitidx] = min(fitnesses);
  
      if(minfit &lt; gbestfit)
  
          gbestfit = minfit;
  
          gbest = X(minfitidx, :);
  
      end
  
  
      worsts(t) = max(fitnesses);
  
      bests(t) = gbestfit;
  
      meanfits(t) = mean(fitnesses);
  
  end
  </code></pre>