规则优化论文

2024-05-27

规则优化论文(共8篇)

规则优化论文 篇1

调合后油品的不同特性与调合组分间存在着线性或非线性关系, 油品的组成十分复杂, 因此一般在调合中大多属于非线性调合。利用组分的物理性质参数预测调合产品的物理性质参数的公式称为调合规则[1]。调合规则在汽油管道优化调合过程中起着重要的作用, 不但确定调合配方需要以其为指导, 调合生产过程优化、产品质量实时控制等先进技术的实施更需要以它为基础。因而, 在调合规则中采用的调合系数的准确性对结果就显得尤为重要;以兰州石化公司油品调合为例, 对调合系数进行重新拟合并在生产中应用, 与实际情况符合较好, 调合规则的精度也得到提高。

1 Ethyl调合规则及原有调合系数存在的缺陷

1.1 Ethyl调合规则简述

现阶段国际上通用的调合规则计算公式有3个, 兰州石化公司选择的是Ethyl公司的RT-205规则。Ethyl规则是将调合过程中所表现出来的非线性特性用各组分的敏感度Sensitivity (RON与MON之差) , 烯烃含量和芳烃含量组成一个函数表达式出来, 从而预测成品油的研究法辛烷值和马达法辛烷值[2,3,4,5]。

调合规则中成品油的研究法辛烷值预测方程如下:

ri是对所有组分油i的研究法辛烷值计算得到的平均辛烷值, 而a1, a2及a3是待定系数。方程中 ( (rs-rs) ) 项是研究法辛烷值与敏感度之间的协方差估计22项是各组分烯烃含量方差的估计, 而项是各组分芳烃含量方差的估计。

成品油的马达法辛烷值预测方程如下:

Ethyl规则可以方便的拓展到汽油调合的其他特性参数预测上, 如苯含量等, 只要在后面再根据需要增加一个参数即可, 非常简便[6]。最主要的是, Ethyl规则使用的6个系数可以根据历史调合情况实现在线估计, 所以, 模型具有一定的自适应性使模型的准确度不随时间的推移而降低, 特别适应于在线优化控制。

由于各大炼厂的组分油品质量差异很大, Ethyl规则中的6个系数就必须由各炼厂根据各自的组分油质量来确定。而调合规则的精度也是通过不断调整调合规则系数来体现的[7,8]。

1.2 原有调合规则存在的缺点

原有调合规则系数的确定, 是根据以往罐式调合的传统配方和历史调合数据设计了试验方案, 分析不同时期采集的油样品, 采用多元回归方法拟合出来的[7]。由于是在离线状态下拟合得到, 且不同时期汽油组分质量差异较大, 原有调合规则系数已不能满足在线优化调合正常使用的需要[9]。为提高调合规则的精度, 使系统确定的调合配方更准确, 调合生产过程优化、产品质量实时控制等先进技术实施得更好。根据实际调合情况重新确定调合规则系数显得尤为必要。

2 调合规则系数的确定过程

2.1 基本方法

为了预测调合规则系数我们必须知道研究法辛烷值和马达法辛烷值预测方程中各个组分的某些基本的特征指标。为了描述清楚, 我们在下式中先用i表示第i个汽油调合组分油的特征指标以及各特征指标的大致范围。

xi=汽油调合中某组分油所占的调合比例体积的百分数 (0≤xi≤100%) ;

ri=汽油调合中某组分油的研究法辛烷值 (50≤ri≤150) ;

mi=汽油调合中某组分油的马达法辛烷值 (50≤mi≤150) ;

Si=汽油调合中某组分油敏感度, Si=ri-mi (0≤Si≤60) ;

Oi=汽油调合中某组分油的i的烯烃含量 (0≤Oi≤100%体积百分数) ;

Ai=汽油调合中某组分油的i的芳烃含量 (0≤Ai≤100%体积百分数) 。

可以由上述特征指标计算出每一种关于各个组分油的体积平均以及某些特征指标间交叉乘积的平均。这些平均是:

这里所有的求和都是对组分i=1, 2, …, q计算的。

式 (3) 中的这些平均就构成了调合规则中成品油的研究法辛烷值预测方程中的各项

类似的, 式 (3) 中的这些平均也构成了调合规则中成品油的马达法辛烷值预测方程中的各项

上式中, a1, a2及a3与c1, c2及c3都是需要重新确定的系数。

确定研究法辛烷值预测方程的系数a1, a2及a3用下式:

来估算, 其中

同样, 计算马达法辛烷值预测方程 (2) 的系数c1, c2及c3用下式

计算, 其中:

以上就是调合规则系数确定的整个过程。

2.2 数据采集和处理

为了验证和校正分析仪模型的准确性问题, 对催化汽油、生成油、异辛烷、非芳烃和直汽等6种组分以及90#、93#、97#3种成品油进行采样分析, 累计分析油样达200多个。通过在线分析仪获取每个油样的RON、MON、烯烃含量、芳烃含量和苯含量, 同时又通过实验室分析得到了RON、MON、烯烃含量、芳烃含量和苯含量等指标值的实验室分析值, 利用这些动态数据, 用最小二乘法和多元回归, 对调合规则的系数重新进行回归计算, 从而确定了新的调合规则, 通过与以前离线状态下所建立的调合规则进行比较, 看哪一个较准确更适合兰州石化公司油品储运厂的实际生产情况。

调合规则系数的数据处理通过软件实现。

3 应用情况分析

3.1 不同期调合规则下所得RON与MON预测值与实验室分析值间的误差趋势

以在线系统投用以来90#汽油部分调合数据为例, 用原有、现有调合规则预测的辛烷值与实验室分析值误差比较来验证原有、现有调合规则调合规则的精度。

不同期调合规则下所得RON与MON预测值与实验室分析值间的误差趋势如图1、2所示。

由趋势图中可看出, 两个时期的误差趋势大体相同, 但现有调合规则下所得RON、MON误差明显小于原有调合规则下所得RON、MON误差, RON误差越接近0值, 说明RON、MON预测值与实验室分析值吻合性越好, 很明显现有调合规则下的误差值更接近0值, 可见现有调合规则下预测值与实验室分析值吻合性更好, 即现有调合规则比原有调合规则更精确。

系列1:现有调合规则所得RON误差;系列2:原有调合规则所得RON误差.

3.2 在线调合罐平均值与实验室分析值偏差统计

对原有和现有调合规则下在线调合使用过程中, 不同期调合的油品的罐平均值与实验室分析值的偏差在0.3范围内的罐次进行统计, 从而验证原有、现有调合规则对调合结果的影响。统计结果见表1。

系列1:原有调合规则下所得MON误差;系列2:现有调合规则下所得MON误差.

由表1中罐平均值与实验室分析值间的偏差统计结果可看出, 误差范围在0.3以内的罐次现有调合规则下多于在原有调合规则下的, 即现有调合规则下在线调合系统的调合结果更理想。

注:在现有调合规则投用后, 97#现有调合的罐次很少, 统计结果没有意义, 没有列出。

4 结论

新建调合规则投用后, 在线系统运行状况良好, 通过调合规则预测值与实验室分析值的比较, 可看出现有调合规则更精确, 从而使调合结果更理想。随着实际调合数据的不断增多, 调合规则还要根据具体生产情况人为的不断地调整, 使调合规则更加精确, 为本公司带来更多的经济效益。

摘要:兰州石化油品储运厂以前采用的调合系数为实验室模拟数据, 和实际生产中遇到的情况存在偏离。采用非线性拟合和多元回归的方法, 对调合系数进行了重新拟合, 新拟合的调合系数与实际情况符合较好, 调合规则的精度也得到提高。

关键词:调合规则,系数,最小二乘法,多元回归

参考文献

[1]李祖奎.油品调合优化与控制研究[D].中国科学技术大学, 2005.

[2]蔡智.油品调和技术[M].北京:中国石化出版社, 2006.

[3]王伟, 李泽飞, 黄燕.基于油品性质的汽油调和辛烷值模型的选取[J].石油学报:石油加工, 2006, 22 (6) :39-44.

[4]高步良.高辛烷值汽油组分生产技术[M].北京:中国石化出版社, 2006.

[5]孙根旺, 赵小强.汽油在线优化调和控制模型及其应用[J].石油炼制与化工, 1999, 30 (11) :33-36.

[6]迟天运.汽油调和非线性模型求解及在线调和的研究[D].大连理工大学, 2007.

[7]薄胜杰.大庆炼化公司汽油辛烷值优化调和与生产[D].大庆石油学院, 2008.

[8]ASingh, JF Forbes, PJ Vermeer, et al.Model-based real-time optimization of automotive gasoline blending oper-ations[J].Journal of Process Control, 2000, 10 (1) :43-58.

[9]吕斌, 罗娟丽, 刘涣东.汽油在线调和系统在调和装置中的应用[J].甘肃科技, 2009, 25 (9) :33-35.

