计算机研究与发展
JOURNAL OF COMPUTER RESEARCH AND DEVELOPMENT
1999年 第36卷 第8期 Vol.36 No.8 1999



动态系统的演化建模
曹宏庆　康立山　陈毓屏
摘　要　针对采用传统方法解决动态系统的微分方程建模问题所遇到的困难和存在的不足，文中设计了将遗传程序设计与遗传算法相嵌套的混合演化建模算法，以遗传程序设计优化模型结构，以遗传算法优化模型参数，成功地实现了动态系统的常微分方程组建模过程自动化．计算实例表明：采用此算法能在合理的运行时间内由计算机自动发现多个较优的常微分方程组模型，和现有的建模方法(如灰色系统方法)相比较，它具有建模过程智能化与自动化、模型结构更加灵活多样、方法适用性更广、数据拟合和预测的精度更高等优点．
关键词　常微分方程组，演化建模，遗传程序设计，遗传算法，灰色系统
中图法分类号　TP301.6
A HYBRID EVOLUTIONARY MODELING ALGORITHM FOR DYNAMIC SYSTEMS
CAO Hong-Qing, KANG Li-Shan, and CHEN Yu-Ping 
(State Key Laboratory of Software Engineering, Wuhan University, Wuhan 430072)
Abstract　To overcome the difficulties and drawbacks in modeling the dynamic systems by using traditional methods, a hybrid evolutionary modeling algorithm (HEMA) is proposed to model the dynamic system with a system of ordinary differential equations (ODEs) whose main idea is to embed genetic algorithm (GA) in genetic programming (GP) where GP is employed to optimize the structure of a model, and GA is employed to optimize the parameters of a model. It has succeeded in automating the modeling process of systems of ODEs for dynamic systems. The computational experiments indicate that, by running the HEMA, the computer can search out multiple superior ODEs models in a reasonable time. Compared with most available modeling methods, such as the grey systems method (GSM), this algorithm possesses the advantages of automation of the modeling process, more flexible and various model structures, wider range of applications, and higher precision of fitting and predicting data. 
Key words　system of ordinary differential equations, evolutionary modeling, genetic programming, genetic algorithm, grey systems
1　引　言
　　在工程技术、经济管理、自然科学和社会科学等领域普遍存在着许多随时间而变化的复杂系统和非线性现象，如物价的波动、产品销售量的增减、天气的变化、人口的增长等．人们通常需要根据动态系统的观测数据建立合理的微分方程模型(动力学模型)，为系统分析、设计和未来状态的预报提供依据，而这通常是一件非常重要而又十分困难的事情．传统的建模方法是凭直觉或经验事先假定一种微分方程的形式，然后采用一些数值方法确定其中的未知参数［1～3］．而面对纷繁复杂的数据，如何选择合适的微分方程模型结构通常是很困难的，尤其是当微分方程中的变量个数增多时．
　　目前在经济、社会、农业等系统的预测中，国内采用较多的是邓聚龙的灰色系统建模方法［4］，其中用微分方程描述的典型模型包括GM(n,1)和GM(1,h)模型．采用这种方法同样存在着模型的结构选择问题，即对于同一数据集，选取不同的n，h值得到的模型不同，因而拟合和预测的效果也不同，并且模型的结构也比较单一和固定．除此之外，还存在着两点不足：①　对于复杂的动态数据，模型的拟合和预测的精度不高，要反映摆动的过程还需通过残差辨识建立多次残差模型来作补充修改；②　作为状态模型的GM(1,h)模型只能反映其它h-1个变量对某一变量的一阶导数的影响,不能反映多因素系统内各变量之间的相互作用，而自然界中普遍存在着相互制约、相互作用的系统，如物种之间的共生和竞争关系、国家之间的军备竞赛等，这些都需要通过微分方程组来描述．
　　针对这些问题，本文利用演化算法的自适应、自组织、自学习的特性，设计了将遗传程序设计与遗传算法相嵌套的混合演化建模算法，以遗传程序设计优化模型结构，以遗传算法优化模型参数，成功地实现了动态系统的常微分方程组建模过程自动化，即完全由计算机自动地从动态系统的观测数据中发现描述该系统的常微分方程组．
2　问题的数学描述
　　首先定义矩阵的模为

