99import de .learnlib .driver .simulator .MMLTSimulatorSUL ;
1010import de .learnlib .filter .cache .mmlt .TimedSULTreeCache ;
1111import de .learnlib .filter .cache .mmlt .TimeoutReducerSUL ;
12+ import de .learnlib .filter .statistic .oracle .CounterEQOracle ;
1213import de .learnlib .filter .statistic .sul .CounterTimedSUL ;
1314import de .learnlib .oracle .EquivalenceOracle .MMLTEquivalenceOracle ;
14- import de .learnlib .oracle .equivalence .mmlt . EQOracleChain ;
15- import de .learnlib .oracle .equivalence .mmlt .RandomWpOracle ;
16- import de .learnlib .oracle .equivalence .mmlt .ResetSearchOracle ;
15+ import de .learnlib .oracle .equivalence .MMLTEQOracleChain ;
16+ import de .learnlib .oracle .equivalence .mmlt .RandomWpEQOracle ;
17+ import de .learnlib .oracle .equivalence .mmlt .ResetSearchEQOracle ;
1718import de .learnlib .oracle .equivalence .mmlt .SimulatorEQOracle ;
1819import de .learnlib .oracle .membership .TimedSULOracle ;
1920import de .learnlib .oracle .symbol_filters .CachedSymbolFilter ;
2021import de .learnlib .oracle .symbol_filters .mmlt .MMLTRandomSymbolFilter ;
2122import de .learnlib .oracle .symbol_filters .mmlt .MMLTStatisticsSymbolFilter ;
2223import de .learnlib .query .DefaultQuery ;
23- import de .learnlib .statistic .container .StatsContainer ;
24+ import de .learnlib .statistic .Statistics ;
25+ import de .learnlib .statistic .StatsContainer ;
2426import de .learnlib .symbol_filter .SymbolFilter ;
2527import de .learnlib .testsupport .example .mmlt .MMLTExamples ;
26- import de .learnlib .util .statistic .container .MapStatsContainer ;
2728import net .automatalib .automaton .visualization .MMLTVisualizationHelper ;
2829import net .automatalib .symbol .time .InputSymbol ;
2930import net .automatalib .symbol .time .TimedInput ;
@@ -43,7 +44,7 @@ public static void main(String[] args) {
4344
4445 // We first create a statistics container.
4546 // This container will store various statistical data during learning:
46- var stats = new MapStatsContainer ();
47+ var stats = Statistics . getContainer ();
4748 stats .addTextInfo ("LocalTimerMealyModel" , null , model .toString ());
4849 stats .setCounter ("original_locs" , "Locations in original" , model .getReferenceAutomaton ().getStates ().size ());
4950 stats .setCounter ("original_inputs" , "Untimed alphabet size in original" , model .getReferenceAutomaton ().getInputAlphabet ().size ());
@@ -54,23 +55,21 @@ public static void main(String[] args) {
5455 var sul = new MMLTSimulatorSUL <>(model .getReferenceAutomaton ().getSemantics ());
5556
5657 // We count all operations that are performed on the SUL with a stats-SUL:
57- var statsAfterCache = new CounterTimedSUL <>(sul , stats );
58+ var statsAfterCache = new CounterTimedSUL <>(sul );
5859
5960 // We use a cache to avoid redundant operations:
6061 var cacheSUL = new TimedSULTreeCache <>(statsAfterCache , model .getParams ());
61- cacheSUL .setStatsContainer (stats );
62- var toReducerSul = new TimeoutReducerSUL <>(cacheSUL , model .getParams ().maxTimeoutWaitingTime (), stats );
62+ var toReducerSul = new TimeoutReducerSUL <>(cacheSUL , model .getParams ().maxTimeoutWaitingTime ());
6363
6464 // We use a query oracle to answer queries from the learner:
6565 var timeOracle = new TimedSULOracle <>(toReducerSul , model .getParams ());
6666
6767 // We use a chain of different equivalence oracles:
68- EQOracleChain <String , String > chainOracle = new EQOracleChain <>();
69- chainOracle .addOracle (cacheSUL .createCacheConsistencyTest ());
70- chainOracle .addOracle (new ResetSearchOracle <>(timeOracle , 100 , 1.0 , 1.0 ));
71- chainOracle .addOracle (new RandomWpOracle <>(timeOracle , 100 , 16 , 0 , 100 ));
72- chainOracle .addOracle (new SimulatorEQOracle <>(model .getReferenceAutomaton ())); // ensure that we eventually find an accurate model
73- chainOracle .setStatsContainer (stats );
68+ MMLTEQOracleChain <String , String > chainOracle = new MMLTEQOracleChain <>();
69+ chainOracle .addOracle (new CounterEQOracle <>(cacheSUL .createCacheConsistencyTest (), "cache" ));
70+ chainOracle .addOracle (new CounterEQOracle <>(new ResetSearchEQOracle <>(timeOracle , 100 , 1.0 , 1.0 ), "reset" ));
71+ chainOracle .addOracle (new CounterEQOracle <>(new RandomWpEQOracle <>(timeOracle , 100 , 16 , 0 , 100 ), "wp" ));
72+ chainOracle .addOracle (new CounterEQOracle <>(new SimulatorEQOracle <>(model .getReferenceAutomaton ()), "sim" )); // ensure that we eventually find an accurate model
7473
7574 // Set up our L* learner:
7675 List <Word <TimedInput <String >>> suffixes = new ArrayList <>();
@@ -87,7 +86,6 @@ public static void main(String[] args) {
8786 filter = new CachedSymbolFilter <>(filter ); // need to wrap to enable updates to responses
8887
8988 var learner = new ExtensibleLStarMMLT <>(model .getReferenceAutomaton ().getInputAlphabet (), model .getParams (), suffixes , timeOracle , filter );
90- learner .setStatsContainer (stats );
9189
9290 // Start learning:
9391 runExperiment (learner , chainOracle , stats , 100 );
0 commit comments