python – 膳食计划算法?

假设我有一个食物数据库,每个都含有一定量的脂肪,碳水化合物和蛋白质.例如,假设我有这个数据库:

Item          Fat         Carbs         Protein
================================================
Milk           12           36             8
Chicken         1           12            18
Juice           0           50             2
Bacon           9            1             4

什么是一个有效的算法,看看这些食物的哪些组合适合一定范围的所需脂肪,碳水化合物和蛋白质,每个项目可以多次使用?

就像我想要一个在脂肪范围内的组合:20-30,碳水化合物:170-190,蛋白质:100-110,那么2个牛奶,5个鸡,1个果汁和0个培根将是一种可能的解决方案,如同0牛奶,5只鸡,2种果汁和2种培根.

如果算法一旦遇到可能的解决方案就停止了也没关系,但是我希望它不是一个确定性的算法,所以下次运行时可能会找到不同的解决方案.

这个问题听起来像NP难问题,如子集和问题或背包问题,我已经研究了那些算法,但我不理解多约束问题的算法.背包问题也在优化,而这里没有优化.

我认为如果数据库中有更多项目,这个问题会更加困难,如果解决方案不限于整数(如0.2 Milks),则更容易(找到符合约束的单个解决方案).

我打算在Python中加入这样的东西,所以Python的解决方案将不胜感激,谢谢.

最佳答案 如果数学编程暂时难以开始,也许从
stochastic hill climber开始.

您描述的这个问题让人联想到混合问题. Here’s我在MiniZinc找到了一个解决方案(玩具示例).

点赞