IJM International Journal of Mechanics Research 2325-498X Scientific Research Publishing 10.12677/IJM.2015.44010 IJM-16592 IJM20150400000_87829272.pdf 数学与物理 基于遗传算法的最速降线问题求解 The Solution of Brachistochrone Problem Based on the Genetic Algorithm 德锋 2 1 桂颖 3 1 江涌 2 * 汕头大学理学院物理系,广东 汕头 汕头大学理学院数学系,广东 汕头 null * E-mail: wangjy@stu.edu.cn(王江) ; 20 11 2015 04 04 76 88 © Copyright 2014 by authors and Scientific Research Publishing Inc. 2014 This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/

本文介绍了基于遗传算法解决最速降线问题的方法。我们使用算法精确地解出了无阻力、无初速度的最速降线。在此基础上推广,算出了考虑粘滞阻力或摩擦阻力的最速降线。并将计算结果与文献中的结果进行了比较,对唯一不一致的计算结果进行了详细的分析,证明了我们计算结果的正确性。结果显示,随着阻力的增大,最速降线将持续变直。 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.

遗传算法,最速降线,贝塞尔曲线,粘滞阻力,摩擦阻力, Genetic Algorithm Brachistochrone Curve Bezier Curve Viscous Resistance Frictional Resistance
基于遗传算法的最速降线问题求解<sup> </sup>

陈德锋1,廖桂颖2,王江涌1*

1汕头大学理学院物理系,广东 汕头

2汕头大学理学院数学系,广东 汕头

收稿日期:2015年12月2日;录用日期:2015年12月21日;发布日期:2015年12月24日

摘 要

本文介绍了基于遗传算法解决最速降线问题的方法。我们使用算法精确地解出了无阻力、无初速度的最速降线。在此基础上推广,算出了考虑粘滞阻力或摩擦阻力的最速降线。并将计算结果与文献中的结果进行了比较,对唯一不一致的计算结果进行了详细的分析,证明了我们计算结果的正确性。结果显示,随着阻力的增大,最速降线将持续变直。

关键词 :遗传算法,最速降线,贝塞尔曲线,粘滞阻力,摩擦阻力

1. 引言

最速降线问题最初由伽利略于1630年提出。该问题考虑一个物体仅受重力作用,在竖直平面内从高处的起点无初速度不计阻力下滑到终点,求解一条线使物体下滑所花的时间最短。后来,牛顿,雅可比,莱布尼兹,伯努利兄弟等数学家、物理学家分别用不同的方法解得。而欧拉于1744年将该问题推广至一般解法,并由此催生出变分学这一支新的数学分支。

原始的最速降线是在无初速度和无阻力的条件下求解,然而,工程应用中往往需要考虑到实际情况,要将初速度和阻力等因素的影响考虑进去,而这些补充的条件往往使问题变得复杂,令求解困难。对于考虑粘滞阻力的情况下的最速降线, B. Vratanar and M. Saje [ 1 ] 和周嘉炜等人[ 2 ] 都分别给出了该问题的变分法求解;对于考虑摩擦阻力的情况下的最速降线,Jeffrey C. Hayen [ 3 ] 给出了该问题的变分法求解,而尤明庆的研究[ 4 ] 有未考虑向心力的疏漏。另一方面,随着计算机运算能力的迅猛发展,计算机智能算法在该问题上也有贡献,其中,周先东等人[ 5 ] 提出了运用粒子群优化算法求解原始最速降线问题,C. M. Wensrich [ 6 ] 则运用进化算法解决考虑摩擦阻力的最速降线问题。

不过鉴于目前尚无一个统一的方法讨论在各种条件下的最速降线,因此,本文尝试用同一种方式求解在各种附加条件下的最速降线问题。遗传算法是模仿自然界生物进化机制发展起来的一种搜索启发式算法,它非常适用于计算求最优解问题。本文利用遗传算法来对最速降线问题进行求解,在能精确地得到无初速度、无阻力的最速降线的基础上,进一步求解出在考虑粘滞阻力或摩擦阻力的情况下的最速降线,并与现有文献的数据进行比较,计算结果与大多数已有的成果相吻合。

2. 遗传算法计算原理 2.1. 利用贝塞尔曲线编码

