Skip to content
Snippets Groups Projects
Commit 00b88da8 authored by Thomas's avatar Thomas
Browse files

collect data for eval

parent fbd6483a
No related branches found
No related tags found
No related merge requests found
......@@ -14,6 +14,7 @@ public class RFSALearnAndCompare<I> {
CompactNFA<I> target;
Experiment<NFA<?,I>> experiment, experiment2;
CounterOracle<I, Boolean> mqOracle, mqOracle2;
public RFSALearnAndCompare() {
......@@ -31,11 +32,14 @@ public class RFSALearnAndCompare<I> {
public void learn(int maxLength, int maxTests) {
SimulatorOracle<I, Boolean> sul = new SimulatorOracle<>(target);
SimulatorOracle<I, Boolean> sul2 = new MySimulatorOracle<>(target);
mqOracle = new CounterOracle<>(sul, "membership queries learning");
mqOracle2 = new CounterOracle<>(sul2, "membership queries learning");
NLStarLearner<I> nlstar = new NLStarLearnerBuilder<I>().withAlphabet(target.getInputAlphabet()) // input alphabet
.withOracle(sul) // membership oracle
.withOracle(mqOracle) // membership oracle
.create();
NLStarLearner<I> nlstar2 = new NLStarLearnerBuilder<I>().withAlphabet(target.getInputAlphabet()) // input alphabet
.withOracle(sul2) // reverse membership oracle
.withOracle(mqOracle2) // reverse membership oracle
.create();
RandomWordsEQOracle<NFA<?, I>, I, Boolean> eqOracle = new RandomWordsEQOracle<>(sul, 0, maxLength, maxTests);
RandomWordsEQOracle<NFA<?, I>, I, Boolean> eqOracle2 = new RandomWordsEQOracle<>(sul2, 0, maxLength, maxTests);
......
import com.google.common.collect.Lists;
import net.automatalib.automata.fsa.NFA;
import net.automatalib.automata.fsa.impl.compact.CompactNFA;
import net.automatalib.util.automata.builders.FSABuilder;
import net.automatalib.visualization.Visualization;
......@@ -66,4 +67,25 @@ public class TimbukParser {
return builder.create();
}
public static void main(String[] args) throws IOException {
TimbukParser parser = new TimbukParser(Paths.get(args[0]));
CompactNFA<String> nfa = parser.createNFA();
RFSALearnAndCompare<String> learnAndCompare = new RFSALearnAndCompare<>();
learnAndCompare.setTarget(nfa);
int maxTests = (int) Math.pow(learnAndCompare.target.getStates().size()*learnAndCompare.target.getInputAlphabet().size(), 2)*10*3*2+250000; // FIXME or beter equivalence oracle
System.out.println(maxTests);
learnAndCompare.learn(3*learnAndCompare.target.getStates().size(), maxTests);
NFA<?, String> result = learnAndCompare.experiment.getFinalHypothesis();
NFA<?, String> result2 = learnAndCompare.experiment2.getFinalHypothesis();
Visualization.visualize(result, learnAndCompare.target.getInputAlphabet());
Visualization.visualize(result2, learnAndCompare.target.getInputAlphabet());
System.out.println(args[0] + "," + nfa.getStates().size() + "," + result.size() + "," + learnAndCompare.experiment.getRounds().getCount() + "," + learnAndCompare.mqOracle.getCounter().getCount() + "," + result2.size() + "," + learnAndCompare.experiment2.getRounds().getCount() + "," + learnAndCompare.mqOracle2.getCounter().getCount());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment