我们是一群学计算机科学的一年级学生.
我们正在进行一个名为“电子饮食计划”的项目(直接翻译)。
我们想在C#中制定一个计划,在每周的基础上,计算一个饮食计划,以满足一些标准:
你每天的能量摄入量不应超过计算出的热量需求。(例如如果我们计算一个人每天应该摄入2000卡路里,那么饮食计划应该计划大约2000卡路里)
每日能量(卡路里)应按以下方式分配:
我们有一个“数据库”,里面有食物和它含有多少脂肪、碳水化合物和蛋白质+大概的价格。我们有一个包含食谱和烹饪时间的“数据库”。
因此:我们想制定一个计划,每周基本计算一个好的饮食计划,以满足日常能源需求(以及它应该如何分配(脂肪,碳水化合物,蛋白质))。该程序还应该规划一个饮食计划,不需要花费很多时间,也不需要花费太多(用户定义价格的上限)。一周)。
所以..。我们需要帮助找到一种方法/算法,每天可以组合3-6道菜,满足这一要求。我们一直在研究许多组合优化算法/问题,但大多是“背包问题”。
但是这些算法/问题仅仅是满足一个准则或试图找到“最便宜”的解。->我们想要满足很多的条件,想要找到最好的解决方案(不是最便宜的)。例如。脂肪必须在25-35%之间,而不仅仅是最低值)
我们希望你们中的一些人能帮助我们找到一个好的算法。
发布于 2013-04-17 19:46:03
当说到找到“最便宜”的解决方案而不是“最好的”时,你只需要重新定义“便宜”。
在最优化理论中,人们经常提到成本函数,这是要最小化的--在你的例子中,“成本”可以是“30%与30%之间的脂肪百分比差”,也就是说,吃30%的脂肪不需要花费任何费用,吃20%和40%的成本也是一样的。当然,为了使这个方法更复杂,你可以称它的重量,这样吃太多的脂肪比吃太少的脂肪更“昂贵”。
现在,如果您为每个标准创建成本,您还必须对它们进行权衡,就像mellamokb在一条评论中指出的那样;要做到这一点,只需计算加权的总成本。最后,您将得到如下内容:
饮食成本=(价格的重要性)*价格+(时间的重要性)*时间+(脂肪的重要性)*(偏离脂肪目标)+等等。
如果你想使预算不可能超出预算(用钱),你可以加上如下的条件
使over budget ? infinity : 0算法在预算内找到解决方案。你也可以限制重复吃饭等--或多或少是你的想象力(和计算能力)决定了这个限度。
既然你有了成本函数,你就可以开始着手解决这个问题:将饮食成本降到最低。突然间,所有那些寻找“最便宜”解决方案的算法都有了意义.;)
请注意,制定此成本函数通常是困难的部分。根据您权衡成本的方法,您会找到非常不同的解决方案;并不是所有的解决方案都是有用的(事实上,大多数解决方案可能不会有用)。
https://stackoverflow.com/questions/16066698
复制相似问题