![9ed142e236142548c6e60197cedd7116.png](https://img-blog.csdnimg.cn/img_convert/9ed142e236142548c6e60197cedd7116.png)
Gym作为强化学习最常使用的库,在gym内集成了大量的demo,其中最常见的模型就是一阶倒立摆模型。在做算法研究的过程中,无论是强化学习算法,还是经典的控制算法,我们常常需要对比算法的效果。但是往往由于被控对象的动力学模型比较复杂,这就迫使我们在代码中不得不花费更多的时间去构建被控对象的动力学模型。Gym给我们提供了一个非常好的平台,里边集成了常见的动力学模型,例如一阶倒立摆,二阶倒立摆这些都是非常benchmark的模型。有了gym的帮助,我们就可以将研究的重心转到算法研究上,而不是重复的去造轮子。值得一提的是在代码开源这一点上CS和机器学习社区是非常值得其它学科去学习的(尤其是不爱开源代码的控制理论和运筹优化社区)。
本文两大块内容:一是实现一阶倒立摆的PID控制。虽说深度强化学习很火,但是个人感觉经典的控制方法依然是有一席之地的。二是用遗传算法优化得到最佳的PID参数。众所周知调PID参数一直是一个玄学,当然也有很多整定PID参数的方法。既然我是研究优化理论的,那肯定就是用优化方法来搜索到一个好的PID参数了。
1 一阶倒立摆机理动力学模型
如下图所示,一个可以活动的小车上立着一根不稳定随时会倒下的杆。小车的轮子由电机控制,可以控制小车受到的力的大小和方向。我们可以获取小车的位置和速度,杆相对于垂直位置的倾角和杆的速度。目标就是保持杆不倒下来,同时小车静止在中间的位置。
![66044ffc39fd2f584cf7d20619b3ad50.png](https://img-blog.csdnimg.cn/img_convert/66044ffc39fd2f584cf7d20619b3ad50.png)
若