英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料
LibRCGA:一个用于动力学模型快速参数估计的实数编码遗传算法C语言库
Kazuhiro Maeda1,2,a) Fred C. Boogerd3 Hiroyuki Kurata2,4
收到:2018年4月11日,接受:2018年6月25日
摘要:动力学建模是理解生化系统整体行为的有力工具。为了开发一个现实的、可预测的模型,需要估计动力学参数使得模型符合实验数据。然而,参数估计仍然是动力学建模的主要瓶颈。为了加速参数估计,我们开发了一个用于实数编码的遗传算法C语言库(libRCGA)。在libRCGA中,两种实数编码的遗传算法(RCGAs),即具有最小代沟的单峰正态分布交叉(UNDX/MCG)和仅具有代沟的实数编码集成交叉(REXstar/JGG),用C语言实现,并与消息传递接口(MPI)并行。我们设计libRCGA是为了利用高性能计算环境从而显著加速参数估计。约束优化公式有助于建立满足多个生物学约束的真实动力学模型。libRCGA采用随机排序法有效地求解约束优化问题。在本文中,我们通过基准问题和实际参数估计问题来演示libRCGA的性能。libRCGA可在http://kurata21.bio.kyutech.ac.jp/maeda/index.html免费获得学术使用。
关键字:仿真,全局优化,约束优化,系统生物学
1.介绍
动力学建模是理解生化系统整体行为的有力工具[1]。为了开发一个现实的和可预测的模型,需要估计动力学参数,以便模型符合实验数据。这个过程被称为参数估计(见参考文献[2], [3], [4], [5], [6])。越来越多的生物学参数可从数据库中获得,如BRENDA[7],[8],SABIO-RK[9]和BioNumbers[10]。然而,由于它们中的大多数是在不同的实验环境下测量的,并且通常是在体外,因此开发一个捕捉体内细胞行为的动力学模型[11]仍然需要对参数值进行微调。因此,参数估计仍然是动力学建模的主要瓶颈[2],[5]。
参数估计是一项计算要求很高的任务。动力学模型被描述为一个常微分方程(ODEs)系统。为了评估模型预测和训练实验数据之间的拟合,常为刚性的常微分方程系统需要进行数值积分,导致计算时间[12],[13]较长。此外,参数估计问题往往是具有多个局部最优解的困难优化问题。对于这样的问题,基于梯度的确定性算法很容易陷入局部最优。基于种群的随机算法在这方面更优越[15],[16]。然而,基于种群的随机算法的一个缺陷是它们为群体中的每个个体评估目标函数,涉及大量的计算成本。因此,在高性能计算(HPC)环境中进行参数估计至关重要。
许多优化算法最初是为无约束优化设计的。然而,约束优化对于构建满足几个生物学约束的真实动力学模型更有用[17]。关于模型的先验知识或有根据的猜测(例如,某个速率常数大于另一个速率常数,或者代谢物浓度必须小于10毫米)自然可以作为约束条件纳入参数估计问题[2]、[14]、[16]、[18]。
为了加速动力学建模中的参数估计,我们开发了一个实数编码遗传算法C语言函数库(libRCGA)。在libRCGA中,两种实数编码的遗传算法(RCGAs),即具有最小代沟的单峰正态分布交叉(UNDX/MCG)和仅具有代沟的实数编码集成交叉(REXstar/JGG),用C语言实现,并与消息传递接口(MPI)并行。我们设计libRCGA是为了利用高性能计算环境并加速参数估计。为了有效地解决约束优化问题,可以将这两种随机排序方法结合起来[22],[23]。在本文中,我们描述了libRCGA的特点,并通过基准问题和实际的参数估计问题证明了它的性能。
2.方法
2.1参数估计
参数估计问题可以表述为优化问题:
最小化f(x), (1)
受限于g(x) le; 0, (2)
xlb le;xle;xub, (3)
其中x = (x1,x2,...)是带有决策变量的向量,f是目标函数,g = (g1,g2,...)是带有约束函数的向量。若gi为正值,说明第i个约束实效。xlb和xub分别表示下限和上限。式(3)定义了搜索空间。满足式(2)的子空间称为可行域。式(1)-(3)共同表示了一个约束优化问题。在无约束优化问题中,式(2)可以被省略。
在参数估计方面,决策变量(x)表示待估计的动力学参数,f评估模型对实验数据的拟合。gi是动力学模型必须满足的约束条件。
2.2遗传算法
遗传算法(GAs)是灵感来源于生物进化的超启发式技术[13],[14]。基本程序如下所示。在这项研究中,初始群体和子代群体大小在面向基准问题时设置为200,在面向生物学测试问题时设置为350。对于UNDX/MGG,父代数量为3,对于REXstar/JGG,父代数量在3-101之间,取决于问题本身。
(1)生成一个初始种群,其中每个个体都由一组不同的决策变量值来表征。
(2)从种群中选择一个子集(称为父代)。
(3)使用所选的父代(在群体之外)生成子代。
(4)选取一些适应度较好的子代(即目标函数和约束函数的值较小)。
((5)用被选择的子代取代种群中的父代,从而形成一个部分改变的种群,同时保持个体总数。
(6)如果新种群不满足终止准则,则返回步骤(2)。
通常,当获得一个足够好的个体,或者代数达到预定义的最大数目时,上述过程就终止了。到目前为止,已经提出了很多种遗传算反法,它们在每个步骤的实现上有所不同。为了估计参数,实数编码的遗传算法(RCGAs)正被用在上述框架中[步骤(1)-(6)]有一系列动力学参数(比如一个实数向量)被当做个体处理的研究中。在参数估计中,第(4)步的拟合良好意味着对训练实验数据的拟合也良好。
图1.libRCGA概述。libRCGA包含两个实数编码遗传算法:UNDX/MGG和REXstar/JGG。这些实数编码遗传算法可以和两种排序方法中的一种相结合:朴素法或随机法。这些实数编码遗传算法既可以串行运行又可以并行运行。
2.3libRCGA(建议的库)
由于参数估计问题的计算成本很高,因此在多核、多节点的计算环境(如超级计算机)中进行参数估计是非常重要的。为此,我们开发了libRCGA,使用户可以在不深入了解C语言和RCGAs的情况下,在高性能计算环境中进行快速参数估计。libRCGA可以作为库函数在任何C程序中使用,并安装在HPC环境中的标准操作系统Linux和UNIX上。libRCGA也可以在Windows(使用Cygwin)和macOS的标准个人电脑上使用。LibRCGA提供免费学术使用,网址:http ://kurata21.bio.kyutech.ac.jp/maeda/index.html,
在GNU General Public License v3.0.目录下。libRCGA的总体概况如图1所示。libRCGA目前包含两个实数编码遗传算法:UNDX/MGG和REXstar/JGG。为了解决约束优化问题,用户可以使用随机排序方法[22],[23]。RCGAs可以作为串行或并行计算程序运行。由于串行和并行版本具有相同的接口,用户不需要为并行计算重写源代码。
RCGAs并行化使用主-从模型,主进程给从进程发送个体。从进程对每个个体的目标函数和约束函数进行评估,然后将其发回给主进程。
2.3.1 UNDX/MGG
UNDX/MGG分别采用UNDX[19]和MGG[20]作为交叉方法和代间交替方法。UNDX/MGG首先被有效用于透镜系统设计并一直被用于动力学建模的参数估计。最近,我们中的两个人使用UNDX/MGG估算了大肠杆菌中心碳代谢[17]动力学模型中的351个参数。
UNDX[19]使子代能够继承父代的统计特征,如均值和方差-协方差矩阵[31]。因此,所产生的子代和父代是相似的。在早期遗传算法中,过早收敛是主要问题之一:如果一个好的个体在初试几代出现,它就会控制整个种群,而其他的个体就会灭绝,导致同质种群陷入局部最优[5]。MGG[20]通过只允许每一代数量的微小变化来防止这种过早的收敛:MGG每代最多更新两个个体。补充材料《UNDX/MGG算法》第1.1节对算法进行了简要描述。补充材料可以在网上找到。
2.3.2 REXstar/JGG
REXstar/JGG分别采用REXstar交叉法和JGG代间交替法。REXstar/JGG已经应用于代谢通路模型[32]的参数估计和遗传网络[33]的简化s系统模型的推断。
在种群覆盖的最适宜的条件下,UNDX/MGG效果良好。然而,在高维问题中,由于相对于巨大的搜索空间而言,种群数量太少,这一条件并不能总被满足。此外,MGG每代最多更新2个个体,避免了过早收敛,但导致搜搜过程缓慢。 REXstar/JGG克服了这些限制。REXstar并不保留父代群体的统计特征,而是将子代向搜索空间中可能区域演化。JGG每一代都用子代替换所有的父代,加快了搜索速度。补充材料《REXstar/JGG算法》第1.2节对算法进行了简要描述。
2.3.3处理约束优化问题
UNDX/MGG和REXstar/JGG最初是为无约束优化问题设计的。这里我们解释如何使用UNDX/MGG和REXstar/JGG来处理约束优化问题。为了估计约束是否符合约束优化问题,惩罚函数phi;定义如下:
其中x=(x1,x2,...)是决策变量向量,gi为第i个约束函数,n为约束函数的个数。指数alpha;通常是1或2[34][35]。由于竞争对手libSRES(见下文)将alpha;置为2,我们使用他来进行公平比较。gile;0表示满足第i个约束,phi;=0表示满足所有约束。在约束优化问题中,目标函数f(见等式(1))和惩罚函数phi;都需要降低。这里的问题是如何根据这两种方法对人群中的个体进行排名。
对于无约束优化问题,排序比较简单:当满足以下条件时,个体x1优于另一个个体x2:
由于无约束化问题中没有约束函数,所以只使用目标函数f进行排序。
对于约束优化问题,处理约束的最简单方法之一是下面的方案(在参考文献[23]中称为过度惩罚方法)。当满足以下两个条件之一时,x1优于x2[35]:
图2.使用类似冒泡排序过程[22]、[33]的随机排序方法。Xj为第j个个体(即决策变量向量)。初试序列是随机的。U(0,1)是一个均匀随机数生成器。np是群体大小。pf具有不同的phi;值时,只有f被用于个体比较的概率。研究表明,当0.4<pflt;0.5[22]时,随机排序是有效的。当pf=0时,随机排序作为朴素排序(见正文).第四条线在[22]、[23]方法的基础上做了些修改:我们使用“phi;(xj) = phi;(xj 1)”来代替“phi;(xj) = phi;(xj 1) = 0”。
phi;(x1) = phi;(x2) AND f(x1) lt; f(x2), (7)
因此,认为更少违反约束(等式(6))的个体由于另一个个体,而且当两个个体有相同的phi;值时,我们认为更倾向于拥有更低f的个体。在本研究中我们将改方案称为朴素排序。朴素排序的问题是,由于不可行个体被快速从种群中被剔除,是的种群在搜索空间中很难移动,当搜索空间中包含多个可行区域且这些可行区域被不可行区域[22]分隔时,搜索效果会降低。在其他一些研究中,“=0”被放在等式(7)的“AND”之前。然而,我们不喜欢使用“= 0”,因为我们认为当phi;(x1) = phi;(x2)和f(x1) lt; f(x2)都满足时,即使phi;(x1)ne;phi;(x2)ne;0. 出于同样的原因,我们对随机排序代码进行了略微修改(见下图和图2)。
随机排序在f和phi;之间实现了适当的平衡并将不可行个体持续作为种群在种鸽搜索空间[22]中可行区域见移动的潜在桥梁。在随机排序中,任意一对相邻个体的f值或phi;值都进行比较。参数pf用来确定在比较不同phi;值的个体时只使用f的概率。随机排序[22]、[23]的类冒泡排序过程如图2所示。随机排序在libRCGA中实现,并且可以与UNDX/MGG和REXstar/JGG结合。
2.4libSRES(已有的库)
在本研究中,我们通过与libSRES[36]的比较,验证了libRCGA的性能。libSRES是由Ji and Xu[36]开发的随机排序进化策略(SRES) C库。SRES是与随机排序[23],[36]结合了的改进的(mu;,lambda;)-进化策略(ES)。在改进的(mu;, lambda;)-ES算法中,不使用RCGAs中常用的交叉算子来生成子结点。相反,子代是通过变异被选中的父代而产生的。平均步长(突变幅度)由子代调整和继承。每个mu;父代生产lambda;/mu;子代,以保持种群大小lambda;。已有研究表明,SRES在动力学模型[15]中具有良好的参数估计性能。一些应用程序使用SRES作为[37],[38],[39],[40]参数估计
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[261045],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。