遗传算法解最速降线问题首先要设计出曲线的编码规则,即用一种编码方式描述特定曲线的形貌细节。某一特定的编码在遗传算法中称为染色体。最直接的编码思路是记录平面上若干个点的坐标,各坐标点之间用直线连接,用这样的折线来近似地描述一条曲线。当坐标点取得越多,曲线也就越光滑。但这样的直接对坐标点进行编码会让染色体的复杂度随着曲线的光滑度增加而增加,进而导致种群在进化过程中不易收敛至最优解。为了简化编码,我们采用贝塞尔曲线插值方式仅记录少数几个控制点便可计算得出一条足够光滑的曲线。详细算法如下。

对于n阶贝塞尔曲线,则有 个控制点来确定曲线,其中 点和 点为曲线的两个端点,确定曲线起始和结束的位置,点 决定了曲线的走向。根据de Casteljau算法,对 阶贝塞尔曲线,有如下递推公式:

其中 为第 个控制点的 坐标, 为伯恩斯坦基底多项式, 是取值从0到 的整数, 是取值在0到1范围内的实数。

例如,取 时,我们有三阶贝塞尔曲线如下:

于是,我们将 个控制点的坐标作为曲线染色体,即:

将染色体(一组控制点的坐标)代入上述贝塞尔曲线的递推公式便可生成曲线上的各个点。至此,我们得到的一条贝塞尔曲线便是种群中的一个个体,该个体对最速降线问题的适应度由接下来介绍的适应度函数解得。由于程序计算过程中, 取值是离散的,所以得到的贝塞尔曲线仍是若干个点连成的折线。我们分别计算物体通过折线中的每段直线线段的时间。而物体通过所有直线段的时间累加起来就可以得到物体通过整条曲线的时间。

2.2. 适应度函数

适应度函数是遗传算法模仿自然选择中衡量生物个体在生存环境中的竞争力的参考指标。适应度函数的目的是评判某个体是否适合解决特定问题,适应度越高的个体将越有机会进入下一轮算法的筛选。对第 条特定的曲线,下滑时间为 ,由于最速降线问题中下滑时间越小越好,所以我们设置计算中采用的适应度函数为:

在3.1中说到我们分别计算物体通过直线段的时间。但对特定的条件都有统一的计算模式。给定的条件可以分为:无阻力,有粘滞阻力,有摩擦阻力,三种情况。

2.2.1. 物体无阻力下滑的计算

由于阻力为零,物体在直线上的运动状态为匀变速直线运动,设物体在直线上下滑的初速度为 ,直线的倾斜角为 ,竖直方向位移为 ,水平方向位移为 ,长度为 ,则 ,重力加速度为 ,对于物体下滑的加速度,有:

对(1)积分得:

最终解得:

即物体在该线段下落所花费的时间。将解得的 回代入(2)式得该线段物体的末速度,也即是下一线段的初速度 。通过累加 得到物体通过第 条曲线的时间

2.2.2. 物体有粘滞阻力下滑的计算

在物体下滑的过程中考虑粘滞阻力得影响,则 为粘滞系数。

其余条件如1.2.1所设。则对物体下滑的加速度有以下微分方程:

解微分方程(5)得:

的表达式由MathematicaTM解得:

其中 为朗伯W函数,该函数不能用初等函数表示。

由于 的表达式过于复杂,在编程中不易实现,所以在实际编程中采用微元法进行计算。具体方法是将该直线段分成 小段,每一小段中将 看成不变,恒为 ,从而令(5)式中的 为一常数,而在这一小段中,物体做匀变速直线运动,于是仿照物体无阻力下滑的计算,得出该小段中物体下滑所花费的时间

然后我们将直线上每一小段的时间加起来,得到物体通过该直线段 的时间;进而累加得到物体通过第 条曲线的时间

2.2.3. 物体有摩擦阻力下滑的计算

设摩擦力 为摩擦系数。则与上述计算相类似地,我们可以得到物体沿直线有摩擦阻力下滑时的微分方程:

对(10)积分得:

我们最终可以算出物体通过该直线段所花的时间为:

然而,考虑物体沿有摩擦阻力曲线下滑的过程并不是能单纯地等同于通过若干段直线段的过程。还需额外考虑法向向心力在重力的基础上增大摩擦力的影响。

