有4个约束的背包

时间:2013-09-15 01:43:07

标签: knapsack-problem

我试图弄清楚有四个约束的背包的逻辑。我想做一个程序,你输入你想要在餐中消耗的卡路里,脂肪,碳水化合物和蛋白质,它会查看最符合输入标准的最接近食物组合的可能食物清单。

示例

我有这些物品

  • 4oz牛肉(231卡路里,15克脂肪,0克碳水化合物,22克蛋白质)
  • 1/2杯燕麦片(260卡路里,2克脂肪,58克碳水化合物,10克蛋白质)
  • 1/2杯黑豆(120卡路里,0.5克脂肪,23克碳水化合物,7克蛋白质)
  • 1香蕉(105卡路里,0克脂肪,27克碳水化合物,1克蛋白质)
  • 1/2杯奶酪(110卡路里,5克脂肪,6克碳水化合物,11克蛋白质)
  • 1/2杯全麦面食(200卡路里,1克脂肪,40克碳水化合物,8克蛋白质)

我的目标是消耗745卡路里,<= 20克脂肪,<= 80克碳水化合物,> = 40克蛋白质

我已经看到很多背包问题的实现,但我从未见过它有4个约束。我的问题是它是否可行。你能带我到我的程序的正确算法吗?谢谢。

1 个答案:

答案 0 :(得分:1)

这是基本的线性规划。您应该查看这些类型问题的解算器。在微软世界 - 解决方案基金会将解决这个问题。您也可以使用Excel解算器以交互方式查看它。

很多开源解决方案。如果您更喜欢自己编写代码并需要通用解决方案,请使用数组数学 - 您将解决不等式方程组。这样你就可以处理N个约束和Y变量。