APP下载

基于Repast平台银行网点布局优化仿真的实现*

2014-02-09

通信技术 2014年12期
关键词:服务设施网格化网点

孙 科

(中国电子科技集团公司第三十研究所,四川成都610041)

基于Repast平台银行网点布局优化仿真的实现*

孙 科

(中国电子科技集团公司第三十研究所,四川成都610041)

针对现在银行网点内部布局的不合理而出现长龙排队现象,采用基于Agent的仿真建模方法,为研究人员提供了对银行网点内部布局中客户办理各种业务过程跟踪模拟的新思路。将银行网点内部布局设计图网格化和离散化,然后把离散化的银行网点内服务台、等候区、障碍物等抽象为相应的agent与办理不同银行业务的顾客agent生成基于Repast平台的仿真银行模拟。实验和分析表明,模型可以真实地模拟客户在银行网点之间的业务办理和排队,对优化银行业务布局、提高银行服务效率有借鉴作用。

智能代理仿真 布局图网格化 有限状态机 Repast

0 引 言

银行网点的长龙排队现象已成为当前公众所关注的焦点,社会上对银行的指责和怨声不断。造成银行排长队是多方面的,归纳起来有[1]:营业厅和柜面管理不够科学、电子银行及自助机分流作用未有效发挥、大型银行责任重、银行服务意识和能力还不够强。文献[1]提出了主要的解决方案就有加强分类服务和分段分区管理,比如说根据业务的繁简和耗时情况分类和根据柜台业务的流程进行分段分区服务。然而,就具体的一个银行网点来说怎么来判断网点内部的布局是否合理,是否需要加强某一种类的服务或如何分区分段,这就需要一个针对本银行网点中内所有业务的仿真模拟。

银行排队问题[2]是一个包含多种随机因素的复杂系统,通过简单的数学模型或解析方法难以精确描述和求解,只能采用基于agent的建模与仿真(ABMS,Agent-Based Modeling and Simulaition)方法。Agent[3]的一个显著特点就是它的社会性;Agent

的应用主要是以多个Agent协作的形式出现。文献[2]虽将银行业务建立基于agent的业务模型,但对于具体的某个银行网点来说缺乏操作性和直观性。本文将提供一套从对具体银行网点布局图网格化和离散化到基于Repast平台建立布局图服务设施和客户智能体仿真模型及提出客户智能体基于网格的最短路动态规划算法的方法。最后,通过实验分析和调整相应的参数,并根据直观和数据分析来优化银行网点内部布局和改善业务分配,从而可以对现有银行网点提高服务时间、减少客户的排队时间具有指导和借鉴作用。

1 Repast仿真平台简介

REPAST(REurisive Porus Agent Simulation Toolkit)是由美国芝加哥大学的社会科学计算研究所开发的设计的仿真工具包。Repast不仅为多Agent仿真提供了大量的基础性功能,还为仿真提供了一个编程框架[5]。Repast提供了由各种“类”组成的已经封装了基于Agent仿真的一些基本方法。用户可以直接使用各“类”进行程序编译。要用Repast创建一个仿真模型,主要过程为:创建各主体类→创建空间类→创建总调度类。

1)创建主体类。在仿真系统中,根据各种主体属性定义主体类,在Repast中,没有提供明确的主体类,可以从Repast的Object类继承生成自己的主机类。

2)创建空间类。在Repast平台中,提供了一个空间类来创建各主体对象。在空间类中,根据前面定义的主体类,创建不同数目的主体对象。

3)创建总调度类。利用Repast平台,选择合适的仿真程序调度类,来控制程序的总体执行,一般可选用了Repast中SimpleModel类,调用了其中的方法有:getInitParam方法——获取初始参数值;begin方法——创建空间对象;buildDisplay和buildGraphs方法——创建显示图表;Setup方法——清除掉上次运行进创建的主体对象;preStep、step、postStep方法——运行节拍的方法,即每节拍分三步,在执行每一步分拍时,同时执行了包括所有主体对象的分步节拍方法里的函数。

当然,也可使用其实现类SimpleModelImp类。

2 基于Agent的银行网点模型

基于Agent的银行网点模型主要由二部分组成:银行网点内所有布局场景(除人外)的agent、顾客agent。因此,本章将分别介绍基于银行网点布局图网格化和离散化和基于银行中顾客的agent模型。

2.1 基于银行网点布局图网格化和离散化

