一种智能化快速配餐方法转让专利

申请号 : CN200910193556.6

文献号 : CN101702189A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 谢文修祁亨年马文科

申请人 : 广东开心信息技术有限公司

摘要 :

一种智能化快速配餐方法,包括:将用餐人数划分为N个组并确定每组的配餐价格,对每组分别按照以下步骤进行配餐;对所有菜品进行随机排序;设定营养配餐时限T和配餐程序运行时限Tmax;运用深度优先搜索算法,生成第一菜品组合;判断当前时间点,当T未到,判断菜品组合是否同时满足第一和第二约束条件,将符合条件的菜品组合输出,结束配餐;当T已到而Tmax未到,判断菜品组合是否满足第二约束条件,将符合条件的菜品组合输出,结束配餐;当Tmax已到,从随机排序后的菜品中按顺序选取菜品组合并输出。本发明对没有符合条件的菜品组合输出时,采用调整约束条件的方法进行调整。本发明与现有技术相比,能够在合理时限内快速配出营养搭配相对合理的菜品。

权利要求 :

1.一种智能化快速配餐方法,其特征在于,包括以下步骤:

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之间还包括以下步骤B0:判断用户所输入的用餐价格是否在预置的合理价格区间内,若是,则不调整用户所输入的用餐价格,否则,调整用户所输入的用餐价格。

4.根据权利要求3所述的智能化快速配餐方法,其特征在于,所述步骤B0具体包括:B01、计算数据库中所有菜品的价格总和,将计算的数据库中所有菜品的价格总和标记为SUM,在所述数据库中的所有菜品中寻找价格最低的菜品,并将所述价格最低的菜品的价格标记为MIN;

B02、所述预置的合理价格区间为[MIN,SUM];

B03、判断用户所输入的用餐价格是否在[MIN,SUM]内,若是,则不调整用户所输入的用餐价格,否则,调整用户所输入的用餐价格,所述调整用户所输入的用餐价格的方法为:若接收到用户所输入的用餐价格大于SUM的信息,则将用户所输入的用餐价格调整为SUM,若接收到用户所输入的用餐价格小于MIN的信息,则将用户所输入的用餐价格调整为MIN。

5.根据权利要求4所述的智能化快速配餐方法,其特征在于,在所述步骤B0和步骤B之间还包括以下步骤B00:判断由步骤B0获取的用餐价格是否在消费价的合理波动范围内,若是,则不调整用户所输入的用餐人数,否则,调整用户所输入的用餐人数。

6.根据权利要求5所述的智能化快速配餐方法,其特征在于,所述步骤B00具体包括:B001、根据用户所输入的用餐人数,计算所需配餐菜品的个数范围[a,b];

B002、根据所需配餐菜品的个数范围,计算所需配餐菜品的价格上限和所需配餐菜品的价格下限,其中,所需配餐菜品的价格上限的计算方法为:所有菜品中价格最高的b个菜品的价格总和sum_max,所需配餐菜品的价格下限的计算方法为:所有菜品中价格最低的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获取的用餐价格是否在所述消费价的合理波动范围内,若是则不调整用户所输入的用餐人数,否则,调整用户所输入的用餐人数,其中,所述调整用户所输入的用餐人数的方法为:调整后的用餐人数为由步骤B0获取的用餐价格与所述参考价格的比值。

7.根据权利要求1所述的智能化快速配餐方法,其特征在于,在所述步骤C之前还包括:根据预置的历史消费记录数据库,获取所有菜品中每个菜品的类别,以及各个类别的菜品的构成比例,标定0-100之间的随机数与菜品的各个类别相对应;

所述步骤E中采用深度优先搜索算法,从所述步骤C中随机排序后的菜品中生成菜品组合的过程中,利用随机生成的0-100之间的随机数的方法,确定下一步寻找的菜品所属的类别,使得在寻找结果中,尽可能让生成的菜品组合中任意相邻的两个菜品所属的类别不同。

8.根据权利要求1所述的智能化快速配餐方法,其特征在于,

所述第一约束条件中的所述菜品组合的营养成分的营养评价分值总和的计算方法为:分别计算每一种营养成分的营养评价分值为100*Min(所述菜品组合中的该种营养成分总量/每组的用餐人数/人均每餐营养成分摄入标准量,1/(所述菜品组合中的该种营养成分总量/每组的用餐人数/人均每餐营养成分摄入标准量)),再将所述菜品组合的每一种营养成分的营养评价分值相加即为所述菜品组合的营养成分的营养评价分值总和,其中,所述人均每餐营养成分摄入标准量为预先设置;

所述第二约束条件中的每组的配餐价格允许的波动范围的计算方法为:

