Exemplo n.º 1
0
def onfsm_mealy_paper_example():
    """
    Learning a ONFSM presented in 'Learning Finite State Models of Observable Nondeterministic Systems in a Testing
    Context'.
    :return: learned ONFSM
    """
    from random import seed
    seed(3)
    onfsm = get_benchmark_ONFSM()

    alph = onfsm.get_input_alphabet()

    sul = OnfsmSUL(onfsm)
    eq_oracle = UnseenOutputRandomWalkEqOracle(alph,
                                               sul,
                                               num_steps=5000,
                                               reset_prob=0.09,
                                               reset_after_cex=True)
    eq_oracle = UnseenOutputRandomWordEqOracle(alph,
                                               sul,
                                               num_walks=500,
                                               min_walk_len=4,
                                               max_walk_len=10)

    learned_onfsm = run_Lstar_ONFSM(alph,
                                    sul,
                                    eq_oracle,
                                    n_sampling=15,
                                    print_level=3)

    return learned_onfsm
Exemplo n.º 2
0
def onfsm_mealy_paper_example():
    """
    Learning a ONFSM presented in 'Learning Finite State Models of Observable Nondeterministic Systems in a Testing
    Context'.
    :return: learned ONFSM
    """

    from aalpy.SULs import OnfsmSUL
    from aalpy.oracles import RandomWordEqOracle
    from aalpy.learning_algs import run_non_det_Lstar
    from aalpy.utils import get_benchmark_ONFSM

    onfsm = get_benchmark_ONFSM()
    alphabet = onfsm.get_input_alphabet()

    sul = OnfsmSUL(onfsm)
    eq_oracle = RandomWordEqOracle(alphabet, sul, num_walks=500, min_walk_len=5, max_walk_len=12)

    learned_onfsm = run_non_det_Lstar(alphabet, sul, eq_oracle, n_sampling=1, print_level=2)

    return learned_onfsm
Exemplo n.º 3
0
    def test_non_det(self):

        from aalpy.SULs import OnfsmSUL
        from aalpy.oracles import RandomWordEqOracle, RandomWalkEqOracle
        from aalpy.learning_algs import run_non_det_Lstar
        from aalpy.utils import get_benchmark_ONFSM

        onfsm = get_benchmark_ONFSM()
        alphabet = onfsm.get_input_alphabet()

        for _ in range(100):
            sul = OnfsmSUL(onfsm)

            oracle = RandomWordEqOracle(alphabet,
                                        sul,
                                        num_walks=500,
                                        min_walk_len=2,
                                        max_walk_len=5)

            learned_onfsm = run_non_det_Lstar(alphabet,
                                              sul,
                                              oracle,
                                              n_sampling=50,
                                              print_level=0)

            eq_oracle = RandomWalkEqOracle(alphabet,
                                           sul,
                                           num_steps=10000,
                                           reset_prob=0.09,
                                           reset_after_cex=True)

            cex = eq_oracle.find_cex(learned_onfsm)

            if cex or len(learned_onfsm.states) != len(onfsm.states):
                assert False
        assert True