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> { ...@@ -14,6 +14,7 @@ public class RFSALearnAndCompare<I> {
CompactNFA<I> target; CompactNFA<I> target;
Experiment<NFA<?,I>> experiment, experiment2; Experiment<NFA<?,I>> experiment, experiment2;
CounterOracle<I, Boolean> mqOracle, mqOracle2;
public RFSALearnAndCompare() { public RFSALearnAndCompare() {
...@@ -31,11 +32,14 @@ public class RFSALearnAndCompare<I> { ...@@ -31,11 +32,14 @@ public class RFSALearnAndCompare<I> {
public void learn(int maxLength, int maxTests) { public void learn(int maxLength, int maxTests) {
SimulatorOracle<I, Boolean> sul = new SimulatorOracle<>(target); SimulatorOracle<I, Boolean> sul = new SimulatorOracle<>(target);
SimulatorOracle<I, Boolean> sul2 = new MySimulatorOracle<>(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 NLStarLearner<I> nlstar = new NLStarLearnerBuilder<I>().withAlphabet(target.getInputAlphabet()) // input alphabet
.withOracle(sul) // membership oracle .withOracle(mqOracle) // membership oracle
.create(); .create();
NLStarLearner<I> nlstar2 = new NLStarLearnerBuilder<I>().withAlphabet(target.getInputAlphabet()) // input alphabet NLStarLearner<I> nlstar2 = new NLStarLearnerBuilder<I>().withAlphabet(target.getInputAlphabet()) // input alphabet
.withOracle(sul2) // reverse membership oracle .withOracle(mqOracle2) // reverse membership oracle
.create(); .create();
RandomWordsEQOracle<NFA<?, I>, I, Boolean> eqOracle = new RandomWordsEQOracle<>(sul, 0, maxLength, maxTests); RandomWordsEQOracle<NFA<?, I>, I, Boolean> eqOracle = new RandomWordsEQOracle<>(sul, 0, maxLength, maxTests);
RandomWordsEQOracle<NFA<?, I>, I, Boolean> eqOracle2 = new RandomWordsEQOracle<>(sul2, 0, maxLength, maxTests); RandomWordsEQOracle<NFA<?, I>, I, Boolean> eqOracle2 = new RandomWordsEQOracle<>(sul2, 0, maxLength, maxTests);
......
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import net.automatalib.automata.fsa.NFA;
import net.automatalib.automata.fsa.impl.compact.CompactNFA; import net.automatalib.automata.fsa.impl.compact.CompactNFA;
import net.automatalib.util.automata.builders.FSABuilder; import net.automatalib.util.automata.builders.FSABuilder;
import net.automatalib.visualization.Visualization; import net.automatalib.visualization.Visualization;
...@@ -66,4 +67,25 @@ public class TimbukParser { ...@@ -66,4 +67,25 @@ public class TimbukParser {
return builder.create(); 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