Subject: | |
From: | |
Reply To: | |
Date: | Thu, 26 Sep 2013 10:07:04 -0600 |
Content-Type: | multipart/alternative |
Parts/Attachments: |
|
|
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.
>
|
|
|