lixiao0205
2008-12-16, 16:32
下面是一个简单的程序
function[sol,val] = FN(sol)
sum=0;
for x=0:stepx:Xmax %(x,y)为点,这些点是均匀分布在Xmax乘以Ymax的矩形区域的。
for y=0:stepy:Ymax
F=0;
for i=1:k % K代表有K个圆
squareD=(x-sol(2*i-1))^2+(y-sol(2*i))^2; % 求解(x,y)与K个圆圆心之间的距离
if squareD<=r^2 % K个圆 ,每个圆的半径为r
F=1;
break;
end
end
if F==1
sum=sum+1;
end
end
end
val=sum/((Xmax/stepx+1)*(Ymax/stepy+1));
其中val是求得的适应度,定义空间是Xmax*Ymax的矩形,stepx和stepy分别是X和Y的取点间隔,
squareD是一点到一个圆心的距离,sum为求得的在所有的圆覆盖范围内的总数。
求解的目的要使得val最大。 想用遗传算法求解这个问题,或者遗传算法工具箱求解,function[sol,val] = FN(sol) 这一句中的sol 什么意思 我不太懂,我觉得大意就是开始给定K个圆的圆心,但是怎么给定了?
最后求解的结果是在val最大的情况下,求得K个圆的坐标 。
请大家帮助,谢谢!
function[sol,val] = FN(sol)
sum=0;
for x=0:stepx:Xmax %(x,y)为点,这些点是均匀分布在Xmax乘以Ymax的矩形区域的。
for y=0:stepy:Ymax
F=0;
for i=1:k % K代表有K个圆
squareD=(x-sol(2*i-1))^2+(y-sol(2*i))^2; % 求解(x,y)与K个圆圆心之间的距离
if squareD<=r^2 % K个圆 ,每个圆的半径为r
F=1;
break;
end
end
if F==1
sum=sum+1;
end
end
end
val=sum/((Xmax/stepx+1)*(Ymax/stepy+1));
其中val是求得的适应度,定义空间是Xmax*Ymax的矩形,stepx和stepy分别是X和Y的取点间隔,
squareD是一点到一个圆心的距离,sum为求得的在所有的圆覆盖范围内的总数。
求解的目的要使得val最大。 想用遗传算法求解这个问题,或者遗传算法工具箱求解,function[sol,val] = FN(sol) 这一句中的sol 什么意思 我不太懂,我觉得大意就是开始给定K个圆的圆心,但是怎么给定了?
最后求解的结果是在val最大的情况下,求得K个圆的坐标 。
请大家帮助,谢谢!