　　假设一动态系统是由n个相互关联的函数加以描述的．已观测到该系统在时间的一系列数据为

其中t0为起始时刻，Δt为时间间隔，表示变量xj在ti时刻的观测值．
记

其中 是由初等函数的复合函数来表示的．记这类函数组成的空间为F．
　　常微分方程组的建模问题就是求

使得最小．其中

并可由此预报系统的未来状态.
3　混合演化建模算法
　　演化算法是模拟自然界的生物演化过程，借鉴生物界的自然选择和自然遗传机制而发展起来的一类问题求解的策略和方法．它采用简单的编码技术来表示各种复杂的结构，并通过对一组编码表示进行简单的遗传操作和优胜劣汰的自然选择来指导学习和确定搜索的方向．由于演化算法本身具有的自组织、自适应和自学习等智能特征以及本质的并行性和易于操作、通用性强等特点，目前已被成功地应用于机器学习、模式识别、经济预测、优化控制及其并行处理等领域［5,6］．演化算法最初具有3个分支：遗传算法(GA)、演化规划(EP)和演化策略(ES) ．90年代初，在遗传算法的基础上又发展了遗传程序设计这一新的分支［7～9］，它用树结构来表示不同的计算机程序，由叶结点形成终端集，通常包括变量、常数和无参函数，由中间结点形成函数集，通常包括算术操作和一些带参数的初等函数，采用遗传算法的基本思想，通过使用一些遗传操作(包括再生、杂交、变异等遗传算子)动态地改变这些结构，并且一代代演化下去，直到找到满足问题要求的解．
　　采用传统的遗传程序设计方法来实现常微分方程组的演化建模，虽然模型的结构较传统方法有更大的灵活性，但同时也存在着一个问题，即在种群进化过程中，一些结构较好的模型有很大概率会因其随机产生的参数不合适致使其适应值低而被淘汰出种群，使得最终搜索到的模型精确度不高，并且演化速度慢，还会出现“过早收敛”的现象.为此本文在用遗传程序设计演化建模的每一代嵌入模型的参数优化过程，使得进化过程明显加快并且所得模型更优.由于传统的一些非线性参数估计的算法，如直接搜索法、Hooke-Jeeves法、Nelder-Mead法、梯度法和变尺度法［10］等，通常只对某一类特定问题才有效，而且对模型的限制条件较强，如要求模型具有连续、可导、单峰等特性，而演化建模算法产生的模型复杂多样，并且可能由多个方程组成，包含多组参数且参数的维数也不固定，用这些方法根本无法获得其参数估计．为此我们采用实数编码的遗传算法实现对任意模型的参数优化．
　　以遗传程序设计优化模型结构，以遗传算法优化模型参数，并与数据的预处理、模型的简洁化和规范化、系统的预测等辅助步骤相结合，便构成了本文的混合演化建模算法．算法的结构描述如下：
PROCEDURE　　　混合演化建模算法
begin 
　　输入原始数据矩阵X(0)；
　　数据预处理得到X(1)；
　　随机初始化常微分方程组种群P(0)；
　　计算P(0)中个体的适应值；
　　s∶= 0;
　　repeat
　　　　模型的简洁化和规范化；
　　　　optimized ∶　= Φ；
　　　　for i∶= 1 to popsize do 
　　　　begin
　　　　　　if(个体pi的结构optimized)
　　　　　　begin
　　　　　　　　分离个体pi中各微分方程中所包含的参数；
　　　　　　　　随机初始化参数种群Q(0)；
　　　　　　　　计算Q(0)中个体的适应值；
　　　　　　　　t∶= 0；
　　　　　　　　repeat
　　　　　　　　　　按适应值大小和选择策略从Q(t)中选择生成下一代的父体Q(t+1)；
　　　　　　　　　　执行杂交、变异和再生操作来重组Q(t+1)；
　　　　　　　　　　计算Q(t+1)中个体的适应值；
　　　　　　　　　　t∶= t+1；
　　　　　　　　until　　　满足终止条件Ⅱ；
　　　　　　　　用Q(t)中的最好个体替换pi中各方程的对应参数项；
　　　　　　　　optimized∶= optimized∪{ pi的结构 }；
　　　　　　end
　　　　end
　　　　按适应值大小和选择策略从P(s)中选择生成下一代的父体P(s+1)；
　　　　执行杂交、变异和再生操作来重组P(s+1)；
　　　　计算P(s+1)中个体的适应值；
　　　　s∶= s+1；
　　until　　　满足终止条件Ⅰ；
　　用P(s)中的最好个体作系统的预测；
end
4　算法的详细描述
4.1　数据的预处理
　　采用多维离散傅立叶变换后，再通过低通滤波消除高频成分以消除原始数据的部分噪声．
4.2　自适应的演化建模过程
　　(1) 编码表示
　　基于传统遗传程序设计所特有的树形编码方式，我们将其个体的单树表示扩展成由一组二叉树构成的向量形式，其中n为常微分方程组的方程个数．例如：含3个未知函数的常微分方程组：

