首页范文贪婪算法的基本原理十篇贪婪算法的基本原理十篇

贪婪算法的基本原理十篇

发布时间:2024-04-25 19:53:21

贪婪算法的基本原理篇1

关键词:0-1背包问题;遗传算法;贪婪算法;模拟退火

中图分类号:tp301.6

0-1背包问题(Knapsackproblem)是一个典型的np完全(nondeterministicpolynomiaCompleteness)问题[1],在现实生活中有着广泛应用,如生产安排、资源分配、投资决策等都可建模为背包问题。因此,对该问题求解方法的研究,在理论上和实践中都有着重要的意义。求解0-1背包问题的方法有多种,如枚举法、动态规划法、回溯法、贪婪算法、遗传算法等。其中,遗传算法作为智能搜索算法的一种,具有全局寻优、智能搜索以及收敛速度快等特性,在求解0-1背包问题中显现了一定的优势。遗传算法基于“优胜劣汰”自然选择机制,通过选择、交叉、变异等操作使群体中的个体不断朝着最优解的方向移动[2]。本文在各种算法对背包问题研究的基础上,将贪婪算法和模拟退火算法引入遗传算法,给出了一种混合遗传算法求解0-1背包问题。

1背包问题数学模型

背包问题的一般描述为:已知n个物品的重量wi(wi>0)和价值ci(ci>0)(i=1,2,…,n),给定一个背包,容量限制为v(v>0),问如何选择物品装入背包,使得在背包容量限制之内,装入的物品总价值最大,且单个物品不能多次装入、不能分割。0-1背包问题的数学模型可表示为[3]:

目标函数:

约束条件:

xi∈{0,1}(i=1,2,…,n)

式中,xi为0-1决策变量,xi=1时表示物品i装入背包中,xi=0时表示其未装入。

2混合遗传算法设计

2.1染色体编码方法

根据0-1背包问题的特点,采用与问题物品个数等长的二进制编码方法。编码串中1表示对应的物品放入背包中,0表示不放入。如110110101000……0001表示第1、2、4、5、7、9、n号物品放入背包中,其他的则不放入。

2.2贪婪算法在解码中的应用

上述编码方案虽然比较直观,但随机生成的编码串,或是交叉、变异操作产生的新个体,不一定满足约束条件,即在这种编码方案下会产生一些无效染色体。可引入贪婪算法的思想解决这一问题,这里采用单位价值贪婪策略[4],这种策略为:从剩余物品中选择可装入包的价值密度ρi=ci/wi值最大的物品,直到超出背包容量为止。具体步骤如下:

①对所有xi=1的物品,按它们的价值密度ρi=ci/wi(i=1,2,…,n)形成一个从大到小排序的队列q(i),即价值密度最高的物品序号为q(1),次之为q(2),以此类推。

②置k=1。

③引入贪婪算法解码变换:如果,则将q(k)所对应的物品装入背包,置xq(k)=1,k=k+1,转向第③步;如果,则转向第④步。

④往后的队列序号j,即从k到n对应的物品不放入背包,置xq(j)=0。

2.3适应度函数

因为背包问题求的是目标函数的最大值,所以可用目标函数值作为适应度函数值,即适应度函数为:

2.4选择、交叉和变异算子

遗传算法通过使用选择算子对个体进行优胜劣汰操作。这里采用遗传算法常用到的比例选择算子,即是轮赌盘选择,这种选择方法个体被选中的概率与它的适应度大小成正比,保证了适应度较高的个体被选择到下一代的几率更高。考虑到交叉、变异操作可能会破坏当代最优个体,最终选择算子采用比例选择基础上的最优保存策略(最优保存策略能让适应度最好的个体不被破坏,尽可能保留到下一代群体中)。

由于采用二进制编码方案,因此交叉算子采用较为简单的单点交叉算子,即在编码串中随机设置一个交叉点,然后在该点处按交叉概率pc交换两个个体的部分染色体。变异算子采用基本位变异,即以变异概率pm将随机指定的基因座上的值由1变为0,或由0变为1。

2.5模拟退火过程

模拟退火算法是基于金属退火的机理而创建的一种通用优化算法,它依据metropolis准则接受新解,其在接受优质解的同时,在一定限制范围内接受劣质解,因此能够有效跳出局部最优的“陷阱”[5]。模拟退火算法与遗传算法相比较,模拟退火算法具有较强的局部搜索能力,而遗传算法则能更好的把握全局搜索,将两种算法相结合,可以互相取长补短。步骤如下:

