贪婪算法的基本原理(6篇)
来源:
贪婪算法的基本原理篇1
关键词:Java;数据结构;算法;程序设计;测试
中图分类号:TP312文献标识码:A文章编号:1007-9599(2012)02-0000-02
JavaSoftwareDevelopment
ChenBin
(HangzhouNormalUniversity,QianjiangCollege,Hangzhou310000,China)
Abstract:ThispaperbrieflydescribesthetypeofabstractdataconversionalgorithmsinJavasoftwaredevelopment,programmingmethodology,softwaredevelopmentlifecycle,softwaredevelopmentphaseofthetest,andJavasecurity.
Keywords:Java;Datastructures;Algorithm;Programming;Test
一、Java数据结构和算法类型
(一)Java数据结构
线性表,链表,哈希表是Java常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。线性表是最基本、最简单、也是最常用的一种数据结构,它的数据元素是一对一的,逻辑结构较简单,便于实现和操作。链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,相比于线性表顺序结构,链表比较方便插入和删除操作,熟悉了链表结构对Java的描述也就轻而易举了。哈希表也叫散列表,是根据关键码值(Keyvalue)而直接进行访问的数据结构。
(二)算法类型
为实现抽象数据类型的有效转换,需要利用合适的设计策略对它们进行分析,当前最常见的算法有贪婪算法、分治算法、回溯算法。
1.贪婪算法
贪婪算法的原理是所有过程都选择最容易的,它首先考虑的是当前每个步骤的最有利性,没有进行过多的考虑对于将来的影响,贪婪算法虽然比较简易,但往往不能够达到目的。如:从一个城市到另外一个城市,在每个分岔口都选择最容易走的路,如果两个城市间的路程都是由所有最容易走的路组成,那么贪婪算法是一个正确的选择,但如果两个城市之间不能够通过这些最容易走的路到达时,贪婪算法就没有起到原先的目的。
2.分治算法
分治算法的原理是将整个大问题分类为若干个小问题,然后对这些小问题进行单个的解决,使所有小问题的处理结果合成对整个大问题的解决方案,使用这种算法的前提规则是各个小问题的类型需要与大问题相一致。
3.回溯算法
回溯算法实质上就是一种试错法,在数据转换过程中如果存在多种可供选择方法时,随机挑选一种方法进行解决问题,当该种选择无法解决问题时再选择另外一种,以此类推。该种方法不适用于选择性比较多的问题,过于繁杂。
虽然当前实现抽象数据转换的算法类型有很多种,但不是每一种方法都适用,判断某种方法是否适用的主要依据是使用时的简单性,清晰性,时间和空间上的效率性等。
二、程序设计方法
(一)过程式程序设计
过程式程序设计方法就是将整个软件系统分解成多个子层次结构,这些子层次结构由多个子程序组成。它的规则是各个下层子系统为上层子系统提供服务,同时也要为同级的其他子系统提供服务,以此类推,进行逐个解决整个大问题的小方向问题。过程式程序结构的缺点是每个过程的相互依赖性过大,在有一部分出现问题时会涉及到其他的部分,不容易检测出错误,在实际操作中难以维护,容易产生意外的难题。
(二)函数式程序设计
函数式程序设计方法和过程式设计方法的相似之处是同样是将整个软件系统分解为多个子程序,但它的运作过程与过程式设计方法不同,它的各个子程序间是分层工作的,子程序之间不需要相互作用。由此,当面对大型的程序设计时,由于各子程序之间相互的联系和依赖性不强,有利于日常维护和错误检测。
(三)面对对象程序设计
面对对象程序设计方法的原理是将整个软件系统分解成一系列相互通信的对象,对这些对象都包含数据及数据操作方法,而且各个对象之间能够很好的隐藏数据,做到保密性,进而避免产生不必要的失误。而且各个对象的相互作用及影响都不大,在设计和维护中都比较容易进行,当出现内部失误时可以及时的查到问题所在。
面向对象程序在运行时,是各个对象之间相互发送信息,然后各个对象通过自身的执行方法进行响应,在操作运行过程中,各个对象不仅需要包含数据还需要数据操作的方法,发送消息的对象称作客户端,接受消息的对象称作服务器。在发送消息的过程中,客户端对象不需要了解服务器的具体内部细节,只需要对其发送特定的消息就行。
在计算机系统的世界里,是不允许程序中存在任何差错的,计算机能够精确的执行程序中各个任务,细微的错误都有可能造成巨大的灾难,所以程序设计方法的运用是至关重要的。在Java语言和其他语言对字符的描述不同,Java基本的char类型和的是十六位的无符号整数,为使Java能够支持特定语言的字符串显示,在Java的程序设计中需采用不同的程序设计方法相互辅助,当前使用最普遍的程序设计方法就是过程式程序设计,函数式程序设计和面对对象程序设计。
三、软件开发生命周期
软件开发过程一般包括用户需求、分析、设计、实现、集成、维护。
(一)用户需求。软件开发的前提是程序员需要确定用户的需求是什么,即需要明白用户对软件开发的期望是什么。
(二)分析。在分析阶段,程序员需要将各个系统的操作进行精确的描述,让用户能够清晰的了解到整个系统的过程与结果,必要时需要开发出系统原型,易于用户理解,让用户去确认是否与其期望相一致。
(三)设计。在设计阶段,需要确定每个类的变量和方法,在执行Java程序时,计算机必须保存所有用到的类的执行代码和制定的对象。当对象出现时,java会自动跟踪并对对象进行判断,判断其是否被引用。
(四)实现。根据分析和设计的结果进行编写程序,进而完成系统的实现。
(五)集成。把分散的各个部分集合到整个软件中。
(六)维护。在程序的使用年限里,需要进行定期的变更,进而实现程序更好地应用。
Java开发的生命周期与传统的生命周期有些不同,它不是在应用程序开发的时候创建对象,而是在程序的运行过程中根据需求进行建立的,在Java语言的开发中,刚开始的时候无法确定对象及生命周期时间等问题,它存在自身的动态机制,但它最大的缺陷就是会影响到应用程序的执行效率,这需要采取相应的措施进行优化。
四、测试
测试在软件开发的各个阶段都是必需的,而并不单单存在于编码阶段。对程序进行测试时,判断的依据是程序的友好性,健壮性及可靠性等因素。
(一)测试数据的设计:
1.随机测试
随机测试是对程序进行各个测试,直到程序崩溃,确定可用程序,这种方法效率不高。
2.黑箱测试
黑箱测试不是把全部的程序进行测试,而是把整体的程序进行分类,然后有组织的选择输入的数据,这种方法在实际的操作中比较简易,但是在数据比较大的情况下很容易造成忽视一些数据。
3.白箱测试
白箱测试是指在测试中尽量对程序中的所有数据都进行测试,这个测试方法因为需要对程序中的所有代码进行查看,所以这个测试方法运行比较困难,指适用于对小数据程序的测试,当前最好的测试方法是将白箱测试和黑箱测试进行结合。
(二)编码阶段的测试
在编码阶段需要对三个时刻进行数据测试:
1.单元测试
根据目标类型编写一个实例化对象,然后对该对象发送消息,对其进行彻底的测试。
2.集成测试
当把所有的类都单独测试完毕后,然后确认他们是否能够在一起正常工作,在分别单次向测试环境中添加一个类,发现出错的根本来源,使测试达到最完善的程度。
3.验收测试
验收测试也是系统完成后的最后一关测试,需要通过该测试确认系统的功能是否能够在实际环境中运行。
(三)分析和设计阶段的测试
在分析阶段的测试是对分析工作的复查,将所有现实存在的因素都考虑在内,测试是否满足用户的要求。设计阶段的测试是不断的验证是否按照了分析阶段的结论进行工作,是否是根据客户的要求。
(四)代码测试
在测试代码时可采用预排法,虽然比较浪费时间,但是能够有效的发现缺陷获得高质量的软件。
五、Java的安全性
由于Java是面向对象的程序设计语言,信息流的安全性控制需要得到重视,Java虽然利用封装和隐藏机制,在一定程度上保证了信息的安全性,但是仍然不能保证信息流的保密性,可通过以下方法对Java的安全性进行改进,首先对Java中的主要语言成分进行改造,对package语句、类声明语句、变量成员声明及方法声明语句等进行修改。Java平台提供的原始安全模式是沙箱模型,对用户的访问权限进行限制,它由字节码检测器、类装载器和安全管理器三部分组成,它的原理是只信息本地代码,可以完全访问沙箱内的重要信息,对于下载的远程代码,只能访问沙箱内的有限资源。Java平台通过使用认证器查看类文件句法的正确性,防止病毒的侵犯。但由于Java是可以从网络上下载运行的,这造成了Java面对很多不安全的因素,如一些恶意程序对Java用户进行攻击,Java虚拟机提供的安全管理器和Java类文件认证器担任了防卫本地用户被攻击的任务。
小结:
Java是当前计算机软件开发中不可缺少的一种程序设计语言,很多软件开发工作者对Java进行了多方面的研究与探讨,本文只是通过一些小的方面对Java进行了浅显的概述。
参考文献:
[1]王宏,曹家庆,黄斌,陈琪.基于Java的数据结构算法演示系统[J].南昌航空工业学院学报(自然科学版),2006,2
[2]曹爱增,张慧芬,段春笋,张忠杰.JAVA程序设计方法研究[J].山东轻工业学院学报,2004,1
[3]张雪萍,鲍丹,王家耀.Java多线程测试策略及测试方法探讨[J].计算机应用研究,2006,11
贪婪算法的基本原理篇2
1地理位置路由算法
基于地理位置信息路由算法的核心思想是通过节点的地理位置信息来实现路由。在地理位置信息路由中,节点之间相互通信,通过有效的定位算法获取自身的地理位置信息。同时,每个节点在通信范围内,获取所有邻居节点的地理位置信息。数据包转发过程中,在当前节点的邻居节点内,利用每个邻居节点和目标节点的地理位置信息来选择下一跳。由于只需邻居节点的信息就可以实现数据包的传输,该路由机制具有很好的可扩展性和很强的适应网络的动态变化性。在数据传输过程中,只有部分节点参与路由的选择和数据的接收、发送,能有效减少网络能源消耗,对延长网络的生命周期有很大促进作用。同时,通过利用传感器节点的地理位置信息对算法进行优化,可实现其他无线传感器网络路由算法无法实现的功能。近年来,定位模式的研究取得了重大发展,无线传感网络中的未知节点可以通过低成本的方式获取到精确的地理位置信息。这表明,在无线传感器网络中,基于地理位置信息的路由很可能在所有路由方式中占据主体地位。
2地理位置路由算法的转发机制
无线传感器网络的地理位置路由算法中,每个节点和邻居节点进行hello包的通信,使每个节点都可以获取到所有邻居节点的地理位置信息,为选择下一跳提供信息。当前节点根据邻居节点的地理位置信息如何选择下一跳路由,是无线传感器网络基于地理位置路由算法的主要研究方向。常见的转发策略有MFR(ForwardwithinRadius)、GRS(GreedyRoutingScheme)、RPF(RandomProgress)、NFP(NearForwardProgress)以及CompassRouting等。其中,GRS即贪婪路由算法,是指在当前节点的邻居节点内,选择距离目标节点欧氏距离最近的节点作为下一跳。贪婪转发由于其原理简单、计算复杂度低,并且产生的路由路径接近理想的最优路径,成为在各种路由转发策略中最有效、最常用的算法之一。
伪三维的地理位置无线传感器网络路由算法
1问题的提出
在三维无线传感网络中,S为源节点,D为目的节点,在S的所有邻居节点内,节点C是距离节点D欧氏距离最近的节点。按照三维贪婪路由算法的转发策略,S将选择C作为数据发送的下一跳。这种基于欧氏距离的选路策略在三维空间内节点均匀分布的情况下,能够保证最终数据传输路径围绕源到目的节点连线上下浮动,从而保证得到源到目的地的最短路径。而实际应用中,传感器节点通常分布在高低不平的曲面上,我们称之为伪三维分布。取节点C到节点D的纵向剖面,如图1所示,虚线圈表示节点信号传输范围,节点C到节点D的欧氏距离CD由CA、AB和BD三部分组成,其中CA、BD为悬空,而AB穿越了地表。由于节点分布于地形表面,实际的传输路径应该如图1中虚线所示,只能沿起伏曲面进行传播而无法沿着连线CD附近波动,因此伪三维环境下,基于欧氏距离的选路参考标准并不适用。以上分析表明,虽然节点C到目标节点D的欧氏距离最短,但沿起伏地势表面的路径长度可能大于其他邻居节点到目标节点的沿起伏地势表面路径长度。为适应实际应用的需求,需提出在起伏地形环境下的新的距离计算方法,以获得更为优化的端到端最短路径长度
2起伏地势上的最短路径算法
2.1电子地图
电子地图是通过卫星遥感技术,对某一地区的地形信息以数字的形式存储在介质上,其精度能够达到厘米级。它包含的信息非常多,如道路、河流、建筑物标记、等高线等。在电子地图上,位置信息通过一串x、y、z坐标表示。假设点p是电子地图上的一个点,在x、y坐标已知的情况下,可以通过电子地图得到点p的z坐标。
2.2算法思想
针对3.1中描述的三维贪婪路由算法在起伏地势上利用欧氏距离作为节点下一跳选择的不合理现象,本文提出伪三维的地理位置无线传感器网络路由算法,该算法采用起伏地势上的近似最短路径来替换欧氏距离。算法中利用空间取点的方式,在电子地图表面选取离散点,这些离散点能整体反映电子地图表面的起伏趋势。计算相邻离散点之间的空间欧氏距离,将相邻关系映射到二维平面上,运用图论中最短路径计算方法,计算出电子地图表面的离散点之间沿起伏地势的近似最短路径。因为这条路径是在电子地图上选取的离散点中产生,所以能很好的逼近沿电子地图表面的最短路径。当传感器节点撒在电子地图描绘的区域时,节点根据自身的地理位置坐标找到与自身最近的那个离散点,根据离散点之间的最短距离来逼近在实际起伏地势上的最短路径,利用获取的最短路径进行下一跳的选择。
2.3算法步骤
起伏地势上最短路径的计算步骤如下:①建立网格,从电子地图上获取离散点。截取需要建立传感器网络区域的电子地图,根据获取的电子地图,在电子地图的垂直投影面上按照X方向和Y方向建立正方形网格。将这些网格交点沿垂直方向获取与电子地图的交点,每个交点的X坐标和Y坐标在建立网格时按照电子地图的长和宽等间隔获取。而Z坐标则由网格交点的垂线和电子地图相交时确定。如图2所示,这些与电子地图相交所得的离散点可以反映出电子地图的基本形状。
②确定电子地图上交点之间的相邻关系。电子地图上的交点投影到XY面是一些按正方形网格分布的离散点,如图3所示。在投影的平面图上,每个点只与周围的8个点为相邻点,而且规定每个点只计算与其相邻点之间的距离,例如投影点a只与投影点b、c、d、e、f、g、h、k存在相邻关系,那么在计算电子地图上的空间点''''a与其相邻点之间的距离时,只计算空间点a''''与空间点b''''、c''''、d''''、e''''、f''''、g''''、h''''、k''''之间的距离(空间欧氏距离)。
③将三维空间中的点映射到二维平面并根据各点的邻接关系建立邻接矩阵。在投影面上,每个相邻投影点之间记录对应空间相邻点之间的欧氏距离,把空间的各相邻点之间的距离问题转化为二维图上的点与点之间的距离以及邻接问题。建立邻接矩阵——矩阵的行数和列数都为空间中点的个数或者投影点个数,i和j为点的序号,矩阵元素ija表示投影点i到投影点j的距离,如果i与j相邻,则ija表示邻接距离;若不邻接,则ija为-1。以节点a为例,除了与之相邻的点b、c、d、e、f、g、h、k的邻接距离为L1、L2、L3、L4、L5、L6、L7、L8外,与其他点之间的邻接距离都为-1,如图3所示。
④利用图论方法寻找最短路径。对于已建立的邻接矩阵,运用图论中的Dijkstra最短路径算法来计算投影面上任意两点之间的最短路径,计算结果就是在电子地图上选取的对应两点之间在起伏地势上的近似最短路径。因此,通过转化到平面图中计算两点之间的最短路径,从本质上对空间中相应的两个点之间沿电子地图表面的最短路径进行了逼近。
⑤将实际传感器节点的地理位置映射到对应离散点并获取最短路径。实际的传感器节点已知自身的地理位置,可以依靠节点的X和Y坐标来定位到最相近的离散点上。知道了目标传感器节点对应的离散点和当前传感器节点对应的离散点,最短路径就可以用离散点之间的最短路径来逼近。
3传感器节点沿起伏地势下一跳的选择策略
以下将对三维贪婪路由算法的空间距离选择和本文提出的伪三维的地理位置无线传感器网络路由算法的沿起伏地势最短路径选择分别进行说明。
3.1空间距离选择下一跳
利用空间欧氏距离来选择下一跳的流程:源节点S向目标节点D转发数据时,首先获取当前节点的所有邻居节点的地理位置信息,然后判断目标节点是否在它的邻居节点内。如果目标节点在邻居节点内,直接将数据发送给目标节点;否则,根据邻居节点的地理位置信息,从邻居节点中选取离目标节点空间欧氏距离最近的那个节点作为下一跳,直到将数据分组传到目的节点。
3.2起伏地势上的最短路径选择下一跳
因为电子地图上的采样点是均匀、有规律分布的,所以当传感器节点在电子地图上均匀分布时,可以很好的定位到采样点上。但当传感器节点在起伏地势随机分部时,必须采取一定的定位策略使节点定位到最近的采样点上,以此来逼近当前节点到目标节点在起伏地势上的最短路径。本文在后面的仿真实验中采用四点最近定位的方法将节点定位到采样点上。具体方法描述如下:根据传感器节点自身的地理位置坐标,寻找到包含这个节点的由四个采样点构成的网格。分别对这四个采样点求到目标节点采样点在起伏地势上的最短路径,取路径最短的那个采样点作为这个传感器节点对应的采样点。当有多个邻居节点定位到同一采样点时,采用空间欧氏距离的方式作为下一跳的选择。
无线传感器网络路由过程中,利用沿起伏地势最短路径选择下一跳的流程如图4所示。源节点S向目标节点D转发数据时,首先获取所有邻居节点的地理位置信息,然后判断目标节点是否在它的邻居节点内。如果目标节点在邻居节点内,直接将数据发送给目标节点;否则,对当前节点和其邻居节点以及目标节点采用四点最近定位映射到采样点。寻找邻居节点采样点中距离目标节点采样点路径最短的那个采样点。当有多个邻居节点对应到该采样点时,用空间欧氏距离的方式选择下一跳,否则选取该采样点对应的邻居节点作为下一跳。重复以上步骤,直到将数据传到目标节点。
仿真实验
1仿真环境的构建
本文选用MATLAB软件进行仿真环境的构建。在1000m×1000m的范围内,以100m为间隔构建高度不同的空间离散点,用这些点来模拟电子地图的起伏趋势;然后用MATLAB将这些离散空间点拟合成面,构建出电子地图。
2实验仿真数据的对比与分析
路由过程中数据包经过的节点数即路由跳数是衡量无线传感器网络路由协议的重要指标。在路由过程中所经历的节点数越少,越能减少网络的能量消耗,延长网络的生存时间。所以,本文以路由跳数为指标,对比三维贪婪路由算法,来衡量伪三维的地理位置无线传感器网络路由算法的优劣性。本仿真实验中,对于无线传感器网络节点的布采用理想均匀分布和随机分布两种分布方式。以下分别对在这两种分布下,对三维贪婪路由算法和伪三维的基于地理位置的无线传感器网络路由算法进行分析比较。
2.1理想均匀分布传感器节点
理想均匀分布的传感器节点采用和电子地图采样点相同的x坐标和y坐标,在电子地图上获取z坐标。采用该分布方式,可以在路由过程中避免节点定位到采样点时带来的误差,从而可以直接分析和比较两种路由算法的优劣性。设定采样间隔(网格大小)为10m,从节点1到节点10200,分别对两种路由算法进行仿真。图5是两种路由算法下路由跳数的对比图。其中,红色曲线表示采用空间欧氏距离选择策略的三维贪婪路由算法的路由跳数,蓝色曲线表示采用起伏地势最短路径选择策略的伪三维的地理位置无线传感器网络路由算法的路由跳数。从图中可以看出,路由跳数随着节点传输半径的增大而减少,在传输半径相同的情况下,伪三维的地理位置无线传感器网络路由算法的路由跳数明显少于三维贪婪路由算法的路由跳数。通过仿真,在节点传输半径为30m时,将节点1到节点10200在电子地图上的路由轨迹显示出来,如图6所示。红色曲线为三维贪婪路由算法下的路径轨迹。可以看到它没有考虑地势状况。蓝色曲线为伪三维的地理位置无线传感器网络路由算法下的路径轨迹。可以明显看到,它有意识的避开了具有较大起伏的地势,选择了一条较为理想的路径。
2.2随机分布传感器节点
沿电子地图范围内的x方向和y方向,在每隔10m的正方形内随机的分布一个节点,从电子地图上获取节点的z坐标。这种分布的传感器节点既可以体现出在整个电子地图上的均匀分布,又能体现出在一定区域内的随机分布。以下是在随机分布的传感器节点位置不变的情况下,对无线传感器网络中两种路由算法的仿真。电子地图上的采样间隔越小,计算出来的最短路径越和实际相接近。因此,采样间隔是影响伪三维的地理位置无线传感器网络路由算法性能的重要因素。为更加全面的验证该算法性能的优越性,分别选取不同的采样间隔计算起伏地势最短路径,将使用该最短路径进行路由的伪三维的地理位置无线传感器网络路由算法的仿真结果与三维贪婪路由算法的仿真结果进行对比。
分别取采样间隔为10m、15m、20m,计算各采样间隔下节点3到节点8997用伪三维的地理位置无线传感器网络路由算法和三维贪婪路由算法在不同传输半径下的路由跳数。图7是在不同的采样间隔下两种路由算法在不同传输半径下路由跳数的仿真结果对比。三维贪婪路由算法使用空间欧氏距离选择下一跳,与采样间隔无关,因此,在不同采样间隔下,三维贪婪路由算法的路由跳数相同。
图7中,三维贪婪路由算法下的路由跳数用红色曲线表示。以下从两方面对该图进行解释:
⑴当节点传输半径变化时,伪三维的地理位置无线传感器网络路由算法比三维贪婪路由算法的总体效果好得多。但当节点传输半径为34m时,图中采样间隔为20m的伪三维的地理位置无线传感器网络路由算法的路由跳数略大于三维贪婪路由算法。假如计算得离目标节点近似路径最短的节点为A,近似路径次短的节点为B,而节点B的实际最短路径要比节点A的实际最短路径短,只是采样间隔20m较大,在四点最近定位时造成的误差很大,节点A定位到的那个采样点要比节点B定位的采样点到目标节点的采样点的近似最短路径短。根据算法思想,将数据包发送给节点A而不是节点B,造成路径选择偏差而导致路由跳数的增加。
⑵采样间隔变化,传输半径固定。总体效果是采样间隔为10m时好于采样间隔为15m和20m时。因为采样间隔越小,计算出的近似最短路径和实际最短路径越接近。但有部分间隔10m的跳数略大于间隔为15m时的跳数。原因是随着传输半径的增大,邻居节点增多,可选择的下一跳增多。对于同一个节点,由于采样为15m的四点最近定位范围比采样为10m的范围大,所以节点在定位到采样点时,可能会获取到比10m更为优越的近似最短路径,使采样间隔为10m的路由跳数略大于采样间隔为15m的路由跳数。通过以上仿真实验可得出结论,对建立在起伏地势上的无线传感器网络,在基于地理位置信息算法的基础上,用起伏地势上的最短路径代替空间距离,能有效减少路由跳数,从而减少能量消耗,延长网络生存时间。即本文体提出的伪三维的地理位置无线传感器网络路由算法比三维贪婪路由算法有较大优越性。
结束语
贪婪算法的基本原理篇3
目前国内物流公司的出厂装箱调度仍旧采取效率极低的人工调度,尽管国内外二维、三维装箱调度问题已经有大量研究,但由于国内绝大部分物流公司不够规范,而采用二维、三维装箱调度对人员素质要求较高、统计难度较大,同时对公司的信息系统有较高的要求,先进的理论在实践中没有得到很好的应用,因此本文从整车订单和轿运车配载的过程,不考虑整车目的地和轿运车的路径选择,抽象出带装载组合约束的一维装车问题,即有n个属于l种类型的相同(单位)尺寸的物品。有w辆车,每辆车对这l种类型的物品有几种装载组合,不同车辆的装载组合不同,每辆车选择一种装载组合并严格按照物品组合进行装载。优化目标是在满载的情况下装载最多的物品,同时给出每个物品的具体配载方案。如:有10个属于3种类型的物品,每个物品的类型见表1;有2辆车,车辆1有2种装载组合,车辆2有3种装载组合,装载组合见表2。显然当选择车辆1的装载组合2,车辆2的装载组合3时,两辆车都能满载且能全部装完所有10个物品,是最优解。
本文假设车辆资源的节约价值不大,因此将装载最多的物品作为优化目标。同时,定义满载率来表示车辆的利用率,满载率为当次调运装载的所有物品数与参与调运的所有车辆装载总量之和的比例,本文将满载率设置为100%。带装载组合约束的一维装车问题是由实践研究中提炼而成的理论模型,相似的问题为有色装箱问题[1],后被广泛应用于多处理器任务调度[2]、并行处理[3]以及多媒体存储[4]等问题。Shachnai提出有类型约束的装箱问题[5]。其他一维装箱问题的衍生问题有:杨鼎强[6]提出受位置约束的有色装箱问题,Epstein研究了有类型约束的覆盖问题[7],Xavier提出有类型约束的货架装箱问题[8],Marques提出有分区的背包问题[9]。Hoto给出了分区背包问题的材料切割实例[10]。本文从精确算法和启发式算法两个方面入手,首先建立线性混合整数规划模型得出问题的精确解,并根据问题的特性利用贪婪技术建立近似算法模型,最后进行数值实验和参数的敏感性分析。本文试图提出针对特定场景下的出厂物流调度问题的有效算法,并给出合适的参数设置,从而提高整车出厂物流调度的速度与准确性。本文结构如下:第1节描述问题并建立线性混合整数规划模型,第2节建立基于贪婪算法的启发式算法,第3节数值实验与敏感性分析,第4节是本文的结论与进一步研究的展望。
2问题描述及数学建模
2.1问题假设本文所研究问题的假设有:(1)所有物品尺寸为1单位;(2)每辆车以及不同车的装载组合是独立的;在实际调度中可能存在两辆车的装载组合相同,但考虑到每辆车除了本文提及的信息,还有所归属的运输公司、调运目的地偏好等的不同,因此认为这两个装载组合也是不同的。(3)所有参与装载的装载组合都必须满载。
2.2问题描述本文研究的带装载组合约束的一维装车问题描述为:物品数m,物品集合I={1,2,…,m};物品的类型为mi,类型数集合K={1,2,…,l},车辆数w,单位的装载容量,每辆车只能选用一种装载组合,并严格按照装载组合装载物品。优化目标是在满载的情况下装载最多的物品。
2.3复杂性分析考虑带装载组合约束的一维装车问题的简化问题,当每辆车只有一个装载组合时,问题变为:有l种类型的物品,类型k的物品数Qk,有n个装载组合,第j个装载组合对类型k物品的容量Cjk,对所有类型物品的容量Cj,选择装载组合以尽可能装载最多的物品。已知多维背包问题为NP-难问题[11],多维背包问题是从给定选项的集合I={1,2,…,n}中选出一组满足所有约束的项,使其价值之和最大,数学公式为其中,pj为项j的价值,令pj=cj;xj为对应项j的变量,项j被选中xj=0,否则,xj=0;rkj>0为项j的消耗资源k的量,令rjk=Cjk;bk为资源k的总量,令bk=Qk,Qk为第k种类型的物品数。此时多维背包问题转化为一维组合装车问题的简化问题,则一维组合装车问题的简化问题为NP-难问题,显然一维组合装车问题更为复杂,也即一维组合装车问题为NP-难问题。
2.4线性混合整数规划模型本文的最终结果是给出具体的装载方案,即物品装载在哪辆车的哪个装载组合上,因此以物品作为决策主体,物品选择车辆、装载组合。其他参数与变量如下。参数m:物品数;l:类型数;w:车辆数;v_n:第v辆车的装载组合数,j=1,2,…,v_n;Cvjk:第v辆车第j个装载组合装载第k种类型物品的容量。变量xivj:1,若物品i装在车辆v的第j个装载组合上,否则为0;yvj:1,若车辆v选择第j个装载组合,否则为0。数学模型基于上述定义,建立如下线性混合整数规划模型。优化目标为物品装载数最多;约束式(1)表示一辆车最多只能选择一种装载组合;约束式(2)表示一个物品最多只能被装载到一辆车的某个装载组合上;约束式(3)表示每辆车必须严格按照装载组合装满每种类型的物品;式(4)、式(5)定义了变量的取值范围。
3启发式算法
鉴于问题的NP-难特性,问题规模变得很大时,利用线性混合整数规划求解问题的精确解将变得非常困难。因此,本节采用贪婪技术提出快速有效地求解该模型的近似算法。构造贪婪算法的基本迭代思想是:每一次迭代,仅选择当前状态下迭代一步时得到的最好解,该方法不考虑迭代二步以上情况下的最优解。当算法迭代达到停止准则时,算法停止,产生近似解[12]。贪婪算法被成功应用于背包问题、拓扑排序问题、二分覆盖问题、最短路径问题、最小代价生成树等最优化问题的求解。在车辆的装载组合选择阶段忽略每辆车只能选择一个装载组合的约束,每辆车的每个装载组合都进入筛选。第一阶段,筛选阶段。每一次迭代都将每个类型的物品分配到其装载能力最高的装载组合中,当所有类型的物品都分配完时该轮筛选结束。第二阶段,车辆选择阶段,如果某辆车装载组合满载,则选择装载总量最大的一个装载组合。循环第一、二阶段,直到所有车辆用完或剩余物品不能使任一剩余车辆的任一装载组合满载。最后采用最先满足方法将选出的车辆装满相应类型的物品。最先满足方法是指在搜索过程中,选择最先遇到的满足条件的物品。基于同类型物品无差异的假设,本文选择依据为物品的类型。终止条件:所有车辆用完或剩余物品不能使任一剩余车辆的任一装载组合满载。贪婪准则:选择当前可用车辆的可用装载组合装载量最大的装载组合。可用车辆是指在未满载车辆组合中,可用装载组合指对某种类型的装载容量大于0且小于等于该类型未分配物品数。宽恕机制:当出现某辆车的某个装载组合多数类型的容量已满足,未分配物品中存在可以使该装载组合满载的物品类型,则选择未满载类型数最少的车辆。显然当全部车辆都能满载时总装载物品数最多,贪婪准则导致部分车辆因某种类型物品装载量较低而不被选择,设立宽恕机制可以提高车辆利用率。骤1;如所有装载组合均不满载,下一步。步骤4:找出所有存在某种类型的容量已满足的装载组合,且未分配物品中存在可以使该装载组合满载的物品类型,如果存在,则选择未满载类型数最少或装载总量最大的车辆,将其放入VO,装入的物品放入IO。将不在VO中的所有车辆的装载组合的每个类型标记为可用,返回步骤1;否则,算法结束。步骤5:计算满载车辆数,装载物品数。
4数值实验与敏感性分析
本文在嵌入64位ILOGCplex12.2插件的VisualStudio2008平台上采用C#语言编写混合整数规划和启发式算法的程序软件,并进行各项实验。
4.1数值实验问题规模由物品数n、物品类型数l、车辆数w、每辆车的装载组合数j_n等因素决定。根据实践应用的需求,设置装载组合数区间为[5,10],装载总容量区间[8,12],类型数为6,物品与车辆比例为10,根据物品、车辆数不同规模,设置了10组实验,分别测试混合整数规划模型和启发式算法的求解精度与速度。详细实验参数设置如表3所示,实验数据为该参数设置下生成的随机数据,每组实验生成50份数据,所生成的输入数据如表4。
为在可接受的时间内得出可接受准确率范围内的结果,本文在求解程序中设置Gap值5%,求解时间1800秒。实验结果数据为具体的装载方案,除了装载物品总数和使用车辆数,也给出了哪些车辆的哪个装载组合装载的物品编号,如表5表示车辆2采用第5种装载组合装载物品67、107、116、176、179、181、227和232。统计结果数据时去掉第1份和第50份数据以避免干扰因素,每组算例给出了均值、最优值和最差值,表6为算法的结果统计数据。
本文采用三个指标来评价算法:求解结果与最优值之间的比值,用Gap表示,Gap=(最优值-目标函数值)/最优值,最优值通过ILOGCplex获取,为模型获得目标函数值时的最优值;车辆利用率=求解结果中车辆使用数/输入数据中车辆数;程序运行时间。分别绘制混合整数规划算法和启发式算法Gap值、求解时间的平均值对比图,见图1。对比混合整数规划算法与启发式算法的结果,可以发现,基于贪婪技术的近似算法在运行速度上有绝对的优势,但求解结果较最优化算法较差,车辆利用率较低。
4.2敏感性分析分析数值实验结果,可以发现车辆使用率平均值不足90%。原因为每辆车必须严格按照装载组合满载装运,装载组合是制约车辆使用率的关键因素,同时车辆装载组合数也是影响问题规模的因素之一,因此测试装载组合数对车辆使用率与运行时间的影响很有意义。选用500个分属于6个不同种类的物品,50辆车分别进行装载组合数为5、10、15、20、25、30的数值实验。基于实际应用中资源(时间、程序运行内存等)的限制,测试选用精确算法模型并设置Gap值5%,求解时间1800秒。记录测试的平均Gap值车辆利用率、运行时间,利用表7中平均车辆利用率和平均运行时间,绘制每辆车的装载组合数与运行时间关系和车辆利用率关系图2,可以看出车辆利用率随着装载组合数增加而提高,在每辆车15-2个时,车辆利用率达到峰值,之后缓慢下降。这是因为装载组合数增多求解难度加大,在有限的时间内更难得出最优解,达到5%Gap需要更长的时间,此时模型求解时间呈指数型增长。
影响问题规模的其他因素还有物品数、车辆数、类型数,其中类型数是算法内置参数,类型数设置的好坏不仅影响物品调度的优化程度,也是影响算法难解性的重要参数。研究类型数与求解时间的关系,对实际应用有很好的指导意义。测试物品数500,车辆数50,每辆车装载组合数10,每个装载组合装载总量[8,12],表8记录物品类型分别为3、6、9、12、15、18时的运行时间,并用其平均情况、最好情况、最差情况以及物品平均装载数绘制图3。由图3可以看出,随着类型数的增加求解时间消耗降低,同时物品装载数也迅速减少。在实际应用中需结合实际物品特性与时间消耗、求解精度来合理设置物品的类型数。
贪婪算法的基本原理篇4
[关键词]博弈任期贪婪法动态规划法
一、引言
从1978年开始到现在中国经济经历了举世瞩目的改革与发展,包括国有企业的改革与发展,在中共十六大会议时,而且一次强调了对引进西方现代企业制度的重要性。而论及现代企业制度,管理机制应该被赋予相当大的权重,而其发挥作用的核心则来源于具体操作上的最高领导层,也就是经理人。本文主要讨论了任期对经理人的行为影响。短期和长期内经理人往往需要采取不同的措施以达到他们自身理性的追求,诸如个人声誉以及财富,下期的个人目标等,这与计算机数学上的动态最优以及贪婪法求解非常类似,因此我们将从这两个角度出发进行分析。
二、对任期影响的博弈分析及模型构造
首先,假设我们有N种物品,并且各自拥有不同的体积和数量,那么,怎样选取物品会使得我们用这个背包有限的空间来装下质量总和最大的物品?方法之一就是贪婪法,通俗得说,是从质量体积比最大的物品开始选择,其次选择第二具有该性质的物品,直至所有剩下的物品各自的体积大得无法被容纳。仔细推导,会发现我们很少有可能让背包的空间得到充分的利用,那么余下的空间属于浪费。从而引入了我们的第二种想法,动态规划法,我们运用递归的思想来看是否能拿出最后一个物品,使得增加了剩余空间后,背包还能容纳两个更小的物品,但是总质量比拿出的那个大从而增加了背包内物品总的质量?再以此类推,便可以在多种尝试的情况种得到最优解。类比背包问题,我们轻而易举可以得到经理人的博弈分析,假设经理人就是这个放置物品的人,而企业员工以及资产则属于物品,如何选择他的员工以及资产组合才能使企业的利润得到最大?动态最优法固然是有效的,但是这却牵涉到了经理人的任期问题,倘若他在不久的将来不会继续呆在这个企业,而且他只想以短期内企业的利润来作为衡量自己声誉和能力的指标,那么最好的抉择就使贪婪法。不断的追求量的短期增长,同时带来了道德风险,并把更深难度的问题留给他的下一届。因而,我们有了如下的纳什均衡求解,如表1所示。
1、选择的决定素
企业利润:毫无疑问,理性的经济人永远是以利润排在首位的,尤其是那些企业的股东们,他们的投资永远只是利润的奴隶。当无暇顾及企业的运营时,利润便成了他们与经理人之间委托一合约的基石和激励。他们有权对经理人的继续雇佣做出判断,核心的一点便是该经理人是否能给企业带了长期的高的利润。鉴于此,经理人为了维持自己的福利,不得不把企业利润赋予最高的权重,不管他们是想继续被聘请或者是以此为阶梯更进一步。他们的职业历程中永远都不会少掉的是其对企业利润的贡献,这是他们声誉的一种象征,是他们能力的一种体现。
企业文化:中国的企业多种多样,因而没有放之四海而皆准的企业文化准则。而企业文化中却包含着某些亘古不变的真理,以人为本可以提高一个企业的凝聚力。一个好的经理人考虑企业文化是很有必要的。
企业机制:只有懂得如何去运用先进的技巧超越原有的自己,如何像田忌赛马一样去操纵市场,那么胜券将给予倾斜。一个企业,没有自己的王牌,那么它的利润有如空中楼阁,无法有个安宁的保障。宏观经济学往往会告诉一个R&D模型是怎样为经济做出贡献的,光有劳动力和物质资本的投入增加最终只带来了经济的零增长,唯有不断的研究和不断的人力资本的投人才会使得各项生产要素得到其应有的增长和回报。
2、行为抉择的分析
对企业的分析:鉴于我们要分析的重点并非任期对企业自身的影响,因而我们只从股东最单纯的委托合同中给予其效用函数,那就是在给予经理人合理报酬的约束下达到企业利润的最大化。因而,其对经理人的评价取决于利润,其他关于企业文化和企业机制都是深入观察到的。
对经理人的分析:
短期中:当经理人预期到自己只会短期内呆在同一企业时,自身利益便被赋予更高的权重,同时也有一定的政策偏向。通过利润的最大化,他们给其委托人提供了这样一个信号,他们有能力,他们让企业获利更多,他们可以被继续雇佣或者被其他更好的企业看中并被聘请。也就是分析图中的第一种情况。动态规划法无法给予股东信号来显示经理人的能力。即使隐性上来说这确实是股东追求的最佳途径。
长期中:他们总如弗里德曼的持久收入假说一样希望平滑企业的利润,做到经济中即使存在较大的系统风险,依然能够讲收入维持再原有水平上面。他们预期自己会被长久雇佣从而会努力改善企业的经营环境譬如企业文化的培养,企业机制的创新,以一个循序渐进的过程来激励企业潜力的发展,所谓精细管理风光无限,管到深处处处见金。并且随时关注竞争对手的动态并采取对应的行为抉择。这样一来,在充足的时间内企业逐渐循着其最佳动态路径行走。这种动态规划法在给经理人好的名誉的同时带来了企业各方面的效用最大化,也给了股东们充分的信号来显示经理人的能力和满足了股东委托时的最大动力需求。
中任期:其中包含着太多的不确定性因素,我们无法对经理人的权重分配做出具体预期,从而无论使在贪婪法的行为指导下还是在动态规划的方法指导下,我们都不好对经理人的思想进行假设。故这种情况下,行为遵从不定性。但是无法达到我们的纳什均衡。
三、模型的相关数据检验
为了证明我们的分析,我们将经理人任期内的平均利润增长率和其任期的长短进行了回归分析,期望得到经理人任期的最佳范围,具体见图1:
如图1可以直观得知道当任期处于短期和长期时,利润增长串总是比较高的,相反处于中间的那些时期,利润增长率较大具有太大的不确定性。鉴于本数据模型中的取样都来自于进人世界前五百强的中国企业,因此其具有一定的可比性,相当于将其他干扰项放在了基本相同的位置上。而其他的数据,鉴于企业非上市等因素无法被纳入模型范围。我们预测,当国家市场经营体制更加健全时,分析的结果将具有更强的可靠性。模型的拓展和运用:其实一个国家也可以被看成一个大的企业,从而国家领导人也毫无疑问成了所有阶段下的人,即经理人,这种情况下如何决定领导人的任期?直观上,我们何不运用两种方法下的博弈分析来做出决策呢?或许这样,我们就可以解释为什么美国的总统和中国的主席会拥有各自固定的任期了,这是对我们模型中经验分析的最好支持。
贪婪算法的基本原理篇5
关键词:直线Snake;贪婪算法;建筑物检测
中图分类号:TP751文献标志码:A
AutomaticbuildingextractionmethodbasedonimprovedlineSnakealgorithm
LIUJiong,LIGuangyao
(CADResearchCenter,TongjiUniv.,Shanghai200092,China)
Abstract:Tostudybuildingextractionfromaerialimagesautomaticallyorsemi-automatically,thealgorithmoflineSnakeisanalyzed,aconnectingdistanceonaverageisaddedintoitsinternalenergyfunction,itssecondorderitemismodified,itsexternalenergyfunctionisnormalized,andanexternalforceisadded.Thebuildingsinimagesareextractedwiththeimprovedalgorithmandgreedyalgorithm.Themethodscanautomaticallyextractbuildingscorrectly.Theexperimentalresultsshowthatitcanimprovetheextractionefficient.
Keywords:lineSnake;greedyalgorithm;buildingdetection
0引言
建筑物自动提取技术指以计算机为辅助手段,从单(多)幅航空或者卫星图像中提取建筑物,获取其位置、高度等信息.其主要目标是快速准确地处理海量图像数据(大范围图像或图像序列),检测并识别特定的建筑物,以减少人工操作的负担.
建筑物自动提取的应用范围包括测绘、相片判读、市政规划、通信资源配置、虚拟城市漫游以及地理信息系统数据获取等众多领域.机器自动检测建筑物是1个难度极大的课题,它跨越模式识别、图像处理、计算机视觉、光学、遥感成像等诸多学科研究领域.
随着图形学的发展,建筑物自动提取得到越来越多的关注,不同的学者提出许多不同的方法.文献[1]利用建筑物的灰度特征对图像进行一系列的分割,识别出矩形建筑物.文献[2]利用矩形的特点――对边平行、相邻边成直角等检测出边缘并分组,并以此为基础检测出建筑物.文献[3]和文献[4]则利用知觉分组的技术对边缘线段进行分组处理,达到提取矩形建筑物的目标.文献[5]使用基于Bayes网络的建筑物检测,使用边界检测提取直线特征,生成二维假设.面对众多的假设,构建并使用Bayes网络进行选取和验证,得到最佳的建筑物三维模型参数.文献[6]基于小波分析的建筑物提取,利用小波及其滤波器对建筑物进行边缘检测、影像分解与重建.
在现有这些方法中,前几种主要基于矩形建筑物,虽然方法很有针对性,但会遗漏其他形状的建筑物.传统的方法一般基于矩形的特点――对边平行、相邻边成直角等来检测建筑物,但是这样会遗漏许多轮廓为多边形的建筑物.基于Bayes网络的方法推理十分方便、有效,但建立在一系列假设的基础上,随着问题的复杂化和网络节点的增加,参数学习也成为研究发展的重要前提.在基于小波分析的方法中,小波的许多特性能大大改进建筑物的提取,但其潜在的问题是:不是1种算法就能满足所有建筑物的准确匹配.直线Snake方法的出现为有效解决这个问题提供良好契机.
本文在研究、分析图像预处理、边缘检测、链码跟踪、直线提取等技术的基础上,分析研究直线Snake算法,根据建筑物的特点提出基于改进直线Snake算法的建筑物自动提取方法,并用其提取建筑物,实验结果表明该方法能够正确地自动提取建筑物,效率得到提高.
1Snake模型及其算法改进
1.1Snake模型
Snake模型是有效地寻找目标轮廓的搜索算法,具有良好的提取、跟踪特定区域内目标边缘的能力,在国外已广泛用在边缘检测、建模、图像分割和运动跟踪等场合.其一般公式为
2基于改进直线Snake算法的建筑物自动提取
为了验证所提方法的正确性,设计1个测试系统,采用改进的直线Snake算法对建筑物的轮廓进行自动提取.试验的环境为:IntelPentium4(2.5GHz),512MBRAM,MicrosoftWindows2000Professional,MicrosoftVisualC++6.0.
2.1图像预处理
图像的预处理是识别的重要步骤,在地图扫描输入或摄像输入时,由于线不光滑以及硬件系统分辨率等因素限制,使得一些曲线目标带有多余的小分支及裂隙等,都会影响后续的跟踪识别.预处理包括图像二值化、噪声剔除、高斯平滑等工作.
扫描输入后的地形图是具有256个灰度级的栅格数据文件,为了便于目标跟踪必须首先将目标像素从背景像素中分离出来,即将图像二值化.
由于图像扫描输入本身及二值化过程中往往存在着干扰噪声,这些噪声影响数字化图像的质量,若不在识别前去除,会造成很大误差和失真,给识别造成困难.一般图像中主要的干扰有毛刺噪声和空洞或凹陷噪声,见图1和2.除此之外,由于地图上的斑点和污迹造成数字图像中的黑点也是常见的噪声之一.
剔除噪声算法一般基于像素8邻域连通性准则,毛刺噪声用图3所示的模板,空洞噪声用图4所示的模板及它们的3次90°旋转模板进行处理,只要像素与这些模板中的任意1个匹配,则认为是噪声.
最后用标准卷积实现高斯平滑,见图5.
1.4的高斯函数离散近似
2.2边缘跟踪
预处理完成之后,首先提取图像的边缘信息,它是重要的图像特征信息.本文采用目前比较流行的canny算子来检测边缘.它包括如下5步:(1)用梯度搜寻边缘;(2)计算方向角;(3)方向角规范化;(4)非最大化抑制;(5)双阈值分割.
2.3链码轮廓跟踪
检测出边缘后,下一步工作就是跟踪其边缘.本文采用常用的FREEMAN链码.FREEMAN于1961年最早提出用链码表现平面线条图像的方法.根据线条的不同走势方向,分别用{0,1,…,7}8个标志表示,见图6.这样任何1个连续的平面线条图像都可以用一串由{0,1,…,7}中的元素组成的链码近似描述.如果按逆时针方向绕行,可得到如图7的轮廓线的FREEMAN链码(7600212212).
2.4直线提取
建立二维边缘轮廓链表后,所关心的是一系列房屋的转折点.使用Splitting方法从一系列光滑的曲线中寻找房屋的转折点.方法如下:
(1)首先给定一定距离的阈值d0,用直线连接曲线点集的两个端点A和B.
(2)设检测点集中距离直线AB最大的点C对应的最大距离为d1,若d1>d0,则记录点C的坐标,C为寻找的下一个转折点,否则算法结束.
(3)由上一步找出的转折点与原曲线点集的两个端点形成新的两个曲线点集.对这两个曲线点集同样进行上述操作,直至算法结束.
2.5建筑物自动提取
航空摄影图像中房屋的检测、描述和重建是图像理解的重要研究内容,它不仅为从图像中感知三维人造结构体的研究提供1个良好的具体模型,而且在地物测绘自动化、智能视觉监控与导航等领域有着重要的实用价值.其中,对城市航空影像的研究是热点和难点问题.
在航空图像中,为了提取1个物体,必须知道如何把相关的像素组织成区域,进而通过其他知识(例如区域的平滑度、连续性以及场景和物体的关系),把区域组织成物体.这就是所谓的目标分割(ObjectSegmentation)问题.然而,单幅航空图像中自动检测建筑物的困难是多方面的.尽管有距离传感器,绝大多数数据是二维图像,缺少直接的三维数据.航空图像还会由于尺度、光谱范围、传感器的几何图像、图像质量、成像条件(如气候、光照)等的不同而相差较大.建筑物本身的结构也相差较大,它们还常常被一些人造目标或自然目标包围,造成部分断档.在这些情况下,解决建筑物的自动检测不仅有重要的实际意义,同时也为发展新的计算机视觉和图像理解提供很好的试床.
本文采用的是贪婪算法.它认为轮廓曲线上各直线在计算能量时与其他各直线不相关.也就是说,认为其他各直线均处在最佳位置,仅计算当前直线的可能位置,且每计算一直线就更新其位置.贪婪算法具有计算效率高、时间复杂度低的优点.由于传统Snake的贪婪算法没有考虑轮廓点间具有相互关联性,因而降低Snake的鲁棒性.但是,在直线Snake中,考虑到直线段已经表述大部分轮廓点间的相互关联关系(共线关系),因而目前的贪婪算法不但计算效率十分出众,而且也满足较强鲁棒性的要求.也就是说,贪婪算法效率高,而在很多时候直线检测算法承担着算法对噪声等的鲁棒性要求.这再次表明直线Snake的优势,即它由于充分利用中层处理技术对图像的初步解释功能,具备较高的计算效率和鲁棒性.具体如下:
(1)先设定1个初始位置给Snake,设此初始位置所在直线为j.设有n个直线段,对于每个直线段,设置式(5)中的a和b为1,并设置1个较大的常数Em.
(2)对于直线j,在其一定邻域内(设为e)计算每条直线段的能量值,即Ei=Eint,i+Eext,i.其中,i=0,1,…,m-1,m为Snake邻域窗口内的直线段数目.如果搜不到直线段,则对当前直线段加一惩罚项,使其Snake能量过大,返回上一直线段.
(3)若EiEm,则算法结束.
2.6检验建筑物
应用航空像片或影像可以有效提取各种线性特征,一般要求分辨率较高、无几何变形、信噪比好、对比度强的航空图像.但它对建筑物的准确定位和形状重构方面较差,因为图上各种线性目标如树木、空中的线路、太阳照射形成的阴影都会干扰建筑物的边界.很难根据提取的线性边界来准确判断哪些线段应该构成建筑物的轮廓,可能会组成事实上不存在的建筑物,因此可以根据传统的建筑物在结构上一定的几何形态特征――通常表现为多边形,且建筑物表面的灰度分布较均匀,来检测第2.5节中识别出的建筑物.
(1)多边形特征:建筑物通常为矩形或矩形的组合,对于不完整的矩形可以退化为U形、L形和平行线特征.建筑物屋顶一般为水平顶、斜坡顶、人字型顶及其3种的组合类型.建筑物的轮廓清晰,角特征明显,特征线排列整齐,建筑物之间排列规则有序,而且影像上的建筑物都保持自己最基本的属性―区域特征,即“面”特征.
(2)夹角(交角)特征:建筑物的另一显著特征是建筑物的夹角,它具有平移、旋转、放缩不变性等特性,因此可以利用这一特征来识别建筑物.由于航空像片通常拍摄角度垂直或接近垂直于地面,因此通常多边形建筑物的夹角(交角)在90°左右.
(3)阴影特征:阴影是高出地面的物体在阳光照射下产生的,在相片上常表现为地面物体由于背光而形成的深调.阴影是各种影像常见的基本特征之一,它对图像判读和信息提取有好处也有坏处.由于太阳方位角和高度角的不同,物体的阴影在不同时刻及不同地点也会有变化.由于建筑物通常比周围的物体高,所以会在像片上形成阴影.像片上的阴影除了建筑物会产生以外,树木由于遮挡太阳光线也常常形成阴影.因此,阴影的存在虽然会使检测建筑物变得困难,常常对建筑物信息的有效提取形成干扰,但也是证明建筑物存在的有效依据.
(4)灰度特征:一般来说建筑物的顶部灰度分布比较平均,而且高于周围的背景灰度,因此灰度特征可以用来作为识别建筑物目标的依据.
2.7实验结果
图8是某区域的卫星照片,图片中有各种各样形状的建筑物.图9为用文献[8]直线Snake算法在进行建筑物提取后的图片.它共提取出42幢建筑物,误检测5幢,漏检测4幢,在所设计的测试系统中共花费85s.图10是利用第1.2节改进的直线
图8某区域的图9直线Snake图10改进的直线
卫星像片算法的检Snake算法
测结果的检测结果Snake算法提取出的建筑物.它共提取出44幢建筑物,误检测3幢,漏检测4幢,在测试系统中共花费70s.由此可以看出,改进后的直线Snake算法无论是运算时间还是运行结果都优于原来的算法.
从图10的检测结果看,虽然图像中有些建筑物的形状较为复杂,但是发现用改进的直线Snake方法不仅能检测出常规的矩形建筑物,还能识别出一些多边形建筑物.尽管一些建筑物因为梯度方向误差、阴影遮挡等原因不能完整提取,但得到的结果为建筑物提取提供充分依据和重要线索.本文计算方法达到预期的效果,且不需要花费太多的时间,满足实际应用的需求.
4结论与下一步工作
建筑物自动提取不但成为地图数字化技术的发展方向,也是实现地图信息获取智能化乃至自动化的必由之路,有很大的实际应用价值.本文在研究已有方法的基础上,提出改进直线Snake算法的建筑物自动提取方法.试验结果表明,该方法能在很大程度上提高建筑物提取效率.下一步的工作是在该方法的基础上加强建筑物识别和检测的研究,提高其自动化程度.
参考文献:
[1]杨益军,赵荣椿,汪文秉.航空图像中人工建筑物的自动检测[J].计算机工程,2002,28(8):20-21.
[2]陶文兵,柳健,田金文.一种新型的航空图像城区建筑物自动提取方法[J].计算机学报,2003,26(7):866-873.
[3]LINC,HUERTASA,NEVATIAR.Detectionofbuildingsusingperceptualgroupingandshadows[C]//IEEEProcComputerVision&PatternRecognition,Seattle,Washington,USA,1994:62-69.
[4]JAYNESC,STOLLEF,COLLINSR.Taskdrivenperceptualorganizationforextractionofrooftoppolygons[C]//ProcARPAImageUnderstandingWorkshop,1994.
[5]钱隆.贝叶斯网络在基于几何模型的建筑物检测中的应用研究[D].合肥:合肥工业大学,2003.
[6]林怡.小波分析在遥感影像建筑物提取中的应用研究[D].上海:同济大学,2003.
[7]KASSM,WITKINA,TERZOPOULOSD.Snakes:activecontourmodels[J].InternationalJComputerVision,1987:321-331.
贪婪算法的基本原理篇6
古代的宗教先知们,针对人类的恶行,划分出傲慢、妒忌、暴怒、懒惰、贪婪、贪食及等七宗罪。2008年,梵蒂冈的社会罪更新了传统的七宗罪,把新七宗罪和现代社会诱惑联系起来。新七宗罪为:伦理罪、从事基因改造科学实验、滥用药品、污染、社会不公、导致贫穷或少数人过度累积财富。
不管是新还是旧,这些“罪行”都损害了个人的身心。其实在企业IT管理中,IT经理们也容易犯“七宗罪”,这些“罪行”一样后果严重,对整个企业的正常发展都会产生严重威胁。
第一宗罪
过分渴求新技术
IT领域有好多种欲望,如对权力、职位、甚至物资的欲望,对IT工作破坏性最大的也许是对新设备控制不住的欲望。
IT作家JamesJ.DeLuccia曾经指出,IT领域最常见的欲望就是,纯粹为了拥有新技术而一味追求新技术。“IT经理们错误地追求最新的处理器和硬件,就为了所谓的‘与时俱进’。而事实是,大多数情况下,目前在用的技术往往还是用得好好的。”
有一家消费品生产商,它的运营情况良好,业务运行流畅,客户对服务也很满意。但是,这家公司的IT经理们沉迷于新技术,决定全面升级至新版本的Oracle数据库和至强处理器。与许多为了追求新技术而开展的IT项目一样,这家公司遇到的头一件事就是,该公司原先使用的用来连接数据库的软件不支持新版本的Oracle产品。而且,原先的软件开发商已倒闭,无法提供相关的技术支持,于是这次升级的后果就变成了公司的主要服务应用程序再也无法正常运行。更糟糕的是,新硬件需要更多的电力支持,结果数据中心现有的电力和UPS系统满足不了电源需要,断电现象不断发生。除此之外,还有硬件及维护、基础架构升级、软件许可证、能耗成本及培训Oracle数据库管理员等诸多因素,带来了大规模的成本增加。
DeLuccia认为,一家企业如果追求新技术,它一定要实用,而且是业务所必需的,纯粹为了满足欲望而追求技术只会带来惨痛损失。
第二宗罪
信息饕餮
拼命隐藏信息造成的后果不如迷信新技术的欲望来得严重,但是前者更常见。这种不愿意与别人共享信息的做法往往被误以为是保障工作安全的办法。
网络管理软件提供商SolarWinds的技术主管JoshStephens说:“有这样一类IT经理,他们很不喜欢透露网络基础架构方面的信息。他们让别人处理服务器和网络交换机,但他们自己控制着网络核心部分,不想让别人知道网络核心在如何运行。这种做法的结果是,一旦这些IT经理外出了,而公司的网络系统恰恰在这个时候发生故障停止运行了,那就没有人能让系统恢复起来,因为大家不知道系统是如何构建的,他们只好从头做起,重新构建网络核心。这项工作原本可能只要一个小时,现在也许要花上整整一天半的时间。这些IT经理们往往认为,如果知道别人不知道的东西,自己就显得比较聪明。而事实上,如果与人分享信息,并且教给身边的人,那样才比较明智。”
位于美国新泽西州的一家咨询公司的副总裁MarceloSchnettler表示,除了拼命隐藏信息外,IT人员当中另一种常见的饕餮表现就是拼命隐藏项目。
Schnettler表示,高级管理人员接过某些项目,不是因为想获得完成所有这些项目所带来的关注和资金,就是内心无法拒绝项目。结果是,IT部门最后面对众多项目忙得不可开交,随后无力处理更重要的紧急情况。
第三宗罪
贪婪压倒良知
Asuret公司致力于减少IT项目失败,公司的首席执行官MichaelKrigsman表示,IT项目失败,往往归咎于傲慢和贪婪这两个致命因素。
他把这个问题称为“魔鬼三角”:提出不切合实际需求的幼稚或傲慢的客户、随意许下承诺的系统集成商和顾问,以及左右为难的技术提供商。
他表示,即使系统集成商在上马项目时诚心诚意,他们也会面临困境。他们要么告诉客户,这些需求注定不合理,因而错失这笔合同,要么还是按客户的要求去做,但面临项目失败的风险。
项目失败会给集成商带来更多的麻烦,但这几乎总是意味着能够获得更多的收入,因为集成商按小时收取修补漏洞的高额费用。这时候,贪婪心理就会占上风。与此同时,技术提供商不愿意疏远为自己带来付费客户的集成商,因此会采取袖手旁观的做法。
要克服天生的贪婪心理,就要在协议中明确奖励机制。比方说,如果项目提前完工,给予奖励;如果项目延时或超出预算,就要受到严厉惩罚。
第四宗罪
IT人员的懒惰作风
IT经理尽管工作很拼命,但是往往犯下懒惰的过失。
数据质量专业公司DataFlux的首席执行官TonyFisher认为,如果放贷机构的IT部门之前更多地关注数据质量和准确性,2008年的抵押债务危机也许不会这么严重了。
他表示,从抵押贷款客户收集而来的数据有许多是不准确的。其实通过技术方法,可轻松验证这些数据的正确性,然后添加到系统中,但从来没这么做。放贷机构的IT部门对提供的数据信以为真。抵押贷款打包成了一揽子财务方案,然后卖给互助基金和银行,根本没想到要去验证这些是不是合格的金融产品。很难说这是业务部门的错还是IT部门的错。但这个问题原本可以由技术来解决。
懒惰作风危害IT部门的方式有好多种:从疏于监管外包协议、不够积极的合规审计、数据安全保护不力,到没有采用基本的网络监控。
SolarWinds的Stephens举例说:“有一家规模很大的宽带提供商曾部署了一套非常昂贵的网络监控系统,但是这套系统没有顺畅运行,宽带提供商对此也无动于衷。后来有一天,他们遭遇了系统停运事件,结果影响到了上百万人。他们还不知道出了什么情况,直到客户开始打来电话才知道这回事。要是他们之前部署了功能很基本、但可以正常运作的网络监控系统,就能大大改善服务客户的水平。”
IT管理解决方案厂商Sparxent的共同创办人DaveTaylor表示,考虑到当前的经济形势,现在正是企业内IT部门积极忙碌起来的大好时机。“经济衰退期间,让IT人员忙碌起来比过去显得更重要。如果某个重大项目因你不愿意花正常需要的时间而被拖延,现在应该积极补救。让公司知道IT部门没有一丝懒惰作风,IT部门投入大量时间,就为了以后替公司省钱。”
第五宗罪
嫉妒同一家公司的
其他部门
DeLuccia表示,随着一家公司不断成熟,有些人会逐渐出现各自为政的心态。换句话说,大家不再共享信息,而是把大部分时间用来保护自己的地盘,嫉妒其他部门的地位或预算。随之而来的是,出现重复性项目、缺乏透明度、破坏企业文化的人事纷争,结果遭殃的是整个公司。
DeLuccia以一家跨国建筑设备生产商为例说:“一名经理负责该公司相当一部分的IT运营工作,他总抱怨其他部门有更合理的考评机制和更充足的资金。他总是说‘我做不了这个,是因为没有其他部门那么多的预算;这就是为什么我的部门无法正常运作的原因。’”
第三方审计结果显示,这个经理领导的部门屡屡达不到服务级别协议的规定,也不像一个真正的业务部门在运作。结果,公司解雇了这名IT经理,他领导的小组也被解散了。
在DeLuccia看来,导致这名IT主管被解雇的原因就是嫉妒,他把注意力全放在了别人身上,而不是自己更主动些。
SolarWinds的Stevens说,类似的情况出现在了许多企业的IT部门。“IT经理们总想接过同一家公司其他IT人员的责任,负责基础架构的人总想管理服务器,负责服务器的人总想还能管理数据库。他们不断接过越来越大的责任,结果不再为本公司真正出力,而是一心想接手别人的工作。”
第六宗罪
不控制愤怒
“不控制愤怒”也可以被称之为威胁式管理,但是情绪完全失控不是IT经理激励团队的办法。
六年来,MarceloSchnettler在不同公司的六名CIO手下干过,这些CIO几乎都曾经当众发怒。有一次系统出现了长时间停运,一名CIO冲到他认为应该负责的一名员工的办公间,用非常难听的话严厉责骂对方。
Schnettler说:“CIO乱发火可能是危害最大的一宗罪。这样会削弱士气,会在IT部门里面助长‘推卸责任’的歪风,结果导致相互指责、缺少合作。”
计算机与网络顾问BillHome在一家大型电信公司的IT和工程部门工作过多年,他曾遇到过一名IT经理要求程序员在极短的时间内完成某项任务。而此时已经是周五傍晚大家准备下班,这名经理勃然大怒。开始发脾气,冲程序员们大吼,要他们必须周末加班,以便按时完工。大伙当面嘲笑说:“你跟工会管事去说吧!周一再见。”结果自然是没有按时完工,那名经理也在七个月后被调到了不大要紧的岗位。
第七宗罪
骄傲情绪滋生
骄傲有时也是一宗罪,因为它会让IT经理盲目地以为自己知道一切,哪怕他们明明知道对某个话题所知甚少。
DeLuccia说:“骄傲的人以为自己完成了任务,实现了目标。骄傲比别的任何一宗罪更会使公司面临竞争和威胁。”
Asuret公司的Krigsman强调,来自骄傲心态的自大和自负情绪会给企业带来重大的经济损失。“有这么一家年收入多达数十亿美元的制造商,拥有庞大的分销渠道。它没有购买现成的ERP系统,而是自己开发。问题在于,那位CIO不相信质量保证这一套。于是,没有经过任何测试,就把自行开发的这个系统部署到数百个零售场地。在砸进去了数百万美元之后,项目的效果很差这个项目最终还是被取消,项目小组的成员随之被解散。”

