在Anylogic中,您可以通过设置运输器的速度来移动它们。但是,如果您想根据旅行时间(例如,在高峰期交通堵塞时)而非速度和距离来移动运输器,该怎么办?
可以使用以下代码示例来实现此功能:
1.首先,您需要定义一些变量:
double travelTime; //旅行时间
double distance; //距离
double speed; //速度
2.然后,在运输器的onTravelStart事件处理程序中计算旅行时间:
travelTime = distance / speed;
3.接下来,在运输器的onTravelUpdate事件处理程序中使用以下代码来更新运输器的位置:
double elapsed = time() - getTravelStartedTime(); //已过去的时间
double remaining = travelTime - elapsed; //剩余的时间
double distanceLeft = (remaining > 0) ? distance * remaining / travelTime : 0; //未行驶的距离
setPosition(getTravelStartedPosition().addVector(getTravelDestination().subtract(getTravelStartedPosition()).normalize(distance - distanceLeft))); //设置位置
4.最后,在运输器的onTravelFinish事件处理程序中更新其位置:
setPosition(getTravelDestination()); //设置位置
现在,您的运输器将根据旅行时间而非速度和距离来移动。