【发布时间】: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