戴大东 吴宏杰,2* 陆 悠 李铭华 丁志平
1(苏州科技大学电子与信息工程学院 江苏 苏州215009) 2(苏州大学江苏省计算机信息处理技术重点实验室 江苏 苏州215006) 3(苏州市公安局 江苏 苏州215006)
随着汽车持有量的迅速增长,城市的中心区、商业区的“停车难”问题日趋严重[1]。“停车难”还引起了一系列的交通与城市问题,如:增加不必要的区域交通流量、造成局部拥堵、车辆停放混乱、破坏街道秩序,甚至引发交通事故,最终导致降低了人们的小康生活质量[2]。为改善或解决该问题,停车诱导云平台随之产生,优秀的诱导系统可以优化资源配置、改善交通拥堵、减轻出行负担、规范停车秩序,从而提升城市文明形象[3]。
另一方面,移动Agent技术的日益成熟,有效地简化了分布式系统的设计、实现、维护[4]。作为一种新兴的计算模式,移动Agent技术不仅支持自主及异步交互,还具有可靠性、协调性等优点,与传统计算模式相比,能改善分布式计算当中网络负载,提高通信效率,在分布式系统的设计和实时监控等方面都已进行一定程度的应用[5]。移动Agent技术已经在网络监控、流量均衡负载、异构移动政务等领域中有良好的应用效果。但至今未见在分布式多停车场诱导系统的应用研究与应用[6]。
由此,本文提出一种基于移动Agent的停车诱导云平台,将Agent在协作性、共享性、安全性方面的内在优势与云平台的开放性优势相结合,优化停车场资源配置,实现车位资源共享,改善交通。
与传统停车场系统最大的不同在于,云停车场引入了云计算技术以及物联网管理,打破了传统停车场原有的信息孤岛,真正实现了统一的系统平台管理[7]。相比较传统停车场,云停车诱导平台有如下优势:
1) 开放性:作为第三方平台可以方便接入分布式的停车场。
2) 共享性:通过云计算,能够对多个停车单位规划管理,让空闲的停车位物尽其用,避免浪费。
3) 安全性:停车诱导云平台通过系统能够实时了解停车单位状态、用户的在线情况等,方便进行管理和调控,保障安全。
本系统组成采用“云-网-端”三层架构,如图1所示。“端”就是移动Agent;“网”就是Agent的移动与通信;“云”就是多个Agent的汇总。
图1 基于移动Agent的停车诱导云平台架构图
从图1中我们可以看到停车云平台的各个层次。ParkAgent的结构层:将停车任务中的空位信息与停车对象信息进行映射,通过Agent的管理和调度进行信息分享,结构化是实现开放性的重要基础;ParkAgent的迁移层:停车对象在不同的停车区域之间迁移时,对车位资源能够进行及时的更新,方便我们对车位资源进行统一调度与协调,为共享提供基础;ParkAgent的协作层:统计各单位内部停车资源,分析用户对停车单位各个频段的使用率和实时的使用率,实时了解停车场的使用情况;ParkAgent的共享层:剩余停车资源可以在不同的停车单位之间实现共享与被共享;Park-Agent的安全是实时Agent系统在Internet上稳定、安全运行的重要保障,没有安全保障,我们停车系统的应用就无从说起。
基于Agent的停车诱导云平台需要具备高度开放性的结构,不会因为外界环境的改变而进行改变[8]。基于此,云平台首先要能自适应网络环境变化,不与外界协作模块捆绑。其次将组织控制与用户需求分离,用多个Agent协作实现停车诱导控制功能,以便适应内外相应环境的突发状况[9]。系统内部分为两种协作方式:代理模式,由用户使用系统提供的协作工具来完成相应的协作任务[10];智能模式,一种构造的自主性运作的协作。凭借停车诱导控制系统内部协调控制机制的不同,在停车诱导控制系统内提供如下一些Agent:任务Agent、资源Agent、监控Agent、调度Agent等。其中,任务Agent是整个停车诱导控制系统的中心所在,对停车进行组织与调度,接收其他任务或者外部的协作任务,在估量系统自身处理能力大小的情况下,将其中一些查询请求和任务分配给调度系统,任务Agent制定和协调系统目标,对系统内各个Agent之间进行调度。监控Agent负责系统内各功能Agent工作状态的监控[11]。调度Agent负责将任务Agent分配到协作系统或部门的任务进行调度,寻找合适的执行者来完成。在系统中,每个Agent分别对应着控制系统中的资源、协作等方面。这里,调度Agent负责停车诱导需求的网上协作,把系统内的通信协作独立起来,不与外界的协作交互。监控Agent从各个单元Agent处得到每个控制设备和停车单位的资源数据,进行整个系统工作过程的监控[12]。系统共享数据库则存储着用户的数据信息、系统操作日志以及系统工作时候的一些整体数据等,各个Agent程序所在节点还设置了相应Agent局部数据库[13]。
举个例子:一旦停车场内部出现空余的车位或者用户的车辆驶入被我们检测到,我们的监控Agent能够及时地监测到并上传至任务Agent,通过任务Agent的组织与协调,制定和调整系统任务,或者将任务委托至协作系统,通过共同协作完成对车位资源的管理。
移动Agent为获取相应资源,需迁移到多个主机上面与这些主机进行交互[14]。如:当监控Agent检测到停车场中的空位信息,或停车对象在不同的区域之间进行移动时,我们就要利用移动Agent的移动性将这些映射来的信息进行相应的调度并传达至相应的Agent。
迁移算法
Input:
Hi:需要迁移的源节点
Hi+1:目标节点
S:对Agent加密的密钥
T:用于申请ID的信任节点
MA:移动Agent
Encryp(x):使用S对x进行加密
Decode(x):使用S对x进行解码
Save(x):将x保存到Hi+1
Copy(x):将x复制到Hi+1
Move_again(x):放弃x的迁移重新开始
1:Repeat
2:Initialize()
3:for each T do
4:MA_new = MA_old + New ID
5:Encryp(MA_new)
6:end for
7:for eachMA_new in do
8:copy(MA_new)
9:ifsuccessthen
10:Save(MA_new)
11:else
12:Move_again(MA_new)
13:end if
14:for eachdo
15:Decode(MA_new)
16:end for
17:end for
18:until all agent data transfers completed
Output:MA_new,the node successful migration to Hi+1
时间复杂度:T(n)=Ο(n2);根据算法当中7—17句重复执行次数得出时间复杂度;空间复杂度:S(n)=O(1);问题本身为存储空间衡量尺度,本算法占用临时工作单元不随问题规模而改变,“就地”进行。
一般情况下,我们在移动Agent迁移开始之前无法知道访问哪些主机及访问的顺序,这些都由移动Agent根据具体情况具体分析[15]。我们可以将移动Agent的旅行计划看作一个路由表,表中的元素看作是一个二元组M(host,value)。二元组的次序对应着移动Agent在主机之间移动的顺序。移动Agent在地址为 host 的主机上运行名称为value的操作。移动Agent在主机之间的传统移动方式过于单一,只有顺序一种方式,无法描述复杂迁移,对此我们进一步扩充,包含3类迁移语义:SEQ(顺序执行每个Mi)、PAR(存在出n个子Agent并行执行Mi)、SEL(执行其中任意一个Mi)。旅行计划 Itinerary 定义为:
nnnItinerary::SEQ(Mi)|PAR(Mi)|SEL(Mi)i=1i=1i=1Mi::=Itinerary|(host,value)
定义(Agent 社会) Agent 社会是一个三元组S=〈Ag,Rel,Org〉,其中:
Ag是Agent 的有限集,即Ag={a1,a2,…,an};
Rel是所有Agent 内含的熟人关系集合,即∪a∈Ag∀b∈RA(a),RA(b,a);RA(a)表示Agenta的所有熟人集合;RA(b,a)表示Agenta和b具有熟人关系。
Org∈Ag是一个特殊的Agent,称为Agent 社会的注册Agent。
Agent为在短时间完成系统指定的目标需要和多个熟人Agent进行协作交互。为了确保规定的Agent社会具有开放性和自由性。假设:社会C外的Agent可以请求社会当中,加入的Agent须到Org进行注册记录,而离开的Agent 则不需提供任何证明,可以直接离去[16]。
在Agent社会中,Agent执行的任务有3 种状态:Task execution、task waiting和Task ready,在不同的任务状态,Agent的行为也截然不同。
当Agent 接到任务调度时,进入Task execution;Agent因为等待其Agent返回结果,而进入task waiting状态;当Agent当前任务已完成时,处于Task ready状态,等待新的任务的来临。为防止Agent在task waiting状态长时间逗留,规定一个时间限t,如果task waiting状态的持续时间超过t,则自动从task waiting状态中跳出。
ParkAgent信息共享的实现过程:
1) 查询搜索Agent通过设置的访问安全机制验证后实时获取各停车单位资源数据,再借助网络等其他方式获取关联资源数据,并将数据上传至共享数据库。
2) 用户分析Agent通过对各节点停车单位信息需求情况的获取,确定每个用户所需数据的特征,获取每个节点停车单位对信息不同的需求,建立各自的相关数据库。
3) 数据分类Agent根据不同用户需求对数据库中信息进行识别、分类,将每条信息与节点数据库中的信息进行比对,形成满足用户需求的数据组。
4) 数据传递Agent将与节点停车场兴趣知识库匹配的数据组送至各节点。
5) 用户可以根据需要到共享数据库查找信息。当用户获取数据时,用户智能代理自动把其需求的数据种类与其兴趣库中的数据比对,及时对兴趣库的记录进行更新。
信息共享平台的创建和实施,可针对节点停车场特定的信息需求进行数据的搜索、加工和传递,从而使其及时准确地获取到所需的数据;具有较强的灵活性,既可向节点停车场传递信息,也允许用户主动搜寻数据;对停车场内部资源信息分类,建立停车资源共享数据数据库,保障了用户数据的安全性;借助Agent完成数据的传输和处理,使各节点停车场间数据的共享有序、高效地进行,显著提高了系统运行效率[17]。
移动Agent系统是由移动Agent和多个为之提供服务的主机构成的,他们当中不乏一些恶意主机,这些恶意主机会试图攻击移动Agent,窃取移动Agent的重要数据,并对Agent的数据进行修改,使之异构[18]。因而,当移动Agent在潜在的恶意环境中执行任务时,对移动Agent的保护尤为重要。如果ParkAgent当中重要移动数据的机密性和完整性没有得到保障被窃取,如:窃取用户的资料,或被恶意节点篡改我们的用户信息或者系统信息,带来的后果都将是非常严重的,所以说ParkAgent的安全是实时Agent系统在Internet上稳定、安全运行的重要保障。
移动Agent工作在Internet上,Internet中的节点有可能会受到非法Agent的攻击而致使服务失效、系统崩溃等后果[19]。在移动Agent的迁移中,为安全着想,我们先将移动Agent加密再送至目标节点,在目标节点使用密钥进行解码,通过这样一个安全机制可以阻止恶意节点的攻击和破坏。
ParkAgent安全迁移过程如下:
假设:Hi为需要迁移Agent的源节点,Hi+1为迁移的目标节点。
1) 信任节点首先申请一个移动Agent送至Hi,然后为该Agent提供一个与注册用户相关联的ID(身份证明,证明合法)。
2) 根据信任节点路径寻找适合的目标节点,通知移动Agent准备迁移。
3) 当Hi+1与移动Agent达成一致后,移动Agent副本开始朝目标节点迁移。本设计采用分布事务与权限机制获得安全机制。通过安全机制保证移动Agent迁移一致性和安全。
4) 若迁移成功,自动删除申请的移动Agent副本并使密钥失效。若迁移出错则放弃迁移,转到步骤2并重新开始。
5) Agent完成信息传输。
基于上述移动Agent技术,在苏州市公安局信息部门指导下,成功研发了基于移动Agent的云平台。该平台由云端服务器提供服务,云端服务器囊括了停车场和私人用户管理模块、信息交互模块、费用支付处理模块等[20]。停车场和用户管理模块用于管理停车场、车位和用户信息;信息交互模块用于处理用户请求、管理车位信息、处理车位预约信息和处理错误信息;信息发布模块用于实时发布各单位的车位资源和诱导消息;费用支付处理模块用于主要是对支付信息进行相应的处理。
在本文当中,我们将每个Agent作为一种服务对外提供,每一个Agent都是一种服务。云平台中包含着大量的Agent并将其形成了一个Agent的资源城,根据客户的需求进行服务,将城中所有Agent进行统一的调度和管理。
例如:当用户想对目的地车位预约时,首先登入客户终端,管理Agent首先判别当前是否为新用户,如果是新用户就进行注册服务,注册时需提交用户的简单档案(为用户的简介,可以存储用户的一些特征,例如:对车位位置的需求、时间需求等),然后将这些内容存入个人的信息库。如果不是新用户,则登录系统,查看选取车位,如果和预存数据不同,则进行更新。登录成功后管理Agent从个人信息库取出用户的档案报告给协作Agent,进而将这些信息发送云端进行查找并反馈回来。
软件部分功能如下所示:
1) 车位出租与共享 停车场运维员或者私人用户使用管理模块向外界发布车位共享的消息:车位位置、收费标准等。停车场管理员或用户只有通过停车管理云平台运营商进行身份认证后,才可对外发布车位出租的信息。
2) 车位查询与预约 用户通过手机终端查找目的地附近的车位资源并选择满足要求的车位进行预约服务,停车诱导平台随后将预约信息发送至停车单位锁定车位,并将预约成功信息返还给用户。
3) 在线支付 停车诱导平台自动将车位的预约信息进行记录,硬件部分导入用户驶入和驶出的时间并根据计费的规则将费用计算出来发送给用户,用户根据发送的金额向车位所有者进行付款。
我们利用虚拟化技术把硬件资源在硬件层上建立虚拟机层,云中的Agent都安放在虚拟机中,再加上负载均衡,实现了虚拟机和Agent的动态管理,设置云控制区实时监测虚拟机和Agent的运行时状态,便于我们及时发现错误。
硬件部分主要分为如下一些模块:
1) 出入模块:将此模块放置在停车单位的出入部分,监测车辆的进入及相应的时间。本模块设计的内容主要利用射频识别技术,它是一种短距离识别技术,其可以主动地识别汽车的RFID,将车辆信息存储在系统的数据库内,可以有效地监控车辆的信息。
2) 收费控制模块:在单片机的控制下与出入模块联合作业,根据出入停车位的时间差来计算费用,并显示在LCD上。
3) LCD显示模块:显示各停车单位的车位信息:进出时间、空闲车位数。
4) 单片机控制模块:硬件系统中枢所在。
5) 操作键盘模块:我们可以通过此模块进行各种人工操作,例如转换、查询各类信息等部分。
6) 通信模块:通过此模块可与计算机进行数据传输。
硬件系统所反馈的车位资源等信息将通过Agent之间的协作、迁移、共享上传到云端,形成对本系统的信息支撑。
如图2为车位统计界面,从图中可以看到附近车位的剩余状态。同时我们还可以看到相应的价格,实现价格透明,有效避免胡乱收费的现象。当我们选择目的地时就可以查看目的地周围停车场的实时状态,然后跟从导航驶入目的地完成停车服务,以此来实现诱导的作用,避免盲目的寻找,从而解决“停车难”问题。
图2 车位统计界面
本系统通过接入停车诱导云平台,对停车场的车位资源能够进行充分的利用和共享,显著改善“停车难”的难题。我们在苏州市车流量大的分布式停车场进行了试用与推广,交通部门流量数据显示它不仅为出行者提供实时准确的车位资源,而且减少了不必要的交通流,从而促进改善城市交通拥堵情况。同时,本系统有以下两方面仍需改进,是我们后期工作与研究的重点。第一,虽然已经实现了异地空位的有效调度,但是异地空位导航时,仍旧依赖百度等第三方算法的默认路径规划,更优的解决方法是解区域空位约束下的局部路径优化问题;第二,空位资源异地调度时,虽然考虑局部流量,但还未考虑区域流量。该问题的难点在于全局与局部资源的平衡。