已知 三点的坐标,可以求出过该三点的圆的圆心 和半径 [ 7 ] ,进而计算法向向心力的影响。

则物体在该段的瞬时向心加速度为 ,利用这个可以对(10)进行修改,得:

同1.2.2的处理相类似,采用微元法,则物体通过一段微小直线的时间 为:

进行累加得:

2.3. 选择

与自然选择类似,适应生存环境的个体能获得更多繁殖下一代的机会。遗传算法中对下一代的父辈的选取原则是,个体的适应度值越高,被选择的几率就越大,常用的有“适应度比例法”,即个体被选中的概率与其适应度函数值成正比。若某个体 ,其适应度为 ,则其被选中的概率表示为:

2.4. 交叉

在遗传算法中,将父代的染色体交叉组合产生子代的染色体,从而可能使得双方的优势互补产生更优良的下一代。典型的交叉操作有:单点交叉,均匀交叉:

单点交叉:在染色体上随机找出一个点,该点前的遗传信息为父个体A的,该点后的遗传信息为父个体B的,组合产生子个体。

父个体A:

父个体B:

↓交叉

子个体:

均匀交叉:两个父个体染色体上的各点传递到下一代的几率都是一致的,子个体染色体上的各点,均匀且随机地来自两个父个体。

父个体A:

父个体B:

↓交叉

子个体:

2.5. 变异

遗传算法有与自然界的生物相类似的基因变异的操作,那就是在生成子代的时候,染色体上的某个位点有一定几率会发生一点随机的变动,从而产生上一代没有的新的遗传信息,而新的遗传信息可能会带来更好的适应度。

变异前的子个体:

↓变异

变异后的子个体:

2.6. 种群进化

以上就是本程序运用遗传算法解决最速降线问题的各种操作。在程序的开始,先随机生成一个种群,该种群拥有一批各种各样的染色体,但各个染色体表现出来的适应度并不一样,适应度高的个体将有更大的几率保留下来并在此基础上产生下一代,而适应度低的个体更有可能被淘汰掉而无法再进入下一轮进化。在种群繁衍下一代的过程中,父代通过染色体交叉的方式将遗传信息传递给子代,子代生成的过程中又有一定几率发生基因的突变。生成的子代将再次进入由适应度函数的筛选而繁衍出新一代子代。如此反复循环的种群进化,最终种群中的最优个体将逐渐收敛到问题的最优解上去。这就是我们要求的问题答案。

3. 结果与讨论 3.1. 计算无阻力无初速度的最速降线

利用上述方法,当水平位移和垂直位移之比为 时,用遗传算法对无阻力无初速度的最速降线问题进行求解,并与变分法的解析解和文献 [ 5 ] 的数据进行对比,结果如图1。

而当水平位移和垂直位移之比分别为 时,分别用遗传算法和变分法两种方法算出的计算无阻力无初速度的最速降线如图2所示。

由图2可知,使用贝塞尔曲线进行编码,用遗传算法进行优化的结果与变分法的解析解(理论计算结果)几乎重合,略优于用粒子群算法计算得出的结果。说明了遗传算法的可行性和准确性。因此,可以进一步推广计算考虑阻力的情况。

3.2. 考虑粘滞阻力的最速降线 3.2.1. 计算结果与文献对比

用上述遗传算法程序计算了当水平位移和垂直位移之比为 时,粘滞系数m分别为0,0.5,1.0,

图1. 用遗传算法,变分法,粒子群算法得出的最速降线的解

图2. 用遗传算法和变分法得出在不同的水平位移和垂直位移之比时的最速降线的解

1.5时的最速降线问题,并与文献[ 1 ] 和文献[ 2 ] 的结果分别进行了比较,结果如图3。

而当粘滞系数m分别为0,−0.5,−1.0时,计算结果如图4所示。

由以上的结果可以看出,我们用遗传算法计算考虑粘滞阻力情况下,最速降线的结果与文献[ 1 ] 用变分法得出的结果几乎重合,甚至在粘滞系数为负(此时表现为动力)时,也与变分法的结果没有差别。说明了我们计算结果的准确性。然而,将计算结果和文献[ 2 ] 比较时,发现了值得注意的偏差。

