%no of Variables %length of Each Population
%no of Variables %length of Each Population
D:\scm_project\1_assignment\D_Bio-Heat\1D_Pennes_e...\gaurav.m
1 of 3
clc;
clear all;
n=2;
L=5;
N=6;
pc=0.9;
pm=0.05;
itrmax=500;
%no of variables
%length of each population
syms x1 x2
f=@(x1,x2)(-(x1+x2-2*x1^2-x2^2+x1*x2));
%==========================================================================Initial
Population
l=n*L;
alpha(1:N,1:l)=0;
for i=1:N
alpha(i,:)=dec2bin(ceil((2^l-1).*rand(1,1)),l)-48;
end;
itration=1;
while(itration<=itrmax)
%==========================================================================Reproduction
fitness(1:N)=0;
total_fitness=0;
for i=1:N
tempval(1:n)=0;
for j=1:n
for k=1:L
tempval(j)=tempval(j)+alpha(i,k+L*(j-1))*(2^(k-1));
end;
tempval(j)=tempval(j)*0.5/(2^L-1);
end;
fitness(i)=f(tempval(1),tempval(2));
total_fitness=total_fitness+fitness(i);
end;
pf(1:N)=0;
pr(1:N)=0;
for i=1:N
pf(i)=fitness(i)/total_fitness;
for j=1:i
pr(i)=pr(i)+pf(j);
end;
end;
mating_pool(1:N,1:l)=0;
for i=1:N
8/25/11 11:08 AM
D:\scm_project\1_assignment\D_Bio-Heat\1D_Pennes_e...\gaurav.m
2 of 3
temp=rand();
j=1;
while temp>pr(j)
j=j+1;
end;
mating_pool(i,:)=alpha(j,:);
end;
alpha(:,:)=mating_pool(:,:);
%==========================================================================CrossOver
for i=1:int8(pc*N/2)
temp1=ceil(N.*rand(1,1));
temp2=ceil(N.*rand(1,1));
%Fisrt Point Cross Over
temp3=ceil(l.*rand(1,1));
for j=1:temp3
temp=alpha(temp1,j);
alpha(temp1,j)=alpha(temp2,j);
alpha(temp2,j)=temp;
end;
%Second Point Cross Over
temp3=ceil(l.*rand(1,1));
for j=1:temp3
temp=alpha(temp1,j);
alpha(temp1,j)=alpha(temp2,j);
alpha(temp2,j)=temp;
end;
end;
%==========================================================================Mutation
for i=1:N
if rand()<pm
temp=ceil(l.*rand(1,1));
if alpha(i,temp)==0
alpha(i,temp)=1;
else
alpha(i,temp)=0;
end;
end;
end;
itration=itration+1;
end;
opt_fitness=0;opt_x1=0;opt_x2=0;
for i=1:N
tempval(1:n)=0;
for j=1:n
for k=1:L
tempval(j)=tempval(j)+alpha(i,k+L*(j-1))*(2^(k-1));
8/25/11 11:08 AM
D:\scm_project\1_assignment\D_Bio-Heat\1D_Pennes_e...\gaurav.m
end;
tempval(j)=tempval(j)*0.5/(2^L-1);
end;
fitness(i)=f(tempval(1),tempval(2));
if ((opt_fitness>fitness(i))||(i==1))
opt_fitness=fitness(i);
opt_x1=tempval(1);
opt_x2=tempval(2);
end;
end;
disp('Optimal Function Value = ');
disp(1/opt_fitness);
disp('Optimal x1 = ');
disp(opt_x1);
disp('Optimal x2 = ');
disp(opt_x2);
3 of 3