关于一键调配的基本原理(简单)
应论坛大豆的想法,我在这里大概的讲一下一键调配的图示以及为什么会提示出现补充工位的提示。
首先这里要感谢贴吧用户liao8210659,他在贴吧发布了一个一键调配的计算器,我也就直接使用他的计算器来进行讲解。
那么第一步,对于一键调配是要理解这四个字是什么意思。在这里我对于一键调配的理解是:通过调配人员数量使生产能力填充满仓库上限的时间相等。
在这句话中我们提取关键词,显而易见关键词有两个:一个是生产能力,一个是仓库上限。所以这两个数值会影响到我们最终得出的时间。
在贴吧中的公式中liao8210659额外设置了食物满仓时间,这里我们不做考虑。
设a,b,c,d,e,f,g,h,i,j,k,T,分别为各工位人数、建筑时间。
所有关于食物的方程:2.25a-2e-2f-5h-生产人数=粮仓差/T
所有关于木材的方程:0.8b-d-2f-10k=木仓差/T
所有关于石头的方程:0.28c-3i-3j-10k=石仓差/T
所有关于兽皮的方程:0.5d-2e-g=兽皮仓差/T
所有关于虔诚的方程:0.06e=虔诚差/T
所有关于草药的方程:0.02f=草药差/T
所有关于皮革的方程:0.4g-h=皮革差/T
所有关于马匹的方程:0.01h=马匹差/T
所有关于铜矿的方程:0.07i=铜仓差/T
所有关于铁矿的方程:0.01j=铁仓差/T
所有关于科研的方程:0.05k+0.02(忽略)=科研差/T
(……后续出现新的资源以此类推)
目标函数:a+b+c+d+e+f+g+h+i+j+k=生产人数
关于工位人数的约束:a、b、c、d、e、f、g、h、i、j、k>=0
将以上系数写入矩阵,解十二元一次方程组得a,b,c,d,e,f,g,h,i,j,k,T。
(PS.全是等号的线性规划很简单了,就是线代。)
(PS1.其实要用整数规划的,但……麻烦)
在上面的约束条件中 工位人数前的系数就是生产能力,如下图所示:
那么,我们现在在知道了约束条件和目标函数后,就可以列出一个矩阵,这个矩阵长这个样子:
在这个矩阵中,我们能够清晰的看出来资源的生产能力和仓库的上限差,为了便于计算,我将食物调到了满仓,仓储的具体图示如下:
有了矩阵,能看出来仓库差,那么我们就可以去尝试的列出它的逆矩阵:
逆矩阵的数字非常多,但不要紧,我们不在意那个。我们在意的是最右边那一列。
最右边的那列通过逆矩阵与矩阵图中最右边一列相乘得出,而这得出的得数就是我们所需要的人数。(进行一步取整操作)
最后一行的7470是秒数,2.08是将7470/3600得出的小时数。
这就是一键调配.
如果说我们的仓储上限不足会出现什么情况呢?
这里我们将兽皮仓库的上限调低:
在这张图里你可以清楚的看到,要求满仓时需要猎人138123人,而1000的兽皮仓储上限支持多少人进行打猎工作呢?所以就算将猎人位置全部填满,你也到不了138123人。
用实际最大可工作人数减去生产人数,若存在负数,则无法进行一键调配因为调不了这么多的人去进行生产。
为什么有时候会提示猎人数量不足?
是因为你建造了比如 牧场 等生产需要兽皮的建筑,如下图所示,我们将马匹上限提到50000K:
很明显,我们的猎人需要158875人,而我们的兽皮上限没有任何提高,我们再建设虔诚将之提到80000K:
猎人的需求再一次增长。
显而易见,由于游戏机制,岗位人数受仓储上限影响,随着科技发展,像牧场,神庙等建筑的上限不断地提高,需要的猎人数量也越来越多,不仅仅要保证自身兽皮的上限还要保证马匹和虔诚点的生产,这就是为什么会提示 提升猎人的岗位 的原因。
当然这种情况也只有前期科技需求兽皮量不足的时候才会发生,到了城堡、航海、火器时代所需要的兽皮量实在是太大了,完全可以无视岗位数量了。