异星工厂吧 关注:60,222贴子:381,522

【工具分享】YAFC——又一个Factorio量化工具

只看楼主收藏回复

YAFC,专用于Pyanodon,但不止是Pyanodon。


IP属地:浙江1楼2024-08-14 13:18回复
    2楼自占备用


    IP属地:浙江2楼2024-08-14 13:19
    收起回复
      事情的起因是这样,楼主开始想通过工厂规划师做一个py的全瓶量化,在做到只剩下化工、金属冶炼、生物时,发现规划师的量化已经变得非常卡了,在点一下任意地方都会卡10秒以上,如果点错配方需要重新选择无限制物品时,这一过程至少消耗半小时。所以后续量化实在难以进行,即使能够完全量化到0输入,但进入退出任意子层时间也非常久。
      后来在群友的推荐下了解到了一款量化工具,叫做 yafc。
      关于py 0输入全瓶量化的故事会重新开一个帖子讲。
      尝试失败的规划师全瓶量化图



      IP属地:浙江3楼2024-08-14 13:20
      收起回复
        本贴在这里给大家推荐一个好用的量化工具:yafc
        什么是yafc?
        yafc是 Factorio 的计算器、规划器和分析工具。yafc的主要目标是应对经过大量修改的游戏。
        yafc的主要目标是帮助玩高度自定义的Factorio游戏的玩家。 yafc不仅仅是一个计算器。它使用多种算法来理解您的模组包中发生了什么,甚至可以计算整个后期基地。它知道哪些物品更重要,哪些配方更有效。
        它是为了应对Pyanodon配方的深度递归问题而创建的,这些工具(如Helmod)无法处理。yafc使用谷歌的OrTools作为模型求解器来很好地处理它们。
        yafc还具有“永不嫌多的物品”(Never Enough Items,简称FNEI)功能,这是FNEI的增强版。除了显示配方外,它还会显示哪些配方可能更适合使用,以及使用量。
        本文部分文本来自GitHub原文翻译


        IP属地:浙江4楼2024-08-14 13:24
        回复
          如何使用yafc?
          1.下载与安装
          1.1下载安装.NET
          (yafc是一个桌面级应用,它基于.NET,“.NET”是一个广泛使用的软件开发框架,由微软公司开发。它提供了一个包含了许多类库和运行时环境的平台,使得开发者可以更加容易地创建各种类型的应用程序,包括桌面应用程序、Web应用程序、移动应用程序等。)
          1.2下载yafc本体。
          1.3下载适合你操作系统的zip文件:在发布页面上,你会看到针对不同操作系统的多个下载选项(如Windows、MacOS、Linux等)。根据你的电脑或服务器的操作系统,选择相应的zip文件进行下载。

          Window版本的YAFC,一个是本体,一个是对应操作系统的文件
          2.运行yafc
          2.1打开yafc
          解压后,你会看到一个或多个可执行文件(如.exe文件在Windows上,.app在MacOS上,或简单的可执行文件在Linux上)。根据你的操作系统,找到相应的文件并运行它。对于Linux用户,如果文件具有执行权限,你可以通过在终端中导航到文件所在目录并使用./YAFC命令来运行它(假设文件名未更改且当前用户具有执行权限)。对于Windows用户,只需双击.exe文件即可。
          双击可执行文件(Windows是yafc.exe),出现如下界面

          2.2汉化
          默认字体是没有中文的,需要汉化一下(虽然汉化了也就配方有中文)
          选择你想要的字体,按下图操作就可以,但字体必须有中文,这里我选择的是微软雅黑

          2.3加载或新建工程
          点击开始界面右上角的Load加载原有工程或Create新建工程,如果是是新建工程,需要以管理方式运行,新建后先保存一下。
          成功打开

          3.使用yafc
          大致用法和helmod、规划师类似,点击左上角新建量化表,选择目标产品和数量。

          这是一个yafc的量化示例,分别展示了乏燃料棒的量化,电力量化,配方负数需求
          1).乏燃料棒为燃烧产物,本身没有配方,无法直接量化,但可以通过将热能生产产出的副产物乏燃料棒和1阶磷酸锑的乏燃料棒的原料需求链接起来实现量化。
          2).电力量化可以选择所有能生成电力的方式,示例这里选择的是太阳能+电池,yafc也能实现太阳能的计算(太阳能效率值设置约为70%)。
          3).有时设定一项支出比设定最终产品的数量更方便。这里需求配方设置-900原煤,即输入900原煤,然后计算蒸汽产出,可以很直观看出900原煤到底可以输出多少蒸汽。
          yafc也有自己的示例和技巧:
          如果你想了解更多关于如何使用YAFC的示例,可以查看提供的GIF图。此外,YAFC可能还包含“Tips and Tricks”部分或内置提示,这些都可以帮助你解决在使用过程中遇到的问题或学习高级用法。
          翻译后的Tips文件

          GIF所在文件夹


          IP属地:浙江5楼2024-08-14 13:42
          回复
            yafc有那些特征?
            1. UI好看(很重要!)
            2. 不需要打开工厂,像py这种打开都要几分钟就比较方便了。
            切换不同mod的量化只需要调整mod-list,不需要进游戏加载mod。
            3. Dependency Explorer tool,可以查看哪些对象需要用于哪些目的。
            对配方按鼠标中键可快速打开

            4. Never Enough Items tool ,帮助找出如何生产任何项目,以及YAFC认为哪种方式是最佳的。
            对物品按鼠标中键可快速打开

            彩色条是什么意思?

            这两个工具都可以当配方书用,但我用Dependency Explorer tool比较多
            5. 主计算器表:
            5.1链接:
            YAFC将尝试平衡生产/消费仅为链接的商品,如果你不希望链接的货物被强行平衡,你可以选择该货物允许溢出。
            未链接的货物被计算但不平衡。
            Yafc的货物可以局部链接也可以全局链接,局部(当前嵌套表下)链接是自动的,全局链接需要手动选择。全局关联需要点击最上方原料区,再选择你想要链接的物品在进行链接。
            相比于helmod与规划师的矩阵求解器,Yafc的链接自由度更高更灵活。
            helmod的矩阵求解器的自由度最差,图中把灰尘当作输入平衡掉了,它会强行平衡所有物品,无法选择选择灰尘不受限制或溢出。

            规划师矩阵求解器相对来说比较好用,它会把所有物品一起链接,虽然大多数情况是好的,但无法选择多个相同配方,而且一但选错所有不收限制物品需要重新选择。此外,过多物品整体链接也会带来严重的性能问题。
            崩溃瞬间,难找就算了,点一个起码能卡一分钟

            点击链接后的货物可以打开link summary查看货物的生产消耗,更好了解货物去向
            蓝坷拉的link summary

            氧化铁的link summary

            电力也可以链接,全瓶量化的电力消耗

            5.2嵌套表:您可以将嵌套表附加到任何配方。折叠工作表时,您将看到其中所有配方的摘要。嵌套的工作表有自己的一组链接。
            例如,您可以为电路板创建一个嵌套表,并将铜线放入其中。如果你为铜线增加一个内部链接,它将是单独的,所以你可以只计算电路板的铜缆。

            5.3自动模块:您可以通过使用滑块向配方添加插件。根据您的里程碑,它将自动添加您可以访问的插件。它将优先将插件放入从中受益最多的建筑物中。

            5.4流体温度虽然不能混合(能区别出不同的温度其实是好事),但仍可用于计算能量生成。
            5.5包括电力在内的燃料均可使用。您甚至可以添加电力生成精确满足您的产线消耗。但是,机械臂并不包含在内。


            IP属地:浙江6楼2024-08-14 14:11
            回复
              6多种分析:
              6.1可访问性分析:显示不可访问的对象。模组通常会隐藏某些对象,而Factorio中也有一些隐藏的对象。然而,无法找到由模组或地图脚本生成的对象。对于像Seablock这样的模组包,此分析可能无法正常工作,但您可以手动标记某些对象为可访问。
              在py中手动标记主要用于选择turd科技,使turd配方为可访问。
              点击Manually mark as accessible设置科技/配方为可访问。

              6.2里程碑分析:您可以添加任何东西作为里程碑。YAFC将直接或间接地在其后面锁定的每个对象上显示该里程碑图标。科学包是自然的里程碑,所以它们是默认添加的。

              6.3自动化分析:YAFC试图找到可以完全自动化的对象。例如,香草游戏中的木材不能完全自动化,因为它需要砍树。
              6.4成本分析:成本分析是我认为yafc最实用相比其他量化工具也最不可替代的一点。
              YAFC为每个对象分配成本。成本是使用最优配方获得该对象所需执行的逻辑操作的总和。YAFC成本是非常有用的快速比较项目和食谱。这个成本还有助于发现哪些食谱不是最优的。
              以纤维素为例
              根据yafc分析得出粗纤维+氢氧化钠制纤维素为最佳配方,其余均有不同程度的浪费
              Wasting 79% of YAFC cost是指浪费了79%的价值,假设原本100价值可以做一单位产品,选择此配方需要花费100/(1-79%)=476.2价值


              通过NEIE的颜色条也可以查看价值分析(橙色条表示估计的配方效率。如果它不是满的,那么这个配方在YAFC看来是低效的。蓝色代表产品制作或消耗的估计量)

              价值是如何得出的?
              通过分析算法源代码得知以下是影响价值的主要因子

              除了这些影响因子会影响价值分析外,里程碑的选择、重要物品、科研项目或技术树的消耗等也是很重要的影响因素。
              通过修改里程碑的选择,当前物品的价值也会随之改变。
              里程碑不同,解锁的配方不同,物品的消耗量也不相同。
              图为里程碑选择为蓝瓶时期,此时由于硫酸的最优配方未解锁,而硫酸主要成本为酸性气体,酸性气体主要成本为法沃加,法沃加此时制备成本比较高,再加上蓝瓶时期硫酸用量已经比较大了,所以yafc认为硫酸价值很高,每50单位流体的yafc价值消耗:8.05(目前:30.7)

              此外,如果该物品与科研包没有关联,那么它的价值就会比较低。如果它作为副产物会大量溢出,它的价值甚至可以是负数。

              想要了解更多更详细的分析过程,也可自行查看源代码。
              源码位置

              6.5流分析:YAFC计算一个基地,产生足够的科学包为所有非无限的研究。它知道你可能需要多少东西。
              在上图纤维素的NEIE走,可以看到右侧有一个预估所有研究消耗:576M,不过这个数量多半是不计算产能和研究的缸中脑的,所有会和实际消耗差很多。
              7. 从命令行加载项目。
              示例

              7. 基于factorio 0.17+
              此贴完


              IP属地:浙江7楼2024-08-14 14:44
              回复
                来点人捧捧场,怎么没人说话啊


                IP属地:浙江来自Android客户端8楼2024-08-14 15:39
                回复
                  资瓷,以后玩py的时候下载下来研究研究


                  IP属地:山西来自Android客户端9楼2024-08-14 15:49
                  回复
                    字多不看


                    IP属地:福建来自Android客户端10楼2024-08-14 16:13
                    收起回复
                      看起来是个好东西,先收藏了


                      IP属地:浙江来自Android客户端11楼2024-08-14 17:05
                      回复
                        玩py
                        我是来玩游戏的 不是来上班的!


                        IP属地:辽宁来自Android客户端12楼2024-08-14 17:41
                        回复
                          之前写过一个自动工厂的mod,根据最终的需求和当前的库存,自动推断该调集哪些机器用什么配方生产多少,一步步的把目标完成。
                          自动给机器上料和收产出都不难,接口现成的。甚至自动插拔插件也不难。比较困难的是py这种配方太多 还存在套娃生产的情况。各种corner case都得照顾到
                          我原则上是选取单位时间需要的产出最多的作为最有效的配方选取。对于金属冶炼和动植物养殖通常能取到最高级科技解锁的配方,不至于在低级配方上浪费很多倍时间。
                          但是如果没有一整套物品value的体系,你很难避免它选取一些快速但是开销很高的配方。例如如果不加限制,它会认为生产“盐水”最高效的配方是“焦油淬火”(比盐溶于水要快一点)。甚至有可能烧了很贵的动植物去换生物质,废气。 我最后也没有解决,只能玩的时候手动ban掉一些配方(全游戏流程下来大概需要手动ban100个左右)。又或者它会认为“核合成”是很好的选择,但是真玩起来又慢又耗电极高。
                          再有就是如何防止套娃生产的产物中某个产物被别的配方耗完,循环中断。尤其是有些特殊的配方(例如正常的植物动物是两个物品循环,而木头是木材,原木,树种子三个循环)


                          IP属地:上海13楼2024-08-14 18:03
                          收起回复
                            我已经放弃PY量化了,只要工厂在运转就行,产量做多做少爱谁谁去,反正我也不发工资


                            IP属地:江苏14楼2024-08-14 18:13
                            回复
                              这几天玩了太空,用的工厂规划师,整全科技包量化用了不少时间。没用矩阵求解,就是直接按配方,从最顶层往下一个个点出来。


                              IP属地:河南来自Android客户端15楼2024-08-14 19:32
                              收起回复