①设置初始温度tk(k=0),迭代次数num(num∈n+)。

②置ni=1。

③进行第ni次迭代,将染色体的第ni位的基因置为0,第chromlength-ni+1(chromlength为染色体长度)位基因置为1,以此提高模拟退火的局部搜索能力,并计算函数差值Δf=f(j)-f(i),其中j为新生成的个体,i为原来的个体。

如果Δf≥0,则新生成个体复制到下一代群体;

如果Δf

④若ni

⑤令tk+1=a×tk,kk+1,其中a∈(0,1),若满足收敛条件,退火过程结束,否则,转向第②步。

为防止退火操作对最优个体的破坏,每次退火操作后,都要保存到目前为止最优个体的信息。

2.6算法基本流程图

混合遗传算法的基本流程如图1所示:

图1算法流程图

3实例仿真

为了验证混合遗传算法的有效性,通过实验对改进的混合算法与传统的贪婪算法、基本遗传算法进行对比。考虑有50件物品组成的0-1背包问题,物品的价值C、物品的重量w、背包的容积v分别为:

C={ci}={200,198,198,185,184,174,165,160,160,158,155,130,125,121,120,118,115,110,108,102,100,99,99,96,95,92,88,82,80,77,75,74,72,70,69,65,65,63,60,58,56,52,30,22,21,11,9,6,3,1}

w={wi}={65,82,85,90,72,72,66,50,45,25,60,55,40,40,50,32,22,72,30,32,55,34,35,32,25,28,30,31,50,30,45,33,60,50,20,60,20,25,30,10,20,25,15,11,9,9,4,4,2,1}

v=1000

实验环境:pC机:CpU:intelCorei5-2400;内存:2GB;硬盘:500GB;操作系统:windowsXp。

参数设置:种群规模popsize=100;最大迭代代数为200;交叉概率pc=0.6,变异概率pm=0.03;染色体长度chromlength=50;初始温度t=100;降温系数:a=0.8;退火终止温度为1;每个温度内的迭代次数num=25。以上参数通过参考常见的文献和多次实验而得。实验数据如表1所示:

表1实验结果

算法最好个体总价值总重量100次实验结果超过贪婪算法的次数

贪婪算法1000111111101101101101111

11101000010110110000000003084991

基本遗传算法1000111111101101101101111

111010000101101100000110030999994

混合遗传算法1000111111101101101101111

111010000101101100010000031051000100

通过表中的数据可知,融入了贪婪算法和模拟退火算法思想的混合遗传算法,在求解0-1背包问题时,比单纯贪婪算法和基本遗传算法都要优越。

4结语

本文根据遗传算法的基本思路来求解0-1背包问题,在解码过程中引入贪婪算法,提高了遗传算法解决背包问题的效果。并且融合了模拟退火算法,克服遗传算法容易陷入局部最优的缺陷,提高了算法的求解性能。今后要以此为借鉴,将遗传算法应用到更多的组合优化问题的求解中。

参考文献:

[1]贺毅朝,刘冲起,张翠军.求解背包问题的贪心遗传算法及其应用[J].计算机工程与设计,2007,11:2655-2657.

[2]周明,孙树栋.遗传算法原理及应用[m].北京:国防工业出版社,1999.

[3]张盛意,蔡之华,占志刚.基于改进模拟退火的遗传算法求解0-1背包问题[J].微电子学与计算机,2011,2:61-64.

[4]严太山.用基于贪婪算法的混合遗传算法求解0/1背包问题[J].现代计算机(专业版),2007,8:14-17.

贪婪算法的基本原理篇2

关键词:货位优化;贪婪算法;分类存储策略;配送中心

中图分类号:F224文献标识码:a

伴随科技的进步和经济的发展,尤其是改革开放以来,我国仓储业取得了快速发展,仓储设施得到明显改善,服务水平与作业效率有所提高。但从总体上看,我国仓储业的传统经营方式还没有根本性改变,仓储自动化、标准化与信息化管理仍处于较低水平,造成我国流通企业商品库存时间过长、占压资金过多。2007至2011年,我国总物流费用占国内生产总值的比重由18.2%下降到17.8%,而保管费用占国内生产总值的比重却由5.8%上升到6.1%[1]。企业往往从运营成本角度考虑,导致依赖人工作业的仓库和配送中心仍占据较大比重。

