有约束的资源分配算法

Resource Allocation Algorithm with Constraints

我知道有一些算法可以解决我的问题,但我在命名它和相关的解决方案时遇到了问题。 这是我的问题:

目标:最大限度地分配我的钱包资金,这样我就可以为我的大部分项目提供资金。

此外,我宁愿让我的所有项目获得 95% 的资金,也不愿让一些项目获得 100% 的资金而其他项目获得 0% 的资金。

所以我猜想最小化的函数是所有 (d-(all the money allocated to this project))² 假设我没有足够的钱来资助我所有的项目

示例:

我的第一个钱包里有 100 欧元,我可以将 70% 用于项目 1,20% 用于项目 3,10% 用于项目 3

我的第二个钱包有 200 欧元,我可以在项目 1 上花费 30%,在项目 2 上花费 50%,在项目 3 上花费 20%。

关于我的项目:

  1. 项目 1 至少需要 120 欧元
  2. 项目 2 至少需要 100 欧元
  3. 项目 3 至少需要 110 欧元

感谢您的帮助!

您可以将其表述为最大流问题。将源顶点连接到钱包对应的顶点,其中每条弧的容量是钱包中的金额。将与项目对应的顶点连接到汇点,其中每条弧的容量是该项目所需的资金量。将钱包连接到具有弧线的项目,弧线的容量反映了该钱包中可用于该项目的金额。

处理分段二次objective有点棘手。幸运的是,它是凸的,所以我打赌你可以使用二次规划求解器来获得良好的效果。