轨道库入门——以Railway Station案例为例

  • 轨道库——Railway library
  • 轨道库示例——Railway Station
  • 整体结构一览
  • GoToPlatformAndBoard


轨道库——Railway library

轨道库示例——Railway Station

这是一个非常详细的抓取客流和车流的火车站模型。车站有四个站台和六辆列车。旅客通过主入口进入车站并去其中一个站台等车。旅客有提前预定好的座位,并且他们在预计车会停止的位置等车,每分钟都有车辆到达。旅客遵循先下后上的原则,下车的旅客从主入口出站。模型同时使用了AnyLogic轨道库和行人库。

anylogic引入强化学习环境 anylogic入门_经验分享

整体结构一览

从项目组成来看,一共有五个智能体,Main主程序,Passenger乘客,RailCar车厢,Train列车,GoToPlatformAndBoard前往站台上车

智能体

GoToPlatformAndBoard

Main

Passenger

RailCar

Train

m每个界面左上角的橙色图标以及整个矩形虚线框是一个【演示】-【视图区域】,之后需要比较复杂的界面显示的话,这个功能将是基础。

anylogic引入强化学习环境 anylogic入门_时间设置_02


anylogic引入强化学习环境 anylogic入门_参数类型_03

anylogic引入强化学习环境 anylogic入门_界面显示_04


上面一部分是列车行为

下面一部分是乘客行为

其中toPlatformAndBoard是一个封装的智能体,从这里可以学习到智能体调用智能体的方法和思路。
所以我们首先来看看这个内部的结构。

GoToPlatformAndBoard

anylogic引入强化学习环境 anylogic入门_经验分享_05


结构简单

enter——流程库组件,插入(已经存在的)智能体到过程流程图的特定点

waitTrain 候车——行人库组件(Ped Wait)

toCarDoor 去车门——行人库组件(toCarDoor)

最后通过智能体中的连接器(Connector)连接到最后一个端口(port)

绿色的图标是用演示中的画图工具画出来的

anylogic引入强化学习环境 anylogic入门_参数类型_06

参数名

参数类型

说明

waitArea

AreaNode<?>

waitTrain模块需要制订等候区域,等候时间设置为触发,由函数board决定,即当freeAll()时释放

doorLine

targetline

定位的是从toCarDoor指向端口的connectorr

board

函数

waitTrain.freeAll();

所以这块的运行流程很简单,外部智能体给enter输送对象

anylogic引入强化学习环境 anylogic入门_anylogic引入强化学习环境_07


selectDoor1——>离开时行为

toPlatformAndBoard1.get( uniform_discr( 0, 9 ) ).enter.take( agent );

uniform_discr(a, b)则是a到b的均匀分布