Print

Print


I couldn't find a method in sim.field.network.Network like
areNeighbors(Object o1, Object o2).

So a starting point would be to use Network's getEdges method and iterate
through the returned Bag looking for the other agent node in the edges.
You could write a thin wrapper method to do the job and you would have a
reusable component, like:

public boolean areNeighbors(Network network, Object agentA, Object agentB) {
    Bag edges = network.getEdges(agentA, null);  //obtain all edges that
have agentA; the bag may be empty but it won't be null
    Iterator<Edge> iter = edges.iterator();
    while (iter.hasNext()) {                                   //iterate
through all edges until we find agentB
            Edge e = iter.next();
            if (e.getOtherNode(agentA)==agentB) {  //use agentA as one node
and see if the other node is agentB
                return true;                                      //found it
            }
        }
    return false; //did not find it
}

Then to achieve what you originally asked:

if ( !areNeighbors(mynetwork, agentA,agentB)) {
    mynetwork.addEdge(agentA,agentB,null);
}

Tony



On Thu, Sep 26, 2013 at 3:54 AM, Beth Kar <[log in to unmask]> wrote:

> Hello!
> I am a newbie to mason (and java) and I am trying to dynamically create an
> undirected network. I want to add an edge between two nodes using the
> following code:
>
> mynetwork.addEdge(AgentA, AgentB, null).
>
> How can I check with an if-then statement before hand if that edge exists
> before adding it?
>
> p.s. If ( edge between AgentA and AgentB doesn't exist) {
> mynetwork.addEdge(AgentA, AgentB, null)}
>
> How do I represent the phrase 'edge between AgentA and AgentB doesn't
> exist'
> in java?
>
> Thank you in advance for your help!
> Beth.
>