地下燃气管网安分的优化控制---管理与决策支持系统(数据挖掘)

来源:互联网 发布:如何注册企业淘宝账号 编辑:程序博客网 时间:2024/04/27 07:34

一、课程设计要求    

在地下燃气管网安全评价的八个影响因素中,需要在八个变量的定义域中,找出一组最优的取值组合(最优解),使可作为安全控制的参照标准。

要求:

用遗传算法,求达到最优安全评价级别的X(即Xi的最优组合)?

1、定义八个基因的取值;

2、设计编码、适值函数、选择算子、交叉算子和变异算子;

3、选择一种语言编程实现,要求源程序和.EXE程序。

 

二、遗传算法的基本原理:

遗传算法是由美国的J. Holland教授于1975年在他的专著《自然界和人工系统的适应性》中首先提出的,它是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法

遗传算法类似于自然进化,通过作用于染色体上的

初始化种群

开始

计算个体适应度值

对个体进行选择复制

按一定概率和定义进行交叉

按一定概率和定义进行变异

产生新一代群体

满足停止准则

输出结果

结束

基因寻找好的染色体来求解问题。与自然界相似,遗传算法对求解问题的本身一无所知,它所需要的仅是对算法所产生的每个染色体进行评价,并基于适应值来选择染色体,使适应性好的染色体有更多的繁殖机会。在遗传算法中,通过随机方式产生若干个所求解问题的数字编码,即染色体,形成初始群体;通过适应度函数给每个个体一个数值评价,淘汰低适应度的个体,选择高适应度的个体参加遗传操作,经过遗传操作后的个体集合形成下一代新的种群。对这个新种群进行下一轮进化。

遗传算法思想是:

(1) 初始化群体;

(2) 计算群体上每个个体的适应度值;

(3) 按由个体适应度值所决定的某个规则选择将进入下一代的个体;

(4) 按概率Pc进行交叉操作;

(5) 按概率Pm进行突变操作;

(6) 没有满足某种停止条件,则转第(2)步,否则进入(7)

(7) 输出种群中适应度值最优的染色体作为问题的满意解或最优解。

 

程序的停止条件最简单的有如下二种:完成了预先给定的进化代数则停止;种群中的最优个体在连续若干代没有改进或平均适应度在连续若干代基本没有改进时停止。

遗传算法的进行过程是一个马尔柯夫过程。当遗传算法收敛时,求到的解通常只是所要解决问题的最优解的一个近似解,或者叫满意解。从数学分析的角度看,收敛过程是一个无限逼近过程,而计算过程是一个有限自动机,因此通过遗传算法程序求得的解总是一个近似解。

三、遗传算法的设计

1.     建立BP模型

在之前,我们利用数据挖掘的聚类分析对107个样本进行了聚类,得出了20个比较具有代表性的样本,所以我们用这个20个样本来建立和训练BP模型(20个样本见附件1)。充分考虑到下面适值函数的设计,我们建立了一个三层的神经网络,输出层有8个结点,隐层有7个结点,输出层有4个输出如:

X1

X2

X3

X4

X4

X6

X7

X8

Y

0

0.5

0.5

0

1

1

0.5

0.5

4

转化为:

X1

X2

X3

X4

X5

X6

X7

X8

Y1

Y2

Y3

Y4

0

0.5

0.5

0

1

1

0.5

0.5

0

0

0

1

即当样本的评价为4级时,Y1=0,Y2=0,Y3=0,Y4=1;