所述每组的配餐价格为所述用餐价格*每组的用餐人数/所述用餐人数;

所述每组的配餐价格允许的波动范围为[每组的配餐价格*(1-10%),每组的配餐价格/(1-10%)]。

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中随机排序后的菜品中按顺序选取菜品组合并输出;

其中,所述第一约束条件为:所述菜品组合的营养成分的营养评价分值总和大于设定的第一阈值,所述第二约束条件为:所述菜品组合的价格落在每组的配餐价格允许的波动范围内。

所述第三约束条件为:所述菜品组合中菜品的酸碱度数据相加总和的绝对值小于第二阈值,其中,所述菜品组合中菜品的酸碱度数据为预先设置。

说明书 :

技术领域

本发明涉及餐饮业的电子点菜技术领域,特别是涉及一种智能化快速配餐方法。

背景技术

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

发明内容

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

附图说明

利用附图对本发明作进一步说明,但附图中的实施例不构成对本发明的任何限制。
图1为本发明一种智能化快速配餐方法在一个优选实施例中的方法流程图;
图2为本发明一种智能化快速配餐方法在另一个优选实施例中的方法流程图。

具体实施方式

结合以下实施例对本发明作进一步描述:
实施例一:
本发明的一种智能化快速配餐方法的实施例一如图1所示,为本发明的一种方法流程图。
具体的,一种智能化快速配餐方法,其包括以下步骤:
步骤101、接收用户所输入的用餐人数以及用餐价格;
步骤102、将所述用餐人数划分为N个组,得到每组的用餐人数,并根据用户所输入的用餐价格确定所述N个组中每组的配餐价格,对魅族、、每组分别按照以下步骤进行配餐,其中,所述N为大于等于1的整数;这里的划分分组分为两种情况:第一种情况为,用餐人数比较少的情况下,可以设定N为1,即对所有用餐人数直接进行配餐,而无需划分分组;第二种情况为,用餐人数比较多的情况下,可以根据需要设定N为大于1的整数,每组中的用餐人数可以设定为相同的人数还可以设定为不同的人数。以下为一种划分分组的方法:
(1)设定每次配餐的最小人数为N0(其中,N0>0),初始设定当前待配餐人数为所述用户所输入的用餐人数;
(2)判断当前待配餐人数是否为0,若是,则结束配餐;否则,执行步骤E04;
(3)若当前待配餐人数大于等于N0*2,则设定该次配餐人数为N0;若当前待配餐人数小于N0*2,则设定该次配餐人数为当前待配餐人数;
(4)计算下次待配餐人数=当前待配餐人数-该次配餐人数;
(5)返回步骤(2)。依次循环,直至完成对所有用餐人数的配餐。
所述划分分组的方法还可以是预先将用餐人数按每组不同的用餐人数划分分组。
步骤103、对数据库中所有菜品进行随机排序;给每一个菜品标记不同的序号。
步骤104、设定营养配餐时限为T,设定配餐程序运行时限为Tmax,其中,Tmax>T;设定营养配餐时限和配餐程序运行时限,是为了避免用户等待时间过长,可以再预定的营养配餐时限和配餐程序运行时限内完成配餐,而且充分考虑到如果在设定营养配餐时限为T内不能完成配餐的另行解决方法,扩大设定营养配餐时限T,设定配餐程序运行时限Tmax,延长等待时限,保证可以完成配餐工作。该营养配餐时限和配餐程序运行时限的设定可以根据人们一般情况下的心理接受的等待时间来设定。这里的时限也可以是设定为一个时限,三个时限或者是三个时限以上,综合考虑各种情况,两个时限为较优选的方案。
步骤105、对所述步骤103中随机排序后的菜品,运用深度优先搜索算法,生成第一菜品组合。
另,其中该菜品组合中菜品的个数可以根据用户所输入的用餐人数计算,如果分组后将时每组的用餐人数,假定用户所输入的用餐人数为(或者是每组的用餐人数)L,则菜品组合中菜品的个数可以为L或者L+1或者L+2等,还可以是一个范围[a,b],其中a=N-1,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选取1。
所述第二约束条件为:所述菜品组合的价格落在每组的配餐价格允许的波动范围内;设定波动范围是为了在配餐失败时扩大这个波动范围,从而实现成功配餐的目的,该允许的波动范围最大值不能超过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仅是最优选的方案,还可以包括其他的方法,比如:可以人为设定一个比较合理的范围,如果用户输入的用餐价格超过该合理范围的上限,则将用户输入的用餐价格调整为该范围的上限,如果用户输入的用餐价格低于该范围的下限,则将用户输入的用餐价格调整为该范围的下限。
具体的,在所述步骤200和步骤102之间还包括以下步骤300:判断由所述步骤200获取的用餐价格是否在消费价的合理波动范围内,若是,则不调整用户所输入的用餐人数,否则,调整用户所输入的用餐人数。设定步骤300是考虑到实际应用中有可能出现用户输入的用餐价格与用餐人数的配比及人均用餐价格极度不合理的情况,由此提出了对用户所输入的用餐人数进行调整的方案。
具体的,所述步骤300具体包括:
步骤301、根据用户所输入的用餐人数,计算所需配餐菜品的个数范围为[a,b];其中,a为N-1,b为N+2,该配餐菜品的个数范围还可以是其他的计算方法,比如a为N-1,b为N+1;a为N-2,b为N+2;a为N-2,b为N+3,还可以是其他形式的计算方法等等。
步骤302、根据所需配餐菜品的个数范围,计算所需配餐菜品的价格上限和所需配餐菜品的价格下限,其中,所需配餐菜品的价格上限的计算方法为:所有菜品中价格最高的b个菜品的价格总和sum_max,所需配餐菜品的价格下限的计算方法为:所有菜品中价格最低的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是连通图,则遍历过程结束,否则继续选择一个尚未被访问的顶点作为新源点,进行新的搜索过程。
具体的,所述第一约束条件中的所述菜品组合的营养成分的营养评价分值总和的计算方法为:分别计算每一种营养成分的营养评价分值为100*Min(所述菜品组合中的该种营养成分总量/每组的用餐人数/人均每餐营养成分摄入标准量,1/(所述菜品组合中的该种营养成分总量/每组的用餐人数/人均每餐营养成分摄入标准量)),再将所述菜品组合的每一种营养成分的营养评价分值相加即为所述菜品组合的营养成分的营养评价分值总和,其中,所述人均每餐营养成分摄入标准量为预先设置;
从以上列举的营养成分中选取,例如选取蛋白质、脂肪和热量三种,计算所有菜品组合的蛋白质的营养评价分值Score(Protein)为:100*Min(所述菜品组合中的蛋白质总量/每组的用餐人数/人均每餐蛋白质摄入标准量,1/(所述菜品组合中的蛋白质总量/每组的用餐人数/人均每餐蛋白质摄入标准量));计算所有菜品组合的脂肪的营养评价分值Score(Fat)为:100*Min(所述菜品组合中的脂肪总量/每组的用餐人数/人均每餐脂肪摄入标准量,1/(所述菜品组合中的脂肪总量/每组的用餐人数/人均每餐脂肪摄入标准量));计算所有菜品组合的热量的营养评价分值Score(Heat)为:100*Min(所述菜品组合中的热量总量/每组的用餐人数/人均每餐热量摄入标准量,1/(所述菜品组合中的热量总量/每组的用餐人数/人均每餐热量摄入标准量));再将所述菜品组合的蛋白质的营养评价分值Score(Protein)、脂肪的营养评价分值Score(Fat)、热量的营养评价分值Score(Heat)相加即为所述菜品组合的营养成分的营养评价分值总和。
所述第二约束条件中的每组的配餐价格允许的波动范围的计算方法为:
所述每组的配餐价格=所述用餐价格*每组的用餐人数/所述用餐人数;
所述每组的配餐价格允许的波动范围为[每组的配餐价格*(1-10%),每组的配餐价格/(1-10%)]。
另,以上计算允许的波动范围仅为一种计算方法,还可以为允许的波动范围为[每组的配餐价格*(1-10%),每组的配餐价格*(1+10%)]。
所述允许的波动范围还可以为在所述每组配餐价格的基础上上下波动5%、10%、15%、20%、25%、30%、35%、40%等或者是40%之内的任意值。
实施例二:
本发明的一种智能化快速配餐方法的实施例二如图2所示,为本发明的另一种方法流程图。
具体的,一种智能化快速配餐方法,其还可以包括以下步骤:
步骤101、接收用户所输入的用餐人数以及用餐价格;
步骤102、将所述用餐人数划分为N个组,得到每组的用餐人数,并根据用户所输入的用餐价格确定所述N个组中每组的配餐价格,对每组分别按照以下步骤进行配餐,其中,所述N为大于等于1的整数;这里的划分分组分为两种情况:第一种情况为,用餐人数比较少的情况下,可以设定N为1,即对所有用餐人数直接进行配餐,而无需划分分组;第二种情况为,用餐人数比较多的情况下,可以根据需要设定N为大于1的整数,每组中的用餐人数可以设定为相同的人数还可以设定为不同的人数。以下为一种划分分组的方法:
(1)设定每次配餐的最小人数为N0(其中,N0>0),初始设定当前待配餐人数为所述用户所输入的用餐人数;
(2)判断当前待配餐人数是否为0,若是,则结束配餐;否则,执行步骤E04;
(3)若当前待配餐人数大于等于N0*2,则设定该次配餐人数为N0;若当前待配餐人数小于N0*2,则设定该次配餐人数为当前待配餐人数;
(4)计算下次待配餐人数=当前待配餐人数-该次配餐人数;
(5)返回步骤(2)。依次循环,直至完成对所有用餐人数的配餐。
所述划分分组的方法还可以是预先将用餐人数按每组不同的用餐人数划分分组。
步骤103、对数据库中所有菜品进行随机排序;给每一个菜品标记不同的序号。
步骤104、设定营养配餐时限为T,设定配餐程序运行时限为Tmax,其中,Tmax>T;设定营养配餐时限和配餐程序运行时限,是为了避免用户等待时间过长,可以再预定的营养配餐时限和配餐程序运行时限内完成配餐,而且充分考虑到如果在设定营养配餐时限为T内不能完成配餐的另行解决方法,扩大设定营养配餐时限T,设定配餐程序运行时限Tmax,延长等待时限,保证可以完成配餐工作。该营养配餐时限和配餐程序运行时限的设定可以根据人们一般情况下的心理接受的等待时间来设定。这里的时限也可以是设定为一个时限,三个时限或者是三个时限以上,综合考虑各种情况,两个时限为较优选的方案。
步骤105、对所述步骤103中随机排序后的菜品,运用深度优先搜索算法,生成第一菜品组合。
另,其中该菜品组合中菜品的个数可以根据用户所输入的用餐人数计算,如果分组后将时每组的用餐人数,假定用户所输入的用餐人数为(或者是每组的用餐人数)L,则菜品组合中菜品的个数可以为L或者L+1或者L+2等,还可以是一个范围[a,b],其中a=N-1,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选取1。
所述第二约束条件为:所述菜品组合的价格落在每组的配餐价格允许的波动范围内;设定波动范围是为了在配餐失败时扩大这个波动范围,从而实现成功配餐的目的,该允许的波动范围最大值不能超过40%。
所述第三约束条件为:所述菜品组合中菜品的酸碱度数据相加总和的绝对值小于第二阈值,其中,所述菜品组合中菜品的酸碱度数据为预先设置。具体的在数据库中菜品的酸碱度数据存储方式为:
若菜品为强酸性,从数据库中获取的酸碱度为-2;
若菜品为酸性,从数据库中获取的酸碱度为-1;
若菜品为中性,从数据库中获取的酸碱度为0;
若菜品为碱性,从数据库中获取的酸碱度为1;
若菜品为强酸性,从数据库中获取的酸碱度为2;
小于第二阈值,该第二阈值的确定可以根据具体的需要来预先设定。
配餐的整体思路为若在合理的营养配餐时限T内,根据深度优先搜索算法生成一个菜品组合就判断一次,若找到同时满足第一约束条件、第二约束条件和第三约束条件的菜品组合,则结束配餐,输出该菜品组合;若根据深度优先搜索算法生成的所有的菜品组合都被判断完,都无法找到同时满足第一约束条件、第二约束条件和第三约束条件的菜品组合时,而且此时营养配餐时限T还未到,优先调整第一约束条件,重新根据深度优先搜索算法从生成第一菜品组合开始,生成一个菜品组合就判断一次,如果根据深度优先搜索算法生成的所有的菜品组合都被判断完,根据调整后第一约束条件后还无法找到同时满足第一约束条件、第二约束条件和第三约束条件的菜品组合时,则调整第二约束条件寻求解,同上,直至营养配餐时限T到达;当营养配餐时限T已到达时,则放弃第一约束条件的约束进行搜索,如果此时的配餐程序运行时限Tmax未到达时,按照上述继续生成的菜品组合接着判断,如果根据深度优先搜索算法生成的所有的菜品组合都被判断完,仍然无法找到满足第二约束条件和第三约束条件的解时,调整第二约束条件,重新根据深度优先搜索算法从生成第一菜品组合开始,生成一个菜品组合就判断一次,直至配餐程序运行时限Tmax到达;如果配餐程序运行时限Tmax已到达,而仍找不到合理的解,则随机的而且不重复的从步骤103中随机排序的菜品中按顺序选取菜品组合并输出,最终结束配餐。
本发明可以应用在菜品的智能化快速配餐、商品的智能化快速团购推荐购买等各种与本发明的方法相关的领域上。
最后应当说明的是,以上实施例仅用以说明本发明的技术方案,而非对本发明保护范围的限制,尽管参照较佳实施例对本发明作了详细地说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的实质和范围。