布局网格化和离散化就对本银行网点的布局图中所有场景物体进行离散和抽取,为建立相应的银行布局中相应的agent打下基础。主要需要抽取的物体有银行网点内各服务设施(高柜、理财机、自助银行、书架、等候区等)和障碍物(如墙、绿化带等)。

具体的步骤:

1)确定离散化的精度。对于布局图的离散化可以以一个顾客为单位,也可以一个具体的服务设施(如高柜)来为单位。如以一个具体的服务设施为单位,就可以将整个布局图网格化在一个M行·N列的表格中。

2)抽取布局图中的元素。对于离散化后的布局图可以将布局图中的所有元素固化在一个以N为横坐标(X坐标)和以M为纵坐标(Y坐标)的二维空间。那么很容易将布局图中的各种服务设施和障碍物所有离散化网格出取出以(x1,y1),(x2,y2)形式的格子坐标。

3)实现方式。对于步骤1)和2)可以通过化图工具或者用Excel、PowerPoint中的表格都可以实现。为了抽取坐标的自动化和准确性,当然也可以编写一个适合自己的银行网点布局图网格化工具。

2.2 基于顾客agent模型

网点内所布局场景的agent已可以由上述对银行布局的网格化和离散化完成,那么在建立此模型时只需提供对场景中各种抽象的服务设施及障碍物的显示功能接口即可,具体实现详见后面的实现部分。这里主要讨论根据银行中客户的实际场景来建立顾客agent的模型。其系统结构如图1所示。

图1 基于agent的银行网点系统结构Fig.1 Agent-based banking network system

其中银行网点中顾客agent的产生可以由图2中三种方式产生,而本文则使用顾客模拟器产生。为了构造模拟器,首先,根据本银行中能为客户办理的业务类型来确定所有客户的业务类型(如:个人存款、个人取款、个人理财、个人贷款、VIP业务等),然后根据银行某个时间段(如某天上班到下班)来构造一个以当前时间为变量,μ=某时间端的平均值,σ2=(时间段均值-开始时间)/2的正态分布N(μ,σ2),当在此时间段的正态分布区区间中确定在何时产生一个顾客后,就可根据本银行中的客户类型来构造以当前客户所办的业务类型为变量,以[0,业务类型总个数]为区间的连续均匀分布U[0,业务类型总个数]。

图2 顾客agent办理业务模型Fig.2 Model of customer agent to deal with transaction

顾客agent办理业务模型是基于agent的银行网点系统结构的核心。由于顾客办理业务的类型已由上述的客户模拟器产生,那么就可确定某个顾客要去不同的服务设施办理自己的任务链表(TaskList)。然后再根据任务链表来模拟和控制在某一时刻和某一地点从事什么的业务。其模型流程如图2所示。

对于顾客根据自己的任务链表TaskList来办理每个业务(执行每一个任务)时,要考虑每个顾客agent对要去的银行网点设施(服务点)agent的访问规则,还要考虑客户在某个具体银行网点设施平均办理时间(如办理存款业务时高柜的平均服务时间和展区的客户平均体验时间等)。为了实现上模型,在仿真某一具体客户agent在办理每个业务时需要引入顾客等候队列agent和对客户agent办理具体某个业务的细分。其中,顾客等候队列agent主要用于记录某一顾客agent在去办理下一个业务中找不到办理此业务的银行网点设施的顾客(即此时顾客要去办理的业务的所有服务点全都处于忙碌中),此时应将此顾客agent的TaskList动态加入去等候区的任务,并执行去等候区任务,然后将此顾客agent加入等候队列agent,并记录此顾客要去服务区的服务类型,直到此顾客要去的服务设施空闲并且此顾客agent前面没有要去此类型服务设施的顾客agent(即此顾客agent为队头)时出队,再执行下一个任务。

此外,为了使顾客在办理某一具体业务时更有智能化和真实性,需要将顾客agent执行某一具体任务的过程分为如下过程:

…---被服台呼叫---去服务(移动过程)---到达服务点---接受服务---服务完成---…

通过将此任务的细分就可以用来统计此客户agent的属性信息,如:顾客agent完成某一项业务的时间、办完所有任务的时间、退出时间。还能根据顾客agent的网点最大停留时间及等待时间和某业务的服务时间来给顾客agent一些智能化动作(如当顾客agent在办理业务中超过了其在网点最大停留时间后就会自动推出,或当顾客agent发现等候区的其他顾客agent已占满了所有座位,此顾客agent就不进银行网点大厅来办理业务了等)。