仓库和配送中心作为供应链的一个重要组成部分,其订单拣选作业系统的效率是影响仓库和配送中心整体运行效率的关键因素,进而也影响整个供应链的运营效率。仓库或配送中心大约50%~75%运营成本都来源于订单拣选作业[2]。订单拣选作业是仓储工作人员根据顾客订单在货位上拣取货品的整个作业流程,其效率的高低受到货位布局和企业运营策略的影响。而通过货位优化可以改善订单拣选作业的效率。

当前,国内外学者货位优化的研究较多,主要集中在以一段时期内的订单拣选作业成本最小、订单拣选时间最小、行走距离最短、货架重心最低等为目标建立相关的货位优化模型研究方面,较少考虑到货品特性中的质量对订单拣选作业影响。从人因工程学的角度来考虑,在实际的订单拣选作业过程中,货品质量也是影响搬运效率的重要因素之一,尤其是完全依赖人工作业的仓库或配送中心。

基于分类存储策略,本文通过对一段时期内的有效订单进行统计,以人工订单拣选作业导致的人体能耗最小为目标,建立了货位优化模型,然后利用贪婪算法对该数学模型较为快速地进行求解。

1货位优化模型

1.1分类存储策略

存储策略即决定货品在仓库或配送中心存储区域位置的指派方法及相关原则,合适的存储策略可以减少出入库移动的距离、缩短作业时间,甚至能够充分利用存储空间。常见的存储策略有固定货位存储策略、随机存储策略、分类存储策略、分类随机存储策略和共同存储策略。其中分类存储策略是指把货品按照类别进行存储,并且每一类别的货物都有其固定的存储区域,而同属一类的不同货品又按照一定的原则来指定货位。分类存储策略方便畅销货品的存取,具有固定货位存储策略的所有优点[3]。故本文选用其作为存储策略,考虑如何将仓库或配送中心的货位安排给各个分类,最终实现人工订单拣选作业所致的人体能耗的最小化。

1.2货位优化模型假设

为了构建货位优化数学模型,提出以下假设:

仓库或配送中心只有一个出入口;同一货位仅存储同一类别货品,不允许混放;同一类别货品可以有多个货位;每个货位存放的货品以容积为限;所有货位及托盘尺寸一致;订单拣选作业人员匀速行走;订单拣选作业人员人体能耗只由货品质量引起,工作人员自身质量和拣选设备质量不计,且只计算在货位至出库口的克服摩擦力导致的能耗,不计从货位拣取至设备上的人体能耗;订单拣选作业拣取货品的货位始终为该类别货品距离出口最近的货位;货位至出库口的距离采用直线距离(曼哈顿距离)计算。

1.3建立模型

设置优化模型参数如下:

2贪婪算法求解模型

2.1贪婪算法

贪婪算法(又称贪心算法)是一种常用的求解最优化问题的简单、迅速的方法。在求解问题时,贪婪算法总是做出在当前看来最好的选择,它所作的每一个选择都是在当前状态下某种意义的最好选择即贪心选择,并希望通过每次所作的贪心选择导致最终得到问题最优解[4-5]。其基本思路为:从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快地求得更好的解。当达到某算法中的某一步不能再继续前进时,算法停止[6]。贪婪算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。

对于企业而言,耗费大量的人力、财力和时间去求解目标函数的最优解是不经济的,尤其是对那些出货差异较大的仓库和配送中心而言,因为最优解是伴随时间而不断变化的。因此,本文针对此类配送中心或仓库,采用了贪婪算法进行快速求解。

2.2模型求解

贪婪算法求解次货位优化模型的步骤如下:

Step8:重复step5~7这一过程,直到把所有类别的货品指派到特定的货位中。

3结束语

与之前的货位优化目标函数不同,本文从人因工程学的视角,结合分类存储策略,提出了以人工订单拣选作业所致的人体能耗最小的目标函数,并建立了相关的货位优化模型,最后利用贪婪算法这一快速求解算法进行求解。此模型不仅可以对不同时期具有明显差异订单的仓库或配送中心的货位进行快速优化,还因此降低了订单拣选工作人员的劳动强度,提高了劳动效率。从而,进一步提高了仓库或配送中心的运营效率,具有一定的实用性和实际意义。

参考文献:

[1]中华人民共和国商务部流通业发展司.商务部关于仓储业转型升级的指导意见[eB/oL].(2012-12-18)[2013-07-06].http:///article/b/g/201304/20130400075343.shtml.

[2]JohnJ.Coyle,edwardJ.Bardi,C.JohnLangley.themanagementofbusinesslogistics[m].St.paul,mn:westpub.,1996.

[3]田源,张文杰.仓储规划与管理[m].北京:清华大学出版社,2009:134-135.

