starbound吧 关注:84,001贴子:915,002

(fu养蜂)自动进化高产优良品系的可行性

只看楼主收藏回复

如题,逮到赛博蜂后之后开始培育优良品系,自交几小时肝得头晕眼花,实在受不了,逛贴吧查攻略,发现许多人也深受其害,于是思考:如何让该过程自动化?遂开始手搓电路,效果还不错,在这里分享一下思路,集思广益


IP属地:北京1楼2024-07-23 14:11回复
    一、效果展示:



    上图是我昨天手动进化,自交了七八个个小时,肝到头晕眼花肝出来的一只赛博蜂,是这次自动进化实验的起始点。它的基础产能为56,工蜂耐力55,工蜂繁殖率41;
    中间是自动进化了1小时后,获得的一只赛博蜂,它的基础产能达到了72,耐力提升到了65,繁殖率降低到了32;
    下图是自动进化了2小时后,获得的一只赛博蜂,它的基础产能已经来到了94,耐力变化不大,繁殖率则降低到了24;
    ----
    两小时内,产能几乎翻倍,繁殖率的降低则有可能和螨虫问题有关,现版本螨虫强势的情况下,工蜂少而精可能是更优的策略。最主要的是,这说明自动进化蜜蜂是可行的!


    IP属地:北京2楼2024-07-23 14:13
    收起回复
      二、设计思路
      题图中是我搭的一个初步验证模型,非常粗糙,但已经展现出了不错的效果,因为电路一团糊,基本看不清,所以这里只讲设计思路。

      (这是电路,能看懂的话说明你真不是一般人~)
      -
      主要思路:
      赛博蜜蜂有多种产物,选择其中生产速度最快的油作为判断依据,油产得多的,说明总生产速度快,即为我们的挑选目标;
      -
      (重点!)使用物品传送器的计数功能设置阈值(在右上物品栏里放特定数目的油),当油积累到一定数目时,将油转移至fu的单格存储器,并用物品存储检测器(capacity sensor)发出信号,开始迭代下一代蜂后;
      -

      (筛选阈值设置,当油产生超过65个时,开始下一轮迭代)
      -
      迭代信号发出后,执行以下动作:
      ---1.删除单格存储器里的油;
      ---2.将优势蜂箱中两条幼虫提取出来,放入暂存箱;
      ---3. 延时一秒后,清空所有蜂箱里的产物(蜂后和幼虫全删,物品保留一个,以免油的位置变化)。延时一秒是为了保证清空动作在提取幼虫之后进行,避免误杀;
      -
      幼虫转移到暂存箱后,再次通过物品存储检测器发出信号,将幼虫放入显微镜;
      -
      显微镜通过自身生产状态信号(最上方红圈)连接一个延时两秒的信号,将检测好的幼虫均分到上下两个单格存储器中。延时是由于显微镜工作结束后,幼虫并不会立即出现在输出格,需要稍等一下;
      -
      (重点!)存放幼虫的单格存储器是必要的,不能直接把检测好的幼虫放入蜂箱,需要同步放入,避免各个蜂箱开始生产的时间不同,产生误差;
      -
      通过与门判断,当所有存放幼虫的单格存储器都填满后,触发一个1秒的脉冲信号,该信号执行以下动作:
      ---1. 统一将幼虫放入各个蜂箱,此时开始新的工蜂开始产生;
      ---2.延时5秒后,删除旧的工蜂;
      ---3.延时6秒后,把新工蜂放到原本旧工蜂的位置上,以便在下一轮中删除;
      ---4.延时6秒后,删除单格存储器或显微镜里可能残留的其他幼虫(正常情况下应该不会有残留,在下节:模块稳健性分析中详述);
      -------------------------------------
      至此,新的优势蜂后已经开始在蜂箱中进行新一轮繁殖,由它产生的幼虫将重复上述过程,逐渐提高产能,完成进化循环。


      IP属地:北京3楼2024-07-23 14:27
      收起回复
        三、模块稳健性及潜在问题
        由于这是我摸鱼时搭的一个验证模块v0.1版,没有特别注意在稳健性上的设计,在两小时的试运行过程中崩了两次,一次是因为两个蜂箱的油同时到达阈值,导致幼虫装了四条,导致下一个循环时卡在了显微镜这步,这次卡住后我增添了上述丢弃残留幼虫的机制,另一次是因为幼虫不够,油到达阈值时,那个蜂箱里的幼虫只有一条,导致卡在了重新装填蜂后这步,这个问题我暂时还没想好自动解决方法。
        -
        模块在两小时后停掉了,停的原因就是上述第二个问题,随着进化过程推进,蜂后繁殖率基本没变,但产物产生越来越快,达到油的阈值的时间不够产生足够的幼虫来装填所有的蜂箱,导致进化过程停止在重新装填步。当我手动把油的阈值提高时,进化过程就又可以继续跑起来了。
        -
        但是,提高筛选阈值会导致初期产量不太高时,每轮迭代耗时很长,直接降低了整体进化速度,比较理想的情况是初期设置较低的阈值,随着品种改良,逐渐手动增加阈值,但这就跟我完全自动化的初衷矛盾了,如果想挂机的话,设置一个较高的阈值让他慢慢迭代,或许是更方便的选择。
        -
        目前这个模块没有卡顿问题,按照wiki上的说法,大量常开的物品传送器是卡顿的一大来源,在这个设计中,只有检测蜂箱中油的那两个需要常开,其余都由信号触发,不过我不知道大量使用物品存储检测器(capacity sensor)性能消耗有多大,提升规模时候不确定会不会造成卡顿。


        IP属地:北京4楼2024-07-23 14:30
        回复
          以上,希望能对各位玩养蜂的朋友有所帮助


          IP属地:北京5楼2024-07-23 14:33
          回复
            在我开始码字前,我把阈值调整到了100,现在码完字,进化已经到第三小时了,产能/抗性/繁殖率已经达到了109/79/22,还在涨,但速度相比之前变慢了,和我上面说的高阈值可能导致的问题基本一致

            (另外我也在想,能不能把每次的蜂后保留下来,这样或许可以把各种属性的变化做成折线图,也许能更直观的看出点门道来)


            IP属地:北京6楼2024-07-23 14:41
            回复
              牛逼


              IP属地:广东来自iPhone客户端7楼2024-07-23 17:33
              回复
                我将阈值再次提高到200,挂机一下午,此时产能已经升高到了170~180左右


                对各个时间点抽样的工蜂统计数据,它们的前四项属性变化如上图,可见这种方法能有效提高基础产能,对其他三个属性的影响变化趋势暂时不是很明显


                IP属地:北京9楼2024-07-23 19:24
                回复
                  你游FU自动化特有的天书()
                  俺是个土人看不懂这些个接线哦


                  IP属地:北京来自Android客户端10楼2024-07-24 02:05
                  回复
                    物品传送器输出物品时是伴随信号的所以第一组装油的单格储存器+检测器完全没必要,后续可以优化掉,合着这么重要的东西fu wiki上完全没提,我愣是自己摸出来的


                    IP属地:北京11楼2024-07-24 10:23
                    收起回复
                      哥,我刚接触原版,你这样我都不敢玩fu啦


                      IP属地:江苏来自Android客户端12楼2024-07-24 10:58
                      收起回复
                        自从不能在飞船上养蜂我就没搞蜜蜂了,以前玩蜜蜂只是为了收集全种类的蜜蜂,顺便收点蜂蜜


                        IP属地:广东来自Android客户端13楼2024-07-24 11:07
                        收起回复
                          养蜂好复杂


                          IP属地:江苏来自Android客户端14楼2024-07-24 16:58
                          回复
                            筛选过程头晕眼花的,关键搞多了还会变卡。还是解刨台实在


                            IP属地:北京来自Android客户端15楼2024-07-24 20:43
                            回复
                              这两天试着搭了一个改进型模块,解决了上面所说的手动调阈值问题,通过使用物品比较器判断产物是否达标。发现幼虫不足时,自动向比较器一端添加产物,提高阈值
                              理论上,这个模块能实现“从野外抓一对蜜蜂,设好初始条件,挂机一段时间后自动获得高产品系”。测试中成功把一只产率17的圣金蜂提高到了50,期间模块自动把阈值从20提高到了70。


                              然而并没有非常大的实际应用价值,我也不打算再讲解上面这一团麻,具体原因有二:
                              -
                              一来是为了添加“自动提高阈值”这个功能,整个模块急剧复杂化,为了保证稳定性不得不增加大量冗余设计,已经开始有点卡了;
                              -
                              二来是我发现“自动增加阈值”其实是个伪需求,只需要在进化产量之前,先把蜂后繁殖率拉上去,差不多到50左右,就几乎不会出现幼虫不够导致模块崩掉的情况了,此时顶楼的模块完全够用,并且稳定性很好。
                              所以我们需要做的其实是先搭建一个简单的蜂后繁殖率进化模块,先进化繁殖率,再手动把高繁殖蜂后放到顶楼模块中提高产量。

                              (繁殖率模块如上图所示,直接用物品传送器检测蜂箱最后一格的幼虫产生,先产生者为优)
                              -
                              综合来看,这应该是最节约资源和时间(以及搭建过程容易)的解决方案


                              IP属地:北京16楼2024-07-27 08:58
                              收起回复