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找到了一个解决方案(玩具示例).
标签:python,algorithm,knapsack-problem,subset-sum 来源: https://codeday.me/bug/20190703/1363559.html