基于GA的矢量数据压缩优化算法_陈飞翔
- 格式:pdf
- 大小:97.60 KB
- 文档页数:3
2007,43(34)1引言矢量数据压缩是地理信息系统GIS、计算机自动制图、计算机图形学等学科中的一个常见问题。
矢量数据的压缩可以使移动设备(如PDA、PocketPC、Smartphone等)存储更多的空间数据,压缩后的矢量数据也加快了其在无线网络上的传输速度。
GIS中的矢量数据可分为点状图形要素、线状图形要说、面状图形要素,但从压缩的角度来看,矢量数据的压缩主要是线状图形要素的压缩,因为点状图形要素可看成是特殊的线状图形要素,面状图形要素的基础也是线状图形要素,需要由一条或多条线状图形要素围成。
因此,线状图形要素的压缩就成为矢量数据压缩中最重要的问题。
近20年来,许多学者对矢量数据压缩这一课题做了大量深入地研究,提出了许多算法,如垂距限值法、角度限值法、光栏法、Douglas-Peucker算法(Splitting算法)等。
目前,Douglas-Peucker算法是矢量数据压缩中一种较流行的算法,算法过程主要就是一个递归过程,它是O(n2)的时间复杂度,同时,许多学者对此算法进行改进,提出了一些新的算法,如Saalfeld和WuShin-ting等提出的改进方法能解决压缩后的曲线相交和自相交的问题,保持压缩前后曲线空间拓扑关系的一致性;J.HershbergerandJ.Snoeyink提高了算法的效率,使其时间复杂度由O(n2)减少为O(nlogn)等。
以上这些算法都是非优化算法,仅仅根据一定的限差条件,对曲线上的数据点集进行取舍,而没有考虑取舍后的曲线压缩结果是不是最优。
对于矢量数据压缩的优化算法,一般有两种方式:假设原始曲线有Nb个结点,(1)给定矢量数据压缩误差E,使得压缩后的曲线由Nb个初始结点中最少的结点组成,也就是使矢量数据压缩率η达到最高;(2)给定矢量数据压缩率η,也就是相当于给定了压缩后曲线的结点数Ne,在Nb个初始结点中找基于GA的矢量数据压缩优化算法陈飞翔1,于文洋2,李华3CHENFei-xiang1,YUWen-yang2,LIHua31.北京林业大学信息学院,北京1000832.中国科学院中国遥感卫星地面站,北京1000863.国土资源部土地整理中心,北京1000351.CollegeofInformation,BeijingForestryUniversity,Beijing100083,China2.ChinaRemoteSensingSatelliteGroundStation,ChineseAcademyofSciences,Beijing100086,China3.LandConsolidationandRehabilitationCenter,theMinistryofLandandResources,Beijing100035,ChinaE-mail:fxchen@126.comCHENFei-xiang,YUWen-yang,LIHua.AlgorithmforvectordatacompressionbasedonGA.ComputerEngineeringandApplications,2007,43(34):185-187.Abstract:Vectordatacompressionplaysanimportantroleintheresearchofterrainenvironmentsimulation,integratedmappingandGIS.Itisaveryimportanttaskfortheincreaseofstoragecapacityofmobileequipmentandtheimprovementoftransmissionefficiencyofvectordataonnetwork.Accordingtogeneticalgorithmtheory,Douglas-Peuckeralgorithmandvectordatacharacteris-tics,thispaperproposesamodelandmethodofvectordatacompressionbasedonGA,encodesforthenodeofcurve,andcom-pressesthenodetofewernodesbysmallererror.Experimentalresultsshowthatthismethodcanbegreatercompressionratios.Keywords:vectordatacompression;geneticalgorithm;Douglas-Peuckeralgorithm摘要:矢量数据压缩在地形环境仿真、制图综合、GIS等研究中具有重要作用,对增加移动设备的存储能力和提高矢量数据的网络传输效率来说是一项很重要的工作。
根据遗传算法理论、Douglas-Peucker算法和矢量数据的特点,提出了基于GA的矢量数据压缩的模型和方法。
通过对构成曲线的结点进行二进制编码,以压缩后结点数较少和误差较小为优化目标,并利用Douglas-Peucker算法控制选择、变异和交叉的有效性,所得最优解中值为1的基因对应压缩后的曲线结点。
实验结果表明,该方法能够得到较大的压缩率。
关键词:矢量数据压缩;遗传算法;Douglas-Peucker算法文章编号:1002-8331(2007)34-0185-03文献标识码:A中图分类号:TP301基金项目:国家科技支撑计划(No.2006BAD23B02)。
作者简介:陈飞翔(1977-),男,博士,讲师,主要研究方向为MobileGIS;于文洋(1974-),男,博士,助理研究员,主要研究方向为高性能地学计算;李华(1978-),女,工程师,主要研究方向为网络空间信息系统。
ComputerEngineeringandApplications计算机工程与应用1852007,43(34)ComputerEngineeringandApplications计算机工程与应用Ne个结点,使得由这Ne个结点组成的曲线的压缩误差E最小。
本文研究其中的第一种方式。
2问题的描述2.1矢量数据压缩的定义矢量数据压缩是从组成曲线的结点集合A中抽取一个子集A′,这个子集A′在一定的精度范围内尽可能的反映原数据集合A,而这个子集A′的数量应尽可能的精简。
也就是说,对于给定曲线A:A={a1,a2,…,an},(n∈Z,n>1),压缩后的曲线A′:A′={a′1,a′2,…,a′m},(m∈Z,1<m≤n),其中#a′t∈A,(1≤t≤m)。
2.2优化问题描述设一条具有Nb个结点的原始曲线F:F={f1,f2,…,fNb}={(x1,y1),…,(xNb,yNb)},给定了矢量数据压缩误差E,求解问题就是求压缩曲线F′,并使曲线的压缩率η最大,即曲线F′组成的结点数最少,也就是Ne取最小值。
设压缩后的曲线F′可描述为:F′={f′1,f′2,…,f′Ne},其中#f′s∈F,1≤s≤Ne。
显然,F′是F的子集,曲线F′中的任何结点都属于曲线F,而且对于曲线压缩时,曲线的起点和终点是要保留的,即:f′1=f1f′Ne=fNb$所以,矢量数据的压缩过程可以理解为:压缩后曲线F′的子线段(f′s,f′s+1),(1≤s<Ne)由压缩前曲线F的部分曲线{fi,…,fj}(1≤i≤Nb,1≤j≤Nb)压缩而成,其中:f′s=fif′s+1=fj$设原始曲线F上结点fi和结点fj的连线的直线Q为:y=ax+b,原始曲线F上结点fi和结点fj之间的结点fk(xk,yk)到直线Q的距离d:d=d(fk,Q)=(yk-axk-b)2/(1+a2)%,根据问题的描述可知:d≤E。
3问题的求解遗传算法(GeneticAlgorithm,GA)是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是由美国Michigan大学的JohnHolland教授于1975年首先提出的,是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。
由于遗传算法采用了随机优化技术,且对所要求解的问题无连续性、无可微性等要求,有较大的概率求得全局最优解,因此,遗传算法为矢量数据压缩的全局优化问题的解决提供了一条新的途径。
根据GA的原理,用GA解决矢量数据压缩优化问题必须有以下步骤:步骤1编码设计。
确定编码方法,将问题参数编码形成染色体,也就是一个基因串。
步骤2初始化。
生成初始群体。
步骤3定义适应度函数。
提供适应度评估检测的依据,需要计算每个染色体的适应度,选择适应度最大的个体。
步骤4遗传操作。
共包含3种操作:选择、交叉、变异。
选择操作就是选择适应度大的染色体进入群体中;交叉操作就是从群体中选择两个染色体,按一定概率交换它们的基因信息以产生新的染色体;变异操作就是按一定概率改变染色体的一个或几个基因信息,保证算法具有全局搜索能力。
通过这3种操作产生新的一代群体。
步骤5控制参数。
包括染色体数目、交叉概率、变异概率。
如果是最优解,则结束,否则转入步骤4继续。
3.1染色体编码步骤1根据矢量数据压缩的定义,压缩过程就是从原始曲线的结点中保留一部分结点,删除一部分结点,基于这一考虑,染色体可采用二进制编码。
染色体的长度L为原始曲线F的结点总数,每一位基因表示对应的一个结点,基因的取值为1时表示压缩后该结点被保留,取值为0时表示压缩后该结点被删除,压缩后的曲线F′就是就是基因值为1对应的结点的连线。
根据对优化问题的描述可知,压缩过程中曲线的首尾结点是必须保留的,所以染色体的第一个基因值和最后一个基因值都必须是1。
假设原始曲线F为{f1,f1,…,f10},染色体的编码长度就应该是10(L=10)。
如果在染色体空间进行遗传优化后的取值为1100010101,则压缩的曲线F′由5个结点组成:F′={f′1,f′2,f′3,f′4,f′5}={f1,f2,f6,f8,f10}。
染色体用T表示,染色体对应的曲线则为:F=G(T)。
群体是染色体的集合:P={Ti|i=1,2,…,M},其中M表示群体的规模,即染色体的数目。
3.2适应度函数根据对优化问题的描述,搜索的最终目标是压缩率最高,即压缩后曲线F′的结点数Ne最少,转换到遗传空间进行分析,则是染色体中基因值为1的最少。
染色体T中基因值为1的总和用S(T)表示。
所以最优的染色体应该是S(T)最小,根据遗传算法最优的染色体应该具有最大的适应度函数值,因此适应度函数可以定义为:R(T)=1/S(T)。
3.3局部搜索策略本算法中引入了文献[6]中提出的局部搜索策略以保证染色体满足压缩误差要求。
在遗传过程中,设某一代群体中的一个染色体个体为T,将此染色体译码到搜索空间,即:F′=G(T)={f′1,f′2,…,f′Ne}={fg1,fg2,…,fgn}依次从F′中取相邻的两结点fgi,fg(i+1)这两结点连接形成的直线Q为:y=ax+b,结点fgi和结点fg(i+1)之间的结点fk(xk,yk)到直线Q的距离dk:dk=d(fk,Q)=(yk-axk-b)2/(1+a2)%,其中gi≤k≤g(i+1),找出dk的最大值dmax,结合Douglas-Peucker算法的基本思想,调整染色体第k个基因的取值:B(T,k)=0;dmax≤E1;dmax>$E这个调整过程其实是Douglas-Peucker算法逆过程,保证了所有舍去的结点精度满足要求。