目 录
摘 要 I
Abstract III
第 1 章 绪论 1
1.1本课题的研究背景 1
1.1.1问题的提出 1
1.1.2课题的理论与实际意义 1
1.2国内外相关领域的研究和发展 3
1.2.1遗传算法的研究和发展 3
1.2.2营养配餐系统的研究和发展 4
1.3本文主要研究内容 5
1.4论文结构 5
第 2 章 朴素贝叶斯数学模型 7
2.1 引言 7
2.2 贝叶斯方法概述 7
2.2.1贝叶斯定理 7
2.2.2贝叶斯公式 7
2.2.3极大后验假设 8
2.3朴素贝叶斯方法的应用 9
2.3.1朴素贝叶斯的建模 9
2.3.2朴素贝叶斯模型的实现 11
2.3.3疾病与营养膳食数学模型 12
2.4目标函数与约束条件 13
2.5本章小结 14
第 3 章 系统设计与数据库实现 15
3.1引言 15
3.2系统设计 15
3.2系统功能的设计与数据库实现 17
3.2.1智能配餐模块功能设计 17
3.2.2配餐功能的数据库实现 18
3.3本章小结 21
第 4 章 遗传算法的改进与实现 23
4.1 引言 23
4.2 遗传算法的基本概念 23
4.3 遗传算法的基本原理 24
4.3.1 选择算子 26
4.3.2 交叉算子 27
4.3.3 变异算子 27
4.4 遗传算法的研究与改进 27
4.4.1选择算子的改进 28
4.4.2交叉算子的改进 29
4.4.3变异算子的改进 31
4.4.4 适应度函数 31
4.5 改进遗传算法的实现 32
4.6本章小结 33
第 5 章 算法仿真结果 35
5.1改进遗传算法营养配餐系统的仿真结果 35
5.2改进遗传算法与传统遗传算法的比较 38
5.2本章小结 38
结 论 41
参 考 文 献 43
攻读硕士学位期间所取得研究成果 47
致 谢 49
第 1 章 绪论
遗传算法以生物进化原理为基础,是一种通过模拟生物进化的过程的全局搜 索算法,在求解的过程中,使种群不断进化,直到找出最优解。遗传算法[1]适用 于 NP 完全问题的求解,其特点为:通用、简单和适合并行处理等。因此,对遗 传算法进行研究并应用到智能营养配餐系统中具有理论的基础和现实的意义。
1.1本课题的研究背景
1.1.1问题的提出
计算机技术在我国的营养学中的应用起始于 20世纪 80年代初期,由于个人 计算机的普及让这一应用更加广泛,计算机在营养学中的应用也随着计算机处理 速度的提升而变得更加深入。随着计算机的不断发展与营养学研究进展的深入, 让计算机科学和营养学有了新的结合点与应用研究领域。
目前,社会生产力和人们生活水平都在不断提高,这一变化使得社会各界对 于疾病和健康饮食问题的关注度不断提升。随着医学水平迅速发展,人类的平均 寿命不断增加,慢性疾病逐渐成为了威胁人类生命的主要元凶。通过流行病医学 的研究表明引起慢性病的罪魁祸首是不良的日常饮食习惯以及不合理的膳食方 式。针对这一现象,我们应调整饮食结构与膳食方式,从而提高生活水平。因此, 将计算机的优化算法应用于智能配餐系统的研究有助于改善人民的饮食习惯和 膳食营养均衡,从而达到预防和从一定程度上控制慢性疾病的目的。
针对以上几点,把计算机优化算法应用到营养学领域中需要将营养学基础、 临床医学和临床营养学等多门学科的理论基础结合起来。本文进行智能配餐的目 标是根据患者的健康指标以及患病情况,构造符合其身体健康需要的饮食结构的 配餐方案,避开其疾病引起的饮食禁忌,起到辅助治疗的作用,帮助慢性病患者 恢复健康,从而为患者的饮食提供指导意义。本文研究的重点是遗传算法的改进 和智能营养配餐系统的设计,最终实现基于改进遗传算法的智能营养配餐系统。
1.1.2 课题的理论与实际意义
使用计算机实现饮食与疾病的智能配餐是一个组合优化问题,组合优化问题 一直是近年来计算机领域应用研究的热点问题之一。解决组合优化问题的思路是 在问题的约束条件下,在可行解的空间内找到最优解。本文应用计算机实现营养 智能配餐,原理是应用优化算法在全部菜谱集中挑选出符合疾病配餐目标的最优 解。当菜谱集足够大时,这一过程属于NP (Non-deterministic Polynomial)完全 问题。如果采用枚举法进行智能配餐,会使算法执行时间过长,无法满足用户对 于智能配餐系统的时间要求;此外,应用梯度下降法、模式搜索法和Powell算 法等方法又不能保证配餐能够找到较优解与全局最优解偏差的大小,影响整个配 餐效果,无法满足用户对于智能配餐系统的精准度要求。根据以上几点,本文选 择了启发式算法作为智能配餐系统的解决方案。
启发式算法是一个基于直观或者经验构造的算法,在问题给定优化条件下, 找到符合条件的所有可行解,而这个可行解与真正全局最优解的偏移距离一般不 能被预计。启发式算法[2]的优点是执行效率高,收敛速度快,对于NP问题,也 可在预定时间内找到较优解。对模拟退火算法、遗传算法和人工神经网络算法这 几种启发式算法的比较结果如下:
(1)模拟退火算法。模拟退火优化算法[3]是在 1953 年由 Metropolis 提出的, 而在1983年由Kirkpatrick等人成功引入到组合优化领域,目前该算法已在工程 当中得到了广泛的应用。模拟退火算法的思想是对固体降温过程的模拟。模拟退 火算法在搜索的过程中,若要得到准确度较高的解,那么需要足够缓慢的降温速 度,这会导致算法的收敛速度过慢;然而,当降温速度过快,又可能无法找到全 局最优解。而且,模拟退火算法在执行过程中有可能会陷于局部最优解而无法跳 出。因此,模拟退火算法不适用于智能营养配餐系统。
(2)遗传算法。遗传算法是一种通过模拟自然界的选择和遗传的生物进化机 制来寻找最优价的全局性概率搜索算法。由于遗传算法具有优良的全局搜索能力, 求解速度快,搜索效率高,所以不容易陷入到局部最优解的陷阱中,具有良好的 稳定性。因此,在解决组合优化问题的过程中[4],相较于其它算法,遗传算法有 着巨大的优势。
遗传算法的特点如下:
1)遗传算法从可行解的集合进行搜索,而不像其他搜索算法一样从单个解
开始进行搜索,覆盖面更广,不容易陷入局部最优解;
2)遗传算法在选择和交叉的过程中都由多个个体参与,可以同时对多个个 体进行评估,具有良好的并行性,有利于进行决策变量较多的优化运算;
3)遗传算法的适应度函数不受连续可导等条件的约束,可以任意设定,大 大提高了该算法的适应性;
4)遗传算法的交叉运算通过交换父代个体的染色体能够保留上一代已经搜 索到的信息,使搜索过程具有很强的连续性,在收敛速度上具有优势,同时也有 很大的改进潜力。
虽然遗传算法在解决优化问题的时候具有很大的优势,但是也存在着不足。 针对不同的优化问题,遗传算法需要采取不同的编码方案,若编码方案设定不合 理很容易导致在交叉变异的过程中出现染色体坏死等问题。由于交叉操作的特性, 在个别个体上容易保留适应度交叉的基因,若不能及时淘汰掉该基因,必将影响 到遗传算法的收敛性,降低整个系统的执行效率。经过以上分析可以得出,编码 和交叉操作这两个过程是遗传算法的重要环节,需要对其进行深入的研究,并对 其缺点进行改进。因此,本文以遗传算法的选择、交叉和变异算子作为研究的重 点,针对这三点提出了一种改进的遗传算法,从而在一定程度上解决遗传算法中 收敛速度与局部最优解的矛盾。
(3) 人工神经网络。人工神经网络是 1980年以来兴起的研究热点,它属于 人工智能领域。经过最近三十年的发展,人工神经网络的研究工作已经取得了较 大的进展,特别是在模式识别、生产自动化、人工智能、生物、医学、经济等诸 多领域得到了广泛的应用,表现出了良好的智能特性,也使许多计算机难题得以 解决。[5]然而人工神经网络也具有自身的缺点,其不能解释推理过程和推理依据; 对于训练数据有着严格的要求,数据过少时会严重影响人工神经网络的性能。
综合比较,遗传算法有较强的通用性与适应性,具有很高的计算效率以及执 行时间相对较短等特点而在生活的各领域都被广泛应用。经过以上讨论,基于遗 传算法的几种特点,本文将遗传算法应用到营养评估与智能配餐系统的优化过程 中,进而对于遗传算法的几个重要算子进行改进,经过改进的遗传算法再选择合 适的参数就能够实现针对个体疾病的智能营养配餐系统。
因此,本文的研究具有一定的理论意义与明显的应用价值。
1.2国内外相关领域的研究和发展
1.2.1 遗传算法的研究和发展
遗传算法是一种以生物种群的遗传进化理论为基础的优化算法[6],最初由美 国学者Holland得出。它与原先的搜索优化算法不同,采取人工的方式模拟生物 演化,并对解空间随机搜索。遗传算法的原理是把一个个体或染色体看成一个可 能解,进而依据 Darwin 的进化论进行模拟,完成选择和淘汰的进化过程,再凭 借预设的适应度函数计算个体的适应度,按照适应度的高低,以适者生存、优胜 劣汰的演化过程为基础,经过这一过程得出适应度更高(更优秀)的个体,随之 也就得到了满足问题要求的最优解。
遗传算法在被提出之后,发展十分迅速,很快就成为了各国学者的研究焦点。 在1980到1990年,Holland教授首先提出了遗传算法应用到机器学习中的新理 念,并提供了框架以供进一步研究。 1989 年, Goldberg 出版了专著《遗传算法 在搜索中的应用》,这是第一本遗传算法教科书,介绍了遗传算法相关的研究工 作内容与进展。1992年,Koza开创了基于遗传算法的计算机程序的优化设计及 自动生成的概念,并且为基于符号表示的函数学习问题提供了一个有力的工具。 [7]1985年,第一届国际遗传算法会议(ICGA)在美国卡内基•梅隆大学召开, 以后每两年召开一届。进化规划年会(ACEP)于1992年在美国召开第一届会议, 以后每隔两年召开一届;进化计算会议(CEC)与1994年开始定期召开。还有 GECCO (遗传进化计算)国际会议,PPSN (并行计算解决方案)会议,FOGA
( 遗传算法基础)会议,并且创办了 Evolutionary Computation 和 Adaptive Behavior杂志等。以上这些会议和杂志加快了遗传算法相关研究的进展,并为遗 传算法在多学科和多领域的应用研究奠定了基础。
近几年,遗传算法已经成功应用于经济、交通、工业等不同的领域中,为各 行各业解决了许多问题。例如,组合优化问题、生产调度控制、机器人智能、模 式识别以及机器学习等[8]问题。最近几年的研究和应用加速了遗传算法的发展, 改善了该算法的性能,也让遗传算法具有更加广阔的前景。
1.2.2营养配餐系统的研究和发展
在计算机应用于营养配餐之前,营养学配餐中均以营养学、临床医学、卫生 安全等学科作为理论依据。然而,当今已知的维护人体健康所须的营养要素多达 数十种,而针对各种疾病的配餐方案更是层出不穷。因此,营养师在工作中存在 着巨大的计算量,已经面临单靠手工与人力难以完成任务的难题。随着个人计算 机的问世,在一定程度上减少了营养师的计算工作量,使营养师的工作效率有了 小幅度的提高。但是由于当时计算机价格昂贵、没有视图操作界面、普及程度不 足等因素所限,使得计算机在营养学领域的应用研究并没有受到广泛的关注,因 而发展缓慢。
目前个人计算机已经得到充分的普及,现阶段已经将计算机技术应用到营养 成分计算与分析、营养膳食搭配和营养素以及热量指标查询等工具当中。依靠这 些应用的营养配餐软件可以提高人们日常饮食的质量,并改善各种营养素和热量 的摄入,为健康膳食目标的达成提供了极大的便利。然而,当前的这些营养配餐 软件需要在事先录入食谱库,在配餐者进行配餐时,再将食谱库中食品的营养素 与配餐者所食用的营养素进行对比,实现所谓的营养分析功能,其流程过于复杂、 用户覆盖面狭窄,并且未将个体的身体和疾病情况考虑在内,这些缺陷严重影响 到配餐的准确度与科学性,满足不了特定个体需求。综上所述,进一步发掘计算 机技术在智能配餐领域的应用对于提高大众的健康水平有着十分重要的现实意 义,是一项利国利民的有益工作。
1.3本文主要研究内容
本文讨论了使用计算机优化算法实现针对个体疾病的健康膳食的智能营养 配餐解决方案,运用朴素贝叶斯方法对营养师的配餐方案进行分析计算,得出针 对疾病的膳食食谱的数学模型,发现疾病与饮食潜在联系。这一过程模拟了营养 师根据疾病的病理特点得出所需配餐食谱的操作,为解决营养师的数量缺口这一 现实难题提供了新的解决思路和途径。其中,对疾病与饮食联系的运算结果实现 了避免使用病症禁忌食品这个目标,这也成为下一步智能配餐的依据。
本文选取遗传算法作为配餐优化算法进行研究并加以改进,通过遗传算法得 到针对个人病症的智能营养配餐方案;深入了解遗传算法的特性,提出改进的遗 传算法,使其能够针对疾病与配餐的潜在关系,结合实际病理和健康饮食的特点 为配餐者提供配餐的指导与帮助。在智能营养配餐系统中,遗传算法的改进和应 用需要以实际的需求为基础,因此该算法必须在注意收敛速度的同时保证得到最 优解(即符合患者需要的智能配餐方案)。
1.4 论文结构
本文分为 5 个章节和结论。
第一章 引言。说明了课题背景、研究内容、研究目的、研究意义,并且对 国内外的发展现状加以分析,结合相关的基本理论说明本文的研究方向。
第二章 基于朴素贝叶斯方法的数学模型的构建。首先对贝叶斯方法进行概 述,包括贝叶斯公式、朴素贝叶斯方法等;进而对本文如何使用朴素贝叶斯方法 得出针对患者疾病的菜谱做出了详细的阐述。
第三章 系统、数据库的设计与实现。介绍了营养配餐系统的设计思路、操 作流程以及模块的划分与功能。并对数据库的设计进行了详细分析。
第四章 遗传算法的研究与改进。阐述了遗传算法的原理,并对遗传算法针 对营养配餐系统的实际需求做出了改进,保证了配餐中营养与热量的均衡。
第五章 算法的仿真实验。通过举例的形式演示了营养配餐系统的工作流程, 并对配餐结果的数据进行分析,得出有益的结论。
结论总结了本文的主要研究成果,并对其应用前景和社会、经济价值等加以 预测和评价。
第 2 章 朴素贝叶斯数学模型
2.1引言
自从 1990 年以来,贝叶斯学习[9]就是机器学习研究的重要方向之一。贝叶 斯学习提供了根据一个概率分布的假设推理概率的方法,并且可以通过观察到的 数据的概率验证其结果,从而得到最好的决策。本文采用朴素贝叶斯方法构建数 学模型,为下一步基于遗传算法的智能配餐提供了解空间。
2.2 贝叶斯方法概述
2.2.1 贝叶斯定理
机器学习的任务是提供训练数据D,确定假设空间H的最佳假设。可能性 最高的假设[10](即最佳假设)是训练数据 D 给出的假设空间 H 基于先验概率不 同的概率最高的假设。贝叶斯理论以假设的先验概率、给定假设下观察到的概率 以及观察到的数据本身为基础,提供了一种推理假设概率的方法。在介绍贝叶斯 定理之前,先简单说明一下先验概率和后验概率的概念。
(1)先验概率
先验概率是指根据以往的经验和分析得到的概率,是检验前的概率,因 此也被人们叫做先验概率。其中先验概率[11]有两类:通过历史资料经过推理 计算所得的概率称为客观先验概率;当历史资料无从无得或资料不全时,凭 人们的主观经验进行判断所得的概率称为主观先验概率。
(2)后验概率 通常意义上的后验概率指的是将贝叶斯公式与调查获取的信息做为已 知条件,用来修正先验概率,从而获得更加贴近实际的估计。
2.2.2贝叶斯公式
一般来说,机器学习的主要任务是已知训练数据集D,找出假设空间H内
最有可能的假设。而贝叶斯公式就为我们提供了直接计算最佳假设的方法。其定 义如下:
P (h| D) = P ⑼ h) P(h) 其中,P (h)被称为先验概率,代表在没有训练数据之前假设h所拥有的初 始概率,它反映了关于h是一正确假设的机会的背景知识。P(D)代表将要观察的 训练数据 D 的先验概率,也称为证据因子。 P D h 代表假设 h 成立的情形下训 练数据D的概率,称为似然函数他。
在机器学习中,我们关心的是P(h | D),即给定D时h成立的概率,称为h 的后验概率,因为它反映了在看到训练数据D后h成立的置信度。[13]可以看出, 贝叶斯公式为我们提供了在已知先验概率P(h)、证据因子P(D)和似然函数P (D|h) 的情况下,计算出后验概率 P h D 的方法。
2.2.3 极大后验假设
在许多学习场景中,学习的目标是:给定训练数据D,在候选假设集合H中 寻找可能性最大的假设h,hGHo这种可能性最大的假设被称为极大后验假设 [14],简记为hMAP。如公式(2-2):
hMAP = agrmaxP ( h | D) h E H (2-2)
应用贝叶斯公式,计算如下:
hMAP = agrmaxP (时 D) = P(D h E H (2-3)
因为P(D)是一个不依赖于h的常量,式(2-3)可简化为:
hMAP = agrmaxP D h P h h E H (2-4)
对于本文中的膳食对疾病的影响问题,其中有两个可以选择的假设: 1)某 膳食习惯会引起某疾病; 2)某膳食习惯不会引起某疾病。对于本文的两种假设, 进行测试有两种可能的输出:阴性(没有患病危险)和阳性(有患病危险)。我 们有先验知识:若按照此种膳食有 0.008 的概率患有某个疾病。
除此以外,这个测试只是对该病的一个不完全的预计。此测试针对确认患病 的患者有 98%的概率返回正确结果(即为 1),而对非患者人群则有 97%的概率 返回正确的结果(即为 0)。剩下其余的测试结果都为错误的的结果。假定现在 有一个新的配餐者,测试结果返回了 1,那么这个配餐者能否被断定为患有疾病, 经过分析可以得出,这个题设就是要计算极大后验假设hMAP。
应用公式(2-4)可以得出:
P (disease | 阳性)=P(阳性 | disease)P(disease) = 0.98 X 0.008 = 0.0078
P(dise as e| 阳性)=P (阳性 | diseas e) P (d i seas e) = 0.03 X 0.992 = 0.0298 因此,判定该患者没有患病危险。
2.3朴素贝叶斯方法的应用
在理解了上述贝叶斯方法的原理后,将该方法应用到实际中。本文需要发现 疾病与健康膳食之间的联系,这一步骤中,将利用朴素贝叶斯方法建立数学模型, 对菜谱进行筛选,给出相应的评价概率(即可食用性)。我们首先要完成对变量 的定义:Xi,X2,…,Xn其中x代表疾病,角标为疾病的编号,同理,变量A代 表菜式种类,角标为菜式的编号。在系统实现的过程中,对一种疾病的配餐是根
据贝叶斯公式,即式(2-1)计算所得。结果如下:
对于合并症患者的选餐采用如下的公式实现:
样本个数(疾病X],膳食Aj)样本个数(疾病X2,膳食Aj)
样本个数(疾病X])样本个数(疾病X2)
从(2-7) 和(2-8)两式看出,通过贝叶斯方法的运用,对于患有合并症的患者 进行的菜谱筛选也能够通过朴素贝叶斯方法实现。同理,通过运用朴素贝叶斯方 法我们还可以对患有多种合并疾病的患者进行菜谱筛选。
2.3.1 朴素贝叶斯的建模
经过以上分析,疾病与健康营养均衡的菜谱筛选结果能够得出食物中的营养 素与疾病间的潜在联系,因此在智能营养配餐系统中首先运用朴素贝叶斯方法发 现这种关联关系,然后根据该关系所得饮食与患病的概率并结合营养膳食和临床 营养学的知识为配餐者进行配餐,所以下一步可以在朴素贝叶斯方法的基础上对 配餐者进行针对疾病的智能配餐。
在建立的疾病与饮食的数学模型中,本文对各个变量的定义如下:变量 Ai 代表菜肴的种类,它有0和1两个值,其中Ai=1代表选中了菜肴i,患者可以 食用它;Ai=0代表未选中菜肴i,患者不可以食用该菜肴。同理,务代表疾病的 种类,若该值为1,代表病人患有疾病j;若为0,则代表病人不患有疾病j。
本文所采用的训练数据和检测数据均来及营养师根据患者病情所得出的配 餐结果,满足营养学的基础的理论,因而具有一定的科学性,可以满足绝大多数
患者的需要。 表 2-1 变量名称与菜谱定义
Table 2-2 Definition of the variable name and menu
变量 菜谱名 变量 菜谱名
A1 糖醋鲤鱼 A2 蚂蚁上树
A3 白灼虾 A4 糖醋排骨
A5 剁椒鱼头 A6 鸡汤馄饨
A7 大虾烧白菜 A8 辣炒蛤蜊
A9 翡翠虾环 A10 鱼香肉丝
A11 汆牛肉丸子 A12 手撕包菜
A13 宫保鸡丁 A14 麻婆豆腐
A15 回锅肉 A16 东坡肘子
A17 口水鸡 A18 凉拌鸭胗
A19 冒菜 A20 韭菜炒鱿鱼
A21 咸水鸭 A22 豆腐海带汤
A23 狮子头 A24 辣子鸡丁
A25 小鸡炖蘑菇 A26 泡椒凤爪
A27 白切鸡 A28 红烧排骨
A29 梅菜扣肉 A30 闵式香肠
A31 荷包蛋 A32 凉拌苦瓜
A33 锅包肉 A34 糖醋里脊
A35 米粉肉 A36 地三鲜
A37 糖醋海蜇头 A38 凉拌海带
A39 东北乱炖 A40 猪肉炖粉条
A41 拔丝地瓜 A42 杏鲍菇炒圆白菜
A43 杀猪菜 A44 脆皮乳鸽
A45 挂炉烤鸭 A46 清炒虾仁
A47 西红柿炒鸡蛋 A48 葱爆羊肉
A49 烤羊排 A50 小炒肉
A51 咖喱蘑菇 A52 老鸭汤
A53 蔬菜沙拉 A54 南瓜粥
A55 红白豆腐酸辣汤 A56 火腿蚕豆
A57 香菇油菜 A58 水煮牛肉
A59 罐焖甲鱼 A60 香酥鸡腿
表 2-2 变量名称与疾病定义
Table 2-1 The definition of the variable name and disease
变量 疾病名称
X1 糖尿病
X2 高血压
X3 肝炎
X4 骨质疏松
X5 心脏病
X6 夜盲症
X7 甲亢
X8 佝偻病
X9 肺结核
X10 哮喘
X11 慢性肠炎
X12 贫血
X13 痛风
2.3.2 朴素贝叶斯模型的实现
下面将模拟高血压患者使用智能营养配餐系统的配餐过程,用来说明朴素贝 叶斯方法在本系统中的应用。其中,已知该配餐者为高血压患者,根据变量的属 性与定义,那么其疾病输入的数据为:Ii={X1=0, X2=1, X3=0,...,X13=0 }。再通过表 2-1 和表2-2 中的数据进行计算,在表2-3 中得到针对该患者疾病的菜肴筛选结 果。其中,表内的后验概率就是每道菜的可食用性,可食用性越大说明就越适合 患者食用。
表 2-3 该高血压患者的选餐结果
Table 2-3 Catering result of patients with hypertension
后验概率 后验概率 后验概率 后验概率
P(A1|Ii)=0.030 P(A2|Ii)=0.010 P(A3|Ii)=0.030 P(A4|Ii)=0.005
P(A5|Ii)=0.021 P(A6|Ii)=0.024 P(A7|Ii)=0.010 P(A8|Ii)=0.030
P(A9|Ii)=0.010 P(A10|Ii)=0.015 P(A11|Ii)=0.030 P(A12|Ii)=0.015
P(A13|Ii)=0.015 P(A14|Ii)=0.021 P(A15|Ii)=0.005 P(A16|Ii)=0.001
P(A17|Ii)=0.024 P(A18|Ii)=0.018 P(A19|Ii)=0.010 P(A20|Ii)=0.008
P(A21|Ii)=0.030 P(A22|Ii)=0.024 P(A23|Ii)=0.015 P(A24|Ii)=0.021
P(A25|Ii)=0.015 P(A26|Ii)=0.037 P(A27|Ii)=0.008 P(A28|Ii)=0.010
P(A29|Ii)=0.008 P(A30|Ii)=0.005 P(A31|Ii)=0.005 P(A32|Ii)=0.021
P(A33|Ii)=0.001 P(A34|Ii)=0.005 P(A35|Ii)=0.008 P(A36|Ii)=0.015
P(A37|Ii)=0.021 P(A38|Ii)=0.024 P(A39|Ii)=0.001 P(A40|Ii)=0.010
P(A41|Ii)=0.010 P(A42|Ii)=0.005 P(A43|Ii)=0.008 P(A44|Ii)=0.021
P(A45|Ii)=0.010 P(A46|Ii)=0.024 P(A47|Ii)=0.021 P(A48|Ii)=0.037
P(A49|Ii)=0.015 P(A50|Ii)=0.008 P(A51|Ii)=0.027 P(A52|Ii)=0.001
P(A53|Ii)=0.030 P(A54|Ii)=0.030 P(A55|Ii)=0.015 P(A56|Ii)=0.021
P(A57|Ii)=0.051 P(A58|Ii)=0.018 P(A59|Ii)=0.024 P(A60|Ii)=0.008
2.3.3 疾病与营养膳食数学模型
在对实际问题的分析讨论中,数学模型可以看做是对其的抽象与概括描述, 也是求解优化问题的基础。在疾病与健康膳食智能配餐系统中,第一步应当依据 实际问题搭建智能配餐的数学模型。其中,一般优化问题数学模型为:
minf (X) = f(X], x2,..., xn) X E Rn (2-9)
s. t. gu(X) > 0 (u = 1,2, ., m)
hv(X) = 0 (u = 1,2,..., p < n) (2-10)
在以上公式中,式(2-9)是优化问题中的目标函数,式(2-10)是优化问题 中的约束条件。在数学优化问题中,若能满足目标函数和约束条件两者都是优化 问题中的变量X的线性函数这一条件,那么则称之为线性规划问题。疾病与健 康膳食的数学问题经过分析后,可以表示为一个线性规划问题,在实际应用中, 利用朴素贝叶斯方法构建食物与疾病的联系的数学模型,在配餐者输入自己的健 康指标以后根据食物与疾病的联系进行配餐。数学模型的构建为下一步的配餐提 供了理论基础,提高了配餐准确度,同时也使针对疾病的智能配餐这一优化过程
更便利。
2.4目标函数与约束条件
目标函数[15],也称评价函数,是根据问题准则建立的评价设计方案优劣的 评价标准,用变量的函数形式来表示。考虑到优化算法的收敛性问题,以及疾病 与健康膳食问题的特性,本文采用单目标函数(其中热量作为评价变量)用于评 价配餐方案的优劣。对于这一结果,本节将从营养学基础知识的角度进行分析与 讨论。
首先,因为我们日常食用的食物多种多样,它们中的营养素种类达到数十种 之多,如果分别对它们进行量化、对比无疑会使计算量急剧增加,给优化算法增 加了不必要的负担。因此,本文需要通过选取合适的目标函数对配餐过程进化简 化。在上一步的数学模型中,已经完成对疾病与饮食联系的发现,可以根据患者 所患的疾病,得出食物的可食用性。根据营养学基础知识,高达数十种的营养素 可归纳为六大营养要素。随着人民生活水平的提高,物质条件的丰富,在日常饮 食中这六大营养素早已满足了人们的需求,甚至有些营养素的摄入还远远高于日 常的基本需求。在营养师进行配餐的过程中,往往采用热量作为配餐的重要依据, 对已经满足人们日常需求的六大营养素的关注较少。因此,结合营养师的实际工 作经验,这里也将热量作为衡量配餐准确度的标准。
通过以上对营养学的分析与讨论,将构建基于热量的目标函数。本系统的目 标函数如下:
f(c) = C1 + c2 + Cm — c (2-11)
C] + C2 + …+ cm — C > 0 (2-12)
其中,C1-Cm表示每种菜肴提供的热量,C表示人体日均需摄入的热量标准值。 目标函数将食物提供的热量与日均需要热量的差,作为对配餐准确度的判断。式 (2-12)为目标函数的约束条件,它保证了在配餐所得到食谱中的热量总是要大于 或者等于日均所需热量的标准值,让热量的摄入满足健康饮食的标准。反之,假 如热量的总摄入量小于每日热量摄入的标准值时,患者就无法获取足够的热量以 维持每天的日常活动,再结合基础学营养,人体的每日热量总摄入量也应当与每 日热量标准值尽可能持平。也就是说式(2-11)和(2-12)可以将人体摄入热量与热量 标准的关系准确地表示出来,符合基础营养学理论。
因此,在求解优化问题时,应该寻找目标函数的最小值,即要保证用户每日 热量摄入要满足标准,同时也保证了配餐的精准度,防止用户摄入过多的热量, 对健康造成不利的影响。
2.5 本章小结
本章利用朴素贝叶斯方法建立了疾病与健康膳食关系的数学模型,从营养师 对患者的实际配餐数据中发现了疾病与饮食的潜在联系,通过分析与讨论营养学 基本理论构造了目标函数与约束条件,为下一步遗传算法提供了解空间与适应度 函数的构造方法。
第3 章 系统设计与数据库实现
3.0 引言
在上一章中,我们已经构建了疾病与健康膳食关系的数学模型,根据朴素贝 叶斯方法得到了基于患者疾病的选菜结果。并且通过分析实际的配餐问题,确定 了优化算法的目标函数以及约束条件。
本章要在上一章基础上设计智能营养配餐系统,提出系统拟解决的问题以及 需要实现的功能,并详细说明本系统数据库的设计与实现。系统选择的开发平台 如下:
操作系统:windows 7
数据库: MySQL
开发环境: Eclipse + Tomcat
3.1 系统设计
首先,对疾病与智能配餐系统进行需求分析。在实际的配餐工作中,营养师 需要在了解患者的基本情况后进行配餐,比如:性别、年龄、身高、体重、职业、 活动量、既往病史等信息。下一步是根据基础情况,针对个体患者制定配餐方案, 步骤为:首先,计算患者所需的日均热量;再结合病症的特点以及营养师的配餐 记录,给出满足患者对营养素需求的菜肴;最后让配餐菜肴满足患者日常所需营 养与热量的数值指标,并进行合理调整,最终得出配餐方案。这样,就凭借人力 完成了针对疾病的配餐工作。
参照营养师的配餐流程,得出本系统得流程如图3-1。
智能营养配餐系统与其他配餐系统不同,会根据患者的疾病对菜肴进行选择, 选出适合患者食用的菜肴;并通过菜肴的合理搭配优化热量的输入。从而调整患 者的膳食结构,改善饮食质量。下面确立了系统的功能与目标:
(1)针对患者疾病的配餐方案,本系统需要针对患者的各项基础指标(性 别、年龄、身高、体重、职业、活动量)进行分析。通过这一分析过程模拟营养 师配餐对患者日均所需营养与热量的计算,所得结果就是智能配餐中所需的重要 指标。
根据上述结果,结合营养师的配餐记录,得出针对患者疾病的选菜结果。这 是实现智能配餐的基础,将营养师的实际配餐记录应用到智能配餐系统中,为针
图 3-1 系统流程图
Figure 3-1 System flow Chart
对疾病的配餐提供了理论依据,为实现基于遗传优化算法的智能配餐提供了解空 间。最后,将热量、疾病等因素作为参考依据,并应用遗传优化算法,得到最终 的配餐方案。实现了针对患者病症进行配餐这一系统目标。
(2) 智能配餐兼顾理论基础,将实际营养师的配餐记录作为参考依据,提 供了切实可行的配餐方案。分析营养师的配餐方案,按疾病的种类寻找配餐方案 的特点,发现疾病与饮食的潜在联系。在给予患者配餐指导的同时,考虑了饮食 的禁忌,即保证了患者营养的摄入,也兼顾了辅助治疗的效果。在系统中,主要 体现为朴素贝叶斯算法与遗传算法结合运用,实现了智能配餐的需求。
(3) 配餐系统的实用性。为了提高系统的实用性,针对遗传算法的收敛性 进行了改进,使之可以在用户可以接受的时间内得出配餐结果。通过对营养师配 餐工作的模拟,可以大幅减少营养师的工作负担,从一定程度上弥补了营养师这 一行业的就业缺口。本智能配餐系统具有高效、精准等特点,符合我国饮食文化 的规律,为患者日常饮食提供指导。
智能配餐系统以疾病与饮食的联系为依据,结合营养师的配餐规律,合理地
实现了智能配餐这一目标。
3.2系统功能的设计与数据库实现
系统的功能模块主要包括:用户注册登录模块、体质测评模块、资料管理模 块、智能配餐模块和信息维护模块等。其中智能配餐模块的设计与实现是系统的 核心,将在3.4 节进行说明。首先对其余模块进行分析:
(1) 用户注册登录模块。这个模块包含了用户的注册与登录的功能。当用户首次 登陆本系统时,系统会要求用户进行注册,然后把用户的个人信息(其中包 括了用户登陆信息、配餐信息等信息)保存到数据库中。其中,用户可以进 行配餐信息的保存和读取操作,而管理员可以对用户群进行管理与维护。
(2) 体质测评模块。这个模块通过用户填写个人的身体指标(性别、年龄、身高、 体重、职业、活动量),运用营养学公式进行计算,经过分析得出一组代表 患者身体状况的数据,这些数据为配餐提供了依据。
(3) 资料管理模块。这个模块的目标是实现用户配餐资料以及菜肴的录入、查询 和修改。本模块的目的是灵活使用数据库内容,根据实际情况及时更新菜谱 信息,增加了数据库的灵活性,使配餐功能更加实用。
(4) 信息维护模块。这个模块是为了技术人员可以查看朴素贝叶斯方法得到的中 间条件概率变量,检查配餐记录是否准确,为智能配餐提供了保障。 上述模块需要对数据库中的相应表进行操作,这些表的内容如下:用户基本 信息表(表3-1)、用户营养需求表(表3-2)、疾病信息表(表 3-3)、菜谱表(表 3-4)、样本信息表(表 3-5)和配餐记录表(表3-6)等。这些表单保证了用户与 菜肴数据准确性与完整性,同时也让上述模块得以正常工作。此外,本系统的核 心功能是智能配餐,智能配餐模块的设计将在下边进行介绍。
3.2.1 智能配餐模块功能设计
本模块是智能配餐系统的核心内容,需要以体质测评模块的内容为输入信息, 同时结合配餐记录进行配餐。具体设计如下:
对个人配餐信息进行分析。通过体质测评模块获取患者的个人信息,并运用 营养学热量公式进行计算,得出患者日均摄入热量,体重指数。其中热量计算公 式如下:
男性热能标准值= 66 + [13.7 X体重(kg) ] + [5x身高(cm) ] - 6.8 X年龄(3-1 )
女性热能标准值= 65 + [9.6 X体重(kg) ] + [1.7 X身高(cm)] - 4.7 X年龄(3-2)
公式(3-1),(3-2)所得热量为摄入量的标准值,还需根据个体日均的劳动力强
度对标准值进行修正,得到更加精准的所需热量。热量修正值如下表:
表 3-1 劳动量修正表
Table 3-1 Labor CorreCtion table
轻体力劳动 中体力劳动 重体力劳动
热量修正值(cal) 0 +300 +600
其中轻体力劳动为非体力工作的内勤工作者,如办公室职员;中体力劳动为 需要稍微耗费体力的外勤工作者,如理发师,销售人员等;重体力劳动为纯体力 工作者,如建筑工人。用户需要根据自己的职业进行劳动强度的选择。
日均摄入热量 = 热量标准值 + 热量修正值 (3-3)
日均摄入热量为用户每天所需的热量,通过式(3-3)计算得出。在获得用户的 体重指数以及日均摄入热量后,需要第二章中提到的朴素贝叶斯方法对配餐记录 进行分析,并根据用户的疾病类型计算各种菜肴的可食用性(即食用概率)。这 些信息为下一步的配餐提供了理论基础与解空间。
智能配餐选取了遗传优化算法进行,将会针对患者的实际情况实现精确的个 体化配餐,针对了患者的疾病情况。其中,遗传优化算法保证了配餐的精确性。 以上就是智能配餐模块的设计,下面将会介绍各个模块中使用的数据库内容。
3.2.2 配餐功能的数据库实现
对于配餐模块的数据库的内容,下面将会进行详细介绍。系统的数据库包含 的表单:用户基本信息表(表3-1)、用户营养需求表(表3-2)、疾病信息表(表 3-3)、菜谱表(表 3-4)和样本信息表(表 3-5),这些表存储了用户、菜谱以及 疾病等信息,是配餐系统实现的基础。
数据库表单内容如下:
表 3-2 用户信息表
Table 3-2 User information table
字段 类型 含义
用户编号 BIGINT 主键
用户名 VARCHAR(20) 用户名
性别 INT 性别
年龄 INT 年龄
身高 DECIMAL(4,3) 身高
体重 DECIMAL(6,3) 体重
劳动强度 INT 劳动强度
疾病名称 VARCHAR(20) 疾病名称
日均输入热量 DECIMAL(6,1) 日均输入热量
体质指数 DECIMAL(6,1) 体质指数
表 3-3 用户营养需求表
Table 3-3 Users nutritional needs table
字段 类型 含义
用户编号 BIGINT 主键
日均输入热量 DECIMAL(6,1) 配餐指标
蛋白质 DECIMAL(6,1) 配餐指标
碳水化合物 DECIMAL(6,1) 配餐指标
脂肪 DECIMAL(6,1) 配餐指标
盐分 DECIMAL(6,1) 配餐指标
维生素 A DECIMAL(6,1) 个人营养指标
维生素 E DECIMAL(6,1) 个人营养指标
维生素 B1 DECIMAL(6,1) 个人营养指标
维生素 B2 DECIMAL(6,1) 个人营养指标
胡萝卜素 DECIMAL(6,1) 个人营养指标
锌 DECIMAL(6,1) 个人营养指标
铁 DECIMAL(6,1) 个人营养指标
钙 DECIMAL(6,1) 个人营养指标
碘 DECIMAL(6,1) 个人营养指标
表 3-4 疾病信息表
Table 3-4 Disease information table
字段 类型 含义
疾病编号 BIGINT 主键
疾病名称 VARCHAR(20) 疾病资料
疾病膳食规律 VARCHAR(500) 疾病资料
疾病概率 DECIMAL(4,1) 疾病资料
表3-5菜谱表
Table 3-5 Recipes table
字段 类型 含义
菜谱编号 BIGINT 主键
菜谱名称 VARCHAR(30) 菜谱资料
总热量 DECIMAL(6,1) 配餐指标
蛋白质 DECIMAL(6,1) 配餐指标
碳水化合物 DECIMAL(6,1) 配餐指标
脂肪 DECIMAL(6,1) 配餐指标
盐分 DECIMAL(6,1) 配餐指标
维生素 A DECIMAL(6,1) 菜谱资料
维生素 E DECIMAL(6,1) 菜谱资料
维生素 B1 DECIMAL(6,1) 菜谱资料
维生素 B2 DECIMAL(6,1) 菜谱资料
胡萝卜素 DECIMAL(6,1) 菜谱资料
锌 DECIMAL(6,1) 菜谱资料
铁 DECIMAL(6,1) 菜谱资料
碘 DECIMAL(6,1) 菜谱资料
选菜标识 INT 菜谱资料
在表3-2中,日均摄入热量和体质指数是通过营养学的计算公式得出,经过 计算后各种营养素和热量的数值会分别存到表3-2和表3-3 中。体质指数就是 BMI 指数,计算方法如下:
体质指数(BMI)=体重(kg)2 (3-4)
身咼(cm)
体质指数是当前国际上常用的衡量胖瘦以及是否健康的标准。在本系统中, 根据体质指数会将体型分为:过轻(低于18.5)、正常(18.5-24.99)、过重(25-28)、 肥胖(28-32)和非常肥胖(高于32)五项。以上表单中的各种营养素指标参考 了《推荐的每日膳食中营养素的供给量》以及3.4节的热量计算公式。因此,营 养智能配餐系统具有理论基础与实际意义。
表 3-6 样本采集表
Table 3-6 Sample ColleCtion table
字段 类型 含义
样本采集号 BIGINT 主键
菜谱编号 BIGINT 菜谱资料
疾病编号 BIGINT 疾病资料
样本个数 INT 样本个数
条件概率 DECIMAL(4,1) P(Aj|疾病 Xj)
表 3-7 配餐记录表
Table 3-7 Catering reCord table
字段 类型 含义
记录序号 BIGINT 配餐资料
菜谱编号 BIGINT 配餐资料
配餐备注 VARCHAR(500) 配餐资料
配餐日期 DATATIME 配餐资料
在表3-6中,条件概率代表在患有疾病为时,菜肴含的可使用概率,这是 通过朴素贝叶斯方法对训练数据进行统计分析得出的。这一概率影响选菜的过程, 决定了遗传算法的配餐结果。在配餐的过程中,会选取m个菜肴,并计算m个 菜肴的总热量,将总热量与表3-3 的日均摄入热量进行比对,菜肴的总热量越接 近日均摄入热量,那么配餐的结果就越准确。在选择这m个菜肴的过程中,运 用了遗传优化算法。在选菜完成后,对于选中的菜肴,会将表3-5 中的选菜标识 赋为1,代表已选,否则赋为0,代表未选。此外, 3-5表中各个营养素以及热量 的含量均为100克菜肴中的含量,本系统将一份菜肴定义为 100克,便于优化算 法的计算。
3.3 本章小结
这一章对智能配餐系统的实现目标、功能设计以及模块划分进行了阐述,并 详细介绍了数据库的实现方法。其中,配餐模块是本文的核心内容,它实现了针 对用户疾病的智能配餐。配餐模块采用了遗传优化算法,该算法的研究与改进将 会在第4 章进行讨论。
第 4 章 遗传算法的改进与实现
4.1引言
遗传算法(Genetic Algorithm)是一种优化搜索算法[16],由美国学者Holland 首先提出,它通过模拟自然种群遗传进化的机制实现寻找最优解的目标。它与传 统的搜索方式不同,对目标空间个体的搜索是随机的,而目标空间的个体或者染 色体就是根据实际问题编码的字符串。遗传算法会根据实际问题设计适应度函数, 用适应度函数的值来评价解的优劣,按照适者生存,优胜劣汰的演化规律,得到 更优的群体,同时以并行的搜索方式优化群体的最优个体 [18],最终得到最优解。
4.2遗传算法的基本概念
遗传算法通过模拟生物的进化过程使种群不断进化直到得出最优解[17]。在 描述遗传算法流程之前,首先介绍遗传算法的基本概念。
基因(Gene):基因也称为遗传因子,它是DNA或者RNA长链的基本遗传单 位。 [18]不同物种的基因数量是不同的,例如较小的病毒细菌只有不到十个基因, 高等的动植物的基因数量可以达到数万个。生物体的子代就是通过基因获得父代 的遗传信息的,获得方式是通过染色体的复制。在遗传算法中,我们使用二进制 数对个体进行编码,基因就是每一条的编码信息,菜谱中的每一道菜肴都对应一 个基因。同时基因也是遗传算法中的最小单位。
染色体(Chromosome):染色体是载有遗传信息的物质[18],由多个基因组成。 在遗传算法中,为了模拟动、植物细胞中的染色体,需要对染色体进行编码操作, 每一个染色体就是实际问题的可能解。在编码结果中,每一个编码的字符串就是 一个染色体,对应了一天的配餐方案,由多条基因(菜肴)组成。通常情况下, 采用二进制对染色体进行编码,二进制字符串的长度(染色体长度)也是固定的。
种群(Population):在遗传算法中,多个染色体的集合称为种群[19],种群规 模是指种群内染色体的个数。染色体是实际问题的一个可能解,而种群是这些可 能解的集合。种群就是遗传算法的解空间。
适应度(Fitness):在生物学领域,衡量物种对于生存环境的适应情况的术语 是适应度。对环境适应度比较高的物种,也就是能够更好地适应环境,能够获得 更多的繁衍机会;相反,对适应度环境适应度比较低的物种,就更容易被环境所 淘汰。在遗传算法中,与生物学类似,适应度也是度量个体对生存环境适应能力 的标准,个体的适应度越高说明该个体越接近最优解,适应度函数就是根据优化 算法中的目标函数设定的。
4.3遗传算法的基本原理
遗传算法一般包含了三个处理步骤:1)根据问题的解编码,就是把可能解 用染色体的方式表示出来,随机生成N个可能解,即生成初始种群;2)根据优 化问题的目标函数构造出适应度函数,并按照适应度大小挑选个体进行遗传操作; 3)根据适者生存、优胜劣汰的生物学原理进行演化,让适应度较高的个体得以 繁衍,同时淘汰适应度较低的个体,从而找到问题的近似最优解或最优解。在遗 传算法的步骤中,每一个体都会在演化过程中对其优劣性进行评价,以适应度值 [20]的形式表示,个体在选择、交叉和变异算子的作用下向更高的适应度进化以 达到寻求问题最优解的目标。
首先,对于遗传算法的选择、交叉和变异操作加以说明。
选择(Select):选择是在种群中以某个概率选择个体,主要原理就是进化论中 的优胜劣汰、适者生存。在遗传算法中,把适应度作为衡量标准,将种群中适应 度较高的个体挑选出来,只有被挑选出来的个体才能进入到下一步的操作,对适 应度较低的个体进行淘汰,这一过程称之为选择操作。选择操作是根据适应度的 大小决定个体的是否能够生存,个体的适应度越大能生存的机会也就越大,反之, 适应度越低就越容易被淘汰。选择算子是遗传算法的重要组成部分之一。
交叉(Crossover):交叉是模拟生物在繁殖过程中,两个染色体之间通过交叉 操作进行重组,将两个染色同一位置处的DNA进行交换,从而形成新的染色体, 这个过程也称为基因重组。在遗传算法中,两个父代个体进行交叉运算并生成新 的个体,这个过程叫做交叉。交叉的作用是在保证群体多样性的同时扩大搜索空 间。
变异(Mutation):变异操作是指在细胞进行复制时会以某概率发生错误,导 致染色体序列产生改变,形成新的染色体。遗传算法也模拟了这一过程,在完成 交叉操作后对于某个个体会以一个较小的概率对某个基因进行变异,形成新个体, 增加种群的多样性。
以上是遗传算法中最基本的三个进化操作,下面将会介绍遗传算法的主要运 算过程。
(1)根据实际问题进行编码。对实际问题按照一定规律进行编码,使编码具有 唯一性。
(2)初始种群的生成。在完成编码后,需要生成新的种群,采用随机的方式生 成 N 个编码的字符串。其中,每一个编码串都是一个个体, N 个编码串的集合 称为初始种群P(0)。将进化代数t设为0,最优进化代数为T。
(3)计算群体中个体的适应度值。适应度是个体优劣的表示形式,而适应度函 数是根据实际问题进行设计的。
(4)选择。根据个体的适应度,对整个种群P(t)进行选择。
(5)交叉。按照交叉概率Pc进行交叉操作,产生新个体,形成新种群。
(6)变异。按照变异概率Pm进行变异操作,通过改变基因的方式产生新个体。 种群P(t)在完成选择、交叉、变异运算后得到下一代种群P(t+1);
(7)终止条件判断。当t<T时,未达到最优进化代数,则t=t+1,转到步骤(3), 继续执行选择、交叉、变异操作;当t>T时,达到最优进化代数,则输出当前适 应度最大的个体最为最优解,运算完成。
遗传算法的伪代码如下:
Procedure GA
begin
t=0;
Initialize P(t);
Evaluate P(t);
while P(t)<OPTSOLUTION && t<T
begin
t=t+1;
Select P(t) from P(t-1); Reproduce pairs in P(t); Evaluate P(t);
end
end
上述过程的遗传算法流程图如下:
图 4-1 遗传算法的流程图
Figure 4-1 Flowchart of Genetic Algorithm
4.3.1选择算子
选择算子在种群中选择环境适应性强的个体,是遗传算法优胜劣汰特点的体 现。特征函数是个体适应力的体现,函数值的高低体现了个体适应能力的强弱。 个体的适应力越强就越容易生存下来,把基因遗传到下一代;适应力弱的个体, 就容易被淘汰掉。进行完选择操作后,整个群体的适应度也会增加,遗传算法会 迭代进行选择、交叉和变异操作,最终找到最优解。
选择算子主要目的是让适应性强的个体得以生存,提高全局最优解的收敛概 率。选择算子对算法最终结果的优劣产生直接影响,若不能选取合适的选择算子, 就容易出现种群多样性的丧失,父代与子代的相似程度过高,最终导致进化停滞。 因此,为了保证遗传算法具有更好的收敛特性,要出设计一个高效的选择算子。
4.3.2交叉算子
与生物的进化过程类似,遗传算法的交叉算子模拟同源染色体配对形成新染 色体的过程。在遗传算法中,交叉算子能够产生新个体,保持种群的多样性,扩 大解空间的搜索范围。交叉算子是遗传算法中最重要的过程之一,交叉算子的好 坏直接影响到算法的收敛性能。
对交叉算子进行设计需要考虑交叉点的位置,交叉操作的具体形式以及交叉 的运算效率等。交叉算子[21]一般分为单点交叉、两点交叉、多点交叉、均匀交 叉和算术交叉等。其中单点交叉的做法是在群体中随机选取两个个体作为父代, 再随机选取一个交叉点,按照交叉概率进行交叉操作,从而达到基因重组的目的。 点交叉不会对染色体中的优良基因产生大的破坏,但进化速度较为缓慢,不容易 产生新的基因。而均匀交叉与它相反,容易破坏染色体中的优良基因模式。交叉 算子的选取决定了是否能将优秀的基因不被破坏,可以保留下来。因此,必须设 计出有效的交叉算子,以保证染色体中的优秀基因莫斯不被破坏。
4.3.3变异算子
生物学中的变异是指一些偶然的原因导致复制出现错误,致使生物的基因产 生突变,并因此产生了新的染色体,显示出新的生物特性。在遗传算法中,通过 突变算子模拟了这一过程,在完成交叉操作后对于某个个体会以一个较小的概率 对某个基因进行变异,形成新个体,增加种群的多样性。变异算子的操作与交叉 因子类似,需要先确定变异点,然后根据变异概率进行变异操作,用新产生的基 因替代变异点位置的原基因。
4.4遗传算法的研究与改进
在营养智能配餐系统中,智能配餐环节可以看成是寻优组合问题,对于这类 问题本文采用了遗传算法,并针对配餐实际情况的特点进行了改进。使智能配餐 系统能够在用户可以接受的时间内,得出准确,令用户满意的配餐结果。其改进 的重点有两个,一个是遗传算法的收敛速度,另一个是所得解的准确度。因此, 本文分别从选择因子、交叉因子以及适用度函数的选取这三个重点进行改进,在 传统遗传算法的基础上,提升遗传算法的收敛速度,并使解的精准度得到改善。 同时,针对配餐菜谱的特性,进行合理的编码,在选择算子的运算中,淘汰禁忌 食物,避免患者食用禁忌食物,实现构建针对疾病的饮食方案这一目标,并起到 辅助治疗的效果;选取合理的适应度函数,使患者的饮食营养均衡,热量摄入合 理,实现精准的智能配餐。接下来,本文针对传统遗传算法的不足并结合营养配 餐的特点,将理论与实践相结合,把所学到的知识付诸于实践,对传统遗传算法 进行改进。
4.4.1 选择算子的改进
在传统遗传算法中,通常的做法是将轮盘赌作为算法的选择方式,该方法简 单有效,并能取得较好的效果。具体做法如下:
1) 计算种群中全部个体的适应度,并将全部的个体适应度加起来,用个体 适用度除以总适应度,实现适应度的归一化;
2) 在0到1 之间随机选取一个数,用来进行选择操作;
3) 若归一化的适应度大于这个随机数,那么就选择该个体进入到下一步的 进化中,反之就淘汰该个体。
从上述过程我们可以看出,归一化适应度越大,那么被选中的机会也就越大。 这一过程类似轮盘赌的游戏,过程简单,也相对实用,但仍然存在着几点不足。 在种群初始化完成后,会出现适应度较高的个体,在进行选择操作时,适应度较 高的个体被选中的机会也就越大。某些含有少量优质的染色体被淘汰,只要少量 且固定基因模式得以保存,这大大降低了种群的多样性。种群中的基因种类过于 单一,很难从接下来的进化中获取新的基因,这样就会影响收敛速度,使整个算 法的性能也受到影响。
因此,本文对遗传算法的选择算子进行改进,具体的改进方法为:首先,根 据菜谱编号查询菜肴的可食用性,对种群中的全部个体按照可食用性进行一次排 序,由可食用性从高到底降序排出这些个体。其次,将这些排好序的个体从头到 尾分成三等份,并将最后一份删除,淘汰掉,不进入到下一代中,所淘汰的部分 也就是可食用性最低的1/4个体。然后,计算这3/4个体的适用度,按照适用度 从高到低降序对可食用性较高的 3/4的个体进行排序,删除并淘汰适用度最低的 1/3 的个体。最后,将所剩下的 1/2 个体全部复制一份,选择到下一代中,用于 抵消淘汰操作所带来个体减少的影响。结合以上几点,在下一代中能够得到数量 大小不变的种群,并使没有种群的大小发生变化。本文针对选择算子的改进方法 有几点好处:
1)将可食用性很低的菜谱直接淘汰,从根本上排除了患者食用到禁忌食物 的可能;
2)将适应度很低的个体直接淘汰,提升了算法的收敛速度;
3)适应度较好的个体的数目得以快速地增长,为之后的交叉变异提供了良 好的条件。
因此,这种选择方法在保留样本多样性的同时也兼顾了算法的收敛速度,保 证了算法的高效性。
4.4.2 交叉算子的改进
在传统遗传的算法中,交叉算子的交叉操作也比较简单,同时也存在几点不 足。传统遗传算法的交叉操作为:首先,在种群中寻找两个个体用于进行交叉操 作,通过一个固定的交叉概率来决定是否对这两个父代个体进行交叉操作。其中, 随机选择个体以及固定的交叉概率,这两个操作具有盲目性,并没有对个体的相 似度以及个体的特点进行考虑。这会导致父代个体中原本带有的优良基因模式会 受到破坏,严重影响了适应度的函数值,下在一代中也很难再获取优秀的基因组 合了。在膳食配餐系统中的影响就是优秀的菜肴组合破坏,使得原有的营养素和 热量无法达到规定摄入量,营养素或者热量总量无法满足患者的需求。这样的后 果也会导致适应度下降,因此遗传算法的收敛性会受到影响,例如该遗传算法不 能够收敛或者是收敛速度变慢了。
此外在实际的配餐过程中,还需要考虑患者近期食用菜肴的重复率问题。让 患者在几天食用同样的菜肴显然是不符合膳食营养学规律的,这会造成营养素的 组成单一,同时患者也会对同样的菜肴感到厌倦,导致整个配餐过程失败,无法 对患者的配餐起到指导意义。因此,在交叉运算的过程中,如何避免菜肴重复也 是亟待解决的问题之一。
结合以上两点,本文针对交叉运算进行了改进,使交叉运算可以在保证菜肴 不重复的情况下,可以得出优良的配餐组合,进一步提升遗传优化算法的性能。 在传统的遗传算法中,交叉操作以一固定概率进行,不考虑父代个体的相似度, 具有一定程度上的盲目性。对于相似度很高的父代个体仍然进行交叉操作往往是 没有必要的,这样的做法会使得原有的优良基因模式受到破坏,致使优良的基因 (即本系统的配餐方案)无法继续传递,使算法的收敛性受到影响,大大降低了 算法的效率。因此,本文在交叉运算中引入了相似度这一概念,通过计算父代个 体的相似度决定是否实行交叉操作。
相似度的定义如下,对于两个采用二进制编码个体,为了便于说明,令这两 个个体分别为个体X和个体Y,那么对于个体X和个体Y的相似度可由此公式 (4-1)计算:
相似度:s = c (4-1)
n
其中,s就是这两个个体的相似度,c是个体X中基因编码与个体Y中基因 编码相同的段数(即相同菜肴的个数), n 是整个个体基因编码段的段数(即全 部菜肴的个数)。从式中可以得出,无论怎样选择个体,两个个体的相似度都是 一个>0,并且<1的数,本文以0.5与(1-s)的乘积作为交叉概率Pc,即:
C
Pc =0.5 — 2n (4-2)
从公式(4-2)中可以看出,Pc也是一个>0,并且<0.5的数。同时如果相似度s 越低,那么交叉概率 Pc 就越高,两个个体进行交叉的操作的概率也就越大;同 时如果相似度 s 越高,那么交叉概率 Pc 就越低,两个个体进行交叉的操作的概 率也就越小。将相似度这一概念引入,并利用相似度动使交叉概率 Pc 动态变化。 在种群进化初期,个体间的差异较大,这时两个个体间的相似度也比较小,所以 交叉概率Pc较大,个体间进行交叉操作的可能性很大。当到种群进化的后期时, 个体间的差异会减小,相似度也会随之提高,那么交叉概率 Pc 会降低,个体间 进行交叉操作的可能性很小。因此在交叉算子中,使用交叉概率 Pc 随着个体间 的相似度进行动态改变具有理论基础,并且对于提高遗传算法的收敛速度是有帮 助的。基于配餐系统的特性,本文中采用多点的交叉方法实现交叉互换操作。下 边针对本文的交叉方法做出了说明。
出于对配餐系统的特殊性,菜肴的多样性,患者的膳食健康考虑,本文没有 采用传统的单点交叉操作,而是采用多点交叉操作。本系统的交叉运算采用多点 交叉运算的方法,其中菜肴的编码由 8 位二进制数组成,多点交叉运算以菜肴的 8 位二进制数整个作为一个交叉算子,将一个菜肴的编码整段进行交叉运算。这 样避免了被排除的可食用性较差菜肴再次被选中的可能。除此以外,在交叉运算 之前,还需检查双亲基因编码的子串是否与交叉算子的基因编码重复的菜肴,若 没有才会进行交叉运算,否则重新选取交叉算子。这样的做法保证了患者在近期 内不会使用重复的菜肴,保证了菜肴的多样性,符合营养学基础、临床营养学等 多门学科的理论基础。同时,也使得患者的营养摄入保持均衡,让患者对菜肴保 持了新鲜感。
4.4.3 变异算子的改进
变异算子是以较小的概率对个体的某个或者某些位进行特别的变化,形成新 的编码串,体现出不同的特征,增强种群的多样性。而变异概率是固定不变的, 在进化的后期过小的进化概率会使进化速度减慢,降低种群的多样性,容易出现 局部收敛的情况,也影响了算法的执行效率。
因此,变异概率应根据适应度做出一定的调整,这样才能在保证种群多样性 的同时保证优良基因的个体不受到破坏。基于以上原因,本文提出了一种动态变 异概率的计算方法,如公式(4-3):
(Pmin f S favg
Pm = [Pmin + dax - Pmin ) f > favg 3)
fmax -fmin
其中,Pmin是最小变异概率,设为0.01, Pmax是最大变异概率,设为0.5, f 为当前个体的适应度值, fmax 和 fmin 分别是该种群的最大和最小适应度值, favg 为该种群适应度的均值。从上式可以看出,若个体适应度高于或等于种群适应度 均值,当前个体会以最小变异概率,即 0.01,进行变异;若个体适应度低于适应 度均值,变异概率会根据适应度值进行自适应变化,变异概率动态变化范围 [0.01,0.5],当个体适应度最低时达到最大值 0.5。
对变异算子经过以上改进可以使个体的适应度较低时(配餐结果准确),发 生变异的概率较低,而适用度较高时,以较大的概率发生变异。经过以上改进, 该算法在保证适应度较大个体免受破坏的同时,也提高了种群多样性,增强了算 法局部搜索的能力,提高了收敛速度,进而提高了算法的执行效率。
4.4.4适应度函数
适应度函数是对问题优化目标的数学描述,适应度函数需要根据具体问题做 出相应的设计,同时要满足实际情况的要求。在遗传算法中,适应度函数的设计 会影响遗传算法的执行效率以及最终解与全局最优解的偏差距离。同时,遗传算 法的复杂度从很大程度上取决于适应度函数的复杂度,因此适应度函数应该采取 简单的运算过程,使计算过程简化,以至于能够降低适应度函数的复杂度。本文 遗传算法的适应度函数为:
f(c) = ci + c2 + cm 一 C (4-4)
Ci + C2 + …+ Cm — C 二 0 (4-5)
该适应度函数是根据患者实际配餐中营养素与热量的关系得出的,考虑到患者每 天摄入的热量应在满足日常所需的同时应尽量精准。公式(4-4)中,Ci + C2 +…+ Cm表示每道菜肴热量的摄入量,C是针对个体的日均应摄入热量值,它的单位是 千焦(kJ)。而公式(4-5)为适应度函数的约束条件,根据患者实际配餐的意义得 出的,表明每道菜肴热量的摄入量应该略大于热量摄入的标准值,这样才能保证 患者日均热量与营养摄入的均衡。其中,适应度函数f(c)表示配餐结果中热量摄 入值和标准值差值,算法目的为找出最适合患者的智能营养配餐方案,也就是热 量摄入量应略大于标准值,所以算法的适应度函数f(c)应尽量小。因此算法应在 满足条件约束的前提小,找到f(c)的最小值。
4.5改进遗传算法的实现
本文所采用的遗传算法对营养配餐系统中的实现步骤如下:
第一步: 确定算法中变量的值。患者输入个人基本信息,经过计算得出患者每日需摄 入的标准热量值C。利用朴素贝叶斯方法对配餐数据库进行计算,得出针对患者 配餐菜谱的后验概率。
第二步:
确定算法中参数的值。经过反复尝试和对比实验,得出最适合营养配餐系统 得遗传算法初始化参数,其中包括种群大小M,进化代数T,交叉概率Pc和变 异概率 Pm。
第三步:对各个菜肴进行编码,并保证使每种菜肴有唯一的编码。 第四步:利用变量和参数的值对算法进行初始化。
第五步:计算群体中每个个体的可食用性,并淘汰可使用性较低的1/3个体。 第六步:采用本文提出的适应度计算公式,计算群体中每个个体的适应度值, 淘汰适用度较低的1/4个体。
第七步:通过本文提出的相似度的计算公式,根据动态交叉概率 Pc 对个体 进行复制交叉互换操作,使个体数得到增加。
第八步:以自适应变异概率Pm对个体进行变异操作,增加种群的多样性。 第九步:若近三代的最大适应度与平均适应度的差值大于 30,并且进化代 数小于 200,转至第五步,否则至第十步。
第十步:此时满足终止条件,输出种群中适应度值最优的染色体作为本次配 餐的最优解,结束程序。
上面就是本系统的遗传算法的具体实现过程,改进遗传算法的应用使营养配 餐系统保证了运行时间,并且使系统能智能地针对患者的疾病进行配餐。在本系 统中,改进遗传算法的流程图如下:
4.6 本章小结
本章是配餐系统的核心内容,也是本论文的核心部分,这一章中,对遗传算 法加以研究并且进行改进,将改进遗传算法应用到营养智能配餐系统中并达成了 基于疾病与饮食联系进行配餐的这一目标。其中,应用改进遗传算法也保证了配 餐中营养与热量的均衡,配餐菜肴的多样以及运行时间的可控。
第 5 章 算法仿真结果
5.1改进遗传算法营养配餐系统的仿真结果
经过本文之前的描述,结合智能配餐系统的设计方案,本系统的执行结果为
一个针对患者所患疾病的配餐方案。在本系统中,根据患者疾病进行的配餐所提 供的热量应稍微大于患者的日均摄入热量。其中,日均摄入热量由公式(3-1)、
(3-2)和(3-3)计算得出,然而营养量与热量的差值越小就越表明配餐的结果
精确,更适合患者食用。下边以一位患者作为案例,对配餐系统进行仿真并加以
说明。本系统主菜单界面如图所示:
首页I登陆I注册
图 5-1 营养智能配餐系统主界面
Figure 5-1 Main interface of smart nutritious system 对于初次使用本系统的用户,需要在右上角进行个人信息注册,然后完成登 录。完成登陆后,用户可以进行配餐操作,首先需要输入自己的基础信息,本文 举例如下:
表 5-1 用户基本信息表
Table 5-1 User information table
姓名 性别 年龄 身高(cm) 体重(kg) 劳动强度 所患疾病
李明 男 45 172 80 轻度 高血压
图 5-2 用户信息输入
Figure 5-2 User information input
在用户提交基础信息后,系统会将用户信息保存至数据库中,并根据用户所 提供的信息对其身体状况进行分析,得出用户每日所需的营养和热量的摄入量。 分析结果如下:
表 5-2 用户身体状况分析结果表
Table 5-2 Result of user health
姓名 BMI指数
(kg/m2) 体型 日均总热量
(kJ) 蛋白质(g) 碳水化合物
(g) 脂肪(g)
李明 27 轻度肥胖 7176.3 65.3 214.6 48.2
用户点击“开始配餐”按钮后,就开始针对用户疾病的配餐。首先会应用朴
素贝叶斯模块计算所患疾病为高血压的各个菜肴可食用性,如表5-3 所示:
表 5-3 针对高血压的菜肴使用概率
Table 5-3 Probability of hypertensive patients' dishes
后验概率 后验概率 后验概率 后验概率
P(A1|Ii)=0.020 P(A2|Ii)=0.007 P(A3|Ii)=0.020 P(A4|Ii)=0.003
P(A5|Ii)=0.014 P(A6|Ii)=0.016 P(A7|Ii)=0.007 P(A8|Ii)=0.020
P(A9|Ii)=0.014 P(A10|Ii)=0.016 P(A11|Ii)=0.020 P(A12|Ii)=0.016
P(A13|Ii)=0.010 P(A14|Ii)=0.014 P(A15|Ii)=0.003 P(A16|Ii)=0.001
P(A17|Ii)=0.016 P(A18|Ii)=0.012 P(A19|Ii)=0.007 P(A20|Ii)=0.005
P(A21|Ii)=0.021 P(A22|Ii)=0.016 P(A23|Ii)=0.009 P(A24|Ii)=0.014
P(A25|Ii)=0.009 P(A26|Ii)=0.025 P(A27|Ii)=0.005 P(A28|Ii)=0.007
P(A29|Ii)=0.005 P(A30|Ii)=0.003 P(A31|Ii)=0.003 P(A32|Ii)=0.034
P(A33|Ii)=0.001 P(A34|Ii)=0.003 P(A35|Ii)=0.005 P(A36|Ii)=0.010
P(A37|Ii)=0.021 P(A38|Ii)=0.016 P(A39|Ii)=0.001 P(A40|Ii)=0.007
P(A41|Ii)=0.007 P(A42|Ii)=0.005 P(A43|Ii)=0.005 P(A44|Ii)=0.014
P(A45|Ii)=0.007 P(A46|Ii)=0.016 P(A47|Ii)=0.014 P(A48|Ii)=0.025
P(A49|Ii)=0.010 P(A50|Ii)=0.005 P(A51|Ii)=0.018 P(A52|Ii)=0.001
P(A53|Ii)=0.020 P(A54|Ii)=0.020 P(A55|Ii)=0.010 P(A56|Ii)=0.014
P(A57|Ii)=0.018 P(A58|Ii)=0.012 P(A59|Ii)=0.016 P(A60|Ii)=0.005
每道菜肴的可食用性由然后营养配餐系统中的遗传算法模块对菜肴进行优 选,此时用户需要输入配餐的要求比如:每日三餐,每餐三道菜。配餐过程将会 按照用户的有要求进行,得出患者的最终配餐结果,如表 5-4。
表 5-4 患者配餐结果
Table 5-4 Result of patient catering
患者每餐热量
实验编号 菜谱编号 菜肴名称 热量值(kJ) 菜谱总热量(kJ) 摄入(kJ)
10000010 鱼香肉丝 1042.9
1 10000032 凉拌苦瓜 538.5 2395.8
10000057 香菇油菜 814.4
10000040 猪肉炖粉条 1218.4
2 10000024 辣子鸡丁 965.1 2398.7 2392.1
10000012 手撕包菜 215.2
10000023 狮子头 1615.9
3 10000036 地三鲜 596.7 2396.1
10000038 凉拌海带 183.5
5.2改进遗传算法与传统遗传算法的比较
为了证明本文提出的改进遗传算法在智能配餐中的高效性与准确性,作者进 行了多次模拟配餐试验,并采用同样的初始条件对两种算法进行了比较与分析。 下面列出了采用传统遗传算法与改进遗传算法的配餐结果进行了对比,如表 5-5 所示。sss
表 5-5 算法的性能比较
Table 5-5 Performance comparison of algorithm
实验编号 算法 种群规模 进化代数 收敛时间
(ms) 配餐热量对比
(kJ) 标准热量摄入
(kJ)
1 传统遗传算法 100 200 26572 2401.4
改进遗传算法 100 200 18685 2395.8
传统遗传算法 100 200 26465 2403.2
2 改进遗传算法 100 200 18723 2398.7 2392.1
3 传统遗传算法 100 200 26239 2402.9
改进遗传算法 100 200 18367 2396.1
通过以上对比可以看出,在种群规模相同的情况下,改进遗传算法在平均收 敛次数和收敛时间上均小于传统遗传算法,其配餐的热量也更接近于患者热量摄 入的标准值,在执行效率与准确度方面均获得了提升。经过遗传算法模块对菜肴 进行优选后,得出了根据热量匹配的配餐结果,其中菜谱总热量值略大于患者每 餐热量摄入,其结果较为精准。实现了营养智能配餐系统的目标。
改进遗传算法那在选择算子中,添加了对食用性的分析与比较,使得算法可 以选择出适合患者食用的菜肴,直接淘汰禁忌菜肴,这使得收敛速度得到较大的 提升。并引入相似度这一概念,使得交叉操作能够以相似度为基础计算交叉概率, 将交叉概率动态化,从而提升算法的性能。对变异算子进行了自适应改进,使其 可以根据个体的适应度选取不同的变异概率,其可在[0.01,0.5]间浮动,在适应度 为当前种群最低时达到最大值,进而在变异运算环节,提高了种群的多样性。最 终使得本系统能够根据用户的不同病症提供准确,有效的配餐方案,并将营养配 餐进行推广。
5.3 本章小结
本章以举例的方式介绍了智能配餐系统的配餐流程,并通过配餐结果分析比 较了两种遗传算法的性能。结果表明,采用改进遗传算法在种群规模相同的情况 下,平均收敛代数要低于传统遗传算法的迭代次数,收敛时间也少于传统遗传算 法的收敛时间,具有良好的精准度。因此,改进遗传算法更适合在智能营养配餐 系统中使用。
结 论
在传统的营养配餐过程中,往往需要营养师对患者的日常饮食、生活规律和 患有疾病做出分析,才能制定出准确有效的配餐方案。现阶段这种传统的营养配 餐方案一般只针对术后恢复期的病人、糖尿病患者等等,其过程复杂、专业性强, 需要大量的人力投入,导致推广难度大,只能给小部分人提供准确有效的配餐方 案,无法满足个体对配餐的需求。而随着人们生活水平的提高,对营养配餐的需 求也与日俱增,人们希望自己的饮食能够更加健康与合理。因此,本文提出了一 个能满足个人的营养需要的配餐方案,并对其加以实现。本文通过对疾病与膳食 的关系的发现,提出了应用遗传算法解决疾病与膳食的智能配餐方案,并且在论 文中对遗传算法进行了研究,并进行了改进。
本文的核心是营养配餐系统以及基于营养配餐对遗传算法进行优化,内容如 下:
1)介绍了智能配餐的思路以及详细的配餐流程;
2)针对贝叶斯方法进行了详细的说明,介绍了贝叶斯方法的基础知识以及 贝叶斯方法在本系统中的应用;
3)阐述了智能配餐系统实现目标、功能设计以及模块划分,并详细介绍了 数据库的实现方法;
4)说明了遗传算法的由来以及基础概念与流程,并详细阐述了遗传算法中 选择运算、交叉运算和变异运算的原理。对遗传算法的选择运算和交叉 运算做出了改进,并且提出了针对营养智能配餐系统得适用度函数的计 算方法;
5)以举例的方式介绍了智能配餐系统的配餐流程,并通过配餐结果分析比 较了两种遗传算法的性能。
经过改进的遗传算法在收敛速度和准确度上均有所提高,适用于智能配餐系 统,对于不同患者能够给出适合其疾病的配餐方案,能满足用户使用的要求。本 文将优化算法运用到营养配餐领域,为这一算法的应用开辟了新的空间。智能配 餐系统能够给每个用户提供针对其自身身体条件的准确有效的配餐方案,保证营 养素与热量的摄入均衡,能够满足人们日益增长的对营养配餐的需求。同时也让 日常饮食具有科学性,更加规范与合理,通过改善食物的摄入从而调整饮食结构, 从一定程度上降低了患慢性病的风险。
本文采用遗传算法实现了针对疾病的智能配餐系统,能够根据患者的身体状 况与病症进行准确的配餐,对患者的日常饮食起到了指导作用,同时对于患者的 疾病也达到了辅助治疗的目的。本文结合临床营养学的原理与知识以及患者疾病 的特性,即保证了日常所需的营养素的摄入,也合理地规避了病症禁忌食物的食 用风险,满足了人们日益增长的疾病配餐需求。因此,本文经过分析与研究设计 出的智能配餐系统具有实用价值。针对疾病的智能配餐系统,将计算机优化算法 应用到了营养膳食领域,为这一交叉学科的研究提供了开了新的空间;同时,通 过对遗传算法的改进使该算法能够更快速的收敛,最优解也更准确,为改进优化 遗传算法的研究提供了新的思路。
参 考 文 献
[1]孙力娟,王汝传.量子计算与遗传算法的融合及其在计算机通信网优化中的应用[J].电子 与信息学报, 2007,04:920-923.
[2]高静.基于遗传算法的农产品运输系统的设计与实现[D].郑州大学,2011.
⑶ 季艳芳.两种智能优化算法及其收敛性分析[D].华中科技大学,2011.
[4]马立肖,王江晴.遗传算法在组合优化问题中的应用[J].计算机工程与科学,2005,07:72-73.
[5]毛健,赵红东,姚婧婧.人工神经网络的发展及应用[J].电子设计工程,2011,24:62-65.
[6]赵雪梅.遗传算法及其在TSP问题求解中的应用[J].四川兵工学报,2009,11:22-27.
[7]陈曦.改进的遗传算法及其在模具优化设计中的应用[D].大连理工大学,2007.
[8]王莉,汤灵愈.基于设计模式的遗传算法类库的框架模型[J].科技创新导报,2008,03:7-8.
[9]孙凌燕.贝叶斯分类算法研究及其在隧道病害预测中的应用[D].北京交通大学,2009.
[10]周龙杰.后验估计在动目标检测中的应用研究[D].汕头大学,2013.
[11]付双.基于贝叶斯网络的CBTC故障诊断[D].北京交通大学,2012.
[12]郑冬冬.基于贝叶斯网络的图像型垃圾邮件识别研究[D].江苏大学,2010.
[13]张启宁,叶继华,丁树良.改进的朴素贝叶斯在试题自动分类中的应用研究[C].教育技术 昆明高峰论坛,2009.
[14]王国才.朴素贝叶斯分类器的研究与应用[D].重庆交通大学,2010.
[15]董桂伟.拉延压力机多连杆机构运动分析与优化设计[D].山东大学,2006.
[16]臧辉.遗传算法及其应用[J].武汉科技学院学报,1998,18(4):27-29.
[17]毕晋芝.遗传优化的K均值聚类算法[D].太原理工大学,2010.
[18]王莉,汤灵愈.基于设计模式的遗传算法类库的框架模型[J].科技创新导报,2008,03:7-8.
[19]白雪松.自适应遗传算子解决排课问题的研究[D].内蒙古大学,2009.
[20]龙文.自适应调整子种群个体数目的遗传算法及其应用[J].兰州理工大学学 报,2013,04:80-84.
[21]张秀兰.基于遗传算法的模糊聚类技术研究及应用[D].西安科技大学,2009.
[22]顾景范,杜寿纷,查良锭等.现代临床营养学[M].科学岀版社,2003:5-30.
[23]Gilles Brassard Paul Bratley.算法基础[M].邱仲潘,柯渝,徐锋.清华大学岀版,2005, 7:344-357.
[24]黄文奇,许如初.近世计算机理论导引-NP难度问题的背景、前景及其求解算法研究[M]. 科学岀版社,2004,6:8-24.
[25]张小雯,陈勋.食谱设计中的食物重量速算法的研究与应用[J].1996(l):18-20.
[26]吴良清,吴秉俊.微机用于膳食结构分析和营养状况评价[J].营养学 报,1988,10(6):196-197.
[27]陈艳秋,陈霞飞,梁惠芳等.“营养膳食分析与配制”营养软件的设计及应用[J].计算机医 学应用,2000,13(l0):526-527.
[28]张小雯,陈勋.食谱设计中食物重量速算法的研究与应用[J].1996,3(l):18-20.
[29]中国营养学会理事会,推荐的每天膳食中营养素供给量的说明[J].营养学 报,1990,12(1):1-9.
[30]郭仕生,苏君,卢洪胜.优化设计应用[M].北京:电子技术岀版社,2003.8.1.
[31]James A.Hendler. Expert Systems: The User Interface[M]. Intellect Books, 1998:1-183.
[32]陈文伟,黄金才.数据仓库与数据挖掘[M].人民邮电岀版社,2004.5:164-176.
[33]SilberschatzA, KorthHF, Sudarshans .数据库系统概念[M].杨冬青,唐世渭等.机械工业岀 版社, 2002:1-21.
[34]蔡自兴.人工智能及其应用[M].清华大学岀版社,2004,4:202.
[35]EthemAlpaydin.机器学习导论[M].机械工业岀版社,2009: 26-3&
[36]J.H. Holland. Adaptation in Natural Artificial Systems [M].MIT Press,1975:1-17.
[37]黄少荣.遗传算法及其应用[J].电脑知识与技术.2008(34).
[38]曹道友.基于改进遗传算法的应用研究[D].安徽大学,2010.
[39]Darwin著.物种起源(周建人译)[M].北京:科学岀版社,1996.
[40]Erie J, Panl R, NilanjanD. Genetic algorithm wavelet design for signal Classification[J]. IEEE transom pattern analysis and machine inielligenee.2001, 23(8):890-895.
[41]玄光南,程润伟,遗传算法与工程优化[M].北京:清华大学岀版社,2004.
[42]刘铁男,刘斌,梁福贵一种带局部搜索策略的遗传算法及其应用[J].大庆石油学院学报, 2005, 29(2):76-78.
[43]吴少岩,许卓群.遗传算法中遗传因子的启发式构造策略[J].计算机学报,1998,(l).
[44]孟佳娜,王立宏.具有自识别能力的遗传算法求解旅行商问题[J].计算机工程与应用, 2006:26(13):51-52.
[45]张文,李样.基于优化组合的遗传算子的研究与应用[J].数值计算与计算机应用,2005, 26(3):208-214.
[46]巩敦卫,潘凤萍.自适应遗传算法理论与应用[M].徐州:中国矿业学岀版社,2003.
[47]王小平,曹立明.遗传算法的理论、应用与软件实现[M].西安:西安交通大学岀版社,2002.
[48]贺一,邱玉辉,刘光远等.多维背包问题的禁忌搜索求解[J].计算机科学,2006, 33(9):169-172.
[49]S. Kotsiantis, Feature selection for machine learning classification problems: a recent overview [J], Artificial Intelligence Review. 2011:1-20.
[50]C.Elkan. Boosting and Naive Bayesian Learning In Technical Report CS97, Dept of Computer Science and Engineering [J], Univ Calif At San Diego, Sept. 1997.
[51]M.Missikoff, R.Navigli, P.Velardi. Integrated Approach to Web Ontology Learning and Engineering [J]. IEEE Computer,35(1 1).November2002:60-63.
[52]Qiusha Zhu, Lin Lin, Mei-Ling Shyu, Shu-Ching Chen, Feature Selection Using Correlation
and Reliability Based Scoring Metric for Video Semantic Detection[C], IEEE Fourth International Conference on Semantic Computing, 2010: 462-469.
[53]H.Ogura, H. Azano, M. Kondo, Comparison of metrics for fe ature selection in imbalanced text classification[J], Expert Systems with Applications. 2011, 38(5):4978-4989.
[54]Y.Saeys, I.Inza, P. Larranaga, A review of feature selection techniques in bioinformatics [J],
Bioinformatics. 2007,23(19):2507-2517.
[55]R. Cai, Z. Hao, X. Yang, W. Wen, An efficient gene selection algorithm based on mutual
information[J], Neurocomputing. 2009,72(4-6):991-999.
[56]Frank E. Data Mining: Practical Machine Learning Tools and Techniques with Java Implementations [J]. Seattle: Morgan KaufmannPublishers,2000. 265-314.
[57]Kaizhu Huang, Irwin King, Michael R.Lyu. Learning Maximum Likelihood Semi-Naive
Bayesian Network Classifier[J].2002.