Rinsim:添加除Parcel,Depot或Vehicle之外的另一个PDPObject

时间:2018-05-15 07:10:12

标签: java rinsim

我们想要添加一个ConnectionAgent来监控与PDPRoadModel的某个连接,以支持预订。但是,这些ConnectionAgent具有CommDevice个,这需要一个位置才能有用,这意味着设备必须是PDPObject

如果我们将它们实现为Vehicle,它们可能会导致与现有车辆的碰撞,我们仍然希望模拟碰撞,所以这是不可能的。如果我们将它们实现为Parcel s,它们会显示在网格上,它会覆盖实际的Parcel,这是我们应该避免的。

由于PDPType对象受到保护,我们无法实现新的PDPType,这意味着我们目前无法正确实施ConnectionAgent。

1 个答案:

答案 0 :(得分:0)

您可以通过不将PDPRoadModel作为物理实体添加到模型中来解决ConnectionAgent的限制,而只是作为具有特定位置的虚拟通信实体。例如,代理可以类似于这样实现:

public class ConnectionAgent implements CommUser {
  final Point position;

  public ConnectionAgent(Connection<LengthData> c) {
    position = Point.centroid(asList(c.from(), c.to()));
  }

  @Override
  public Optional<Point> getPosition() {
    return Optional.of(position);
  }

  @Override
  public void setCommDevice(CommDeviceBuilder builder) {}
}

如果您想为每个连接设置一个代理,您可以循环遍历图中的连接,然后创建ConnectionAgent并将其添加到模拟器。