[4]S.a.Curtis.theclassificationofgreedyalgorithms[J].ScienceofComputerprogramming,2003,49:125-157.

贪婪算法的基本原理篇3

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的路由跳数。通过以上仿真实验可得出结论,对建立在起伏地势上的无线传感器网络,在基于地理位置信息算法的基础上,用起伏地势上的最短路径代替空间距离,能有效减少路由跳数,从而减少能量消耗,延长网络生存时间。即本文体提出的伪三维的地理位置无线传感器网络路由算法比三维贪婪路由算法有较大优越性。

结束语

贪婪算法的基本原理篇4

目前国内物流公司的出厂装箱调度仍旧采取效率极低的人工调度,尽管国内外二维、三维装箱调度问题已经有大量研究,但由于国内绝大部分物流公司不够规范,而采用二维、三维装箱调度对人员素质要求较高、统计难度较大,同时对公司的信息系统有较高的要求,先进的理论在实践中没有得到很好的应用,因此本文从整车订单和轿运车配载的过程,不考虑整车目的地和轿运车的路径选择,抽象出带装载组合约束的一维装车问题,即有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位iLoG Cplex12.2插件的Visual Studio2008平台上采用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=(最优值-目标函数值)/最优值,最优值通过iLoG Cplex获取,为模型获得目标函数值时的最优值;车辆利用率=求解结果中车辆使用数/输入数据中车辆数;程序运行时间。分别绘制混合整数规划算法和启发式算法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可以看出,随着类型数的增加求解时间消耗降低,同时物品装载数也迅速减少。在实际应用中需结合实际物品特性与时间消耗、求解精度来合理设置物品的类型数。

贪婪算法的基本原理篇5

今年的4月23日,备受瞩目的2010年年度大戏,同时也是奥利弗斯通时隔23年再次倾情打造的电影《华尔街2:金钱不眠》将在垒球上映,各大杂志的预热活动搞得不亦乐乎。最近一期的《名利场》就花了大量篇幅来介绍这部重量级的新片,而其中的一组大片更是由著名摄影家安妮・莱博维茨倾力打造。

在整个世界都被金融风暴摧残得容颜憔悴的当下,该片的题材也的确“全球瞩目”。谁也不会忘记,斯通在23年前的《华尔街》中借角色盖葛说出的心声:Greedyisgood(贪婪是好东西)。这位由迈克尔道格拉斯塑造的金融大亨甚至还被2008年的《福布斯》评为“虚构人物十大首富”第四名,而他的那句口头禅似乎也成了如今金融业的一句放之四海皆准的讽刺语。

澳大利亚总理陆克文发表了题为“盖葛的孩子们”的演说,红衣主教也引用“Greedyisgood”来批判如今的自由市场已然变为了贪婪的市场;美国政府刚刚把四大投行的一把手们集中起来召开“美国金融危机调查委员会”的第一次听证会,“四巨头”(高盛、摩根大通、摩根斯坦利、美国银行)们毫无诚意和悔意的发言让人们气愤地怀疑:他们因贪婪而入场,也会因贪婪而出局吗?达沃斯会议开幕当天,法国总统萨科奇也激烈地指责:贪婪的金融巨头们要为这次危机负上最大责任!

在这样一种背景下,《华尔街2》的出炉真可谓顺时而生。而在现实与虚构的对照中,观众恐怕会生出更多感慨。

《华尔街》:腐烂的1987年

“贪婪,是引人向上的动力!”

就像马龙白兰度饰演的科里昂老爹一样,迈克尔・道格拉斯饰演的高登・盖葛是上世纪末好莱坞电影里另一个经舆的“教父”形象。道格拉斯当年的犀利眼神和黑色风衣,与马龙白兰度的臃肿沉默一起,成为美国电影史中浓墨重彩的符号。在这部名叫《华尔街》的电影中,道格拉斯塑造了一个纵横于华尔街的金融教父,坚信只有贪婪才能促进人类向上。

电影拍摄与上映的上世纪80年代,恰巧和被金融风暴肆虐的现今世界一样,是美国和所有西方国家盛极而衰的拐点。结束了二战、越战和星球大战,还登上了月球,美国人在技术狂欢中也同时迎来了资本的狂欢,只有清醒的人才能在一片纸醉金迷中嗅出腐烂的味道。于是敏感而犀利的好莱坞导演奥利弗・斯通,在1987年拍出了经典电影《华尔街》。这一年也是所有迷狂的终结,影片上映前不到两个月,华尔街遭遇了历史上著名的黑色星期一,道-琼斯指数一天狂泻508.32点,6个半小时内纽约股指损失5000亿美元。

