Challenge

Week 4.1 - Genetic Algorithm


AIM- To Write a code in MATLAB to optimise the stalagmite function and find the global maxima of the function.

Theory

Genetic Algorithm (GA) is a search-based optimization technique based on the principles of Genetics and Natural Selection. It is frequently used to find optimal or near-optimal solutions to difficult problems which otherwise would take a lifetime to solve. It is frequently used to solve optimization problems, in research, and in machine learning.

Introduction to Optimization

Optimization is the process of making something better. In any process, we have a set of inputs and a set of outputs as shown in the following figure.

Inputs Process Outputs

Optimization refers to finding the values of inputs in such a way that we get the "best" output values. The definition of "best" varies from problem to problem, but in mathematical terms, it refers to maximizing or minimizing one or more objective functions, by varying the input parameters.

Main Program


clear all
close all
clc

% Defining our surch 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);
%evaluatin of stalagmite function

for i = 1:length(xx)
for j = 1:length(yy)
input_vector(1)=xx(i,j);
input_vector(2)=yy(i,j);
GA(i,j) = stalagmite(input_vector);
end
end

% study 1 |Statistical behaviour In unbounded condition

%tic_toc command for ireration
tic
for i = 1:num_cases
[input,GA_opt(i)]=ga(@stalagmite,2);
xopt(i)= input(1);
yopt(i)= input(2);
end
study_1_time = toc

% ploting the graph

figure (1)
subplot(2,1,1)
hold on
surfc(xx,yy,GA)
shading interp
plot3(xopt,yopt,GA_opt,'marker','o','markersize',5,'markerfacecolor','r');
title('Unbounded Inputs')
subplot(2,1,2)
plot(GA_opt)
xlabel('Iteration')
ylabel('Function minimum')


% study 2 |Statistical behaviour - upper & Lower bond
tic
for i = 1:num_cases
[input,GA_opt(i)]=ga(@stalagmite,2,[],[],[],[],[0;0],[1;1]);
xopt(i)= input(1);
yopt(i)= input(2);
end

study_2_time = toc

% ploting the graph
figure (2)
subplot(2,1,1)
hold on
surfc(xx,yy, GA)
shading interp
plot3(xopt,yopt, GA_opt, 'marker','o','markersize',5,'markerfacecolor','r');
title('Bounded Input')
subplot(2,1,2)
plot(GA_opt)
xlabel('Iteration')
ylabel('Function minimun')

% study 2 |Increasing GA Iterations
options = optimoptions('ga');
options = optimoptions(options,'populationsize',200);

tic
for i = 1:num_cases
[input,GA_opt(i)]=ga(@stalagmite,2,[],[],[],[],[0;0],[1;1],[],[],options);
xopt(i)= input(1);
yopt(i)= input(2);
end

study_3_time = toc

% ploting the graph
figure(3)
subplot(2,1,1)
hold on
surfc(xx,yy, GA)
shading interp
plot3(xopt,yopt, GA_opt, 'marker','o','markersize',5,'markerfacecolor','r');
title('Bounded Inputs with modified population size')
subplot(2,1,2)
plot(GA_opt)
xlabel('Iteration')
ylabel('Function minimun')

[x fval]=ga(@stalagmite,2)

% calulating function GA-Ganetic algorithe -stalagmite function.

function[GA]= stalagmite(input_vector)
x=input_vector(1);
y=input_vector(2);

unit1 = pi*5.1*x;
unit2 = pi*5.1*y;
unit3 = ((x-0.0667)^2/0.64);
unit4 = ((y-0.0667)^2/0.64);
unit5 = (-4)*log(2);

f1x = (sin(unit1+0.5))^6;
f1y = (sin(unit2+0.5))^6;

f2x = exp(unit5*unit3);
f2y = exp(unit5*unit4);
GA = -(f1x*f1y*f2x*f2y);
end

Program - code and plot explanation

clear all

close all

clc

% Defining our surch space

x = linspace(0,0.6,150);

y = linspace(0,0.6,150);

num_cases = 50

Value of x and y taking 150 values between the 0 to 0.6

We consider no of iteration num_cases=50

% creating a 2dimensional mesh

[xx yy]= meshgrid(x,y);

%evaluatin of stalagmite function

for i = 1:length(xx)

for j = 1:length(yy)

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

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

GA(i,j) = stalagmite(input_vector);

GA is only minimize a given function, Is considered it automatically gives the maxima.

end

end

% study 1 |Statistical behaviour In unbounded condition

%tic_toc command for ireration

tic

for i = 1:num_cases

[input,GA_opt(i)]=ga(@stalagmite,2);

xopt(i)= input(1);

yopt(i)= input(2);

end

study_1_time = toc

% ploting the graph

figure (1)

subplot(2,1,1)

hold on

surfc(xx,yy,GA)

shading interp

plot3(xopt,yopt,GA_opt,'marker','o','markersize',5,'markerfacecolor','r');

title('Unbounded Inputs')

subplot(2,1,2)

plot(GA_opt)

xlabel('Iteration')

ylabel('Function minimum')

we store the xopt,yopt,GA_opt. now we need to plot the surface xx,yy,GA to gate 3D plot

used command to make a plot of xopt,yopt,GA_opt to plot of optimum maximas.

Also tic-toc command used to record the time

Output

We can see the optimal values went outside the value of x and y and result is in falling away from the stalagmite surface

The study time is 2.8606s

% study 2 |Statistical behaviour - upper & Lower bond

tic

for i = 1:num_cases

[input,GA_opt(i)]=ga(@stalagmite,2,[],[],[],[],[0;0],[1;1]);

xopt(i)= input(1);

yopt(i)= input(2);

end

study_2_time = toc

% ploting the graph

figure (2)

subplot(2,1,1)

hold on

surfc(xx,yy, GA)

shading interp

plot3(xopt,yopt, GA_opt, 'marker','o','markersize',5,'markerfacecolor','r');

title('Bounded Input')

subplot(2,1,2)

plot(GA_opt)

xlabel('Iteration')

ylabel('Function minimun')

Output

Study time is 3.4612s

% study 3 |Increasing GA Iterations

options = optimoptions('ga');

options = optimoptions(options,'populationsize',200);

tic

for i = 1:num_cases

[input,GA_opt(i)]=ga(@stalagmite,2,[],[],[],[],[0;0],[1;1],[],[],options);

xopt(i)= input(1);

yopt(i)= input(2);

end

study_3_time = toc

% ploting the graph

figure(3)

subplot(2,1,1)

hold on

surfc(xx,yy, GA)

shading interp

plot3(xopt,yopt, GA_opt, 'marker','o','markersize',5,'markerfacecolor','r');

title('Bounded Inputs with modified population size')

subplot(2,1,2)

plot(GA_opt)

xlabel('Iteration')

ylabel('Function minimun')

Output

The study time is -8.6043 wiich is more than above two studies

[x fval]=ga(@stalagmite,2)

% calulating function GA-Ganetic algorithem

function[GA]= stalagmite(input_vector)

x=input_vector(1);

y=input_vector(2);

unit1 = pi*5.1*x;

unit2 = pi*5.1*y;

unit3 = ((x-0.0667)^2/0.64);

unit4 = ((y-0.0667)^2/0.64);

unit5 = (-4)*log(2);

f1x = (sin(unit1+0.5))^6;

f1y = (sin(unit2+0.5))^6;

f2x = exp(unit5*unit3);

f2y = exp(unit5*unit4);

GA = -(f1x*f1y*f2x*f2y);

end

Take number of iteration = num_cases and used genetic algorithm function to calculate the maxima of the function

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.