# CS512 – Assignment 6 solution

\$25.00

Original Work ?
Category: You will Instantly receive a download link for .ZIP solution file upon Payment

## Description

5/5 - (1 vote)

Write a Python program to use the scheme of DE-BPSO (combination of Differential evolution and Binary Particle Swarm Optimization) 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 algorithm of DE-BPSO is:

Step 1:

// Create the initial velocity (call it matrix V) that is between 0 and 1 (not binary)

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

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

{

V[i,j] = random number between 0 and 1;

}

———————————————————————————

Step 2:

// Create the initial population (call it matrix X) based on the values of the initial velocity

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

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

{

if (V[i,j] <= Lambda)  // Note: The value of Lambda is 0.01

X[i,j] = 1;

else

X[i, j] = 0;

}

———————————————————————————

Step 3:

// Find the fitness of each row of the 50 models in the first population

———————————————————————————

Step 4:

// Since you only have the first population at this time, your local best

// matrix (call it matrix P) become the same as the first population

// Therefore:

P = X

// The row with the best fitness in P becomes the global best. Let’s call that row Row “G”

// Therefore:

G = the row in P with the best fitness

———————————————————————————

Step 5:

// This section is going to be repeated until the end of the program

// In this section we need to find the next velocity matrix

// We are using Differential Evolution (DE) algorithm to find the new velocity matrix

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

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

{

Randomly select 3 rows from the populations and call them as r1, r2, and r3

Let r = r3 + F * (r2 – r1) // the value of F should be set to 0.7

// Do the cross mutation of row “i” and “r”

if ((random between 0 and 1) < CR) // not binary, CR = 0.7

V[i,j] = r[j]

else

V[i,j] = V[i,j] // remains unchanged

}

———————————————————————————

Step 6:

// This section creates the new population. The value of Alpha

// starts from 0.5 and is decremented to 0.33. The value of beta is 0.004

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

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

{

if ( (alpha < V[i,j]) && (V[i,j] <= 0.5*(1+alpha))

X[i, j] = P[i,j];

else if (  (0.5*(1+alpha)) < V[i,j]) && (V[i,j] <= (1-beta))

X[i,j] = G[j] // the global vector value

else if  (1-beta) < V[i,j]) && (V[i,j] <=1))

X[i.j] = 1 – X[i,j]

else

X[i,j] = X[i,j]; // remains unchanged

}

———————————————————————————

Step 7:

// calculate the fitness of the new population

// update the local best matrix as you did in the previous assignment

// update the global best row if necessary

// stop if the number of iterations have reached the maximum

// otherwise decrement alpha and go to step 5

———————————————————————————