动态监控顾客agent和服务设施agent就是更在某个时间段中监控银行网点中所有服务设施agent的利用情况和统计在等待队列agent中所有顾客agent要的所有不同类型的服务施设的等待情况。从而,可以直观地发现本银行网点中哪些业务设施利用率不足或哪些服务设施要需新增,从而为科学合理地布局本银行网点提供依据,并最小化的减少顾客的等待时间。

3 基于Repast平台模型的实现

本仿真模型是基于Repast平台上用Java语言来实现的,Repast平台是目前使用较多的基于Agent建模仿真平台之一[4]。在Repast平台上可以进行可控制和可重现的仿真试验,通过观察仿真过程中的表格、图表和图形显示的输出结果,能够深入地研究复杂系统的行为[5]。

首先,确定系统中的主机类。可以很清晰的分析中银行网点中有两个主体类:顾客agent类和网点设施agent类,可分别定义为:ClientAgent和Desk-

Agent类。另外,为了生成顾客也必须定义模拟器类ClientGenerator。

其中ClientAgent类主要是封闭顾客的基本属性信息和相应的行为及执行规则。其抽象数据类型为:DSP{

ClientAent对象:D={CAi∈ClientSet,i=1, 2,...t, t<=ClientGenerator中产生客户总数}; ClientSet=<clientId,typeServer,age,sex,xPosition, yPosition maxTolerateTime,taskList,stepinterval,freeF-acNum…>

主要基本操作P:

createTaskList():为顾客Agent分配和初始化任务链表,从而完成客户Agent所要办业务流程的初始化。实现在网点内部的各种客户可行路线,如填单区到低柜、等候区到高柜、体验区浏览路线等等

moveToSpace():为顾客Agent进入银行网点作初始化,从而启动触发其他的事件与动作。

getNumberAction():实现顾客Agent到达取号机并进行取号过程。

getCalledAction():当有空闲座位时实现对等候区的客户进行呼叫功能。

moveToWattingAction():实现顾客Agent移动到等候区并进入等待队列的功能。

toServerAction():实现顾客Agent去接受服务的过程功能。

arriveServerAction():描述顾客Agent到达服务点的过程。

isServeringAction():描述顾客Agent正在接受服务的过程。

finishServerAction():描述顾客Agent完成服务的过程。

goNextTaskAction():实现顾客Agent执行下一个任务(去下一服务点)的过程。

quiteAction():描实现顾客Agent退出的过程。

clientMove(int destX,int destY):实现顾客A向坐标为(destX,destY)目的地移动。其目的地一般指银行网点中服务点(设施)的坐标,由对银行网点布局图的离散化和网格化得到。 }

需要注意的是,对于动作的实现为了使Repast中的时钟机制应继承BasicAction类,另外,由于顾客Agent在银行网点办理业务时并不能具体确定某一时刻进行什么操作,并且减少动作之间的耦合度,可以引入有限状态机理论来解决。

此外,还要解决的一个重要问题就是顾客Agent在银行网点的移动动作。即clientMove(int destX, int destY)方法的实现,因为对于银行网点内所有场景都进行了离散化和网格化,所以此方法就是解决一个物体在一个M行.N列的网格中移动,并且每一步移动一个格子的问题。此方法可以利用经典动态规划路径解决,但是注意其动态规划下一个应去网格中的位置,应考虑下一个位置不是障碍物并且不能让顾客Agent出现走闭路的现象及其不能出现顾客Agent的下一个位置已被其他Agent占用情况等。

其中DeskAgent类用于抽象银行网点中所有服务设施(服务点)及障碍物。其抽象数据类型为DSP{

DeskAgent对象:D={DAi∈DeskSet,i=1,2,…t, t<=银行网点中所有设施总数};DeskSet=<xPosition,yPosition,typeServer,isAvailble, shapeArea,serverPoint…>

主要基本操作P:

draw(SimGraphics g) :主要用于实现Repast中Drawable的方法,从而实现将银行网点布局图中所设施和障碍物的显示功能。}

ClientGenerator类用于是产生银行网点顾客A-gent的模拟产生器。其抽象数据类型为:DSP{

ClientGenerator对象:D= {GAi∈CGSet,i= 1,2,…t, t>=1};CGSet=<Φ>}

主要操作P:

List GenData(double scale):生成以scale为比率的客户agent。

String randomType():按均匀分布成返回某时刻顾客agent的业务类型。

