【电路展示】一个改进版的混炼电路
异星工厂吧
全部回复
仅看楼主
level 11
昨天和别人聊了聊混炼,谈到了一种动态平衡下确保大多数电炉只炼一种矿,从而确保产能插件被充分利用的混炼方案。
今天偷偷摸鱼做出了一个初稿,故拿出来分享一下这个方案的核心思路。
轻喷!!!
2020年09月09日 13点09分 1
level 11
1.电路模块介绍
两大块,一个是右下角的主控区,用于分配电炉个数和冶炼矿物种类的;另一个是执行区,用于将主控区发出的指令执行下去,执行区遍布整个电炉区域。
2020年09月09日 13点09分 2
level 12
我觉得基地存什么矿是火车站的事,炉子的任务就是基地有什么矿就烧什么矿[滑稽]
2020年09月09日 13点09分 3
说得好,可惜不是所有人都会混装混卸,大佬说怎么办[滑稽]
2020年09月09日 14点09分
@贴吧用户_QWtyGRM 不用混装混卸啊,比如你有4个车站,控制绿爪缺货了才抓这样不是比控制电炉来得方便得多吗
2020年09月09日 14点09分
2020年09月09日 14点09分
level 4
丁丁大佬。[滑稽]
2020年09月09日 13点09分 4
[吃瓜]
2020年09月09日 15点09分
level 10
抱住萝莉!
2020年09月09日 14点09分 5
level 11
2.核心思路介绍
举例说明:在动态平衡状态下,假设有75个冶炼模块并对其进行编号[0-74],需要25个炼铁矿,25个炼铜矿,15个炼钢,10个炼砖。下图为一个冶炼模块示意图。
问题:如何实现[0-24]个电炉炼石矿、[25-49]个电炉炼铁矿、[50-64]个电炉炼铜矿、[65-74]个电炉炼钢。这样便能实现在动态平衡下确保大多数电炉只炼一种矿,并确保产能插件被充分利用。
解决思路:利用 信号优先级思想 解决该问题。
操作:
1.通过控制区电路实现发出10个石矿信号、35个铁矿信号、60个铜矿信号、75个钢信号。
2.执行区电路进行判断,首先设置编号为0的电路模块的判断器设置为>0、编号为1的电路模块的判断器设置为>1、编号为2的电路模块的判断器设置为>2 ... 编号为74的电路模块的判断器设置为>74。
3.同时输入10个石矿信号、35个铁矿信号、60个铜矿信号、75个钢信号进行判断。举例:可以发现编号为0的的电炉允许输出石矿信号、铁矿信号、铜矿信号、钢信号;可以发现编号为20的的电炉允许输出铁矿信号、铜矿信号、钢信号;可以发现编号为40的的电炉允许输出铜矿信号、钢信号;可以发现编号为70的的电炉允许输出钢信号。
4.由于信号优先级的问题,筛选爪只能选择优先级更高的进行抓取,优先级为石矿>铁矿>铜矿>钢。这样就实现了[0-24]个电炉炼石矿、[25-49]个电炉炼铁矿、[50-64]个电炉炼铜矿、[65-74]个电炉炼钢。
2020年09月09日 14点09分 6
妙啊
2020年09月09日 14点09分
紫爪可以接受多个信号,这么看只能强制使用白爪了,有点贵啊
2020年09月09日 14点09分
噢这个混炼只能用白爪忘了
2020年09月09日 14点09分
@超级潜水员QZ 你知道电炉加上 加速+生产插件后每个电炉的生产速率吗,我这边来反推一下这个混炼的生产效率
2020年09月10日 01点09分
level 11
3.执行区电路模块详细介绍
在说完原理后再将电路构成应该要好理解一些吧!
1.首先要确保混炼不出错就需要保证蓝箱的原料充足的情况下筛选爪每次只抓10个;
所以第一个判断器便是设置为 每个信号(黄*)>50则输出一个信号C;第二个判断器则设置为信号C=4输出所有信号。另外,第二个判断器输入端要接入 控制区 发出的信号。图1 图2
2.再利用一个运算器给电路模块进行编号,设置为信号N+1输出信号N(类似自加一)。图3
3.最后进行 核心思路介绍 所讲解的判断环节,将每个信号(黄*)与信号N进行比较,大于信号N允许输出。图4
2020年09月09日 14点09分 7
level 11
4.执行区电路模块连线
1.控制区信号输入端,直接绿线连接判断器2的输入端。图1
2.运算器连接(编号),直接上一个运算器的输出端 绿线连接 下一个运算器的输入端。另外,输入端连接判断器的输入端,毕竟编号从0开始的。图2
2020年09月09日 14点09分 8
level 10
你这是以动态平衡为前提做的吗,如果平衡转移怎么办,能不能检测、自调节。
2020年09月09日 14点09分 9
实时监测
2020年09月09日 14点09分
level 11
5.控制区电路详解
这部分电路不是很难,不过有些弯弯绕绕,我尽量通过举例的方式讲解吧。
5.1求需求产品量与实际产品的差值。这一部分比较熟悉,很多人都这么用。
举例:常量箱设置需要100个铁板,读取指令平台的数据发现铁板只有10个,所以需要一个运算器计算 需求产品量100 - 实际产品10这两个之间的差值。
因为有四种产品,所以需要四个运算器。A B C D 分别对应石砖 铁板 铜板 钢。
2020年09月09日 14点09分 10
level 11
5.2 剔除负数信号并求取每种矿石所需的冶炼模块
1.剔除负数信号。由于生产波动原因,总会出现实际产量>设定产量的情况,这是相减会产生负数,这个负数会对接下来的计算产生致命影响,所以必须剔除。
直接用一个判断器设置为 黄* >0输出 黄* 。
2020年09月09日 14点09分 11
level 11
5.2 剔除负数信号并求取每种矿石所需的冶炼模块
2.每种矿石所需的冶炼模块
计算公式:基于这游戏无法留存小数的特点,所以计算必须先乘后除
1.A=模块数量*每种矿石的数量(存在bug,如果得出的数据大于2147483647会直接跳为负数,初稿并未解决该问题)图1(图中信号N为模块的个数)
2.将每种矿石的差值相加得出一个值C,直接一个运算器解决。图2
3.A/C便是每一个矿石所需的冶炼数目。图3
2020年09月09日 14点09分 12
level 11
5.2 剔除负数信号并求取每种矿石所需的冶炼模块
2.每种矿石所需的冶炼模块
将信号A B C D分别转化为各自对应的矿石信号(运算器 信号A+0输出信号石矿).图1
2.1弥补数据
必须注意一点,这个游戏无法留存小数,有小数必然会自动剔除留下整数部分。
然而除法这玩意最喜欢产生小数了。
对于这一点有两种思路,一是忽略不管,二是通过其他方式弥补回来。我这儿说一下第二种方式。
1.计算电路分给各个矿石的模块总数和=M。图2
2.差值Z=真正的模块总数(75)- 电路计算的模块总数(M).图3
2020年09月09日 15点09分 13
可以加位数来解决,比如前面把矿物信号先乘10再除75,最后判断炼治类型那从原来的大于0大于1到大于74,变成大于0大于10到大于740
2020年09月09日 15点09分
@MoyeZN🌿 问题在于我只有75个模块,这样乘10没啥作用,还得消回来
2020年09月10日 00点09分
@不羁的迷途 不用除回来,进位之后7楼的n+1输出n改成n+10输出n
2020年09月10日 01点09分
@MoyeZN🌿 额,假设我有一个数14.526,按你说做的*10=145.26,问题在于电路只显示145,小数还给剔除了。四个这样的数下来还是会至少缺1个数的。
2020年09月10日 02点09分
level 11
5.2 剔除负数信号并求取每种矿石所需的冶炼模块
2.1弥补数据
注意,差值D是不可能>4的,就算是每个小数是0.99,四个加起来依然<4,况且还达不到这种情况。
注意到这一点后,我们便能把差值Z进行分配了。
分配原则:优先分配 铁片 铁矿 铜矿 石矿(这个可以根据自己需求选择,我瞎写的)
电路设计:先判断差值Z是否大于0(图1);大于0则根据优先顺序输出一个对应的矿石信号(图2);最后减去一个信号Z传递给下一组判断(图3)。
2020年09月09日 15点09分 14
level 11
5.3 给矿石信号分配到对应的区间
这个原理很简单
石矿:直接输出石矿=A个数
铁矿:输出 石矿+铁矿=B 的个数,即A+铁矿
铜矿:输出 石矿+铁矿+铜矿=C 的个数,即B+铜矿
钢:输出 石矿+铁矿+铜矿+铁片=D 的个数,即C+铁片
2020年09月09日 15点09分 15
1 2 3 尾页