【问题标题】:Algorithm for planning a meal计划用餐的算法
【发布时间】:2015-03-10 19:47:17
【问题描述】:

我在想出一个生成膳食计划的算法时遇到了麻烦。问题涉及根据营养需求(碳水化合物、脂肪、蛋白质等)提出不同数量的食物。食品项目需要从少量项目(

A_g*a_p + B_g*b_p + C_g*c_p = Prt A_g*a_c + B_g*b_c + C_g*c_c = Crb A_g*a_f + B_g*b_f + C_g*c_f = Ft

其中 A_g、B_g 和 C_g 是每种食品的克数,a_p...b_c...c_f 表示每种食品中 1 克蛋白质、碳水化合物和脂肪的克数。这里的问题是,大多数时候不可能满足给定的要求,只需要最接近给定要求的最佳解决方案。总体目标是减少实际营养需求与算法计算的需求之间的差异。我研究过线性规划,但我看到的大多数问题都涉及使用一组约束最小化/最大化给定函数。我将非常感谢解决这个问题的任何帮助。

谢谢

【问题讨论】:

  • “最接近给定要求”是什么意思?任何可计算的方法都必须有一个定义明确的函数来最小化或最大化。我可以推荐一些函数,但在提出算法之前你必须了解你的领域
  • 对于少量项目,你可以尝试所有组合,时间复杂度为O(2^n),其中n为项目数。
  • 抱歉@JuanLopes 含糊不清。我的意思是该算法不一定要与确切的营养需求相匹配。目标是减少实际需求与算法产生的误差之间的误差。即最小化函数 (Prt - Prt_a)^2 + (Crb - Crb_a)^2 + (Ft - Ft_a) ^2 其中Prt_a, crb_a 和 Ft_a 是算法计算出来的养分量。
  • @PhamTrung 这意味着问题是二进制的。考虑到营养成分和营养需求,我必须想出每种食物的离散量。
  • 我明白了,Crb、Prt 和 Ft 的限制如何?如果它很小,您可以使用这种状态的动态规划 dp[index][Crb][Prt][Ft]

标签: algorithm search optimization dynamic-programming linear-programming


【解决方案1】:

假设您被允许拥有分数克的食物,您可以通过分析解决这个问题,详情请参阅http://en.wikipedia.org/wiki/Linear_least_squares_%28mathematics%29

您有一个额外的隐含约束,即任何食物都不能以负数存在。因此,如果食物出现负数,您将需要尝试不同的食物子集以找到可能的答案,然后选择最好的。

如果你不能吃少量的食物,那么这个问题就会变得更加困难。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多