图3. 用遗传算法和变分法得出在不同的正粘滞系数时的最速降线的解

图4. 用遗传算法和变分法得出在不同负粘滞系数时的最速降线的解

图5为给出了当水平位移和垂直位移之比为 时,初速度 时,粘滞系数m分别为0,0.2,1.0,2.0时,文献[ 2 ] 变分法和本文遗传算法计算的最速降线,图6给出了文献[ 2 ] 与本文相应结果的比较。

由图5可知,随着粘滞系数的增大,文献[ 2 ] 计算的最速降线在粘滞系数较小时先变得比没有阻力时更凹,当粘滞系数增大到一定时,再重新变直。然而,本文遗传算法计算的最速降线却并没有出现先变凹再变直的过程。其中,在 (没有阻力)时和 (粘滞阻力较大)时,我们计算的结果和文献[ 2 ]

图5. 用遗传算法和文献[ 2 ] 中的变分法得出在不同的粘滞系数时的最速降线的解

图6. 用遗传算法和文献[ 2 ] 中的变分法得出在不同的粘滞系数时的最速降线的解

的结果几乎重合; 时,我们计算的结果和文献[ 2 ] 的结果有微小的误差;而当 时,我们计算的结果和文献[ 2 ] 的结果出现了较大的偏差。下面我们将对这个偏差作进一步的分析讨论。

3.2.2. 本文计算结果和文献[<xref ref-type="bibr" rid="hanspub.16592-ref2">2</xref>] 在m = 0.2时不一致的问题

为了检验两个计算结果哪个更符合最速降线的定义,我们编写了一个程序。输入一条曲线,并设定初始条件为:下滑初速度 ,粘滞系数 (根据文献[ 2 ] ),就可以计算出物体沿这条曲线下滑全程所用的时间。

为了检验该程序的计算结果是否正确,我们输入一条直线,得到单位质量的物体下滑所花时间为2.02562秒,而理论计算结果是2.02563秒,两者间的误差小于0.005%,所以,可以认为这个检验程序的计算结果是正确的。下面我们就用这个程序,分别对文献[ 2 ] 中的计算结果和用遗传算法得到的计算结果进行比较分析。

图7给出了当 时,文献[ 2 ] 和本文遗传算法得到的最速降线(实线表示),以及利用贝塞尔曲线产生的与之邻近的两条参考降线(虚线表示,即略凹的线与略直的线)。

用上述程序计算沿图7两种情形计算得到的最速降线,以及相应邻近降线下滑的时间列于表1中。

通过比较我们可以看出,当 时,物体沿文献[ 2 ] 中的最速降线下滑所用的时间比沿遗传算法得到的最速降线下滑时间长。另一方面,物体沿文献[ 2 ] 中最速降线附近略直线下滑的时间比其最速降线下滑的时间还要短,这显然意味着文献[ 2 ] 计算的“最速降线”存在着疑问。而沿遗传算法计算出来的最速降线下滑,所需的时间既比略凹的线短,也比略平的线短。所以,当 时,我们遗传算法计算出来

图7. 文献[ 2 ] 和遗传算法计算的最速降线(实线)与邻近降线(虚线)

Comparison of the solutions of the brachistochrone problem by two methods and their neighbor
物体下滑曲线 文献[ 2 ] 结果/s 本文结果/s
略凹的线 1.89353 1.87986
“最速降线” 1.88602 1.87892
略直的线 1.88220 1.88237

表1. 沿图7给定的最速降线以及相应邻近降线下滑的时间

的降线更有可能取得泛函的极值,也就是这种情况下的最速降线。

根据以上的分析,我们可以认为文献[ 2 ] 中所述的“当粘滞阻力系数比较小时(例如, ),和无粘滞阻力时相比,最速降线的弯曲程度增大而变凹”这个结论不妥。遗传算法计算的结果显示,随着粘滞阻力系数的增大,最速降线的变化趋势应该是一直趋于变直的,而没有先变凹的过程,这一结论是与文献[ 1 ] 是一致的。

3.3. 计算考虑摩擦阻力的最速降线

