潜渊症吧 关注:32,627贴子:277,464
  • 4回复贴,共1

自动反应堆机制分析以及一个在线的反应堆模拟器

取消只看楼主收藏回复

好久没用贴吧了,已经不会发帖了


IP属地:广东来自Android客户端1楼2023-07-23 15:19回复
    在正式开始之前,先叠个甲,我们都知道自从官方削了线控之后,控制速度大不如前,因此有的人选择反应堆最大功率改成极大,有的人选择电池供电全船。
    但还是会有人继续研究自动反应堆,有的人说,是因为山就在那里,我很认可。至少我是因为想要不编辑器改船只用官船实现尽可能好的功率控制


    IP属地:广东来自Android客户端2楼2023-07-23 15:25
    回复
      那么关于线控反应堆,想必大家都清楚,线控速度是每秒5%。
      那么换句话说,在涡轮拉满的4铀棒温控反应堆中,0%功率到100%功率只需要变化7.8125%的裂变速率,换言之理论此时温控反应堆性能可以达到每秒64%的最大功率变化。
      但显然反应堆根本没有这么高的效率,那么是为什么呢?
      这一点吧里也已经有人研究出来了,答案是温度变化被限制为每秒1000度。那么我们已知5000度时反应堆就能以最大功率运行,那么理论上温控反应堆的性能可以达到每秒20%的最大功率变化。
      但事实是,目前为止,当使用振荡器发出0.1Hz的范围是0~最大功率的负载曲线时,没有任何一个温控反应堆可以在官船的反应堆参数下做到功率完美跟随负载曲线,都能明显看到有一个滞后。
      这又是为什么呢?
      答案是,万恶的线性插值。
      事实上,反应堆对于裂变速率和涡轮输出分别都有3个值,以裂变速率为例:分为信号值、目标值、实际值,
      信号值即是我们通过信号设置的反应堆裂变速率,
      目标值是反应堆准备变化到的速率,而所谓的5%每秒的线控速度,是目标值以每秒5%的最大速度向信号值变化。
      而实际值则是每秒都会以deltaTime(这一帧距离上一帧经过的时间,单位是秒)作为权重向目标值进行线性插值。
      显而易见,随着实际值越接近目标值,实际值变化得就会越慢。当目标值是恒定的,实际值事实上只能无限逼近目标值,而永远不可能等于目标值(不过当它逼近到小数点后3位的时候基本就够了)
      所以我们可以得出,目标值永远相对实际值有一个滞后,这是无法改变的。


      IP属地:广东3楼2023-07-23 15:41
      回复
        那么我们如何才能消除滞后,让功率输出尽可能完美跟随20%变化速率的负载呢?
        我的想法是,让温度尽可能以1000每秒的速度变化,即60帧的情况下16.67度每帧。
        通过当前温度算出让当前温度+1000或-1000的裂变速率,从而得到一个调节用的裂变速率设置到信号中。
        直到当前温度足够接近目标功率的温度,才将信号设置为目标功率所需裂变速率。
        这样做的确会比无优化的温控逻辑更好地贴合负载曲线,不过信号值会产生一个振荡,但信号值的振荡是我们能接受的。这是反应堆最大功率3000kw,负载为0~3000kw 0.08Hz的功率跟随测试:


        IP属地:广东5楼2023-07-23 16:13
        收起回复
          我的能力就到这里了,可能还有一点改进的想法,但是由于数学太差根本无从下手,下面就交给其它大佬吧。
          在线模拟器网址:https://yun-shan.github.io/Barotrauma-Reactor-Simulator/
          研究反应堆的过程中的一些杂乱的笔记在这个项目里的md文件中:https://github.com/Yun-Shan/Barotrauma-Reactor-Simulator


          IP属地:广东6楼2023-07-23 16:16
          收起回复