private void UpdateVelocity(Position globalBestPosition, int c1, int c2, Position localBestPosition = null) { Random r = new Random(); Position result1 = PersonalBestPosition.Substract(Position); Position result2 = globalBestPosition.Substract(Position); result1.Multiply(r.NextDouble() * c1); result2.Multiply(r.NextDouble() * c2); Velocity velocity1 = result1.ConvertToVelocity(); Velocity velocity2 = result2.ConvertToVelocity(); velocity1.Add(velocity2); _velocity.Add(velocity1); }