Exemple #1
0
    def test_atm_caching(self):

        bn = template_behaviour_generator(5, 2, 0.5, 0.0, 1, 0).new()

        t = time.perf_counter()

        for _ in range(10):
            bn.atm

        t_cache = time.perf_counter() - t

        t = time.perf_counter()

        for _ in range(10):
            bn.atm
            bn, *_ = bn_scramble_strategy(bn, 1)

        t_cache_w_changes = time.perf_counter() - t

        t = time.perf_counter()

        for _ in range(10):
            ATM(bn.to_ebnf())

        t_creation = time.perf_counter() - t

        self.assertTrue(t_cache < t_creation and t_cache < t_cache_w_changes)
Exemple #2
0
    def test_atm(self):

        bn = template_behaviour_generator(5, 2, 0.5, 0.0, 1, 0).new()

        atm = bn.atm

        for row in atm.tableau:
            s = sum(row)
            print(s)
            self.assertTrue(s > 0.98 and s < 1.02)
Exemple #3
0
    def test_default_scramble_strategy(self):

        bn = template_behaviour_generator(5, 2, 0.5, 0.0, 1, 0).new()
        bn_copy = BooleanNetwork.from_json(bn.to_json())

        bn_copy, flips = bn_scramble_strategy(bn_copy, 1)

        self.assertFalse(bn.to_json() == bn_copy.to_json())

        bn_copy = edit_boolean_network(bn_copy, flips)

        self.assertTrue(bn.to_json() == bn_copy.to_json())
Exemple #4
0
    def test_bn_update(self):
        bn = template_behaviour_generator(5, 2, 0.5, 0.0, 1, 0).new()

        bn_copy = BooleanNetwork.from_json(bn.to_json())

        matching_states = []

        for _ in range(10):

            s1 = binstate(bn.update())
            s2 = binstate(bn_copy.update())

            matching_states.append(s1 == s2)

        self.assertTrue(all(matching_states))
Exemple #5
0
def generate_or_load_bn(params: BNParams, path: Path, save_virgin=False):

    __bn = None

    if check_path(path, create_if_dir=True):

        generator = template_behaviour_generator(*params)

        __bn = generate_rbn(generator.new_obn, force_consistency=True)

        if save_virgin:
            p = path / 'virgin_bn_{date}.json'.format(date=FROZEN_DATE)

            write_json(__bn.to_json(), p)

            logger.info(f'Virgin BN saved to {p}.')

    else:
        __bn = OpenBooleanNetwork.from_json(read_json(path))
        logger.info(f'BN loaded from {path}.')

    return __bn
Exemple #6
0
    def test_ebnf(self):
        bn = template_behaviour_generator(5, 2, 0.5, 0.0, 1, 0).new()

        bn_copy = BooleanNetwork.from_json(bn.to_json())

        self.assertTrue(bn.to_ebnf(), bn_copy.to_ebnf())