什么是模拟购买决策的有效算法?

时间:2012-03-07 18:46:55

标签: algorithm

我正在尝试编写一个简单的游戏模拟消费者购买产品。我正在寻找满足以下条件的算法:

输入:

  • 消费者必须花费的金额
  • 旺旺分数的集合,W1 ... Wn(更高的值意味着消费者想要更多)
  • 产品系列,每个产品都有:

    • 旺旺分数的集合,S1 ... Sn(其中的值对应于产品满足特定需求的程度)
    • 价格
    • 库存中的数字

输出:

一组形式(Product,NumberToBuy)。产品满足消费者需求的数量将从值W1 ... Wn中减去,因此“完美”解决方案是W1 ... Wn的总和最小的解决方案。

该集合还必须满足以下绝对约束:

  • NumberToBuy小于或等于库存产品的数量。
  • 产品价格的总和乘以购买的产品数量的总和小于或等于消费者的货币。

如果有多个解决方案导致W1 ... Wn处于相同的最小值,那么最好的是所有要购买的产品的价格总和最低的那个。然而,价格是满足需求的次要问题。

说明:

  • “过度满足”匮乏没有任何好处 - 想要的价值不能低于0 - 但除了你花钱没有任何好处之外,也没有过度满足匮乏的固有惩罚。
  • 效率胜过在合理范围内找到最佳解决方案 - 快速算法找到“非常好”的解决方案,但不一定 最优解决方案优于更慢的算法,找到最优解决方案解。理想情况下,我想提出一些接近最佳解决方案的东西(即消费者不会做出明显不太理想的决策,比如选择购买更昂贵的两种产品否则相同)。

解决这个问题的一种蛮力方法是列举所有可以购买的产品组合,这些产品可以满足绝对限制条件,然后选择最能满足客户需求的产品,但这很快会变得太慢随着消费者可获得的产品数量的增加。

有没有人知道有效的方法?

加成:

如果有人能够想到单独的算法/方法或对上述问题的算法进行修改,我也会感兴趣,其目标不是最小化W1 ... Wn的总和,而是W1 ... Wn的平方和 - 即减少高需求值比减少低需求值更重要。

0 个答案:

没有答案