异星工厂吧 关注:62,456贴子:399,915
  • 8回复贴,共1

成功实现按需发车,2.0火车调度思路分享

取消只看楼主收藏回复

测试截图镇楼


IP属地:福建1楼2024-11-01 14:23回复
    首先是卸货站,车站读取来车数量C,A为单次列车所运送货物,B为卸货站的需求物品数量。左边的运算器C*A得出有多少货物正在运送,中间的运算器B-铁矿得出还有多少货物需要运输,右边的运算器铁矿/A得出还需要多少辆车,并输出L给车站设置车辆限制,上方的运算器L*-1得出一个负数铁矿,用于向雷达发送请求


    IP属地:福建2楼2024-11-01 14:34
    收起回复
      2025-08-01 14:40:28
      广告
      不感兴趣
      开通SVIP免广告
      然后是装货站,车站读取来车数量C,A为单次列车所运送货物,左边运算器铁矿/A得出可以供多少辆车装货,并输出L给车站设置车辆限制,右边的运算器铁矿+C得出一个正数铁矿,代表有多少任务已被接取,并发送给雷达


      IP属地:福建3楼2024-11-01 14:40
      收起回复
        重点是车库的设计。车站会读取当前停靠列车的列车编码T,发送给3号运算器,3号运算器会将T转为“信号0”并保持值不变,注意其余车站转变的信号必须互不相同(如1号车站转为信号0,2号车站转为信号1)。1号运算器组会读取所有3号运算器的输出,从中选出最大值并转为T,用于选取下一次发车的目标。2号运算器组负责计时+读取任务,如果接收到位于(0,-1000)内的信号,则输出一个S,计时系统用于保证每5tick才会向车站发送1tick的S信号。5号运算器用于确认当前的列车编号是否和选取出的列车编号一致,如果是,就输出输入的S信号。4号运算器负责将请求从雷达推送到车站,并防止信号回流。
        配合上简单的火车中断,就成功实现依次发车,避免同时发车可能会产生的冲突



        IP属地:福建4楼2024-11-01 15:06
        回复
          而液体的设计思路基本一致,这里就不再赘述。只需注意给液体添加一个基础值(此处为-2000),并改动相应的信号范围即可


          IP属地:福建5楼2024-11-01 15:10
          回复
            总结一下(叠个甲),我这套设计思路基本是复刻LTN,也就图一乐。甚至没学来LTN的混卸,这套思路可以说完全不支持(如果有大佬知道如何实现的话欢迎提出建议)。除此之外也有一定缺陷:不好采用分布式车站;存在12辆/s的硬性发车上限(固液分别计算,应该也够了?)(可提高至15/s或20/s,但我没测试过,可能存在冲突风险)
            ;供应不足时会占用闲置车辆。但我个人还是比较满意的,以前玩火车只会点对点,接触mod后就走上了LTN的不归路,这算是第一次自己设计。


            IP属地:福建8楼2024-11-01 15:28
            收起回复
              最后放上蓝图
              链接: https://pan.baidu.com/s/1AOTD4wJ8j8rgIizhCwNsTQ?pwd=t5uf 提取码: t5uf 复制这段内容后打开百度网盘手机App,操作更方便哦


              IP属地:福建9楼2024-11-01 15:29
              回复
                顶一下


                IP属地:福建来自Android客户端11楼2024-11-01 22:49
                回复
                  2025-08-01 14:34:28
                  广告
                  不感兴趣
                  开通SVIP免广告
                  再顶,没有大佬有实现混卸的思路吗


                  IP属地:福建来自Android客户端15楼2024-11-04 02:20
                  回复