Challenge

Week 4.1 - Genetic Algorithm

AIM:

(genetic algorithm) write a code in matlab to optimize the stalagmite function and the global maxima of the function

Object of the project:

1. Explaining the concept of genetic algorithm and also explain the syntax for ga in MATLAB.

2.Plot graphs for all 3 studies and for F maximum vs no. of iteration.

what is stalagmite function?

A stalagmite function generally refers to the function with which we are generating values over a stalagmite kind of surface for finding out the local and global maxima and minima of that particular given function. 3. For this in Matlab we are using a method called 'Optimization'.

Optimization:

Optimizers find the location of a minimum of a nonlinear objective function. You can find a minimum of a function of one variable on a bounded interval using fminbnd , or a minimum of a function of several variables on an unbounded domain using fminsearch . Maximize a function by minimizing its negative.

Phases in Genetic Algoritham-

  1. Initialization of Population (Coding)

The code generates its random population of defined size and from that population the code evaluates the fitness of the members of the population according to which it forms new population based on no. of iterations performed.

1.Fitness Function

It is that function which we have to optimize and its optimization is done with the help of number of generations which have been formed by the code accordance with the fitness value of each member generated, these fitness values are used for the reproduction of the children.

  1. Selection

The idea of the selection phase is to select the fittest individuals and let them pass their genes to the next generation. The main goal of this phase is to find the region where the chances of getting the best solution are more.

Inspiration for this is from the survival of the fittest.

It should be a balance between exploration and exploitation of search space.

GA tries to move the genotype to higher fitness in the search space.

Too strong fitness selection bias can lead to sub-optimal solutions.

Too little fitness bias selection results in unfocused search.

  1. Reproduction

Generation of offspring happen in 2 way:

Crossover

Mutation

1. A) Crossover

Crossover is the most significant stage in the genetic algorithm. During crossover, a random point is selected while mating a pair of parents to generate offspring.

There are 3 major types of crossover.

Single Point Crossover:

A point on both parents’ chromosomes is picked randomly, and designated a ‘crossover point’.

Two-Point Crossover: Two crossover points are picked randomly from the parent chromosomes.

Unifofm Crossover: In a uniform crossover, typically, each bit is chosen from either parent with equal probability.

  1. B) Mutation

In a few new offspring formed, some of their genes can be subjected to a mutation with a low random probability. This indicates that some of the bits in the bit chromosome can be flipped. Mutation happens to take care of diversity among the population and stop premature convergence.

Syntax

x = ga(fun,nvars)

x = ga(fun,nvars,A,b)

x = ga(fun,nvars,A,b,Aeq,beq)

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub)

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon)

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)

x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon)

x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon,options)

x = ga(problem)

[x,fval] = ga(___)

[x,fval,exitflag,output] = ga(___)

[x,fval,exitflag,output,population,scores] = ga(___)

Description

x = ga(fun,nvars) finds a local unconstrained minimum, x, to the objective function, fun. nvars is the dimension (number of design variables) of fun.

x = ga(fun,nvars,A,b) finds a local minimum x to fun, subject to the linear inequalities A*x ≤ b. ga evaluates the matrix product A*x as if x is transposed (A*x').

x = ga(fun,nvars,A,b,Aeq,beq) finds a local minimum x to fun, subject to the linear equalities Aeq*x = beq and A*x ≤ b. (Set A=[] and b=[] if no linear inequalities exist.) ga evaluates the matrix product Aeq*x as if x is transposed (Aeq*x').

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub) defines a set of lower and upper bounds on the design variables, x, so that a solution is found in the range lb ≤ x ≤ ub. (Set Aeq=[] and beq=[] if no linear equalities exist.)

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon) subjects the minimization to the constraints defined in nonlcon. The function nonlcon accepts x and returns vectors C and Ceq, representing the nonlinear inequalities and equalities respectively. ga minimizes the fun such that C(x) ≤ 0 and Ceq(x) = 0. (Set lb=[] and ub=[] if no bounds exist.)

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options) minimizes with the default optimization parameters replaced by values in options. (Set nonlcon=[] if no nonlinear constraints exist.) Create options using optimoptions.

x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon) or x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon,options) requires that the variables listed in IntCon take integer values.

x = ga(problem) finds the minimum for problem, a structure described in problem.

[x,fval] = ga(___), for any previous input arguments, also returns fval, the value of the fitness function at x.

[x,fval,exitflag,output] = ga(___) also returns exitflag, an integer identifying the reason the algorithm terminated, and output, a structure that contains output from each generation and other information about the performance of the algorithm.

[x,fval,exitflag,output,population,scores] = ga(___) also returns a matrix population, whose rows are the final population, and a vector scores, the scores of the final population.

BODY OF THE CONTANT:

The above equations are used in the stalagmite function

function [f]=stalagmite(input_vector)
x = input_vector(1);
y = input_vector(2);
f1 = (sin(6.1*pi*x+0.5))^6;
f2 = exp((-4*log(2)*((x-0.0667)^2)/0.64));
f3 = (sin(6.1*pi*y+0.5))^6;
f4 = exp((-4*log(2)*((y-0.0667)^2)/0.64));
f = -(f1*f2*f3*f4);
end
COMMAND USED:
meshgrid

