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.