关于考虑摩擦阻力的最速降线,文献[ 3 ] 和文献[ 6 ] 分别用变分法以及计算机进化算法求解,而文献[ 4 ] 的研究未考虑向心力的影响,在此不作讨论。将我们的计算结果与文献[ 3 ] 和文献[ 6 ] 的结果进行比较,发现均较为吻合。图8 比较了当水平位移和垂直位移之比为 时,摩擦系数 分别为0,0.2,0.4,0.6,0.63时,遗传算法与文献[ 3 ] 的变分法得到的最速降线。

图9比较了当水平位移和垂直位移之比为 时,摩擦系数 分别为0,0.05,0.1,0.15,0.17时,遗传算法与文献[ 3 ] 的变分法得到的最速降线。

图10比较了当水平位移和垂直位移之比为 时,摩擦系数 分别为0,0.1,0.2,0.3,0.4时,遗传算法与文献[ 6 ] 的变分法得到的最速降线。

通过以上三组计算结果的比较,我们发现遗传算法的计算结果无论是与文献[ 3 ] 用变分法推导得出的结果,还是与文献[ 6 ] 用计算机进化算法优化得出的结果相比,都几乎完全一致。与考虑粘滞阻力的情况类似,随着摩擦系数的增大,最速降线也趋于变直。

图8. 用遗传算法和文献[ 3 ] 中的变分法得出在不同的摩擦系数时的最速降线的解

图9. 用遗传算法和文献[ 3 ] 中的变分法得出在不同的摩擦系数时的最速降线的解

图10. 用遗传算法和文献 [ 6 ] 中的进化算法得出在不同的摩擦系数时的最速降线的解

4. 总结

我们通过用贝塞尔曲线的方式简化了曲线的编码,用遗传算法来对曲线进行优化,最终算法收敛得到无阻力无初速度、考虑粘滞阻力、考虑摩擦阻力三种不同情况下的最速降线。

其中,无阻力无初速度的最速降线的计算结果与解析解完全重合,并与粒子群算法得到的结果一致。在考虑粘滞阻力的情况下,本文的计算结果与文献[ 1 ] 的结果非常一致,但在与文献[ 2 ] 的比较中发现,在粘滞阻力较大时,与其结果非常接近,而在粘滞阻力较小时有较大出入。针对粘滞阻力较小时( )的情况进行了进一步分析,发现本文的计算结果更可靠,证实了随着粘滞阻力系数的增大,最速降线有一直逐渐变直的趋势。对于考虑摩擦阻力的情况,本文的计算结果与文献中用变分法[ 3 ] 或进化算法[ 6 ] 的结果均非常吻合。结果表明,随着摩擦阻力系数的增大,最速降线也有逐渐变直的趋势。

综上,我们使用遗传算法求解最速降线问题的方案是可行的,并且只需对算法的模型作少许改动,就可以考虑多种因素情况下的求解,相比用传统的变分法求解要方便快捷,是一种非常理想的,适合统一解决最速降线问题的手段。

文章引用

陈德锋,廖桂颖,王江涌. 基于遗传算法的最速降线问题求解 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

参考文献 (References) References Vratanar, B. and Saje, M. (1998) On the Analytical Solution of the Brachistochrone Problem in a Non-Conservative Field. International Journal of Non-Linear Mechanics, 33, 489-505.
http://dx.doi.org/10.1016/S0020-7462(97)00026-7
周嘉炜, 曹炳阳, 过增元. 具有黏滞阻力时的最速降线[J]. 力学与实践, 2011, 33(3): 11-14. Hayen, J.C. (2005) Brachistochrone with Coulomb Friction. International Journal of Non-Linear Mechanics, 40, 1057- 1075.
http://dx.doi.org/10.1016/j.ijnonlinmec.2005.02.004
尤明庆. 最速降线求解和摩擦力影响的研究[J]. 河南理工大学学报, 2005, 24(1): 83-88. 周先东, 马翠. 最速降线问题的一种新解法[C]//第一届中国智能计算大会论文集. 庐山: 中国运筹学会, 2007: 59-62. Wensrich, C.M. (2004) Evolutionary Solutions to the Brachistochrone Problem with Coulomb Friction. Mechanics Research Communications, 31,151-159.
http://dx.doi.org/10.1016/j.mechrescom.2003.09.005
陈爱军, 李金宗, 李东东. 一种改进的随机圆检测算法[J]. 光电工程, 2006, 33(12): 91-95.
Baidu
map