Q:选择完每行的栅格后,怎么判断相邻栅格之间是否连续呢? A:为地图建立一个坐标系,为每一个栅格分配一个X,Y上的坐标,若两个相邻的栅格,其X的坐标或者Y的坐标最大值只相差1的话,即:
D
=
max
{
abs
(
x
i
+
1
−
x
i
)
,
abs
(
y
i
+
1
−
y
i
)
}
D=\max \left\{\operatorname{abs}\left(x^{i+1}-x^{i}\right), \operatorname{abs}\left(y^{i+1}-y^{i}\right)\right\}
D=max{abs(xi+1−xi),abs(yi+1−yi)},就可以直接走过去,就表示两个栅格是相邻的或者对角的。
转换过程
y
=
int
(
N
/
G
size
)
+
1
y=\operatorname{int}\left(N / G_{\text {size }}\right)+1
y=int(N/Gsize )+1
x
=
N
%
(
G
size
)
x=N \%\left(G_{\text {size }}\right)
x=N%(Gsize )+1 直接除取整就知道在第几行,取余数就说明在第几列。+1操作就是想在编程环境中选择从1开始而不是从0开始,从0开始去掉+1就行。
为了看哪个个体的路径更好,就要对每一个个体进行打分。采取了一个适应度的概念(即距离的倒数)。
d
=
∑
i
=
1
e
n
d
−
1
(
x
i
+
1
−
x
i
)
2
+
(
y
i
+
1
−
y
i
)
2
d=\sum_{i=1}^{e n d-1} \sqrt{\left(x_{i+1}-x_{i}\right)^{2}+\left(y_{i+1}-y_{i}\right)^{2}}
d=∑i=1end−1(xi+1−xi)2+(yi+1−yi)2
对越短的路径而言,其适应度越大。
f
i
t
1
=
1
/
d
f i t_{1}=1 / d
fit1=1/d