解决“多目标背包”难题

时间:2016-03-05 00:38:30

标签: php algorithm math optimization

所以我有这个心理难题,我一直试图想出一个使用PHP的解决方案;旋转“背包问题”。从决策理论的角度以及计算机科学的角度来看我是如何实现的,我已经做了相当多的阅读。我所认识到的是,使用“蛮力”是行不通的。

所以请允许我解释一下困境。

让我们说你的身体需要: 50克葡萄糖,20克碳水化合物,5克纤维和120克蛋白质。

你的冰箱有:

  • 1个苹果 - (10克葡萄糖,2克碳水化合物,0.5克纤维和1克蛋白质)
  • 0.5苹果 - (5克葡萄糖,1克碳水化合物,0.25克纤维和0.5克蛋白质)
  • 1牛排 - (5克葡萄糖,20克碳水化合物,5克纤维和50克蛋白质)

等等......有外出和购买更多东西的余地,以后可以加入“冰箱”。在宏观方案中,这个冰箱池可能是预定义的数组或从表中拉出的行列表(这将更加实用/实用)。

现在,我想要实现的是从我的“冰箱池”找到最佳/最接近的匹配,以符合我需要的要求。

它不一定是100%匹配(因为这可能是不可能的)但它必须是最接近的数学匹配

我如何开始解决这样的问题?我已经看到一些PHP类看到使用一个变量和其他尝试达到最大排列的类,但在我的情况下,我想要最接近的设置要求。

谢谢:)

以上所有都是假设值,此处用于演示目的。

1 个答案:

答案 0 :(得分:0)

这是一个可用于解决问题的MIP模型:

enter image description here

LpSolve旨在解决这样的模型。请注意,这并不是非常接近背包问题。