Noisy Functions

A function may have noise, meaning that each evaluation may have a stochastic component, which changes the output of the function slightly each time.

Any non-noisy function can be made noisy by adding small Gaussian random numbers to the input values.

The range for the function below is bounded to -5.0 and 5.0 and the optimal input value is 0.0.

noisy optimization function

from numpy import arange
from numpy.random import randn
from matplotlib import pyplot

objective function

def objective(x):
return (x + randn(len(x))*0.3)**2.0

define range for input

r_min, r_max = -5.0, 5.0

sample input range uniformly at 0.1 increments

inputs = arange(r_min, r_max, 0.1)

compute targets

results = objective(inputs)

create a line plot of input vs result

pyplot.plot(inputs, results)

define optimal input value

x_optima = 0.0

draw a vertical line at the optimal input

pyplot.axvline(x=x_optima, ls=’–’, color=‘red’)

show the plot

pyplot.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

noisy optimization function

from numpy import arange
from numpy.random import randn
from matplotlib import pyplot

objective function

def objective(x):
return (x + randn(len(x))*0.3)**2.0

define range for input

r_min, r_max = -5.0, 5.0

sample input range uniformly at 0.1 increments

inputs = arange(r_min, r_max, 0.1)

compute targets

results = objective(inputs)

create a line plot of input vs result

pyplot.plot(inputs, results)

define optimal input value

x_optima = 0.0

draw a vertical line at the optimal input

pyplot.axvline(x=x_optima, ls=’–’, color=‘red’)

show the plot

pyplot.show()
Running the example creates a line plot of the function and marks the optima with a red line.

Line Plot of Noisy Optimization Function