如果这不符合本网站的适当格式,请原谅,因为这是一个有点笼统的问题。
我有一个位于SQL数据库之上的应用程序,它需要处理一个非常类似于线性代数问题的进程,根据在实体级别上设置的几个参数(级别、权重、最小/最大要求),需要在n个实体(e)之间分配一个金额a(任一个0-1B之间的数字)。
示例:
a = 100
entity weight min max
----------------------------------------------
X 0.25 10 40
Y 0.75 40 60
... 在本例中,25 (a * X重量)将转到实体X,75将转到实体Y;然而,75超过Y最大值,因此其余的15个需要转到另一个实体(在本例中为X,因为它位于或低于X最大值)。
直观地说,这是在迭代过程中。在一个实际的例子中,会有更多的实体,所以需要更多的迭代。SQL不是为迭代而设计的。我正在寻找一种方法来更好地处理这个基于集合的方法。
我所要寻找的是这样的东西:
发布于 2021-02-19 21:17:19
这看起来像是一个资源分配问题。我想不出任何统计方法可以帮助这里,但也许有。
我认为,首先计算超额和“短缺”的数额可以简化这一过程。我不知道这是否有一种正式的方法,但我会尝试这样的方法:
- If `S<0#qcStackCode#`
- If `|S|>S_{minus}#qcStackCode#`, then no solution.
- Otherwise (1) unload every entity which has amount in excess to their maximum, (2) take total amount |S| from any entity which capacity for giving away.如果我没有弄错的话,这只需要两个步骤,每个步骤都要遍历所有的实体。
https://datascience.stackexchange.com/questions/89609
复制相似问题