在从事个人项目时,我遇到了一个问题,我将在这里尝试概括。
给定一个具有不同价值的资源列表(例如resources = [1, 0.8, 1.5, 0.8, 1.2...]
),我想以尽可能公平的方式在一组 N 人中共享它们(即,没有人最终会囤积太多价值而其他人拥有的价值太少)。
我认为解决这个问题的一个好方法是最小化函数:
f(r1,...,rN) = (avg - r1)^2 + (avg - r2)^2 + ... + (avg - rN)^2
whereavg = sum(resources) / N
和rx
is 分配给 person 的资源x
。
我偶然发现了scipy.optimize.minimize
,我认为这可能会有所帮助,但我无法弄清楚如何描述 的值r1, ..., rn
不能是任意的,而是需要取自resources
(并且以一种相同的资源不是在解决方案中提供给多个人),因为我没有使用此模块的任何经验,也没有适用于此类问题的强大数学背景。
有没有一种简单的方法可以解决这个问题scipy
?