摘要
第5章人工代谢算法
人工代谢算法是一种基于酶催化模拟生物体新陈代谢机理的仿生算法。代谢反应的核心是浓度的平衡,在酶对底物的催化效率达到优选且代谢反应实现平衡时,代谢系统的性能指标处于很优状态。如果将待优化的目标函数看作代谢反应速率,酶的催化过程则可视为对目标函数的优化过程。当反应实现平衡时,代谢速率取得稳态优选值,即目标函数取得优选值。本章简要介绍人工代谢算法的原理、编码、竞争算子、平衡算子、凋亡算子等代谢算子的描述及算法实现流程。
5.1人工代谢算法的提出
人工代谢算法(Artificial Metabolic Algorithm, AMA)是2009年由胡杨和桂卫华以生物体新陈代谢机理为模型提出的一种基于酶催化的仿生算法[21?24]。AMA面向的对象是一个网络化的控制系统,算法通过模拟生物体新陈代谢的环境,以代谢物浓度差及底物与酶的契合程度为控制量对系统变量进行调节。它的控制目的是使整个代谢网络的流量趋于平衡和协调,这与网络控制的目的恰好一致。因此,从定性的角度来说,人工代谢算法可以实现对复杂系统、多对象多目标系统较好的实时控制。起初,人工代谢算法用于解决多对象物流配送优化问题。后来,胡杨和桂卫华又将人工代谢算法用于解决TSP问题、多对象调度问题及故障诊断问题。
5.2人工代谢算法的原理
人工代谢系统是在分析生物体新陈代谢规律的基础上,通过对酶识别能力、酶催化下细胞各类递阶调控模式的分析和模型抽象而成的一类模拟人的代谢系统。从生物化学层次看,任何代谢系统网络都是由一些支路连接而成的。对单条代谢支路的代谢反应模式为
A+BxC+D(5.1)
其中,A、B为底物; C、D为生成物; x为催化酶。双向箭头表示该反应可以平衡移动,是可逆反应。
若底物浓度高于生成物浓度,此时酶起到正向催化作用,反应过程向合成生成物方向进行; 若生成物浓度高于底物浓度,此时酶表现为逆向催化作用,反应过程向合成底物方向进行。在此处,酶只起常规的催化作用。若遇特殊情况,即使底物浓度低于生成物浓度,也可以通过调节酶的浓度来改变反应过程的方向,迫使反应向合成生成物方向(正向催化方向)进行,以实现整个网络的代谢平衡。对可逆反应而言,通常提到的酶是指对正反应起加速作用的催化剂。而实际上,也存在促使化学平衡向逆反应方向进行起到抑制剂的作用。为了统一起见,对酶是正、逆反应催化剂的统称,其在算法中的作用通过平衡算子来统一表征。
由于酶对底物具有较强的选择契合性,对于不同的底物,需要不同的酶来与之发生催化作用。通过设计竞争算子来体现酶与底物催化时的专一性。同时,生物体细胞发育机制研究表明,染色体端粒(Tefomeres)的DNA序列都随着细胞分裂次数的增加而进行缩短。在真核生物染色体中具有特殊的结构端区,即端粒区。细胞每次分裂,都由一种特殊的酶即端粒酶(Tefomerase)负责将全部端粒重复序列加到子染色体上。但该酶总是只在配子细胞和癌细胞中存在。在一般的体细胞中,端粒酶数量下降,端粒变得越来越短。染色体丢失的不仅是非编码的重复序列,而且还危及基因编码。染色体一旦缩短到临界长度,细胞便会死亡。这就是多细胞生物衰老的端粒学说。据此,根据酶催化底物的专一性设计了凋亡算子,随着代谢网络中特定回路平衡的实现,对应催化该回路底物的酶开始凋亡。这一过程是为了降低计算成本,避免产生不必要的代谢计算。
人工代谢算法原理的核心是浓度平衡。当各条支路及整个代谢网络实现底物与反应物浓度达到协调平衡时,新陈代谢处于最旺盛阶段,对应的目标函数也将获得很优值。其中,当目标函数达到很优值时,对应的代谢浓度将达到稳态平衡,代谢过程的反应率也将达到稳态平衡,此时的代谢物数值对应目标函数的很优值。
5.3人工代谢算法的描述
1. 浓度平衡与代谢算子
在人工代谢系统中,底物、反应物的初始浓度由输入输出物理量决定。系统输入输出量关系决定代谢反应率的初始值。AMA算法将“浓度平衡”即“浓度差”作为适应度函数,根据代谢支路上的代谢物的多少决定对应催化酶的浓度。
通过平衡算子和抑制算子等代谢算子对代谢浓度进行调节,浓度差越大,则调节幅度也越大。经反复循环调节,浓度的变化率为0(即浓度差为0),实现浓度平衡。此时系统已接近畅通,代谢量和代谢率也逐渐趋于稳定。此时从底物到生成物之间形成一条很优的代谢通路。代谢物数值达到优选,所对应的目标函数值优选而获得很优解。
凋亡算子适用于多酶调控的代谢体系,凋亡算子只取全0和全1两种情形。当酶所催化的代谢反应未达到平衡时,该酶的凋亡算子置全0,表示酶尚未退出代谢体系; 当酶所催化的代谢反应已达到平衡时,该酶的凋亡算子置全1,表示酶退出代谢体系,在余下的反应中不再考虑该酶的作用。
2. 人工代谢算法的编码
设有代谢反应方程为式(5.2)、式(5.3),其中A和B为底物,P和Q为生成物,E为催化酶。在代谢规律中,酶E先与底物结合,生成中间复合物,再生成最终生成物。具体结合方式如式(5.3)所示。
A+BEP+Q(5.2)
A+B+E[AE]+B→E+P+Q(5.3)
其中,[AE]为中间复合物。酶E先与底物A结合产生中间复合物[AE],再释放出生成物P、Q并还原生成催化酶E。
基于共价催化的原理,人工代谢算法的编码规则如下。
底物A和B的浓度区间为[0,1],由底物A和B的量各占整个反应平衡方程中全部物理量的比例可计算出浓度。在人工代谢算法中,代谢物(包括底物和生成物)和酶的编码都用二进制位串表示。
假设采用n位二进制代码的编码方式,即将底物实际浓度和酶的浓度各映射成[0,2n-1]上的0、1组成的编码串。中间代谢物通过底物和酶对应位置上的0、1值经过“同或”逻辑的操作得到。例如,设底物A的编码为00101101,酶E的编码为10110001,则中间物[AE]的编码由A⊙E可得到,即为01100011。显然,当中间物[AE]的编码达到11111111时,代谢平衡予以实现。这样编码的优点在于充分体现底物与酶的契合程度,从直观意义上进一步加强了算法自身的生化背景和寻优意义。
3. 竞争算子的设计
通过对生物化学中相关知识的分析,可以发现酶的催化作用有很强的选择性。对于不同的底物有不同的选择性。设有两个不同的底物A1、A2,酶E对它们的契合程度很可能有较大的差距。通过引入竞争阈值h1来评价契合程度,设待优化函数y=f(x),其中自变量x的二进制编码(即为底物A的编码),反过来底物A的二进制串解码成对应的十进制数(即为f函数的自变量x)。
设底物A1、A2分别对应的十进制数为x1、x2,当满足式(5.4)时,说明底物A1的代谢量大于底物A2的代谢量,且底物A1与酶的契合程度要大于底物A2与酶的契合程度,因此底物A1较之于A2是更为理想的代谢物,因此A1应保留进入下一轮的代谢选择; 当满足式(5.5)时,说明底物A2的代谢量大于底物A1的代谢量,且底物A2与酶的契合程度要大于底物A1与酶的契合程度,因此底物A2较之于A1是更为理想的代谢物,因此A2应保留进入下一轮的代谢选择。当式(5.4)、式(5.5)均不能满足时,说明A1、A2相互之间无明显的竞争优势,因此随机选择A1、A2中的任一个进入下一轮的代谢。
f(x1)-f(x2)f(x1)+f(x2)≥h1
f(x1)-f(x2)f(x1)+f(x2)≥0(5.4)
f(x1)-f(x2)f(x1)+f(x2)≥h1
f(x1)-f(x2)f(x1)+f(x2)≤0(5.5)
4. 凋亡算子的设计
设计凋亡算子的目的是淘汰与酶过分不相匹配的底物,而对应产生新的底物。其设计过程如下。
设立凋亡阈值h2,对任意底物A1,对于已给定的酶E而言,基于“同或”逻辑操作计算出其中间代谢物[A1E],设中间代谢物[A1E]对应的十进制数为k1,各位全为1时的中间代谢物对应的十进制数为k2(显然,当编码位数为n时,k2=2n-1)。当满足式(5.6)时,说明底物A1与酶E匹配程度过低,底物A1应予以凋亡,而用新的底物A2来代替。
由于代谢操作希望中间代谢物的同或结果尽可能接近全为1,因此新底物A2的产生过程如下。
设代谢物采用n位编码,则底物A1与酶不契合的程度可定义为m位,m值可由式(5.7)得出,其中函数round()表示对自变量进行四舍五入取整运算。
k1k2≤h2(5.6)
m=roundk1k2×n(5.7)
得到m后,在组成A1的二进制串的n位编码中随机选择m位编码进行取反操作,得到的结果即为A2。显然,A2与E的契合程度要高于A1与E的契合程度。这时A2代替A1进入下一轮的代谢计算。当不能满足式(5.6)时,说明A1尚未达到凋亡的程度,则保留A1进入下一轮的代谢计算。
5. 平衡因子和拟制因子的设计
代谢反应的平衡是维系生命活动的关键。平衡算子的目的是当代谢平衡不能持续时,产生新的代谢物来尽可能保持代谢中间物的优选化。设有底物A、B和生成物C、D,在式(5.1)中作为可逆反应,酶可完成双向催化功能。故式(5.1)等价于式(5.8)中4个反应的合成。
A+BE[AE]+B?C+D
A+BE[BE]+A?C+D
C+DE[CE]+D?A+B
C+DE[DE]+C?A+B(5.8)
在式(5.8)中,酶是所有能催化代谢物的作用的统称。当反应实现平衡时,酶与各物质之间的总体协调功能达到不错。从式(5.8)可以看出,当酶E确定时,4个方程中只有3个是彼此独立的,故而可以由其中的任意3个代谢物推出第四个代谢物。如果设A、B、C的编码已知,则中间代谢物[AE]、[BE]、[CE]、[DE]的二进制编码可以由“同或”逻辑得到。例如,由A的二进制编码与E的二进制编码的“同或”可以得到[AE]的编码。
设P1=[AE],P2=[BE],P3=[CE],当代谢实现平衡时,P1、P2、P3应尽可能达到全为1。设P=P1⊙P2⊙P3,显然,P也尽可能达到全为1。再令P4=[DE],由代谢平衡条件,P与P4应尽可能接近。故可知当达到接近理想平衡状态时有P4=P成立。代谢物D的编码可用如下方法得到: 逐位对比P和E的二进制位串,设对第i位,P(i)=E(i)时,D(i)=1; P(i)≠E(i)时,D(i)=0; 这样做的意义在于使D与E的匹配程度与P的取值更为接近,从而实现平衡状态下新代谢物的产生和搜索。
人工代谢算法的平衡因子km0和拟制因子ki0的初值分别为式(5.9)、式(5.10),平衡因子km(t)和拟制因子ki(t)的调节规律分别为式(5.11)、式(5.12)。
km0=f(A+B)f(A+B+C+D)(5.9)
ki0=f(C+D)f(A+B+C+D)(5.10)
km(t)=km0?f(A+B+C+D)?f(A+B)(5.11)
ki(t)=ki0?f(A+B+C+D)?f(C+D)(5.12)
v(t)=?f(A+B)?f(A+B+C+D)+?f(C+D)?f(A+B+C+D)(5.13)
式(5.9)~式(5.12)中,f(?)表示对应物质的量,如f(A+B)表示全部反应物的浓度之和。式(5.13)中,v(t)为系统反应速率。式(5.9)~式(5.13)中,A、B、C、D为不同的底物或生成物,是随时间变化的量。
在人工代谢算法中,由于在实际情况下代谢路径中的代谢物浓度不可能接近为0,因此引入数学上的某一极小值ε。当代谢物浓度小于ε时,认为对应的代谢反应已实现平衡,即为
?v(t)?t<ε(5.14)
其中,ε是不为0的某一极小值。ε可以按实际优化进程进行交互式定义。
平衡算子的作用是随机选择酶E中的二进制数位,使对应的数位上的数值与底物对应数位上的数值相等,即若底物某一数位上的数值为0,则平衡算子将酶E中与底物对应数位上的数值也转化为0; 若底物某一数位上的数值为1,则平衡算子将酶E中与底物对应数位上的数值也转化为1。
抑制算子的作用是随机选择酶E中的二进制数位,使对应的数位上的数值与底物对应数位上的数值不相等,即若底物某一数位上的数值为0,则抑制算子将酶E中与底物对应数位上的数值转化为1; 若底物某一数位上的数值为1,则抑制算子将酶E中与底物对应数位上的数值转化为0。这种编码的思想是使酶E与底物之间的作用关系更好地与真实的“共价催化”原理相一致,从而通过调整酶E的变化来调整化学平衡。
平衡算子和抑制算子的值均在[0,1]区间。平衡算子在一个计算周期中的值为当前全部底物的浓度; 抑制算子在一个计算周期中的值为全部生成物的浓度。在得到平衡算子和抑制算子的值后,决定所要变换的酶的二进制编码的位数。当代谢反应达到稳态,代谢物浓度变化率趋于不变或小于ε时,代谢反应速率已达到稳态优选值,代谢寻优终止。
5.4人工代谢算法的实现流程
人工代谢算法的实现流程如图5.1所示。首先,设定基本的代谢参数,包括底物点数目m; 酶的取值e; 代谢计算迭代次数G; 代谢点编码位数n; 竞争阈值h1; 凋亡阈值h2。其次,通过对实际问题的编码,将待优化问题的自变量空间用底物的取值来表示。采用竞争、凋亡、平衡等酶的3种代谢算子计算方式来选取新的底物。根据酶与底物契合程度的高低来筛选出一批更为合适的底物进入下一轮的代谢选择。上述过程反复进行,最后通过判断是否达到代谢计算的迭代次数或判断酶与底物契合的稳固程度来决定代谢计算是否可以完成。在完成代谢计算后,通过对反复“发酵”后得到很优底物进行解码可以得到实际问题的很优解。
图5.1人工代谢算法实现流程图
第6章膜计算
膜计算的主要计算模式是受生物活细胞的结构与功能启发而得到的,通过将活细胞的结构与功能抽象为形式化的进程,并将各个进程进行综合得到一种形式化的分布式并行计算模型。膜计算把细胞膜内的物质新陈代谢或内部生物膜之间的物质交流视为一种计算过程,细胞之间的物质交换被看作计算单元之间的信息交流。从复杂适应系统理论的观点看,活细胞对物质的新陈代谢的动态过程符合复杂适应系统的特性。本章介绍细胞膜的结构、模型及功能,膜计算的原理、概念、计算过程及实现步骤。
6.1膜计算的提出
膜计算(Membrane Computing, MC)是1998年由欧洲科学院院士、罗马尼亚科学家Pǎun在芬兰图尔库计算机研究中心的研究报告中提出的。有关膜计算的论文Computing with membrane于2000年在Journal of Computer and System Science上发表[25]。
Pǎun在深入研究DNA分子计算的基础上,受生物细胞的启发,提出了膜计算的概念。膜计算的本质是从活细胞以及由细胞组成的组织或器官的功能和结构中抽象出模型或计算思想。它是一种具有层次结构的分布式并行计算模型。从微观的角度看,细胞中的细胞核、泡囊等被抽象成一个细胞中的细胞膜。这些膜将各个计算单元按区域划分,其中的数据结构具有多重性,可以用字符集或字符串来表示。生物细胞膜内的生化反应或细胞膜之间的物质交流被看作一种计算过程,甚至细胞之间的物质交换也可以看作计算单元之间的信息交流。从某种意义上来说,可以将整个生物体看作一个细胞膜,甚至可以将一个生物系统看作一个膜系统。
6.2细胞膜的结构、模型及功能
1. 细胞及细胞膜的结构
细胞是构成生命机体的基本单位,其机能主要表现在3方面: 一是细胞能够利用能量和转变能量,以维持细胞各种生命活动; 二是具有生物合成的能力,能把小分子的简单物质合成大分子的复杂物质; 三是具有自我复制和分裂繁殖的能力,能将细胞的特性遗传给下一代细胞。此外,细胞还具有协调细胞机体整体生命的能力等。
一个真核细胞的结构如图6.1所示。细胞内部空间包含细胞核、线粒体、高尔基体和液胞等。细胞核含有细胞生命活动的最主要的遗传物质,包括核膜、核纤层、核基质、染色质和核仁等部分。染色质DNA是含有大量基因的生命遗传物质,因此细胞核是细胞生命活动的控制中心。线粒体是由内膜和外膜包裹着的囊状结构,囊内是液态的基质。在细胞中它不断移动并不时改变着自身的形状。线粒体是细胞进行氧化呼吸,产生能量的地方。高尔基体由扁平的膜囊组成,它将蛋白质和脂质集中起来,向细胞的特殊位置派送。高尔基体完成细胞分泌物的最后加工和包装。
图6.1真核细胞膜的结构
虽然细胞的形态结构与机能是多种多样的,但是它们在形态结构与机能上又有共同的特征。它的外面被一层薄膜――细胞膜包裹着,如图6.2所示。厚度为7~8nm的细胞膜是细胞的界限,它将具有生命力的活细胞与非生命的环境分隔开来。科学家们对细胞膜的研究发现,凡是可以溶于脂类的物质比不能溶于脂类的物质更容易透过细胞膜进入到细胞中去。化学分析表明,细胞膜的主要成分是磷脂和蛋白质。磷脂是一种由甘油、脂肪酸和磷酸组成的具有双重极性的分子。科学家提出细胞膜是一种磷脂双分子结构。因为只有这种双分子结构才可能稳定于细胞内外均为极性的液体环境中。
图6.2生物细胞膜的结构
2. 细胞膜的模型
根据实验,并结合脂双层和膜蛋白的特性,科学家提出了细胞膜的“流动镶嵌模型”。该模型的主要特点如下。
(1) 磷脂双分子层构成了膜的基本结构,磷脂分子非极性的“尾”向着内侧疏水区,而磷脂分子极性的“头”向着外侧,暴露于两侧的亲水区。这种磷脂双分子主要由亲水的头部和疏水的尾部组成的结构体现了膜结构的有序性。
(2) 磷脂双分子层既有分子排列的有序性,又有脂类的流动性。这种流动性使得磷脂和蛋白质在膜的水平方向或者垂直方向都可以流动、反转和变化。同时膜的分子组成也可以发生变化。
(3) 膜脂与膜蛋白质在膜上的排列具有不对称性,主要表现在内外两层脂类的分子种类和含量有很大的差异。蛋白质分子在膜内外分布的位置和数量也有很大差异。这种差异导致的不对称性对于识别外来的受体或信号起到重要作用。
(4) 膜的有序性、流动性和不对称性对于生物膜适应膜内外环境的变化、选择通透性及物质的跨膜运输、电子传递和信号的传导等均具有重要意义。
3. 细胞膜的功能
活细胞新陈代谢的一个重要表现就是与外界环境的物质交换,细胞不断地从外界摄取生命活动所需的各种物质,同时,不停地把新陈代谢废物排到细胞外面。
(1) 物质如何进入细胞。细胞膜的构成以脂双层为基本框架,中间镶嵌着各种蛋白质。细胞膜的结构决定了它的选择通透性。一般来说,外界环境中的脂溶性的非极性分子容易透过细胞膜; 水溶性的强极性的分子不容易透过细胞膜。水可以进出细胞膜,影响水进出细胞的主要因素是渗透压。溶于水的小分子物质进入细胞主要有4种方式: 简单扩散、协助运输、主动运输和基因转移。前两种方式推动物质进入细胞的动力来自物质的浓度差。后两种方式物质逆浓度梯度进入细胞,需要细胞消耗能量才能做到。大分子或颗粒进入细胞不能仅依靠细胞膜上的载体来帮助完成,还要使用局部细胞膜将有关物质包围,形成一个内吞泡,这样的过程称为内吞过程。
(2) 物质如何被排出细胞。小分子被排出细胞由渗透压决定。蛋白质等大分子以一些颗粒状物质被排出细胞,主要通过细胞质中的泡液和细胞膜的融合,称为细胞的外排作用。
综上所述,细胞膜对进出入细胞的物质有很强的选择通透性,具有分离和过滤的功能,具有物质转运功能,具有控制细胞与周围环境之间的物质交换,以维持细胞内外的平衡和有序的功能。
6.3标准膜计算的原理
由于膜计算的许多模型都是由Pǎun提出的,因此标准膜计算的各种模型又称为P系统。膜计算不是对生物膜的功能的简单模拟,而是Pǎun从各种生物膜的分层结构和处理化合物实现物质交流功能的原理中,抽象出一种可以用于计算的通用模型。
由细胞的结构和功能可知,生物膜的一个基本功能就是将自身和外在环境区分开,将细胞划分并构成不同功能的区域,区域中存在对象的多重集,也就是说,对象具有多重性,这是膜计算的基本特征之一。可以用一个字符串表示一个区域中的对象。这些对象通过“反应规则”来进化,而规则的选取具有并行性和非确定性。这些对象还能够穿越膜,进入系统中的另一个区域。膜能够改变其自身的渗透性,甚至可以溶解和分裂。用这些特征来定义系统的一个格局。在每一个时间步内,每个膜及其中的对象根据相应的规则进化,从而使系统产生一个新的格局。这样,一系列格局的转换就称为计算。当所有区域中没有任何规则可以发生作用,即不再发生任何事件时,称这种格局为停机格局。如果计算能达到一个停机的格局,则称为停机的计算或成功的计算。计算的结果是指那些被送到环境或指定膜中的对象。
一个膜系统主要包含3个要素: 膜结构、对象、规则。膜结构是由细胞膜或生物膜抽象出来的。对象是由细胞或环境中的物质抽象出来的。规则是由细胞内的化学反应或细胞之间的信息交流方式抽象出来的。膜结构将空间分成若干个不同的区域,区域中的对象按照特定的规则进化。细胞内的化学反应过程和细胞区域之间的物质流动过程可以理解为计算过程。这些过程的时间序列意味着许多基本操作的并行执行,而且从给定的初始状态出发,细胞可以按多种方式演化。因此,膜系统往往具有并行性和非确定性。
目前,膜计算模型主要有3种类型: 类细胞(Cell?like)膜计算模型、类组织(Tissue?like)膜计算模型和类神经(Neural?like)膜计算模型。这3类模型分别是基于单细胞的结构和功能、组织中的细胞群及神经元细胞而建立起来的分布式并行计算模型,在膜结构上分别可以抽象为树、无向图和有向图。这3类模型已被证明具有不弱于图灵机的计算能力。
6.4标准膜计算的描述
Pǎun院士提出的P系统是从活细胞体新陈代谢的适应过程中抽象出来的,用字母之间的传输变换来描述细胞内物质交流行为的一种迭代计算模型。
细胞膜系统一般由膜的层次结构、物质对象表示、进化规则3部分构成。给定一个细胞膜系统的基本结构,并且确定各个膜所包含的物质与进化规则,在初始化格局状态下,膜系统就会以非确定和优选并行的方式执行各个进化规则,直至细胞膜系统内的资源耗尽、规则不能再被执行为止,此时计算结束,系统陷入停机格局。 从生命细胞分层结构处理化合物的方式中抽象出膜计算的方法,借助于生物进化规则,用字母之间的传输变换来描述细胞内物质交流行为。一般地,一个度为m的膜系统可表示的多元组为
∏=(V,T,C,μ,w1,w2,…,wm,(R1,ρ1)(R2,ρ2),…,(Rm,ρm))(6.1)
其中,V为输入字母表,其元素称为对象; T?V为输出字母表; C?V-T为催化剂,其元素在生物进化过程中不发生变化,用于控制特定进化反应; μ为包含m个膜的膜结构,用于描述膜系统的包含层次关系。各个膜及所围的区域用标号集H表示, H={1,2,…,m},其中m称为模系统的度; wi∈V?(1≤i≤m)表示膜结构μ中的区域i中含有对象的多重集, V*为字母表V中字符组成的任意字符串的集合。
进化规则是二元组(u, v),通常写成u→v, u是V*中的字符串, v是T中输出的字符。 v=v′,或者v=v′δ,其中v′是集合{ahere,aout,ain|a∈V,1≤j≤m}中的字符串, δ是不属于V的特殊字符。当某规则包含δ时,执行该规则后膜就被溶解了。u的长度称为规则u→v的半径。Ri(1≤i≤m)是进化规则的有限集,每一个Ri是与膜结构μ中的区域i相关联的, ρi是Ri中的偏序关系,称为规则Ri执行的优先关系。