规则优化论文 篇2

中国纺织品网门户发布时间:2012年04月08日

再根据本人这些年在网络推广公司查看过很多网站的资讯和网站搜索引擎优化方法,混过的经验总结出网站搜索引擎优化七规则。首先你的了解每一个搜索引擎的规则,合理的SEO可以有效提高网站的排名,从而使得营销更加的容易和简单。掌握搜索引擎的算法更新技术是进行SEO的重要方法。

1、网页优化的重要的部分就是title部分,这个地方应该是你每次优化的重点。标题与关键字的符合度越高越好。网站建设前一定要认真的分析百度的相关关键字策略,对网站进行详细的关键字筛选。长尾关键词更有利于提高网站流量。

2、网页的头部和底部是很重要的,对于搜索引擎来说,尽量的将关键字加到里面。不要去在乎所谓的关键词密度,只要你的密度不超过50%,只要你提供的内容是符合的,只要你的内容对于你的用户来说是重要的,不可缺少的,适当的加入些关键词在页面里,只是更好的提醒搜索引擎。

3、外链是非常重要的,外链决定了网站在索索引擎中的排名,但是并不是说外链多,排名一定就高,毕竟决定网站排名的因素还有很多,外链只不过是其中的一个重要部分。记住永远不要进行群发,群发的结果是有一天你发现你的网站突然在搜索引擎中消失了。

4、内容是网站优化的灵魂。只有有好的内容才会吸引搜索引擎的到来,而且要保持天天更新你的网站,以便蜘蛛来访时候有东西可吃。最好的方法是定时更新网站,每天保持下去。内容最好是原创的,因为搜索引擎是非常的喜欢原创的。网上的千篇一律的东西它是不会去也不喜欢去看的。

5、其实,最终的一个部分应该是服务器和域名的选择。首先,必须选择一个好的域名,最好选择.com的,.cn的个人感觉权重没有.com好,确保域名容易记住,而且没有被搜索引擎惩罚过。

还要选择一个好的服务器,如果你的网站所在的服务器经常的出现问题,导致网站频繁出现不能浏览的问题。那么你的网站就会受到很大的影响。排名会很难提升的。所以服务器的选择是非常重要的一个部分。就像我的这个网站uusee366.cn初期为了便宜在朋友那找了个空间,但是不到一周,服务器被攻击了,我的网站两天打不开,这不就完了吗。后来只好又重新购买了一个好一点的空间。

6、只把网站的首页进行SEO是远远不够的,网站优化最好是全站同时进行,每个内容页都必须有您想优化的关键字,尤其是相关相关关键字,内容页尽量不要采集,尤其是文章开头的100个字最好不要与其它站的页面相同。

Snort系统规则优化 篇3

关键词:入侵检测,规则优化,模式匹配

0 引言

入侵检测系统(IDS:Intrusion Detection System)是自动进行入侵检测的监视和分析过程的硬件或软件产品。入侵检测系统作为一种主动的安全防护技术,提供了对内部攻击、外部攻击和误操作的实时保护,在网络系统受到危害之前拦截和响应入侵。

入侵检测系统根据信息源的不同分为两类:基于主机的IDS和基于网络的IDS。基于主机的IDS数据源有:系统日志、应用程序日志等。基于网络的IDS数据源是网络上的数据包。入侵检测方法主要采用两类:异常入侵检测和滥用入侵检测。

异常入侵检测是假定所有入侵行为都是与正常行为不同的。为实现该类检测,IDS建立正常活动的“规范集”,当主体的活动违反其统计规律时,认为可能是“入侵”行为。主要方法有概率统计方法、预测模式生成、神经网络方法、数据挖掘技术和状态机方法等。

误用入侵检测是将符合已知入侵特征的行为视为入侵,它预先对已知的攻击方法进行分析,提取其特征,以规则形式存放,一旦发现真实的信息与规则中的特征相匹配,则认为是攻击行为。主要方法有:专家系统、按键监视系统、模型推理、状态转换和模式匹配等。

异常检测系统试图发现一些未知入侵行为,误用检测系统是标识一些已知的入侵行为。异常检测主要缺陷在于误警率高,尤其在用户数目众多或工作行为经常改变的环境中;但对具体系统依赖性小。误用检测由于依赖具体特征库进行判断,准确度要高很多;但对具体系统依赖性大。

1 Snort概述

Snort是一个用C语言编写的符合GPL要求的开放源代码软件,Snort运行在Libpcap库函数基础之上,支持多种软硬件平台。Snort作为入侵检测系统的代表,属于基于网络和误用检测的入侵检测软件系统。同时它也能作为网络数据包嗅探器和日志记录工具。它采用基于规则的网络搜索机制,对数据包进行内容的模式匹配,从中发现入侵和探测行为。

用户可以根据自己的需要及时在短时间内调整检测策略。就检测攻击的攻击种类来说,Snort共有50类,2293条规则,其中包括对缓冲区溢出,端口扫描和CGI攻击等。当有了新的攻击手段时,只要简单加入新的规则就可以升级Snort。

Snort有三种运行模式:数据包嗅探器、数据包分析器和网络入侵检测系统。入侵检测模式是最常用的一种。其中基于规则的模式匹配是其检测的核心机制,它的入侵检测流程分成两大步:第一步是规则的解析流程,包括从规则文件中读取规则和在内存中组织规则;第二步是使用这些规则进行匹配。

Snort规则分成两部分:规则头与规则选项。规则头包含规则的行为、协议、源地址、目的地址、子网掩码、源和目的端口。规则选项包括报警信息及用于确定是否触发规则响应而需要检查的数据包区域的位置信息。Snort规则库采取二维链表结构,采用数据结构RuleTreeNode (RTN)和OptTreeN-odes(OTN)存储规则数据。

2 Snort规则处理

基于规则的模式匹配是Snort检测的主要机制,即对从网络上捕获的每一条数据报文,将其转换成Snort可以理解的规则,然后和规则链表进行匹配。如果匹配成功,就表示检测到至少一个攻击,然后按照指定的行为进行处理;反之就表示报文正常。

检测速度直接取决于匹配过程的快慢。下面通过分析Snort2.0以前版本的检测机制,探讨2.0版本的优化。

2.1 Snort2.0以前版本的规则处理

Snort所有规则被组织成二维规则链表,按照规则模式分类存放在规则列表中,总体的检测过程就是对规则链表的匹配扫描,查找数据包对应的规则。首先根据规则类型找到对应的规则链表头ListHead,然后在相应的链表中,根据协议找相应的规则头链表,根据IP地址和端口号,在规则头链表中找到对应的规则头,接着匹配此规则头附带的规则选项列表。

Snortl. X版本的规则匹配就是纯粹的参数搜索,即遍历整个规则集来判断一个包或数据流是否有匹配的规则。所有的规则按照以下四个参数来分类:

(1)源IP地址。

(2)目的IP地址。

(3)源端口范围。

(4)目的端口范围。

当检测包的时候,它检测每个规则集的四个参数来确定是否检测这个规则集还是移动到下一个规则集。如果一个包匹配这个规则集的四个参数,则这个规则集中的规则将按顺序被检测,每个规则的参数也是顺序被测试。这个规则集中的所有规则测试完后,又同样的过程继续下一个规则集。

通常,当处理规则集数目比较少的时候这个方法相对有效。但是,当一个规则集中的规则数目大于10的时候,这个标准的处理方法效率会很低。因为规则集中的规则被线性检测,所以规则检测速度会减低,也就意味着每个规则的每个参数将被单独测试。而且这种处理方法会使一个包与多个规则集匹配,这样大大减低了检测速度。

2.2 Snort2.0规则处理

针对snort2.0以前版本出现的问题,为了加快检测速度,Snort2.0提出了基于集合的检测方法,使每一个数据包匹配时仅有一个规则集与之匹配。规则检测流程都是一样的,不同于只是创建规则库方法。将所有具有相同内容的规则放在一起,确定能够唯一表示规则的参数,用它来划分从什么地方分支(针对于规则链表),比如ICMP协议的类型域能够区别不同ICMP协议,那么建立规则时,根据ICMP协议类型来划分,找到相同ICMP类型的规则头链表,再在该规则集中匹配所有规则选项。

对于这种方法,创建和选择规则集是核心,规则优化创建的规则集必须符合以下两个条件:

(1)尽可能的创建最小的、最有效的规则集。

(2)创建独立的规则集,即使得每个包且仅有唯一的规则集与之匹配。

规则优化通过使用唯一的Snort规则参数在初始化的时候创建规则集。对于每个传输协议来说选择的参数是不同的,因为每个传输协议都有不同的标志。比如,用来区别不同TCP规则的参数是源端口和目的端口,而区别ICMP规则的是ICMP类型。规则优化采用所有这些能唯一确定某一规则的参数来形成不同的规则集。这样不同类型的包,被归为一个规则集。

