# The Noisy meta-problemΒΆ

The noisy meta-problem introduces noise into regular PyGMO problem, rendering them stochastic. More specifically, the observed fitness and constraint vectors from such problems have been corrupted by noises. Currently, two types of noise distributions are supported, namely the normal distribution and uniform distribution.

```
from PyGMO import *
prob = problem.ackley(1)
prob_noisy_normal = problem.noisy(prob, trials=1, param_first=0.0, param_second=0.1, noise_type=problem.noisy.noise_distribution.NORMAL)
prob_noisy_uniform = problem.noisy(prob, trials=1, param_first=-3, param_second=3, noise_type=problem.noisy_noise_distribution.UNIFORM)
```

The construction parameters control the following aspects of the noisy transform:

**Noise distribution:**The Gaussian noise is characterized by a mean of`param_first`and a standard deviation of`param_second`, while the uniformly noise is uniformly distributed between`param_first`and`param_second`.**Internal averaging:**The noisy meta-problem provides an internal mechanism to perform averaging via repeated evaluation before reporting the fitness / constraint vectors, at the expense of increase computational budget. The number of samples to average over is controlled by the parameter`trials`.

The fitness landscape (or more precisely the distribution of fitness values at each decision value) of a noisy one-dimensional Ackley problem is visualized in the following figures. The solid line is the fitness in case of a noise-less problem.

The transformed problem becomes stochastic. It can be solved by optimizers
capable of handling stochastic problems, for example `pso_gen`. The quality
of a solution can be assessed by the noise-less version of the problem, serving
as the ground truth information.

As some examples, let’s apply `pso_gen` to different version of noisy
problems. Generally, the larger the magnitude of noise, the harder the problem
becomes. Increasing the `trials` parameter reduces the adversarial effect of
noise.