public Double averageReceptiveFieldSize() {
        Double xDistance;
        Double yDistance;
        Double result = 0.0;
        for(int i=0;i<this.columns.size();i++) {
            xDistance = 0.0;
            yDistance = 0.0;
            for(Synapse synapse : this.potentialSynapses.get(i)) {
                if (synapse.permanence > this.connectedPerm) {
                    Double xCalculated = Math.abs(this.columns.get(i).x.doubleValue() - synapse.c.doubleValue());
                    Double yCalculated = Math.abs(this.columns.get(i).y.doubleValue() - synapse.i.doubleValue());
                    xDistance = xDistance > xCalculated ? xDistance : xCalculated;
                    yDistance = yDistance > yCalculated ? yDistance : yCalculated;
                }
            }
            result = (Math.sqrt(xDistance*xDistance + yDistance*yDistance) + i * result ) / (i+1);
        }
        return result;
    }