对于异常的包,会出现匹配两个规则集的情况。这种现象把它称为“特定规则冲突”。规则优化是多规则搜索引擎的第一个阶段,因为规则集的选择取决子规则集的参数与包的参数的匹配。在这个意义上,规则优化确定能够与这个包匹配的规则,并且过滤出多规则搜索引擎需要处理的规则。

2.3 规则优化的实现

对于不同的协议,确定规则集的参数是不同的。通过对传输协议的分析,相应的参数如下:

TCP/UDP 源端口 目的端口

ICMP ICMP类型

IP 传输协议

2.3.1 TCP/UDP协议

能确定唯一TCP/UDP协议的参数是源端口和目的端口。端口分为两类:保留的和不保留的。大部分两个主机之间的通信将使用一个保留端口(通常是服务器端)与一个非保留端口(大于1024或通常是客户端)。这样规则优化可以保留端口作为参数。Snort通过确定保留端口定位于源端口还是目的端口来选择规则集。如果保留端口定位于源端口,则意味着该包来自于服务器。反之,则说明数据包来自于客户端。

了解TCP/UDP协议的应用有助于说明这一点。HTTP/UDP是客户端与服务器之间的双方向通信,即Snort需要检测的包要么是从客户端发往服务器,要么是从服务器发送到客户端。所以规则优化将规则分组,按照保留端口是在源端口还是目的端口来划分。这样,客户端请求规则集与服务器响应规则集就是两个独立的规则集。那么客户端发来的包被不用匹配服务器响应规则集了。

例如,HTTP客户端请求的数据包需要检测HTTP客户请求规则,而不是HTI'P服务器响应规则。所以一个来自于HTTP客户端(在TCP协议的目的端口域为80)的包,源端口和目的端口都因为是保留端口而被检测。对于客户端1HTTP数据流大部分源端口不是保留端口(因为在1024以上),但是目的端口是保留端口,因为它的目标是一个HTTP服务器,HTTP服务器经常使用端口80或其他已指定的HT'fP端口。所以在这种情况下,一个HTTP客户端发来的包,具有目的端口为80源端口为一般端口的规则集将被选择。

2.3.2 ICMP协议

ICMP规则仅仅使用ICMP类型域来优化ICMP规则集。没有类型域的规则被认为是一般ICMP规则,被加入每一个独立的规则集中,包括一般规则集。例如,一个类型代码为8的ICMP包(echo request包),类型代码8作为参数被检测。但是如果类型代码不具体,则被一般ICMP规则集检测。

2.3.3 IP协议

所有的IP规则包括TCP,UDP或者ICMP;都属于特定协议规则集,其他协议属于IP规则集。即在规则匹配时,如果根据协议类型找不到匹配的规则链表头,或没有找到匹配项,就搜索IP规则链表。没有协议域的规则被认为是一般的IP规则,加入到每一个IP,TCP,UDP和ICMP规则集中。

总之,创建的规则集,是将具有相同特征的规则归为一个集合,如果有对数据包的匹配项,则肯定在该集合中,这样不用依次检测其它的规则头链表,节省了冗余,大部分情况下对一个数据包只有一项与之匹配,大大提高了检测速度。

实际上,规则优化使用传输协议信息来创建和选择高效的规则集。但是在异常情况下,也会出现冲突的情况,下面就这一现象作一下介绍。

2.4 特定规则与一般规则

特定规则即存在特定参数的规则,如TCP规则、UDP规则、ICMP规则。一般规则除了内容没有什么可以将这个规则与其他规则区别开。

但是在异常情况下,也会出现冲突的情况,即一个包匹配多个规则集,这种情况称为“特定规则冲突”。特定规则集冲突发生在TCP与UDP上,因为两个规则集适用的参数大于两个(源地址和目的地址、源和目的端口)。如果捕获的数据包的源端口是特定端口,目的端口也是特定端口,则出现匹配两个规则集的情况,即既与源端口为特定端口的规则集匹配,又与目的端口为特定端口的规则集匹配。遇到这种情况,可以两个规则集都检测。

还有一种冲突一般是因为人为的发一些恶意的或异常的包所致。这种情况发生时,会产生报警。

解决冲突的方法的三种:双重检测、首发命中检测和随机检测。

(1)双重检测(double inspection)

这是最基本的处理不明确冲突的方法。因为两个规则集都用来检测包,两次检测就是将规则依次检测,该方法保证可能发生的所有事件,但是对于DOS攻击却无能为力。

(2)首发命中检测(first-hit inspection)

该方法和两次检测有些类似,不同之处是,如果第一个被检测的规则集检测出有异常或恶意事件发生,那么另一个规则集就不用被检测了。

(3)随机检测(Stochastic inspection)

随机检测即为随机地选择一个规则集。该方法防止了由于不确定冲突发生的DOS攻击的可能。但是它不能保证所有的入侵事件都被发现。如攻击者利用由于源地址与目的地址造成的冲突,利用一个规则集被检测而另一个不被检测的情况而逃避检测,但是对于随机检测方法,攻击者就很难确定哪个规则被检测而那个不被检测所以攻击者就不能保证能成功入侵。

3 结束语

规则优化目的是加快规则检测的速度,是Snort检测引擎的主要部件。本文介绍了Snort的检测过程,规则链表结构,规则优化的原理,优化产生的问题及问题的解决办法。

参考文献

[1]Jack Koziol Intrusion Detection with Snort[M].2005.

[2]蒋建春,冯登国.网络入侵检测原理与技术[M].国防工业出版社,2006.

Snort规则检测及其优化分析 篇4

Snort是一个用C语言编写的开放源代码的轻量级网络入侵检测系统 (NIDS) , 所谓轻量级是指在检测时尽可能少地影响网络的正常操作。虽然Snort代码极为简洁、短小, 但功能强大, 具备跨系统平台操作和对系统影响最小等特征, 并且允许管理员在短时间内通过修改配置进行实时的安全响应。目前最新版本是Snort 2.6。

1 Snort规则处理

Snort规则处理模块完成与规则有关的各种功能, 主要包括Snort规则解析和Snort规则检测两部分。

1.1 Snort规则解析

Snort使用一种简单、灵活、高效的规则描述语言。Snort规则可以划分为两个逻辑部分:规则头和规则选项。规则头包含了规则动作、协议、源地址、目的地址、网络掩码、源端口和目标端口等信息;规则选项包含警报信息以及用于确定是否触发规则相应动作而需检查的数据包的详细信息。

Snort将所有已知的攻击以规则的形式存放在规则库中, 系统初始化并解析规则时, 根据规则所用协议分别生成TCP、UDP、ICMP和IP四个不同的规则树。Snort规则树的数据结构在rules.h文件中进行定义。每一个规则树包含独立的三维链表:Rule Tree Node (规则头) 、Opt Tree Node (规则选项) 和函数指针 (指向规则行为) 。在RTN节点 (即链表头节点) 中包含的是IP地址及端口号等信息, 而OTN节点 (即链表节点) 中包含的是规则选项。Snort规则解析将具有共同属性 (例如:源IP、目的IP、源端口号和目的端口号) 的链表选项压缩到一个单独的链表头中。

1.2 Snort规则检测

当Snort发送一个数据包到规则检测引擎时, 首先分析该数据包使用哪个协议以决定将与对应的规则树进行匹配;然后与RTN节点依次进行匹配, 当与一个链表头节点相匹配时, 向下与逐个OTN节点进行匹配。每个OTN节点包含一条规则所对应的全部选项, 同时包含一组函数指针, 用来实现对这些选项的匹配操作。当数据包与某个OTN节点相匹配时, 即判断此数据包为攻击数据包并将触发规则中定义的规则行为。

2 标准Snort规则匹配存在的问题

标准的Snort系统采用单进程方式运行, 对截获的每个数据包都需逐个串行地进行检测的方法, 即遍历整个规则集来判断一个数据包是否有匹配的规则。

Snort的规则按照四个参数来分类:源IP地址, 目的IP地址, 源端口范围, 目的端口范围。对数据包进行规则匹配时, Snort检测每个规则集的四个参数来确定是否检测这个规则集还是简单地移动到下一个规则集。如果一个数据包匹配这个规则集的四个参数, 则按顺序检测这个规则集中的所有规则, 并按顺序检测每个规则的参数。当一个规则集的所有规则检测完之后, Snort将检测下一个规则集的四个参数再重复这个检测过程。

通常, 当处理规则集数目比较少的时候这个检测策略是相对有效的。但是, 当一个规则集中有10个以上的规则时, 这种检测策略效率就会很低, 因为一个规则集中的所有规则都将串行地进行匹配, 即一个规则中的所有选项都逐一进行匹配。另外, 它还会使一个数据包与多个规则集匹配, 从而大大降低了匹配速度, 且可能出现漏包现象, 并最终降低Snort系统的性能, 难以满足入侵检测系统高实时性的要求。为此, 急需采取措施, 以提高Snort系统的实时检测性能。