可表示成如图1的一组二叉树的形式．我们限定树的最大深度为D, 用个体中每个二叉树所包含的结点数来描述其复杂度．


图1　常微分方程的二叉树表示
　　(2) 适应值的度量
　　假设提供如(2)式的观测数据，数据预处理后得到矩阵，个体可表示为如下的常微分方程组形式

则计算其适应值 fit(pi) 的过程如下：
PROCEDURE　　　计算pi的适应值
begin
　　假设X*和ΔX为m×n阶矩阵，将X(1)的第一行元素赋给X*的第一行；
　　for i∶= 2 to m do
　　begin
　　　　以X(1)的第i-1行元素为初始值，采用数值算法对(6)式积分一步，生成X*的第i行元素；
　　end
　　ΔX∶= X(1)- X*；
　　fit(pi)∶=‖ΔX‖；
end
　　显然，这里适应值越小，个体的性能越好．同时，在计算适应值的过程中,一些随机生成的常微分方程组的解可能不满足稳定性要求，致使在迭代过程中会出现数值的溢出，这时可令其返回一个较大的适应值作为惩罚，从而使得它在进行选择时很快被淘汰出种群．在适应值的评估过程中我们采用的是固定步长为0.01的改进的欧拉法．
　　(3) 模型的简洁化和规范化
　　模型的简洁化即化简模型种群中每个个体的树结构，用可计算出来的值替代掉树的某些部分，不改变个体的适应值．它在每一演化代作用于所有个体，这一过程直接影响到模型被优化的参数的个数．
　　模型的规范化即调整模型的树分量中以“+”或“×”为根结点，左子树或右子树为一常数的子树的结构，使得所有模型的S-表达式中常数项均位于“+” 、“×”运算符的右边．这样有利于对同类模型结构的识别，不至于在模型的参数优化时将a+x和x+a或a×x和x×a判断成不同的模型结构而重复进行优化．
　　(4) 选择策略和遗传算子的设计
　　采用规模为4的锦标赛选择策略并采用了择优策略，即将上代最好个体保留在当前新的群体中．
　　设两杂交个体和,杂交操作可分成向量级和树分量级两级进行．向量级的杂交即依次从中随机选择一树分量作为杂交后代的树分量；树分量级的杂交则对父代向量的每对分量作如下操作：随机选择两杂交点，交换以杂交点为根结点的相应子树得到两个新树，以树深不超过D为原则，选择任一合理的二叉树作为杂交后代的树分量 ． 
　　个体在变异时依据其适应值不同采取自适应地动态调节变异概率的方式［11］，使得对于较好的解只在其局部进行搜索，而对于较差的解则在较大的范围内搜索．设个体，则其变异概率为

其中fmin 为当前代最好个体的适应值，fi为个体i的适应值．进行变异操作时先随机选择一树分量，再对作如下操作：随机选择一变异点，删除以变异点为根结点的子树，并插入一随机生成的子树，生成新的树分量和原来的树分量一起构成了变异后代
4.3　模型的参数优化过程
　　(1) 编码表示
　　首先对模型的结构进行判别，若属于已优化过的结构则不再优化．模型在进行参数优化前要先分离出每个树分量Ti(i从1至n)中的参数，计算其个数li并记录相应位置，则参数种群Q(t)中的每个个体可表示成n个维数分别为li的行向量形式：