在奥利弗-斯通的诠释里,电影主人公高登・盖葛所代表的冷血无情、只相信金钱的资本家,是金融危机的制造者与牺牲品。表面上,他是衣着光鲜、雷厉风行,符合西方一切价值观的成功商人,在曼哈顿上空俯视着这个世界,翻手为云覆手为雨,根据自己的利益得失操纵着这个国家的经济。他智慧、强硬,不择手段,有令人折服的魅力,但灵魂深处的冷漠又如永夜般黑暗。迈克尔-道格拉斯凭借对这一形象的塑造获得了一尊奥斯卡小金人。而盖葛在美国电影学会评出的“史上最伟大电影反派角色”中排名第24位。

《华尔街2》:金钱不眠

23年过去了,迈克尔‘道格拉斯已经到了要靠伟哥才能生龙活虎的年龄,而奥利弗斯通则仍然坚定不移地在和美国政府死磕。在拍摄了《华氏9・11》和《w》等话题敏感的电影之后,今年,他推出的是他从彩生涯中第一部续集电影《华尔街2:金钱不眠》。是的,在看到国家破产、银行倒闭,地球上头号发达国家都陷入深层的经济危机的时候,这个刺头导演怎么能坐得住呢?

凭借自己一流的号召力,奥利弗・斯通集合了以迈克尔・道格拉斯为首的《华尔街》部分原班人马,以及好莱坞新秀《变形金刚》男一号希安・拉博夫和《成长教育》女主角凯芮・穆里根,还有老戏骨苏珊・萨兰登一起,延续批判现实的作风,拍出了华丽丽的《华尔街2》。

在纽约的寒风中,《名利场》著名摄影师安妮・莱博维茨带着像电影剧组一样庞大的摄影团队,给《华尔街2》拍摄宣传照。透过显示器,安妮’莱博维茨能看到满头华发的迈克尔・道格拉斯穿着标志性的黑色大衣,从联邦储备银行的长阶梯上缓缓而下。他衰老而淡定,白色的围巾飘在风中,一切都很符合23年之后的盖葛的形象。经过奢华而劳累的拍摄,最终只有两张跨页照披印在了《名利场》上,一点也看不出来投资方曾经为了这个宣传照在支票上画了那么多个零。这部以讽刺金钱为主题的电影,注定要靠大把金钱堆就。筹划拍摄之初,奥利弗・斯通出于制造噱头的考虑,打算把摄制组全部拖到中国进行拍摄,后来基于经济垒球化的现实,剧组制定了飞奔于纽约、伦敦和一些新兴的亚洲城市之间进行拍摄的方案,展现出金融世界的一损俱损、一荣俱荣。

新片中,盖葛已经从当年那个兴风作浪的股市推手,变成了刚从监狱里出来的一无所有的末路英雄。当年的贪婪与无情,让他无形中逼死了自己唯一的儿子。回到2010年的纽约,盖葛直到一无所有时才理解了亲情的可贵,然而女儿这时却不肯原谅他。希安・拉博夫扮演的盖葛的未来女婿。因一心要为自己的导师报仇,而主动要求与盖葛做交易:盖葛帮助他查出是谁在风险投资的市场上害死了他的导师,他则帮助自己的未来岳父与女朋友重修父女之情。

拉博夫饰演的雅各布,和马丁・辛在《华尔街》中饰演的巴德・福克斯有一脉相承之处。他们都是在纽约金融界积极向上的年轻人,被高高在上的金钱诱惑和压迫。在上一部片子中,股票交易员巴德。福克斯在亲情和良心的感召之下检举了违规操纵股市的盖葛。相信贪婪可以清理一切,却怀疑感情的股市枭雄,最终败在了人类最朴素的情感之下。而在《华尔街2》中,拉博夫饰演的雅各布,是一个野心勃勃的年轻人,在华尔街最热门的风险投资领域做一个交易员。复仇者形象的雅各布,这次将帮助浪子回头的盖葛找回女儿的爱与信任。

高登・盖葛的孩子们

在1987年的《华尔街》中,盖葛解释了金融市场的一个潜规则:贪婪。对华尔街的金融家而言,“贪婪是好的,贪婪是对的,贪婪是有用的,贪婪可以理清一切,披荆斩棘直捣演化的精髓……贪婪激发了人类向上的动力,只有贪婪才能挽救体制失调的美国。”

贪婪算法的基本原理篇6

关键词: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

贪婪算法的基本原理篇7

关键词:直线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.

