关于您的第一点:由于您将每个网络投影与特定的 EdgeCreator 实例相关联,因此您可能会使 EdgeCreator 构造函数接受您希望该网络投影创建的 Link 类型。这可能会使事情变得更加精简。
在此处添加请求的示例:
package jzombies;
import repast.simphony.space.graph.EdgeCreator;
import repast.simphony.space.graph.RepastEdge;
public class CustomEdgeCreator<E extends RepastEdge<T>, T> implements EdgeCreator<E, T> {
private Class<E> e;
public CustomEdgeCreator(Class<E> e) {
this.e = e;
}
@Override
public Class<E> getEdgeType() {
return e;
}
@Override
public E createEdge(T source, T target, boolean isDirected, double weight) {
try {
return e.getDeclaredConstructor(new Class[]{Object.class, Object.class, boolean.class, double.class}).newInstance(source, target, isDirected, weight);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
关于您的第二点:除非您将创建的边缘添加到上下文中,否则它不会显示为真正的代理。因此,在创建网络链接时,您可以将其添加到上下文中,并且它应该显示在代理表中并用于数据收集目的。