由于输出层的值的范围为(01)之间的实数,故隐层与输出层的映射函数都为对数S型传递函数(logsig根据20个样本数据,我们利用MATLAB建立一个三层的BP模型,

建立模型的MATLAB语句见附件1

建立好BP模型后,输出每层之间的权值和阈值,见附件2。知道所有权值和阈值之间,我们可以所BP的模型搬进遗传算法之中,用于适值函数的设计。

  

2.     基因设计

共八个基因,八个基因分别表示八个指标数据,分别为:建设监理力度、运行年数、钢管壁厚、防腐层品种、缺陷线密度、防腐层电阻率、土壤腐蚀性、阳极与电位。其采集数据表和因素取值,见附件1。用来训练BP样本的基因取值分别为:00.51。基因.遗传算法初始生成的样本的基因为01之间的一个随机实数。

 

3.     适值函数设计

因为我们的目标是找出一组最优的取值组合,按照给出的样本数据,1级是最好的,所以在遗传过程中,样本的评级越接近1。故我们只考虑神经网络中四个输出的第一个,若输出的值越接近1,表示样本属于1的可能性就越大。

刚开始的时候,我们直接以神经网络的第一个输出做为适应度,但考虑到当数值越趋于1,难度就越大。最终各个样本的的适应度相差不多,样本后代的选择的区分度不多,所以我们对输出值做了放大的处理,我们设计的适值函数如下:

 

 

   W1表示输入层到隐层的权值

   b1表示隐层的阈值

   W2表示隐层到输出层第一个输出的权值

   b1表示输出层中第一个输出的阈值

  

 

logsig表示对数S型函数,即:

      

 

   logsig(w2*logsig(w1*t+b1)+b2)表示神经网络的第一个输出值

  

4.     选择算子设计

选择算子有三种:一是期望值方法,二是最优个体保留法,三是轮盘赌方法

u     期望值方法:

每个个体在下一代生成的期望数目为:

u     最优个体保留法:

此方法是在期望值法发展过来的,在原来的基础下,增加了最优个体保留机制,即,在种群中选择适应度最大的个体,直接进入下一代,并且不进行交叉和变异,以保证优秀的基因得到保留和传承,以保证遗传算法向着最优方向进化。

u     轮盘赌方法

设群体大小为n,其中个体i的适应度值为fi,则被选择的概率为Pi,

      

这种选择的方式非常类似轮盘赌中的转盘,当被选择的概率越大时,个体的适应值越大,被选择的机会也就越多,其基因结实被遗传到下一代的可能性越大。

 

5.     交叉算子设计

在我们设计的程序中提供了三种交叉的形式,用户可以根据不同的需要去选择。在很多的应用中,交叉算子是以一定的概率实现的,这一概率称作交叉概率。本程序提供了交叉概率的输入,范围为0100.

u       线线交叉

  

u       凸交叉

  

u       自适应交叉

自适应交叉概率可以根据个体的适应度来进行变化的,适应度越大,个体的交叉概率就越小,适应度越小,交叉的概率就越大。这样的话,可以使优秀的基因得到变化的概率小,劣质的基因得到改善的概率大。

其中x表示某个体的适应度,Px表示交叉概率,p表示输入的概率,max表示种群的最大适应度,min表示种群的最小适应度。当x趋向于max的时候Px趋向于0,当x趋向于min的时候Px趋向于p,这样就使得。适应度大,交叉概率小,适应度小,交叉概率就大。

 

6.     变异算子设计

u       均匀变异

针对实数编码方式,我们采取下面这种变异形式,设v=(v1,v2,v3,v4,v5,v6,v7,v8)是群体中的一个个体,z=(z1,z2,z3,z4,z5,z6,z7,z8)是变异产生的后代。均匀性变异则是先在个体v中随机的选择一个分量vi,然后,在区间(01)中均匀随机地取一个数vj代替vi以得到z。这种变异的发生是具有一定的概率的,我们的程序提供变异概率的输入。

u       自适应变异

自适应变异概率可以根据个体的适应度来进行变化的,适应度越大,个体的变异概率就越小,适应度越小,变异的概率就越大。

其中y表示某个体的适应度,Px表示变异概率,p表示输入的概率,max表示种群的最大适应度,min表示种群的最小适应度。当x趋向于max的时候Px趋向于0,当x趋向于min的时候Px趋向于p,这样就使得,适应度大,变异概率小,适应度小,变异概率就大。

 

四、程序的使用

程序主要包括三部分:问题描述、算法程序、关于我们。

以下窗口是问题的描述:

以下是“关于我们”

程序最重要的部分是算法程序窗口,如下图所示,从图中我们可以看到“选择算子”和“交叉形式”的选项。可以根据用户的不同需要,进行选择,界面下方提供参数的输入,包括:种群个数、进化代数、交叉概率和变异概率。界面中还有两个空白文本框,大的用来记录遗传算法的过程,并输出每一代的最大适应度及其对应的样本的基因值,小的文本框用来输出最后得到的那个最优解,数值进行了适当处理,使其只输出00.51.

载入默认参数是指,使种群个数为100,进化代数等于100,交叉概率等于80,变异概率等于10.清空参数是指清除所有的参数,使之可以重新输入。

例如我们令种群个数为100,进化代数等于100,交叉概率等于80%,变异概率等于10%,选择算子采用“轮盘赌法”,交叉形式采用“线性交叉”。变异算子选“均匀变异”。点击“寻找最优解”按钮之后,可以看到下面的效果,如图所示:

到了第100代的时候,种群的最大适度度为179046.381

X1=0.162 x2=0.896 x3=0.969 x4=0

x5=0.47  x6=0.503 x7=0.297 x8=0.934

对于每个基因,我们采取下面的转换,

0<x<0.25时,      x=0;

0.25=<x<0.75时,  x=0.5;

0.75=<x<1时,     x=1;

故我们可以看到最优解的输出为:

X1=0    x2=1    x3=1     x4=0

x5=0.5  x6=0.5  x7=0.5   x8=1

注意:因为在建立BP的时候,学习样本的第四个基因只有一个值0,不包含任何有用的信息,没有什么意义。故在遗传算法的时候,我们把第四个基因设为0,并且不进行变异。

五、数据分析

在刚开始的时候,我们在建立BP模型的时候,它的输出层为一个线性函数,并且只有一个输出,即直接输出8个指标的评级的数值。但我们发现在后面的遗传算法中,效果并不理想,最优解的基因的取值不稳定,不是趋向一个稳定的值。后来我们把BP模型改为四个输出,分别求出样本属于每一个评级的可能性,最后只取属于一级的可能性,并用于设计遗传算法的适值函数。发现改进之后,最优解的基因稳定了许多,基因的变动也处于有效的范围之中。下表为5次求解得到的结果:

 

 

参数

选择算子与交叉形式

X1

X2

X3

X4

X5

X6

X7

X8

最大适应度

种群个数50

进化代数200

交叉概率 50

变异概率 20

轮盘赌法

线性交叉

均匀变异

0.201

0.955

0.975

0

0.556

0.596

0.242

0.997

227108.961

种群个数100

进化代数150

交叉概率 60

变异概率 15

轮盘赌法

凸交叉

均匀变异

0.141

0.906

0.964

0

0.567

0.764

0.312

0.811

156875.831

种群个数150

进化代数100

交叉概率 70

变异概率 10

期望值法

自适应交叉

自适应变异

0.157

0.989

0.989

0

0.556

0.546

0.273

0.946

245206.514

种群个数200

进化代数50

交叉概率 80

变异概率 5

期望值法

线性交叉

自适应变异

0.128

0.957

0.961

0

0.473

0.423

0.3

0.952

191767.296

 

基因的平均值:

0.156

0.951

0.972

0

0.538

0.657

0.282

0.927

205239.676

从上表中可以看出,即使是选择了不同的参数和不同的交叉变异形式,最优解的变动相比不是很大,可见遗传算法是向着最优解进化的,我们也得到了满意的结果。

由于我们的遗传算法采取最优个体保存法,把样本中适应度最大的样本直接保存下来,不进行交叉与变异,以保证遗传算法向着最优方向进化,所以为了更快,更好地找到最优解,我们不妨把变异概率设大一点,有利于种群进化的多种性,同时把种群的个数设大一点,以保证最优解的稳定性。

   经过反复的测试,我们把设置的参数为:

   种群个数为100,进化代数等于500,交叉概率等于80%,变异概率等于50%

   得到的最大适应度达到292577.123,接过于适应度的最大值。所以我们最后得到的最优解为:

X1

X2

X3

X4

X5

X6

X7

X8

适应度

0.013

0.995

0.998

0

0.557

0.884

0.349

0.992

292577.123

 

最优解对应的数据如下表所示:

指标

最优解的输出

转换后的最优解

实际情况

建设监理力度X1(年份)

(埋地时间)

0.013

0

89年以前

运行年数X2(年)

0.995

1

x<=1

设计壁厚X6mm

0.998

1

x>=7.5

防腐层品种X3

0

0

胶带

缺陷线密度X2(个)

0.557

0.5

1=<x<10

防腐层电阻率X7K

0.884

1

58]

