轨道库入门——以Railway Station案例为例
- 轨道库——Railway library
- 轨道库示例——Railway Station
- 整体结构一览
- GoToPlatformAndBoard
轨道库——Railway library
轨道库示例——Railway Station
这是一个非常详细的抓取客流和车流的火车站模型。车站有四个站台和六辆列车。旅客通过主入口进入车站并去其中一个站台等车。旅客有提前预定好的座位,并且他们在预计车会停止的位置等车,每分钟都有车辆到达。旅客遵循先下后上的原则,下车的旅客从主入口出站。模型同时使用了AnyLogic轨道库和行人库。
整体结构一览
从项目组成来看,一共有五个智能体,Main主程序,Passenger乘客,RailCar车厢,Train列车,GoToPlatformAndBoard前往站台上车
智能体 |
GoToPlatformAndBoard |
Main |
Passenger |
RailCar |
Train |
m每个界面左上角的橙色图标以及整个矩形虚线框是一个【演示】-【视图区域】,之后需要比较复杂的界面显示的话,这个功能将是基础。
上面一部分是列车行为
下面一部分是乘客行为
其中toPlatformAndBoard是一个封装的智能体,从这里可以学习到智能体调用智能体的方法和思路。
所以我们首先来看看这个内部的结构。
GoToPlatformAndBoard
结构简单
enter——流程库组件,插入(已经存在的)智能体到过程流程图的特定点
waitTrain 候车——行人库组件(Ped Wait)
toCarDoor 去车门——行人库组件(toCarDoor)
最后通过智能体中的连接器(Connector)连接到最后一个端口(port)
绿色的图标是用演示中的画图工具画出来的
参数名 | 参数类型 | 说明 |
waitArea | AreaNode<?> | waitTrain模块需要制订等候区域,等候时间设置为触发,由函数board决定,即当freeAll()时释放 |
doorLine | targetline | 定位的是从toCarDoor指向端口的connectorr |
board | 函数 | waitTrain.freeAll(); |
所以这块的运行流程很简单,外部智能体给enter输送对象
selectDoor1——>离开时行为
toPlatformAndBoard1.get( uniform_discr( 0, 9 ) ).enter.take( agent );
uniform_discr(a, b)则是a到b的均匀分布