发明名称 一种有效的基于两点步长梯度法的工业过程动态优化系统及方法
摘要 一种有效的基于两点步长梯度法的工业过程动态优化系统,包括与工业过程对象连接的现场智能仪表、DCS系统和上位机,上位机包括:初始化模块,用于初始参数的设置,决策变量z(t)的离散化和初始赋值;约束转换模块,用于通过中间变量处理优化过程中的控制变量边界约束;ODE求解模块,用于求解工业过程动态优化问题的常微分方程组;迭代寻优模块,用于根据两点步长梯度法搜寻使目标函数J最优的决策向量z*,迭代控制模块,用于控制迭代寻优模块的功能状态,并保存迭代优化的结果,根据收敛条件停止迭代优化。以及提供一种基于两点步长梯度法的工业过程动态优化方法。本发明能够准确找到全局最优解且求解高效、适用性广。
申请公布号 CN101763082A 申请公布日期 2010.06.30
申请号 CN200910155661.0 申请日期 2009.12.29
申请人 浙江大学 发明人 刘兴高;陈珑
分类号 G05B19/418(2006.01)I 主分类号 G05B19/418(2006.01)I
代理机构 杭州天正专利事务所有限公司 33201 代理人 王兵;王利强
主权项 1.一种有效的基于两点步长梯度法的工业过程动态优化系统,包括与工业过程对象连接的现场智能仪表、DCS系统和上位机,所述的DCS系统包括数据库和控制站,所述现场智能仪表与DCS系统连接,所述DCS系统与上位机连接,其特征在于:所述的上位机包括:初始化模块,用于初始参数的设置,决策变量z(t)的离散化和初始赋值,具体步骤如下:(3.1)将时间域[t<sub>0</sub>,tf]平均分成n小段:[t<sub>0</sub>,t<sub>1</sub>],[t<sub>1</sub>,t<sub>2</sub>],…,[t<sub>n-1</sub>,t<sub>n</sub>],其中t<sub>n</sub>=tf;每个时间段的长度为h=(tf-t<sub>0</sub>)/n;(3.2)对决策变量z(t)在(3.1)所述时间分段上进行离散化,将z(t)替换为由n个分段常值组成的决策向量z,并选取任意常数向量作为决策向量的初始值z<sup>0</sup>;(3.3)设置判断迭代优化是否终止的收敛精度值ζ,当优化目标值迭代误差小于ζ时,停止迭代;取迭代次数k初值为0;(3.4)设置迭代搜索的初始步长α0;约束转换模块,用于通过中间变量处理优化过程中的控制变量边界约束,采用以下转换方程:u(t)=0.5(u<sub>max</sub>-u<sub>min</sub>)×{cos[z(t)]+1}+u<sub>min</sub>    (1)将带有边界约束u<sub>min</sub>≤u(t)≤u<sub>max</sub>的控制变量u(t)替换为不受边界约束的中间变量z(t)的三角函数表达式,其中,下标min、max分别表示最小值和最大值,u<sub>min</sub>、u<sub>max</sub>分别对应控制变量的下界和上界;并将z(t)作为动态优化问题的决策变量进行求解;ODE求解模块,用于求解工业过程动态优化问题的常微分方程组,采取以下步骤来完成:(4.1)数值求解状态方程组:<maths num="0001"><![CDATA[<math><mrow><mfrac><mrow><mi>dx</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow><mi>dt</mi></mfrac><mo>=</mo><mi>f</mi><mo>[</mo><mi>x</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>,</mo><mi>z</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>,</mo><mi>t</mi><mo>]</mo><mo>,</mo></mrow></math>]]></maths>x<sub>i</sub>(t<sub>0</sub>)=x<sub>i0</sub>,其中i=1,2,...,m    (2)其中,f表示微分函数向量,x(t)为m个状态变量组成的向量,x<sub>i</sub>(t)表示第i个状态变量,x<sub>i0</sub>为状态变量x<sub>i</sub>在初始时刻t<sub>0</sub>的值,采用龙格库塔法由状态变量初始值x<sub>i0</sub>通过正向积分求出状态变量在每个离散时刻的值x<sub>i</sub>(tj),i=1,2,...,m,j=1,2,...,n;(4.2)数值求解协态方程组:<maths num="0002"><![CDATA[<math><mrow><mfrac><mrow><msub><mi>d&lambda;</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow><mi>dt</mi></mfrac><mo>=</mo><mo>-</mo><mfrac><mrow><mo>&PartialD;</mo><mi>&psi;</mi><mo>[</mo><mi>x</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>,</mo><mi>z</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>,</mo><mi>t</mi><mo>]</mo></mrow><msub><mrow><mo>&PartialD;</mo><mi>x</mi></mrow><mi>i</mi></msub></mfrac><mo>-</mo><msub><mi>&lambda;</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>&CenterDot;</mo><mfrac><mrow><mo>&PartialD;</mo><mi>f</mi><mo>[</mo><mi>x</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>,</mo><mi>z</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>,</mo><mi>t</mi><mo>]</mo></mrow><msub><mrow><mo>&PartialD;</mo><mi>x</mi></mrow><mi>i</mi></msub></mfrac><mo>,</mo></mrow></math>]]></maths><img file="F2009101556610C00013.GIF" wi="443" he="140" />i=1,2,...,m    (3)其中,<img file="F2009101556610C00021.GIF" wi="55" he="40" />ψ分别是给定的目标函数<img file="F2009101556610C00022.GIF" wi="712" he="115" />的非积分项和定积分项;λ<sub>i</sub>(t)为第i个协态变量,λ(t)为m个协态变量组成的向量,λ<sub>i</sub>(tf)为协态变量λ<sub>i</sub>在终端时刻tf的值,采用龙格库塔法由协态变量终端值λ<sub>i</sub>(tf)通过反向积分求出协态变量在每个离散时刻的值λ<sub>i</sub>(tj),i=1,2,...,m;j=n-1,n-2,...,1,0;(4.3)由所得的状态向量和决策向量计算出目标函数值:<img file="F2009101556610C00023.GIF" wi="800" he="61" />迭代寻优模块,用于调用ODE求解模块,保存所得的状态向量、协态向量及目标函数值,所述目标函数值为当前目标值J<sup>k</sup>;根据两点步长梯度法搜寻使目标函数J最优的决策向量z<sup>*</sup>,采取以下步骤来完成,上标k均表示迭代次数,初始赋值为零:(5.1)计算当前梯度g<sup>k</sup>,上标T表示向量或矩阵的转置:<maths num="0003"><![CDATA[<math><mrow><msup><mi>g</mi><mi>k</mi></msup><mo>=</mo><mo>{</mo><mfrac><mrow><mo>&PartialD;</mo><mi>&psi;</mi><mo>[</mo><mi>x</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>,</mo><mi>z</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>,</mo><mi>t</mi><mo>]</mo></mrow><mrow><mo>&PartialD;</mo><mi>z</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow></mfrac><mo>+</mo><mi>&lambda;</mi><msup><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mi>T</mi></msup><mo>&CenterDot;</mo><mfrac><mrow><mo>&PartialD;</mo><mi>f</mi><mo>[</mo><mi>x</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>,</mo><mi>z</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>,</mo><mi>t</mi><mo>]</mo></mrow><mrow><mo>&PartialD;</mo><mi>z</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow></mfrac><mo>}</mo><msub><mo>|</mo><mrow><mi>z</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><msup><mi>z</mi><mi>k</mi></msup><mo>,</mo><mi>t</mi><mo>=</mo><msub><mi>t</mi><mi>j</mi></msub></mrow></msub><mo>,</mo><mi>j</mi><mo>=</mo><mn>0,1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>n</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths>(5.2)保存当前迭代点z<sup>k</sup>及梯度信息g<sup>k</sup>;(5.3)若k=0,则搜索步长α<sup>k</sup>取为初始值,即α<sup>k</sup>=α0,转步骤(5.5);否则,依据两点步长梯度法,利用迭代当前点和前一点的信息来确定步长因子lk:<maths num="0004"><![CDATA[<math><mrow><msup><mi>l</mi><mi>k</mi></msup><mo>=</mo><mfrac><mrow><msup><mrow><mo>(</mo><msup><mi>s</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msup><mo>)</mo></mrow><mi>T</mi></msup><mo>&CenterDot;</mo><msup><mi>y</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msup></mrow><msup><mrow><mo>|</mo><mo>|</mo><msup><mi>y</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msup><mo>|</mo><mo>|</mo></mrow><mn>2</mn></msup></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,s<sup>k-1</sup>表示当前迭代点与前一迭代点的误差,计算式为:s<sup>k-1</sup>=z<sup>k</sup>-z<sup>k-1</sup>    (7)y<sup>k-1</sup>表示当前迭代点与前一迭代点的梯度误差,计算式为:y<sup>k-1</sup>=g<sup>k</sup>-g<sup>k-1</sup>    (8)(5.4)取最佳步长<maths num="0005"><![CDATA[<math><mrow><msup><mi>&alpha;</mi><mi>k</mi></msup><mo>=</mo><mi>min</mi><mrow><mo>(</mo><mfrac><mi>&pi;</mi><mrow><mi>D</mi><mo>&CenterDot;</mo><mi>max</mi><mrow><mo>(</mo><msup><mi>g</mi><mi>k</mi></msup><mo>)</mo></mrow></mrow></mfrac><mo>,</mo><msup><mi>l</mi><mi>k</mi></msup><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,D取区间[5,8]内的整数值;(5.5)计算下一个迭代点:z<sup>k+1</sup>=z<sup>k</sup>-α<sup>k</sup>·g<sup>k</sup>    (10)把新的迭代点z<sup>k+1</sup>传给ODE求解模块以计算新的目标函数值J<sup>k+1</sup>,然后进入迭代控制模块;迭代控制模块,用于控制迭代寻优模块的功能状态,并保存迭代优化的结果;首先判断是否满足收敛条件:|J<sup>k</sup>-J<sup>k+1</sup>|≤ζ    (11)其中,J<sup>k</sup>和J<sup>k+1</sup>分别表示第k次和第k+1次迭代计算得到的目标函数值;若上式(11)成立,表明当前迭代得到的目标值与前一次迭代所得目标值的误差绝对值不超过设定的收敛精度ζ,则停止迭代优化计算,z<sup>k+1</sup>就是最优决策向量z<sup>*</sup>,J<sup>k+1</sup>就是最优目标值J<sup>*</sup>,将z<sup>*</sup>、J<sup>*</sup>以及相应迭代次数(k+1)保存到结果输出模块;若上式(11)不成立,则保存目标值J<sup>k+1</sup>,取k=k+1,然后返回迭代寻优模块进行新一轮的迭代求解。
地址 310027 浙江省杭州市西湖区浙大路38号