整体分布优化算法(共8篇)
整体分布优化算法 篇1
摘要:针对分布式视频编码在误码环境下部分比特面解码失败,单一区间重建导致视频质量下降的情况,提出了一种多量化区间优化重建算法。该算法充分利用所有连续或不连续的正确解码比特面进行重组,从而得到多个候选的量化区间,并根据边信息与这些区间的位置关系找出最佳的解码区间。相较于传统的单一区间的重建算法,在误码环境中该算法可以更准确地重建出正确解码值。实验结果表明,所提出的算法性能明显优于单一区间的重建算法,在错误比特面错误率相同时,所提算法解码视频的峰值信噪比最大分别有1.2 dB和3.0 dB左右的提升。
关键词:分布式视频编码,误码信道,比特面解码,重建函数
随着移动通信技术和IP网络的快速发展,视频通信技术有了突飞猛进的发展。目前,在实际生活中越来越多地应用采用无线信道进行数据传输。由于各种外在因素对信道稳定性的影响,数据包在信道传输过程中的误码或丢失常常发生。传统的视频编码系统,如H. 264、MPEG-X具有很好的压缩效率,但在误码信道中的鲁棒性较差,一旦出现数据丢失在解码端就会出现码流失配,导致误码漂移。而在分布式视频编码( Distributed Video Coding,DVC)[1,2]系统中,采用独立编码、联合解码的方式,编码端没有使用预测环路,避免了错误累积。同时,分布式视频编码数据本身具备一定抗误码能力,因此,DVC在一些采用无线传输的应用中具有较大的潜力。
DVC系统中,重建函数是解码端重要的一环,直接关系到解码质量[3,4,5]。近年来,不少学者在DVC系统的重建函数上做了大量研究。杨春玲等在像素域中提出一种双向运动补偿重建算法[6],充分利用视频的帧内和帧间相关性,提升了解码性能。Zhang等利用一种基于上下文的自适应马尔科夫随机场来挖掘时空相关性[7],进而得到优化的重建。王尊亮等利用联合比特面译码的方法来提高解码的效率[8],通过挖掘相邻比特面的相关性,利用已解码比特面作为先验信息来解后面的比特面。上述文献中的方法都是建立在解码端能够正确解码的基础之上,并未考虑解码失败的情况。在无线网络[9]或无反馈信道[10,11]的网络中要求在编码端进行码率估计,由于无法准确估计所需校验码率也会导致比特面解码失败。
Li等提出在边信息质量较差时利用反转位顺序模式提高解码质量[12],该方法利用逆序位来计算解码所需对数似然比。Yang等在像素域中提出一种可变的分布式视频重建方案[13],根据边信息与解码值的差距,通过调节变量 λ 的大小使解码值尽可能接近真实值。但这种方法需要训练大量数据来选择 λ 的取值,工作量大且有不确定性。R. Hansel[14]提出一种软重建的改进算法,针对解码出错时得到的量化符号不够准确的情况,利用量化符号的概率而不是固定的量化值进行重建。这种方法计算复杂度高且没有考虑比特面随机丢失时的解码问题。秦浩提到了一种无反馈分布式视频编码中WZ帧的顽健重构算法[15],针对DC系数,在编码端求出原始图像的相关信息,传送到解码端自适应地调整边信息量化值和解码失败量化值对重构的贡献,从而提高重建的质量。然而由于误码导致解码所得索引值不准确,仅利用该值与边信息进行重建无法达到最佳的效果。
上述文献都是将解码值确定在某个单一量化区间中重建,在出现部分比特面解码失败时并没有充分利用所有正确解码比特面。而根据信息论可知,知道的信息越多越有利于解码,如果能够充分利用所有成功解码比特面进行多区间重建必将提升系统整体性能。因此,在有误码发生的情况下,本文创新性地提出充分利用出错比特面后面正确解码的比特面进行多量化区间重建。该算法在所有可能区间中确定最终解码值,避免了单一区间不准确导致解码质量下降的问题。通过实验分析得出该算法确实能有效提升解码质量,有效提高系统的抗误码能力。同时,由于实际传输信道多为噪声信道,不可避免会发生误码或数据丢失,本文针对误码情况下的视频图像重建研究也符合实际应用。
1 Wyner-Ziv系统中基于单一区间的无误码重建
目前最常用的分布式视频编码系统是加州大学伯克利分校的Puri等人[3]提出的PRISM系统和斯坦福大学Aaron等人[4]提出的Wyner-Ziv系统,其中,后者由于优良的压缩性能和可实现性得到更广泛的应用,本文的重建算法就是基于Wyner-Ziv系统进行研究的,系统框图如图1 所示。
其编解码算法如下:
Wyner-Ziv视频编码系统中,通常将视频帧分为关键帧( K帧) 和Wyner-ziv帧( WZ帧) 。其中关键帧利用H. 264 / AVC帧内编解码,并用于WZ帧解码过程中边信息估计的参考帧。WZ帧经过4 ×4 的DCT变换得到的系数块,按照频带不同组合在一起,将它们分别表示为Dk( k =1,2,…,16) 。然后根据不同频带进行均匀量化,其中量化级数为2Mk,Mk代表对应第k频带量化所需的比特面个数。量化后得到的索引值记为qk,将qk进行二进制比特面分离得到二进制序列[qkMk,qkMk-1,…,qk1],其中qky,y ∈ [1,Mk]表示第k频带第y层比特面的值。然后将不同比特面的数据从高到低依次输入LDPC编码器,得到校验比特。
解码端,首先利用与当前帧相邻的已解码关键帧求出边信息SI,这里利用运动补偿内插完成。将得到的SI进行与编码端相同的DCT变换和量化,得到SI的变换系数Yk。其次,对接收到的比特面数据进行解码重建得到量化索引值 。最后,根据文献[3]的边界重建模型,由边信息Yk以及解码值 ,可解当前帧的DCT系数值为
具体实现过程为,结合量化步长得出 中的第i个值 所对应的原始值区间,记为 ,其中i ∈[1,2,…,N], 分别代表量化值 对应区间的最小值和最大值。于是给定的某一频带中的具体值 的解码过程为
式中: Yki表示第k频带的第i个边信息值经DCT变换后的结果。由式( 2) 可知,当变换后的边信息值落入解码所得量化值所在区间时,解码结果直接为边信息值,如果小于该区域的下限,则解码值为该下限值; 同理,如果大于该区域上限,则解码值取该上限值。最后,将这些解码结果进行IDCT变换( 反离散余弦变换) ,即可得到重建的WZ帧。
文献[16]对以上算法进行了改进,将边信息与原始信息的相关噪声模型参数考虑在内,采用最小均方差重建( MMSE) 算法。该算法计算式为
式中: fX| y( x | y) 是给定边信息y时X的条件概率密度函数,该函数服从拉普拉斯分布。
以上过程都是假设所有比特面都能被正确接收并解码,然而在遇到数据丢失或误码情况时,总会出现无法解码的情况。而一旦某个频带中有某一位或几位比特面无法解码,最终得到的解码量化值就不准确,若依然使用上面的基于单一区间的重建函数,得出的结果必然导致较大误差。
2 误码信道下的重建函数
根据上文提到的问题,一旦传输过程中发生误码或数据丢失,则最终得到的比特面就无法准确重建出量化值^qk,进而得不到理想的当前帧重建值。本文针对这一问题,提出利用多量化区间进行重建,并对其实现进行系统模拟仿真。
2. 1 传统重建算法
在无误码重建函数中,解码得到的量化索引值唯一,从而对应单一的量化区间。传统单一区间重建对于比特面解码出错时,只考虑错误比特面之前的高位比特面信息,得到量化索引值的一个范围,从而得到一个较大范围的量化区间。将编码端某一频带k中的量化值进行比特面分解得到的一组二进制数据流记为[qkMk,qkMk-1,…,qk1]。经误码信道传输后,如果频带k的所有比特面均无法正确解码,那么该频带的所有比特面均由边信息SI对应值替代。当其中一部分有错误时,重组比特面只利用出错比特面以前的高位正确比特面信息。若第m个比特面出现错误,则由正确解码比特面得到量化索引值为
式中:Q表示比特面重组后求量化值的函数。
由式( 4) 得到的量化索引 ,由于部分比特面无法解码,因此该值所确定的区间不再准确。由式( 3) 可以看出,真正的量化索引值 。当第m个比特面以后的各比特面取值为0 或者1 时,可以确定实际的量化索引值应该在 到 之间,即 ,由此只能确定一个范围较大的量化区间,该区间由 所对应的区域下限 和 对应的区域上限 确定,即 。这样就得到了一个唯一的量化区间,从而可以利用现有的两种重建算法分别重建。
以上算法仅利用高位正确解码比特面,解码量化值无法具体确定从而导致对应的原始值区间在一个较大的范围内。这样对于解码重建有一定的误差影响,如果能够将错误比特面之后正确解码的比特面用于重建,可以进一步缩小正确解码值的范围。
2. 2 多区间优化重建
单一区间算法在解码端进行比特面重组得到解码量化值的过程中,是根据比特面由高到低逐步将解码值锁定在某一区间中,直至所有比特面全部正确解码得到唯一值。当高位比特面解码失败时,所得的比特面将会出错,此时无法将解码区间定位到一个更小区间中,只能在一个比较大的量化区间进行重建。上述方法中无论错误比特面之后的比特面是否正确都无法使用,导致解码端的有用信息极大浪费。若知道错误比特面后面的某些比特面,那么解码值所在的范围是可以进一步缩小的,只是此时的值可能是多个离散的值,如知道最低位的比特面时就可以确定解码值是奇数还是偶数,这样就可以更准确地定位解码值。因此,需要有效利用所有正确解码的比特面来完成重建,从而有效提高重建质量。此时求^qk' 的函数为
式中: λm代表第m个比特面的解码情况,为1 表示qkm正确解码,为0 表示qkm没有正确解码,函数F表示对正确解码比特面的重组并计算其量化值。若没有正确解码则对应的比特面值是不确定的,因此可以得到多个可能的解码值。
在重建的时候解码值通常是以边信息的量化值作为标准,即重建值的概率分布是以边信息量化值为中心的一个拉普拉斯分布。量化区间越靠近边信息量化值则为正确解码值的概率越大,所以在多量化区间中寻找最佳区间就是找到与边信息最接近的一个。所以当边信息变换系数Yki落入多量化区间中的任何一个时,解码值即为Yki,而当Yki不在任何区间内时,解码值为所有量化区间边界值中离Yki最近的边界值。具体重建过程如下:
1) 对某一频带k判断错误的比特面个数,并且记发生错误的比特面个数为n 。在LDPC信道解码时,对每一频带都是由高比特面到低比特面依次进行解码。对于每一个比特面都进行多次迭代译码,每一次迭代译码后都要判断伴随式是否为0 来确定解码正确与否。若伴随式不为0 则说明解码有误,应该进行下一次的迭代译码,当连续多次译码结果都相同且伴随式也不为0 时,说明解码不收敛,译码发生错误。若迭代次数达到规定次数,伴随式任然不为0,则也认为解码失败。
2) 确定 可能的2n个取值,将这些值的集合记为 ,i ∈[0,2n- 1]} ,同时得到集合中每一个量化索引值对应的原始值区间B = { [PjL,PjH],j ∈[0,2n-1]} 。
3) 进行重建,当边信息Yki落入区间[PjL,PjH]时,解码值为边信息量化值; 当边信息小于最小索引值对应的区间下界时,解码值为该下界值; 当边信息大于最大量化索引值对应的区间上界时,解码值为该上界值; 其他情况下,假设边信息Yki落在第j和第j + 1 个量化索引所对应的区间之间,即PjH< Yki< PjL+1。判断边信息Yki与pjH和pjL+1之间的大小关系,取离边信息Yki最近的边界值作为解码值。
记作d=PHj-PLj,N=2n-1,则式(2)可以优化为
图2 给出了边信息量化值的取值示意图。
由上述分析可以看出,在利用所有正确解码的比特面重建时,获得的不再是一个量化索引值而是多个,因此可以将大区间细化为多个不同的原始值小区间,利用边信息与这些区间的大小关系来确定最终的解码值。这种方法可以最大化地利用已解码的比特面校验数据对边信息进行修正,从而提高了重建视频质量。
3 实验结果与分析
本文实现了基于上述介绍的多区间重建算法的Wyner-Ziv系统,由于目前已有文献均基于单一区间重建,因此本文主要与现有单一重建算法的性能进行了测试和比较。实验选取不同运动强度的Foreman,Coastguard及Hall-monitor三个QCIF格式序列的前100 帧测试。三个序列帧率均为15 f /s( 帧/秒) ,Y∶ U∶ V为4∶ 0∶ 0,只对WZ帧的亮度分量的PSNR( 峰值信噪比) 进行比较。取GOP ( 图像组) 为2,K帧采用H. 264 编码且无误码重建。采用DISCOVER[17]的量化方式对不同频带进行量化,试验中取Qi= { 8,7,6,5} 四种量化表来实现不同码率下的性能测试。由于在实际中,误码的发生是随机的,所以所有16 个频带的任何比特面都可能出错。表1 给出了在两种不同比特面错误率下,解码视频帧的平均峰值信噪比。其中BP-Error表示比特面错误率,每次实验均为30次随机实验的平均值。
d B
由表1 可以直观地看出随着错误率的增加,视频帧的平均质量在下降。但在两种错误率下本文的多区间重建算法都要优于传统单一区间重建算法,对于三个不同的序列本文算法相较于边界重建算法最高都有大约1. 0 d B左右的提升; 而比MMSE算法最高有3. 0 d B左右的提升。这是由于错误比特面的存在导致所得的量化区间不准确,采用传统算法无法得到准确的重建值。MMSE算法由于是在量化区间内做均值,因此在量化区间出错时,重建值会更加地偏离实际解码值,所以导致性能更加的差。而本文算法在出现比特面出错时,充分利用所有正确解码的比特面信息,得到所有候选区间并找到最优区间解码,从而较好地重建出与原始值最接近的解码值。
图3 给出了在不同比特面错误率下WZ帧的率失真( RD) 曲线。由图3 可以看出,在不同错误率下,本文的多区间重建算法RD性能都要优于传统单一区间重建,且无论错误率在25% 还是50% 时,与边界重建算法和MMSE算法相比,在不同码率情况下3 个不同序列优化算法的平均质量都有不同程度的提升。
另外,由于不同频带不同比特面在解码中的作用不一样,所以错误比特面的个数决定了解码的质量的好坏。由图3 可以明显看出错误比特面数量在25% 时重建质量优于在50% 时,对于Foreman和Coastguard序列,本文优化算法在错误率为50% 时重建质量甚至高于单一区间错误率为25% 时的重建质量。因此,本文提出的多区间重建算法可以较好地提高系统抗误码性能。
4小结
本文针对误码信道下,部分比特面由于校验信息丢失或出错而无法解码的情况,充分利用已正确解码的比特面进行多量化区间最优重建。实验表明,在出现部分比特面无法解码时,多量化区间重建效果明显优于传统单区间算法。从随机丢失不同数量的比特面实验结果可以看出,本文优化重建算法在不同序列中的平均质量都有较大的提升,在误码信道中的性能得到了验证。同时,所提出的算法只是充分利用所有已解码的比特面进行重建,因此并没有增加解码复杂度。
整体分布优化算法 篇2
关键词:分布式数据库;查询策略;SDD-1算法
中图分类号:TP311文献标识码:A文章编号:1007-9599 (2010) 16-0000-01
The Distributed Database Query Optimization Strategy Research on SDD-1 Algorithm
Li Ertao
(Economics&Management College of Anhui,Hefei230059,China)
Abstract:Distributed database system has dealt with and increase a lot of new content and complexity because of distribution and redundancy for data distributed to inquire,so the query strategy seems particularly important.This text introduced the characteristics of query strategy which based on the SDD-1 algorithm and discuss the defeat and improving methods.
Keywords:Distributed database;Query strategy;SDD-1 algorithm
分布式数据库系统是数据库系统与计算机网络系统结合的产物,具有数据独立性、集中与自制相结合的控制机制、存在适当的数据冗余度、事务管理的分布性等特点。在分布式数据库系统中,数据独立性除了数据的逻辑独立性与物理独立性外,还有数据分布透明性。数据分布透明性指用户不必关心数据是如何被逻辑分片的(数据分片透明性),不必关心数据及其片段是否被复制及复制副本的个数(数据复制透明性),也不必关心数据及其片段的物理位置分布的细节(数据位置透明性),同时也不必关心局部场地上数据库支持哪种数据模型。有了分布透明性,用户的查询程序书写起来就如同数据没有分布一样,使系统使用起来更简单、有效。
一、分布式查询策略的基本特点
在分布式查询处理技术中,查询策略的基本类型通常包括两类:针对查询执行代价的策略和针对查询响应时间的策略。针对查询执行时间代价进行优化策略的目标是使查询执行所使用的系统资源尽量地少,从而降低整个系统开销。针对查询响应时间优化策略的目标是尽量减少查询的响应时间,而不计较系统资源的耗费。
查询优化有两种基本方法:第一是查询转化,即以不同的顺序执行关系操作,如连接和投影操作;第二是查询映射,即使用一系列高效的算法来存取各种设备和实现关系操作。即查询映射是针对关系的存取方法和操作的执行算法进行决策,而查询转化则是针对操作执行的顺序及不同站点之间数据流动的顺序进行决策。
二、SDD-1算法
SDD-1算法由两部分组成:基本算法和后优化。基本算法是根据评估所缩减程序的费用,效率,收益估算等几个因素,给出全部的半连接缩减程序集,决定一个最有益的执行策略。主要包括三个基本步骤:(1)初始化:已准备好从查询数转换的优化模型,且所有关系已完成局部缩減。(2)优化:根据初始条件,构造可能的半连接缩减程序;按半连接缩减程序的静态特性表,分别计算其代价和产生的益处,从其中选取一个半连接程序,设为S;以S完成缩减以后,又用重新产生的一组新的静态特性表再进行计算,再从其中选取一个合适的半连接程序,但每一个都只做一次;循环下去,直到没有半连接缩减程序为止。(3)结束:以最后一次缩减关系的静态特性表为基础,进行费用计算,选择场地。后优化是将基本算法得到的解进行修正,已得到更合理的执行策略。包括两种修正,一种是如果最后一次半连接程序缩减关系的所在场地恰好是被选中的执行场地,则最后一次半连接可以取消。另一种修正是在基本算法的流程图进行修正,因为某一个半连接缩减程序的代价可能很高,就必须修正半连接的操作序。
算法:SDD-l-QOA
input:QG:query graph with n relations;statistics for each relation
output:ES:execution strategy
begin
Es←local-operations(QG)
modify statistics to reflect the effect of local processing
Bs<-∮
For each semijion SJ in QG do
if cost(SJ) BS<-BS∪SJ end-if end-for while Bs≠∮ do begin SJ←most-beneficial(BS){SJ:semijion with max(benefit—cost)} BS←BS-SJ {remove SJ from BS} ES←ES+SJ {append SJ to e ecutJon strategy} 但是,SDD-1算法存在一个严重问题,那就是它的算法的复杂性。当元组数目很大时,进行查询搜索的代价迅速增加,使系统无法承受。为此,我们在此基础上对它进行改进,降低它的时间复杂度。我们提出的改进算法描述如下:假设已经建立执行策略ES,有益半连接存储表BS表。 (一)置ES为空,读取并行参数值P; (二)计算所有的有益半连接并加入BS表中; (三)选择最有益半连接x和比x小P范围内的有益半连接,若这些有益半连接涉及到的关系有重复者,则去掉其中较小的有益半连接,将最终得到的有益半连接从BS表中删除并加入ES中; (四)判断ES是否包含所有有益半连接,是则输出此执行策略,否则执行下一步; (五)调整统计数据; (六)转到第(二)步。 三、结束语 经过实验验证,采用改进的SDD-1算法对多关系查询进行优化后,不但减少了通信代价,而且提高了查询执行的并行能力。所以当查询涉及到的连接个数较多时,应用改进的SDD-1算法,通过在优化过程中添加并行参数,能很好的提高了SDD-1算法的并行执行能力。 参考文献: [1]解飞,唐培丽,魏宁.基于数据立方体的关联规则挖掘方法研究[J].气象水文海洋仪器,2008,1 分布式视频编码技术DVC (Distributed Video Coding) [1]以其编码简单、解码复杂的特点, 经常使用于编码端存储和计算等资源受限的视频应用中, 如无线视频监控、移动视频电话、智能家居等。DVC根据Slepian-Wolf分布式无损编码[2]和WynerZiv分布式有损编码理论[3], 采用对多个信源进行独立编码、联合解码的方式, 将系统的复杂度从编码端搬移至解码端, 实现与传统联合编解码相同的压缩编码效率。 在分布式视频编码系统中, 解码端根据前后已解码帧信息对当前帧进行预测估计, 生成边信息SI (Side Information) , 再根据边信息以及接收来自编码端的比特位信息对当前帧进行联合解码。由此可见边信息的生成质量在整个DVC中至关重要, 在提高系统性能方面有着十分重要的作用。 为了提高系统解码质量, 针对失真度较高的解码帧, 对已生成的边信息质量进行优化成为目前分布式视频编码技术的研究热点之一。文献[4]通过在DC域中进行运动估计来对生成边信息实现进一步修正。文献[5]提出在解码端采用连续Turbo解码方式, 根据时间和空间相关性对边信息进行重建, 以减少解码所需的校验码。文献[6]提出在解码端对生成边信息的性能进行运动补偿时域内插分析, 根据所得运动矢量对WZ帧进行重复解码以提高边信息准确性。在较高位比特面解码后, 文献[7]对边信息修正的方法进行设计, 利用解码值纠正出错系数, 从而增强边信息与信源的相关性。以去噪声为目的, 文献[8]提出基于多假设运动补偿预测的方法对边信息质量进行优化, 对原始边信息进行多假设运动补偿产生补偿块, 并采用线性组合方式生成质量较高的边信息。文献[9]充分利用初始边信息所包含的丰富信息, 提出一种利用图像颜色及纹理信息的边信息修正重建方案。 1 Wyner-Ziv编解码技术 Bernd Girod研究分布式边编码理论的基础上, 首次提出了Wyner-Ziv视频编码系统, 如图1所示。 在编码端将视频帧分为相互独立的WZ帧与关键帧K。对于关键帧K, 采用传统的帧内编解码方式进行压缩, 对于WZ帧, 其编解码算法如下。 编码端:采用均匀量化器对WZ帧进行2M均匀量化处理, 使所有系数量化后都处于2M个区间中, 量化系数用M个比特表示, 将所有系数按相同位的比特集中, 形成位平面。重要的量化系数被依次送入Turbo编码器进行独立编码, 所得编码校验码放入缓存, 等待解码时的发送请求, 再传输给解码端使用。 解码端:利用已解码关键帧K和WZ帧生成辅助边信息W, 用于对当前WZ帧的解码。将边信息进行量化, 生成的系数带送入Turbo解码器。解码器结合边信息, 通过反馈信道向编码端请求校验码的方式进行解码。当解码误码率满足特定的值后解码完成, 若解码失败, 则需要请求更多的校验码重复解码, 直至达到解码误差标准并获得解码图像的量化系数。最后进行反量化与帧重构, 得到解码视频帧WZ’。 通过对Wyner-Ziv系统分析可知, 解码端用于信道解码, 通过对当前WZ帧进行预测估计对当前像素帧进行重建。当边信息越接近于原始像素帧, 说明边信息质量越高, 解码端只需要从编码端的缓存中获取少量的校验码来进行解码, 使得系统解码WZ帧进行反馈的次数降低, 从而使所需要传输的码流减少。然而, 目前在Wyner-Ziv视频编码系统中, 大多数边信息生成方式获取的边信息, 存在与原始像素帧失真较大的问题, 这将严重影响到整个系统的编解码性能。针对如何判断生成的边信息失真程度, 并进行对应的纠错措施的课题, 对边信息进行生成质量的检测变得尤为重要。 2 相关性分类的解码检测优化算法 针对系统解码质量检测以及如何进行解码帧优化以提高分布式编码系统效率的问题, 提出了一种相关性分类的解码检测优化算法, 算法框图如图2所示。 2.1 置信度计算 在编码端: (1) 在编码之前, 将视频序列进行奇偶分类, 其中奇数帧为关键帧 (X2k±1帧) , 而偶数帧为WZ帧 (X2k帧) 。 (2) 为了均衡算法的精确性和复杂度, 采用8×8的格式大小将前后相邻关键帧分为若干大小相同、互不重叠的像素块, 将各像素块进行编号。 (3) 计算每一个WZ帧 (X2k帧) 像素块与其对应像素块的前向相关值SADf1, x和后向相关值为SADb1, x, 计算方法如下: 其中, n和m分别表示像素块的长度和宽度, B (i, j) 为像素块的灰度值, 相关值下标1表明该相关值由编码端计算得到。 (4) 将相关值SADf1, x和SADb1, x进行量化编码并传至解码端, 作为边信息质量检测与优化的信息。 在解码端: (1) 将解码帧标记为X2k-f, 下标-f表示为检测优化处理前得到的解码帧。将解码帧与前后两相邻已解码关键帧, 均采用8×8的分块处理。 (2) 根据下标编号找到与解码帧像素块B2k, x相对应的像素块B2k-1, x和B2k+1, x。按式 (3) 和式 (4) 进行相关值计算, 前向相关值SADf2, x和后向相关值SADb2, x。下标2表明该相关值是由解码端计算得到, 与由编码端相关值相区别: (3) 将前向相关值SADf1, x与前向相关值SADf2, x, 按式 (5) 进行差值计算得到前向置信度S1;将后向相关值SADb1, x与后向相关值SADb2, x按式 (6) 进行差值计算得到后向置信度S2: (4) 将前向信息置信度S1和后向信息置信度S2进行均值计算, 得到解码帧中对应像素块的置信度Sx: 2.2 像素块的选定 为了判定解码帧中各像素块的解码质量, 算法根据解码帧的整体质量定义一个自动调整阈值T, 阈值T的计算如下: N为整个解码帧中像素块的数目。如果解码帧的平均质量越差, 则计算得到的置信度值越高, 从而导致阈值的设定也随之提高。对于解码帧各像素块, 将对应置信度值Sx分别与阈值T进行比较判决: (1) 当Sx<T时, 说明像素块B2k, x解码质量较好, 失真较小, 进行保留操作, 不再进行解码优化操作。 (2) 当Sx≥T时, 说明像素块B2k, x解码质量较差, 失真较大。由于较大失真的存在, 需要采用以下描述的边信息重构算法对其像素块进行优化。 2.3 前/后相关性判定 当解码端进行边信息重构时, 根据相关值SADf1, x和SADb1, x, 设前向运动估计加权值α和后向运动估计加权值β, 并在不同情况下进行简单计算得到对应加权值。 (1) 当时, 表明原始帧中像素块B2k, x分别与前后对应像素块的相关程度相同, 取前向加权值α和后向加权值β为1/2。 (2) 当1/4≤SADf1, xSADb1, x≤1时, 表明原始帧像素块与对应前向像素块的差值较小, 与前向像素块的相关程度更大。前向加权值α与后向加权值β分别按如下计算取得: (3) 当时, 表明原始帧像素块与对应后向像素块的差值较小, 与后向像素块的相关程度更大。前向加权值α与后向加权值β分别按式 (9) 和式 (10) 计算得到。 (4) 当时, 表明原始帧的像素块与对应前向像素块的相关性很大, 将与对应后向像素块的相关性忽略, 前向加权值α取1, 后向加权值β取0。 (5) 当时, 表明原始帧像素块与对应后向像素块的相关性很大, 将与对应前向像素块的相关性略掉, 前向加权值α取0, 后向加权值β取1。 2.4 双向运动加权估计 将匹配块的搜索框大小从8×8扩展至12×12, 使得相临近的匹配块出现重叠区域, 分别在前后两个相邻关键帧X2k±1中进行匹配块搜索。 (1) 将后关键帧像素块作为当前块, 对前关键帧进行前向匹配块搜索, 找到的最优匹配块定义为B12k-1, x。匹配算法采用改进的匹配判定准则作为检测标准, 其计算方法如下: 式 (11) 为平均绝对误差函数, 其中 (x, y) 是位移矢量, fk+1和fk-1分别是前后相邻已解码关键帧的亮度值, N与M分别是像素块的长度与宽度。根据各个点的坐标值计算得到的MAD值, 以及相应的运动矢量MV。 利用平均绝对误差函数值, 以及匹配的运动矢量MV, 定义搜索像素块的代价函数, 如式 (12) 所示。如果在像素帧B2k-1, x中某点坐标位置 (in, jn) 使得代价函数CF (xn, yn) 值最小, 则以该点为坐标中心的像素块即为最优匹配块, 对应的前向运动矢量为MVf= (xn, yn) 。 (2) 将前关键帧X2k+1中的像素块B2k+1, x作为当前块, 对后关键帧X2k-1进行后向匹配块搜索, 找到的最优匹配块定义为B12k+1, x。采用相同方法得到匹配的后向运动矢量MVb, 其双向运动估计如图3所示。 (3) 将上述计算得到的匹配块B12k-1, x与B12k+1, x, 利用前向加权系数α和后向加权系数β, 按式 (13) 进行加权计算, 得到重建边信息帧中对应的预测像素块B12k, x: 利用上述得到的前向运动矢量MVf、后向运动矢量MVb以及加权系数, 按式 (14) 计算获得最优运动矢量MV: 2.5 空域平滑滤波 采用自适应加权矢量中值滤波器[10]对待优化像素块的对应运动矢量进行平滑处理。根据空域平滑算法的中值滤波器的定义, 分别对当前像素块的运动矢量MV1以及相邻像素块对应运动矢量MVi按式 (15) 进行运动矢量加权和值计算: 其中, W1, …, WN是对应的自适应加权系数, 选择运动矢量加权和值最小的运动矢量MVj作为当前像素块的运动矢量MVbest。加权系数的计算方法如下: 2.6 双向运动加权补偿 为了提高块边界内插值质量, 减小重叠块运动补偿带来的边界衰弱问题, 利用最终运动矢量场和加权双向运动补偿, 针对不同重叠区域内的像素值计算出相应的加权系数。 由于对像素块的匹配搜索框进行了扩大处理, 根据相邻像素块的重叠情况, 将运动补偿的像素块划分为A、B、C三类区域, 如图4所示。 (1) A类区域由4个相邻像素块互相重叠组成, 对于处于A类区域的像素点, 按式 (17) 进行计算: (2) B类区域由2个相邻块互相重叠组成, 对于处于B类区域的像素点, 按式 (18) 进行计算: (3) C类区域内像素块不存在重叠, 只存在所在相同中心坐标的像素块。对于处于C类区域的像素点, 按下式计算: 计算式 (17) 和式 (18) 中的加权系数wi的取值方法如下:对于处于当前内插像素块的重叠像素点, 包含的信息量对当前运动补偿影响较大, 设置wi值较高;反之亦然, 且加权系数值应满足式 (20) 。算法加权系数取值如下:wa1=wa2=wa3=2/9, wa4=1/3;wb1=1/3, wb2=2/3。 2.7 解码优化 通过以上算法步骤, 得到重建边信息帧中待优化的各像素块的估计值B2k, x。重建边信息帧存在两类像素块, 一类为保留像素块, 因生成质量较高进行保留处理;另一类为待优化像素块, 采用上述算法进行像素块重建, 以提高生成质量。每个像素块B2k, x的下标编号表示对应所在的位置, 根据两类像素块的下标编号, 进行像素块的排列组合, 得到优化重建的边信息帧。 将优化重建边信息送入系统解码器, 参与系统的解码过程, 获得优化解码帧X2k-b, 采用下标-b表示是通过检测优化处理后得到的解码帧。 3 仿真实验和结果 3.1 仿真实验 为了验证所提算法性能, 在Matlab仿真平台上分别对典型视频测试序列Foreman、Container进行仿真测试, 实验采用了以下测试条件: (1) 序列格式均为QCIF (176×144) , 速率为30 fps; (2) 设置奇数帧为关键帧K帧, 偶数帧为WZ帧, 且假设关键帧K帧能不失真地传输到解码端; (3) 实验中只计算WZ帧, WZ帧的帧率为15 fps, GOP的长度为2; (4) 采用与变换域WZ视频编码一样的系统设置:K帧采用传统的H.264 Intra编码方式进行编码[11]; (5) 为了明确显示算法有效性, 采用WZ帧的亮度信号的平均峰值信噪比PSNR作为衡量边信息质量的测度。 本章所提算法是针对初始边信息下获得的解码帧进行质量检测与优化, 因此将本文提出的分布式相关性分类解码检测优化算法与采用基于图像纹理信息的边信息改进算法[12]进行测试比较, 如图5、图6所示。 3.2 结果分析 从图5可以看出, 对于运动变化较剧烈的Foreman序列, 采用解码检测算法得到的重建边信息与初始边信息相比, PSNR性能平均提高1.45 d B。分析原因, 首先是利用原始帧以及解码帧的相关信息, 通过置信度计算, 并对解码帧的失真度进行判断。对于失真较大的像素块, 采用边信息优化算法进行前后相关性计算得到双向运动估计的加权值, 利用空域平滑滤波减小运动矢量场的失真, 最后通过加权双向运动补偿得到优化的边信息像素块, 利用重建边信息进行再次解码, 以提高解码帧质量。 从图6可以看出, 对于运动变化较小的Container序列, 优化边信息的PSNR性能平均提高0.49 d B, 提升程度较小。由于初始边信息生成算法对运动变化不大的视频序列, 能够充分利用其前后相关性, 获得的边信息质量较好。因此, 相比运动剧烈的序列需要进行失真优化的像素块数量减少, 使得优化效果没有运动变化剧烈的视频序列显著, PSNR性能提升幅度有限。 4 结语 本文主要对分布式视频编码中部分低质量的生成边信息的像素块的优化, 以及系统检测解码质量问题进行了分析, 提出一种基于相关性的分布式分类解码检测优化算法。着重对算法的实现步骤进行了详细描述, 对运动变化剧烈和缓慢的视频序列分别进行测试, 并对结果进行分析。仿真测试结果表明所提算法对运动剧烈的视频有较明显的检测与优化作用。今后的研究将集中在两个方面:针对不同运动程度的视频序列, 进行分块阈值的标准计算;运动估计算法的改进, 使得估计运动矢量与真实矢量更接近。 摘要:在分布式视频编解码系统中, 由于细节变化丰富而生成的边信息与原始视频帧之间存在较大的差距, 降低了解码帧质量。针对如何实现解码帧质量检测, 并对低质量的解码帧进行优化以提高系统性能的问题, 提出一种基于相关性的分布式解码检测优化算法。在编解码端分别计算相关性, 得到置信度值并进行解码检测。对于低质量的像素块根据相关性及运动估计进行重构, 最后通过滤波和双向运动补偿产生优化像素块。实验结果表明, 所提算法对低质量边信息具有优化作用。 关键词:分布式视频编码,Wyner-Ziv编码,边信息,解码优化,运动估计 参考文献 [1]Girod B, Aaron A M, Rane S, et al.Distributed video coding[J].Proceedings of the IEEE, 2005, 93 (1) :71-83. [2]Slepian D, Wolf J.Noiseless coding of correlated information sources[J].IEEE Transactions on Information Theory, 1973, 19 (4) :471-480. [3]Wyner A D, Ziv J.Rate-distortion function for source coding with side information at the decoder[J].IEEE Transactions on Information Theory, 1976, 22 (1) :1-10. [4]Badem M B, Mrak M, Fernando W A C.Side Information Refinement Using Motion Estimation in DC Domain for Transform-based Distributed Video Coding[J].IEEE Electronics Letters, 2008, 44 (16) :965-966. [5]Ko B, Shim H J, Jeon B.Wyner-Ziv Coding with Spatio-temporal Refinement Based on Successive Turbo Decoding[C]//Proc.of IEEE International Conference on Multimedia and Expo.[S.l.]:IEEE Press, 2008:785-788. [6]Ye S, Ouaret M, Dufaux F.Improved side information generation with iterative decoding and frame interpolation for distributed video coding[C]//Proceedings of the 15th International Conference on Image Processing.San Deigo, Calif, USA, 2008:2228-2231. [7]张金荣.基于分布式编码的图像视频编码关键技术研究[D].安徽:中国科学技术大学, 2009. [8]马力, 苏卓涵, 杨春玲.基于多假设运动补偿预测的边信息改进方法[J].计算机工程, 2011, 37 (12) :248-250. [9]Hou Mengjie, MenAidong, Yang Bo.An improved side information refinement using color-texture features for distributed video coding[C]//2010 2nd IEEE International Conference on Network Infrastructure and Digital Content, 2010:230-234. [10]Alparone L, Barni M, Bartolini F, et al.Adaptively weighted vector-median filters for motion-fields smoothing[C]//1996 IEEE International Conference on Acoustics, Speech, and Signal Processing, 1996, 4:2267-2270. [11]Karsten S.H.264/AVC Software Coordination[EB/OL].http://iphome.hhi.de/suehring/tml. 分布式环境下的连接查询优化是当今数据库理论研究的一个热点问题。由于分布式数据库中数据的冗余性和数据分布的复杂性,全局查询往往涉及多个站点上的关系或关系片段,此时不仅要考虑站点之间数据传输所产生的通信代价,还要兼顾基于站点的局部处理代价,这无疑增加了查询处理和优化技术的难度。为了有效地处理分布式连接操作,国内外文献提出了多种算法,通常分为半连接算法和直接连接算法。典型的半连接算法有SDD-1算法[1]、AHY算法[2]、双向半连接算法[3,4]等,这些算法通过半连接操作缩减站点间数据的传输量,但由于需要二次数据传输,当二次数据传输的总量不小于传输站点上某个关系或关系片段的数据量时,算法将失效。典型的直接连接算法有R*算法[5,6]、利用站点依赖信息(Placement Dependency,PD)的算法[7]等。R*算法直接处理连接操作,通过穷举所有可能的连接策略,将全局连接操作分解为每个站点上的局部连接操作,最后选择一个最优的连接策略作为执行策略,但穷举的计算方法耗时长,且要传输的关系或关系片段的数据量大时该算法的处理效率将不理想。PD算法弥补了R*算法的不足,该算法有效利用了局部查询的本地化特征,在一个设计精良的分布式数据库中可以实现全局连接查询的零数据传输处理。但如果全局连接操作引用的关系片段在不同站点中存在相关联的元组时,该算法将失效。 本文借鉴了PD算法在并行处理方面的优越性,提出了基于连接依赖信息(Join Dependency,JD)的连接查询优化算法。该算法利用连接依赖信息判断基于多站点的数据分布是否符合站点依赖,以降低远程访问的次数,对于不满足连接依赖的站点数据,则采用片段复制方法重新分布数据,确保其适用站点依赖算法。站点间关系或者关系片段的复制时间开销是该算法的惟一通信代价,但是这种代价会被站点间多线程的高度并行所弥补。 1 站点依赖与分片复制算法的原理 1.1 基于PD算法的特性分析 在分布式数据库系统中,关系或者关系的某个片段总是分布在不同的站点上,当两个关系做连接操作时,如果在数据传输量最小甚至无数据传输方式下得到正确的结果,此时可获得最佳的性能。 假定两个关系R1和R2的水平分片分别存放在站点S1和S2上,数据分布的初始状态如表1所示。 整体分布优化算法 篇3
整体分布优化算法 篇4
在关系R1和R2的公共属性A上作连接操作R1∞R2,如果其结果可以通过合并同一站点上两个关系片段的连接操作的结果集得到,即R1∞R2=(R11∞R21)∪(R12∞R22),则该策略是一种有效的策略。在该策略中,由于连接操作所涉及的片段总能在本站点找到可关联的元组,因此连接操作可以在站点间不发生数据传输的情况下进行,而且还可以利用本地站点中数据片段的索引信息提升局部处理的性能。
定义1两个关系Ri和Rj在公共属性A上满足条件Ris∞Rjt=Φ,则称Ri和Rj在属性A上站点依赖[8],即Ri∞ARj=∪(Fis∞Fjs)适用于关系所在的所有站点[9]。
其中:s,t表示不同的站点;符号∞A是在属性列A上的连接操作。
推论1若关系Ri和Rj在属性A上站点依赖,且关系不同站点中的Rj和Rk在属性B上站点依赖,则Ri∞ARj∞BRk=∪(Ris∞Rjs∞Rjs),其中s为所有包含关系Ri,Rj和Rk的片段的任一站点。
基于上述定义和推论,可以构造站点依赖算法Placement_Dependency(Q,P,S)[10],其中:Q是针对关系集合R={R1,R2,…,Rn}的等值连接查询;P是站点依赖信息;S是查询Q引用的满足站点依赖的最大关系集合。该算法的核心思想是利用站点依赖信息P确定查询Q能否零数据传输执行,如果S=R,则查询Q可以零数据传输处理。由于某个站点上的关系片段通常只与该站点的SQL应用密切相关,因此基于站点依赖的连接查询在很多分布式应用中都能得到正确的结果。
1.2 片段复制算法的原理
如果基于多个站点的关系或者关系的一个片段的连接查询不能以零数据传输方式执行,那么可以采用“片段复制算法”弥补其不足。如果R11(或R12)中的元组m与R22(或R21)中的元组n在公共属性列上满足连接条件,那么可以保持R1在站点S1和S2上的片段分布,然后将R21复制到站点S2并与R22合并为R2的一个副本。同样,将R22复制到站点S1并与本地片段合并得到R2的另一个副本。数据复制过程如图1所示。
数据复制结果如表2所示。
此时基于关系R1和R2的连接操作可以转化为片段R11和R12与各自站点上R2的副本的连接,即R1∞R2=(R11∞R2)∪(R12∞R2)。进而推导出,多个站点上与关系R1和R2等值连接等价的代数形式为:
其中∪i操作取遍存放R1片段的站点Si。
由于关系R1的片段R1i远小于R1,因此基于各站点的连接处理代价要远小于两个关系直接连接。另外,操作R1i∞R2可以在独立站点上并行执行,有利于获得良好的响应性能。
2 基于JD的算法设计
2.1 算法描述
设有关系R1,R2和R3,其数据片段分布如表3所示。假定关系R1和R2在公共属性A上站点依赖,关系R2和R3存在公共属性B。
考察上述三个关系的连接操作R1∞AR2∞BR3。根据站点依赖算法,R1∞AR2可以零数据传输方式执行。结合片段复制算法,R1∞AR2的连接结果与各站点上关系R3的副本连接也会在零数据传输方式下执行并得到正确的结果,即:
如果关系Ri和Rj在公共属性A上站点依赖或者关系Ri(或Rj)的副本存放在关系Rj(或Ri)各片段所在的站点上,则称关系Ri和Rj在公共属性A上连接依赖。
构造利用连接依赖信息J对基于多站点上的连接查询Q的连接依赖算法Jion_Dependency(Q,J,S)。其中:Q是针对关系集合R={R1,R2,…,Rn}的连接查询;J是连接依赖信息;S是查询Q引用的满足连接依赖的最大关系集合。
(1)初始状态:S=Φ;R={R1,R2,…,Rn};
(2)如果存在一对关系Ri和Rj在属性A上站点依赖,且Ri∞CRj包含在Q中,其中C包含A,那么将Ri和Rj放入S,并在R中删除;否则,该算法终止,返回S。
(3)如果Rk∈R且Rk∈S,循环做如下操作:如果S中的关系Rj与R中的关系Rk在公共属性B上站点依赖,且Rj∞BRk在Q中或可由Q导出,那么可将Rk放入S,并在R中删除。
(4)直到R=Φ或者R中的关系Ri在包含S的每个站点中都存在,则Q可以零数据传输处理。否则,将关系集合R中的关系Ri复制到包含S的各站点中。
2.2 算法的代价
2.2.1 查询代价的估算方法
在分布式数据库中,假定一个查询计划生成代价为QC,则QC主要包括查询的局部处理代价LT和站点之间的通信代价CT,即:
通信代价CT可用如下公式估算:
其中:C0为一次通信初始化产生的时间开销,在硬件条件固定、网络环境稳定的情况下,可作为常量处理,以s为单位;C1为站点间数据传输率,即单位数据传输所产生的时间开销,以s/bit为单位;X为站点间数据的传输量,以bit为单位。
局部处理代价LT包括I/O代价、存储代价(包括存储介质和存储技术的选择)和连接操作的计算代价。由于I/O代价和存储代价依赖于具体的计算机系统,本文仅考虑查询的计算代价对局部处理代价的影响。
2.2.2 基于连接依赖信息算法的查询代价分析
假定关系集合R={R1,R2,…,Rn}在站点集合S={S1,S2,…,Sm}上的数据分布如表4所示,且不同站点上的片段连接操作均不满足连接依赖,为关系集合R的全局连接查询设计一个简单的查询代价估算方法。
首先,选定一个关系Ri(i=1,2,…,n),使其保持各站点上的分片状态,然后将连接操作涉及的其他关系的片段复制到Ri所在的各站点,并通过各站点上数据的合并与连接获得正确的结果。由于在分布式体系结构中,不同站点的局部连接操作可以并行执行,所以在关系Ri保持分片状态下的全局连接查询的计划生成代价可由如下表达式给出:
通过计算上述i种策略的代价值QCi max,从中选取最低代价估算值的关系作为保持分片状态的关系,即:
选取关系Rk保持分片状态的策略为算法的最优执行策略。
上述算法的实现过程描述如下:
2.2.3 基于定量特征的查询代价估算
定义描述关系定量特征的相关信息,以便对上述策略的查询代价进行定量分析。设关系集合R={R1,R2,…,Rn}中关系与片段的定量信息如下:
(1)每个关系Ri在不同站点Sj上的片段表示为Rij。
(2)关系Ri中一个元组的长度,即所占用的字节数,表示为Size(Ri)。那么,各站点中关系Ri片段(水平分片)中元组的长度也为Size(Ri)。
(3)每个关系的元组数表示为Card(Ri),每个关系片段的元组数表示为Card(Rij)。
(4)关系Ri中属性A上不同值的个数表示为Val(A[Ri])。
根据上述描述,关系集合Ri(i=1,2,…,n)向某个站点Sj(j=1,2,…,m)的通信代价CTj可以表示为如下形式:
由于Sj站点的局部处理代价主要为关系Ri各片段在该站点的数据合并连接的计算代价,因此在不考虑关系是否能引用快速存储路径或索引的情况下,局部处理代价依赖于连接操作中片段或关系的大小。采用Rasha Osman中提出的n个关系的连接操作代价评估模型[11],构建分布式环境下站点Sj上的局部处理代价模型LTj:
其中:k=1,2,…,n,且k≠i;C为关系集合R中各个关系的公共属性集合。
由上述表达式可知,在关系Ri保持分片状态(即第i种策略)下,全局连接查询计划生成代价为:
在同一系统中同时考虑通信代价和局部处理代价时不能对其进行简单相加,需要根据具体应用环境对各种开销进行加权。p和q表示权值,且p+q=1。
3 实验设计与实验结果分析
实验使用的硬件环境为Intel®CoreTMi5-3230M CPU@2.60 GHz(2 600 MHz),内存为4 GB,SCSI硬盘1 TB,转速为10 000 r/min。操作系统为GNU/Linux,开发环境为JDK1.6,在实验环境中,采用上述所列配置Hadoop集群工作站,共计3台,其中1台为MapReduce主节点,作为HDFS名称节点,另外2台为MapReduce从节点,作为HDFS数据节点。
使用LUBM工具分别生成50,150,300所大学的测试数据,并在Hadoop集群工作站中部署测试数据,使测试数据的分布满足站点依赖。分别从LUBM的14个标准查询中选取其中6个查询语句进行测试实验。LUBM数据集文件大小如表5所示。
本实验重点比较PD算法、JD算法和R*算法在数据集LUBM(50)、LUBM(150)和LUBM(300)上的查询性能。通过比较6个标准查询的计划生成代价和查询响应时间,验证算法的有效性。每个算法执行5次,取其均值。对比实验结果如表6~表8所示。
从实验对比结果可见,在数据量较小的情况下,基于JD算法的计划生成代价稍劣于PD算法,但要优于R*算法。随着数据量的增加,基于R*算法的查询计划生成代价值呈指数级增长,查询性能急剧恶化,而JD算法的计划生成代价仍近似于PD算法。这是由于R*算法不考虑站点依赖问题,需要将各站点的关系或者关系的片段分别复制到指定站点执行局部处理,然后选择总代价最小的策略作为最优策略,站点间的通信代价和局部处理代价随着数据量增加而急剧上升,查询效率急剧下降。
下面对三种算法在数据集LUBM(300)上的查询响应时间进行对比分析,实验进行5次,取平均值,实验结果如图2所示。
由图2可以看出,JD算法具有较好的查询响应时间,在大数据量环境下,与PD算法的响应时间差别不大,但明显优于R*算法。因此,本文提出的基于连接依赖信息的连接查询优化算法是可行的,具有较好的寻优效果和实际价值。
4 结语
本文在分析利用站点依赖信息的算法和分片复制算法特性的基础上提出了利用连接依赖信息的分布式连接查询优化算法。算法的测试与结果表明,在基于多站点的连接查询中,该算法可极大地缩减网络的通信代价和局部计算代价。尤其当基于连接查询的大部分元组都能在本地站点找到,仅有少量元组需要从远程站点获取时,该算法可获得最佳性能。反之,该算法将退化为R*算法。
由于本文提出的算法的查询优化过程没有考虑查询结果向目标站点的传输代价,因此在连接操作返回的元组数较大的情况下,将产生额外的通信开销,从而给该算法带来负面影响。
参考文献
[1]赵光亮.基于半连接算法的分布式数据库系统查询优化技术[D].杭州:浙江工业大学,2013.
[2]钱磊,于洪涛.改进的半连接查询优化算法[J].燕山大学学报,2012,36(2):178-182.
[3]魏士伟,黄文明,康亚娜,等.分布式数据库中基于半连接的查询优化算法研究[J].计算机应用,2007,27(6):34-39.
[4]仝武宁,冉崇善,李宏斌.半连接查询优化算法的研究[J].计算机工程与设计,2011,32(3):972-975.
[5]陈钟,叶雪梅,青宪,等.一种改进的分布式数据库查询优化算法[J].计算机应用,2008,28(2):233-237.
[6]FAN Y Y,MI X F.Distributed database system query optimization algorithm research[C]//Proceedings of 2010 3rd IEEE International Conference on Computer Science and Information Technology.Chengdu,China:IEEE,2010:657-660.
[7]KUMAR T V,VIKRAM S,AJAY K V.Distributed query processing plans generation using genetic algorithm[C]//Proceedings of 2010 International Conference on Data Storage and Data Engineering.Bangalore:IEEE,2010:38-45.
[8]邵佩英.分布式数据库系统及其应用[M].3版.北京:科学出版社,2012:123-127.
[9]龚浩.分布式数据库查询处理和优化算法的研究[D].重庆:重庆大学,2005.
[10]张瑞芳.分布式数据库的查询优化方法设计与实现[D].成都:电子科技大学,2010.
整体分布优化算法 篇5
随着人们对电能的要求日益增加,现代电力系统的规模不断扩大,结构日益复杂,电力系统安全稳定运行变得尤为突出[1]。因此,为了提高电能质量以及供电的可靠性,发展分布式发电(Distribution Generation, DG)变得日益重要。同时分布式发电具有投资小、灵活、高效、环保、能调节电网负荷峰谷差等优点[2,3,4],可以利用各种可再生能源来进行发电和供能。但是,随着DG接入到电力系统中,同时也改变了系统原有的潮流分布,会对系统电压、 损耗、可靠性等产生影响[5]。但是通过电力系统无功优化控制,能够极大地提高电网稳定性,同时能够有效地降低网损,因此研究含分布式电源的无功优化有重要意义。
含分布式电源的无功优化是一个复杂的多约束、多变量、非线性规划的含整数以及浮点规划问题[6,7]。本文利用差分进化入侵杂草算法(Differential Evolution Invasive Weed Optimization, DEIWO)对含有分布式电源的配电网进行无功优化。入侵杂草算法与其他智能算法相比,具有结构简单、参数少、 收敛速度快等优点[8]。但是,同其他智能算法一样, 入侵杂草算法同样存在容易陷入局部最优以及收敛精度不高等缺点,通过引入差分进化算法[9],可以有效地使入侵杂草算法跳出局部最优,提高收敛速度以及收敛精度,进而得到最优解。结合无功优化的实际问题,对含有分布式电源的IEEE33节点配电系统进行无功优化,进而证明该算法的有效性。
1含分布式发电的电力系统无功优化数学模型
电力系统无功优化控制是通过调节变压器变比,发电机端电压以及补偿电容大小来使电力系统的有功功率损耗最小,并保证电压在规定范围之内。电力系统无功优化问题的基本数学模型包括目标函数、等式约束条件以及不等式约束条件三部分。 但是,随着DG的引入将进一步增加电力系统无功优化的复杂度。因此,要综合考虑含DG的配电网系统的无功优化数学模型。
1.1目标函数
本文以有功功率网损最小为目标函数。
其中:
式中:Ploss为有功功率的损耗;1为电压越限惩罚系数;2为发电机无功出力越限惩罚系数;Vi、Vj分别为节点i、j的电压幅值;Gij、Bij、ij分别为节点i、j之间的导纳实部、导纳虚部和相位差;QGi为发电机无功功率;Vimin、Vimax和QGimin、QGimax为对应变量的上下限。
1.2等式约束条件
根据电力系统网络运行条件,各节点应该满足有功功率和无功功率平衡。
式中:iP为节点i发电机有功功率、负荷有功功率以及DG有功功率之和;Qi为节点i发电机无功功率、负荷无功功率以及DG无功功率之和。
1.3不等式约束条件
不等式约束条件包括电网运行状态变量约束以及控制变量约束。
式中:Qci为无功补偿容量;Ti为变压器分接头档位;UGi为发电机端电压;Vi为负荷节点电压;QGi为发电机无功出力。
与一般配电网不同,当DG加入配电网后,需要对DG的出力进行一定的控制,使整体的无功优化效果更好,本文选取DG的有功出力作为控制变量,其约束条件为
此时,设DG的功率因数为1。
2差分进化入侵杂草算法基本原理
2.1入侵杂草算法
入侵杂草算法,又称为野草算法(Invasive Weed Optimization, IWO)是最早由Mehrabian和Lucas于2006年提出来的一种简单而高效的智能优化算法[10]。 同其他智能算法相比,该算法模拟自然界野草殖民策略[11],具有较强的鲁棒性,随机性以及自适应性, 因此该算法已经运用到各个领域,并取得良好的效果。
在IWO算法中,每一个杂草代表着该优化问题的一个可行解,所有杂草的集合称之为种群。在不断的进化过程中,杂草通过繁殖产生种子,种子在空间扩散,然后生长为杂草,周而复始,当种群中的杂草达到预设的最大值时,通过优胜劣汰策略, 淘汰适应度低的杂草而保留适应度高的杂草。其具体的计算步骤如下[12]。
(1) 初始化
确定变量可行解的边界范围,在此范围内随机产生N个初始可行解。
(2) 繁殖
根据杂草的适应度大小产生不同数量的种子, 适应度高的产生较多的种子,而适应度低的产生较少的种子,其公式为[13]
式中: f为当前杂草的适应度值;fmin和fmax分别对应为杂草的最小和最大适应度值;smin和smax分别对应为一个杂草所产生种子的最小和最大值。
(3) 空间扩散
当产生的种子按一定的步长生长为杂草。同时,新产生的杂草按照平均值为0,标准差为 的正态分布分布在父代杂草的周围。同时其标准差 随迭代次数的变化而变化,在迭代开始时,标准差较大,所产生的种子距离父代杂草较远,即产生的可行解探索范围较大,随着迭代次数的增加,标准差逐步变小,所产生的种子距离父代杂草较近,即产生的可行解探索范围较小。因此,在迭代初期, 进行全局搜索,当进化到迭代后期时,又进行局部搜索[14]。
式中:iter为迭代次数;itermax为最大迭代次数;iter为当前迭代次数的标准差;initial和final分别为初始标准差和最终标准差; n为非线性调和因子。
(4) 竞争选择
经过若干次进化之后,满足可行解范围的杂草数量达到最大值,然后将杂草按照其适应度大小进行排列选择适应度较高的杂草而淘汰适应度较低的杂草。
不断重复以上过程,直到达到最大迭代次数。
2.2差分进化算法
差分进化算法[15](Differential Evolution, DE)是一种基于群体差异的启发式随机搜索算法,它是由Storn等人于1995年提出的,最初是用于解决Chebyshev多项式。具有记忆个体最优解以及受控参数少等优点。其基本步骤如下。
(1) 初始化
首先确定DE算法的迭代次数,即t =0,1,L,tmax。初始化种群S ={X X =(x1,x2, L,xD)},使初始可行解尽可能随机分布在整个搜索空间。
(2) 变异
DE通过差分方法实现个体变异,随机选取种群中两个不同的个体,将其进行缩放,然后将待变异的个体与最优个体进行缩放,最后与待变异个体进行结合。
式中:Xi(t ) 为变异前个体;Yi(t ) 为第t代变异后的新个体; F为尺度因子;Xr1(t ) 和Xr2(t ) 分别为第t代两个不同的个体;Xbest(t) 为第t代最优个体。
(3) 交叉
对第t代的Xi(t ) 以及Yi(t ) 进行如下式的交叉操作。
式中:CR为交叉概率;jrand为[1, 2,, D] 的随机整数。
(4) 选择
比较Ui, j(t ) 与Xi(t ) ,如果f (Ui, j(t ) )优于f (Xi(t ) ), 则Xi(t 1 )Ui, j(t ) ,反之则Xi(t 1 )Xi(t ) 。
2.3基于DE改进IWO在无功优化中应用
在不断的迭代过程中,杂草入侵的殖民策略不断在自然环境内扩张,进而保证个体的多样性。同时,采用差分进化算法从当前种群中获得信息,通过变异来获取当前种群的优秀个体的同时,使杂草的进化方向不断地向着较好的个体靠拢[16]。这样既能保证种群的多样性,又能够一定程度地提高搜索速度以及搜索精度。
基于DEIWO含DG的电力系统无功优化中, 将控制变量Qci,Ti,UGi,PDGi作为杂草,再代入到潮流方程中进行潮流计算,得到有功功率网损, 将有功功率的网损最小值作为最优适应度值再根据DEIWO基本原理进行反复地迭代计算,最终输出最优值,其具体的计算步骤如图1。
3算例分析
(1) IEEE33节点系统参数设置
本文采用IEEE33节点配电系统[17]进行分析, 如图2,DG接入到18节点,采取单点就地补偿方式。参数的基准电压为10 k V,系统基准容量为10 MW。收敛精度104。变压器档位调节范围为0.9 ~ 1.1(标幺值,下同),分为9档,单位档位调节量为0.025。发电机机端电压的变化范围为1.0 ~ 1.06 。无功补偿容量的范围为 0.05 ~ 0.05 , DG的有功出力范围为0 ~ 0.15 。
(2) DEIWO算法参数设置
在入侵杂草部分算法中,迭代次数设置为50。 初始杂草数以及最大杂草数分别为10和15。种子个数的变化范围为1~15 ,初始标准差以及最终标准差分别为2和0.01。非线性因子为3。在差分进化部分算法中,变异系数为0.4。交叉系数为0.1。 其IWO算法参数设定值与DEIWO相同。
由表1可知,与优化前相比,优化后网损有较大幅度的降低。通过比较IWO与DEIWO优化后的网损可知,基于DEIWO算法进行优化后的网损更低,仅为优化前网损的48.7%,同时,由图3的进化特性曲线可知,基于DEIWO算法于第8次达到收敛,而基于IWO算法则在第28次才达到收敛, 前者的收敛速度明显快于后者的收敛速度。
由图4可知,基于DEIWO算法优化后,节点电压水平得到了有效的提高,同时,并没有节点电压越限现象发生,整体的电压水平基本接近于额定电压,进而提高了电力系统供电质量。
4结论
本文提出的改进入侵杂草算法是将传统的入侵杂草算法与差分进化算法相结合,通过引入变异、 交叉和选择,丰富优化的搜索行为,增加其效率, 最终获得更好的收敛结果。由于该算法与传统的智能优化相比,具有参数较少、易于理解、便于编程的优点,将在电力系统无功优化领域有着更为广阔的应用前景。
摘要:针对含分布式电源的配电网无功优化的特点,提出一种将入侵杂草算法与差分进化算法相结合的混合求解算法。该算法将一组初始可行解进行繁殖、空间扩散,当达到环境允许的最大值时,通过引入竞争机制,选取适应度较高的部分个体,再通过变异、交叉、选择,最终保留最佳个体。该算法既利用了入侵杂草算法结构简单、参数少和鲁棒性强的优点,又通过结合差分进化算法,克服其易陷入局部最优,精度不高的缺陷。以IEEE33节点系统进行仿真分析,并与传统的入侵杂草优化算法进行比较,结果表明该算法具有较强的全局搜索能力以及较高的收敛精度,能够有效地减少功率损耗。
整体分布优化算法 篇6
Hadoop框架[1,2,3]的目的是在一个基于MapReduce计算模型[4,5]的分布式计算环境中处理大规模数据,Hadoop框架有利于分布式计算应用的发展。Hadoop有三个重要组成部分,主要分别为HDFS,Map的实例(Mappers)和Reducer的实例(Reducers)。虽然Hadoop框架的整体架构简化处理过程,这三个组成部分隐藏着很多复杂的低层细节,即包括硬件又包括软件方面。该框架还提供了一个简单的作业调度器FIFO(先进先出),按照提交工作的先后顺序来执行。顺序调度器可以在一定程度上减轻工作的管理,并且在处理作业队列时是有效的。然而,一些重要的其它因素也需要作业调度器考虑。众所周知,目前许多集群是高度同构的环境下运行。例如,Hadoop在雅虎采用了一种同构的集群系统,包含了4000个处理器、3 TB内存和1.5 PB硬盘存储容量。大量的基准和排序的竞赛已经基于该环境进行测试。已发表的研究结果表明Hadoop框架的强大能力。在这些分布式的计算任务中,人们将注意力集中在这种极端表现,就是利用同构的环境下可理想地避免负载不平衡的问题。通常情况下是很难建立一个节点数量能达到数千的同构集群系统。实际情况是大多数Hadoop集群中存在大量的异构节点。Hadoop框架的体系结构已经开始设计成能灵活地适应异构资源。因此可以清楚地看到资源的异构性会影响集群的性能。
本文提出了面向异构MapReduce环境的任务调度优化策略,并考虑了包括Hadoop参数等多项因素相互作用的问题。该任务调度优化策略是基于混合粒子群算法的优化策略,通过引入分布估计算法(EDA)的建立概率模型和随机采样的思想,保证算法不会陷入局部最优。最终通过实验仿真结果表明,在模拟集群的效率方面的性能有了很大的改善。
1 Hadoop的任务调度优化问题
一般而言,Hadoop的MapReduce工作主要包括两个用户定义的功能:Map功能和Reduce功能。图1描述了Map/Reduce运行的基本原理。
Map/Reduce主要分为以下两个主要阶段:
(1)Map阶段:每个输入分片会让一个map任务来处理,一个map产生的数据,通过数据洗牌的过程分区却分配给了不同的reduce任务。
(2)Reduce阶段:Reduce会接收到不同map任务传来的数据,并且每个map传来的数据都是有序的,并对传递过来的数据进行汇总分析,输出最终结果。
Map/Reduce的任务调度问题是一个复杂的组合优化问题。为了描述方便,先对Map/Reduce任务调度进行数学建模。首先设定的一个特定时间段内会有n个新任务产生并等待调度。给定n个新任务和m个处理节点,任务i的所需计算能力是ti,处理节点j的单位时间内的计算资源能力为cj,最大处理任务并行数为Maxpj。如何把n个任务分配给m个处理节点,使得总任务的完成时间最短?其目标函数为:
式中,oi,j:任务i占用处理节点j计算资源,则该符号取值为1;否则取值为0。
约束条件为处理节点j处理的任务数不能超过节点的最大处理任务数,即:
2 本文算法描述
本文基于混合粒子群算法,将影响Hadoop性能的MapReduce方案作为粒子的位置,引入分布估计算法,阻止搜索停留在局部最优,保证粒子在全局空间中搜索最优解,从而提高Hadoop的任务调度算法性能。
粒子群优化(PSO)算法是一种基于种群的随机优化技术,由Eberhart博士1995年发明[6,7,8]。PSO通过维持种群的候选解,并让这些粒子经过运动搜索空间来满足目标函数的优化。粒子的运动是由目前发现的最好的位置来引导搜索空间,当发现更好的位置时就更新目前粒子的最好位置。
系统初始化为一组随机解,并通过迭代更新来搜索最优解。每一个粒子在问题空间中跟踪自己的位置坐标,每次迭代该粒子找到的最好坐标位置为个体最优值Pbest。另一个“最佳”的值,是粒子群优化算法在所有被跟踪的粒子中找到的目前为止最优的解,这个称为全局最优值Gbest。粒子群优化算法的主体思想就是朝着个体最优值Pbest和全局最优值Gbest加速每个粒子搜索。粒子群算法的速度和位置更新的核心公式如下:
式中,c1,c2是学习因子;r1,r2是(0,1)之间的随机数;pi(k)为第i个粒子的个体最优值;pg(k)为全局最优值;
分布估计算法(EDA)[9]根据进化过程中优质解信息的概率分布模型产生新解,具有概率分析的理论基础。算法的基本框架如下:
第一步:选择,从随机产生的解中选取若干优质解作为初始种群;
第二步:建模,采用概率模型评估种群,并依据该模型抽样产生新解;
第三步:替换,将产生的新解加入新种群替换旧解;
第四步:判断是否满足终止条件。若满足则结束,新种群的解即为所求解;否则转至第二步;
分布估算法的核心算子是概率模型的建立。在分布估计算法中,表示解空间分布的概率模型是一个概率向量p(x)=(p(x1),p(x2),…,p(xn)),其中p(xi)表示位置i上取值1的概率。概率模型的计算公式如下:
其中,pj(x)表示第j次种群解空间的概率向量,xi1,xi2,…,xiN表示N个优质解,xij表示位置i上的取值,a表示学习因子。
粒子群优化算法在以下几部分是类似于分布估计算法(EDA)和进化计算(EC)技术的:
随机产生的种群。
适应函数评估种群。
随机搜索技术。
大惯性权重的全局搜索和小惯性权重的局部探索。
PSO与EDA的不同之处:
缺乏EDA操作算子如建立慨率模型和随机采样。
PSO使用粒子内部的速度和记忆。
EDA种群个体彼此共享信息。所以整个种群移向最优区域。
PSO中信息只有最优的粒子与个体粒子单独彼此分享。因此,所有的粒子快速收敛到最优解。
PSO简单易实现,与EDA相比,需要调整的参数更少。
EDA实现了一种强大的爬山方式,保留多个解,消除不好的解,并提供合理的解。EDA操作算子的搜索是成功的关键。在EDA中的重组操作允许产生新的解,保持更好的性能,其母公司主导的创作特征。建立概率模型算子保留的候选解决方案的有益特性和消除不需要的成分,随机采样的随机性质有助于对候选解多样化。EDA消除了弱解及其后代,该算法向高质量的解快速收敛。EDA是很容易在较宽的解领域并行化处理。混合粒子群算法(HPSO-EDA)引入分布估计算法核心算子,克服了PSO容易陷入局部最优解,由于该核心算子是建立概率模型,所以使得混合粒子群算法也具有了概率分析的理论基础。PSO和EDA都是合适并行化计算的。本文所提的混合粒子群算法(HPSO-EDA)尝试将分布估计算法的核心算子嵌入PSO中来达到加快搜索最优解的目的,使得在最小完成时间和高效的资源率的情况下完成任务调度。并行计算通过MapReduce版本[10]的HPSO-EDA实现。
本文的HPSO-EDA是结合PSO和EDA。EDA的建立概率模型和随机采样等操作应用于粒子运动中。下面是整个HPSO-EDA算法具体步骤:
(1)初始化迭代计数器(k=0),种群规模(Psize),最大迭代次数Maxgen。
(2)随机产生粒子的初始种群(Psize)。
(3)计算粒子的适应度函数值,并找到个体最优值pi及初始化种群的全局最优值pg。
(4)更新迭代计数器k=k+1。
(5)根据式(3)和式(4)的更新速度和粒子的位置。
(6)根据式(5)建立种群的概率模型,并进行随机采样产生新的群体。
(7)使用式(1)计算粒子的适应度函数值,并按升序进行排序。
(8)更新局部最优值(pi)和全局最优值(pg)。
(9)继续步骤(4)到步骤(8)直至得到收敛的最优解。
(10)输出全局最优粒子的解集。
通过引入EDA的概率模型的核心算子并采取随机抽样的操作,使得HPSO-EDA算法成为一个可扩展性强、可靠性较好、执行效率较高的解决方案。
3 实验仿真及结果分析
在Hadoop框架中,使用MapReduce编程实现了HPSO-EDA算法。实验测试平台在5台机器组成的群上进行测试,每台机器配置如下:
(1)英特尔奔腾酷睿2双核2.6 GHz处理器
(2)(2×2 GB)4 GB的DDR2内存
(3)160 GB SATA硬盘
在机器上安装内核版本2.6.18-164的Cent OS 5.4系统,使用了0.20.203版本的Hadoop和1.6.0版本的Java。数据块副本的数量设置为2,默认的块大小64 MB。实验结果被归类在以下几方面:
(1)HPSO-EDA的性能分析
混合粒子群分布估计算法的性能(HPSO-EDA)同PSO和EDA相比,比较是基于最优资源分配和时间效率两方面的性能。假设有20个任务,图2说明相对于传统的PSO和EDA,HPSO-EDA具有更快的收敛速度,并能获得更好地适应度函数值。另外图2还说明PSO迭代到第10次时,由于算法简单,相比EDA能较快收敛到局部最优解。然而由于PSO容易陷入局部最优解,故到迭代次数达到40次时,EDA相比PSO能找到更好的全局最优解。此时由于HPSO-EDA在PSO收敛速度快的基础上引入概率模型,并采取随机抽样而比EDA和PSO能找到更好的全局最优解。
(2)HPSO-EDA的总任务完成时间
为验证三算法的整体寻优能力,实验设定任务数为100和算法迭代40次,结果得到实验数据图3所示通过观察图3和图4中各算法的统计曲线,在三算法进化迭代的初始阶段,PSO和EDA由于前期只重视总任务的完成时间,故前期完成总任务所耗费的时间要小于HPSO-EDA,但这样也同时导致丢失了一些潜在的优良解,从而导致后期算法容易陷入局部解,而随着进一步的进化,HPSO-EDA能更快的跳出局部最优解,不但总任务时间明显小于PSO和EDA,平均任务时间也明显小于PSO和EDA。HPSO-EDA不仅综合考虑局部和全局范围的解空间,同时加入随机取样的变异操作使得算法更易跳出局部最优解。另外算法建立概率模型有力地保证了算法平稳地向最优解空间靠近,指导了算法的进化方向,使得HPSO-EDA算法较前两种算法具有更好的寻优能力。
(3)HPSO-EDA的适应度函数值
为更加充分验证本文算法的寻优能力,实验验证了在不同任务下,各算法执行所获得最优解情况。表1充分说明与EDA PSO相比,在(15,25,30,35)等不同任务数下,HPSO-EDA都能获得更小的适应度函数值。
4 结语
粒子群优化算法采用每个粒子的记忆和整个种群的知识积累来搜索全局最优解。而本文的HPSO-EDA通过避开陷入局部最优值的情况下来发现更好的解。这是因为当PSO粒子停止搜索更好的解时,EDA随机采样将分散粒子的位置。该算法避免了搜索过程中陷入局部最优解的早熟现象,并在搜索过程中扩大了搜索空间。另外,本文利用MapReduce架构来实现HPSO-EDA方法的并行执行。实验结果表明,HPSO-EDA算法不仅具有更快的执行效率,且寻优能力优于PSO和EDA。HP-SO-EDA的并行实现显示出高时效性、可扩展性和可靠性,为算法在工程中的使用带来较好的前景。
摘要:在一个异构的网格环境下,Hadoop异构任务调度的目的是有效地利用资源和共享可用的资源之间的负载,这样的任务调度问题是NP-Hard问题。提出一种基于混合粒子群分布估计算法(HPSO-EDA)的任务分配策略。新的HPSO-EDA引入分布估计算法的建立概率模型和随机抽样操作来替代速度和位置的更新操作来引导最优解的进化,提高算法的收敛速度,防止算法陷入局部最优化解。通过实验仿真表明:HPSO-EDA比传统PSO和EDA能在更短的时间里产生更好的结果。
关键词:Hadoop,分布估计,粒子群,MapReduce
参考文献
[1]覃雄派,王会举,王珊,等.大数据分析-RDBMS与MapReduce的竞争与共生[J].软件学报,2012,23(1):32-45.
[2]Chuck Lam.Hadoop实战[M].北京:人民邮电出版社,2012.
[3]王珊,王会举,覃雄派,等.架构大数据:挑战、现状与展望[J].计算机学报,2011,34(10):1742-1752.
[4]Jeffrey Dean,Sanjay Ghemawat.MapReduce:simplified data processing on large clusters[J].Communications of the ACM,2008,51(1):107-113.
[5]Wang G Z,Salles M V,Sowell B,et al.Behavioral simulations in MapReduce[C]//PVLDB,2010:952-963.
[6]Kennedy J,Eberhart R C.Particle swarm 0ptimization[C]//Proceedings of IEEE International Conference on Neural Networks,1995:1942-1948.
[7]Clerc M,Kennedy J.The particle swarm explosion,stability,and convergence in a multidimensional complex space[J].IEEE Trans.on Evolutionary Computation,2002,6(1):58-73.
[8]Eberhart R C,Shi Y.Comparing inertia weights and constriction factors in particle swarm optimization[C]//Proc.2000 Congress Evolutionary.Computation.Piscataway,NJ:IEEE Press,2000:84-88.
[9]Shapiro J L.Drift and scaling in estimation of distribution algorithms[J].Evolutionary Computation,2005,13(1):99-123.
整体分布优化算法 篇7
分布式数据库系统是数据库技术与网络技术两者相互渗透和有机结合的结果[1]。分布式数据库系统在体系结构上与集中式数据库系统有很大的不同[2],具有数据分布性、逻辑整体性等特点。
在分布式数据库中,查询执行的开销除了要考虑I/O代价和CPU代价外还要考虑通信代价,即总代价=I/O代价+CPU代价+通信代价[1]。在远程通信网中,数据的传输速率较低,在这种情况下,通信代价要比I/O及CPU开销大很多,通常在查询优化时优先考虑通信代价;而在高速局域网中,传输速率要快得多,则此时通常将查询的响应时间作为优化的目标。
查询优化有两个出发点,一个是以通信费用最小为准则,另一个是以响应时间最短为准则[3]。针对不同的查询优化目标,出现了基于半连接和基于直接连接两种常用的查询优化算法。其中基于直接连接优化算法通常是在高速局域网环境中以追求响应时间为目标的优化算法,一般是利用站点依赖和数据复制相结合方法来缩短响应时间的,下面简单介绍一下基于直接连接优化常用的Hash划分和Partition算法。
2 Hash划分
在基于直接连接的查询优化中,Hash划分是一种常用的方法。Hash划分是利用Hash函数对分片关系上的连接属性作站点依赖计算,再据此分片,以获取站点依赖的连接算法。
如表1所示, 现有两个关系R1和R2, 假设对R1和R2进行分片操作, 对R1分片后生成片段F11和F12,分别放到站点S1和S2,同样R2的片段F21和F22也分别放到S1和S2, 则R1=F11∪F12、R2=F21∪F22。若关系R1和R2在属性x上满足条件F1i∞x F2j=ϕ(其中i≠j),即片段F1i和F2j在属性x上进行连接操作的结果为空集,则称R1和R2在属性x上站点依赖。
了解了站点依赖,下面就通过一个例子简单介绍一下Hash划分。假设现有关系Ri(i=1,2),对于Ri的每一个元组,在x属性列上运用下面的Hash函数,
即对于Ri每一个元组,当该元组x属性列的值为奇数,则该元组的Hash值(h(x))即为1,若为偶数,则该元组的Hash值(h(x))为0。然后将Hash值为1的元组送到站点S1,记为Rie;Hash值为0的元组送到站点S2,记为Rio,于是关系Ri就被分成片段Rie和Rio,分别位于站点S1和站点S2。
通过Hash划分后,关系R1与R2在属性x上满足站点依赖,则连接操作R1∞R2就可转换为 (R1e ∞R2e) ∪(R1o∞R2o),因此在分布式数据库查询优化算法中,出现了基于Hash划分的优化算法,Partition算法就是其中一种。
3 Partition算法
Partition算法通过对两个或多个关系在同一连接属性上进行片段划分[4],来提高连接操作的并行性,以此来加快整个查询的查询速度。
假设现有查询要执行以下一系列的连接操作:R1∞x R2,R2∞y R3,R3 ∞z R4。则R1和R2可以在属性x上进行划分,R2和R3可在属性y上进行划分,R3和R4可在属性z上进行划分,这样就形成了三种划分方案。
Partition算法[5]只能选择划分方案的其中一种,若选择了让R1和R2在属性x上进行划分,则其他两种划分方案则不会进行。假设现共有d个站点,这样可将关系Ri(i=1,2)在x属性划分成d个不相交的片段(Fi1,Fi2,…….Fid)(i=1,2),根据站点依赖原则,将片段Fij放到站点j(j=1…d)上,与此同时,也将R3、R4的副本放到站点j上。这样,每个站点执行的查询为F1j ∞ F2j ∞R3 ∞ R4(j=1….d),最后将各个站点的查询结果取并集即可得到查询的最终结果。
这种方法的目的就是利用分布式数据库的分布性特点,使得查询操作能够在多个站点上并行进行。但是对于海量信息及关系较多连接属性各不相同的查询而言,这种方法的效果仍然不理想,因此下面利用查询图划分方法与Partition算法相结合,对Partition算法进行改进。
4 Partition的改进算法
通过以上对Partition算法的介绍可知,在Partition算法中,在多种划分方案中只用到了其中的一种,仅对该方案中的关系进行了划分,而其他剩余的参加查询的关系被整个复制到其他站点上。针对此问题,本文引入了一种查询图划分方法,通过查询图的划分可以将整个查询图划分为多个子查询图,这样再对子查询图中的连接应用Partition算法,这样就避免产生大量剩余关系的情况。
首先介绍本文中所用到的查询图划分(用到了图论的相关知识):
(1)首先选择节点度(算法引进了节点度的概念,即节点的边的个数)最小的节点,如有多个,则随机选取一个。按照深度优先进行遍历,两个为一组,并以1、2、3……进行顺序进行组的编号。如图所示,由A点开始,进行深度优先遍历,A、B划为1组,C、D划为2组,E、F化为三组,至此,没有可以再划分的组了。
(2)经过以上的过程,大部分节点都是两两一组,对于其他未被划分到组的节点,我们将其并入与其相连的节点所在的组编号最小的组,这样可以保持各组中节点个数的近似平衡。如图,H与D和F都有相连,选择其相连的节点所在的组编号最小的组即为2组,于是将H划分到2组,同理G划分到3组。
(3)至此,整个划分就被划分成多个子查询图。
介绍完查询图划分方法后,下面就是本文的算法步骤:
(1)进行查询图划分,对节点进行分组。
(2)每一组都进行Partition算法操作。假设现有R1和R2在连接属性X上进行操作,而该组内的站点个数为d,则在属性X上划分为d个不同的片段,即Fi1,Fi2,… Fid(i=1,2)。将这d个片段分别放到d个站点上进行连接操作,得到R121,R122,…R12d,将结果合并即得到R1和R2的连接结果,这样该组可视为一个点,但站点数不变,仍为d。
(3)所有的子查询图内的连接操作都进行完后,继续执行步骤(1)和(2)直到产生最终结果为止。
与Partition算法相比,该方法对于大部分(甚至全部)的关系都进行了划分,因此在一定程度上减小了每个站点的连接费用,并充分利用了分布式数据库分布性的特征,缩短了响应时间。不过从算法也可看出,由于整个过程是递归进行的,所以在进行连接操作的关系较多时会显得繁琐,这些不足还需要进一步的研究加以改善。
5 算法实验结果分析
由于条件所限,本实验是模拟进行的,操作系统WindowsXP,使用数据库为Oracle。在实验中,每个站点只有一个关系,各关系的大小都近似相等。由于实验环境所限,只对以下三组查询进行了分析比较:
(1)R1 ∞x1 R2,R2 ∞x2 R3,R3 ∞x3 R4
(2)R1 ∞x1 R2,R2 ∞x2 R3,R3∞x3 R4,R4 ∞x4 R5
(3)R1 ∞x1 R2,R2 ∞x2 R3,R3 ∞x3 R4,R4 ∞x4 R5,R5 ∞x5 R6
表2为实验结果,响应时间均为多次结果平均值,单位为秒,本文算法和Partition算法的响应时间分别用Tthis和Tpartition来表示。
从表2中可以看出,随着连接关系的增加,本文算法比Partition算法的响应时间有了较明显的减少。
6 结束语
本文主要对分布式查询中基于直接连接的优化算法研究,分析了Partition算法的不足,并针对Partition算法引入了查询图划分的方法对其进行了改进。最后通过实验对本文方法与Partition算法的响应时间进行了比较,证明了本文方法与Partition算法相比有一定的改进,说明了本方法在高速局域网中有一定的可用性。
参考文献
[1]王珊.数据库系统概论[M].北京:高等教育出版社,2006.
[2]陈建荣,严隽永,叶天荣.分布式数据库设计导论[M].北京:清华大学出版社,1992.
[3]张宋传,陈瑞典.分布式数据库多元连接查询优化的研究[J].微计算机应用,2005,4(3):391-392
[4]王菲菲,郑刚.基于多连接属性划分的分布式数据库查询优化算法[J].现代计算机,2007,(11):20-22
整体分布优化算法 篇8
原来的Cauchy矩阵被认为是无差异的, 算法复杂度一样。该研究给出了一种构建Cauchy编码矩阵的算法。我们把编译结果和原来的CRS码[1]和其他一些阵列奇偶校验码做以比较。
假设o表示每一个编码矩阵中“1”的平均数目。那么在计算每一个冗余包所需要进行的异或运算次数为。举例来说, 对于图1的编码矩阵来说, “1”的总数目为47个。剩余编码矩阵一共有6行, o为7.83, 则需要进行的异或运算次数平均为6.83次。
考虑另外一种构造Cauchy矩阵的方法:集合X取域中的前m个元素, Y取后n个元素。在我们给出的例子中, 这个编码矩阵有54个“1”。这种随机产生矩阵比原来的编码矩阵的复杂度要高17%。
考虑三个参数n, m和w, 把域中个元素分到集合X和Y中的方法总数为。我们列举了所有可能组合的情况, 纵坐标表示的是编码算法复杂度, 如图1所示:
首先, 我们可以观察到当n的值越小影响就越大, 这是因为n和m的选择受制于不等式, 而n越小, 在域上可供m选择的值越多, 所以产生的差距也就越大;当n的值增大, 矩阵选择所造成的差异逐渐减小。然后当n值增大时, CRS算法性能逐渐下降, 这是因为当Cauchy矩阵的维度不断增大时, 编码矩阵从域中所包含的元素越多。对于域中的每一个元素, 它所包含的“1”的数目的变化范围在和之间。维度较小的矩阵可以尽可能多的包含“1”的数目为的元素, 维度较大的矩阵则必须包含“1”的数目为的元素, 所以它的计算复杂度较高。
2 测试结果
随后我们把通过上一章得到的编码矩阵和其他类型的编码算法进行比较:Cauchy RS (Original) , Cauchy RS (GC) , Cauchy RS (BC) 和Star-Code[2]。
所有CRS类型的码中, CRS (GC) 的表现最好, 尽管它的编码复杂度也会随着n的增大而降低, 和其他两个类型的CRS表现趋向一致。并且每次当为整数时, CRS (Original) 和CRS (BC) 的编码复杂度都会发生跳跃性变化, 而CRS (GC) 一直是平滑增长。
3 结语
该研究通过改善Cauchy矩阵的生成方式提高了编码效率。在用C语言实现CRS算法时只用了横向校验, 这样每次在进行解码时都需要占据过多的带宽去下载所需要的数据块或者冗余块, 如果我们考虑使用对角线校验, 那么就可以进行混合修复, 这样可以节约带宽。
参考文献
【整体分布优化算法】推荐阅读:
分布算法07-24
改进分布估计算法05-12
整体素质优化05-26
分布式遗传算法07-18
分布式定位算法06-24
分层分布式优化09-13
改进型分布式算法结构01-14
分布式数据库优化10-10
浅谈如何制造网站SEO整体优化计划01-18
把阅读和写作紧密结合 发挥整体的优化作用07-21