贪婪算法的基本原理篇8

策划人罪状一:浮躁

营销策划的本质是根据企业(即客户方)的营销目标,从满足消费者需求和欲望为核心出发,实施企业产品、价格、渠道、促销的设计、规划、服务和创意,最终实现个人和组织的价值交换过程。

依个人理解:策划=策略+筹划。策略为战略,筹划为战术,战术由流程和工具组成;策略决定资源方向,筹划细化执行;策略决定成败,它是寻找解决问题的出路和关键,地位至关重要;筹划是是以流程和工具为表象的、环环相扣的、系统化的解决方案,筹划能保证策略不至于成为一堆废纸;策略是成功解决问题的核心、关键,解决的是主要矛盾;策划涵盖流程、方法和工具,是对主要矛盾的进一步解剖细化进而有针对性得解决。

营销策划人每一天面对的是商海征战多年的企业家们都束手无策的难题,其工作压力和专业难度可想而知,一名合格的营销策划人,不仅需要扎实的理论功底,掌握综合知识和技能,包括经济学、行为科学、数学、统计学、心理学、社会学、生态学、商标学、广告和法律等学科,更要求营销策划人员要有敏锐的洞察能力、系统思维能力和狂热的工作热情,才能把握市场上存在的各种机会和规避市场上存在的风险,把工作做到极致。因此对策划从业者本身的知识结构、思维方式,乃至道德人品都有较高的要求。

但目前营销策划行业之浮躁之气愈演愈烈,追本溯源,策划大师们大都成名于上世纪90年代,或借助媒体资源如原××社大牌记者的背景,或借助高校资源引进某些先进理论,或弄潮于电视广告制作的风口浪尖、或在知名企业中担任市场策划,总之都是在中国市场经济还未真正启动阶段应运而生的,所谓先来者为王,借助一两个有名的的案例、几篇扑朔迷离的文章,成为大师,名利双收。可见策划界的从来就有浮躁的原罪;

受此影响,如今的策划人大都视专业积累为儿戏,读上两本书就敢自诩大师,做三年ae就想自己出书?所谓“一年土二年洋三年不识爹和娘”。笔者曾拜读某“知名大师”的关于工业品营销的专著。该大师在序言中将科特勒一阵狂批。打开正文,十之八九又都是科老的理论精髓。另外一些“只闻其声难见芳踪”的著作由于功力太差无法卒读,销售无望地基本上都只能搁家里“糊窗户”了。

策划人的浮躁体现在业务开发上更是赤裸裸,临渊羡鱼,不说归而结纲,反而赤膊上阵。面对企业客户,脸部红心不跳坐地瞎侃,比得是胆有多大,心有多黑,竭力打造自己“上知天文下知地理无所不知无所不能”的“大仙形象”,利用中小企业家们对营销知识的渴求,极尽忽悠之能事,极大损害了整个策划行业的声望。

营销人的浮躁体现在内部管理上,普遍目光短视、虚火攻心,过于重视经济利益,导致团队涣散后继乏力,其服务质量自不待言,市场调研就是走过场,头脑风暴就是咸扯淡,项目报告基本靠模板,提案不就是照着念?这样的服务只能是骗个“首付款”的一锤子买卖。不过业界靠这样的一锤子买卖活得还有声有色自我感觉良好的的“策划大师”还不在少数。可怜复可叹!

策划人罪状二:贪婪

策划人的贪婪最极端的表现就是“案例占有欲”。将市面上所有成功企业的案例都归为自己的功劳:给老家的养牛场剪过彩,就敢吹自己帮着蒙牛上的天。给老少边穷企业做过一次免费培训,就四处炫耀自己经常出入中南海。其胆也状哉!更可笑的是,说着说着竟然能自我催眠,自己都相信了。不仅相信案例是他做的,更坚信自己是天才。可谓是最诡异的情景喜剧了。

策划人的贪婪表现在客户服务上就是惯于为己之名利拿客户当枪使;不管什么企业,张口就是上央视,张口就是美国上市。诓得小业主们一愣一愣,纷纷拿出养老钱看病钱子女教育钱,砸向“海市蜃楼”,最后呢?大抵落得鸡飞蛋打一场空,还得怨恨自己执行力差运气差团队差。策划大仙们则趁机赚个盆满钵满,成功则功劳归己,不成就怪企业了。因此策划人在选择客户上是大小通吃,别说小作坊别说iBm,明美国白宫来了他都敢服务。真是上帝欲让其灭亡,先令其疯狂。

