Example #1
0
    def test_should_decode_values(self):
        # given
        bits = 4
        encoder = RealValueEncoder(bits)

        # then
        assert 0.0 == encoder.decode(0)
        assert abs(0.5 - encoder.decode(8)) < 0.05
        assert 1.0 == encoder.decode(15)
Example #2
0
def _mutate_attribute(ubr: UBR, encoder: RealValueEncoder, noise_max: float,
                      mu: float):

    if np.random.random() < mu:
        noise = np.random.uniform(-noise_max, noise_max)
        x1p = encoder.decode(ubr.x1)
        ubr.x1 = encoder.encode(x1p, noise)

    if np.random.random() < mu:
        noise = np.random.uniform(-noise_max, noise_max)
        x2p = encoder.decode(ubr.x2)
        ubr.x2 = encoder.encode(x2p, noise)
Example #3
0
def _widen_attribute(ubr: UBR, encoder: RealValueEncoder, noise_max: float,
                     mu: float):

    # TODO: we should modify both condition and effect parts with the
    # same noise.
    if np.random.random() < mu:
        noise = np.random.uniform(-noise_max, noise_max)
        x1p = encoder.decode(ubr.x1)
        ubr.x1 = encoder.encode(x1p, noise)

    if np.random.random() < mu:
        noise = np.random.uniform(-noise_max, noise_max)
        x2p = encoder.decode(ubr.x2)
        ubr.x2 = encoder.encode(x2p, noise)
Example #4
0
    def test_should_deny_illegal_values_when_decoding(self):
        # given
        encoder = RealValueEncoder(2)

        # when
        with pytest.raises(ValueError) as e1:
            encoder.decode(-1)

        with pytest.raises(ValueError) as e2:
            encoder.decode(5)

        # then
        assert e1 is not None
        assert e2 is not None
Example #5
0
    def test_should_encode_and_decode_approximately(self):
        # given
        encoder = RealValueEncoder(8)
        epsilon = 0.01
        observation = random.random()

        # when
        encoded = encoder.encode(observation)
        decoded = encoder.decode(encoded)

        # then
        assert abs(observation - decoded) < epsilon