Syntax

  • [X,Y] = meshgrid(x,y)
  • [X,Y] = meshgrid(x)
  • [X,Y,Z] = meshgrid(x,y,z

Description

[X,Y] = meshgrid(x,y) transforms the domain specified by vectors x and y into arrays X and Y, which can be used to evaluate functions of two variables and three-dimensional mesh/surface plots. The rows of the output array X are copies of the vector x; columns of the output array Y are copies of the vector y.

[X,Y] = meshgrid(x) is the same as [X,Y] = meshgrid(x,x).

[X,Y,Z] = meshgrid(x,y,z) produces three-dimensional arrays used to evaluate functions of three variables and three-dimensional volumetric plots.

surf
surf( X , Y , Z ) creates a three-dimensional surface plot, which is a three-dimensional surface that has solid edge colors and solid face colors. The function plots the values in matrix Z as heights above a grid in the x-y plane defined by X and Y
shading interp
shading interp varies the color in each line segment and face by interpolating the colormap index or true color value across the line or face.

Main body

  • Firstly, creating the mesh from the two vectors which will be acting as a search space to find the maxima of the function.
  • Creating the mesh of these two vectors using the ‘mesh’ command and defining the no. of iterations as num_cases to iterate the values of the optimum values of the function.
  • Now calculating the values of fitness function at each point of the mesh grid formed.
  • Now creating its surface through ‘surfc’ command which will also provide the contour of the generated surface.
  • While using surfc applying the -ve sign to the function will generate the surface upside down which will be quite good to get the maxima of the function, as it will provide positive value for the maxima using the -ve sign.
  • clear

    close all

    clc

    %% PROVIDING THE SEARCH SPACE FOR THE FUNCTION

    x=linspace(0,0.6,150);

    y=linspace(0,0.6,150);

    [X,Y]=meshgrid(x,y);

    num_cases=50; %Number of itreation for which the function will evaluate the fitness

    %% CREATING THE SURFACE PLOT OF STALAGEMITE FUNCTION

    for i=1:length(X)

    for j=1:length(Y)

    input_vector(1)=X(i,j);

    input_vector(2)=Y(i,j);

    f(i,j)=stalagmite(input_vector); %values of function in given search space

    end

    end

    surfc(X,Y,-f); %generating the surface

    shading interp %To remove the lines produced by the mesh grid

    The plot generated is shown below:

STATISTICAL STUDY WITHOUT BOUNDATION

In this evaluating the optimum value of fitness function at each iteration and calculating it using the above-mentioned syntax in the intro part (which gives the inputs ie. Values of x and y at which the stalagmite function is minimum)

Then plotting it into the surf command and also providing the optimum values of the function that how it is varying.

Also using the tic and tok command to evaluate the time used for optimizing the function.

%% STATISTICAL BEHAVIOUR (UNBOUNDED)

clear all
close all
clc
%defing our search space
x = linspace(0,0.6,150);
y = linspace(0,0.6,150);
num_cases = 50;
%creating a 2Dimensional mesh
[xx, yy] = meshgrid(x, y);
% evaluating the stalagmite function
for i = 1:length(xx)
for j = 1:length(yy)
input_vector(1)=xx(i,j);
input_vector(2)=yy(i,j);
f(i,j) = stalagmite(input_vector);
end
end
%study (1) unbounded
tic
for i=1:num_cases
[results,fopt(i)]=ga(@stalagmite,2);
xopt(i)=results(1);
yopt(i)=results(2);
end
study_time1=toc;
figure(1)
subplot(2,1,1)
surf(x,y,-f)
shading interp
hold on
plot3(xopt,yopt,-fopt,'marker','o','markersize',5,'markerfacecolor','r')
subplot(2,1,2)
plot(-fopt)
%surfc(xx,yy,-f)
xlabel('iteration')
ylabel('function maximum')
title ('unbounded')
shading interp
RESULTS
study_time1 = 3.695

From the figure as shown above it is clear that the results are not that much accurate and giving a lot of variation in optimizing the function.

STATISTICAL STUDY WITH BOUNDATION

The difference over here is in providing the upper and the lower limit in the ga so that the search space is reduced with the upper and lower boundary

And then plotting it as similar to the above study.

%% STATISTICAL BEHAVIOUR (BOUNDED)

tic %calculating the study time through tic and toc command

%study (2) bounded
tic
for i=1:num_cases
[results,fopt(j)]=ga(@stalagmite,2,[],[],[],[],[0;0],[0.6;0.6]);
% [results,fopt(j)]=ga(@stalagmite,2);
xopt(j)=results(1);
yopt(j)=results(2);
end
study_time2=toc;
figure(2)
subplot(2,1,1)
surf(x,y,-f)
shading interp
hold on
plot3(xopt,yopt,-fopt,'marker','o','markersize',5,'markerfacecolor','r')
subplot(2,1,2)
plot(-fopt)
title('bounded')
%surfc(xx,yy,-f)
xlabel('iteration')
ylabel('function maximum')
title('bounded')
shading interp
RESULTS
study_time2 = 4.317

It is clearly seen from the above that after providing the boundary limits the variation in the optimum value of the function has reduced.

STATISTICAL STUDY WITH INCREASE IN SIZE OF POPULATION

In this study using the ‘optimoptions’ command to increase the size of population.

The benefit of that will be it will be working on the large set of numbers and which will be led to increase the possibilities of finding the better fitness of the function.

The drawback is that the time for evaluation will increase.

options=optimoptions(‘ga’,’populationsize’,200) %increaing the sixe of population by using

%study (3) increasing ga
options = optimoptions('ga');
options = optimoptions(options,'populationsize',200);
tic
for k=1:num_cases
[results,fopt(i)]=ga(@stalagmite,2,[],[],[],[],[0;0],[0.6;0.6],[],[],options);
% [results,fopt(k)]=ga(@stalagmite,2);
xopt(k)=results(1);
yopt(k)=results(2);
end
study_time3=toc;
figure(3)
subplot(2,1,1)
surf(x,y,-f)
shading interp
hold on
plot3(xopt,yopt,-fopt,'marker','o','markersize',5,'markerfacecolor','r')
subplot(2,1,2)
plot(-fopt)
xlabel('iteration')
ylabel('function maximum')
RESULTS
study_time2 = 9.262
outputs:
Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.