其中行向量Ci中的每个分量cij均采用实数编码的方式．
　　(2) 适应值的度量
　　将个体所含的n个行向量一一对应地代回原模型的相应树分量中，采用和4.2节(2)同样的过程计算其适应值的大小．
　　(3) 选择策略和遗传算子的设计
　　采用和4.2节(4)相同的选择策略．
　　设两杂交个体

进行杂交时依次对每对(i从1至n)作如下操作：先随机选取一杂交位置k (1≤k≤li)，再采用整体算术杂交方法，对分量生成一(0,1)区间的随机数α，则两后代分量定义为

从而形成的两杂交后代为

　　变异算子采用多级变异［12,13］．设个体．进行变异时依次对每个Ci(i从1至n)作如下操作：先随机选取一变异点k(1≤k≤li)，再对分量cik先生成0至15间的一随机整数j，设参数cik的定义域为［min，max］,则变异后的分量定义为

从而形成的变异后代为
4.4　系统的预测
　　采用演化建模过程得到理想的模型后便可用常微分方程组的一些数值解法,如欧拉法、龙格-库塔法等，以X(1) 的最后一行为其初始条件积分数步得到预测序列．
5　计算实例
5.1　实验设置
　　为检验本文算法的有效性，我们分别选取了一维实例和一个二维实例进行了实验，对每个实例采用此算法独立运行40次，将结果与灰色系统作了比较．所有实验在奔腾586微机(166MHz)上进行．实验的参数设置为
　　(1) 自适应的演化建模过程：
　　函数集，终端集(n为常微分方程组中方程的个数，c为常数)，种群规模为100，最大树深为4，算法运行100代停止．
　　(2) 模型的参数优化过程：
　　种群规模为20，杂交、变异和再生概率分别为0.6、0.3和0.1，种群中最好个体的适应值连续3代无变化时停止优化．
5.2　计算实例 1
　　(1) 实例描述
　　数据引自于文献［2］，见表1中的“实际数据”一栏(人口xi的单位为百万) ．要求以美国1790～1930年的人口为实际数据建立数学模型并预报1940年和1950年的人口值．
　　(2) 实验结果及分析
　　采用灰色系统建立的灰色GM(1,1)模型为 dx/dt = 8.951490+0.205366x
　　采用演化算法独立运行40次，得到的几个较好模型为
　　模型Ⅰ: dx/dt = (1.384360-(x×t))×((x+1.548616)×20.574356) 
　　模型Ⅱ: dx/dt = x×(30.912327-(x×0.151000))
　　　　　　简化形式： dx/dt = 30.912327x-0.151000x2
　　模型Ⅲ: dx/dt = ((x×21.926580)+111.811684)×cos(x×t)
　　各模型的建模结果见表1．
表1　实例1(灰色系统建模和演化建模结果比较表)

实际数据灰色模型演化模型Ⅰ演化模型Ⅱ演化模型Ⅲ
年　份序号 ixiiiii
1790 
1800
1810
1820
1830
1840
1850
1860
1870
1880
1890
1900
1910
1920
19301
2
3
4
5
6
7
8
9
10
11
12
13
14
153.9
5.3
7.2
9.6
12.9
17.1
23.2
31.4
38.6
50.2
62.9
76.0
92.0
106.5
123.23.9000000
10.826068
13.294112
16.324833
20.046478
24.616570
30.228523
37.119865
45.582245
55.973862
68.734436
84.404175
103.646179
127.274902
156.2903443.535357
5.156120
7.570995
9.915323
13.087546
17.293678
22.678036
30.352379
40.267639
49.184601
62.618629
76.934494
91.309525
107.662506
122.2022553.535357
4.768738
7.238487
9.632812
12.867659
17.148132
22.613745
30.378368
40.369537
49.320061
62.753670
77.020882
91.324280
107.611816
122.1573793.535357
5.634524
7.929233
10.166016
13.206610
17.261953
22.490780
30.010643
39.829693
48.743813
62.287102
76.814316
91.436218
108.040558
122.736099
1940
195016
17131.7
150.7191.920593
235.673523131.699997
150.699997137.396286
150.477142137.936386
151.287262
拟合误差46.3847813.0694543.0915223.350870
预测误差104.1490335.6461935.7006466.263979
演化算法的统计结果(平均值)拟合误差=4.165328　预测误差=12.368071　结点数=9.575　运行时间=1336 s


