本帖最后由 时之虫 于 2020-8-22 21:13 编辑
8.22更新:
成功用概率分布计算出了地狱疣农场产量和收割周期的函数关系式,写成了一个pdf文档。因为上传文件时不支持pdf格式,我打成了压缩包。下载附件就可以查看。
地狱疣农场的概率模型和最佳收割周期.rar
(880.41 KB, 下载次数: 2)
2020-8-22 21:09 上传
点击文件名下载附件
请解压
大家好,这里是时之虫。最近在服务器搞地狱疣农场,进行了不少研究。这篇帖子会研究一下检测式的地狱疣农场,但主要还是集中在时钟式农场。这篇帖子会根据地狱疣生长的方式推算最合适的收割周期,并计算对应的效率。
因为我还没有学过概率论,本贴不包含高深的数学知识,只需要初中的数学水平就可以理解,只需要小学的数学水平就可以运用本帖给出的研究结果。
一.地狱疣农场概述
一般来说,地狱疣农场有两种类型:检测式的,和时钟式的。
1.检测式
其中检测式的农场依靠完全成熟的地狱疣的“边框”比未成熟的地狱疣更大,通过严格控制玩家的视角,让玩家刚好只能挖掉完全成熟的地狱疣。
玩家一般左手拿地狱疣,右手拿着时运3的斧子/镐子,坐在矿车里遍历每一个可以种植的位置。鼠标的左右键同时按下,玩家就能够瞬间挖掉成熟的地狱疣并补种。这样玩家就可以afk。更进一步的,可以用carpet mod召唤假玩家(bot),让bot代替玩家种植,在服务器里就可以彻底的挂机。
例如:raysworks的100%效率地狱疣农场(b站视频av55945828)
file_1594366840000.jpg (189.64 KB, 下载次数: 6)
下载附件
2020-7-10 15:40 上传
这样的农场优点是收割的很精准,不会收割到没有成熟的地狱疣;可以用时运附魔让效率增加;规模可以很小,适合前期和初期使用。种植规模也可以很大,但整个农场的大小也会成倍的增大,很难缩小。
(P.S.:玩家纯手动种植的效果和检测式的没有明显区别,归入检测式)
至于用侦测器和bud来检测地狱疣生长的农场(严格来说其实这才是检测式,但我找不到更好的称呼来描述前一种),因为地狱疣的种植和生长至成熟总共有4次更新,简单的侦测器+活塞/水流不能收割到成熟地狱疣,必须要使用计数器之类的东西,但这样一来体积难以压缩,同样多的种植位体积只会比检测式臃肿,本贴不进行讨论。
2.时钟式
另外一种时钟式的地狱疣农场,它同样是让玩家座在矿车里(也有用活塞或者水流推动玩家的设计)遍历每一个灵魂沙,给整个农场种满地狱疣。但收集的方式不再依赖玩家,而是用水流/飞行器破坏地狱疣(也有用活塞推动灵魂沙的设计)。通常是每隔一段固定的时间启动一次收割,收割完毕后启动矿车让玩家再次种植。也可以把种植规模做到非常大,让玩家循环一周期的时间足以让最初的地狱疣大部分都成熟,这样就可以让玩家不停的种植。
例如LonganRG的av69703041和“萌萌de小公举”的av838784787,都属于时钟式的农场。
前一个规模比较小巧,用飞行器收割
file_1594367296000.jpg (147.57 KB, 下载次数: 10)
下载附件
2020-7-10 15:48 上传
后一个规模和占地面积都非常大,采用水流收集,有6727个种植位
file_1594367478000.jpg (150.29 KB, 下载次数: 6)
下载附件
2020-7-10 15:51 上传
以及我自己设计的高度压缩的,有1024个种植位置(后来缩减到了1016个),而且占地面积小。下一篇帖子会介绍自己设计的这个地狱疣农场(希望不咕)
file_1594367545000.jpg (330.42 KB, 下载次数: 6)
下载附件
2020-7-10 15:52 上传
file_1594367545000.jpg (286.65 KB, 下载次数: 6)
下载附件
2020-7-10 15:52 上传
时钟式的地狱疣农场优点在于规模扩大的同时可以压缩空间,而且最终的种植规模通常可以远超过检测式农场,适合后期使用。缺点就是成熟的地狱疣不能被及时收割;收割时会将未成熟的地狱疣一并收割,也不能使用时运附魔。
二.地狱疣生长的机理:游戏是怎么让地狱疣生长的
1.随机刻和区段
引用几段喂鸡百科上的文字:
区块(Chunk)是Minecraft世界里一个大小为16×256×16的部分。
每个区块被划分为16个区段,每个区段包含16×16×16=4096个方块。
区块和区段都可以按下F3+G来看到。
在每个游戏刻,执行区块刻的区块中,每个区段会被随机选出3个方块(可以重复)给予一个“随机刻”。可以通过使用命令/gamerule randomTickSpeed <数量>来改变每个区段给予随机刻的方块数。大部分方块不会有影响,除了如下这些:
小麦可能生长或拔除。
蘑菇可能传播或拔除。
藤蔓可能传播。
火可能熄灭或传播。
冰和雪可能融化。
树叶可能枯萎。
耕地的湿润程度会更新。
仙人掌、甘蔗、海带、竹子和紫颂花可能生长。
草方块和菌丝可能传播或变成泥土。
树苗可能长成树。
熔岩可能使附近的方块着火。
发光的红石矿会熄灭。
下界传送门方块可能生成一个僵尸猪灵。
海龟蛋破裂或孵化。
营火冒出烟雾颗粒。
简单来说,随机刻就是每1/20秒,每个区段都会随机选择3个方块给予随机刻。随机刻不会特意选择能生长的作物方块,而是完全平均的随机选择。大部分随机刻都浪费在不能生长的方块,比如普通建筑方块和玻璃,这是正常的。
2.地狱疣的生长
再来看看地狱疣的生长:当在灵魂沙上种植时,下界疣会经过四个成长阶段,不过中间的两个阶段看起来几乎完全相同(区别在于第三阶段的选择框高一像素)。下界疣在每个随机刻都有10%的几率生长一个阶段。
当下界疣到达第四阶段(age值为3)时就可以收获了。采集一个成熟的下界疣会掉落2-4个下界疣,如果在它成熟之前采集只会掉落1个下界疣。使用带有时运魔咒的工具采集时,每一级会使掉落数量上限增加1。
重点:每次地狱疣被分配到随机刻,它只有10%的概率生长,或者说有90%不进行生长。收割不成熟的地狱疣只会掉落它本身的1个地狱疣,只有收割成熟的地狱疣才能让地狱疣的数量增加。所以不管是检测式还是时钟式,在计算具体的产量之前,应该先计算成熟地狱疣的收割效率(平均每个小时收割了多少个成熟的地狱疣)。结合收割方式(时运3还是其他方式)就可以计算具体的产量了。
三.地狱疣农场的数学模型(matlab概率建模)
0.哪些是可以跳过的:
用蓝色强调的文字不宜跳过
所有的图片都不宜跳过
折叠的文字都可以不看。
1.基本设定:以时钟式农场为例
首先,只考虑在一个区段(子区块)内的农场,简化模型。
为了简化模型,假设农场是在很短时间内瞬间种完的,不考虑种植过程中的生长。
这一个区段共有4096个方块,用一个4096个数字的数组来表示;数组中0表示非地狱疣的方块,1~4表示不同生长阶段的地狱疣。其中1~3均为地狱疣成熟前的3个阶段,4为成熟的地狱疣。
为了模拟地狱疣的生长,每次随机选择数组中3个元素,如果为1~3,是未成熟的地狱疣,则有10%的概率生长,按10%的概率给这些数字+1;如果是0或者4,则不生长,不做处理。
循环72000个游戏刻,模拟游戏中一小时的时间。
每次随机刻生长完之后都统计区段中成熟地狱疣的数量(数组中=4的元素个数),连同对应的时间(游戏刻为单位)记录成一个2行72000列的数表中。
将每时刻的成熟地狱疣数量除以对应的时间(游戏刻)乘以72000,就是按这个时刻为周期,平均每小时收割的成熟地狱疣数量。比如在第48000个游戏刻(40分钟)时收割,得到的就是每40分钟收割一次种植一次,农场的效率。
通过这种方式就可以计算出时钟式地狱疣农场效率最高的收割周期。
2.不同种植规模的地狱疣农场的最佳周期:
分别模拟了32、64、128、256、512、1024和2048个种植位的时钟式地狱疣农场在一个区段内的生长。
由于模拟的过程使用随机数,模拟出来的曲线抖动都很严重,为了让曲线更平滑,更接近真实的期望值,每种农场我都重复了10次,取平均值。
但种植位少的农场的曲线仍然抖动严重。
将农场的效率除以种植规模,以反映平均每个灵魂沙贡献的效率。这是为了更准确的考察收割周期对农场效率的影响。
模拟出来的成熟地狱疣收割效率-收割周期的图表如下:
最佳收割周期相同.png (91.56 KB, 下载次数: 9)
下载附件
2020-7-10 16:35 上传
如图,7条曲线大体上是重合的,它们最高处的收割周期基本上一致,大约是2000秒到2500秒之间;最高处的效率也基本上一致,大概是每个灵魂沙每小时贡献1个成熟地狱疣。如果模拟次数足够多,这7条曲线会完全重合。
所以我们得出一个非常重要等级结论:
一个区段内,所有规模的农场最佳收割周期相同
这意味着什么呢?这意味着农场的效率、最佳收割周期和位置无关。
一个农场,无论它是在一个区段里,还是横跨了多个区段,都可以将它按照区段切分,每个区段是一个子农场,而整个农场的效率就是所以子农场的效率之和。每个子农场的种植位数不一样,但最佳收割周期相同,所以整个农场的收割周期相同;每个子农场贡献的效率都是上面图表中曲线的最大值乘以子农场的种植规模,也就是说整个农场中每个灵魂沙对效率的贡献都是相同的,所以整个农场的效率也与位置无关。
3.最佳收割周期的精确计算
前一次模拟已经证明所有农场的最佳周期相同,而且种植位越多,曲线越稳定。所以我模拟了一个区段内2048个种植位的地狱疣农场,重复10次取平均值。
代码如下:
[spoiler]for j=1:1:10
A(j,:)=A(j,randperm(4096));
[A(j,:),T,E(j:(j+1),:)]=WartGrow(A(j,:),72000,3);
end
>> Pl(1,:)=sum(E(1:10,:))/10;
>> Pl(2,:)=E(11,:);
>> plot(Pl(2,:),Pl(1,:))
>> xlabel('收割周期/秒')
>> ylabel('平均每小时收割的成熟地狱疣数量')
>> title('2048地狱疣农场的效率-收割周期图 by TokiNoBug时之虫')
>> max(Pl(1,:))
ans =
2.0886e+03
>> Pl(2,Pl(1,:)==ans)
复制代码
得出的图表如下:
最佳收割周期.png (44.32 KB, 下载次数: 9)
下载附件
2020-7-10 17:05 上传
图表显示,最合适的收割周期是2088.6秒,此时每个灵魂沙贡献的成熟地狱疣则是2336.25÷2048=1.14075。
实际上因为最高点处曲线很平滑,收割周期维持在2088秒左右就可以,比如35分钟。周期可以稍微短一些,对效率影响很小,但不宜太长。
如果是纯手动的挂机种植,建议挂机35分钟收割一次。
但请记住,这个模拟是忽略了种植过程中的生长。如果是大规模的、种植时间很长的农场,则模拟时必须考虑种植过程中的生长。
4.时钟式农场的效率计算
以上两个关键数据:周期35分钟,每小时每个灵魂沙贡献的成熟地狱疣1.14075个,可以用来计算种植时间较短的地狱疣农场的效率。
具体的计算方式很简单:
每小时成熟地狱疣收割量=种植位数×1.14075
每小时地狱疣净产量=每小时成熟地狱疣产量×增殖率。
其中增殖率=成熟地狱疣掉落的地狱疣数量-1
这很容易理解,每收割一个成熟地狱疣,就要从掉落的地狱疣中用掉一个,用作农场下一个周期的补种。
很显然,增殖率由农场的收割方式决定。
那么增殖率该怎么计算呢?这里引用喂鸡百科上关于时运的条目:
荧石、西瓜、下界疣、红石矿石、海晶灯和甜浆果丛的掉落数量服从离散型均匀分布,这意味着每个掉落数量都是等可能出现的。每等级时运将掉落的上限增加1,但是最终掉落数量不会超过物品自身掉落数量的上限:荧石最多掉落4个荧石粉,海晶灯最多5个海晶砂粒,西瓜最多9个西瓜片。如果选中了超过上限的数字,会向下减少至上限。
还有喂鸡百科上地狱疣的条目:
采集一个成熟的下界疣会掉落2-4个下界疣。使用带有时运魔咒的工具采集时,每一级会使掉落数量上限增加1。
如果是用时运3附魔收割的检测式农场,那么成熟地狱疣的掉落数量上限是7,下限是3。因为地狱疣的掉落是离散型均匀分布
所以它每种掉落数量的可能遵从如下的概率分布表:
image.png (6.28 KB, 下载次数: 8)
下载附件
2020-7-10 19:18 上传
掉落数量的期望E=4.5,也就是平均每个成熟地狱疣掉落4.5个地狱疣。
所以时运3的增殖率=E-1=3.5,平均每个成熟地狱疣增殖3.5个地狱疣。
同理,用其他方式收割相当于0级时运附魔,掉落上限是4,下限是3。每种掉落数量的概率遵从如下的概率分布表:
image.png (5.09 KB, 下载次数: 3)
下载附件
2020-7-10 19:22 上传
掉落数量的期望E=3,增殖率=E-1=2。平均每个成熟地狱疣掉落3个地狱疣,增殖2个地狱疣。
两种农场的增殖率就已经计算出来了,可以用于预测农场的效率。
举例:一个128种植位的时钟式农场,每小时成熟地狱疣收割量=128×1.14075=146.016个,每个成熟地狱疣增殖2个,那么这个农场的效率,也就是净产量=2×146.016=292.032≈300个/小时。
5.检测式地狱疣农场的效率模拟
由于检测式农场在地狱疣成熟之后很短的时间内就能完成补种,不能套用时钟式地狱疣的代码来模拟。
类似于时钟式农场建模时的预设,为了简化模型,假设每个地狱疣在成熟之后立刻就能被补种(实际上未必能做到),在数学模型里就是每个随机刻生长完毕之后,检查被选中的3个方块中有没有数字为4的元素。如果有,则将4替换为1,并设计一个变量单独储存已经收割的地狱疣数量。模拟一块2048种植位的地狱疣农场在1小时(72000游戏刻)内的种植和收割补种过程,记录被收割的地狱疣数量。
模型预设的是最理想的情况,实际情况效率会稍低。
实现该过程的代码如下:[spoiler]A=zeros(10,4096);
>> A(:,1:2048)=1;
>> for j=1:1:10
A(j,:)=A(j,randperm(4096));
for t=1:1:72000
rl=ceil(4096*rand(1,3));
for n=1:1:3
if A(j,rl(n))>=1&&A(j,rl(n))<=3&&rand(1,1)<=0.1
A(j,rl(n))=A(j,rl(n))+1;
end
if A(j,rl(n))>=4
A(j,rl(n))=1;
count(j)=count(j)+1;
end
end
end
end[/spoiler]
>> sum(count)/10
ans =
2900复制代码经过10次模拟取平均值,计算出该农场平均每小时收割2900个成熟地狱疣。
所以检测式农场平均每个灵魂沙每小时贡献2900÷2048=1.416个成熟地狱疣,对比时钟式农场的最佳周期下的1.14075,检测式农场确实将每个种植位的利用最大化了。
接下来计算效率(净产量):
时运3的增殖率是3.5,每个种植位每小时增殖3.5×1.416=4.956个地狱疣,比起时钟式农场的2×1.14075=2.2815,同样多种植位(灵魂沙)的情况下,检测式农场的效率是时钟式农场的2.1723倍。
但注意这个倍率是基于种植位一样多的前提。而时钟式农场灵魂沙的密集度远超检测式农场,对于大型农场而言灵魂沙的数量(种植位)才是王道。况且大型的检测式农场,bot遍历所有灵魂沙所需的时间很长,一个地狱疣从成熟到被收割的时间不可忽略,这同样会拉低效率。
所以在后期,为了给自动炼药机提供足够的地狱疣,建造更省材料更高效的农场,我推荐时钟式的。
四.研究结果汇总(小学数学就可以理解并运用的部分)
任何地狱疣农场的效率和最佳收割周期都和位置无关,只要你不在地狱用水流收集,想放在哪个维度放在哪个维度,想放哪个地方放哪个地方。
时钟式农场每35分钟收割一次,效率最高
这个收割周期下,农场的效率=灵魂沙数量×1.14075×2
检测式农场最理想情况下,农场的效率=灵魂沙数量×1.416×3.5
同样多的灵魂沙,检测式农场的效率约为时钟式农场的2倍。
检测式农场适合游戏前期和小规模,时钟式农场适合游戏后期,大规模。
如有错误,欢迎指出。
下一篇帖子会讨论地狱疣农场更具体的设计,包括具体的样子,也包括考虑了种植过程的数学建模,为大型农场提供更准确的最佳收割周期。
image.png
(5.47 KB, 下载次数: 3)
下载附件
2020-7-10 19:16 上传