## Description

Write a Python program to use “Binary Particle Swarm Optimization” (BPSO) scheme to predict a linear model for an HIV inhibitor (Pill). You can either choose a linear model such as “Multiple Linear Regression”, “Support Vector Machine”, or “Partial Least Square Regression”, or a none-linear model such “Artificial Neural Network”. The architecture of the BPSO is:

**How to find the initial velocity:**

for (i=0; i<50; i++)

for (j=0; j<385; j++)

{

V[i, j] = random number between 0 and 1; // this is not binary. It is between 0 and 1

}

** **

** **

**How to find the new population:**

- Find the value of alpha (
**a**)- During the 1000 iteration, the value of
**a**ranges from 0.5 downs to 0.33. So, the different between 0.5 and 0.33 is (0.5 – 0.33 = 0.17). Thus, to reduce the value of**a**in each iteration (1000 iterations) we need to divide 0.17 by 1000 (0.00017) to know how much in each iteration we need to subtract from the value of**a**.

- During the 1000 iteration, the value of

- Finding the new population: (note: the value of p=(0.5) *(1+
**a**) )- If (velocity[i][j] <=
**a**) then new-population [i][j] = old-population[i][j] - Else if (velocity[i][j] >
**a**and velocity[i][j] <=p ) then new-population [i][j] = local-best matrix[i][j] - Else if (velocity [i][j] > p and velocity[i][j] <=1) new-population[i][j] = global-best[j]
- Else new-population[i][j] = old-population[i][j]

- If (velocity[i][j] <=

Updating the new local best Matrix:

For each row “i” of the current population

If the fitness of the population[i] < fitness of local-best[i]

Local-best[i] = population[i]

Updating the Global best row:

Global-best row = the row of the local-matrix with the lowest fitness

Updating the velocity: