使用遗传算法调整控制器


9

我已经阅读了一些有关控制非线性系统(例如非线性摆)的论文。有几种针对非线性系统的方法。最常见的是反馈线性化,后滑模控制器。

就我而言,我已经完成了控制简单摆的非线性模型以及C ++中其他操纵器问题的理论和实践部分。对于摆锤,我使用了后推控制器来解决角位移和速度的跟踪任务。结果是

θ¨+(k/m)θ˙+(g/L)sinθ=u

其中g = 9.81m=0.5,k=0.0001,L=.2g=9.81

图1

图2

效果不错。但是,调整控制器非常耗时。大多数论文使用遗传算法来调整其控制器,例如PD,PID和反推控制器。我在这一领域一无所知,希望有人对此概念有所了解,如果有一个MATLAB示例至少可以控制一个简单的摆锤,那是更好的选择。

到目前为止,我已经在C ++ / Qt中设计了一个简单的GUI,以便手动调整控制器。在下图中,控制器对步进功能的响应。

控制器调整应用程序的GUI屏幕截图

Answers:


1

使用进化方法(GA是其中的一种)进行参数调整的确是控制领域中的常用方法[1]。特别是对于非线性系统,可能很难找到最佳参数的解析解。进化方法是有效执行对接近最佳参数的搜索的一种方法。

广泛使用的一种非常成功且通用的方法是CMA-ES。有很多实现,包括用于MATLAB的实现。我知道各种形式的磁极平衡通常被用作基准。

应用该算法通常并不难。评估结果的效果-在EA中称为适应度函数-通常是最复杂的部分。

[1] PJ Fleming,RC Purshouse,《控制系统工程中的进化算法:调查》,《控制工程实践》,第10卷,第11期,2002年11月,第1223-1241页,ISSN 0967-0661,http://dx.doi。 org / 10.1016 / S0967-0661(02)00081-3


您是否遇到过任何您认为值得阅读有关GA的好书?
CroCo

8

遗传算法是一种机器学习技术,它消除了用户“微调”系统的需要,而是允许计算机确定如何调整系统。这种方法的好处在于,它可以节省研究人员/用户的时间,并且通常可以使系统的调试效果好于研究人员/用户自己的能力。

使用遗传算法的一般思路将遵循以下基本控制流程:

Create_X_Number_Of_Random_Controllers()
while (Not_Yet_Satisfied_With_tuning)
    Score_Each_Controller_Based_On_Performance()
    Remove_Lowest_Performing_Controllers()
    Create_New_Controllers_By_Mixing_Best_Performers()
    Add_Slight_Randomness_For_Evolution()
Display_Top_Performer()

在实践中,我可以很容易地证明这一原则的最好例子就是这种“游戏”,它利用遗传进化来设计能够在整个路线上行驶的车辆。相同的想法适用于您想要微调而无需实际进行任何调整的任何系统。示例:http//rednuht.org/genetic_cars_2/


如果那是@CroCo使用遗传算法的意思,那么Ziegler Nichols的调整方法将是实现该方法的理想选择,因为它具有很好的程序性。
SteveO '02

我看不到@CroCo的其他含义,但是Ziegler Nichols的问题是它仍然需要您调整组件之一,就像使用遗传算法一样,您可以更改系统的任何方面,并且它会“进化”匹配,而无需开发人员进行任何残酷的工作
蜜蜂2016年

1
这个答案仍然是实现这一目标的一般过程。遗传算法是整个研究领域,并且涉及的范围很广,但是要在简短的回应中进行真正的解释,我建议您仔细阅读它们,如果您有兴趣使用它们来调整模型!
蜜蜂2016年

2
我正在描绘一个病态的遗传算法,该算法在过度调音时会非常愉快地捕捉字符串。
拉姆罗德'16

1
如@octopus所述,使用实际的物理设备很难做到这一点,除非您愿意长时间让计算机物理控制您要调整的设备,即使您需要一些“监护”程序来监视并根据性能对每个控制器评分,并验证它不会损坏机器。总而言之,这是一个相对复杂的任务,需要大量阅读遗传算法才能实现,这绝非易事。
蜜蜂2016年

2

我对您所说的遗传算法感到困惑。PD,PID 控制器不是启发式方法也不是随机方法,它们也不基于进化算法。相反,它们是确定性算法,旨在允许放置系统响应的零点和零点以提供所需的性能(最小化错误,响应速度,建立时间,稳定性和干扰抑制)。我认为,Kuo的《自动控制系统》一书是一个很好的学习参考。您可以在Raven的《自动控制工程》一书中找到不太严格的处理方法。


我不熟悉遗传算法(GA)。我刚刚看到一些论文声称其控制器的调整部分是通过使用GA完成的。他们的论文中没有关于此问题的更多细节。我不知道什么是通用航空以及如何利用它。
CroCo '16

使用进化方法进行参数调整是一种非常常见的技术。我认为这是您所描述的分析方法的替代方法。
雅各布
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.