刘辉一向喜欢自己解决问题,不爱麻烦别人,所以自己在研究集群算法的时候,一直没有叫来董九艺参与其中。
他开始考虑董九艺所说其他的集群问题,他的记忆力还不错,全部都记得。
刘辉开始思考第一个问题,集群内外均匀流动的问题。他认为可以随机设定一个漩涡点,让集群外层可以沿着这个漩涡点,往里面飞行,这样这个外层全部进入集群内层之后,就可以把第二层自然而然的暴露出来了,最外层进入漩涡之后还需要到整个集群的最中心聚焦,为了不能变得太致密而导致碰撞等其他问题,需要在流动的过程中,让集群的其他部分慢慢的拉开距离,让整个集群膨胀为跟原来大小差不多的形状,这样就可以完成第一次流动,而且,第二次的流动也跟第一次一样,以此类推,直到所有的集群的火力全部发射完为止。
刘辉开始思考第二个问题,集群稳定成阵列降落问题。其实最重要的是在一个什么样的地形下降的问题。就算是最简单的平地,也不能是直接下降,而是需要排列成一个平面的阵型,然后正常下降即可。排列成平面形状就是算出集群下降时相互之间最小距离,然后在三维平面坐标中,保证不要在垂直方向上有重叠即可,如果有了最小距离内的重叠,就可以让重叠的一个飞行器离开原有位置,到达最外层,或者是垂直稀疏的部分,如果是多个重叠的话,就让最外圈膨胀,让垂直密集区也在尺寸上慢慢拉开,这种拉开都是从外到里进行,拉开出现稀疏区域后,确定稀疏区域存在,确定位置,再让密集集群飞行器进入这个稀疏区域的中心位置,一直有垂直重叠,就按照上述算法一直循环,直到正常为止。对于稀疏区域的计算,就是设定好最小距离之后,计算一个区域每两个飞行器的相互距离的平均值是否是远大于设定的最小距离,即可确定。
刘辉开始思考第三个问题,集群用最优化的办法来变换对应形状。对于不同的战争,集群或许会有不同的形状。相对区域狭小的地带,集群可以是密集的,而相对于广阔的地带,集群可以展开成一个巨大的平面,这样一次朝一个点开火,威力巨大,而且敌方用火力也无法一个个的消灭自己。但是也不能太大,如果太大的话,有些飞行器就会离敌方太远,导致射击精度下降,甚至相互之间会断绝通讯联系。有时集群需要缩成一团,这样会有比较好的隐身效果,不容易被敌方发现,一般是球形的,或者是类似于球形的形状就可以了。如果有特殊需要变换成正方体等其他形状,可以编号进行排列,排列方式可以按照希尔伯特曲线来排,虽然是三维的形状,但是可以按照一维的方式进行控制。
刘辉开始思考第四个问题,集群自身不能碰撞。如果,集群之间不能发生碰撞,那就得需要集群之间保持距离,而保持距离中,需要有一个参考,这样不会因为不同集群相互挤压而影响运算。但是也不能相互之间离的太远,导致影响通讯。那就需要设定最小距离和最大距离,同时确定集群飞行器的个数,如果飞行器之间的平均距离小于最小设定距离,那最外层必须要相互远离,进行膨胀,紧接着次外层也要做远离,以此类推,知道密集部分的飞行器之间的相互距离大于最小设定距离即可,这个算法是自动化运行的,如果集群之间相互距离正常的话,就自动停止这个算法运行。
刘辉开始思考第五个问题,集群自身需要保持特定距离。这个跟第四个问题开起来类似,但是不一样,这不仅仅是要保持不要太近而导致碰撞,还有保持不能太远而导致飞行器相互之间无法联系,也不能因为各种算法的运行导致飞行器来回乱串,导致无法执行正常任务。这需要集群之间需要相互稳定,在确定最大距离之后,停止集群的膨胀。对于来回运动的集群,给一个参考,让运动的飞行器想方设法的相对参考物停止,而且在集群运动的时候,也要跟随参考物运动。集群的每个飞行器有了最小距离之后,形成一个球状,在集群排队之时,使用球形堆放原理可以让整个阵列稳定下来。
刘辉开始思考第六个问题,集群阵型最大计算。这个问题是很有趣的,就是保证集群体积达到最大,还要保证不失去联系,或者是可控制范围内的暂时性失去联系。这种最大无非就是线性最大、面型最大、体积最大而已了。线性最大,就是让集群之间排成一条线,然后尽可能的拉大集群之间的距离,可以让首部和尾部离得非常远,这个作用就是为了能让两个距离遥远的通讯可以用这种方法连接,而对于面形和体积的最大,则有多重情形,可以让集群增加攻击范围。这里最终要的就是不要按最大的距离来,因为稍不留神就容易丢失通讯连接。
刘辉开始思考第七个问题,丢失部分集群重新布阵。在执行集群任务过程中,丢失其中一个或者多个的时候,如果不及时调整,就会破坏阵型。集群本身是要确定数量的,实时会更新是不是所有的集群飞行器都在正常运转。如果发现数量减少,而一时半会无法确定丢失的那个在哪里,有需要继续执行任务,就需要对比较集群阵型进行重排,为了不让集群重排计算量过大,就只能使用一维链式控制,对断裂处结合起来即可。就算是多个失联,也用这种一维的方式进行重排就行。如果使用一维