% By Youhanna Parvizinejad (83405169) and Mahdi Farahmadfar (81414271)
% ------------------- Valid Range Of Algorithm -------------------
Start_points=[-4 -1.5];
End_points=[2 1];
%----------- Base Parameters Of Binary Gen Algorithm -------------
Gen_num=2; % tedad moteghayer
N=50; % generation number
Each_bits=[15 15]; % gen bit
till=100; %Number of regenaration
%----------- Defination Temp Vars -------------
Max_reach=[]; % Storing Best result (general best result)
Avg=[]; % Average Array of Fitness Function result for all generations
total_bit=sum(Each_bits); % Total bits of each chrom
%----------- Base Parameters Of Gen Algorithm -------------
Mutation_rate=0.05;
Crossover_rate=0.4;
%-------------------- Initializing First Generation --------------
Generation=round(rand(N,total_bit));
% --------------------- Loop Back Till Last Generation -----------
for it=1:till
[Result1]=Convert_from_binary(Generation,N,Each_bits,Gen_num,Start_points,End_points);
[Selection_rate,Fit,Avrg,Max_fitness,OptSol]=Get_Value(Result1,N);
Avg(it)=Avrg;
Max_reach(it)=Max_fitness;
Max_reach=sort(Max_reach);
[Selected_gen]=Roulette(Generation,N,Selection_rate);
[Next_Gen]=Crossover(Selected_gen,Crossover_rate,N,total_bit);
[Generation]=Mutation(Next_Gen,Mutation_rate,N,total_bit);
end
% ------------------------ Calling Output + Plot Funtion ------------
[out1]=Displayit(OptSol,Max_reach,Avg,till);