组合优化,其中必须满足几个标准

时间:2013-04-17 17:46:13

标签: c# algorithm

我们是一群学习计算机科学的一年级学生。

我们正在开展一个名为“电子饮食计划”(直接翻译)的项目

我们希望在C#中制作一个每周基本计算一个满足某些标准的饮食计划:

您的每日能量摄入不应超过计算的卡路里需求。 (例如,如果我们计算一个人每天应该摄入2000卡路里,那么饮食计划应该计划大约2000卡路里)

每日能量(卡路里)应按如下方式分配:

  • 脂肪25-35%
  • 碳水化合物50-60%
  • 蛋白质10-20%

我们有一个食物的“数据库”,它含有多少脂肪,碳水化合物和蛋白质+大概的价格。 我们有一个带有收件人的“数据库”以及烹饪它需要多长时间。

SO:我们想制定一个计划,每周基本计算一个良好的饮食计划,满足每日能量需求(以及它应如何分配(脂肪,碳水化合物,蛋白质))。该计划还应该制定一个不需要的饮食计划 很多时间而且费用不高(用户定义价格pr。周的上限)。

SO ..我们希望帮助找到一种方法/算法,每天可以组合3-6道菜,满足这个^^ 我们一直在研究很多组合优化算法/问题,但主要是“背包问题”。

但这些算法/问题只满足一个标准或试图找到“最便宜”的解决方案。 - >我们想要满足很多标准,并希望找到最好的解决方案(不是最便宜的..例如,脂肪必须在25-35%之间,而不仅仅是最低值)

我们希望你们中的一些人可以帮助我们提供一个好的算法。

1 个答案:

答案 0 :(得分:3)

当谈到找到“最便宜”的解决方案而不是“最好的”解决方案时,你只需要重新定义“便宜”。

在优化理论中,人们经常提到成本函数,这是最小化的 - 在你的情况下,“成本”可能是“脂肪百分点差异从30%”,即吃30%脂肪没有任何成本,同样多吃20%为40%。当然,为了使这种方法更加复杂,你可以权衡它,因此吃太多脂肪比吃太多更“昂贵”。

现在,如果你为每个标准创造成本,你也必须权衡它们,正如mellamokb在评论中指出的那样;为此,只需计算加权总成本。你最终会得到以下内容:

  

饮食成本=(价格的重要性)*价格+(时间的重要性)*时间+(脂肪的重要性)*(偏离脂肪目标)+等...

如果您想要超出预算(花钱),您可以添加像 over budget ? infinity : 0使算法在预算范围内找到解决方案。你也可以限制重复进餐等 - 这或多或少都是你设定极限的想象力(和计算能力)。

现在您已经有了成本函数,您可以开始研究解决问题的方法:最大限度地降低饮食成本。而且突然所有那些找到“最便宜”解决方案的算法都有意义......;)


请注意,制定此成本函数通常是困难的部分。根据您如何权衡您的成本,您将找到解决问题的非常不同的解决方案;并非所有这些都有用(实际上大部分都可能不会)。