double normalDistribution(double x,double u, double theta):构造某时刻的顾客产生正态分布模型。}

接着,开始创建空间类BankSpace,此类用于抽象和描述银行网点中所有agent对象。其抽象数据类型为:DSP{

BankSpace对象:D={BAi∈bankSpaceSet,i =1,2,…t, t>=1};bankSpaceSet=<backGround ,agentSpace,backGroupAllItem,waitQuen…> //其中backGround和agentSpace都是Repast中Ob-

ject2DGrid类型,分别用于存储银行网点内所服务设施agent和顾客agent

主要操作P:

BankSpace(int xPosition,int yPosition):用于初始化银行网点布局,加将所有设施及顾客agent加载到银行网点中。

enWaitQuen(ClientAgent clientAgent):用于将在等候区的等待顾客agent加入等待队列。

isEmptyQuen(String waitServerType):判断要去某类型的服务点的顾客是否为空。

getFirstWaittingCs(String waitServerType):获得最先等待某类型的顾客agent。

delQuen():将等候队列中的当前顾客agent出队。}

最后,创建总调度类SimpleBankModel,并使此类继承Repast中的SimpleModelImp类,并实现其对应抽象方法等。

4 模型实际运行展示与实验分析

另一方面,按照状态表机制对动作的触发。具体思想是根据顾客Agent当前执行状态和事件查询状态按照以上建模方法和具体的实现,结合国内某大型银行网点的内部布局图为题材要素,成功的建立了基于Repast平台的银行网点顾客办理各种业务的模型。则本模拟仿真参数如下:

1)ServerTypeCount=10,即在此银行网点中可以办理10种不同的银行业务(如:个人存款、个人取款、个人贷款、个人理财…)。

2)SelfService_AVGServerTime=10、Financing-Desk_AVGServerTime=10、HighDesk_AVGServer-Time=100…,即用于定义在本银行网点中自助银行平均服务时间、理财机服务时间、高柜服务时间等。

3)Step Interval=1用于定义顾客产生移动速度

4)Scale=0.5用于设置顾客模拟器产生顾客的比率。

通过上述参数,仿真此银行网点从8:00-18:00共产生3 584个顾客,Repast控制台输出模拟结果(部分)如下所示:

1)顾客256正在往等待区第3个座位移动,坐标为(121,17)。

2)顾客256将从当前坐标(119,19)出发,移动到(121,17)。

3)顾客256按照3.2节clientMove()算法经过

(121,21),(121,20),(121,19),(121,18), (120,17),(119,16),(119,17),(119,18),(118, 17),(118,18)坐标等到(121,17)。

4)顾客256按照3.2节event()算法得知下个状态是10(将触发“自动ATM机取款“动作)。

5)顾客275正在往等待区第11个座位移动,坐标为(71,113)。

6)顾客275其他动作同上。

如上面模拟顾客256为例,清楚显示了顾客在银行中的移动轨迹坐标和办理各类银行业务,从而实现顾客Agent动作有序真实的模拟。另外,通过Repast控制输出模拟结果中发现顾客Agent的业务动作完全是无序的,如是256顾客Agent移动,然后是275顾客Agent移动,然后是195顾客Agent移动…

这些数据更能真实地反映了顾客Agent在办理高柜业务(如金融服务、自助服务、取号服务、ATM服务、存取钱助服务、VIP服务等)。

直观地用数据和图表反映了银行网点内某一时间段内所有顾客Agent办理业务的所有情况,通过设置不同的参数值可以为不同规模的银行网点进行业务仿真,如改变ServerTypeCount值就可以定义不同种类的业务个数,根据专家意见或者行业值可

修改取款时间ATM_AVGServerTime等。只有通过不断的调整仿真程序的参数,最终才能使得仿真的结果更为真实,为决策提供准确的数据支撑,为业务流程优化提供保障。此外,为了统计在银行办理各种业务的人数,利用Repast平台建立生成了图3所示的银行各业务办理中顾客Agent等待比率线性图。

图3 银行各业务办理中顾客Agent等待比率线性图Fig.3 Linearmap of customer Agentwaiting ratioin banking business process

