Matlab Code of Particle Swarm Optimization (PSO)

Hello everyone and welcome. I’m going to show you a simple but effective Matlab code of Particle Swarm Optimization (PSO) and test the performance of PSO in solving both maximization and minimization problems. You can copy the Matlab code of PSO and customize it to solve your problems.

For more videos like this, check my YouTube channel here.

Objective function (objective_function.m)

function Z = objective_function(O)
x = O(1);
y = O(2);
Z = 3*(1-x)^2*exp(-x^2 - (y+1)^2) - 10*(x/5 - x^3 - y^5)*exp(-x^2 - y^2) -1/3*exp(-(x+1)^2 - y^2);

Main_PSO (Main_PSO.m)

clc
clear all
close all
%% Problem
nVar = 2; % number of variables
VarMin = -3; % lower bound of variable
VarMax = 3; % upper bound of varible
%% PSO parameters
MaxIter =150; % max number of iterations
nPop = 50; % population size
w = 1; % inertia 
d = 0.99; % damping ratio of the inertia
c1 = 2; % acceleration 1
c2 = 2; % acceleration 2
%% Initial
x0.position = [];
x0.velocity = [];
x0.fitness = [];
x0.best.position =[];
x0.best.fitness =[];

x = repmat(x0,nPop,1); % Make a population
global_best.fitness = inf;
% Generate initial population
for i = 1: nPop
    x(i).position = unifrnd(VarMin,VarMax,[1 nVar]); % generate random solutions
    x(i).velocity = zeros([1 nVar]); % initial velocity
.
.
.
Sorry! This is only a half of the code.

Notice: It’s possible to watch the video and re-type the Matlab code yourself – that would take you from 1 to 3 hours; or with just €1.99 (the cost of a cup of coffee), you can download/copy the whole Matlab code within 2 minutes. It’s your choice to make.

Original price is €4.99 but today it’s only €1.99 (save €3 today – available for a limited time only)

Download the whole Matlab code here (Membership Code ID: 001)

No need to build the Matlab code from scratch because it’s very time-consuming. My idol, Jim Rohn, once said: “Time is more value than money. You can get more money, but you cannot get more time”. If you think this code can be used in your research/teaching work, you should download it and then customize/modify/apply it to your work, without any obligation of citing the original source if you don’t want. However, redistribution (i.e., downloading the code/script here and then making it available on another site on the Internet) is strictly prohibited.

If you have any question or problem, please contact Dr. Panda by email: learnwithpanda2018@gmail.com

Thank you very much and good luck with your research!

46 Replies to “Matlab Code of Particle Swarm Optimization (PSO)”

  1. Hello, your website is excellent.
    Actually, I am trying to implement your PSO code to resolve an aggregate production planning problem, but I have some difficulty. In that sense, could you help me with two things that I need to know?: how I can run your code for 12 months (planning periods) and how to implement constraints as: -Inventory(current month-1)+Inventory(current month).

    Best wishes.

    1. Hi, thanks for your visit. Your questions are about the problem formulation. You should do it yourself and/or with the help of your supervisors. I don’t have background to understand your problem.

  2. hi, I want to implement PSO code to multilevel inverters, but facing very difficulty in finding switching pulses…could you please help me how to write PSO code for multilevel inverters in power electronics.

    1. Hi, I don’t have background to understand your problem. All I can do is to advise you to study to understand my PSO code and then customize it to solve your problems.

    1. Hi, from optimization point of view, solving principle is the same. However, solving a new problems, some customization is required. Sorry, I don’t have background to understand your problem.

  3. Thank you Dr. Panda for this insightul contribution. I need the matlab code for pso. Thank you in anticipation for response

    1. Hello. I don’t have GA code for your specific problems. Only thing I can do now is to suggest you to customize my GA code to solve the optimization problems in your fields. Many thanks!

Leave a Reply

Your email address will not be published. Required fields are marked *