من برنامه را به زبان مطلب نوشتم
close all
clear all
clc
%%initial setting
pm=.2;
n=8; % N is number of queens
popsize=80; % size of population
pop=round(rand(popsize,n)*(n-1)+1);
for k=1

opsize
x=pop(k,

;
fitness(k)=comfitness(x,n);
end
[bestfitness ind]=min(fitness);
bestchromosome=pop(ind,

;
while (bestfitness<0)
%%crossover operation
index=1;
for k=1

opsize/2
index1=round(rand*(popsize-1)+1);
index2=round(rand*(popsize-1)+1);
while(index1==index2)
index2=round(rand*(popsize-1)+1);
end
x=pop(index1,

;
y=pop(index2,

;
[newpop(index,

newpop(index+1,

]=onepoint(x , y , n);
index=index+2;
end
%% mutaion operation
for k=1

opsize
if(rand<pm)
pointindex=round(rand*(n-1)+1);
newpop(k,pointindex)=round(rand*(n-1)+1);
end
end
%% compute fitness
for k=1

opsize
x=newpop(k,

;
newfitness(k)=comfitness(x,n);
end
[val ind]=min(fitness);
bestchromosome=pop(ind,

;
[val ind]=max(newfitness);
newpop(ind,

=bestchromosome;
pop=newpop;
fitness=newfitness;
[bestfitness ind]=min(fitness);
end
[bestfitness ind]=min(fitness);
bestchromosome=pop(ind,

;
فقط یک فانکشن واسش بنویسید
اگه خواستید خبر کنیید تا فانکشن را هم واستون بنویسم