private double calculateFitness(Vector2d particlePosition, SwarmOptimum optimum)
        {
            Vector2d diff = particlePosition - optimum.GetPosition();
            double baseFitness = Math.Pow((Math.Pow(Math.Abs(diff.X), P) + Math.Pow(Math.Abs(diff.Y), P)), ((double)1.0 / P));

            if (IgnoreWeights)
            {
                return baseFitness;
            }

            return baseFitness / (double)optimum.GetWeight();
        }