1.本发明设计了一种利用元胞自动机和狼群优化算法的开源软件项目演化建模方法,属于开源软件开发技术领域。
背景技术:2.生态学研究生物群体与其环境之间的相互关系,生物有机体和环境中的非生物成分相互作用,形成生态系统。类似地,开源软件生态系统可以看成是一系列开源软件项目之间不断协作、演化,从而在一个共同技术平台上形成的大量软件解决方案。开源软件项目具有广泛的研究领域,包括软件工程、社交网络和技术管理。franco-bedoya等人曾详细介绍了开源软件项目与开源软件生态系统,评估了开源软件项目的现有技术水平。
3.演化过程是包括软件生态系统在内的所有复杂系统的基本过程。个体参与者的动机或他们之间的交互行为都可能导致演化过程。在一个通用的技术平台上,一组软件项目在连续的时间段内的动态演化最终会形成不断发展的软件生态系统。在github中,软件生态系统的演化是近年来的热点话题,要求突破传统软件演化研究的视野局限,从api演化、类库/包演化、项目演化等多个层次开展研究工作。已有的研究技术包括:通过api变更大数据分析探讨软件生态系统演化;通过研究类库依赖对软件生态系统演化的作用机理进行探索。软件生态系统演化不仅要考虑不同抽象层次软件制品的演化,还要关注软件制品依赖关系的变化。decan 等人开展了软件生态系统演化规律的比较性研究;mclntosh等人和german等人研究了软件生态系统演化过程中的软件版本/构造的变化;digkas等人研究了软件生态系统演化情境中技术债对软件生态系统演化的作用效果。这些研究成果从多个维度研究了软件生态系统的演化过程,然而,很少有研究从微观角度关注软件项目的演化情况对整个软件生态系统的演化产生的影响。
4.本研究采用系统动力学中的元胞自动机模型对软件项目的演化进行建模,挖掘局部规则模拟复杂系统,从而为研究软件生态系统的演化提供了一种全新的思路。
技术实现要素:5.本发明的主要目的是提供一种利用元胞自动机和狼群优化算法的开源软件项目演化建模方法。这种方法不仅给出了一种新的软件演化建模的思维方式,能够比传统的建模方法拥有更高的模拟精度,同时能够帮助程序员预测软件项目的开发潜力,并决定是否参与该项目的开发工作,使得本发明具有更好的适用性。
6.在开源代码托管平台github上,开源软件项目的程序员来自于世界各地,他们拥有不同的开发经验和背景,但他们在项目之间的流动性是非常大的,这是因为大部分程序员很难找到合适的项目并为之做出贡献。具体来说,程序员需要在海量的候选项目列表中检索有开发潜力的项目,进而阅读相关的代码,挑选感兴趣的项目进行学习,但是这样做工作量很大。基于已有的软件项目信息,快速预判项目的演化过程,了解项目所处的状态,能够帮助程序员预测软件项目的开发潜力,并决定是否参与该项目的开发工作。这样既提高
了程序员在开源社区中的工作效率,也保障了开源软件的开发成本、开发进度和产品质量。此外,软件项目是github中的重要组件,通过挖掘项目的演化规则,也为研究软件生态系统的演化提供了一种全新的思路。然而,迄今为止,还没有大规模的关于开源软件项目演化规则的研究。基于以上问题,本发明提供的方法既要能够帮助程序员预测软件项目的开发潜力,也为研究软件生态系统的演化提供了一种全新的思路。
7.为了实现上述目的,本发明的技术方案如下:一种开源软件项目的演化建模方法,其特征在于,所述方法包括以下步骤:
8.步骤1:开源软件项目ca状态演化规则的构造与表达;
9.步骤2:提出oss-ca演化规则智能获取算法;
10.步骤3:基于oss-ca模型动态模拟github项目的演化。
11.其中,步骤1:开源软件项目ca状态演化规则的构造与表达,具体如下:
12.在软件项目ca中,每类元胞状态的定义需要特定的属性条件,演化规则构造的具体操作方式在于描述元胞的每一类属性特征选择取值区间,将这些属性区间和属性节点逻辑相连接,便形成一个条件组合,发现满足此条件组合的元胞下一时刻的演化状态,这便是一条软件项目ca的演化规则的定义方法,较好的ca演化规则构造与表达方法至关重要,能在很大程度上简化规则挖掘过程并提高规则挖掘的可行性与有效性。
13.由于狼群捕猎的行为特点,狼群在每一个维度上的寻优具有空间对等的特征。但是现实中不同软件项目特征的属性值往往千差万别,没有完全相同的量纲,数量级往往也差别很多,这就导致了数据维度空间值域范围的不均衡。为此,本发明采用了属性值的归一化,具体的计算公式如下所示。
[0014][0015]
式中:x
new
表示属性值归约后的新值,x
old
表示属性值归约前的原始值,x
min
和x
max
分别表示属性的最小值和最大值,对于软件项目特征属性值进行上式的归约计算,使其都被标准化在[0,1]的值域范围内。
[0016]
ca演化过程主要表现为元胞状态的改变,而研究元胞状态改变的规律就必然涉及到地理ca演化规则的表达,gwo算法主要被用来搜索每个属性条件的阈值上限值和下限值,ca演化规则的实质就是求解软件项目元胞状态更改变化的条件组合,不同的属性条件的逻辑组合决定元胞下一时刻状态如何转变,本发明利用逻辑判断语句“if-then”的形式对演化规则进行表达,具体的演化规则表达形式如下所示:
[0017][0018]
式中:vj是第j个属性条件,x
jlow
和x
jhigh
分别是第j个属性的最优上界值和最优下
界值, j∈{1,2,..,k},k是所有的属性条件的个数;classi表示中心元胞的状态属性为第i类, i∈{1,2,..,m},m是元胞类别的个数;
[0019]
在二维的空间中,演化规则可用特征向量x进行表示,特征向量x的定义形式为:
[0020]
x=(x
1low
,x
1high
,x
2low
,x
2high
,
…
,x
jlow
,x
jhigh
,
…
,x
klow
,x
khigh
)
[0021]
式中:鉴于特征向量x中每个属性值具有空间位置相似性的特点,且gwo算法在每个属性维度上具有空间对等的特性,因此在2k维度空间上的属性值都应该被合理地归一化到相同的值域范围内。
[0022]
其中,步骤2:提出oss-ca演化规则智能获取算法;具体如下,
[0023]
采用gwo算法求解元胞自动机演化规则过程中,最为核心的工作就是找出属性变量与ca 中元胞状态转变之间的对应关系,其外在表现形式为在不同的属性条件组合下元胞状态值的改变。oss-ca演化规则获取的本质即找到软件项目元胞的特征属性与元胞状态值变换规律的一种函数映射,这种函数映射决定了项目元胞下一时刻的类别和状态。gwo算法设计的初衷就是把演化规则的特征向量x表示成狼群的目标猎物,用狼群优化算法对元胞演化规则的特征向量x进行求解。为此本发明设计出了oss-ca规则获取的算法框架,如图1所示。
[0024]
oss项目元胞状态的特征向量x优化求解即在每一类元胞状态转换特征向量上寻找一个最优的属性取值区间,利用寻求到的最优属性取值区间对特征属性满足相应的取值范围的元胞状态进行转变,实现元胞状态转变的模拟,灰狼种群位置初始化完成后,最为关键的步骤就是灰狼位置与目标函数值的更新迭代,这在算法求解ca演化规则过程中至关重要,在完成元胞特征向量x的灰狼位置positions初始化完成后,需对初始化的灰狼位置和目标函数不断地进行迭代优化,以期通过灰狼位置和目标函数值迭代更新挖掘出较优的特征向量x。当寻找的新的猎物时,计算新猎物的收益度即相应演化规则的质量,如果新猎物具有更高质量,则更新自身所对应的搜索位置即元胞特征向量,当灰狼完成一次规则搜索过程之后,每只灰狼都会计算目标函数值并决定下一次的搜索是否更新灰狼的位置,如此反复地进行猎物的搜索,直到满足规则挖掘要求条件;
[0025]
规则质量评价算子是oss-ca演化规则获取质量的评价检验标准,即是灰狼狩猎的猎物价值量,规则质量评价算子决定了oss-ca算法求解优化的内容与方向。据相关研究表明,基尼指数fitness是一种适用于规则质量评价的重要指标,其计算方式为:
[0026][0027]
式中:tp表示满足规则条件,且与规则预测的软件项目元胞类型相同的样本个数;fp表示不满足规则条件,且与规则预测的元胞类型相同的样本个数;fn表示不满足规则条件,且与规则预测的元胞类型不同的样本个数;tn表示表示满足规则条件,且与规则预测的元胞类型不同的样本个数。上式中,fitness的值越大,演化规则的适宜值越高。采用基尼指数 fitness算子进行规则质量评价可以很好地反映规则挖掘的优劣,本发明将其作为规则质量评价函数,该规则质量评价函数即目标优化函数。
[0028]
由于获取到的演化规则质量并非都能满足研究要求,若重复获取转换规则就会出现演化规则重复或者冗余等问题,所以还需进行一定的修剪,修剪完毕后对演化规则进行更新,以保障之后规则获取的正确性。规则修剪的基本步骤是从发现的规则中依次移除一
个属性条件项,若移除属性条件后的规则质量得到提升则移除该属性条件,继续移除下一属性条件项,否则保留该属性条件,继续移除下一属性条件。上述移除属性条件的步骤反复被执行,直到移除任何属性项后规则质量的适宜度值都不再增加,此时完成ca规则的修剪工作。灰狼位置和目标函数值更新的过程中不断优化求解ca演化规则目标函数(规则质量评价函数fitness)与ca演化规则(α狼的位置向量x
α
)。oss-ca算法结合当前元胞状态生成的演化规则并计算规则质量,然后将排名前3的灰狼位置positions更新。灰狼位置positions迭代更新方式是在当前灰狼位置附近随机产生一个新的位置,计算新的位置的目标函数值的大小,若在新位置的目标函数值优于之前的旧位置,就需要更新当前等级的灰狼的位置为当前的位置。其中,步骤3:基于oss-ca模型动态模拟github项目的演化,具体如下,
[0029]
ghtorrent是可扩展,可搜索和离线的github数据镜像。它的原理是通过调用githubrestapi接口来获取数据。另外,ghtorrent监视github公共事件的时间线。对于每个事件,它都会详尽地检索其内容及其依赖性。然后,它将原始json响应存储到mongodb数据库,同时还将其结构提取到mysql数据库中,其中mysql数据结构如图4所示。
[0030]
oss-ca演化规则智能获取算法在运算求解时需输入一个样本数据集,除了对每一个项目数据的整理,本发明也对项目的当前状态进行了标记。对于三个月内刚刚被创建的项目,认为它处于“新生”状态,用数字“0”标记它,cellstatus={0};对于创建时间超过个月,且各项属性值处于上升状态中的项目,认为它处于“发展”状态,用数字“1”标记它,cellstatus={1};对于创建时间超过六个月,且各项属性值已有三个月未发生明显变化的项目,认为它处于“衰败”状态,用数字“2”标记它,cellstatus={2};
[0031]
在软件生态系统中,大多数项目都是相互依赖的,当用户在一个项目的pullrequest操作、issue操作或commitcomment操作中提到另一个项目时,认为这两个项目之间存在依赖关系,通过numberofexternallinks属性值可以方便地知道,oss项目之间存在的交叉引用关系,对于某一个特定的项目元胞,本发明将与它引用关系最多的8个项目元胞作为其邻域,一旦邻域元胞状态发生改变,中心元胞的状态也会发生改变。
[0032]
oss项目演化模拟过程中,oss项目元胞的演化情况除了与演化规则相关,还与各种随机条件有关,因此本发明在oss-ca算法模型中引入随机变量γ,使得γ《k,k为当前迭代次数t的倒数,并符合以下公式:
[0033]
k=1/t
[0034]
当同时满足演化条件及γ《k时,元胞状态才会发生改变,该随机变量的加入可动态实现元胞空间中某个空间元胞位置上的元胞状态的随机动态转换,较好地体现了oss项目动态演化的随机性特点。
[0035]
对上述条件分析不难发现,两次数据收集的时间间隔δt通常都会远大于元胞自动机的模拟时间间隔δt。一般来说100-200次的迭代次数是必须的,以保证产生实际的模拟效果。在模拟的过程中,每次只有部分元胞状态发生了改变,每次迭代间隔的元胞发展数量由以下公式进行计算:
[0036]
n=δt/δt
[0037]
δq=δq/n
[0038]
式中,n是迭代总数,δt是两次收集数据的时间间隔,δt是迭代的时间间隔,δq
是
[0039]
迭代间隔中发展变化的元胞数量,δq是两次收集数据之间真实元胞转换的数量。本发明画出了oss-ca算法的实现方法示意图如图5所示。本发明利用分层抽样方法从数据集中提取实验样本以发现oss项目元胞的演化规则
[0040]
本发明通过深入分析开源软件生态系统中的项目演化特点,从系统动力学和群智能算法相结合的角度提出新的开源软件项目演化建模方法。具体而言,本发明分为三个主要部分:第一部分是定义开源软件项目的元胞自动机表达方式和演化规则形式,本发明利用软件项目与元胞在模型实现上具有自下而上的相似性和一致性的特点,构建了ca演化规则的“if-then”表达形式。第二部分是提出基于灰狼优化算法的软件项目元胞自动机演化规则智能获取方法,本发明以灰狼优化算法与元胞自动机的基本理论为基础,定义了面向ca演化规则的灰狼优化目标向量和目标函数,设计了面向ca演化规则挖掘的灰狼位置更新与目标函数值的迭代优化算子、规则修剪算子和质量评价算子,从而实现了oss-ca演化规则智能获取方法。第三部分是基于oss-ca模型动态模拟了github上部分项目的演化情况,本发明选择了2015年12月到2019年6月期间的ghtorrent mysql数据,并根据github公共时间线,得到了2971个 oss项目从创建开始的每一月的数据。然后本发明利用oss-ca模型对部分开源软件项目进行了演化规则的挖掘,实现了开源软件项目演化的动态模拟。
[0041]
有益效果:
[0042]
本发明一方面可以补充现有研究在开源软件社区研究方面的缺陷,从一个新的角度,为保证开源软件项目演化研究提供一种新的建模方法。另外,相比于现有的复杂系统建模方法,元胞自动机能够适合复杂系统的模拟,并以简单的局部演化规则模拟全局演化的复杂情况,元胞自动机方法以新的设定表征了复杂系统“确定性中的内在随机性”,即应用元胞的设定和确定的规则最终使系统产生随机结果。在加一定的随机项之后又使系统产生确定性结果,体现了随机性与确定性两者结合的非线性系统的基本特征。元胞自动机中的状态更新规则不依赖于数学函数,甚至可用语言简单描述即可达到相同目的,因此元胞自动机模型的表达更为直观、简单。与此同时,灰狼优化算法是一种模拟自然界灰狼捕食过程而提出的一种生物群智能元启发式优化算法,具备强大的全局寻优和勘探能力,能被用于多类优化问题上,并且已有实验证明其优化求解性能高于其他方法。
附图说明
[0043]
图1是oss-ca规则获取的算法框架图;
[0044]
图2是gwo狼群等级示意图;
[0045]
图3是演化规则构造的属性值归一化方法示意图;
[0046]
图4是ghtorrent数据结构示意图;
[0047]
图5是oss-ca模型的模拟过程示意图。
具体实施方式
[0048]
实施例1:下面结合附图(表)对本发明进行详细说明。
[0049]
元胞自动机(ca)作为一种时空都离散的动力学模型,是一类自下而上的模拟复杂系统演化的方法模型,可在系统层次的微观水平上进行描述表达。它具有模拟系统演化规
则的特性, 能够适合复杂系统的模拟,并以简单的局部演化规则模拟全局演化的复杂情况。ca模型不同于传统的动力学模型,其并没有完全统一的定义方法,而是由一系列模型构造的规则组成的, ca模型运行的前提就是定义相应的规则。
[0050]
灰狼优化算法(gwo)是对狼群捕食行为的一种人工模拟。该算法模拟了狼群觅食过程中,灰狼种群通过四种等级的灰狼共同合作实现最优猎物的获取。狼群分为α(alpha)、β(beta)、δ(delta)、ω(omega)四个等级,α狼是狼群的首领,拥有最高决策权,后面的狼群等级逐次降低,ω狼是狼群中等级最低的,四种等级的灰狼示意图如图2所示。一次完整的狩猎过程主要包括搜寻、包围和攻击三个步骤。狼群的运动方向用随机参数的方法进行描述,目标函数表示目标猎物的价值量大小,狼群通过不同个体的信息交互达到资源共享,优势互补的目的,拥有较强的全局勘探和局部搜索能力,避免陷入局部最优,保证整个灰狼种群能够发现到最优的猎物。
[0051]
本发明的主要内容包括以下几个方面:
[0052]
步骤(1)开源软件项目ca状态演化规则的构造与表达
[0053]
实施方式:
[0054]
在软件项目ca中,每类元胞状态的定义需要特定的属性条件,演化规则构造的具体操作方式在于描述元胞的每一类属性特征选择取值区间,将这些属性区间和属性节点逻辑相连接,便形成一个条件组合。发现满足此条件组合的元胞下一时刻的演化状态,这便是一条软件项目ca的演化规则的定义方法,较好的ca演化规则构造与表达方法至关重要,能在很大程度上简化规则挖掘过程并提高规则挖掘的可行性与有效性。
[0055]
由于狼群捕猎的行为特点,狼群在每一个维度上的寻优具有空间对等的特征。但是现实中不同软件项目特征的属性值往往千差万别,没有完全相同的量纲,数量级往往也差别很多,这就导致了数据维度空间值域范围的不均衡。为此,本发明采用了属性值的归一化,具体的计算公式如下所示。
[0056][0057]
式中:x
new
表示属性值归约后的新值,x
old
表示属性值归约前的原始值,x
min
和x
max
分别表示属性的最小值和最大值。对于软件项目特征属性值进行上式的归约计算,使其都被标准化在[0,1]的值域范围内,如图3所示。
[0058]
ca演化过程主要表现为元胞状态的改变,而研究元胞状态改变的规律就必然涉及到地理 ca演化规则的表达。如图3所示,gwo算法主要被用来搜索每个属性条件的阈值上限值和下限值。ca演化规则的实质就是求解软件项目元胞状态更改变化的条件组合,不同的属性条件的逻辑组合决定元胞下一时刻状态如何转变。本发明利用逻辑判断语句“if-then”的形式对演化规则进行表达。具体的演化规则表达形式如下所示:
[0059][0060]
式中:vj是第j个属性条件,x
jlow
和x
jhigh
分别是第j个属性的最优上界值和最优下界值, j∈{1,2,..,k},k是所有的属性条件的个数;classi表示中心元胞的状态属性为第i类, i∈{1,2,..,m},m是元胞类别的个数。
[0061]
在二维的空间中,演化规则可用特征向量x进行表示,特征向量x的定义形式为:
[0062]
x=(x
1low
,x
1high
,x
2low
,x
2high
,
…
,x
jlow
,x
jhigh
,
…
,x
klow
,x
khigh
)
[0063]
式中:鉴于特征向量x中每个属性值具有空间位置相似性的特点,且gwo算法在每个属性维度上具有空间对等的特性,因此在2k维度空间上的属性值都应该被合理地归一化到相同的值域范围内。
[0064]
步骤(2)提出oss-ca演化规则智能获取算法
[0065]
采用gwo算法求解元胞自动机演化规则过程中,最为核心的工作就是找出属性变量与ca 中元胞状态转变之间的对应关系,其外在表现形式为在不同的属性条件组合下元胞状态值的改变。oss-ca演化规则获取的本质即找到软件项目元胞的特征属性与元胞状态值变换规律的一种函数映射,这种函数映射决定了项目元胞下一时刻的类别和状态。gwo算法设计的初衷就是把演化规则的特征向量x表示成狼群的目标猎物,用狼群优化算法对元胞演化规则的特征向量x进行求解。为此本发明设计出了oss-ca规则获取的算法框架,如图1所示。
[0066]
oss项目元胞状态的特征向量x优化求解即在每一类元胞状态转换特征向量上寻找一个最优的属性取值区间,利用寻求到的最优属性取值区间对特征属性满足相应的取值范围的元胞状态进行转变,实现元胞状态转变的模拟。灰狼种群位置初始化完成后,最为关键的步骤就是灰狼位置与目标函数值的更新迭代,这在算法求解ca演化规则过程中至关重要。在完成元胞特征向量x的灰狼位置positions初始化完成后,需对初始化的灰狼位置和目标函数不断地进行迭代优化,以期通过灰狼位置和目标函数值迭代更新挖掘出较优的特征向量x。当寻找的新的猎物时,计算新猎物的收益度即相应演化规则的质量,如果新猎物具有更高质量,则更新自身所对应的搜索位置即元胞特征向量。当灰狼完成一次规则搜索过程之后,每只灰狼都会计算目标函数值并决定下一次的搜索是否更新灰狼的位置。如此反复地进行猎物的搜索,直到满足规则挖掘要求条件。
[0067]
规则质量评价算子是oss-ca演化规则获取质量的评价检验标准,即是灰狼狩猎的猎物价值量,规则质量评价算子决定了oss-ca算法求解优化的内容与方向.据相关研究表明,基尼指数fitness是一种适用于规则质量评价的重要指标,其计算方式为:
[0068]
[0069]
式中:tp表示满足规则条件,且与规则预测的软件项目元胞类型相同的样本个数;fp表示不满足规则条件,且与规则预测的元胞类型相同的样本个数;fn表示不满足规则条件,且与规则预测的元胞类型不同的样本个数;tn表示表示满足规则条件,且与规则预测的元胞类型不同的样本个数。上式中,fitness的值越大,演化规则的适宜值越高。采用基尼指数 fitness算子进行规则质量评价可以很好地反映规则挖掘的优劣,本发明将其作为规则质量评价函数,该规则质量评价函数即目标优化函数。
[0070]
由于获取到的演化规则质量并非都能满足研究要求,若重复获取转换规则就会出现演化规则重复或者冗余等问题,所以还需进行一定的修剪,修剪完毕后对演化规则进行更新,以保障之后规则获取的正确性。规则修剪的基本步骤是从发现的规则中依次移除一个属性条件项,若移除属性条件后的规则质量得到提升则移除该属性条件,继续移除下一属性条件项,否则保留该属性条件,继续移除下一属性条件。上述移除属性条件的步骤反复被执行,直到移除任何属性项后规则质量的适宜度值都不再增加,此时完成ca规则的修剪工作。灰狼位置和目标函数值更新的过程中不断优化求解ca演化规则目标函数(规则质量评价函数fitness) 与ca演化规则(α狼的位置向量x
α
)。oss-ca算法结合当前元胞状态生成的演化规则并计算规则质量,然后将排名前3的灰狼位置positions更新。灰狼位置positions迭代更新方式是在当前灰狼位置附近随机产生一个新的位置,计算新的位置的目标函数值的大小,若在新位置的目标函数值优于之前的旧位置,就需要更新当前等级的灰狼的位置为当前的位置。步骤(3)基于oss-ca模型动态模拟github项目的演化;
[0071]
ghtorrent是可扩展,可搜索和离线的github数据镜像。它的原理是通过调用 githubrestapi接口来获取数据。另外,ghtorrent监视github公共事件的时间线。对于每个事件,它都会详尽地检索其内容及其依赖性。然后,它将原始json响应存储到mongodb数据库,同时还将其结构提取到mysql数据库中,其中mysql数据结构如图4所示。
[0072]
oss-ca演化规则智能获取算法在运算求解时需输入一个样本数据集。除了对每一个项目数据的整理,本发明也对项目的当前状态进行了标记。对于三个月内刚刚被创建的项目,认为它处于“新生”状态,用数字“0”标记它,cell status={0};对于创建时间超过个月,且各项属性值处于上升状态中的项目,认为它处于“发展”状态,用数字“1”标记它,cellstatus={1};对于创建时间超过六个月,且各项属性值已有三个月未发生明显变化的项目,认为它处于“衰败”状态,用数字“2”标记它,cell status={2}。
[0073]
在软件生态系统中,大多数项目都是相互依赖的,当用户在一个项目的pull request操作、issue操作或commit comment操作中提到另一个项目时,认为这两个项目之间存在依赖关系。通过number of external links属性值可以方便地知道,oss项目之间存在的交叉引用关系。对于某一个特定的项目元胞,本发明将与它引用关系最多的8个项目元胞作为其邻域,一旦邻域元胞状态发生改变,中心元胞的状态也会发生改变。
[0074]
oss项目演化模拟过程中,oss项目元胞的演化情况除了与演化规则相关,还与各种随机条件有关,因此本发明在oss-ca算法模型中引入随机变量γ,使得γ《k,k为当前迭代次数 t的倒数,并符合以下公式:
[0075]
k=1/t
[0076]
当同时满足演化条件及γ《k时,元胞状态才会发生改变,该随机变量的加入可动态实现元胞空间中某个空间元胞位置上的元胞状态的随机动态转换,较好地体现了oss项
目动态演化的随机性特点。
[0077]
对上述条件分析不难发现,两次数据收集的时间间隔δt通常都会远大于元胞自动机的模拟时间间隔δt。一般来说100-200次的迭代次数是必须的,以保证产生实际的模拟效果。在模拟的过程中,每次只有部分元胞状态发生了改变,每次迭代间隔的元胞发展数量由以下公式进行计算:
[0078]
n=δt/δt
[0079]
δq=δq/n
[0080]
式中,n是迭代总数,δt是两次收集数据的时间间隔,δt是迭代的时间间隔,δq是迭代间隔中发展变化的元胞数量,δq是两次收集数据之间真实元胞转换的数量。本发明画出了oss-ca算法的实现方法示意图如图5所示。本发明利用分层抽样方法从数据集中提取实验样本以发现oss项目元胞的演化规则。
[0081]
需要说明的是上述实施例,并非用来限定本发明的保护范围,在上述技术方案的基础上所作出的等同变换或替代均落入本发明权利要求所保护的范围。