3 Snort的规则检测优化

规则检测是Snort的核心运算模块, 如果能够提高它的运算速度, 将有效提高Snort的整体性能。下面从模式匹配算法和规则优化两个方面来讨论Snort的规则检测优化。

3.1 改进模式匹配算法

模式匹配是Snort系统主要的性能瓶颈, 约占整个系统运行时间的30%。因此, 对Snort系统的性能优化工作, 主要是研究如何提高和改进模式匹配算法的效率。

B M算法是一种高效的单模式匹配算法, 该算法从模式串的最后一个字符开始自右至左逐个字符与正文中的字符进行比较, 其时间复杂度为O (mn) , 最优时为O (n/m) 。但是, 在Snort系统中进行多模式匹配时, 需要重复多遍执行, 其效果不佳。

对于多模式匹配来说, Aho-Corasic算法并行搜索模式集合要比应用BM算法逐一地搜索多个模式串高效得多。其预处理时间取决于规则集中最长模式的长度。AC算法的时间复杂度为O (m) 。然而, 基于有限自动机的算法必须逐一地查看文本的每个字符, 这样会影响匹配速度和工作性能。

AC-BM算法把AC算法和BM算法的基本思想有机地结合起来, 其在Snort系统上并行地多模式搜索比BM算法搜索快1.02~3.32倍。然而, AC-BM算法将对Snort规则重排序, 这也意味着规则无法区分优先级。其次, AC-BM算法需要额外的数据结构来搜索noncase-sensitive模式。

Wu-Manber算法是另一种应用广泛的多模式匹配算法。该算法采用了Boyer-Moore算法的框架, 在预处理所有模式时使用一个2-byte的跳转表。此外, 在进行匹配的时候, 它使用散列表选择关键词集合中的一个子集与当前文本进行匹配, 减少无谓的匹配运算。

总的来说, Wu-Manber算法是Snort系统的较好选择。因此, 我们采用Wu-Manber算法作为当搜索集个数超过10个时的默认检测引擎。AC算法则作为可供用户选择的检测引擎, 而B M算法就用于小规则集的检测中。

3.2 一种基于优化规则集的检测方案

针对Snort的每一个数据包都要对所有规则进行匹配的缺陷, 提出了一种规则优化的方案。该方法的主要思想是:将Snort的规则划分为多个子集, 使得每一个数据包匹配时仅有一个规则集与之匹配, 从而只需要在这个规则集内对这个包进行匹配。

规则优化创建的规则集必须满足以下两个原则:

(1) 尽量创建最小的, 最有效率的规则集;

(2) 创建独立的规则集, 使得每一个被检测的数据包, 只需要对一个规则集进行匹配。

规则优化在系统初始化时通过使用惟一的规则参数来创建规则集, 例如源端口、目的端口和规则内容选项等。对于每个传输协议来说所选的参数是不同的, 因为每个协议都有不同的标志。规则优化采用那些能惟一确定某一规则的参数来形成不同的子规则集, 从而使得多规则检测引擎只需检测较小的规则集。更重要的是, 这使得不同类型的数据包根据其自身特点被归到一个子规则集中。

对于不同的传输协议, 确定规则集的参数是不同的。对应于不同协议, 所选择的参数可参考如下:

(1) TCP/UDP:源端口目的端口

(2) ICMP:ICMP类型

(3) IP:传输协议id

当Snort系统运行时, 规则优化为每一个处理的数据包选择一个规则子集。规则优化只是多规则检测引擎的第一步, 因为选择规则集取决于对数据包参数和规则参数的匹配。也就是说, 规则优化为多规则检测引擎过滤出那些需要进一步检测的规则。

多规则检测引擎使用一种基于优化规则集的检测算法。因为所有要检测的规则已经划分到一个规则子集中, 检测算法可对规则并行地进行匹配。这种并行匹配算法加上已经优化的规则集, 降低了总体的检测处理时间。

4 结论与展望

本文通过对Snort源码的分析, 从Snort规则检测所存在的问题出发, 比较了已有的模式匹配算法, 并讨论一种基于优化规则集的检测方案, 使得规则并行地进行匹配, 提高了系统的匹配速度。另外, 网络攻击行为在一定时间内具有一定的共性。因此, 在系统检测出多个攻击数据包后, 动态调整规则的次序, 使之与后继的数据包尽快匹配, 将能够有效提高系统的性能。下一步的研究将对此进行设计和改善。

参考文献

[1]Snort 2.0: Rule Optimizer. Sourcefire, Inc. http://www.snort.org.2004.4.

[2]Neil Desai, Increasing Performance in High Speed NIDS, A look at Snort’s Internals. http:// www. cisudel.edu/ ̄zhi/www. docshow.net .2002.

[3]Rongtai Liu, Nenfu Huang, and Chihhao Chen. A Fast String-Matching Algorithm for NetworkProcessor-Based Intrusion De-tection System. ACM Transactions on Embedded Computing Systems, Vol. 3, No. 3, August 2004.

[4]Marc Norton. Optimizing Pattern Matching for Intrusion Detection.S ourcefire, Inc.http://www.snort.org.2004.9.

规则优化论文 篇5

在计算机日益扩展和普及的今天,计算机安全性要高,涉及面更广。当前众多的网络防火墙产品中,Linux操作系统上的防火墙软件特点显著。它们和Linux一样,具有强大的功能,不仅可以免费使用而且源代码公开,这些优势是其它防火墙产品不可比拟的。在计算机普及的同时,各种各样的应用也层出不穷,随之带来的是各式各样的安全问题。为了能够有效地解决这些安全问题,netfilter/iptables防火墙主要通过制定规则集控制数据包的传输,达到访问控制的目的。随着网络应用的大量出现,防火墙中的规则集越来越庞大,虽然能够有效地解决网络安全问题,但防火墙却成了影响网络流量的瓶颈。因此为了使防火墙能够在维护网络安全的同时,保证其不影响网络带宽,防火墙规则集的优化变得刻不容缓。

如果只使用输入规则链(INPUT)、输出规则链(OUT-PUT)和转发规则链(FORWARD),则很难达到防火墙的优化。我们从头到尾对规则链进行遍历,直到找到一个匹配的规则为止。规则链上的规则是按照从最一般到最特殊的顺序分层排列的。防火墙的优化主要分为三个方面:规则组织、state模块的使用及用户自定义规则链。

1 规则组织的优化

对于规则组织没有一成不变的公式。有三个因素:一是要考虑主机上运行着哪些服务,尤其是要组织流量最大的服务;二是要考虑主机的主要用途。对专用防火墙和数据包转发器的需求和对堡垒防火墙的需求是有很大不同的。同样,一个网络管理员可能会在一台安装防火墙的机器上设置不同的性能优先级。对于家庭网络,安装防火墙的机器主要表现为一个Linux服务器和网关而不是一个工作站。第三个基本因素是,我们在为防火墙优化组织规则时需要考虑网络的带宽以及Internet连接的速度。例如,优化对于使用了住家环境的、连接到Internet网的站点来说没有太大的意义,甚至对于一个非常繁忙的Web站点来说,站点机器的CPU也不会受到太大影响,因为与Internet的连接是一个瓶颈。

1.1 从阻止高位端口流量的规则开始

关于阻止源地址欺骗的规则或者是在高位端口(比如NFS或者X Windows)阻止流量的规则,这些规则位于允许流量进入特定服务规则的前面。显然,FTP数据通道规则一定位于规则链的末端,尽管FTP数据传输量一般都很大。

1.2 尽早为最常使用的服务设置防火墙规则

一般来说,对于规则在规则链的位置没有一成不变的规则。对于常用的服务,例如为一个特定的Web服务器设立的关于HTTP协议的规则,应该尽早设立。对于高流量、不间断的服务设立规则也应该尽早进行。然而,正如前面说过的,FTP、RealAudio这样的数据流协议应该放到防火墙规则链的尾部。

1.3 使用端口模块设定端口列表

通过使用multiport(多端口)模块来指明端口列表会带来性能的些许提升,因为multiport模块将多个规则合并为一个。使用multiport模块后,规则数据以及对数据包检测的次数都会减少。实际上,只要数据包匹配端口列表中的任何一个端口值,就会共享接口、协议、TCP标记、源地址和目的地址的检测规则,性能提升的程度依据防火墙接受服务的类型而定。显然,使用端口描述的服务必须具有相同的数据头特征才共享同样的测试规则。

1.4 利用网络数据流来决定如何对多个网络接口设置规则

如果主机拥有多个网络接口,如何设定某个接口的规则应该考虑到哪个接口将承受最大的流量。对于流量大的接口的规则应该放置到前面,对于一般的站点,这样做的意义不大。但对于商业站点,基于流量的规则设定是非常重要的。

1.5 传输层协议

