本文介绍了基于遗传算法解决最速降线问题的方法。我们使用算法精确地解出了无阻力、无初速度的最速降线。在此基础上推广,算出了考虑粘滞阻力或摩擦阻力的最速降线。并将计算结果与文献中的结果进行了比较,对唯一不一致的计算结果进行了详细的分析,证明了我们计算结果的正确性。结果显示,随着阻力的增大,最速降线将持续变直。 The Brachistochrone problem has been solved by the genetic algorithm method. The calculated results are exactly the same as the analytical solutions under the conditions of no resistance and no initial velocity. Furthermore, this method is extended for considering both the viscous and frictional resistances. The simulated results are compared with the ones in literature. The discrepancy of the only one simulated result is detailedly discussed in order to verify the current simulation result. Finally, the result shows that with the increase of the resistance, the brachistochrone will continually become flatter.
陈德锋1,廖桂颖2,王江涌1*
1汕头大学理学院物理系,广东 汕头
2汕头大学理学院数学系,广东 汕头
收稿日期:2015年12月2日;录用日期:2015年12月21日;发布日期:2015年12月24日
本文介绍了基于遗传算法解决最速降线问题的方法。我们使用算法精确地解出了无阻力、无初速度的最速降线。在此基础上推广,算出了考虑粘滞阻力或摩擦阻力的最速降线。并将计算结果与文献中的结果进行了比较,对唯一不一致的计算结果进行了详细的分析,证明了我们计算结果的正确性。结果显示,随着阻力的增大,最速降线将持续变直。
关键词 :遗传算法,最速降线,贝塞尔曲线,粘滞阻力,摩擦阻力
最速降线问题最初由伽利略于1630年提出。该问题考虑一个物体仅受重力作用,在竖直平面内从高处的起点无初速度不计阻力下滑到终点,求解一条线使物体下滑所花的时间最短。后来,牛顿,雅可比,莱布尼兹,伯努利兄弟等数学家、物理学家分别用不同的方法解得。而欧拉于1744年将该问题推广至一般解法,并由此催生出变分学这一支新的数学分支。
原始的最速降线是在无初速度和无阻力的条件下求解,然而,工程应用中往往需要考虑到实际情况,要将初速度和阻力等因素的影响考虑进去,而这些补充的条件往往使问题变得复杂,令求解困难。对于考虑粘滞阻力的情况下的最速降线, B. Vratanar and M. Saje [
不过鉴于目前尚无一个统一的方法讨论在各种条件下的最速降线,因此,本文尝试用同一种方式求解在各种附加条件下的最速降线问题。遗传算法是模仿自然界生物进化机制发展起来的一种搜索启发式算法,它非常适用于计算求最优解问题。本文利用遗传算法来对最速降线问题进行求解,在能精确地得到无初速度、无阻力的最速降线的基础上,进一步求解出在考虑粘滞阻力或摩擦阻力的情况下的最速降线,并与现有文献的数据进行比较,计算结果与大多数已有的成果相吻合。
遗传算法解最速降线问题首先要设计出曲线的编码规则,即用一种编码方式描述特定曲线的形貌细节。某一特定的编码在遗传算法中称为染色体。最直接的编码思路是记录平面上若干个点的坐标,各坐标点之间用直线连接,用这样的折线来近似地描述一条曲线。当坐标点取得越多,曲线也就越光滑。但这样的直接对坐标点进行编码会让染色体的复杂度随着曲线的光滑度增加而增加,进而导致种群在进化过程中不易收敛至最优解。为了简化编码,我们采用贝塞尔曲线插值方式仅记录少数几个控制点便可计算得出一条足够光滑的曲线。详细算法如下。
对于n阶贝塞尔曲线,则有
其中
例如,取
于是,我们将
将染色体(一组控制点的坐标)代入上述贝塞尔曲线的递推公式便可生成曲线上的各个点。至此,我们得到的一条贝塞尔曲线便是种群中的一个个体,该个体对最速降线问题的适应度由接下来介绍的适应度函数解得。由于程序计算过程中,
适应度函数是遗传算法模仿自然选择中衡量生物个体在生存环境中的竞争力的参考指标。适应度函数的目的是评判某个体是否适合解决特定问题,适应度越高的个体将越有机会进入下一轮算法的筛选。对第
在3.1中说到我们分别计算物体通过直线段的时间。但对特定的条件都有统一的计算模式。给定的条件可以分为:无阻力,有粘滞阻力,有摩擦阻力,三种情况。
由于阻力为零,物体在直线上的运动状态为匀变速直线运动,设物体在直线上下滑的初速度为
对(1)积分得:
最终解得:
即物体在该线段下落所花费的时间。将解得的
在物体下滑的过程中考虑粘滞阻力得影响,则
其余条件如1.2.1所设。则对物体下滑的加速度有以下微分方程:
解微分方程(5)得:
其中
由于
然后我们将直线上每一小段的时间加起来,得到物体通过该直线段
设摩擦力
对(10)积分得:
我们最终可以算出物体通过该直线段所花的时间为:
然而,考虑物体沿有摩擦阻力曲线下滑的过程并不是能单纯地等同于通过若干段直线段的过程。还需额外考虑法向向心力在重力的基础上增大摩擦力的影响。
已知
则物体在该段的瞬时向心加速度为
同1.2.2的处理相类似,采用微元法,则物体通过一段微小直线的时间
进行累加得:
与自然选择类似,适应生存环境的个体能获得更多繁殖下一代的机会。遗传算法中对下一代的父辈的选取原则是,个体的适应度值越高,被选择的几率就越大,常用的有“适应度比例法”,即个体被选中的概率与其适应度函数值成正比。若某个体
在遗传算法中,将父代的染色体交叉组合产生子代的染色体,从而可能使得双方的优势互补产生更优良的下一代。典型的交叉操作有:单点交叉,均匀交叉:
单点交叉:在染色体上随机找出一个点,该点前的遗传信息为父个体A的,该点后的遗传信息为父个体B的,组合产生子个体。
父个体A:
父个体B:
↓交叉
子个体:
均匀交叉:两个父个体染色体上的各点传递到下一代的几率都是一致的,子个体染色体上的各点,均匀且随机地来自两个父个体。
父个体A:
父个体B:
↓交叉
子个体:
遗传算法有与自然界的生物相类似的基因变异的操作,那就是在生成子代的时候,染色体上的某个位点有一定几率会发生一点随机的变动,从而产生上一代没有的新的遗传信息,而新的遗传信息可能会带来更好的适应度。
变异前的子个体:
↓变异
变异后的子个体:
以上就是本程序运用遗传算法解决最速降线问题的各种操作。在程序的开始,先随机生成一个种群,该种群拥有一批各种各样的染色体,但各个染色体表现出来的适应度并不一样,适应度高的个体将有更大的几率保留下来并在此基础上产生下一代,而适应度低的个体更有可能被淘汰掉而无法再进入下一轮进化。在种群繁衍下一代的过程中,父代通过染色体交叉的方式将遗传信息传递给子代,子代生成的过程中又有一定几率发生基因的突变。生成的子代将再次进入由适应度函数的筛选而繁衍出新一代子代。如此反复循环的种群进化,最终种群中的最优个体将逐渐收敛到问题的最优解上去。这就是我们要求的问题答案。
利用上述方法,当水平位移和垂直位移之比为
而当水平位移和垂直位移之比分别为
由图2可知,使用贝塞尔曲线进行编码,用遗传算法进行优化的结果与变分法的解析解(理论计算结果)几乎重合,略优于用粒子群算法计算得出的结果。说明了遗传算法的可行性和准确性。因此,可以进一步推广计算考虑阻力的情况。
用上述遗传算法程序计算了当水平位移和垂直位移之比为
图1. 用遗传算法,变分法,粒子群算法得出的最速降线的解
图2. 用遗传算法和变分法得出在不同的水平位移和垂直位移之比时的最速降线的解
1.5时的最速降线问题,并与文献[
而当粘滞系数m分别为0,−0.5,−1.0时,计算结果如图4所示。
由以上的结果可以看出,我们用遗传算法计算考虑粘滞阻力情况下,最速降线的结果与文献[
图3. 用遗传算法和变分法得出在不同的正粘滞系数时的最速降线的解
图4. 用遗传算法和变分法得出在不同负粘滞系数时的最速降线的解
图5为给出了当水平位移和垂直位移之比为
由图5可知,随着粘滞系数的增大,文献[
图5. 用遗传算法和文献[
图6. 用遗传算法和文献[
的结果几乎重合;
为了检验两个计算结果哪个更符合最速降线的定义,我们编写了一个程序。输入一条曲线,并设定初始条件为:下滑初速度
为了检验该程序的计算结果是否正确,我们输入一条直线,得到单位质量的物体下滑所花时间为2.02562秒,而理论计算结果是2.02563秒,两者间的误差小于0.005%,所以,可以认为这个检验程序的计算结果是正确的。下面我们就用这个程序,分别对文献[
图7给出了当
用上述程序计算沿图7两种情形计算得到的最速降线,以及相应邻近降线下滑的时间列于表1中。
通过比较我们可以看出,当
图7. 文献[
物体下滑曲线 | 文献[
|
本文结果/s |
---|---|---|
略凹的线 | 1.89353 | 1.87986 |
“最速降线” | 1.88602 | 1.87892 |
略直的线 | 1.88220 | 1.88237 |
表1. 沿图7给定的最速降线以及相应邻近降线下滑的时间
的降线更有可能取得泛函的极值,也就是这种情况下的最速降线。
根据以上的分析,我们可以认为文献[
关于考虑摩擦阻力的最速降线,文献[
图9比较了当水平位移和垂直位移之比为
图10比较了当水平位移和垂直位移之比为
通过以上三组计算结果的比较,我们发现遗传算法的计算结果无论是与文献[
图8. 用遗传算法和文献[
图9. 用遗传算法和文献[
图10. 用遗传算法和文献 [
我们通过用贝塞尔曲线的方式简化了曲线的编码,用遗传算法来对曲线进行优化,最终算法收敛得到无阻力无初速度、考虑粘滞阻力、考虑摩擦阻力三种不同情况下的最速降线。
其中,无阻力无初速度的最速降线的计算结果与解析解完全重合,并与粒子群算法得到的结果一致。在考虑粘滞阻力的情况下,本文的计算结果与文献[
综上,我们使用遗传算法求解最速降线问题的方案是可行的,并且只需对算法的模型作少许改动,就可以考虑多种因素情况下的求解,相比用传统的变分法求解要方便快捷,是一种非常理想的,适合统一解决最速降线问题的手段。
陈德锋,廖桂颖,王江涌. 基于遗传算法的最速降线问题求解 The Solution of Brachistochrone Problem Based on the Genetic Algorithm[J]. 力学研究, 2015, 04(04): 76-88. http://dx.doi.org/10.12677/IJM.2015.44010
http://dx.doi.org/10.1016/S0020-7462(97)00026-7
http://dx.doi.org/10.1016/j.ijnonlinmec.2005.02.004
http://dx.doi.org/10.1016/j.mechrescom.2003.09.005