资源分配算法具有约束



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

  • 我有一套钱包和钱
  • 我有一组项目,我可以花钱
  • 每个钱包W有很多钱m,我只能在几个项目上花钱,只有一个特定的金额
  • 每个项目p都需要金额D

目标:最大化我的钱包钱的分配,以便我可以为我的大部分项目提供资金。

我宁愿让我所有的项目资助为95%,也不愿将一些项目以100%的资金和0%资助。

所以我想最小化的功能将是所有的总和(d-(所有资金归属于该项目的钱))²假设我没有足够的钱来资助我的所有项目

示例:

我的第一个钱包有100欧元,我可以在项目1上花费70%,项目3和10%的项目3

在项目3和10%上

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

关于我的项目:

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

谢谢您的帮助!

您可以将其作为最大流量问题提出。将源顶点连接到与钱包相对应的顶点,每个弧的容量是钱包中的钱。将与项目相对应的顶点连接到一个接收器顶点,每个弧的容量是该项目所需的资金。将钱包连接到具有弧线的项目,其容量反映了可以花在该项目上的钱包中的钱数量。

处理分段二次目标有点棘手。幸运的是,它是凸,所以我敢打赌,您可以使用二次程序求解器来效果很好。

最新更新