写人作文范文(整理27篇)
- 阅0写人作文篇1我有一个姐姐,她很漂亮,有着一头又长又黑的头发,水汪汪的大眼睛像黑宝石一样,一个樱桃般的小嘴。但你可别看她漂亮,她可是很花痴的。一次,我拿着一位明星的照片给姐姐.....

春节范文三年级作文(整理6篇)
- 阅1春节范文三年级作文篇1除夕的前几天,我很盼望过年,恨不得一头栽进被子里美美地睡到除夕的早上。除夕终于到了,我和姥姥早上出去挂彩灯。我家的彩灯真美丽:有喜庆的大红灯笼;有能.....

关于物业企业年终总结范文(5篇)
- 阅1关于物业企业年终总结范文5篇通过书写记录自己的物业工作感悟,员工可以书写一份物业企业年终总结范文进行工作的规划与总结。下面是小编给大家带来的关于物业企业年终总结范.....

公司班组年度工作总结范文(5篇)
- 阅0公司班组年度工作总结范文5篇公司班组年度工作总结范文如何写好呢?班组是企业组织生产经营活动的基本单位,是企业一切工作的立足点。把班组工作抓好抓实,才能强化劳动纪律,培.....

妇联个人工作总结(6篇)
阅:0妇联个人工作总结篇11、7月2日,宝韵音乐幼儿园成立十五周年庆典活动在邵逸夫艺术剧院举行。活动由市妇联副主....

贪婪算法的基本原理(6篇)
阅:0贪婪算法的基本原理篇1关键词:Java;数据结构;算法;程序设计;测试中图分类号:TP312文献标识码:A文章编号:1007-9599(2....

制药工程就业情况(6篇)
阅:0制药工程就业情况篇1一、不合理用药的现象1、漏诊。误诊造成有病症未得到治疗病人需要进行药物治疗的疾病或....