服务程序使用的传输层协议是另一个需要考虑的因素。在一个静态防火墙中,每一个入站数据包都要通过规则链中所有源地址欺骗规则的检查,这项工作是一项非常大的开销。

(1)TCP服务:绕过源地址欺骗规则

即使没有state模块,对于基于TCP协议的服务,远程服务器端的连接规则也可以绕过源地址欺骗规则。TCP协议层会丢掉设置了ACK位的源地址欺骗入站数据包,因为这种数据包不可能与TCP层所建立连接的任何状态相匹配。

然而,远程客户端必须遵循源地址欺骗规则,因为典型的客户规则既覆盖了初始连接请求,也覆盖了来自客户端的、正在进行的数据流。如果SYN和ACK标记被独立检测的话,检测来自远程客户端的数据包中的ACK位的规则可以绕过源地址欺骗检测。源地址欺骗检测必需应用于SYN请求。使用state模块也允许将远程客户端的入站连接请求规则(即SYN数据包)与客户端随后发送的ACK数据包规则在逻辑上区分开来。只有建立初始连接的请求,即初始的NEW数据包,需要针对源地址欺骗规则进行检测。

(2)UDP服务:将入站数据包规则放在源地址欺骗规则之后

在没有state模块的情况下,对于基于UDP的服务,入站数据包规则总是跟在源地址欺骗规则之后。客户机和服务器的概念由应用层来维护,如果这种维护有任何意义的话。在防火墙和UDP层,由于没有连接状态这一概念,也就没有必要标示出连接请示端和连接响应端,所有的只是一些关于服务端口或被使用的非特权端口的信息。某些UDP服务在客户端和服务器端占用众所周知的一些服务端口,而其他的一些服务则使用非特权端口。

DNS是一个使用UDP服务的典型实例,由于不存在连接的状态,也就不可能存在一个从客户端发送的请求中的目的地址到接收到的响应中的源地址之间的映射。DNS服务器缓冲区中可能存在有害的数据包,其中的一个原因是因为DNS服务器不会检测数据包的合法性。更进一步地说,DNS服务器甚至不会检测用户发送的是否是一个正常的请求。一个恶意的数据包能够更新本地DNS服务器的缓冲区,尽管DNS服务器还没有收到一个正常的查询请求。

(3)TCP服务和UDP服务:将UDP规则放到TCP规则之后

总而言之,UDP规则应该被放在所有TCP规则之后,UDP规则链的位置处于整个防火墙规则链比较靠后的位置。这是因为大部分Internet的服务程序都使用TCP协议。UDP协议则是一种简单的、基于单数据包发送和接受的协议,让UDP数据包经过TCP规则链的测试不会明显增加系统的负担。一个例外的情况是流媒体服务,例如RealAudio数据流。然而,多媒体和其他的双向多连接会话协议是不受防火墙欢迎的。除非有ALG的支持,否则这样的服务不会通过防火墙或者NAT。

(4)ICMP报务:将ICMP规则放到防火墙规则链的后端

ICMP是另一种能够被放到防火墙规则链后端的协议。ICMP数据包里面只包含了少量的控制和状态消息。同样,ICMP数据包的发送频率是相对较低的。合法的ICMP数据包通常是单一的、没有被分割的数据包。除了echo-request,ICMP数据包总是发送控制消息或者状态消息以对某种异常出站数据包做出响应。

2 State模块使用的优化

使用state模块中的ESTABLISHED和RELATED匹配规则就是要将正在进行着交换的规则移到规则链的前端,同时也没有必要继续保留服务器端的某些特定规则。实际上,使正在进行中的、已经得到认可的、已经被接受的交换绕过防火墙的过滤正是state模块的两个主要目标之一。

State模块的第二个目标是提供防火墙的过滤(firewall-filtering)功能。对连接状态的跟踪使防火墙可以将数据包和正在进行中的交换联系起来,这项功能对于面向无连接的、无状态的UDP交换特别有用。

3 用户自定义规则链的优化

Filter表有三个固定的、内建的规则链:输入规则链(IN-PUT)、输出规则链(OUTPUT)和转发规则链(FORWARD)。Iptables允许用户自定义规则链,这些用户自定义规则链被当做规则目标(target)来处理,也就是说,在匹配集的基础上,目标能够向外扩展或中转到用户自定义规则链上。与数据包被接受或丢弃不同,当控制转到用户自定义规则链以后,会针对分支规则对数据包做更具体的匹配测试。当用户自定义规则链被遍历以后,控制被转回到调用链,然后继续在下一规则上进行匹配。如果在用户自定义规则链上匹配成功并对数据包采取行动,那么控制就不会被转回调用链。

图一显示了一个标准的、自顶向下地使用内建规则的遍历过程。

用户自定义规则链对于优化规则集是非常有用的,因此经常被用到。用户自定义规则链允许将规则组织成层次分明的树形结构。使用用户自定义规则链,根据数据包的特征,数据包匹配测试能够有选择地、精细地进行,而不必自上而下地通过整条内建的规则链。图二显示了数据包的初步测试过程。当数据包经过初步的测试之后,依据数据包内的目的地址信息再对数据包进行分支测试。

在本例中分支测试是基于目的地址的。与具体应用相关的源地址匹配在随后进行,例如远程DNS和邮件服务器。在大多数情况下,远程地址将会是“任何地址”。在该点对目的地址进行匹配将发往这台主机的数据包(根据是输入规则链或者是转发规则链)发往内部主机的数据包分开来。

图三显示了为发往本机的数据包设立的、与协议规则有关的用户自定义规则链。就像图中看到的那样,匹配测试能够从一个用户自定义规则链中转到另一个用户自定义规则链进行更具体的测试。

4 结束语

由优化和连接状态跟踪带来的好处是显著的。相对于典型的数据包过滤防火墙,由用户自定义规则带来的分类匹配功能大幅度地减少了数据包的测试次数。State模块的使用降低了测试的次数,甚至可以使成批的数据包绕过防火墙规则。还有,数据通道连接可以作为一个关联(RELATED)连接被立即匹配。总之,随着网络技术的发展,防火墙的优化需要不断地完善、不断地去研究。

参考文献

[1]J.Wallerich,H.Dreger,A.Feldmann,B.Krishnamurthy,and W.Willinger,“A methodology for studying persistency aspects of Internet flows,”in Proceeding of ACMSIGCOMM Computer Communication Review,vol.25,pp.23-36,May2005.

[2]The netfilter project team,“Linux Netfilter/iptables frameworks,”Nov1999.[Online].Available:http://www.netfilter.org/.[Accessed:Sep.2004].

[3]L7-filter Classifier project team“,L7-filter Classifier,”May2003.[Online].Available:http://l7-filter.sourceforge.net/.[Accessed:Oct.2004].

[4]叶惠卿.基于Linux iptables防火墙规则生成的研究与实现[J].计算机应用技术,2010.

[5]朱立才,杨寿保,宋舜宏.Netfilter/iptables防火墙性能优化方案与实现[J].计算机工程与应用,2006(,15).

[6]Steve Suehring,Robert L.Ziegler著.何泾沙,等译.Linux防火墙(第3版)[M].北京:机械工业出版社,2006.

一种优化的关联规则增量更新算法 篇6

在数据挖掘中, 关联规则的挖掘是一个重要的研究课题。关联规则是R.Agrawal等人于1993年提出的。它最典型的应用是在销售事务数据库中发现新的有用信息。例如:90%的顾客在购买商品A和B的同时也购买了商品C和D。因此找出类似的规则, 就可以制定出更好的销售策略。此外, 关联规则也应用到金融、保险等行业。由于这些应用数据库中的数据都是极其庞大的, 而且是经常更新变化的, 因此迫切需要高效的算法来更新、维护已经挖掘出的规则。

目前大多数的关联规则增量式更新算法都是以Apriori算法为核心进行的改进和优化。如FUP[1]、UWEP[2]、PFUP[3]算法等。本文主要考虑在最小支持度和最小置信度不变的情况下, 数据库D被添加时, 关联规则的更新、维护问题。在借鉴上述算法思想的基础上提出了一种改进的关联规则更新算法MIFUP。

1关联规则的增量更新算法

给定事务数据库D和新的事务数据集d。本文考虑的主要问题是假定在最小支持度不变化的情况下, 事务数据库D中增加了新的事务数据集d后, 最新事务数据库D∪d中关联规则的高效更新问题。针对这个问题, D.W.Cheng等人提出了经典的FUP算法。

FUP的基本思想是:对于任何一个k项集, 若它在D和d中都是频繁项集, 那么它在D∪d中同样是频繁项集;若它在D和d中都是非频繁项集, 那么它在D∪d中同样是非频繁项集;若它仅在D (d) 中是频繁项集, 则其支持计数应该加上d (D) 中的支持计数来决定它在D∪d中是否为频繁项集。由于FUP算法产生了大量的候选项集, 扫描数据库次数多, 因此它具有很高的时间复杂度。