　　由表1可见，采用文中演化算法可得到多个较优的微分方程模型，不仅模型的结构形式多样，并且模型的拟合误差和预测误差也比灰色模型小得多．
　　更有趣的是，模型Ⅱ的简化结果与文献［2］中采用经典的阻滞增长模型(Logistic模型)得到的结果是一致的．文献［2］按照Logistic模型假设：，由实际数据确定其中的常数r=0.31, xm=197，则得到模型

　　由于模型的形式与时间t的单位选取有关，故对同一数据集，不同的时间单位建立的模型可能不同．本文算法采用的是起始时刻为0、步长为0.01的欧拉法进行数值积分，其时间单位t与Logistic模型相差100倍，故两微分方程右端也相差100倍，而实质结果是完全一致的，即两个模型相同．模型Ⅱ是完全由计算机自动地从动态系统的观测数据中发现的，而模型(11)是根据经典模型建立的，二者的一致说明了本文的演化建模算法为动态数据客观规律的自动发现提供了一个有力的工具．
5.3　计算实例 2
　　(1) 实例描述
　　数据引自于文献［14］，见表2中的“实际数据”一栏，x1和 x2分别为中国1978～1983年的社会总产值和农业总产值(单位为亿元)．要求以前5年的数据建立数学模型并预测1983年的社会总产值．
　　(2) 实验结果及分析
　　文献［14］建立的灰色GM(1,2)模型为 dx1/dt + 4.0879x1 = 14.9226x2
　　采用演化算法建立一阶微分方程组模型，独立运行40次得到的几个较好模型为
　　模型
　　模型
　　模型
　　各模型的建模结果见表2．
表2　实例2(灰色系统建模和演化建模结果比较表)

实际数据灰色模型演化模型Ⅰ演化模型Ⅱ演化模型Ⅲ
年份序号ix1ix2i1i1i2i1i2i1i2i
1978
1979
1980
1981
19821
2
3
4
56.846
7.642
8.531
9.071
9.9631.567
1.896
2.180
2.460
2.7856.846
5.698
8.052
8.983
10.1676.841975
7.662210
8.499115
9.084071
9.9684371.563206
1.890477
2.186530
2.467112
2.7749666.841975
7.661316
8.498152
9.083347
9.9680461.563206
1.876022
2.196958
2.472951
2.7718246.841975
7.659248
8.508387
9.114331
9.9111771.563206
1.868178
2.200855
2.464535
2.769078
1983611.0523.12111.39310.9143243.15119410.9165093.08618411.0205423.084314
拟合误差2.01440.0433050.0518520.082981
预测误差0.34100.1409480.1398930.048327
统计结果(平均值)拟合误差=0.191258　预测误差=0.317860　结点数：T1=8.9 T2=8.65 运行时间=2062 s

