一种智能化快速配餐方法

文档序号:6581742阅读:229来源:国知局
专利名称:一种智能化快速配餐方法
技术领域
本发明涉及餐饮业的电子点菜技术领域,特别是涉及一种智能化快速配餐方法。
背景技术
随着人们生活水平以及营养需求的提高,越来越多的人们开始注重营养搭配的问 题,由此对营养配餐提出了更高的要求。 现有技术中,餐饮业中传统的营养配餐方式为人工配餐,人工配餐需要服务员熟 记每个菜品,并且要熟知每个菜品中的营养成分及其含量,同时还要了解人体对热能、蛋白 质、矿物质、维生素等营养成分的需要,进而选择搭配菜品,进行合理的营养配餐。这种营 养配餐的方式对服务员提出了相当高的要求,需要经过严格的培训才可以满足需求。当顾 客给出一个欲消费的价格时,服务员需要花大量的时间去拼凑菜品组合,而且往往对推荐 的菜品组合的营养成分评价带有主观性,缺乏定量化的客观评价。再者,尤其是在用餐人数 多、用餐价格高的情况下,人工配餐就显得效率低下,且配餐质量不高,不能客观地对菜品 的营养成分进行评价,这种传统的营养配餐方式不能满足当前人们对饮食要求的营养化、 多样化、合理化的需求。

