@Override public Boolean observe(final IEnvironment<T> env) { if (!canItChange) { return true; } int count = 0; for (final int code : nodes) { final double[] coords = env.getPosition(env.getNodeByID(code)).getCartesianCoordinates(); if (coords[0] < ne[0] && coords[0] > sw[0] && coords[1] < ne[1] && coords[1] > sw[1]) { count++; } } if ((double) count / nodes.length < nodesRatio) { return false; } canItChange = false; return true; }