1999年, N F Ayan等人提出了UWEP算法。UWEP算法利用非频繁项集的父集一定是非频繁项集这个定理的性质, 对于候选k项集不必等到第k次遍历, 就尽可能早地剪切掉非频繁k项集, 有效地减少了候选项集的数量, 但是该算法对于预剪切的策略考虑得还不是很完善。

后来有人在FUP和UWEP算法的基础上提出了PFUP算法, 该算法借鉴强频繁项集概念, 利用强频繁项集连接生成小数量的候选项集, 采用了预剪枝策略减少了对数据库的扫描次数。它将候选项集数量减到最小, 通过预剪枝策略减少扫描数据库的次数, 但是当数据库规模大时, PFUP算法仍然耗费大量的时间。

除了以上算法, 还有许多新的算法, 如SFUA[4]、HIUP[5]、EFUP[6]、IFUP[7]等, 在减少扫描数据库次数和候选项集数量上做出了改进。

针对现有的关联规则增量更新算法上存在的缺陷, 本文提出了一种优化的关联规则更新MIFUP算法, 采取了优化策略, 更大程度地减少扫描数据库的次数, 不仅从理论上提高了算法执行的效率, 而且将以实验的形式来加以验证。

2关联规则的更新MIFUP算法

2.1优化策略

针对现有算法的不足, 采取如下两个优化策略。

优化策略1 在关联规则优化中, 事务压缩原理[8]是一个重要的方面, 它减少了扫描数据库的次数。因此MIFUP算法借鉴了事务压缩的思想。事务压缩算法是Agrawal等提出的压缩进一步迭代扫描事务数的方法。因为不包含任何k项集的事务, 不可能包含任何 (k+1) 项集, 所以可对这些事务加上删除标志, 扫描数据库时不再考虑。若一个事务不包含任何k项集, 则该事务包含的项集必定小于k, 同时必小于k+1, 则该事务不会包含在任何 (k+2) 项集中。因此在下一次扫描事务数据库, 先把该事务删除以提高扫描效率。

本文中引入数组来存放事务中项集的个数。FlagD存放原数据库D的每条事务项集个数, Flagd存放新数据库d的每条事务项集个数。由于不包含k-项集的事务不可能包含任何 (k+1) -项集。则计算频繁k-项集在原数据库中的支持度, 如果相对应的FlagD中的数据小于k, 则不需要扫描该对应下标的事务, 直接扫描下一条事务。如果相对应的FlagD中的数据大于k, 则扫描对应下标的事务, 进行模式匹配, 得到该项集的支持度。扫描频繁k-项集在新数据库d中的支持度也是一样的情况。

优化策略2 用numD1数组保存D的1-非频繁项集在D中出现的次数, 如果X∈Ld1且XLD1, 扫描numD1数组可以得到X的出现次数。因此只需要扫描一次数据库D。在得到数据库d的频繁项集时, 同时用numd1数组保存d中的1-非频繁项集在d中出现的次数。如果X∈LD1且XLd1, 扫描numd1数组可以得到X的出现次数。那么在生成D的1-强频繁项集时, 不需要扫描数据库d。

2.2 算法思想

新增数据库d中k-项集X的频繁性主要有以下3种情况:

(1) X在d和D中均频繁;

(2) X在d中频繁但在D中非频繁;

(3) X在d中非频繁但在D中频繁。

当X属于⑴情况, 则X是D∪d的频繁项集。但是当X属于⑵或⑶时, X需要扫描D或d来判断X在D∪d是否频繁。在PFUP算法, 必须扫描整个数据库D或d。但是在MIFUP算法中, 如果FlagD或Flagd中的数据小于k, 则不需要扫描该对应下标的事务。因此减少了扫描的事务数, 减少了扫描数据库的时间。

在生成D∪d中的1-频繁项集时, 如果X属于⑵情况, PFUP算法扫描数据库D的次数是项集X的个数, 但是MIFUP算法只需要扫描numD1, 可以得到X在数据库D的出现次数;如果X属于⑶情况, PFUP算法扫描数据库d的次数也是项集X的个数, 而MIFUP算法只需要扫描numd1, 可以得到X在数据库d的出现次数。

2.3算法描述

算法:关联规则增量式更新算法MIFUP。

输入:设原数据库为D, 新增数据库为d, 最小支持度为s, LD为原数据库D的频繁项目集合, Ld为新数据库d的频繁项目集合, LDk为原数据库D的k-频繁项目集合, Ldk为新数据库d的k-频繁项目集合, FLd为d的强频繁项目的集合, FLD为D的强频繁项目的集合, FLDd为D∪d的强频繁项目的集合。

输出:D∪d中的强频繁项集FLDd。

首先求出数据库D、d的1-阶强频繁项集FLD1 、FLd1

3算法实现和比较

通过优化策略1, MIFUP算法减少了数据库的事务数;通过优化策略2, 在生成1-频繁项集时, MIFUP算法只需要扫描一次数据库D或d。因此从理论上来说, MIFUP的效率远大于FUP和PFUP算法。为了进一步比较这两个算法, 下面给出了实际运算比较, 实际运行的硬件环境:CPU是intel-p4-2.4G, 内存是DDR-1.0G;软件环境:操作系统为Windows 2000 Server, 编程语言是Matlab 7.1。原数据集D是以布尔矩阵的形式存放, 有9个项目的10000条记录的, 新数据集是500 (约8.5k) 条记录。算法FUP、PFUP、MIFUP执行结果比较如图1所示。

由图1可知, 总体而言MIFUP算法的执行时间小于PFUP算法和FUP算法。当支持度小于或等于0.2时, MIFUP和PFUP算法执行时间相差比较大, 因此当频繁项集数量较大的时候, MIFUP算法的效果更加明显, 且MIFUP算法更适用于稀疏数据库。当支持度在[0.2, 0.4]变化时, 由于满足该支持度的频繁项集数量不大, 因此MIFUP算法与PFUP算法执行速度大致相同。在数据库的关联规则增量更新方面, MIFUP算法具有更小的时间复杂度。

4结束语

本文在借鉴其他算法的基础上, 提出了一种优化的关联规则更新算法MIFUP。与其他算法相比, MIFUP算法减少了扫描数据库D或d的次数, 极大地减小了时间复杂度。本文不仅在理论上证明算法的正确性, 而且还通过实验加以验证。但MIFUP算法只适用于数据库增加的情况, 将来研究重点是拓展MIFUP算法, 使之能面向增加和删除数据库的情况。

摘要:针对PFUP算法存在扫描多次数据库这个瓶颈问题, 提出一种优化的关联规则增量更新算法MIFUP (Mixed Improve Fast Updating) 。该算法提出了两种优化策略:借鉴事务压缩原理和用数组存放一阶非频繁项集个数。实验仿真说明, MIFUP算法效率明显优于PFUP算法。

关键词:FUP算法,UWEP算法,PFUP算法,MIFUP算法

参考文献

[1]Cheung D W, Han J, Ng VT, et al.Maintenance of discovered association rules in large databases:An incremental updating technique[C]//New Orleans, Louisiana:The12th Int l Conf on Data Engineering, 1996.

[2]Ayan N F, et al.An Efficient Algorithm To Updating Large Itemsets with Early Pruning[C]//San Diego, California, USA:proc of the5th Int.Conf.on Knowledge Discovery and Data Mining (KDD’99) , 1999.

[3]黄德才, 张良燕, 龚卫华, 等.一种改进的关联规则增量式更新算法[J].计算机工程.

[4]陈劲松, 施小英.一种关联规则增量更新算法[J].计算机工程, 2002, 27 (7) :106-107.

[5]孙士潮, 刘寒冰, 吉立新.一种高效的关联规则增量式更新算法[J].计算机应用与软件, 2007, 24 (10) :169-183.

[6]徐文拴, 辛运帏.一种改进的关联规则维护算法[J].计算机工程与应用, 2006, 18 (3) :178-180.

[7]朱红蕾, 李明.一种高效维护关联规则的增量算法[J].计算机应用研究, 2004, 21 (9) :107-109.

基于蚁群算法的模糊控制规则优化 篇7

传统控制是建立在系统精确数学模型的基础上的,而实际系统常常存在复杂性、非线性、时变性、不确定性等问题,难以获得精确的数学模型。模糊控制作为一种新技术,不依赖于工业对象模型,他不是用数值变量而是用语言变量来描述系统特征,并根据系统的动态信息和模糊规则进行推理以获得合适的控制量,因而具有很强的鲁棒性,在诸多的复杂系统控制领域得到了广泛的应用。在模糊控制器的设计过程中,模糊规则通常是由专家经验来确定的,在专家经验难以获取的情况下,模糊控制器的设计将无法进行。为了解决这个问题,人们提出了很多种优化,例如粒子群算法、遗传算法等[1,2,3,4]。模糊规则的设计相当于一个组合优化问题,文章利用蚁群算法来优化模糊规则,并将其用于链梯速度控制系统中来验证该方法的有效性及优越性。