　　其中，灰色模型：拟合误差 ，　预测误差 
　　演化模型：拟合误差， 预测误差. 
　　对比表2中结果可见，采用文中算法得到的模型对x1的拟合和预测精度均比灰色模型要高得多．同时由于灰色系统建立的是关于x1的一阶微分方程，它不能反映x2的动态变化情况，因而无法对x2的值进行拟合和预测，并且在预测 1983年的社会总产值时必须先知道1983年的农业总产值，这就需要用其它方法如GM(1,1)或自回归模型报出，这显然是很不方便的．而采用演化方法建立的常微分方程组模型不仅可同时反映x1和x2随时间t的变化关系，并且依此模型还可对其作进一步的预测，预测效果也较灰色系统更好． 
6　结束语
　　针对采用传统方法解决动态系统的微分方程建模问题所遇到的困难和存在的不足，本文利用演化算法的自适应、自组织、自学习的特性，设计了将遗传程序设计与遗传算法相嵌套的演化建模算法，以遗传程序设计优化模型结构，以遗传算法优化模型参数，成功地实现了动态系统的常微分方程组建模过程自动化．计算实例表明：采用此算法能在合理的运行时间内由计算机自动发现多个较优的常微分方程组模型，和现有的建模方法(如灰色系统方法)相比较，它具有建模过程智能化与自动化、模型结构更加灵活多样、方法适用性更广、数据拟合和预测的精度更高等优点．本算法的研究为实现动态数据的知识发现过程自动化提供了一个有力的工具，可望在天气预报、市场预测、生态预测等与时间序列与时间场相关的实际问题中得到推广和应用．

基金项目:本课题得到国家自然科学基金（项目编号69635030）和国家“八六三”高技术项目（项目编号863-306-ZT06-06-3）基金资助
作者简介：曹宏庆，女，1972年1月生，博士研究生，主要研究方向为遗传程序设计、演化建模和并行计算.康立山，男，1934年生，教授，博士生导师，主要研究方向为计算机科学理论、演化计算和并行计算.陈毓屏，女，1942年生，主要研究方向为计算机软件和计算机科学理论.
作者单位：曹宏庆　康立山　陈毓屏　武汉大学软件工程国家重点实验室　武汉　430072
参考文献
1　　Lucas W F. Differential Equation Models. New York：Springer-Verlag, 1983
2　　姜启源．数学模型, 第二版．北京：高等教育出版社, 1993
　　　(Jiang Qiyuan. Mathematical Models(in Chinese), Edition Ⅱ. Beijing: Education Press, 1993)
3　　贺建勋．系统建模与数学模型．厦门：福建科学技术出版社，1995
　　　(He Jianxun. System Modelling and Mathematical Models(in Chinese). Xiamen: Fujian Science & Technology Press, 1995)
4　　邓聚龙．灰色控制系统．武汉：华中工学院出版社，1985
　　　(Deng Julong. Grey Control Systems(in Chinese). Wuhan: Huazhong University of Science and Technology Press, 1985)
5　　Goldberg D E. Genetic Algorithms in Search, Optimization and Machine Learning. Reading, MA：Addison Welsey, 1989
6　　Mitchell M. An introduction to genetic algorithms. Cambridge, MA: MIT Press, 1996
7　　Koza J R. Genetic Programming：on the Programming of Computers by Means of Natural Selection. Cambridge, MA：MIT Press, 1992
8　　Koza J R. Genetic Programming II：Automatic Discovery of Reusable Programs. Cambridge, MA：MIT Press, 1994
9　　Banzhaf W, Nordin P, Keller R E, Francone F D. Genetic Programming: An Introduction on the Automatic Evolution of Computer Programs and Its Applications. San Mateo, CA: Morgan Kaufmann, 1997
10　　Nash J C, Walker-Smith M. Nonlinear Parameter Estimation. New York: Marcel Dekker Inc, 1987
11　　Hinterding Robert, Michalewicz Zbigniew, Eiben Agoston. Adaptation in evolutionary computation: A survey. In: Baeck Thomas, Michalewicz Zbigniew, Yao Xin eds. Proceedings of the 4th Int'l Conference on Evolutionary Computation. Piscataway, NJ: IEEE Press, 1997. 65～69
12　　Mhlenbein H, Schomisch M, Born J. The parallel genetic algorithm as function optimizer. Parallel Computing, 1991, 17, 619～632
13　　Mhlenbein H, Schlierkamp-rose D. Predictive models for the breeder genetic algorithm. Evolutionary Computation, 1993, 1(1): 25～49
14　　曹鸿兴，郑耀文，顾今．灰色系统理论浅述．北京：气象出版社,1988
　　　(Cao Hongxing, Zheng Yaowen, Gu Jin. A Brief Introduction to Grey System Theory(in Chinese). Beijing: Meteorology Press, 1988)
收到日期：1998-10-15
修改日期：1999-04-26
