基于wxPython的Duffing混沌仿真和控制实验
2020-11-06赵海滨颜世玉
赵海滨 颜世玉
摘 要:对二维Duffing混沌系统进行数值仿真和镇定控制。通过SciPy库中的odeint进行微分方程求解,采用wxPython建立图形用户界面,并采用Matplotlib进行绘图。对Duffing混沌的参数进行设置,显示状态变量的二维相图和响应曲线。采用滑模控制器进行Duffing混沌镇定控制,显示状态变量、滑模面和滑模控制器响应曲线。
关键词:混沌系统;wxPython;仿真实验;Python语言
中图分类号:TP273 文献标志码:A 文章编号:2095-2945(2020)31-0016-02
Abstract: Numerical simulation and stabilization control of two-dimensional Duffing chaotic system are carried out. The differential equation is solved by odeint in SciPy library, the graphical user interface is established by wxPython, and the drawing is done by Matplotlib. The parameter of Duffing chaotic systemisset to display the two-dimensional phase diagram and response curve of state variables. Sliding mode controller is used to stabilize Duffing chaotic system, and the response curves of state variables, sliding surface and sliding mode controller are displayed.
Keywords: chaotic system; wxPython; simulation experiment; Python language
混沌系统广泛存在于自然界和人类社会,在很多领域都有着广泛的应用,例如图形加密、人工智能和保密通信等[1]。Duffing混沌是典型的二阶非线性系统,结构简单,采用单一的控制器就能够实现系统的镇定控制[2]。通过滑模面和指数趋近律设计滑模控制器[3],并采用滑模控制器进行Duffing混沌系统的镇定控制。
本文采用Python语言对Duffing混沌系统进行建模仿真,并设计滑模控制器进行系统的镇定控制。采用Python语言编程实现,通過SciPy库的odeint函数进行微分方程求解,通过wxPython建立图形用户界面,采用Matplotlib进行数据可视化[4]。设计的滑模控制器能够进行Duffing混沌系统的镇定控制,状态变量渐进收敛到零。
1 Duffing混沌的滑模控制
Duffing混沌是典型的二阶非线性系统,状态方程表示为
其中,x1和x2为系统的状态变量,t为时间,a、b和c为常数。当a=-1,b=0.25,c=0.3时,系统处于混沌状态。
设计滑模控制器进行Duffing混沌系统的镇定控制。带有控制输入的受控Duffing系统,表示为:
其中,u为设计的滑模控制器。滑模面设计为:
s=x2+k1x1 (3)
其中,k1为大于零的常数。
在滑模控制器设计中,采用的指数趋近律为:
(4)
其中,k2和k3为大于零的常数。
采用指数趋近律时,滑模控制器设计为:
(5)
其中,s为滑模面,sgn(·)为符号函数。为了削弱抖振,采用双曲正切函数tanh(·)代替符号函数。
2 采用wxPython建立GUI界面
wxPython是Python语言的GUI图形库,可以方便的创建GUI用户界面。wxPython是GUI库wxWidgets的Python封装,是一款优秀的开源软件,具有非常有限的跨平台能力。采用SciPy库中的odeint函数进行微分方程组的求解。odeint函数至少需要3个变量,分别是微分方程函数、初始值和时间变量。Matplotlib是Python语言的优秀绘图库,非常方便进行数据的可视化。采用Matplotlib进行图形的绘制。
根据Duffing混沌系统的状态方程,进行仿真,并显示状态变量的二维相图和响应曲线。采用设计的滑模控制器进行Duffing混沌的镇定控制,状态变量渐进收敛到零。在wxPython库中选择wx.Notebook进行设计,可以通过单击选项卡的标题,在2个页面之间进行切换。采用wxPython设计的主界面,如图1所示。
3 仿真实验
在软件的主界面中,单击按钮“Duffing混沌参数”,会出现如图2所示的对话框,对Duffing混沌系统的参数和初始状态进行设置。
在图2中,对Duffing混沌系统的参数和初始状态进行设置后,单击按钮“确定”,进行混沌仿真。Duffing混沌仿真后,可以显示状态变量的二维相图和响应曲线,状态变量的二维相图,如图3所示。
图3 状态变量的二维相图
在软件的主界面中,选择选项卡“Duffing混沌镇定控制”,采用滑模控制器进行Duffing混沌系统的镇定控制。单击按钮“镇定控制参数”,会出现如图4所示的对话框,对控制器中的参数进行设置。
图4 控制参数设置对话框
在图4中,单击按钮“确认”,采用滑模控制器进行Duffing混沌的镇定控制。Duffing混沌的镇定控制,可以显示状态变量、滑模面和滑模控制器的响应曲线。Duffing混沌镇定控制时,状态变量的响应曲线,如图5所示,状态变量渐进收敛到零。
图5 控制器的响应曲线
4 结束语
本文采用wxPython设计了Duffing混沌仿真和控制实验系统,能够进行Duffing混沌系统的仿真和镇定控制。仿真实验系统可以对系统参数和控制参数进行设置,仿真结果采用Matplotlib进行图形的绘制,非常的形象和直观,对实验教学有一定的参考价值。
参考文献:
[1]孙克辉.混沌保密通信原理与技术[M].北京:清华大学出版社,2015.
[2]石建飞,张艳龙,王丽,等.Duffing系统的双参数分岔与全局特性分析[J].噪声与振动控制,2016,36(06):32-37.
[3]刘金琨.滑模变结构控制MATLAB仿真(第3版)[M].北京:清华大学出版社,2015.
[4]张健,张良均.Python编程基础[M].北京:人民邮电出版社,2018.