1蚁群算法分析

蚁群算法是由意大利学者Dorigo等人于20世纪90年代初期通过模拟自然界中蚂蚁集体寻径的行为而提出的一种基于种群的启发式仿生进化算法。它是一种通用的启发式算法,可用来解决各种不同的组合优化问题。该算法最早成功地用于解决著名的旅行商问题(TSP)。它采用分布式并行计算机制,易于与其他方法结合,具有较强的鲁棒性。

蚁群算法的基本思想是:用蚂蚁的行走路线表示待求解问题的可行解,每只蚂蚁在解空间中独立地搜索可行解,解的质量越高,在“行走路线”上留下的信息素也就越多;随着算法的推进,代表较好解的路线上的信息素逐渐增多,选择它的蚂蚁也逐渐增多,最终整个蚁群在正反馈作用下集中到代表最优解的路线上,也就找到了最优解。而且蚂蚁还能够适应环境的变化。当蚁群的运动路径上突然出现障碍物时,蚂蚁亦能够很快重新找到最优路径。可见在整个寻优的过程中,虽然单个蚂蚁的选择能力有限,但是通过信息素的作用使整个蚁群的行为具有非常高的自组织性,蚂蚁之间交换着路径信息,最终通过蚁群的集体自催化行为找出最优路径。蚁群算法便是基于这种正反馈自催化(autocatalytic)行为产生的[5,6]。

蚁群算法通过候选解组成的群体的进化过程来寻求最优解,该过程包含两个基本阶段:适应阶段和协作阶段。在适应阶段,各候选解根据积累的信息不断调整自身结构;在协作阶段,候选解之间通过信息交流,以期望产生性能更好的解。

2蚁群算法优化模糊控制器

典型的模糊控制器的结构如图1所示,其中模糊规则库是需要优化的,优化前给定一个初始值,在优化过程中根据优化标准调整模糊规则库的值,最终将规则库确定下来[1]。

此处的模糊控制器采用双输入单输出,模糊规则采用传统形式如下:

IF A=ai AND B=bj THEN C=ck

其中A,B为输入,C为输出。

设每一个输入变量有S,M-,M,M+,B这5个模糊语言值可取,这样整个模糊系统最多可有5×5=25条模糊规则,即为最大规则基。规则辨识算法就是要确定这25条规则的后件(THEN的部分),也就是输出模糊值。

为了简化计算,隶属度函数采用等腰三角形,对于每条规则的后件可取S,M-,M,M+,B这5个模糊值,而当此条规则不存在时算法规定规则的后件取Z(Zero)。这样,整个25条模糊规则后件最优解的寻优空间为25×6的矩阵。在这里,用一维数组Rules[25]表示得到的规则,为了编写程序方便,将6个模糊集Z,S,M-,M,M+,B相应定义为0,1,2,3,4,5,设系统的25条模糊规则如表1所示。

为了实现对规则的辨识,算法先保持隶属度函数的初始参数不变。而初始的25规则的后件在(0~6)中随机选取,这样就基本建立了一个完整的初始模糊系统,这个系统对于给定的输入数据对将会有相应的输出。然后再利用蚁群算法对25条模糊规则的后件进行优化辨识。

利用已知的代表实际系统特性的输入输出数据对,对模糊规则进行训练学习,使得模糊系统对应于样本输入数据对的输出数据最大程度接近实际系统的样本输出。这样,训练过程完成后所得到的25条规则后件Rules[25]就是算法所辨识出的规则[5,6,7,8]。

为模拟实际蚂蚁的行为,首先引进如下记号:设m为蚂蚁的总数,τj(t)为t时刻在j规则节点上残留的信息素量。初始时刻,各条规则上信息素相等。蚂蚁k(k=1,2,…,m)在运动过程中,根据各条规则节点上的信息素量决定转移方向,pjk(t)表示在t时刻蚂蚁k由当前位置转移到位置j的概率,由于规则辨识相对TSP问题来得简单,在每只蚂蚁的周游过程中并未引入启发式因子,蚂蚁的行动只受到信息素的指引,所以转移概率的计算公式为:

其中,allowedk={n-tabuk}表示第k只蚂蚁下一步允许选择的规则的集合。这里用tabuk(k=1,2,…,m)表示已经选择过的规则。随着时间的推移,所经过路径上的信息素不断蒸发,经过l个时刻,l是规则总数,每经过一次循环,蚁群中的每一只蚂蚁都完成了一次符合规则的旅行,此时,各路径上信息素浓度要按下式修正,即:

τj(t+l)=ρ×τj(t)+Δτj (2)

式中ρ(0<ρ<1)表示在时间tt+l之间经过路径上信息素的蒸发系数,系数ρ必须规定为小于l,是为了避免各路径上信息素量无限制地累积。(1-ρ)为信息素残留因子,而Δτj可表示为本次迭代中第k只蚂蚁释放在规则j上的信息素量。

经过n次迭代后,所有蚂蚁都将完成一次旅行,它们的禁忌表已被填满,此时,对每只蚂蚁k计算fitness(b),并且将其Δτj值按式(3)修正。然后,将这些蚂蚁所找到的最有规则储存下来,并将每只蚂蚁的禁忌表清空。

上述过程不断循环重复,直到达到最大收敛次数Ncmax。至此,可认为蚁群已找到最优的模糊规则[5]。算法流程图如图2所示。

3 仿真结果与分析

将设计的模糊控制器用于链梯速度控制系统中,系统的模型如图3所示[9]。

系统中的参数分别为:φf=1.02Wb;pn=2;J=1.954kg·m2;ne=1500r·min-1;v=0.5m·s-1;Kz=1;τz=0.3;k1=1;k2=vne=13000

通过MATLAB仿真得到系统使用蚁群算法优化前与优化后的响应曲线,如图4所示。图中虚线表示优化前的响应曲线,实线表示优化后的响应曲线。由图可以看出,采用蚁群算法优化后的模糊规则控制效果明显优于优化前,优化后系统的动态响应速度明显加快,过渡时间大大缩短,超调量有所减小,极大地改善了系统的性能。

4 结束语

本文成功地将蚁群算法应用到模糊规则的优化中,为解决无法获得专家经验的情况下设计模糊控制器的问题给出了一种可行的方法,仿真结果表明所得模糊控制器具有良好的性能。但是由于本文所采用的蚁群算法,在每次循环后,都会对所走过的路径进行信息素增强,所以搜索效率较低,下一步的研究重点是采用改进的蚁群算法来提高优化效率。

参考文献

[1]徐开军,朱伟兴.基于遗传算法的模糊控制器的优化设计——采用模糊数据挖掘技术[J].计算机工程与应用,2006,42(29):97-99.

[2]徐开军,张春艳.基于SCEA的模糊控制器的优化设计研究[J].微计算机信息,2010,26(2):39-41.

[3]Boubertakh H,Tadjine M,Glorennec P Y,et al.Comparisonbetween fuzzy PI,PD and PID controllers and classical PI,PD and PID controllers[J].International Review of Auto-matic Control,2008,1(4):175-183.

[4]Ko C N,Lee T L,Fan H T,et al.Genetic auto tuning andrule reduction of fuzzy PID controllers[J].IEEE Trans Sys-tems,Man,and Cybernetics,2006,41(5):291-297.

[5]师黎,陈铁军,李晓媛.智能控制理论及应用[M].北京:清华大学出版社,2009:317-320.

[6]王小平,曹立明.遗传算法——理论、应用与软件实现[M].西安:西安交通大学出版社,2002:129-136.

[7]Kowalska T O,Szabat K.Control of the drive system withstiff and elastic couplings using adaptive neuro-fuzzy ap-proach[J].IEEE Trans Ind Electron,2007,54(1):228-240.

[8]Clerc M,Kennedy J.The particle swarm explosion,atability,and convergence in a multidimentional complex space[J].IEEE Trans,Evolutionary Computation,2002,6(1):58-73.

规则优化论文 篇8

关键词:启发式规则,优化,网页元素,精准提取

0 引言

随着时代的发展,互联网在我们生活中扮演的角色越来越重要,而组成互联网的这一实体的关键成分,即网页也得到了越来越多的关注。如何从网页中准确且快捷的获取我们需要的内容已经成为研究者所关注的话题。众所周知,网页是由HTML组成的文本文件。由于HTML并不规范,每个网页的编排又有着很大的差别,所以传统的基于标记的提取方法无法精确定位网页元素信息,只能进行一部分文字的抽取和图片的去除,对于不同信息的识别有着很大的盲目性。

人工智能具有处理不确定性乃至不可知性和学习、解释和推理的能力。因此,本研究利用人工智能方法实现网页信息的提取。在对网页元素提取主要手段———启发式方法进行分析和研究的基础上,我们进一步对启发式规则进行了优化研究。我们提出了运用编辑距离算法计算相似度的方法,根据相似度判断信息抽取的准确率,从而大大提高信息提取的准确度。