图3线性图方便地统计某时间段内办理各种业务的顾客在等候区的等待比率图,其中(agent等待比率=某种业务等待人数/当前所有办理各种业务总人数)。图3中线条1为在等候区将去高柜办理存取业务的等候比特率,线条2表示在等候区将去金融理财柜台办理业务的等候比特率,在0.0-0.2时间段内是平稳的,并且去办理存取业务的人比金融业务的人多;但是,在0.4以后发现办理存取业务人和金融业务的都在递增,但是线条1明细粗于线条2,得知办理金融业务人比存取业务的人少。这使银行的管理人员可观察到本银行网点内的顾客行为特征来了解决本银行网点中各服务点的服务情况,并通过数据分析图来得到客户的等待各项服务信息,从而可以使得银行的管理人员方便地调整和优化银行网点布局,减少顾客的长龙排队现象,提高服务点的利用率。

5 结 语

本文基本agent的相关方法论,提出了一套基于agent的银行网点内顾客办理业务的仿真模型,通过对银行网点布局图的离散化和网格化,并在基于Repast平台建立顾客agent的业务仿真,提出以有限状态机方式来实现顾客agent的业务仿真,并提出了动态规划顾客移动算法等,最终通过实验的结果可以发现国内某大型银行网点中顾客在某时间段办理各种业务的情况,并方便管理者优化网点布局打下基础。

[1] 许良.对银行客户排队现象的深层思考[J].商业现代化,2007(523):340-341.

XU Liang.Deep Thoughts on the banks of queues[J]. Business Modernization,2007,(523):340-341.

[2] 李成杰,杨公平,尹义龙.基于agent的银行排队系统仿真[J].计算机仿真,2008,25(12):277-280.

LI Jie-cheng,YANG Gong-ping,YIN Yi-long,Simulation-based Agent Bank Queuing System[J].Computer Simulation,2008,25(12):277-280.

[3] 许新华,龚雄涛,唐胜群.一种基于Agent的通讯模型设计及其应用[J].通信技术,2010,43(02):204-206.

XU xin-hua,GONG Xiong-tao,TANG Sheng-xun.REPAST-A multi-agent Simulation Platform[J].Communications Technology,2010,43(2):204-206.

[4] 姜昌华,韩伟,胡幼华.REPAST——一Agent仿真平台[J].系统仿真学报,2006,18(08):2319-2322.

JIANG Chang-hua,HANWei,HU You-hua.REPASTA multi-agent Simulation Platform[J].Journal of System Simulation,2006,18(8):2319-2322.

[5] 陈禹.复杂适应系统(CAS)理论及其应用——由来、内容与启示[J].系统辩证学学报,2001,9(04):35-39.

CHEN Yu.Theory and Application of CAS——The Origin,Content and Inspiration[J].Journal of Systemic Dialectics,2001,9(4):35-39.

孙 科(1983—),男,硕士,工程师,主要研究方向为数据检索、仿真模拟等。

SUN Ke(1983-),male,M.Sci.,engineer,majoring in data retrieval and emulating simulation.

Simulation Realiztion of Banking Outlets Layout Optim ization based on Repast

SUN Ke
(No.30 Institute of CETC,Chengdu Sichuan 610041,China)

Aiming at the unreasonable internal layout of banking outlets and long queuing phenomenon, and by applying simulation modeling approach based on Agent,a new idea is proposed serchers to track and simulate the business process of clients in banking outlets.Firstly,the internal layout of banking outlets is gridded and discretized,then the discretized sevice counter,watting area,and obstacles are abstracted as corresponding agents,and with custormer agents dealing differentbanking business,the emulating bank simulation based on Repast platform is generated.Experimentand analysis indicate that the system could veritably simulate customers to dealbusiness and quene in banking outlets,and thismay provide some reference for upgrading banking layout and optimizing banking service efficiency.

agent-based simulation;gridding layout;finite-statemachine;Repast

TP391.9

A

1002-0802(2014)12-1409-06

10.3969/j.issn.1002-0802.2014.12.013

2014-04-29;

2014-11-11 Received date:2014-04-29;Revised date:2014-11-11

猜你喜欢

服务设施网格化网点
快递网点进村 村民有活儿干有钱赚
民政部等16部门:到2025年村级综合服务设施覆盖率超80%
基于“互联网+”的汽车养护网点服务体系
聚焦“能打胜仗”全面提升网点竞争力
基于EVA-BSC的农村银行网点绩效评价体系探析
基于实效性的社区居住服务设施统筹研究
北京三山五园绿道综合服务设施系统调查探究
论高速公路收费服务水平的提高和收费服务设施的完善
化解难题,力促环境监管网格化见实效
“网格化”环境监管的实践探索——以山东东营为例谈“网格化”环境监管开展现状及面临的主要问题