策划人的贪婪还表现在内部管理上就是对员工的“掠夺式开发”,策划公司的员工大都是20岁左右的年轻人。为什么?好忽悠罢了。竭力剥削年轻人的剩余价值的同时,狠狠打击其自信心。真正目光短浅,手段老辣。

策划人的贪婪表现在专业技能上就是对产品不讲事实竭尽吹嘘,没有重心缺乏要点,尤其不惜借恶俗广告进行炒作,透支企业未来伤害品牌形象。

策划人罪状三:虚伪

近代中国史上,风云变幻,使中国人都带有一种政治或者是政治家情结,在现今社会主义市场经济的时代,这些策划人坐井观天,显然没能完成这个转型。尤其是70后策划人极其富有“伟人情节”和“救世主情节”,动不动就“自我吹嘘”“自我涂金”,搞一些庸俗不堪的“红宝书”“批评与自我批评”“衷字舞”等。而自己“如在云端”的倒是感觉良好。

正所谓:满口仁义道德一肚子男盗女娼。这些暂时得势的策划人十分缺乏安全感,他需要有人不断夸他捧他。对于有能力有前途的员工自然是能毁则毁,不能毁则弃之。如此一来,说假话、办假事、假心假意、假情假义的假君子自然喜欢“花言巧语”、能吹会拍和见风使舵的手下。懂得吹捧的员工大都得宠受赏、青云直上;而那些说真话、办真事、实事求是、忠心耿耿的老实人,即使是德才兼备,也被视为“无开窍”、“太老实”和“不适应”,且屡遭排斥,有的甚至给“穿小鞋”。使得那些本来没有虚伪本能和怀才不遇的有识之士为了保全自己的前途与命运,有时也不得不崇拜或仿效起这“行之有效”且“神通广大”的“虚伪效应”了。

这种情形在头脑风暴会上最明显:策划大师出一个垃圾思路,众人还未听清楚,马上有人击掌叫绝。作为奖赏,大师也会夸奖叫绝者的点子也不错。双方一唱一和,都进入了高潮。可怜企业家的前途就这样定了。

贪婪算法的基本原理篇9

[关键词]博弈 任期 贪婪法 动态规划法

一、引言

从1978年开始到现在中国经济经历了举世瞩目的改革与发展,包括国有企业的改革与发展,在中共十六大会议时,而且一次强调了对引进西方现代企业制度的重要性。而论及现代企业制度,管理机制应该被赋予相当大的权重,而其发挥作用的核心则来源于具体操作上的最高领导层,也就是经理人。本文主要讨论了任期对经理人的行为影响。短期和长期内经理人往往需要采取不同的措施以达到他们自身理性的追求,诸如个人声誉以及财富,下期的个人目标等,这与计算机数学上的动态最优以及贪婪法求解非常类似,因此我们将从这两个角度出发进行分析。

二、对任期影响的博弈分析及模型构造

首先,假设我们有n种物品,并且各自拥有不同的体积和数量,那么,怎样选取物品会使得我们用这个背包有限的空间来装下质量总和最大的物品?方法之一就是贪婪法,通俗得说,是从质量体积比最大的物品开始选择,其次选择第二具有该性质的物品,直至所有剩下的物品各自的体积大得无法被容纳。仔细推导,会发现我们很少有可能让背包的空间得到充分的利用,那么余下的空间属于浪费。从而引入了我们的第二种想法,动态规划法,我们运用递归的思想来看是否能拿出最后一个物品,使得增加了剩余空间后,背包还能容纳两个更小的物品,但是总质量比拿出的那个大从而增加了背包内物品总的质量?再以此类推,便可以在多种尝试的情况种得到最优解。类比背包问题,我们轻而易举可以得到经理人的博弈分析,假设经理人就是这个放置物品的人,而企业员工以及资产则属于物品,如何选择他的员工以及资产组合才能使企业的利润得到最大?动态最优法固然是有效的,但是这却牵涉到了经理人的任期问题,倘若他在不久的将来不会继续呆在这个企业,而且他只想以短期内企业的利润来作为衡量自己声誉和能力的指标,那么最好的抉择就使贪婪法。不断的追求量的短期增长,同时带来了道德风险,并把更深难度的问题留给他的下一届。因而,我们有了如下的纳什均衡求解,如表1所示。

1、选择的决定素