2 网页元素提取方法

启发式规则应用的单位是标签,所以信息抽取需要先对网页进行分解,提取出标签。本研究采用构建DOM树来实现HTML的解析以及标签的提取。DOM树构造简单,易于遍历,结合启发式规则,方便于网页元素的提取与分析。

2.1 构建DOM树

DOM树是一种数据结构,HTML文档中的所有节点组成一棵文档树,树中的节点表示HTML文档中的元素、属性、文本等。树起始于文档节点,由此继续伸出枝条,直到处于树叶的所有文本节点为止。DOM树的节点构成示例如图1所示。

2.2 过滤噪声

由于网页中存在着许多干扰源,如广告、图片等,因此构建DOM树过程中有很多节点是没用的。在对现有的方法进行深入研究的基础上,结合本研究的实验,我们利用遍历DOM树、过滤噪声节点的方法,提取出有用的文本节点以进行下一步的分析。

3 启发式规则的提出

人们的不同习惯会造成网页在设计布局上大相径庭,然而,总体上有规律可循。启发式规则就是利用这些规律对DOM树进行分析、提取信息的有效方法。启发式规则的优劣是决定网页元素提取准确度的重要因素。

本研究在对现有的启发式规则进行充分研究和实验的基础上,针对网页不同要素、提出更加全面优化的启发式规则。本节对发布时间、标题、正文及来源等要素所对应的启发式规则逐一介绍。

3.1 发布时间规则

(1)如果文本节点中包含一些关键词,例如,“发布时间”、“时间”、“提问时间”等,则该节点包含发布时间信息的可能性增加。(2)如果文本节点中包含特定的日期格式,例如2001-07-12或者2011年7月7日,则该节点包含发布时间信息的可能性增加。

3.2 来源规则

(1)如果文本节点中包含一些关键词例如“来源”、“转自”、“提问者”等,或者文本节点为“××网”,则该节点包含来源节点信息的可能性增加。(2)如果文本节点的前一个或者后一个文本节点是发布时间节点,则该节点包含来源节点信息的可能性增加。(3)如果文本节点的前一个或者后一个文本节点是标题节点,则该节点包含来源节点信息的可能性增加。

3.3 正文规则

正文在整个网页中所占比重是最大的,能否准确地获取正文决定着对网页信息把握的准确率。因此,正文规则及其优化尤为重要。

(1)一般正文的长度不会太短,所以如果文本节点的长度大于一个值,那么该节点包含正文信息的可能性增加。(2)一般正文由多个段落组成,所以如果一个节点的标签为

,并且其有一定数量的兄弟节点也是

,则此节点的子文本节点包含正文信息的概率增加。(3)一般正文的上下可能会有一些间距,也就是换行符,所以如果在文本节点的兄弟节点标签中如果有一定数量的
,那么该节点包含正文信息的可能性增加。(4)一般正文都存在于发布时间的下方,那么所有位于发布时间后的文本节点包含正文信息的可能性增加。

3.4 标题规则

(1)标题通常来说不会太长,但可以很短。因此,我们选择两个合适的长度做上下限,如果长度在此范围内则满足条件、包含标题信息的可能性增加。(2)如果文章中有或者为的标签,说明有粗体字,则该节点可能为标题,并且其兄弟节点也可能是标题的一部分,那么该部分包含标题信息的可能性增加。(3)如果节点的标签为H1或H2或H3,那么该节点的子节点包含标题信息的可能性增加。(4)如果满足前三个条件,那么第一个出现的可能是标题的节点之前的所有的文本节点包含标题信息可能性增加。

4 元素提取及验证

4.1 设置权值矩阵

依据启发式规则、凭借文本节点可能性度量筛选节点,进而实现信息抽取。根据经验,我们设计了计算节点可能性的初始权值矩阵,如图2所示,同时,表1给出了对应权值矩阵相关参数的详细解释。

权值矩阵的行数是最大规则数,列数是待抽取的信息数量,矩阵列的权值和为1。通常,概率矩阵有两种生成方法:(1)根据经验设置。例如,一般情况下,当有“发布日期”字样时,这个节点就非常接近发布时间节点了。这样,看到“发布日期”比单纯的看到一个日期格式的数字得到的信息更多。因此,把前者的权值设置得大一些,表示更重视包含这种特征的节点。(2)根据正确率设置。假设算法已经构造完整,那么可以从0开始穷举每列的各个权值。实验中保证每列权值相加为1,精度为0.05或0.1比较合适。每实验一组得出一个正确率,然后通过比较正确率得到正确率最高的一组权值。

由于自学习更改权值的方法开销较大,所以本实验结合经验、采用第一种方法设置权值。

4.2 元素的抽取

本研究首先建立网页数据库,然后提取载入网页中信息并与数据库中的信息进行匹配,从而得到各个网页元素提取的准确率,最后统计得出总的准确率。

实验中存在的一个问题是抽取出来的信息不可能百分百和数据库中的信息相吻合,比如,从网页中抽取的发布日期是“发布时间:2011-07-02”,而数据库中的信息是“2011-07-02”。本质上,这样应该归结于提取成功,然而,我们凭什么来判断呢?针对这个问题,本实验提出了应用著名的编辑距离算法(Levenshtein Distance)来进行字符串相似度的比较。通过对相似度的计算,判断是否提取出相应的信息。

同时,本实验提出了对正文信息的抽取进行迭代筛选的方法。首先,设置阙值为0.2,提取所有正文权值大于0.2的节点;第二步,计算提取出的正文与待比较数据的相似度,存储到一个变量中;第三步,把初始值增加0.05,再次重复第二步;如果相似度呈增长趋势,那么就一直重复第三步和第二步;直到相似度出现下降,则终止迭代,取其前一次的阙值,即当前阙值减去0.05,则可提取出相似度最大的正文。

这种方法可以用来寻找不同阙值对正文相似度的影响,找到最大值。因为在不同的网页中页面排版格式是不一样的,无法找到一个通用的阙值,所以这种动态寻找最佳阙值的方法是十分有效的。

为了保证所抽取节点内容的完整性,本实验在获取单个节点内容的同时也获取了其子节点和兄弟节点内容,这样可以避免在有些网页上信息抽取不全的问题。

4.3 准确率验证与分析

本文对新闻型和论坛型两类网站、20个网页实施了信息相似度的测试,记录了相关项的综合相似度,进一步分析了实验结果,完成了实验准确度的判定。

从以上两表中可知标题的相似度最高,但并不能只从相似度来判断准确率。比如发布时间是“2012-2-18”,而提取出来的内容一般是“发布时间:2012-2-18”,虽然相似度只有64.29%,但其结果已经是提取成功了。而标题之所以相似度较大,主要是噪声节点比较少,因为标题通常是作为单独节点出现的。

新闻型网页总体上的准确率要远大于论坛型网页,主要是两方面的原因:(1)论坛型网页正文占所有回帖的比例不确定,比例越大,相似度越高。有的时候一楼中的文本很短,那么最后的相似度会非常小。(2)论坛型网页在来源及标题上并无特殊格式约束,只能通过对文本进行匹配来判断。比如在论坛中一个帖子有时会被编辑多次,这样在楼主的帖中就会显示“本帖最后由XXXX于XXXX-XX-XX编辑”,我们通过对文字的匹配来增加其权值。然而对于没有被编辑过的帖子则没有办法。

5 总结

启发式网页信息提取方法对新闻型网页提取的准确率已经相当高了,对于标题、发布时间和来源几乎做到了100%提取。由于正文由多个节点组成,所以会有一定量的噪声干扰,对准确率产生了一定程度的影响。由于采用了字符串匹配算法,我们能精准地得出相似度,这对于完善算法和研究网页排版是很有帮助的。

在实际操作过程中,我们发现针对不同类型的网站可以对规则进行适当的变化,权值矩阵也需要不断调整。并且,对于文本匹配类的规则,我们可以把它当做一个小型专家系统。比如发现节点中如果包含“发布时间”,那么其权值就应该比单纯包含“时间”要大。当然,这些需要在实践中积累经验,并对不同类型的网页应用不同的设置,使提取出来的信息达到最大的准确率。

参考文献

[1]胡金柱,周星,舒江波,熊春秀.基于启发式规则的网页主题信息精确定位方法[J].计算机应用研究.2010年02期.

[2]李铭岳,周军.基于改进HTML-Tree的中文网页特征向量提取方法[J].信息技术.2009年01期.

[3]王磊,蒋建中,郭军利.基于扩展DOM树的Web页面信息抽取[J].计算机应用与软件.2007年第24卷第6期.

[4]常红要,朱征宇.网页正文提取中与正文无关的图像清除技术[J].计算机技术与发展.2010年07期.

上一篇:最优化控制下一篇:商业招贴的创意定位