土壤腐蚀性X4

0.349

0.5

阳极与电位X8mV

0.992

1

有阳极且电位-850或无阳极且电位-300

六、总结:

遗传算法是一种模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象的学习方法,已被成功用于多种学习任务和最优化问题中。在这次的课程设计中,我们就是运用遗传算法,从地下燃气管网安全评价的八个影响因素中找出最优解,即求出最优的安全级别组合,编写相关程序。这不仅要求我们熟悉遗传算法的相关知识,还需要把算法转换成计算机语言形式,可以说是一个不小的挑战。

在设计前我们小组进行了必要的讨论和研究,遗传算法的性能问题是我们关注的焦点。遗传算法程序求得的解只是最优解的近似值——满意解,影响满意解的因素包括种群的规模、适应度函数的构造、交叉和变异的操作(包括交叉概率和变异概率的选取)、停止条件等等。另一方面,我们需要保证算法的高效率以及解决程序设计运行上出现的种种问题。我们参考了一系列的设计资料以及老师的程序,并结合到我们的设计上。我们通过MATLAB软件来建立好BP模型,并把它应用了遗传算法的程序中去。

    这次的课程设计从研究到完成一路走来都花费了不少的时间精力,但这过程让我们受益匪浅,不仅仅是理论知识上的进一步巩固,编程能力上的进一步锻炼,更可贵的是提升了我们每个人的团队合作能力,让每个人在展现各自的能力的同时,从中学习弥补自身不足,在互助互补的氛围中完成了这次的管理与决策支持系统的课程设计。

原创粉丝点击