有约束的资源分配算法

时间:2019-02-19 19:06:59

标签: algorithm resources allocation schedule

我知道针对我的这类问题存在一些算法,但是在命名它以及相关的解决方案时遇到了问题。 这是我的问题:

  • 我有一个钱包W装满钱
  • 我有一个项目P,可以在上面花钱
  • 每个钱包w都有一笔金额M,我只能将这笔钱花在多个项目上,并且只能用于特定金额
  • 每个项目p需要一定数量的资金

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

我也希望我所有的项目都获得95%的资金,而不是让某个项目获得100%的资金,而其他项目获得0%的资金。

所以我想最小化函数应该是所有(d-(分配给该项目的所有资金))²的总和²,假设我没有足够的资金来资助我所有的项目

示例:

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

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

关于我的项目:

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

谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以将其公式化为最大流量问题。将源顶点连接到与钱包相对应的顶点,其中每个弧的容量就是钱包中的货币数量。将与项目相对应的顶点连接到汇接点顶点,其中每个弧的容量就是该项目所需的资金量。用弧线将钱包连接到项目,这些项目的容量反映出可以从该钱包中花费的钱数。

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