MATLAB
实现算法代码:
GA
(遗传算法)——整数编码
function
[BestGene,aa]
=
GA(MaxGeneration,GeneSize,GeneNum,pcross,pmute,minGene,maxGene)
Parent = Init(GeneSize,GeneNum,minGene,maxGene);
[BestGene,Parent] = KeepBest(Parent);
aa = [];
for i = 1:MaxGeneration
[i 1/value(BestGene)]
Child = chose(Parent);
Child = cross(Child,pcross);
Child = mute(Child,pmute,maxGene);
[BestGene,Parent] = KeepBest(Child);
aa = [aa;value(BestGene)];
end
function GeneInit = Init(GeneSize,GeneNum,minGene,maxGene)
GeneInit = [];
for i = 1:GeneSize
x = []; x = ceil(rand(1,GeneNum).*(maxGene-minGene)) + minGene;
GeneInit = [GeneInit;x];
end
GeneInit = [GeneInit;x];
function Child = chose(Parent)
GeneSize = size(Parent,1);
for i = 1:GeneSize
x = Parent(i,:);
val(i) = value(x);
end
ValSum = sum(val);
val = val / ValSum;
for i = 2:GeneSize
val(i) = val(i) + val(i-1);
end
for i = 1:GeneSize
randval = rand;
if randval <= val(1)
Child(i,:) = Parent(1,:);
end
for j = 2:GeneSize
if randval > val(j-1) && randval <= val(j)