我正在尝试寻找一个条件,以根据两个GIS点之间的距离输入选择输出。我的网络中包括与人通行的电车,我希望我的人在距其房屋最近的电车站下车。电车以逆向循环运动,我想放置条件,以便该人退出时在右电车站下车。你能帮我吗?
我已经尝试过distanceByRoute,但是我不知道如何通过statechart或selectOutput为其形成条件。enter image description here
答案 0 :(得分:0)
向 Tram -Agent添加一个 Station 类型的变量 nextStation ,其中moveTo-Block始终保存当前到达的站点
向 Passenger -Agent添加一个名为 home 的 Home 类型的参数,其中在模型启动时为 Home -Agent已填充
创建一个名为 getNearestStation 的函数,其输入类型为 Passenger ,输出类型为 Station :
//initialize with first station
Station nearestStation = stations.get(0);
double distanceToNearestStation = passenger.home.distanceByRoute(nearestStation);
double currentDistance;
for(Station station:stations){
currentDistance = passenger.home.distanceByRoute(station);
//save it if you find a closer station
if( currentDistance < distanceToNearestStation){
nearestStation = station;
distanceToNearestStation = passenger.home.distanceByRoute(station);
}
}
return nearestStation;
除了拥有 Station 代理之外,您还可以在电车中的Variable nextStation和getNearestStation代码中使用 GISPoint 。
getNearestStation(agent).equals(container.nextStation)
为了减少距离计算,在每个乘客初始化时仅执行一次 getNearestStation 并将其保存在变量中,而不是在每次通过下车程序块时进行计算。 / p>
答案 1 :(得分:0)
tramCollection这是我在Main的地图上位于GIS / INode中的电车站的集合。