发明名称 一种基于动态优化的多模型广义预测控制系统及其控制方法
摘要 一种基于动态优化的多模型广义预测控制系统,其包括动态优化层、MPC层以及基础控制层;所述动态优化层位于上层,其计算出关键控制变量的优化值作为MPC层的最优设定值;所述MPC层位于下层在待优化变量满足模型动态行为的条件下采用滚动优化的预测算法对该待优化变量进行调节,使其跟踪S1中得出的最优设定值;所述基础控制层位于底层,将该待优化变量的最终优化值送至执行机构。本发明降低系统成本消耗,提高系统经济效益,并且可以提高系统暂态性能以及系统模型参数跳变的调节能力,同时还可以有效的消除扰动对系统输出的干扰。
申请公布号 CN103425048B 申请公布日期 2017.03.15
申请号 CN201310191901.9 申请日期 2013.05.22
申请人 上海交通大学 发明人 王昕;宋治强
分类号 G05B13/04(2006.01)I 主分类号 G05B13/04(2006.01)I
代理机构 上海汉声知识产权代理有限公司 31236 代理人 胡晶
主权项 一种基于动态优化的多模型广义预测控制系统的优化方法,其特征在于,包括以下步骤:S1:动态优化层针对系统的经济目标函数及其时变约束采用控制向量参数化与粒子群优化算法的结合的方法获取关键变量的最优值轨迹,并将该轨迹将作为下层MPC层的最优设定值参考轨迹;S2:MPC层采用滚动优化的预测算法对过程中待优化的变量满足模型参数变化和干扰影响动态行为的条件下进行调节,使其跟踪S1中得出的该MPC层的最优设定值参考轨迹,并且采用多个固定模型和自适应模型来并行辨识系统的动态特性;S3:基础层通过PID作用抑制、消除进入到过程中的扰动对输出的影响,并将该变量的最终优化值送到执行结构;所述关键变量的最优值轨迹的获取过程包括以下步骤:S11:首先将时间区间[t<sub>0</sub>,t<sub>f</sub>]分成相同的多段,每段用分段常数轨迹近似最优轨迹,得到多个待优化控制参数;S12:粒子群初始化:设置粒子数m、维数D、两个学习因子c<sub>1</sub>,c<sub>2</sub>,位置上下界x<sub>max</sub>,x<sub>min</sub>及最大迭代次数M,初始位置,初始速度,初始化全局最优解gBest以及局部最优解pBest;S13:计算各粒子适应度,更新局部最优值和全局最优值;S14:计算更新速度与更新位置,如果位置超过上下界则设定为边界值;S15:判断是否达到最大迭代次数,若没有则返回S13继续计算,若满足条件则输出当前最优值;在步骤S2中,被控对象为:A(z<sup>‑1</sup>)y(k)=B(z<sup>‑1</sup>)u(k‑1)+ξ(k)/Δ,多模型集表示为:Δy<sub>i</sub>(k)=φ<sub>i</sub>(k)<sup>T</sup>θ<sub>0</sub>(k)+ξ<sub>i</sub>(k)i=1,2…,m,m+1,m+2其中<img file="FDA0001162615840000011.GIF" wi="1116" he="88" />为实际优化目标对象模型的系统参数,φ(k)为泛指由实际优化目标对象输入输出值按φ(k)=[‑Δy(k‑1)…‑Δy(k‑n<sub>a</sub>)Δu(k‑1)+…Δu(k‑n<sub>b</sub>‑1)]形式组成的向量集合,φ<sub>i</sub>(k)为第i个模型的输入输出值按φ(k)=[‑Δy(k‑1)…‑Δy(k‑n<sub>a</sub>)Δu(k‑1)+…Δu(k‑n<sub>b</sub>‑1)]形式组成的向量集合,其中,Δy(k‑1)为k‑1时刻系统的输出值y(k‑1)与k‑2时刻系统输出值y(k‑2)的差值,Δu(k‑1)为k‑1时刻系统输入值u(k‑1)与k‑2时刻系统输入值u(k‑2)的差值;其中,ξ<sub>i</sub>(k)表示在k时刻系统的噪声;n<sub>a</sub>表示被控对象;A(z<sup>‑1</sup>)y(k)=B(z<sup>‑1</sup>)u(k‑1)+ξ(k)/Δ中的A(z<sup>‑1</sup>)的阶次,n<sub>b</sub>表示被控对象A(z<sup>‑1</sup>)y(k)=B(z<sup>‑1</sup>)u(k‑1)+ξ(k)/Δ的B(z<sup>‑1</sup>)的阶次;<img file="FDA0001162615840000021.GIF" wi="158" he="79" />表示根据递推最小二乘法进行系统动态特性辨识时在k‑1时刻的θ<sub>0</sub>估计值;当i=1,2,…,m时,θ<sub>i</sub>(k)为固定模型的恒定值,相对于单个模型,m个固定模型可以提高系统的暂态性能,其中,<maths num="0001"><math><![CDATA[<mrow><mi>A</mi><mrow><mo>(</mo><msup><mi>z</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>)</mo></mrow><mo>=</mo><mn>1</mn><mo>+</mo><msub><mi>a</mi><mn>1</mn></msub><msup><mi>z</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>+</mo><mn>......</mn><mo>+</mo><msub><mi>a</mi><msub><mi>n</mi><mi>a</mi></msub></msub><msup><mi>z</mi><mrow><mo>-</mo><msub><mi>n</mi><mi>a</mi></msub></mrow></msup></mrow>]]></math><img file="FDA0001162615840000022.GIF" wi="806" he="95" /></maths><maths num="0002"><math><![CDATA[<mrow><mi>B</mi><mrow><mo>(</mo><msup><mi>z</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>)</mo></mrow><mo>=</mo><msub><mi>b</mi><mn>0</mn></msub><mo>+</mo><msub><mi>b</mi><mn>1</mn></msub><msup><mi>z</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>+</mo><mn>......</mn><mo>+</mo><msub><mi>b</mi><msub><mi>n</mi><mi>b</mi></msub></msub><msup><mi>z</mi><mrow><mo>-</mo><msub><mi>n</mi><mi>b</mi></msub></mrow></msup></mrow>]]></math><img file="FDA0001162615840000023.GIF" wi="822" he="95" /></maths>式中z<sup>‑1</sup>为后移算子;y(k)、u(k)、ξ(k)分别为系统的输出,输入和均值为零的白噪声序列;Δ=1‑z<sup>‑1</sup>为差分算子;自适应模型采用如下递推最小二乘法进行系统动态特性的辨识:<img file="FDA0001162615840000024.GIF" wi="870" he="71" />K(k)=P(k‑1)φ(k)[φ(k)<sup>T</sup>P(k‑1)φ(k)+μ]<sup>‑1</sup><maths num="0003"><math><![CDATA[<mrow><mi>P</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mi>&mu;</mi></mfrac><mo>&lsqb;</mo><mn>1</mn><mo>-</mo><mi>K</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mi>&phi;</mi><msup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mi>T</mi></msup><mo>&rsqb;</mo><mi>P</mi><mrow><mo>(</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001162615840000025.GIF" wi="775" he="147" /></maths>式中0&lt;μ&lt;1为遗忘因子,K(k)为权因子,P(k)为正定协方差阵;多模型切换指标表示为:<maths num="0004"><math><![CDATA[<mrow><msub><mi>J</mi><mi>i</mi></msub><mo>=</mo><msubsup><mi>&gamma;e</mi><mi>i</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>+</mo><mi>&eta;</mi><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>L</mi></munderover><msup><mi>&rho;</mi><mi>j</mi></msup><msubsup><mi>e</mi><mi>i</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>-</mo><mi>j</mi><mo>)</mo></mrow><mo>,</mo><mi>i</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>...</mn><mo>,</mo><mi>m</mi><mo>+</mo><mn>2</mn></mrow>]]></math><img file="FDA0001162615840000026.GIF" wi="782" he="131" /></maths>上式为模型i在时刻k的性能指标,其中e<sub>i</sub>(k)为第i个模型在k时刻的输出误差,γ和η是当前和过去时刻的误差权重,ρ为误差遗忘因子,L为过去时刻误差长度,在k时刻,会根据性能指标J<sub>i</sub>最小切换到相应模型;所述PID的性能优化指标为:<maths num="0005"><math><![CDATA[<mrow><mi>min</mi><mi> </mi><mi>J</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mi>E</mi><mo>{</mo><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msup><mrow><mo>&lsqb;</mo><mi>y</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mi>j</mi><mo>|</mo><mi>k</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>w</mi><mi>r</mi></msub><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mi>j</mi><mo>)</mo></mrow><mo>&rsqb;</mo></mrow><mn>2</mn></msup><mo>+</mo><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>N</mi><mi>u</mi></msub></munderover><mi>&lambda;</mi><msup><mrow><mo>&lsqb;</mo><mi>&Delta;</mi><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mi>j</mi><mo>-</mo><mn>1</mn><mo>|</mo><mi>k</mi><mo>)</mo></mrow><mo>&rsqb;</mo></mrow><mn>2</mn></msup><mo>}</mo><mo>,</mo></mrow>]]></math><img file="FDA0001162615840000031.GIF" wi="1437" he="151" /></maths>式中E{·}为数学期望,w<sub>r</sub>为w<sub>r</sub>(k)的缩写且为输出期望值,N<sub>u</sub>为控制时域,λ为控制加权系数,k表示时刻,y(k+j/k)为根据k时刻的输入输出预测得到的k+j时刻的输出;u(k+j‑1/k)为根据k时刻的输入输出预测得到的k+j‑1时刻的输入;对象输出的期望值为w<sub>r</sub>(k+j)=w(k+j)j∈{1,2,…,N},式中w(k+j)为上层动态优化所给的关键变量设定值,N为优化时域终止时刻;对象输出的期望值为:w<sub>r</sub>(k+j)=w(k+j)j∈{1,2,…,N}式中w(k+j)为上层动态优化所给的关键变量设定值,即模型输出设定值,N为优化时域终止时刻;为了计算出第i步后输出预测值,首先引入丢番图方程: 1=E<sub>j</sub>(z<sup>‑1</sup>)A(z<sup>‑1</sup>)Δ+z<sup>‑j</sup>F<sub>j</sub>(z<sup>‑1</sup>) E<sub>j</sub>(z<sup>‑1</sup>)B(z<sup>‑1</sup>)=G<sub>j</sub>(z<sup>‑1</sup>)+z<sup>‑j</sup>H<sub>j</sub>(z<sup>‑1</sup>)式中: E<sub>j</sub>(z<sup>‑1</sup>)=e<sub>j,0</sub>+e<sub>j,1</sub>z<sup>‑1</sup>+…+e<sub>j,j‑1</sub>z<sup>‑(j‑1)</sup><maths num="0006"><math><![CDATA[<mrow><msub><mi>F</mi><mi>j</mi></msub><mrow><mo>(</mo><msup><mi>z</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>)</mo></mrow><mo>=</mo><msub><mi>f</mi><mrow><mi>j</mi><mo>,</mo><mn>0</mn></mrow></msub><mo>+</mo><msub><mi>f</mi><mrow><mi>j</mi><mo>,</mo><mn>1</mn></mrow></msub><msup><mi>z</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>+</mo><mn>...</mn><mo>+</mo><msub><mi>f</mi><mrow><mi>j</mi><mo>,</mo><msub><mi>n</mi><mi>a</mi></msub></mrow></msub><msup><mi>z</mi><mrow><mo>-</mo><msub><mi>n</mi><mi>a</mi></msub></mrow></msup></mrow>]]></math><img file="FDA0001162615840000032.GIF" wi="717" he="78" /></maths> G<sub>j</sub>(z<sup>‑1</sup>)=g<sub>j,0</sub>+g<sub>j,1</sub>z<sup>‑1</sup>+…+g<sub>j,j‑1</sub>z<sup>‑(j‑1)</sup><maths num="0007"><math><![CDATA[<mrow><msub><mi>H</mi><mi>j</mi></msub><mrow><mo>(</mo><msup><mi>z</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>)</mo></mrow><mo>=</mo><msub><mi>h</mi><mrow><mi>j</mi><mo>,</mo><mn>0</mn></mrow></msub><mo>+</mo><msub><mi>h</mi><mrow><mi>j</mi><mo>,</mo><mn>1</mn></mrow></msub><msup><mi>z</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>+</mo><mn>...</mn><mo>+</mo><msub><mi>h</mi><mrow><mi>j</mi><mo>,</mo><msub><mi>n</mi><mi>b</mi></msub><mo>-</mo><mn>1</mn></mrow></msub><msup><mi>z</mi><mrow><mo>-</mo><mrow><mo>(</mo><msub><mi>n</mi><mi>b</mi></msub><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></msup></mrow>]]></math><img file="FDA0001162615840000033.GIF" wi="765" he="78" /></maths><maths num="0008"><math><![CDATA[<mrow><mi>&Delta;</mi><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><msup><mi>Q</mi><mi>T</mi></msup><mrow><mo>(</mo><msub><mi>w</mi><mi>r</mi></msub><mo>-</mo><mi>F</mi><mo>(</mo><msup><mi>z</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>)</mo><mi>y</mi><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>-</mo><mi>H</mi><mo>(</mo><msup><mi>z</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>)</mo><mi>&Delta;</mi><mi>u</mi><mo>(</mo><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo><mo>)</mo></mrow><mrow><msup><mi>Q</mi><mi>T</mi></msup><mi>Q</mi><mo>+</mo><mi>&lambda;</mi><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msup><mi>&beta;</mi><mn>2</mn></msup><mo>+</mo><mn>...</mn><msup><mi>&beta;</mi><mrow><mn>2</mn><mrow><mo>(</mo><msub><mi>N</mi><mi>u</mi></msub><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></msup><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FDA0001162615840000034.GIF" wi="1022" he="151" /></maths>式中:<maths num="0009"><math><![CDATA[<mrow><mi>Q</mi><mo>=</mo><mfenced open = "|" close = "|"><mtable><mtr><mtd><msub><mi>g</mi><mrow><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub></mtd></mtr><mtr><mtd><mrow><msub><mi>g</mi><mrow><mn>2</mn><mo>,</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>&beta;g</mi><mrow><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub></mrow></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mrow><msub><mi>g</mi><mrow><mi>i</mi><mo>,</mo><msub><mi>N</mi><mi>u</mi></msub><mo>-</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>&beta;g</mi><mrow><mi>i</mi><mo>-</mo><mn>1</mn><mo>,</mo><msub><mi>N</mi><mi>u</mi></msub><mo>-</mo><mn>2</mn></mrow></msub><mo>+</mo><mn>...</mn><msup><mi>&beta;</mi><mrow><msub><mi>N</mi><mi>u</mi></msub><mo>-</mo><mn>1</mn></mrow></msup><msub><mi>g</mi><mrow><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub></mrow></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mrow><msub><mi>g</mi><mrow><mi>j</mi><mo>,</mo><mi>N</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>&beta;g</mi><mrow><mi>j</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>N</mi><mo>-</mo><mn>2</mn></mrow></msub><mo>+</mo><mn>...</mn><msup><mi>&beta;</mi><mrow><msub><mi>N</mi><mi>u</mi></msub><mo>-</mo><mn>1</mn></mrow></msup><msub><mi>g</mi><mrow><mi>j</mi><mo>-</mo><msub><mi>N</mi><mi>u</mi></msub><mo>+</mo><mn>1</mn><mo>,</mo><mi>N</mi><mo>-</mo><msub><mi>N</mi><mi>u</mi></msub></mrow></msub></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0001162615840000041.GIF" wi="800" he="462" /></maths>F(z<sup>‑1</sup>)=[F<sub>1</sub>(z<sup>‑1</sup>),…,F<sub>N</sub>(z<sup>‑1</sup>)]<sup>T</sup>H(z<sup>‑1</sup>)=[H<sub>1</sub>(z<sup>‑1</sup>),…H<sub>N</sub>(z<sup>‑1</sup>)]<sup>T</sup>其中,g<sub>j,i</sub>为多项式G<sub>j</sub>(z<sup>‑1</sup>)的各项系数,由此可得实际输出控制量为:u(k)=u(k‑1)+Δu(k|k);E<sub>j</sub>(z<sup>‑1</sup>)与F<sub>j</sub>(z<sup>‑1</sup>)是在分别满足E<sub>j</sub>(z<sup>‑1</sup>)=e<sub>j,0</sub>+e<sub>j,1</sub>z<sup>‑1</sup>+…+e<sub>j,j‑1</sub>z<sup>‑(j‑1)</sup>与<img file="FDA0001162615840000042.GIF" wi="717" he="71" />多项式形式的基础上,并在已知A(z<sup>‑1</sup>)的前提下根据1=E<sub>j</sub>(z<sup>‑1</sup>)A(z<sup>‑1</sup>)Δ+z<sup>‑j</sup>F<sub>j</sub>(z<sup>‑1</sup>)求解得到的多项式;其中n<sub>a</sub>表示被控对象A(z<sup>‑1</sup>)y(k)=B(z<sup>‑1</sup>)u(k‑1)+ξ(k)/Δ中的A(z<sup>‑1</sup>)的阶次;j为期望优化步长,j∈{1,2,…,N}且N为优化时域终止时刻;e<sub>j.0</sub>……e<sub>j.j‑1</sub>表示E<sub>j</sub>(z<sup>‑1</sup>)对应求出的系数值,<img file="FDA0001162615840000043.GIF" wi="238" he="70" />表示F<sub>j</sub>(z<sup>‑1</sup>)对应求出的系数值;然后,在求出E<sub>j</sub>(z<sup>‑1</sup>)与已知B(z<sup>‑1</sup>)的前提下,根据公式E<sub>j</sub>(z<sup>‑1</sup>)B(z<sup>‑1</sup>)=G<sub>j</sub>(z<sup>‑1</sup>)+z<sup>‑j</sup>H<sub>j</sub>(z<sup>‑1</sup>)求出G<sub>j</sub>(z<sup>‑1</sup>)=g<sub>j,0</sub>+g<sub>j,1</sub>z<sup>‑1</sup>+…+g<sub>j,j‑1</sub>z<sup>‑(j‑1)</sup>、<img file="FDA0001162615840000044.GIF" wi="761" he="71" />形式的多项式G<sub>j</sub>(z<sup>‑1</sup>)、H<sub>j</sub>(z<sup>‑1</sup>),其中g<sub>j.0</sub>……g<sub>j.j‑1</sub>、<img file="FDA0001162615840000045.GIF" wi="254" he="68" />分别表示G<sub>j</sub>(z<sup>‑1</sup>)、H<sub>j</sub>(z<sup>‑1</sup>)求出的对应系数;n<sub>b</sub>表示被控对象A(z<sup>‑1</sup>)y(k)=B(z<sup>‑1</sup>)u(k‑1)+ξ(k)/Δ的B(z<sup>‑1</sup>)的阶次;其中β为影响系数且β∈[0,1];当j分别取1、2、…、N得到F<sub>j</sub>(z<sup>‑1</sup>)后,根据公式F(z<sup>‑1</sup>)=[F<sub>1</sub>(z<sup>‑1</sup>),…,F<sub>N</sub>(z<sup>‑1</sup>)]<sup>T</sup>可获取F(z<sup>‑1</sup>);同理,当j分别取1、2、…、N得到H<sub>j</sub>(z<sup>‑1</sup>)后,可获取H(z<sup>‑1</sup>);在得出所有变量后可以得出k时刻控制器输出增量Δu(k|k),Δu(k|k)表示k时刻的输入值与k‑1时刻的输入值之差。
地址 200240 上海市闵行区东川路800号