发明内容
基于现有技术的不足,本发明需要解决的问题是提供一种能够在合理的时限内 快速配出营养搭配相对合理的菜品的智能化快速配餐方法。 为解决上述问题,本发明提供了一种智能化快速配餐方法,其包括以下步骤
A、接收用户所输入的用餐人数以及用餐价格; B、将所述用餐人数划分为N个组,得到每组的用餐人数,并根据用户所输入的用 餐价格确定所述N个组中每组的配餐价格,对每组分别按照以下步骤进行配餐,其中,所述 N为大于等于l的整数; C、对数据库中所有菜品进行随机排序; D、设定营养配餐时限为T,设定配餐程序运行时限为Tmax,其中,Tmax > T ;
E、对所述步骤C中随机排序后的菜品,运用深度优先搜索算法,生成第一菜品组 合. F、判断当前时间点,当所述营养配餐时限T未到达时,执行步骤G,当所述营养配 餐时限T已到达时而所述配餐程序运行时限Tmax未到达时,执行步骤H,当所述配餐程序运 行时限Tmax已到达时,执行步骤I ; G、判断菜品组合是否同时满足第一约束条件和第二约束条件,若是,则结束配餐, 将该菜品组合输出;否则,进一步判断是否根据深度优先搜索算法已经生成完所有的菜品 组合,若是,则调整第一约束条件和/或第二约束条件,重新返回步骤E,否则,运用深度优 先搜索算法,生成下一个菜品组合,并返回步骤F ; H、判断菜品组合是否满足第二约束条件,若是,则结束配餐,将该菜品组合输出;否则,进一步判断是否根据深度优先搜索算法已经生成完所有的菜品组合,若是,则调整第 二约束条件,重新返回步骤E,否则,运用深度优先搜索算法,生成下一个菜品组合,并返回
步骤F ; 1、从所述步骤C中随机排序后的菜品中按顺序选取菜品组合并输出; 其中,所述第一约束条件为所述菜品组合的营养成分的营养评价分值总和大于
设定的第一阈值, 所述第二约束条件为所述菜品组合的价格落在每组的配餐价格允许的波动范围 内。 另,营养成分包括热量、水分、蛋白质、脂肪、糖类、纤维素、胡萝卜素、VA当量、视黄 醇当量、维生素B1、维生素B2、维生素PP、维生素E、胆固醇、钾、钠、钙、镁、铁、锰、锌、铜、磷、 硒、碳水化合物等,所述营养成分可以根据需要选取以上营养成分中的一种或者一种以上 作为约束条件。 进一步的,所述步骤A之后进一步包括步骤J:若接收到用户对输出的所述菜品组 合不满意的信息,则返回步骤A重新进行配餐。 进一步的,在所述步骤A和步骤B之间还包括以下步骤BO :判断用户所输入的用
餐价格是否在预置的合理价格区间内,若是,则不调整用户所输入的用餐价格,否则,调整
用户所输入的用餐价格。 进一步的,所述步骤B0具体包括 B01、计算数据库中所有菜品的价格总和,将计算的数据库中所有菜品的价格总和 标记为SUM,在所述数据库中的所有菜品中寻找价格最低的菜品,并将所述价格最低的菜品 的价格标记为MIN ;B02、所述预置的合理价格区间为[MIN, SUM]; B03、判断用户所输入的用餐价格是否在[MIN, SUM]内,若是,则不调整用户所输 入的用餐价格,否则,调整用户所输入的用餐价格,所述调整用户所输入的用餐价格的方法 为若接收到用户所输入的用餐价格大于SUM的信息,则将用户所输入的用餐价格调整为 SUM,若接收到用户所输入的用餐价格小于MIN的信息,则将用户所输入的用餐价格调整为 MIN。 进一步的,在所述步骤BO和步骤B之间还包括以下步骤BOO :判断由步骤BO获 取的用餐价格是否在消费价的合理波动范围内,若是,则不调整用户所输入的用餐人数,否 则,调整用户所输入的用餐人数。
进一步的,所述步骤B00具体包括 B001、根据用户所输入的用餐人数,计算所需配餐菜品的个数范围[a, b]; B002、根据所需配餐菜品的个数范围,计算所需配餐菜品的价格上限和所需配餐
菜品的价格下限,其中,所需配餐菜品的价格上限的计算方法为所有菜品中价格最高的b
个菜品的价格总和sumjiiax,所需配餐菜品的价格下限的计算方法为所有菜品中价格最
低的a个菜品的价格总和sum_min ; B003、计算所述消费价的合理波动范围 B003. 1、根据预置的历史消费记录数据库,计算所有菜品的平均价格以及历史人 均消费额;
B003. 2、设定参考价格为standard = Max(所有菜品的平均价格,历史人均消费 额),其中,Max为取最大值函数; B003. 3、计算所述消费价的合理波动范围为[Max(standard*用餐人数*0. 6, sum_min) , Min (standard*用餐人数/0. 6, sum_max)],其中,Max为取最大值函数,Min为取 最小值函数; B004、判断由步骤B0获取的用餐价格是否在所述消费价的合理波动范围内,若是 则不调整用户所输入的用餐人数,否则,调整用户所输入的用餐人数,其中,所述调整用户 所输入的用餐人数的方法为调整后的用餐人数为由步骤BO获取的用餐价格与所述参考 价格的比值。该比值经过取整处理。 进一步的,在所述步骤C之前还包括根据预置的历史消费记录数据库,获取所有 菜品中每个菜品的类别,以及各个类别的菜品的构成比例,标定0-100之间的随机数与菜 品的各个类别相对应; 所述步骤E中采用深度优先搜索算法,从所述步骤C中随机排序后的菜品中生成 菜品组合的过程中,利用随机生成的0-100之间的随机数的方法,确定下一步寻找的菜品 所属的类别,使得在寻找结果中,尽可能让生成的菜品组合中任意相邻的两个菜品所属的 类别不同。 进一步的,所述第一约束条件中的所述菜品组合的营养成分的营养评价分值总和
的计算方法为分别计算每一种营养成分的营养评价分值为10(^Min(所述菜品组合中的
该种营养成分总量/每组的用餐人数/人均每餐营养成分摄入标准量,1/(所述菜品组合中
的该种营养成分总量/每组的用餐人数/人均每餐营养成分摄入标准量)),再将所述菜品
组合的每一种营养成分的营养评价分值相加即为所述菜品组合的营养成分的营养评价分
值总和,其中,所述人均每餐营养成分摄入标准量为预先设置; 所述第二约束条件中的每组的配餐价格允许的波动范围的计算方法为 所述每组的配餐价格为所述用餐价格*每组的用餐人数/所述用餐人数; 所述每组的配餐价格允许的波动范围为[每组的配餐价格*(1_10% ),每组的配
餐价格/(1_10%)]。 另,所述允许的波动范围还可以为在所述每组配餐价格的基础上上下波动5%、 10%、15%、20%、25%、30%、35%、40%等。 进一步的,所述步骤G中调整第一约束条件的方法为减小第一阈值,调整第二约 束条件的方法为提高所述允许的波动范围的上限或者同时扩大所述允许的波动范围的上 限和下限, 所述步骤H中调整第二约束条件的方法为提高所述允许的波动范围的上限或者 同时扩大所述允许的波动范围的上限和下限。 本发明还提供了一种智能化快速配餐方法,其包括以下步骤
A、接收用户所输入的用餐人数以及用餐价格; B、将所述用餐人数划分为N个组,得到每组的用餐人数,并根据用户所输入的用 餐价格确定所述N个组中每组的配餐价格,对每组分别按照以下步骤进行配餐,其中,所述 N为大于等于l的整数; C、对数据库中所有菜品进行随机排序;
D、设定营养配餐时限为T,设定配餐程序运行时限为Tmax,其中,Tmax > T ;
E、对所述步骤C中随机排序后的菜品,运用深度优先搜索算法,生成第一菜品组 合. F、判断当前时间点,当所述营养配餐时限T未到达时,执行步骤G,当所述营养配 餐时限T已到达时而所述配餐程序运行时限Tmax未到达时,执行步骤H,当所述配餐程序运 行时限Tmax已到达时,执行步骤I ; G、判断菜品组合是否同时满足第一约束条件、第二约束条件和第三约束条件,若 是,则结束配餐,将该菜品组合输出;否则,进一步判断是否根据深度优先搜索算法已经生 成完所有的菜品组合,若是,则调整第一约束条件和/或第二约束条件,重新返回步骤E,否 则,运用深度优先搜索算法,生成下一个菜品组合,并返回步骤F ; H、判断菜品组合是否满足第二约束条件和第三约束条件,若是,则结束配餐,将该 菜品组合输出;否则,进一步判断是否根据深度优先搜索算法已经生成完所有的菜品组合, 若是,则调整第二约束条件,重新返回步骤E,否则,运用深度优先搜索算法,生成下一个菜 品组合,并返回步骤F; 1、从所述步骤C中随机排序后的菜品中按顺序选取菜品组合并输出;其中,所述 第一约束条件为所述菜品组合的营养成分的营养评价分值总和大于设定的第一阈值,
所述第二约束条件为所述菜品组合的价格落在每组的配餐价格允许的波动范围 内。 所述第三约束条件为所述菜品组合中菜品的酸碱度数据相加总和的绝对值小于 第二阈值,其中,所述菜品组合中菜品的酸碱度数据为预先设置。 本发明将用餐人数划分为N个组,并根据用户所输入的用餐价格确定每组的配餐 价格,对每组分别按照以下步骤进行配餐;对数据库中所有菜品进行随机排序;设定营养 配餐时限为T,设定配餐程序运行时限为Tmax ;对所述步骤C中随机排序后的菜品,运用深 度优先搜索算法,生成第一菜品组合;判断当前时间点,当所述营养配餐时限T未到达时, 判断菜品组合是否同时满足第一约束条件和第二约束条件,若是,则结束配餐,将该菜品组 合输出;否则,进一步判断是否根据深度优先搜索算法已经生成完所有的菜品组合,若是, 则调整第一约束条件和/或第二约束条件,重新返回步骤E,否则,运用深度优先搜索算法, 生成下一个菜品组合,并返回步骤F ;当所述营养配餐时限T已到达时而所述配餐程序运行 时限Tmax未到达时,判断菜品组合是否满足第二约束条件,若是,则结束配餐,将该菜品组 合输出;否则,进一步判断是否根据深度优先搜索算法已经生成完所有的菜品组合,若是, 则调整第二约束条件,重新返回步骤E,否则,运用深度优先搜索算法,生成下一个菜品组 合,并返回步骤F ;当所述配餐程序运行时限Tmax已到达时,从随机排序后的菜品中按顺序 选取菜品组合并输出。其中,所述第一约束条件为菜品组合的营养成分的营养评价分值总 和大于设定的第一阈值,第二约束条件为菜品组合的价格落在每组的配餐价格允许的波动 范围内。与现有技术相比,本发明能够在合理的时限内快速配出营养搭配相对合理的菜品 组合。而且本发明解决了尤其在用餐人数多以及用餐价格高的情况下进行营养配餐的问 题,采用了分组划分分别配餐的方法从而实现在合理的时间内快速生成营养搭配相对合理 的菜品组合。本发明还针对实际应用中出现的用户输入的用餐人数以及人均用餐价格极度 不合理的情况,提出了可行的调整方案。


利用附图对本发明作进一步说明,但附图中的实施例不构成对本发明的任何限 制。
图1为本发明一种智能化快速配餐方法在一个优选实施例中的方法流程图;
图2为本发明一种智能化快速配餐方法在另一个优选实施例中的方法流程图。
具体实施例方式
结合以下实施例对本发明作进一步描述
实施例一 本发明的一种智能化快速配餐方法的实施例一如图1所示,为本发明的一种方法 流程图。 具体的,一种智能化快速配餐方法,其包括以下步骤
步骤101、接收用户所输入的用餐人数以及用餐价格; 步骤102、将所述用餐人数划分为N个组,得到每组的用餐人数,并根据用户所输 入的用餐价格确定所述N个组中每组的配餐价格,对魅族、、每组分别按照以下步骤进行配 餐,其中,所述N为大于等于1的整数;这里的划分分组分为两种情况第一种情况为,用餐 人数比较少的情况下,可以设定N为l,即对所有用餐人数直接进行配餐,而无需划分分组; 第二种情况为,用餐人数比较多的情况下,可以根据需要设定N为大于1的整数,每组中的 用餐人数可以设定为相同的人数还可以设定为不同的人数。以下为一种划分分组的方法
(1)设定每次配餐的最小人数为NO(其中,NO > O),初始设定当前待配餐人数为 所述用户所输入的用餐人数; (2)判断当前待配餐人数是否为O,若是,则结束配餐;否则,执行步骤E04 ; (3)若当前待配餐人数大于等于N0*2,则设定该次配餐人数为NO ;若当前待配餐
人数小于N0*2,则设定该次配餐人数为当前待配餐人数; (4)计算下次待配餐人数=当前待配餐人数_该次配餐人数; (5)返回步骤(2)。依次循环,直至完成对所有用餐人数的配餐。 所述划分分组的方法还可以是预先将用餐人数按每组不同的用餐人数划分分组。 步骤103、对数据库中所有菜品进行随机排序;给每一个菜品标记不同的序号。 步骤104、设定营养配餐时限为T,设定配餐程序运行时限为Tmax,其中,Tmax >
T;设定营养配餐时限和配餐程序运行时限,是为了避免用户等待时间过长,可以再预定的
营养配餐时限和配餐程序运行时限内完成配餐,而且充分考虑到如果在设定营养配餐时限
为T内不能完成配餐的另行解决方法,扩大设定营养配餐时限T,设定配餐程序运行时限
Tmax,延长等待时限,保证可以完成配餐工作。该营养配餐时限和配餐程序运行时限的设定
可以根据人们一般情况下的心理接受的等待时间来设定。这里的时限也可以是设定为一个
时限,三个时限或者是三个时限以上,综合考虑各种情况,两个时限为较优选的方案。 步骤105、对所述步骤103中随机排序后的菜品,运用深度优先搜索算法,生成第
一菜品组合。 另,其中该菜品组合中菜品的个数可以根据用户所输入的 餐人数计算,如果分组后将时每组的用餐人数,假定用户所输入的用餐人数为(或者是每组的用餐人数)L,则 菜品组合中菜品的个数可以为L或者L+l或者L+2等,还可以是一个范围[a,b],其中a = N-l, b = N+2,还可以是其它的范围。 步骤106、判断当前时间点,当所述营养配餐时限T未到达时,执行步骤107,当所 述营养配餐时限T已到达时而所述配餐程序运行时限Tmax未到达时,执行步骤108,当所述 配餐程序运行时限Tmax已到达时,执行步骤109, 步骤107、判断菜品组合是否同时满足第一约束条件和第二约束条件,若是,则结 束配餐,将该菜品组合输出;否则,进一步判断是否根据深度优先搜索算法已经生成完所有 的菜品组合,若是,则调整第一约束条件和/或第二约束条件,重新返回步骤105,否则,运 用深度优先搜索算法,生成下一个菜品组合,并返回步骤106 ;这里的调整第一约束条件的 方法为减小第一阈值,调整第二约束条件的方法为提高所述允许的波动范围的上限或者同 时扩大所述允许的波动范围的上限和下限。 步骤108、判断菜品组合是否满足第二约束条件,若是,则结束配餐,将该菜品组合 输出;否则,进一步判断是否根据深度优先搜索算法已经生成完所有的菜品组合,若是,则 调整第二约束条件,重新返回步骤105,否则,运用深度优先搜索算法,生成下一个菜品组 合,并返回步骤106 ;其中,调整第二约束条件的方法为提高所述允许的波动范围的上限或 者同时扩大所述允许的波动范围的上限和下限。 步骤109、从所述步骤103中随机排序后的菜品中按顺序选取菜品组合并输出。该 菜品组合中菜品的个数的计算方式同上。 其中,所述约束条件包括第一约束条件和第二约束条件, 所述第一约束条件为所述菜品组合的营养成分的营养评价分值总和大于设定的 第一阈值, 另,营养成分包括热量、水分、蛋白质、脂肪、糖类、纤维素、胡萝卜素、VA当量、视黄 醇当量、维生素B1、维生素B2、维生素PP、维生素E、胆固醇、钾、钠、钙、镁、铁、锰、锌、铜、磷、 硒、碳水化合物等,所述营养成分可以根据需要选取以上营养成分中的一种或者一种以上 作为约束条件。 从以上列举的营养成分中选取,例如选取蛋白质、脂肪和热量三种,所述菜品组合 的营养成分的营养评价分值总和大于设定的第一阈值,即为所述菜品组合的蛋白质、脂肪 和热量的营养评价分值总和大于设定的第一阈值。 所述的第一阈值可以用以下方法计算得到ScoreGate = (1. 0_a*用餐人数/菜品 组合的个数^S ;其中,S是人为设定的,设定菜品的每种营养成分的营养评价分值满分为 100分,如果认为每种营养成分的营养评价分值为80分即满意的话,则蛋白质、脂肪和热量 三种营养评价分值的满分为300分,这里的S即为240 ;如果认为每种营养成分的营养评价 分值为90分即满意的话,则蛋白质、脂肪和热量三种营养评价分值的满分为300分,这里的 S即为270 ;S的选取可以根据需要进行调整。再者其中,a为系数,该系数a为正数,表示用 餐人数越多,阈值越小。优选的方案中a选取l。 所述第二约束条件为所述菜品组合的价格落在每组的配餐价格允许的波动范围 内;设定波动范围是为了在配餐失败时扩大这个波动范围,从而实现成功配餐的目的,该允 许的波动范围最大值不能超过40%。
配餐的整体思路为若在合理的营养配餐时限T内,根据深度优先搜索算法生成一 个菜品组合就判断一次,若找到同时满足第一约束条件和第二约束条件的菜品组合,则结 束配餐,输出该菜品组合;若根据深度优先搜索算法生成的所有的菜品组合都被判断完,都 无法找到同时满足第一约束条件和第二约束条件的菜品组合时,而且此时营养配餐时限T 还未到,优先调整第一约束条件,重新根据深度优先搜索算法从生成第一菜品组合开始,生 成一个菜品组合就判断一次,如果根据深度优先搜索算法生成的所有的菜品组合都被判断 完,根据调整后第一约束条件后还无法找到同时满足第一约束条件和第二约束条件的菜品 组合时,则调整第二约束条件寻求解,同上,直至营养配餐时限T到达;当营养配餐时限T已 到达时,则放弃第一约束条件的约束进行搜索,如果此时的配餐程序运行时限Tmax未到达 时,按照上述继续生成的菜品组合接着判断,如果根据深度优先搜索算法生成的所有的菜 品组合都被判断完,仍然无法找到满足第二约束条件的解时,调整第二约束条件,重新根据 深度优先搜索算法从生成第一菜品组合开始,生成一个菜品组合就判断一次,直至配餐程 序运行时限Tmax到达;如果配餐程序运行时限Tmax已到达,而仍找不到合理的解,则随机 的而且不重复的从步骤103中随机排序的菜品中按顺序选取菜品组合并输出,最终结束配 餐。 具体的,所述步骤101之后进一步包括步骤110 :若接收到用户对输出的所述菜品 组合不满意的信息,则返回步骤101重新进行配餐。本发明的智能化快速配餐方法是动态 地推荐,对于同样的约束条件,每次执行所产生菜品组合都是不同的,所以如果当用户对当 前生成的菜品组合不满意时,可以重新开始进行搜索。 具体的,在所述步骤101和步骤102之间还包括以下步骤200 :判断用户所输入的 用餐价格是否在预置的合理价格区间内,若是,则不调整用户所输入的用餐价格,否则,调 整用户所输入的用餐价格。设定步骤200是考虑到实际应用中有可能出现用户输入的用 餐价格极度不合理的情况,比如用户输入的用餐价格远远大于数据库中所有菜品的价格总 和,这种情况下,即使把数据库中所有的菜品输出也满足不了用户的需求,再比如用户输入 的用餐价格小于数据库中价格最低的菜品,这种情况下,即使把数据库中价格最低的菜品 输出也满足不了用户的需求,由此提出了对用户所输入的极度不合理的用餐价格进行调整 的方案。 具体的,所述步骤200具体包括 步骤201、计算数据库中所有菜品的价格总和,将计算的数据库中所有菜品的价格 总和标记为SUM,在所述数据库中的所有菜品中寻找价格最低的菜品,并将所述价格最低的 菜品的价格标记为MIN; 步骤202、所述预置的合理价格区间为[MIN, SUM]; 步骤203、判断用户所输入的用餐价格是否在[MIN, SUM]内,若是,则不调整用户 所输入的用餐价格,否则,调整用户所输入的用餐价格,所述调整用户所输入的用餐价格的 方法为若接收到用户所输入的用餐价格大于SUM的信息,则将用户所输入的用餐价格调 整为SUM,若接收到用户所输入的用餐价格小于MIN的信息,则将用户所输入的用餐价格调 整为MIN。 以上步骤200仅是最优选的方案,还可以包括其他的方法,比如可以人为设定一 个比较合理的范围,如果用户输入的用餐价格超过该合理范围的上限,则将用户输入的用
11餐价格调整为该范围的上限,如果用户输入的用餐价格低于该范围的下限,则将用户输入 的用餐价格调整为该范围的下限。 具体的,在所述步骤200和步骤102之间还包括以下步骤300 :判断由所述步骤 200获取的用餐价格是否在消费价的合理波动范围内,若是,则不调整用户所输入的用餐人 数,否则,调整用户所输入的用餐人数。设定步骤300是考虑到实际应用中有可能出现用户 输入的用餐价格与用餐人数的配比及人均用餐价格极度不合理的情况,由此提出了对用户 所输入的用餐人数进行调整的方案。
具体的,所述步骤300具体包括 步骤301、根据用户所输入的用餐人数,计算所需配餐菜品的个数范围为[a, b]; 其中,a为N-l, b为N+2,该配餐菜品的个数范围还可以是其他的计算方法,比如a为N_l, b为N+l ;a为N-2, b为N+2 ;a为N_2, b为N+3,还可以是其他形式的计算方法等等。
步骤302、根据所需配餐菜品的个数范围,计算所需配餐菜品的价格上限和所需配 餐菜品的价格下限,其中,所需配餐菜品的价格上限的计算方法为所有菜品中价格最高的 b个菜品的价格总和sumjiiax,所需配餐菜品的价格下限的计算方法为所有菜品中价格最 低的a个菜品的价格总和sum_min ;
步骤303、计算所述消费价的合理波动范围 步骤303. 1、根据预置的历史消费记录数据库,计算所有菜品的平均价格以及历史 人均消费额; 步骤303. 2、设定参考价格为standard = Max (所有菜品的平均价格,历史人均消 费额),其中,Max为取最大值函数; 步骤303. 3、计算所述消费价的合理波动范围为[Max (standard*用餐人数*0. 6, sum_min) , Min (standard*用餐人数/0. 6, sum_max)],其中,Max为取最大值函数,Min为取 最小值函数; 步骤304、判断由步骤200获取的用餐价格是否在所述消费价的合理波动范围内, 若是则不调整用户所输入的用餐人数,否则,调整用户所输入的用餐人数,其中,所述调整 用户所输入的用餐人数的方法为调整后的用餐人数为由步骤200获取的用餐价格与所述 参考价格的比值。该比值经过取整处理。 具体的,在所述步骤103之前还包括根据预置的历史消费记录数据库,获取所有 菜品中每个菜品的类别,以及各个类别的菜品的构成比例,标定0-100之间的随机数与菜 品的各个类别相对应; 所述步骤105中的采用深度优先搜索算法,从所述步骤103中随机排序后的菜品 中生成菜品组合的过程中,利用随机生成的0-100之间的随机数的方法,确定下一步寻找 的菜品所属的类别,使得在寻找结果中,尽可能让生成的菜品组合集中的每个菜品组合中 任意相邻的两个菜品所属的类别不同。 举例说明根据历史消费记录数据库,为所有菜品中的每一个菜品设定类别,可以 分为海鲜类、肉类、蔬菜类三个类别,获取各个类别的菜品的构成比例,假设在历史消费记 录数据库中,发现30%为海鲜类,40%为肉类,30%为蔬菜。
生成随机数rand(rand为大于0小于100的整数) 可规定若rand在0到30之间,这次搜索的目标菜类为海鲜类,若在30到70之间,搜索的目标菜类为肉类,若在70到100之间,搜索的目标菜类为蔬菜类。 深度优先搜索算法首先要建立如下有向图。将所有菜品中的每一个菜品均抽象成
有向图中的一个顶点。对于所有菜品中的任意两个菜品,如果,菜品a的编号大于菜品b的
编号,且菜品a所属的类别与菜品b所属的类别不同,则从菜品a所抽象成的顶点到菜品b
所抽象成的顶点连接一条有向边。 深度优先搜索算法的具体过程为设x是当前被访问顶点,在对x做过访问标记 后,选择一条从x出发的未检测过的边(x,y)。若发现顶点y已访问过,则重新选择另一条 从x出发的未检测过的边,否则沿边(x,y)到达未曾访问过的y,对y访问并将其标记为已 访问过;然后从y开始搜索,直到搜索完从y出发的所有路径,即访问完所有从y出发可达 的顶点之后,才回溯到顶点x,并且再选择一条从x出发的未检测过的边。上述过程直至从 x出发的所有边都已检测过为止。此时,若x不是源点,则回溯到在x之前被访问过的顶点; 否则图中所有和源点有路径相通的顶点(即从源点可达的所有顶点)都已被访问过,若图G 是连通图,则遍历过程结束,否则继续选择一个尚未被访问的顶点作为新源点,进行新的搜 索过程。 具体的,所述第一约束条件中的所述菜品组合的营养成分的营养评价分值总和的 计算方法为分别计算每一种营养成分的营养评价分值为10(^Min(所述菜品组合中的该 种营养成分总量/每组的用餐人数/人均每餐营养成分摄入标准量,1/(所述菜品组合中的 该种营养成分总量/每组的用餐人数/人均每餐营养成分摄入标准量)),再将所述菜品组 合的每一种营养成分的营养评价分值相加即为所述菜品组合的营养成分的营养评价分值 总和,其中,所述人均每餐营养成分摄入标准量为预先设置; 从以上列举的营养成分中选取,例如选取蛋白质、脂肪和热量三种,计算所有菜品 组合的蛋白质的营养评价分值Score (Protein)为100*Min(所述菜品组合中的蛋白质总 量/每组的用餐人数/人均每餐蛋白质摄入标准量,l/(所述菜品组合中的蛋白质总量/ 每组的用餐人数/人均每餐蛋白质摄入标准量));计算所有菜品组合的脂肪的营养评价 分值Score (Fat)为100*Min (所述菜品组合中的脂肪总量/每组的用餐人数/人均每餐 脂肪摄入标准量,l/(所述菜品组合中的脂肪总量/每组的用餐人数/人均每餐脂肪摄入 标准量));计算所有菜品组合的热量的营养评价分值Score (Heat)为100*Min(所述菜品 组合中的热量总量/每组的用餐人数/人均每餐热量摄入标准量,l/(所述菜品组合中的 热量总量/每组的用餐人数/人均每餐热量摄入标准量));再将所述菜品组合的蛋白质 的营养评价分值Score (Protein)、脂肪的营养评价分值Score (Fat)、热量的营养评价分值 Score (Heat)相加即为所述菜品组合的营养成分的营养评价分值总和。
所述第二约束条件中的每组的配餐价格允许的波动范围的计算方法为
所述每组的配餐价格=所述用餐价格*每组的用餐人数/所述用餐人数;
所述每组的配餐价格允许的波动范围为[每组的配餐价格*(1_10% ),每组的配 餐价格/(1_10%)]。 另,以上计算允许的波动范围仅为一种计算方法,还可以为允许的波动范围为 [每组的配餐价格* (i-io % ),每组的配餐价格* (1+10 % )]。 所述允许的波动范围还可以为在所述每组配餐价格的基础上上下波动5%、10%、 15%、20%、25%、30%、35%、40%等或者是40%之内的任意值。
实施例二 本发明的一种智能化快速配餐方法的实施例二如图2所示,为本发明的另一种方 法流程图。
具体的,一种智能化快速配餐方法,其还可以包括以下步骤
步骤101、接收用户所输入的用餐人数以及用餐价格; 步骤102、将所述用餐人数划分为N个组,得到每组的用餐人数,并根据用户所输 入的用餐价格确定所述N个组中每组的配餐价格,对每组分别按照以下步骤进行配餐,其 中,所述N为大于等于1的整数;这里的划分分组分为两种情况第一种情况为,用餐人数 比较少的情况下,可以设定N为l,即对所有用餐人数直接进行配餐,而无需划分分组;第二
种情况为,用餐人数比较多的情况下,可以根据需要设定N为大于1的整数,每组中的用餐
人数可以设定为相同的人数还可以设定为不同的人数。以下为一种划分分组的方法 (1)设定每次配餐的最小人数为NO(其中,NO > O),初始设定当前待配餐人数为 所述用户所输入的用餐人数; (2)判断当前待配餐人数是否为O,若是,则结束配餐;否则,执行步骤E04 ; (3)若当前待配餐人数大于等于柳*2,则设定该次配餐人数为NO ;若当前待配餐
人数小于N0*2,则设定该次配餐人数为当前待配餐人数; (4)计算下次待配餐人数=当前待配餐人数_该次配餐人数; (5)返回步骤(2)。依次循环,直至完成对所有用餐人数的配餐。 所述划分分组的方法还可以是预先将用餐人数按每组不同的用餐人数划分分组。 步骤103、对数据库中所有菜品进行随机排序;给每一个菜品标记不同的序号。 步骤104、设定营养配餐时限为T,设定配餐程序运行时限为Tmax,其中,Tmax >
T;设定营养配餐时限和配餐程序运行时限,是为了避免用户等待时间过长,可以再预定的
营养配餐时限和配餐程序运行时限内完成配餐,而且充分考虑到如果在设定营养配餐时限
为T内不能完成配餐的另行解决方法,扩大设定营养配餐时限T,设定配餐程序运行时限
Tmax,延长等待时限,保证可以完成配餐工作。该营养配餐时限和配餐程序运行时限的设定
可以根据人们一般情况下的心理接受的等待时间来设定。这里的时限也可以是设定为一个
时限,三个时限或者是三个时限以上,综合考虑各种情况,两个时限为较优选的方案。 步骤105、对所述步骤103中随机排序后的菜品,运用深度优先搜索算法,生成第
一菜品组合。 另,其中该菜品组合中菜品的个数可以根据用户所输入的用餐人数计算,如果分 组后将时每组的用餐人数,假定用户所输入的用餐人数为(或者是每组的用餐人数)L,则 菜品组合中菜品的个数可以为L或者L+l或者L+2等,还可以是一个范围[a,b],其中a = N-l, b = N+2,还可以是其它的范围。 步骤106、判断当前时间点,当所述营养配餐时限T未到达时,执行步骤107,当所 述营养配餐时限T已到达时而所述配餐程序运行时限Tmax未到达时,执行步骤108,当所述 配餐程序运行时限Tmax已到达时,执行步骤109, 步骤107、判断菜品组合是否同时满足第一约束条件和第二约束条件,若是,则结 束配餐,将该菜品组合输出;否则,进一步判断是否根据深度优先搜索算法已经生成完所有 的菜品组合,若是,则调整第一约束条件和/或第二约束条件,重新返回步骤105,否则,运用深度优先搜索算法,生成下一个菜品组合,并返回步骤106 ;这里的调整第一约束条件的 方法为减小第一阈值,调整第二约束条件的方法为提高所述允许的波动范围的上限或者同 时扩大所述允许的波动范围的上限和下限。 步骤108、判断菜品组合是否满足第二约束条件,若是,则结束配餐,将该菜品组合 输出;否则,进一步判断是否根据深度优先搜索算法已经生成完所有的菜品组合,若是,则 调整第二约束条件,重新返回步骤105,否则,运用深度优先搜索算法,生成下一个菜品组 合,并返回步骤106 ;其中,调整第二约束条件的方法为提高所述允许的波动范围的上限或 者同时扩大所述允许的波动范围的上限和下限。 步骤109、从所述步骤103中随机排序后的菜品中按顺序选取菜品组合并输出。该
菜品组合中菜品的个数的计算方法同上。
其中, 所述第一约束条件为所述菜品组合的营养成分的营养评价分值总和大于设定的 第一阈值, 另,营养成分包括热量、水分、蛋白质、脂肪、糖类、纤维素、胡萝卜素、VA当量、视黄 醇当量、维生素B1、维生素B2、维生素PP、维生素E、胆固醇、钾、钠、钙、镁、铁、锰、锌、铜、磷、 硒、碳水化合物等,所述营养成分可以根据需要选取以上营养成分中的一种或者一种以上 作为约束条件。 从以上列举的营养成分中选取,例如选取蛋白质、脂肪和热量三种,所述菜品组合 的营养成分的营养评价分值总和大于设定的第一阈值,即为所述菜品组合的蛋白质、脂肪 和热量的营养评价分值总和大于设定的第一阈值。 所述的第一阈值可以用以下方法计算得到ScoreGate = (1. 0_a*用餐人数/菜品 组合的个数^S ;其中,S是人为设定的,设定菜品的每种营养成分的营养评价分值满分为 100分,如果认为每种营养成分的营养评价分值为80分即满意的话,则蛋白质、脂肪和热量 三种营养评价分值的满分为300分,这里的S即为240 ;如果认为每种营养成分的营养评价 分值为90分即满意的话,则蛋白质、脂肪和热量三种营养评价分值的满分为300分,这里的 S即为270 ;S的选取可以根据需要进行调整。再者其中,a为系数,该系数a为正数,表示用 餐人数越多,阈值越小。优选的方案中a选取l。 所述第二约束条件为所述菜品组合的价格落在每组的配餐价格允许的波动范围 内;设定波动范围是为了在配餐失败时扩大这个波动范围,从而实现成功配餐的目的,该允 许的波动范围最大值不能超过40%。 所述第三约束条件为所述菜品组合中菜品的酸碱度数据相加总和的绝对值小于 第二阈值,其中,所述菜品组合中菜品的酸碱度数据为预先设置。具体的在数据库中菜品的 酸碱度数据存储方式为 若菜品为强酸性,从数据库中获取的酸碱度为_2 ; 若菜品为酸性,从数据库中获取的酸碱度为-1 ; 若菜品为中性,从数据库中获取的酸碱度为0 ; 若菜品为碱性,从数据库中获取的酸碱度为1 ; 若菜品为强酸性,从数据库中获取的酸碱度为2 ; 小于第二阈值,该第二阈值的确定可以根据具体的需要来预 设定。
配餐的整体思路为若在合理的营养配餐时限T内,根据深度优先搜索算法生成一 个菜品组合就判断一次,若找到同时满足第一约束条件、第二约束条件和第三约束条件的 菜品组合,则结束配餐,输出该菜品组合;若根据深度优先搜索算法生成的所有的菜品组 合都被判断完,都无法找到同时满足第一约束条件、第二约束条件和第三约束条件的菜品 组合时,而且此时营养配餐时限T还未到,优先调整第一约束条件,重新根据深度优先搜索 算法从生成第一菜品组合开始,生成一个菜品组合就判断一次,如果根据深度优先搜索算 法生成的所有的菜品组合都被判断完,根据调整后第一约束条件后还无法找到同时满足第 一约束条件、第二约束条件和第三约束条件的菜品组合时,则调整第二约束条件寻求解,同 上,直至营养配餐时限T到达;当营养配餐时限T已到达时,则放弃第一约束条件的约束 进行搜索,如果此时的配餐程序运行时限Tmax未到达时,按照上述继续生成的菜品组合接 着判断,如果根据深度优先搜索算法生成的所有的菜品组合都被判断完,仍然无法找到满 足第二约束条件和第三约束条件的解时,调整第二约束条件,重新根据深度优先搜索算法 从生成第一菜品组合开始,生成一个菜品组合就判断一次,直至配餐程序运行时限Tmax到 达;如果配餐程序运行时限Tmax已到达,而仍找不到合理的解,则随机的而且不重复的从 步骤103中随机排序的菜品中按顺序选取菜品组合并输出,最终结束配餐。
本发明可以应用在菜品的智能化快速配餐、商品的智能化快速团购推荐购买等各 种与本发明的方法相关的领域上。 最后应当说明的是,以上实施例仅用以说明本发明的技术方案,而非对本发明保 护范围的限制,尽管参照较佳实施例对本发明作了详细地说明,本领域的普通技术人员应 当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的实 质和范围。
权利要求
一种智能化快速配餐方法,其特征在于,包括以下步骤A、接收用户所输入的用餐人数以及用餐价格;B、将所述用餐人数划分为N个组,得到每组的用餐人数,并根据用户所输入的用餐价格确定所述N个组中每组的配餐价格,对每组分别按照以下步骤进行配餐,其中,所述N为大于等于1的整数;C、对数据库中所有菜品进行随机排序;D、设定营养配餐时限为T,设定配餐程序运行时限为Tmax,其中,Tmax>T;E、对所述步骤C中随机排序后的菜品,运用深度优先搜索算法,生成第一菜品组合;F、判断当前时间点,当所述营养配餐时限T未到达时,执行步骤G,当所述营养配餐时限T已到达时而所述配餐程序运行时限Tmax未到达时,执行步骤H,当所述配餐程序运行时限Tmax已到达时,执行步骤I;G、判断菜品组合是否同时满足第一约束条件和第二约束条件,若是,则结束配餐,将该菜品组合输出;否则,进一步判断是否根据深度优先搜索算法已经生成完所有的菜品组合,若是,则调整第一约束条件和/或第二约束条件,重新返回步骤E,否则,运用深度优先搜索算法,生成下一个菜品组合,并返回步骤F;H、判断菜品组合是否满足第二约束条件,若是,则结束配餐,将该菜品组合输出;否则,进一步判断是否根据深度优先搜索算法已经生成完所有的菜品组合,若是,则调整第二约束条件,重新返回步骤E,否则,运用深度优先搜索算法,生成下一个菜品组合,并返回步骤F;I、从所述步骤C中随机排序后的菜品中按顺序选取菜品组合并输出;其中,所述第一约束条件为所述菜品组合的营养成分的营养评价分值总和大于设定的第一阈值,所述第二约束条件为所述菜品组合的价格落在每组的配餐价格允许的波动范围内。
2. 根据权利要求1所述的智能化快速配餐方法,其特征在于,所述步骤A之后进一步 包括步骤J :若接收到用户对输出的所述菜品组合不满意的信息,则返回步骤A重新进行配 餐。
3. 根据权利要求2所述的智能化快速配餐方法,其特征在于,在所述步骤A和步骤B之间还包括以下步骤BO :判断用户所输入的用餐价格是否在预置的合理价格区间内,若是,则不调整用户所输入的用餐价格,否则,调整用户所输入的用餐价格。
4. 根据权利要求3所述的智能化快速配餐方法,其特征在于,所述步骤BO具体包括 B01、计算数据库中所有菜品的价格总和,将计算的数据库中所有菜品的价格总和标记为SUM,在所述数据库中的所有菜品中寻找价格最低的菜品,并将所述价格最低的菜品的价格标记为MIN ;B02、所述预置的合理价格区间为[MIN, SUM];B03、判断用户所输入的用餐价格是否在[MIN, SUM]内,若是,则不调整用户所输入的 用餐价格,否则,调整用户所输入的用餐价格,所述调整用户所输入的用餐价格的方法为 若接收到用户所输入的用餐价格大于SUM的信息,则将用户所输入的用餐价格调整为SUM, 若接收到用户所输入的用餐价格小于MIN的信息,则将用户所输入的用餐价格调整为MIN。
5. 根据权利要求4所述的智能化快速配餐方法,其特征在于,在所述步骤BO和步骤B之间还包括以下步骤BOO :判断由步骤B0获取的用餐价格是否在消费价的合理波动范围 内,若是,则不调整用户所输入的用餐人数,否则,调整用户所输入的用餐人数。
6. 根据权利要求5所述的智能化快速配餐方法,其特征在于,所述步骤BOO具体包括 B001、根据用户所输入的用餐人数,计算所需配餐菜品的个数范围[a,b]; B002、根据所需配餐菜品的个数范围,计算所需配餐菜品的价格上限和所需配餐菜品的价格下限,其中,所需配餐菜品的价格上限的计算方法为所有菜品中价格最高的b个菜 品的价格总和sumjiiax,所需配餐菜品的价格下限的计算方法为所有菜品中价格最低的a 个菜品的价格总和sum_min ;B003、计算所述消费价的合理波动范围B003. 1、根据预置的历史消费记录数据库,计算所有菜品的平均价格以及历史人均消 费额;B003.2、设定参考价格为standard 二Max(所有菜品的平均价格,历史人均消费额),其 中,Max为取最大值函数;B003. 3、计算所述消费价的合理波动范围为[Max(standard*用餐人数*0. 6, sum_ min) ,Min (standard*用餐人数/0. 6, sum_max)],其中,Max为取最大值函数,Min为取最小 值函数;B004、判断由步骤B0获取的用餐价格是否在所述消费价的合理波动范围内,若是则不 调整用户所输入的用餐人数,否则,调整用户所输入的用餐人数,其中,所述调整用户所输 入的用餐人数的方法为调整后的用餐人数为由步骤BO获取的用餐价格与所述参考价格 的比值。
7. 根据权利要求1所述的智能化快速配餐方法,其特征在于,在所述步骤C之前还包 括根据预置的历史消费记录数据库,获取所有菜品中每个菜品的类别,以及各个类别的菜 品的构成比例,标定0-100之间的随机数与菜品的各个类别相对应;所述步骤E中采用深度优先搜索算法,从所述步骤C中随机排序后的菜品中生成菜品 组合的过程中,利用随机生成的0-100之间的随机数的方法,确定下一步寻找的菜品所属 的类别,使得在寻找结果中,尽可能让生成的菜品组合中任意相邻的两个菜品所属的类别 不同。
8. 根据权利要求1所述的智能化快速配餐方法,其特征在于,所述第一约束条件中的所述菜品组合的营养成分的营养评价分值总和的计算方法为 分别计算每一种营养成分的营养评价分值为100*Min(所述菜品组合中的该种营养成分总量/每组的用餐人数/人均每餐营养成分摄入标准量,1/(所述菜品组合中的该种营养成分 总量/每组的用餐人数/人均每餐营养成分摄入标准量)),再将所述菜品组合的每一种营 养成分的营养评价分值相加即为所述菜品组合的营养成分的营养评价分值总和,其中,所 述人均每餐营养成分摄入标准量为预先设置;所述第二约束条件中的每组的配餐价格允许的波动范围的计算方法为 所述每组的配餐价格为所述用餐价格*每组的用餐人数/所述用餐人数; 所述每组的配餐价格允许的波动范围为[每组的配餐价格*(1_10%),每组的配餐价 格/(l-腦)]。
9. 根据权利要求1所述的智能化快速配餐方法,其特征在于,所述步骤G中调整第一约束条件的方法为减小第一阈值,调整第二约束条件的方法为提高所述允许的波动范围的上 限或者同时扩大所述允许的波动范围的上限和下限,所述步骤H中调整第二约束条件的方法为提高所述允许的波动范围的上限或者同时 扩大所述允许的波动范围的上限和下限。
10. —种智能化快速配餐方法,其特征在于,包括以下步骤A、 接收用户所输入的用餐人数以及用餐价格;B、 将所述用餐人数划分为N个组,得到每组的用餐人数,并根据用户所输入的用餐价 格确定所述N个组中每组的配餐价格,对每组分别按照以下步骤进行配餐,其中,所述N为 大于等于1的整数;C、 对数据库中所有菜品进行随机排序;D、 设定营养配餐时限为T,设定配餐程序运行时限为Tmax,其中,Tmax > T ;E、 对所述步骤C中随机排序后的菜品,运用深度优先搜索算法,生成第一菜品组合;F、 判断当前时间点,当所述营养配餐时限T未到达时,执行步骤G,当所述营养配餐时 限T已到达时而所述配餐程序运行时限Tmax未到达时,执行步骤H,当所述配餐程序运行时 限Tmax已到达时,执行步骤I ;G、 判断菜品组合是否同时满足第一约束条件、第二约束条件和第三约束条件,若是,则 结束配餐,将该菜品组合输出;否则,进一步判断是否根据深度优先搜索算法已经生成完所 有的菜品组合,若是,则调整第一约束条件和/或第二约束条件,重新返回步骤E,否则,运 用深度优先搜索算法,生成下一个菜品组合,并返回步骤F ;H、 判断菜品组合是否满足第二约束条件和第三约束条件,若是,则结束配餐,将该菜品 组合输出;否则,进一步判断是否根据深度优先搜索算法已经生成完所有的菜品组合,若 是,则调整第二约束条件,重新返回步骤E,否则,运用深度优先搜索算法,生成下一个菜品 组合,并返回步骤F;I、 从所述步骤C中随机排序后的菜品中按顺序选取菜品组合并输出;其中,所述第一约束条件为所述菜品组合的营养成分的营养评价分值总和大于设定的第一阈值,所述第二约束条件为所述菜品组合的价格落在每组的配餐价格允许的波动范围内。 所述第三约束条件为所述菜品组合中菜品的酸碱度数据相加总和的绝对值小于第二 阈值,其中,所述菜品组合中菜品的酸碱度数据为预先设置。
全文摘要
一种智能化快速配餐方法,包括将用餐人数划分为N个组并确定每组的配餐价格,对每组分别按照以下步骤进行配餐;对所有菜品进行随机排序;设定营养配餐时限T和配餐程序运行时限Tmax;运用深度优先搜索算法,生成第一菜品组合;判断当前时间点,当T未到,判断菜品组合是否同时满足第一和第二约束条件,将符合条件的菜品组合输出,结束配餐;当T已到而Tmax未到,判断菜品组合是否满足第二约束条件,将符合条件的菜品组合输出,结束配餐;当Tmax已到,从随机排序后的菜品中按顺序选取菜品组合并输出。本发明对没有符合条件的菜品组合输出时,采用调整约束条件的方法进行调整。本发明与现有技术相比,能够在合理时限内快速配出营养搭配相对合理的菜品。
文档编号G06F19/00GK101702189SQ20091019355
公开日2010年5月5日 申请日期2009年11月2日 优先权日2009年11月2日
发明者祁亨年, 谢文修, 马文科 申请人:广东开心信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1