集装箱码头单元化仿真平台的制作方法

文档序号:6460923阅读:262来源:国知局

专利名称::集装箱码头单元化仿真平台的制作方法
技术领域
:本发明涉及集装箱码头作业管理,具体是一种集装箱码头仿真平台。
背景技术
:随着离散事件系统仿真理论的完善和计算机技术的发展,以及集装箱码头的不断发展,计算机仿真技术越来越多的应用到集装箱码头系统中。集装箱码头物流系统是一个复杂的离散事件动态系统,几乎涉及到物流运输学科里各种复杂的问题。在集装箱码头内部,有着前沿岸吊装卸作业、拖车交通运输、场吊集装箱装卸、堆场集装箱堆存、闸口拖车进出等系统互相联系,共同作业;在集装箱码头外部,与海关、船舶、铁路、公路等系统有着复杂的关系。现有的仿真软件和传统的仿真建模方法在对集装箱码头这类复杂系统建模时存在缺点和不足。表现在以下方面(1)难以解决复杂系统的仿真复杂系统的规模庞大,系统内部关系复杂,使用现有仿真软件和传统建模方法建立的模型也会变得非常复杂庞大。另外庞大的模型在运行时对计算机要求也非常高,尤其是现在的3D仿真模型,导致这样的模型难以运行。(2)建模不够快速如今的项目开发大多是以团队分工合作完成的,但是大多数仿真软件的建模都是集中在一台计算机上完成的,团队成员难以分工作业。因此建模速度比较慢。(3)模型运行方式不够灵活传统的建模方法所建立的模型只能以固定的方式运行。对于复杂的系统,有时候可能会关注系统局部的问题,这时传统的建模方法必须针对这些局部问题重新建模。这样增加了成本,降低了效率。(4)缺乏重用性传统建模方法建立的仿真模型一般都是针对于一个系统建立的,当系统有所改变或希望应用于其他系统时,这些已经建立的模型不能被重新利用。因此模型缺乏可重用性。(5)难以修改和扩展传统建模方法建立的复杂模型,由于其规模庞大,关系复杂,所以对模型的修改会变得十分困难。同时扩展模型的时候,对某处的修改可能会影响到模型的其他地方。因此本发明提出了单元化仿真建模方法,并建立了集装箱码头单元化仿真模型。
发明内容本发明的目的是提供一种运行方式灵活、速度快、成本低、易于修改和扩展的集装箱码头单元化仿真平台。为了实现上述目的,本发明集装箱码头单元化仿真平台的仿真模型包括若干单元模型,若干单元模型分别安装于不同的计算机中,所有计算机通过网络连接;各单元模型单独工作,或者通过网络进行单元模型之间信息的交互、实现各单元模型之间协同工作。进一步,上述仿真平台所包含的若干单元模型可以是拖车运输单元模型,该单元模型包括集装箱码头内部所有拖车、系统外部的拖车和交通设施,用于研究集装箱码头内部拖车运行的路线、拖车数量以及拖车调度策略对拖车使用率的影响;以及,下列三种单元^^莫型中的至少一种前沿岸吊单元模型,该单元模型包括集装箱码头的泊位、前沿、岸吊和前沿装卸拖车,用于研究装卸船配载、岸吊的调度策略和集装箱装卸顺序对装卸船作业效率的影响;场吊作业单元模型,该单元模型包括集装箱码头内部所有场吊及堆场布局,用于研究场吊调度策略、场吊数量以及堆场计划对堆场作业效率的影响;闸口作业单元模型,该单元模型包括集装箱码头闸口部分,用于研究不同时段闸口数量对闸口作业效率的影响。上述仿真平台所包含的若干单元模型也可以是拖车运输单元模型,该单元模型包括集装箱码头内部所有拖车、系统外部的拖车和交通设施,用于研究集装箱码头内部拖车运行的路线、拖车数量以及拖车调度策略对拖车使用率的影响;场吊作业单元模型,该单元模型包括集装箱码头内部所有场吊及堆场布局,用于研究场吊调度策略、场吊数量以及堆场计划对堆场作业效率的影响;堆场显示单元模型,该单元模型包括集装箱码头内部所有堆场,用于直观的显示堆场状态和发现堆场存在的问题;以及,下列两种单元模型中的至少一种前沿岸吊单元模型,该单元模型包括集装箱码头的泊位、前沿、岸吊和前沿装卸拖车,用于研究装卸船配载、岸吊的调度策略和集装箱装卸顺序对装卸船作业效率的影响;闸口作业单元模型,该单元模型包括集装箱码头闸口部分,用于研究不同时段闸口数量对闸口作业效率的影响。上述仿真平台所包含的若干单元模型还可以是前沿岸吊单元模型,该单元模型包括集装箱码头的泊位、前沿、岸吊和前沿装卸拖车,用于研究装卸船配载、岸吊的调度策略和集装箱装卸顺序对装卸船作业效率的影响;拖车运输单元模型,该单元模型包括集装箱码头内部所有拖车、系统外部的拖车和交通设施,用于研究集装箱码头内部拖车运行的路线、拖车数量以及拖车调度策略对拖车使用率的影响;场吊作业单元模型,该单元模型包括集装箱码头内部所有场吊及堆场布局,用于研究场吊调度策略、场吊数量以及堆场计划对堆场作业效率的影响;堆场显示单元模型,该单元模型包括集装箱码头内部所有堆场,用于直观的显示堆场状态和发现堆场存在的问题;以及,闸口作业单元模型,该单元模型包括集装箱码头闸口部分,用于研究不同时段闸口数量对闸口作业效率的影响。上述各单元模型均设置单元模型接口,单元模型接口包括消息格式的定义,它定义了传输消息的格式;任务翻译模块,用于根据消息格式的定义,将单元模型中的任务转换成能在网络中传输的消息、以及将来自网络的消息转换成能够被单元模型识别的任务;和,消息发送与接收模块,该模块使用网络传输技术,在单元模型接口之间进行消息的交互。本发明仿真平台将复杂的集装箱码头系统划分为若干个单元模型,这些单元模型同时在不同的计算机上运行,通过计算机网络在单元模型的接口间传递任务,构成一个分布式仿真环境,大大提高了运行速度,同时降低了对计算机性能的要求,降低了仿真平台的成本。各单元模型可以独立运行,也可以协同完成仿真作业,运行方式灵活。由于将规模庞大、关系复杂的模型化分为多个单元模型,简化了模型,使仿真平台易于修改和护展。而且这些单元模型也可以应用于其他的单元化仿真系统,实现了仿真资源的重复利用。由于各个单元模型是单独的设备,所以这些单元模型可以使用不同的仿真平台开发,因此可以实现不同仿真平台的协同作业。图1为本实施例集装箱码头单元化仿真平台的仿真模型的总体结构框图;图2为其前沿岸吊单元模型主视图,图中为两台岸吊和拖车作业时的情况;图3为其拖车运输单元模型主视图,图中为两拖车在前沿和堆场运输集装箱时的情况;图4为其场吊作业单元模型主视图,图中为场吊和拖车作业的情况;图5为其闸口作业单元模型主视图,图中为拖车在闸口通道排队时的情况;图6为其堆场显示单元模型界面;图7为其前沿岸吊单元模型的岸吊作业参数设置界面;图8为其单元模型接口的结构图;图9为消息发送与接收模块工作流程图。具体实施例方式参照图1,本实施例集装箱码头单元化仿真平台的仿真模型包括前沿岸吊单元模型1、拖车运输单元模型2、场吊作业单元模型3、堆场显示单元模型4和闸口作业单元模型5,五个单元模型分别模拟了集装箱码头的前沿岸吊装卸作业、拖车交通运输、场吊集装箱装卸、堆场集装箱堆存、闸口拖车进出五个部分的功能,它们分别安装于不同的计算机中,所有计算机通过网络连接;各单元模型单独工作,或者通过网络进行单元模型之间信息的交互、实现各单元模型之间协同工作,完成集装箱码头的仿真。单元模型之间交互的信息为一个单元模型向另一个单元模型下达的任务。图1中箭头所指方向为两个单元模型之间信息传输方向,箭头上的内容为传输的信息。如前沿岸吊单元模型1卸船时,会向拖车运输单元模型2发送"发车"的任务,拖车运输单元模型2收到之后将派拖车驶向前沿岸吊单元模型1交通的起点,到达时候向前沿岸吊单元模型1发送"车到达"的任务,前沿岸吊单元模型1在交通起点驶出拖车,岸吊完成卸船作业。上述五个单元模型中,堆场显示单元模型4只需要显示堆场中集装箱的位置与状态,不需要仿真的功能,所以该单元模型是用数据库系统(如Delphi)建立的图形化界面;其他四个单元模型都是采用仿真软件来建立的,可以在四台计算机上对四个单元模型同时进行建模,以加快建模速度,四个单元模型可以采用相同的仿真软件来建立,也可以根据模型的特点采用不同的仿真软件来建立。本实施例中前沿岸吊单元模型1、拖车运输单元模型2、场吊作业单元模型3、闸口作业单元模型5均采用Flexsim仿真软件建立,其效果图如图2-5所示,堆场显示单元;f莫型4采用Delphi数据库系统建立图形化界面,其效果图如图6所示。下面对本实施例中上述五个单元模型的设计进行详细说明1前沿岸吊单元模型11.1功能及仿真目标该单元模型用于模拟集装箱码头前沿区域内的岸吊、拖车等设备的装卸船作业,研究装卸船配载、岸吊的调度策略和集装箱装卸顺序对装卸船作业效率的影响。仿真目标包括装卸船作业时间、岸吊利用率、岸吊数量优化。1.2组成部分该单元模型主要由船舶、岸吊、拖车、交通和其他静态景物五个部分组成。它们分别包括了以下的部件(1)船舶部分a)船只船舶的外形构造,通过导入外部3D模型实现。b)船舱货位堆积集装箱的货位,在模型中用rank表现。通过rank的参数以及属性设置,控制集装箱在船舱的位置摆放、卸船时间等等。(2)岸吊部分岸吊是装卸作业的岸边操作工具,其装卸船作业由以下三部分组成a)大车负责岸吊沿泊位方向的运动。b)小车负责岸吊装卸集装箱时在垂直于泊位方向的运动,小车是建立在大车之上的。c)吊具负责竖直方向上抓取或放置集装箱的运动',吊具是建立在小车之上的。(3)拖车部分a)拖车在前沿部分完成集装箱运输的作业。b)拖车任务分配器用于对拖车分配作业任务。(4)交通部分a)结点交通路径的控制点,可以设置拖车在行进中的某些参数,包括行驶路线,停止或运行等状态的改变。b)路径拖车运行的路线。(5)静态景物部分包括陆地、海洋、天空等静态景物,通过导入外部3D模型实现,用于改善模型的美观性。1.3参数设置参数设置包括两部分,一部分是仿真模型的输入参数,如集装箱到达码头的时间分布;另一部分是仿真模型的运行参数,如拖车空载和满载的速度。单元化仿真中的运行参数和传统仿真模型基本相同,但是输入参数有两种实现方式一种是单元模型单独运行时,和传统仿真相同;另一种是各单元模型联合作业时,将其他单元模型的任务作为输入参数。运行参数一般根据系统实际参数来设置,包括以下几个方面(l)岸吊的作业参数(如图7所示)大车、小车、吊具的运行速度,作业顺序,吊具在非工作时所处的位置。(2)拖车的作业参数空载的运行速度,满载的运行速度。(3)交通参数路径设置,前沿到堆场的路径距离。输入参数包括(1)卸船操作中船舶上集装箱到达时间分布因为此处不存在和其他单元模型的任务交互,所以独立运行和联合运行时使用相同的设置方法使用历史数据或者根据历史数据拟和的分布函数。(2)装船操作中从堆场到达的集装箱时间分布单独运行时,使用历史数据或者根据历史数据拟和的分布函数;联合运行时,在收到拖车运输单元模型的"车到达"任务时生成装船集装箱。2拖车运输单元模型22.l功能及仿真目标该单元模型用于模拟集装箱码头内部拖车的运行情况,考察不同的调度策略对拖车作业效率的影响。仿真目标包括拖车作业周期、拖车利用率、拖车数量优化。2.2组成部分该单元模型主要由拖车、交通、集装箱存放区和静态景物四个部分组成。它们分别包括了以下的部件(1)拖车部分a)拖车在前沿、堆场以及闸口之间完成集装箱运输的作业。b)拖车任务分配器用于对拖车分配作业任务,可以在此设置不同的拖车调度策略。(2)交通部分a)结点交通路径的控制点,可以设置拖车在行进中的某些参数,包括行驶路线,停止或运行等状态的改变。b)路径拖车运行的路线。(3)集装箱存放区拖车运输单元模型中的船舶、堆场中不存放全部的集装箱,只是根据实际模型需要,在船舶、堆场的位置存放一些临时的集装箱。这些存放集装箱的实体为Rack或Queue。(4)静态景物部分包括船舶、陆地、海洋、天空等静态景物,通过导入外部3D模型实现,用于改善模型的美观性。2.3参数设置运行参数一般根据系统实际参数来设置,包括以下几个方面(1)拖车的作业参数空载的运行速度,满载的运行速度。(2)交通参数路径设置,前沿到堆场的路径距离。(3)拖车作业时间拖车在前沿作业时间,拖车在堆场作业时间,拖车在闸口作业时间。单独运行时,以上拖车作业时间使用历史数据或者根据历史数据拟和的分布函数;联合运行时,拖车到达指定位置自动停止,再收到相应单元模型发送的任务时继续作业。输入参数包括(1)前沿集装箱到达时间分布指前沿船舶卸船的集装箱。单独运行时,使用历史数据或者根据历史数据拟和的分布函数;联合运行时,在收到前沿岸吊单元模型的"车离开"任务时生成卸船集装箱。(2)堆场集装箱到达时间分布指堆场提箱、装船或倒箱的集装箱。单独运行时,使用历史数据或者根据历史数据拟和的分布函数;联合运行时,在收到场吊作业单元模型的"车离开"任务时生成提箱、装船或倒箱的集装箱。(3)闸口集装箱到达时间分布指闸口进堆场的集装箱。单独运行时,使用历史数据或者根据历史数据拟和的分布函数;联合运行时,在收到闸口作业单元模型的"车到达,,任务时生成进堆场的集装箱。3场吊作业单元模型33.1功能及仿真目标该单元模型用于模拟集装箱码头堆场区域内的场吊、拖车等设备的装卸集装箱作业运行情况,考察不同的场吊调度策略、堆场计划对场吊利用率和集装箱装卸效率的影响。仿真目标包括集装箱装卸时间、场吊的利用率、场吊数量优化。3.2组成部分该单元模型主要由场吊、堆场、拖车、交通和其他静态景物五个部分组成。它们分别包括了以下的部件(1)场吊部分场吊是堆场内集装箱装卸的主要设备,其装卸作业由以下三部分组成a)大车负责平行堆场方向的运动,可以3争堆场运动。b)小车负责场吊装卸集装箱时在垂直于堆场方向的运动,小车是建立在大车之上的。c)吊具负责竖直方向上抓取或放置集装箱的运动,吊具是建立在小车之上的。(2)堆场部分堆积集装箱的货位,在模型中用rank表现。但堆场中不存放全部的集装箱,只起到暂存和对场吊作业位置的标识的作用。(3)拖车部分a)拖车在堆场部分完成集装箱运输的作业。b)拖车任务分配器用于对拖车分配作业任务。(4)交通部分a)结点交通路径的控制点,可以设置拖车在行进中的某些参数,包括行驶路线,停止或运行等状态的改变。b)路径拖车运行的路线。(5)静态景物部分包括陆地、海洋、天空等静态景物,通过导入外部3D模型实现,用于改善模型的美观性。3.3参数设置运行参数一般根据系统实际参数来设置,包括以下几个方面(1)场吊的作业参数大车、小车、吊具的运行速度,作业顺序,吊具在非工作时所处的位置。(2)拖车的作业参数空载的运行速度,满载的运行速度。(3)交通参数路径设置,堆场到闸口、前沿的路径距离。输入参数包括(1)收箱到达时间分布指前沿卸船、闸口进入和其他堆场倒箱的集装箱。单独运行时,使用历史数据或者根据历史数据拟和的分布函数;联合运行时,在收到拖车运输单元模型的"车到达"任务时生成收箱集装箱。(2)提箱到达时间分布指场吊从堆场抓取的集装箱。单独运行时,使用历史数据或者根据历史数据拟和的分布函数;联合运行时,在收到堆场显示单元模型的"出货,'任务时在堆场中生成提箱集装箱。4堆场显示单元模型4该单元模型用于显示堆场内集装箱的分布和状态,使用户可以直观的观察到堆场情况。因此该单元模型不是用于仿真,在开发中没用使用Flexsim,而是使用Delphi开发图形化界面,结合后台数据库来实现。该单元模型具有三种视图,分别为沿堆场X、Y、Z轴的截面,用户可以通过界面上的单选框来切换视图。在每一种视图用户可以看到指定堆场的指定位置的截面情况。视图中分为5个带有坐标的区域,代表了堆场的截面。这些区域是由按坐标排列的方框组成的,区域的下方有参数设置输入框,用户可以调整该区域显示的堆场和位置。区域中以带有颜色的方块代表集装箱,不同的颜色代表了不同的状态,如蓝色代表"EMPTYOUT"即提空箱,黄色代表"FULLOUT"即提重箱等等。用户通过集装箱的颜色可以直观的了解到堆场所处的状态。实现该单元模型功能的原理比较简单,后台数据库(SQLServer)记录了堆场中集装箱的位置和状态,程序通过扫描后台数据库表,就可以根据数据库记录,将界面中相应位置的方框改变为集装箱状态所代表的颜色。表1为堆场显示单元模型后台数据库表示例。<table>tableseeoriginaldocumentpage12</column></row><table>仿真模型运行之前,堆场中一般存有一部分集装箱,因此堆场显示单元模型的数据需要进行初始化,代表系统运行之前存在的集装箱。该初始化数据可以使用港口已有数据,或者使用用户自己定义的数据。不过该初始化数据必须要与指定的堆场计划相匹配。5闸口作业单元模型55.1功能及仿真目标该单元模型用于模拟不同时段闸口数量对闸口作业效率的影响。仿真目标包括拖车平均排队长度、拖车平均排队时间、闸口通道数量优化。5.2组成部分该单元模型主要由闸口通道、拖车、交通和其他静态景物五个部分组成。它们分别包括了以下的部件(1)闸口通道部分由处理器组成,以处理item时间模拟拖车通过闸口的时间。(2)拖车部分a)拖车在闸口部分完成集装箱运输,并在闸口通道排队。b)拖车任务分配器用于对拖车分配作业任务。(3)交通部分a)结点交通路径的控制点,可以设置拖车在行进中的某些参数,包括行驶路线,停止或运行等状态的改变。其中第一个节点(离堆场一侧最远的节点)为闸口交通起点,最后一个(离堆场一侧最近的节点)为闸口交通终点。b)路径拖车运行的路线。(4)静态景物部分包括陆地、天空等静态景物,通过导入外部3D模型实现,用于改善模型的美观性。5.3参数设置运行参数一般根据系统实际参数来设置,包括以下几个方面(1)闸口通道检查时间进入闸口时的检查时间,离开闸口时的纟企查时间。(2)拖车的作业参数空载的运行速度,满载的运行速度。(3)交通参数路径设置,闸口到堆场的路径距离。输入参数包括(1)外拖到达闸口的时间分布因为此处不存在和其他单元模型的任务交互,所以独立运行和联合运行时使用相同的设置方法使用历史数据或者根据历史数据拟和的分布函数。(2)外拖在堆场作业时间的分布单独运行时,使用历史数据或者根据历史数据拟和的分布函数;联合运行时,在收到拖车运输单元模型的"车离开"任务时表示外拖在堆场作业时间到达。上述各单元模型均设有单元模型接口,定义了统一的数据格式,使这些单元模型可以交互数据,达到协同工作的目的。单元模型接口承担着数据传输、信息翻译、仿真时间控制、单元模型动作协调等作用,是实现单元化仿真的至关重要的因素。参照图8,单元模型接口包括消息格式的定义,它定义了传输消息的格式;任务翻译模块,用于根据消息格式的定义,将单元模型中的任务转换成能在网络中传输的消息、以及将来自网络的消息转换成能够被单元模型识别的任务;和,消息发送与接收模块,该模块使用特定的网络传输技术,在单元模型接口之间进行消息的交互。本实施例中采用Sockets通讯技术进行单元模型接口设计。Sockets通讯技术可以方便的在局域网内的两台计算机之间进行数据通讯,而且Flexsim对Sockets通讯技术有较好的支持。下面对本实施例中单元模型接口的设计作详细说明1消息格式的定义Sockets通讯技术发送是使用ASCII编码的字符串,我们可以用特殊的符号把一段字符串隔开,赋予不同字段不同的含义。本系统中釆用五段字符串表示一个消息,用逗号作为分隔符,最后一个字符为".",例如"qc-ts,ta,10234,1,0.",其中每个字符串为一个字段。消息的第一个字段表明了发送和接收消息的单元模型。因为同一个单元模型可能同时接收到多个单元模型发送的消息,所以在消息中注明发送方和接收方有利于对消息的处理和验证。消息的第二个字段指明了任务的类型,即用于区分两个单元模型间交互的不同任务,对于不同任务类型的消息,任务翻译单元模型会有不同的处理。需要指出的是,识别任务格式的时候,不能只看任务类型,还需要看发送与接收单元模型。因为不同单元模型间发送和接收的消息,即使是相同类型,根据实际需求,其格式也是可以有变化的。消息的后三个字段为任务的参数,即传递的数据。不同类型的任务需要的参数的数量也有所不同,本系统消息格式定义过程中,需要的参数数量的最大值为3。因此为了格式的统一,将参数的字段定义为3个。参数不足3个的任务,不足部分用"0"补齐。表2列出了前沿岸吊单元模型和拖车运输单元模型之间的消息格式。表中双线间的两行为一组,第一行为消息的具体内容,第二行为对该消息各个字段的解释。表2消息格式的定义<table>tableseeoriginaldocumentpage14</column></row><table>2任务翻译模块Flexsim中的事件是通过触发器来触发的,大部分的实体都具有触发器。比如Rack具有"0nEntry"、"0nExit"等触发器。Flexsira基本上每个实体都有一个"OnMessage"触发器,即实体收到消息时执行的触发器。与该触发器对应,有一条sendmessage命令用于向某实体发送消息,格式为sendmessage(objtoobject,objfromobject,[numpari,numpar2,numpar3])本接口中的任务翻i奪才莫块代码就存在于一个名为"socketcontroller"实体(通信控制实体)的OnMessage触发器里。当模型需要向其他单元模型发送任务时,执行sendmessage命令向"socketcontroller"实体发送消息,消息的第一个参凄丈(#为首参数)用于区分任务类型,其余的两个参数为任务使用的参数。比如,命令sendmessage(socketcontroller,current,7,tonum(loaditem),O)表示是从当前实体向"socketcontroller"实体发送消息,消息的类型为"7",参数为某集装箱的代码。"socketcontroller"实体收到这条消息后就会执行触发器内的代码,代码是由一系列的If语句组成,用于判断收到消息的任务类型,即根据消息的第一个参数的数值,执行不同的代码。因此在该模块设计时就需要对该参数值的含义进行定义。比如,拖车模块中首参数值为"7"对应着ts发向qc的车到达任务。"socketcontroller"实体OnMessage触发器中将该任务请求转换为字符串的代码如下if(msgparam(1)==7)〃sendasocketmessagetoresumethestoppedobjectfsnode*useditem=tonode(ms,ram(2)),stringsendstr;stringqc-itemid=numtostri「ig{getlabelnum(iJseditem,"qc-itemid"),Ci,Ci>;stringts-tid=riumtostring(getlabelnurn(iJseditem,''ts-tid''),Ci,Ci);sendstr="ts-qc,"+"t;3,"+qc-itemid+","十ts-tid+".";上述代码中,最后的"sendstr"就是可以通过sockets发送的消息字符串。任务翻译模块中将任务翻译为字符串部分就是由一系列这样的if判断语句组成,当然其数量要根据该模块发送的任务种类决定。可以将以上过程归纳为以下步骤1.定义Message首参数含义,建立与任务类型的对应关系;2.为每一首参数建立以首参数值为判断条件的If语句,并编写与首参数相对应的任务翻译代码,置于通信控制实体的OnMessage触发器中;3.模型在需要发送任务请求的部分执行sendmessage命令,使用和该任务类型对应的首参数值,并将必要的任务参数作为第二、第三参数;4.通信控制实体的OnMessage触发器被触发,执行相应的If语句,得到转换后的字符串。-任务翻译模块不仅需要将发送给其他单元模型的任务转换为字符串,还需要将收到的字符串按照消息格式转换为单元模型可以识别的任务。该过程与之上步骤大同小异,只是顺序不同。首先取得消息字符串各个字段的值,可以通过sscanf语句来实现。该语句将字符串的六个字段分别存放于变量sl至s6中;然后通过一系列的If判断语句,执行符合sl和s2的值的操作。该If语句对应了sl和s2判定的任务类型,并按照该任务类型的格式将之后的参数赋予不同的变量。最后通过sendmessage命令将该任务发送给相应的实体,执行该任务指定的操作。3消息发送与接收模块消息发送与接收模块用于在单元模型间建立sockets连接,并通过该连接发送和接收sockets消息。Sockets采用了client/server的结构,即在两个相邻单元才莫型中,一个单元才莫型作为server,另一个作为client。一个server可以有多个c1ient,同时每个client到server可以有多个连j妄。可用的sockets类型有以下两种(1)流式sockets:流式sockets一是供没有记录边界的凄t据流,即字节流。字节流能确l呆以正确的顺序无重复地;波送达。(2)数据文报sockets:数据文报sockets支持面向记录的数据流,但不能确保能被送达,也无法确保按照发送顺序或不重复。本实施例釆用了流式sockets模式作为接口技术,基于TCP/IP协议。虽然一个server-c1ient的连接可以同时发送和接收数据,但为了使代码编写方便和逻辑更加清晰,在每两个相邻单元模型间建立2个client连接,分別用于发送和接收数据。另外sockets可以处于"阻塞模式,,或"无阻塞模式"。处于阻塞(或同步)模式时,sockets的函凄t直到可以完成自己的才喿作时才返回。这称为"阻塞",因为函数被调用的sockets在调用返回前无法执行任何操作——它被阻塞了。如果处于无阻塞模式(异步操作),调用会立即返回。从仿真模型运行的流畅性出发,本实施例采用了无阻塞式。经过测试发现,如果使用阻塞式Flexsim仿真运行会因为等待而暂时停止。参照图9,消息发送与接收模块的工作过程包括以下步骤1.建立socketsserver理论上socketsserver可以建立于任何一个单元模型上,但从实际系统中来看,将server建立在接口较多的单元模型上,可以减少server的数量,因此本实施例将socketsserver建立在^妄口最多的拖车运输单元才莫型2上。另外由于堆场显示单元模型4与拖车运输单元模型2没有接口,所以在堆场显示单元模型4建立一个server,场吊作业单元模型3作为其client。接口的消息接收与发送模块也是存放于名为"socketcontroller"实体(通信控制实体)的OnMessage触发器里,它的触发条件是收到的Message的首参数msgparam(1)值为T,建立server的代码如下if(msgparam(1)==1)健立server{〃以下为server的建立过程socketinit();〃sockets初始化serverclosemain();〃删除现有server和连接intserverport=getlabelnum(current,"serverport");〃获得端口号,存放于本实体名为serverport的标签中intserver=servercreatemain(serverport);〃在指定端n创建serverSOCKET—CHECK(server,"Errorcreatingmainserver")〃检査成功与否,失败则警告sendmessage(current,current,5,0,0);〃server创建成丄力,丌始等待连接循环"socketcontroller"实体的0nReset触发器在模型每次Reset的时候都会被触发,向自己发送消息。首参数值为1,从而触发该实体的OnMessage触发器,建立S6rv6r。2.server端监听端口,等4寺client的连孑妄server建立成功后,开始等待来自client连接的循环进程。由于每个client有两个连接,循环进程相应也存在两段。第一段用于建立接收消息的连接,第二段用于建立发送消息的连4妄。函凄tserveraccept是基于WindowsAPI的Flexsim函凄丈,采用非阻塞的模式。由于釆用了非阻塞式sockets连^妾方式,server端监听端口,等;f寺client的连接的循环进程,实际上是以2个时间单位为周期的server端口扫描进程。2时间单位是2个仿真钟的计时单位,如果仿真钟和实际时钟速度一致,则为2秒,如果仿真钟的速度是实际时间的5倍,则为0.4秒。3.建立client,并与server建立连接Client的建立和server的建立类似,都是在才莫型中名为"socketcontroller"实体.的OnMessage触发器里实现。模型重置的时候向该模块发送首参数为1的消息,触发建立client代码。主要代码如下stringhostname=getlabelstr(current,"hostname");〃定义月艮务器名禾尔intdientport=getlabelnum(current,"clientport");〃定义端口,这两个数据存放于该实体的"'hostname,,禾U"dientport"标签中inttempi=clientconnect(client1,apchar(hostname),clientport);〃与server建i/.连接1SOCKET—CHECK(temp1,"Errorconnectingclient1");〃检杳成功与否,失败则警告4.使用两个连接接收和发送消息两个客户端的连接建立之后,服务器立刻进入任务接收扫描进程和状态发送就绪状态。下面为任务扫描进程的设计。函数serverreceive和serversend是基于WindowsAPI的Flexsim函数,采用了非阻塞的模式。使用这两个函数可以从指定连接接收和发送数据。client的消息发送与接收与server相同,只是注意使用clientl发送消息,用client2接收消息。本仿真平台是在单元模型接口的作用下,将全部的单元模型构成一个完整的分布式仿真模型。下面从拖车运输单元模型2和其接口如何完成拖车运输单元模型2和前沿岸吊单元模型l之间的三个任务"请求发车"、"车到达"、"车离开"的角度来说明接口与单元模型的整合方法第一个任务是前沿岸吊单元模型1发向拖车运输单元模型2的"请求发车"任务,任务字符串如下qc-ts,unload,5,110784648,54383.其中参数的意义分别为前沿岸吊单元模型1中作业的拖车编号为5,作业集装箱编码为110784648,拖车需要将集装箱运至堆场位置为54383。接口收到该任务,任务翻译模块将执行对应该任务类型的代码,该代码将在名为"itemcreater"的实体创建一个集装箱,并在该集装箱上创建3个标签,分别存放拖车编号、集装箱编码和堆场位置。Itemcreater为拖车运输单元模型2中存放船舶到达集装箱的实体,其类型为Queue。当拖车运输单元模型2单独运行时,该实体接收与之相连的source(Flexsim中用于生成临时实体的生成器)创建的集装箱。当联合作业时,该source被关闭,Itemcreater中的集装箱通过以上方式来生成。因此对于拖车运输单元模型2,通过传递任务生成的集装箱和通过source生成的集装箱,功能上完全一样,都可以驱动拖车任务分配器为拖车生成任务序列,使拖车驶来装载集装箱。简单来说,"请求发车"任务是通过创建用于驱动拖车装载动作的集装箱来实现的。当拖车运行到前沿交通起点BottomRight实体(类型为网络结点)时,该实体的0nArrival触发器被触发,该触发器执行stopobject指令使拖车停下来,并向socketcontroller实体发送首参数为7的消息,接口向前沿岸吊单元模型1发送"车到达"任务。前沿岸吊单元模型1收到该任务后,将激活停留在前沿交通起点编号为"5"的拖车,岸吊将集装箱卸载在该拖车上之后,拖车到达前沿交通终点后,向拖车运输单元模型2发送"车离开"的任务。该任务只有一个参数,即拖车运输单元模型2中作业的拖车编号,接口收到该任务后,使用resumeobject指令恢复该拖车的动作,同时itemcreater中的集装箱跳至拖车上,拖车并跳至前沿交通终点,和前沿岸吊单元模型1同步完成在前沿的作业。"车到达"和"车离开"两个任务,系统是通过控制指定拖车的动作来使两部拖车在动作上达到前后衔接。任务中传递的参数是为了告诉系统有哪些参与作业的设备,或查询这些信息.的方法。本集装箱码头单元化仿真平台运行方式灵活,根据需要可以有以下几种运行方式1、单元模型独立运行,对集装箱码头系统的局部进行研究。'上述单元化仿真模型中的每个单元模型都是一个完整的仿真系统,通过将某个单元模型与其他单元模型交换的部分用随机参数替换,就可以独立运行该单元模型,完成该单元模型的仿真目标。单元模型是单元化仿真中的基本单位,使用这些单元模型独立运行以解决局部问题,可以减少系统运行的规模,提高仿真效率。2、组合模型联合运行组合模型是指由两个或多个相邻的单元模型组成的仿真模型。根据仿真的具体要求,用户可以对单元模型进行不同的组合,通过单元模型接口组成组合模型,以这种联合运行的方式完成多种仿真目标。组合模型主要用于解决较复杂或规模较大的仿真问题,可以用于研究系统间各部分的关系。3、系统模型整体运行系统模型指所有单元模型组成的最大规模的仿真模型。系统模型是组合模型的一个特例,它主要用来对系统整体进行研究。上述实施例仅是本发明的一种实施方式,本发明集装箱码头单元化仿真平台所包含的若干单元模型也可以是拖车运输单元模型2,该单元模型包括集装箱码头内部所有拖车、系统外部的拖车和交通设施,用于研究集装箱码头内部拖车运行的路线、拖车数量以及拖车调度策略对拖车使用率的影响;以及,下列三种单元模型中的至少一种前沿岸吊单元模型l,该单元模型包括集装箱码头的泊位、前沿、岸吊和前沿装卸拖车,用于研究装卸船配载、岸吊的调度策略和集装箱装卸顺序对装卸船作业效率的影响;场吊作业单元模型3,该单元模型包括集装箱码头内部所有场吊及堆场布局,用于研究场吊调度策略、场吊数量以及堆场计划对堆场作业效率的影响;闸口作业单元模型5,该单元模型包括集装箱码头闸口部分,用于研究不同时段闸口数量对闸口作业效率的影响。本发明集装箱码头单元化仿真平台所包含的若干单元模型还可以是拖车运输单元模型2,该单元模型包括集装箱码头内部所有拖车、系统外部的拖车和交通设施,用于研究集装箱码头内部拖车运行的路线、拖车数量以及拖车调度策略对拖车使用率的影响;场吊作业单元模型3,该单元模型包括集装箱码头内部所有场吊及堆场布局,用于研究场吊调度策略、场吊数量以及堆场计划对堆场作业效率的影响;堆场显示单元模型4,该单元模型包括集装箱码头内部所有堆场,用于直观的显示堆场状态和发现堆场存在的问题;以及,下列两种单元模型中的至少一种前沿岸吊单元模型l,该单元模型包括集装箱码头的泊位、前沿、岸吊和前沿装卸拖车,用于研究装卸船配载、岸吊的调度策略和集装箱装卸顺序对装卸船作业效率的影响;闸口作业单元模型5,该单元模型包括集装箱码头闸口部分,用于研究不同时段闸口数量对闸口作业效率的影响。本发明集装箱码头单元化仿真平台的各单元模型还可以是根据特定集装箱码头的特点以及客户的需求化分的单元模型。权利要求1、一种集装箱码头单元化仿真平台,其特征在于它的仿真模型包括若干单元模型,若干单元模型分别安装于不同的计算机中,所有计算机通过网络连接;各单元模型单独工作,或者通过网络进行单元模型之间信息的交互、实现各单元模型之间协同工作。2、根据权利要求1所述的仿真平台,其特征在于它所包含的若干单元模型包括拖车运输单元模型,该单元模型包括集装箱码头内部所有拖车、系统外部的拖车和交通设施,用于研究集装箱码头内部拖车运行的路线、拖车数量以及拖车调度策略对拖车使用率的影响;以及,下列三种单元模型中的至少一种前沿岸吊单元模型,该单元模型包括集装箱码头的泊位、前沿、岸吊和前沿装卸拖车,用于研究装卸船配载、岸吊的调度策略和集装箱装卸顺序对装卸船作业效率的影响;场吊作业单元模型,该单元模型包括集装箱码头内部所有场吊及堆场布局,用于研究场吊调度策略、场吊数量以及堆场计划对堆场作业效率的影响;闸口作业单元模型,该单元模型包括集装箱码头闸口部分,用于研究不同时段闸口数量对闸口作业效率的影响。3、根据权利要求1所述的仿真平台,其特征在于它所包含的若干单元模型包括拖车运输单元模型,该单元模型包括集装箱码头内部所有拖车、系统外部的拖车和交通设施,用于研究集装箱码头内部拖车运行的路线、拖车数量以及拖车调度策略对拖车使用率的影响;场吊作业单元模型,该单元模型包括集装箱码头内部所有场吊及堆场布局,用于研究场吊调度策略、场吊数量以及堆场计划对堆场作业效率的影响;堆场显示单元模型,该单元模型包括集装箱码头内部所有堆场,用于直观的显示堆场状态和发现堆场存在的问题;以及,下列两种单元模型中的至少一种前沿岸吊单元模型,该单元模型包括集装箱码头的泊位、前沿、岸吊和前沿装卸拖车,用于研究装卸船配载、岸吊的调度策略和集装箱装卸顺序对装卸船作业效率的影响;闸口作业单元模型,该单元模型包括集装箱码头闸口部分,用于研究不同时段闸口数量对闸口作业效率的影响。4、根据权利要求1所述的仿真平台,其特征在于它所包含的若干单元模型包括前沿岸吊单元模型,该单元模型包括集装箱码头的泊位、前沿、岸吊和前沿装卸拖车,用于研究装卸船配载、岸吊的调度策略和集装箱装卸顺序对装卸船作业效率的影响;拖车运输单元模型,该单元模型包括集装箱码头内部所有拖车、系统外部的拖车和交通设施,用于研究集装箱码头内部拖车运行的路线、拖车数量以及拖车调度策略对拖车使用率的影响;场吊作业单元模型,该单元模型包括集装箱码头内部所有场吊及堆场布局,用于研究场吊调度策略、场吊数量以及堆场计划对堆场作业效率的影响;堆场显示单元模型,该单元模型包括集装箱码头内部所有堆场,用于直观的显示堆场状态和发现堆场存在的问题;以及,闸口作业单元模型,该单元模型包括集装箱码头闸口部分,用于研究不同时段闸口数量对闸口作业效率的影响。5、根据权利要求1-4任一项所述的仿真平台,其特征在于,所述各单元模型均设有单元模型接口,该单元模型接口包括消息格式的定义,它定义了传输消息的格式;任务翻译模块,用于根据消息格式的定义,将单元模型中的任务转换成能在网络中传输的消息、以及将来自网络的消息转换成能够被单元模型识别的任务;和,消息发送与接收模块,该模块使用网络传输技术,在单元模型接口之间进行消息的交互。6、根据权利要求5所述的仿真平台,其特征在于所述消息发送与接收模块采用sockets通讯技术,它通过在单元模型间建立client/server结构的sockets连接来发送和接收消息,实现单元模型之间消息的交互。7、根据权利要求6所述的仿真平台,其特征在于所述消息发送与接收模块采用无阻塞、流式sockets通讯模式,采用TCP/IP协议,它在每两个相邻单元模型间建立2个c1ient连接,分别用于发送和接收消息。8、根据权利要求6所述的仿真平台,其特征在于单元模型之间交互的信息为一个单元模型向另一个单元模型下达的任务。9、根据权利要求6所述的仿真平台,其特征在于所述单元模型接口的消息格式为每个消息用五段字符串表示,用逗号作为分隔符,最后一个字符为".",每个字符串为一个字段,第一个字段表明了发送和接收消息的单元模型,第二个字段指明了任务的类型,后三个字段为任务的参数。全文摘要一种集装箱码头单元化仿真平台,其仿真模型包括若干单元模型,若干单元模型分别安装于不同的计算机中,所有计算机通过网络连接;各单元模型单独工作,或者通过网络进行单元模型之间信息的交互、实现各单元模型之间协同工作。本仿真平台将复杂的集装箱码头系统划分为若干个单元模型,这些单元模型同时在不同的计算机上运行,通过计算机网络在单元模型的接口间传递任务,构成一个分布式仿真环境,大大提高了运行速度,同时降低了对计算机性能的要求,降低了仿真平台的成本。各单元模型可以独立运行,也可以协同完成仿真作业,运行方式灵活。它将规模庞大、关系复杂的模型化分为多个单元模型,简化了模型,使仿真平台易于修改和护展。文档编号G06F17/50GK101315646SQ20081006759公开日2008年12月3日申请日期2008年6月6日优先权日2008年6月6日发明者刘会强,张晓萍,郑爱静,旻陆申请人:清华大学深圳研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1