-
-
Save mtf90/77cfd55083b5a402b9efc7c94cdd1626 to your computer and use it in GitHub Desktop.
A small example for instantiating different kinds of counters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package de.learnlib.examples; | |
import java.util.Random; | |
import de.learnlib.algorithms.lstar.dfa.ClassicLStarDFA; | |
import de.learnlib.api.algorithm.LearningAlgorithm.DFALearner; | |
import de.learnlib.api.oracle.EquivalenceOracle.DFAEquivalenceOracle; | |
import de.learnlib.api.oracle.MembershipOracle.DFAMembershipOracle; | |
import de.learnlib.filter.cache.dfa.DFACacheOracle; | |
import de.learnlib.filter.cache.dfa.DFACaches; | |
import de.learnlib.filter.statistic.oracle.DFACounterOracle; | |
import de.learnlib.oracle.equivalence.DFARandomWordsEQOracle; | |
import de.learnlib.oracle.membership.SimulatorOracle.DFASimulatorOracle; | |
import de.learnlib.util.Experiment.DFAExperiment; | |
import net.automatalib.automata.fsa.DFA; | |
import net.automatalib.util.automata.random.RandomAutomata; | |
import net.automatalib.words.Alphabet; | |
import net.automatalib.words.impl.Alphabets; | |
public class StatExample { | |
public static void main(String[] args) { | |
final Random random = new Random(42); | |
final Alphabet<Integer> alphabet = Alphabets.integers(1, 3); | |
final DFA<?, Integer> dfa = RandomAutomata.randomDFA(random, 20, alphabet); | |
final DFAMembershipOracle<Integer> oracle = new DFASimulatorOracle<>(dfa); | |
final DFACounterOracle<Integer> uniqueCounter = new DFACounterOracle<>(oracle, "Unique Queries by Learner"); | |
final DFACacheOracle<Integer> cache = DFACaches.createCache(alphabet, uniqueCounter); | |
final DFACounterOracle<Integer> mqCounter = new DFACounterOracle<>(cache, "Queries by Learner"); | |
final DFACounterOracle<Integer> eqCounter = new DFACounterOracle<>(oracle, "Queries by EQ oracle"); | |
final DFAEquivalenceOracle<Integer> eqOracle = | |
new DFARandomWordsEQOracle<>(eqCounter, // use mqCounter for shared number of queries | |
0, 20, 1000, random); | |
final DFALearner<Integer> learner = new ClassicLStarDFA<>(alphabet, mqCounter); | |
final DFAExperiment<Integer> experiment = new DFAExperiment<>(learner, eqOracle, alphabet); | |
experiment.run(); | |
System.out.println(uniqueCounter.getStatisticalData()); | |
System.out.println(mqCounter.getStatisticalData()); | |
System.out.println(eqCounter.getStatisticalData()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment