一种基于Q学习的核电蒸汽发生器水位控制方法与流程
本发明属于核电控制与仿真技术领域,具体涉及一种基于q学习的核电蒸汽发生器水位控制方法。
背景技术:
蒸汽发生器是压水堆核电系统的重要组成部分,是核岛内三大设备之一。它将反应堆产生的热量传递给二次侧,产生的蒸汽经汽水分离器干燥后推动汽轮发电机发电。蒸汽发生器水位是核电系统运行的重要监视参数之一,直接影响核电系统的运行安全和蒸汽品质。
蒸汽发生器水位调节的目的,就是为了维持二次侧水位时刻满足安全运行需求,水位既不能过高,也不能过低,否则将给核电系统带来安全隐患,低负荷下蒸汽发生器水位失控导致的跳堆问题是造成安全事故的主要原因之一。因此,压水堆核电系统蒸汽发生器的水位控制尤为重要。非线性、时变性、“膨胀”和“收缩”等特性致使蒸汽发生器水位控制成为难题。传统pid控制器在水位控制过程中具有响应速度慢,变指令时震荡较大,难以抑制虚假水位等问题,难以在全功率范围内取得令人满意的性能品质。
近年来,出现了q学习、sarsa、dqn等多种强化学习方法,用于解决智能体与环境之间的交互问题,交互过程中通过学习策略使回报最大化来实现特定目标。“试错”则是强化学习的核心思想,通过试错得到学习经验,从而能更好与外界环境交互。由于该方法随着学习时间的增长,学习经验越来越丰富,其响应能力也越来越快,引起了众多学者和工程技术人员的研究兴趣。很多基于q学习的控制方法取得了很好的控制效果。然而,q学习方法在蒸汽发生器控制及相关领域的应用却很少。
技术实现要素:
针对现有技术存在的不足,本发明提供一种基于q学习的核电蒸汽发生器水位控制方法,使得蒸汽发生器控制系统随学习时间的增长,水位控制效果不断改善,并且能够根据蒸汽发生器状况的改变即时做出调整,在一定程度上抑制设备老化对水位控制造成的影响,提高蒸汽发生器系统运行的稳定性。
为了实现上述目的,本发明所述一种基于q学习的核电蒸汽发生器水位控制方法,根据水位误差、水位误差的导数,蒸汽流量,给水流量,蒸汽流量与给水流量的差值,通过q学习方法得到核电蒸汽发生器给水流量的动作值函数,结合ε-贪婪策略,从而计算出适宜的蒸汽发生器给水流量,并按照所述给水流量对蒸汽发生器水位进行控制。
所述一种基于q学习的核电蒸汽发生器水位控制方法,具体实现步骤如下:
步骤1:建立蒸汽发生器部件数学模型作为训练环境,创建二维表(q表)对动作值函数q(s,a)进行表示,其中,s为状态参数,a为给水流量;
步骤2:确定核电蒸汽发生器的当前时刻给水流量at;
步骤2.1:获取蒸汽发生器当前的状态,计算当前时刻状态参数st;
步骤2.2:将所述蒸汽发生器当前时刻状态参数st与给水流量a作为q表的输入,查找所有可选择的给水流量a的价值,即q值,利用ε-贪婪策略计算控制器输出,即当前时刻给水流量at;
步骤3:将所述当前时刻给水流量at分配至给水阀门,实现蒸汽发生器的给水流量控制;
步骤4:更新动作值函数q(s,a);
步骤4.1:获取蒸汽发生器下一时刻状态参数st+1,计算瞬时奖励值r;
步骤4.2:根据所述瞬时奖励值r对q表在s=st,a=at处的值,即q(st,at)进行更新;
步骤5:使用窗口平均方法计算控制获得的平均奖励值
进一步地,所述步骤1中q表大小为n×m,n为离散化后的状态总数,m为离散化的动作总数;q表使用状态参数s与给水流量a作为索引,输出状态s下执行a的q值。
进一步地,所述步骤2.1中核电蒸汽发生器状态包括:当前时刻的水位误差、当前时刻的水位误差的变化率、当前时刻的蒸汽流量、前一时刻的给水流量、当前时刻的蒸汽流量与当前时刻的给水流量差值,经过离散化后获得当前时刻状态参数st。
进一步地,所述步骤2.2中利用的ε-贪婪策略如下:
其中,randoma是选择随机给水流量控制指令,
进一步地,所述步骤4.1中的瞬时奖励值r定义如下:
其中,e表示蒸汽发生器的水位误差,
进一步地,所述步骤4.2中q表的单点q(st,at)更新规则如下:
其中,st是蒸汽发生器当前时刻状态参数,at是当前时刻给水流量,st+1是蒸汽发生器下一时刻状态参数,at+1是下一时刻给水流量,α是学习率,r是蒸汽发生器在st下执行at指令后,进入下一时刻状态st+1得到的瞬时奖励值,γ是回报衰减率。
进一步地,使用与q学习控制器串联的给水限制模块对给水流量行修正,降低q学习控制器可能产生的错误输出导致模型异常的频率。
本发明的有益技术效果:
本发明首次提出将q学习技术应用于核电蒸汽发生器水位控制,来解决传统pid控制器在水位控制过程中出现响应速度慢,变指令时震荡较大,以及难以抑制虚假水位等问题。该方法能够在运行过程中,自主学习被控对象的特性,对给水流量动作值函数行优化,从而实现传统控制方法难以实现的自学习和自寻优控制问题,使得蒸汽发生器的水位响应速度随学习时间的增加而不断提高,从而可以大幅提高水位控制效果。此外,解决了传统控制方法在控制过程中出现的较大震荡问题,消除了部件衰退对蒸汽发生器带来的影响,提高蒸汽发生器的运行稳定性。
附图说明
图1为本发明实施例提供的方法流程图;
图2为一种传统蒸汽发生器给水控制结构;
图3为本发明实施例提供的基于q学习的蒸汽发生器给水控制结构;
图4为本发明实施例提供的动作动作值函数表(q表)结构图;
图5为本发明实施例提供的稳态下两种控制方法水位控制比较结果;
图6为本发明实施例提供的变蒸汽负荷下两种控制方法水位控制比较结果。
具体实施方式
针对现有控制技术响应速度慢,对于复杂系统控制器调参困难,变指令时存在较大震荡,难以抑制虚假水位等缺点,本发明的解决思路是将q学习方法应用于核电蒸汽发生器水位控制,采用q学习方法来构建核电蒸汽发生器水位控制器,使得随着学习时间的增加,给水控制器水位控制效果不断改善,并且能够根据蒸汽发生器状况的改变及时做出调整,在一定程度上抑制设备老化对水位控制造成的影响,提高了蒸汽发生器装置的稳定性。
本发明提出了一种基于q学习的核电蒸汽发生器水位控制方法,包括:
给水限制模块,根据水位误差以及蒸汽发生器状态,对给水进行修正,降低q学习控制器可能产生的错误输出引发的问题。
q学习控制器,根据水位指令和反馈参数,通过q学习方法得到蒸汽发生器的冷端给水流量,并按给水流量对蒸汽发生器的水位进行控制。
为便于公众理解,下面结合附图来对本发明的技术方案进行详细说明:
图2和图3分别给出了核电蒸汽发生器给水控制系统的传统控制结构和本发明实施例提供的基于q学习的蒸汽发生器给水控制结构。如图2所示,传统控制系统主要由三冲量pid控制器及执行机构组成。如图3所示,本发明的给水控制系统由给水限制模块、q学习控制器及执行机构组成。在传统控制系统中,通过蒸汽流量的前馈校正来避免水位反向调节。相比之下,本发明控制系统中由给水限制模块与q学习控制器组成,其中,给水限制模块用于纠正q学习控制器可能产生的异常输出,保护被控对象,q学习控制器用于根据控制指令与反馈参数计算给水流量以直接修正核电蒸汽发生器水位。在传统蒸汽发生器水位控制系统中,通常采用比例积分微分(pid)或比例积分(pi)作为控制器结构。但由于控制器参数不可变,对于复杂工况的适应性较差,针对不同扰动的鲁棒性较差。为了提高水位调节的响应速度、加强控制器的适应性及鲁棒性,本发明设计了一种基于q学习的核电蒸汽发生器水位控制方法,其具体实现过程如下:
步骤1:建立蒸汽发生器部件数学模型作为训练环境,创建二维表(q表)对动作值函数q(s,a)进行表示,其中,s为状态参数,a为给水流量;
本实施例中所述蒸汽发生器部件数学模型在合理假设下,根据蒸发器内热工水力过程,采用集总参数法构建,包括了一次传热管和水室内工质、二次侧工质液相部分、二次侧工质蒸汽部分等蒸汽发生器的重要参数,能够反映一定热工特性且便于matlab环境中调用,进行控制系统设计。
所述蒸汽发生器部件数学模型的输入包括:给水流量、给水温度、流出的蒸汽流量、一次侧进口比焓、一次侧进口流量和一次侧进口温度;输出包括:蒸汽发生器水位、蒸汽腔室压力、一次侧出口比焓和一次侧出口温度。蒸汽发生器部件数学模型从输入得到输出的计算过程可以参见《蒸汽发生器非线性机理模型与动态特性分析》(发电设备,2018年7月第32卷第4期261-267)。其中,该文章中提到的变量名称与本实施例中所述的输入输出名称对应关系如下:二回路下降段入口质量流量——给水流量;热水段出口温度——给水温度;汽水分离器出口蒸汽的质量流量——流出的蒸汽流量;一次侧进口比焓——一次侧进口比焓;一回路工质入口质量流量——一次侧进口流量;一回路工质入口温度——一次侧进口温度;sg水位——蒸汽发生器水位;sg蒸汽腔室压力——蒸汽腔室压力;一回路工质出口比焓——一次侧出口比焓;一回路工质出口温度——一次侧出口温度。
所述步骤1中q表大小为27255×11,27255为离散化后的状态总数,11为离散化的动作总数;q表使用状态参数s与给水流量a作为索引,输出状态s下执行a的q值。
步骤2:确定核电蒸汽发生器的当前时刻给水流量at;
步骤2.1:获取蒸汽发生器当前的状态,计算当前时刻状态参数st;
控制器输入选择当前时刻的水位误差、当前时刻的水位误差的变化率、当前时刻的蒸汽流量、前一时刻的给水流量、当前时刻的蒸汽流量与当前时刻的给水流量差值,经过离散化后获得当前时刻状态参数st。
如图4所示,由于q学习方法通过q表对动作值函数进行表示,因此需要将各个状态与动作进行离散化处理,划分规则如下:
水位误差(标幺处理后):(-∞,0.625]、(0.625,0.875]、(0.625,0.875]、(0.875,1.000]、(1.000,1.125]、(1.125,1.375]、(1.375,1.625]、(1.625,1.750]、(1.750,1.875]、(1.875,2.375]、(2.375,∞],共划分为以上11个状态。
水位误差微分(标幺处理后):(-∞,1.525]、(1.525,1.550]、(1.550,1.575]、(1.575,1.600]、(1.600,∞],共划分为以上5个状态。
蒸汽流量与给水流量差值(标幺处理后):(-∞,-1.50]、(-1.50,-0.50]、(-0.50,-0.25]、(-0.25,-0.05]、(-0.05,0.05]、(0.05,0.25]、(0.25,0.50]、(0.50,1.50]、(1.50,∞],共划分为以上9个状态。
蒸汽流量(标幺处理后):(-∞,0.625]、(0.625,0.875]、(0.625,0.875]、(0.875,1.000]、(1.000,1.125]、(1.125,1.375]、(1.375,1.625]、(1.625,1.750]、(1.750,1.875]、(1.875,2.375]、(2.375,∞],共划分为以上11个状态。
当前给水流量(标幺处理后):(-∞,1.525]、(1.525,1.550]、(1.550,1.575]、(1.575,1.600]、(1.600,∞],共划分为以上5个状态。
给水流量(标幺处理后)离散化为0、0.2、0.4、0.43、0.46、0.5、0.53、0.56、0.6、0.8、1,共11个动作。
综上,构造27255×11的二维表对动作值函数进行表示。
步骤2.2:将所述蒸汽发生器当前时刻状态参数st与给水流量a作为q表的输入,查找所有可选择的给水流量a的价值,即q值,利用ε-贪婪策略计算控制器输出,即当前时刻给水流量at;
所述步骤2.2中利用的ε-贪婪策略如下:
其中,randoma是选择随机给水流量控制指令,
步骤3:将所述当前时刻给水流量at分配至给水阀门,实现蒸汽发生器的给水流量控制。
步骤4:更新动作值函数q(s,a);
步骤4.1:获取蒸汽发生器下一时刻状态参数st+1,计算瞬时奖励值r;
所述步骤4.1中的瞬时奖励值r定义如下:
其中,e表示蒸汽发生器的水位误差,
步骤4.2:根据所述瞬时奖励值r对q表在s=st,a=at处的值,即q(st,at)进行更新;
蒸汽发生器的运行过程是一个强非线性过程,而q学习方法对于非线性对象具有自学习能力,因此选择该方法来更新动作值函数。
所述步骤4.2中q表的单点q(st,at)更新规则如下:
其中,st是蒸汽发生器当前时刻状态参数,at是当前时刻给水流量,st+1是蒸汽发生器下一时刻状态参数,at+1是下一时刻给水流量,α是学习率,r是蒸汽发生器在st下执行at指令后,进入下一时刻状态st+1得到的瞬时奖励值,γ是回报衰减率。
步骤5:使用窗口平均方法计算控制获得的平均奖励值
在实际应用中,将已训练完成的q表输入到蒸汽发生器控制程序中,以实现对核电蒸汽发生器水位的实际控制。
步骤6:仿真验证及结果分析。
为了验证本发明的先进性,对传统pid控制器和本发明控制系统进行了仿真对比研究。其中,蒸汽流量发生阶跃变化是最强的非线性过程,也是其他过渡态的研究基础。因此,这两种方案的模拟过程都选择蒸汽负荷阶跃变化过程。蒸汽发生器水位设定值为12m。每次仿真过程的起点和终点分别为蒸汽负荷发生阶跃变化时刻和水位重新稳定时刻。图5所示为本发明控制系统和传统pid控制系统的仿真结果。通过调试,将ε随机因子设置为0.2,学习率α设置为0.9,回报衰减率γ设置为0.7。
如图6所示,对于本发明提出的方法和pid方法中,当蒸汽流量发生10%阶跃变化时,分别需要11秒和33秒达到稳定。结果表明,本发明提出的方法比pid方法具有更快的响应能力,调整时间缩短了22秒。其主要原因是q学习方法能够从历史信息中学习经验,并随着学习时间的增长,动作值函数不断得到优化,使得蒸汽发生器给水控制系统越来越智能、响应速度更快、超调量更小。此外,q表具有在线更新的能力,使得所提出的方法可以减弱甚至抵消部件衰退对蒸发器带来的影响。
通过本文的附图与实施例给出了本发明的具体实施方式,但对于本领域的技术人员应当理解,本发明的保护范围是由所附的权利要求书限定的。本领域技术人员在本文所提及的原理下,可以对这些实施方式做出多种变更与更改,凡符合权利要求书范围内任何和变更与修改均落入本发明的保护范围。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除