}
public void perform_1(final Context context) {
Turtle turtle = (Turtle) context.agent;
turtle.moveToPatchCenter();
Patch patch = turtle.getPatchHere();
double winningValue = -Double.MAX_VALUE;
List<Patch> winners = new ArrayList<Patch>();
for (AgentSet.Iterator it = patch.getNeighbors().iterator(); it.hasNext();) {
Patch tester = (Patch) it.next();
Object value = tester.getPatchVariable(reference.vn());
if (!(value instanceof Double)) {
continue;
}
double dvalue = ((Double) value).doubleValue();
// need to be careful here to handle properly the case where
// dvalue equals - Double.MAX_VALUE - ST 10/11/04, 1/6/07
if (dvalue >= winningValue) {
if (dvalue > winningValue) {
winningValue = dvalue;
winners.clear();
}
winners.add(tester);
}
}
if (!winners.isEmpty() &&
(!(patch.getPatchVariable(reference.vn()) instanceof Double) ||
winningValue > ((Double) patch.getPatchVariable(reference.vn())).doubleValue())) {
Patch winner = winners.get(context.job.random.nextInt(winners.size()));
turtle.face(winner, true);
try {
turtle.moveTo(winner);
} catch (AgentException ex) {
// should be impossible