企业利润:毫无疑问,理性的经济人永远是以利润排在首位的,尤其是那些企业的股东们,他们的投资永远只是利润的奴隶。当无暇顾及企业的运营时,利润便成了他们与经理人之间委托一合约的基石和激励。他们有权对经理人的继续雇佣做出判断,核心的一点便是该经理人是否能给企业带了长期的高的利润。鉴于此,经理人为了维持自己的福利,不得不把企业利润赋予最高的权重,不管他们是想继续被聘请或者是以此为阶梯更进一步。他们的职业历程中永远都不会少掉的是其对企业利润的贡献,这是他们声誉的一种象征,是他们能力的一种体现。

企业文化:中国的企业多种多样,因而没有放之四海而皆准的企业文化准则。而企业文化中却包含着某些亘古不变的真理,以人为本可以提高一个企业的凝聚力。一个好的经理人考虑企业文化是很有必要的。

企业机制:只有懂得如何去运用先进的技巧超越原有的自己,如何像田忌赛马一样去操纵市场,那么胜券将给予倾斜。一个企业,没有自己的王牌,那么它的利润有如空中楼阁,无法有个安宁的保障。宏观经济学往往会告诉一个R&D模型是怎样为经济做出贡献的,光有劳动力和物质资本的投入增加最终只带来了经济的零增长,唯有不断的研究和不断的人力资本的投人才会使得各项生产要素得到其应有的增长和回报。

2、行为抉择的分析

对企业的分析:鉴于我们要分析的重点并非任期对企业自身的影响,因而我们只从股东最单纯的委托合同中给予其效用函数,那就是在给予经理人合理报酬的约束下达到企业利润的最大化。因而,其对经理人的评价取决于利润,其他关于企业文化和企业机制都是深入观察到的。

对经理人的分析:

短期中:当经理人预期到自己只会短期内呆在同一企业时,自身利益便被赋予更高的权重,同时也有一定的政策偏向。通过利润的最大化,他们给其委托人提供了这样一个信号,他们有能力,他们让企业获利更多,他们可以被继续雇佣或者被其他更好的企业看中并被聘请。也就是分析图中的第一种情况。动态规划法无法给予股东信号来显示经理人的能力。即使隐性上来说这确实是股东追求的最佳途径。

长期中:他们总如弗里德曼的持久收入假说一样希望平滑企业的利润,做到经济中即使存在较大的系统风险,依然能够讲收入维持再原有水平上面。他们预期自己会被长久雇佣从而会努力改善企业的经营环境譬如企业文化的培养,企业机制的创新,以一个循序渐进的过程来激励企业潜力的发展,所谓精细管理风光无限,管到深处处处见金。并且随时关注竞争对手的动态并采取对应的行为抉择。这样一来,在充足的时间内企业逐渐循着其最佳动态路径行走。这种动态规划法在给经理人好的名誉的同时带来了企业各方面的效用最大化,也给了股东们充分的信号来显示经理人的能力和满足了股东委托时的最大动力需求。

中任期:其中包含着太多的不确定性因素,我们无法对经理人的权重分配做出具体预期,从而无论使在贪婪法的行为指导下还是在动态规划的方法指导下,我们都不好对经理人的思想进行假设。故这种情况下,行为遵从不定性。但是无法达到我们的纳什均衡。

三、模型的相关数据检验

为了证明我们的分析,我们将经理人任期内的平均利润增长率和其任期的长短进行了回归分析,期望得到经理人任期的最佳范围,具体见图1:

如图1可以直观得知道当任期处于短期和长期时,利润增长串总是比较高的,相反处于中间的那些时期,利润增长率较大具有太大的不确定性。鉴于本数据模型中的取样都来自于进人世界前五百强的中国企业,因此其具有一定的可比性,相当于将其他干扰项放在了基本相同的位置上。而其他的数据,鉴于企业非上市等因素无法被纳入模型范围。我们预测,当国家市场经营体制更加健全时,分析的结果将具有更强的可靠性。模型的拓展和运用:其实一个国家也可以被看成一个大的企业,从而国家领导人也毫无疑问成了所有阶段下的人,即经理人,这种情况下如何决定领导人的任期?直观上,我们何不运用两种方法下的博弈分析来做出决策呢?或许这样,我们就可以解释为什么美国的总统和中国的主席会拥有各自固定的任期了,这是对我们模型中经验分析的最好支持。

贪婪算法的基本原理篇10

古代的宗教先知们,针对人类的恶行,划分出傲慢、妒忌、暴怒、懒惰、贪婪、贪食及等七宗罪。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不相信质量保证这一套。于是,没有经过任何测试,就把自行开发的这个系统部署到数百个零售场地。在砸进去了数百万美元之后,项目的效果很差这个项目最终还是被取消,项目小组的成员随之被解散。”