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

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

$$
\ ddot {\ theta} +(k / m)\ dot {\ theta} +(g / L)\ sin \ theta = u
$$

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




效果很好。但是,调整控制器非常耗时。大多数论文使用遗传算法来调整其控制器,例如PD,PID和Backstepping控制器。我对此一无所知,希望有人对此概念有所启发,如果有一个MATLAB示例至少可以控制一个简单的摆锤,那就更好了。

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



#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。

评论


$ \ begingroup $
您是否遇到过任何您认为值得阅读有关GA的好书?
$ \ endgroup $
– Croco
18年3月24日在6:25

#2 楼

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

使用遗传算法的一般思路将遵循一些基本控制流程,如下所示:

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/

评论


$ \ begingroup $
如果@CroCo是使用遗传算法的意思,那么Ziegler Nichols的调整方法将是实现该方法的理想选择,因为它具有很好的程序性。
$ \ endgroup $
– SteveO
16年2月15日在16:31

$ \ begingroup $
我看不到@CroCo的其他含义,但是Ziegler Nichols的问题是它仍然需要您调整其中一个组件,就像使用遗传算法一样,您可以更改系统的任何方面,并且将“演变”以匹配,而开发人员不必做任何残酷的工作
$ \ endgroup $
– Beeedy
16年2月15日在18:10

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

$ \ begingroup $
我在想一个病态的遗传算法,当过度调音时,它很快乐地捕捉字符串。
$ \ endgroup $
–拉姆罗德
16-2-16在5:31

$ \ begingroup $
如@octopus所述,用实际的物理设备很难做到这一点,除非您愿意长时间让计算机物理控制您要调谐的设备,即使您需要一些“监护人”该程序会根据性能监控每个控制器并为其评分,并验证它不会损坏机器。总而言之,这是一个相对复杂的任务,需要大量阅读遗传算法才能实现,这绝非易事。
$ \ endgroup $
– Beeedy
16-2-17在22:50

#3 楼

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

评论


$ \ begingroup $
我不熟悉遗传算法(GA)。我刚刚看到一些论文声称其控制器的调整部分是通过使用GA完成的。他们的论文中没有关于此问题的更多细节。我不知道什么是通用航空以及如何利用它。
$ \ endgroup $
– Croco
16年2月17日在0:07

$ \ begingroup $
使用进化方法进行参数调整是一种非常常见的技术。我认为这是您描述的分析方法的替代方法。
$ \ endgroup $
–雅各布
16年2月19日在8:40