Class SAEQOracle

All Implemented Interfaces:
de.learnlib.oracle.EquivalenceOracle<net.automatalib.automaton.transducer.MealyMachine<?,String,?,String>,String,net.automatalib.word.Word<String>>, de.learnlib.oracle.EquivalenceOracle.MealyEquivalenceOracle<String,String>, EvaluationCountable, EvaluationCountable.MealyEquivalenceOracle<String,String>

public class SAEQOracle extends HillClimbingEQOracle
Answer the Equivalence query by simulated annealing
Author:
Masaki Waga
  • Field Details

    • alpha

      private double alpha
    • maxIteration

      private int maxIteration
    • iteration

      private double iteration
  • Constructor Details

    • SAEQOracle

      public SAEQOracle(NumericMembershipOracleCost memOracle, int length, Random random, int maxTests, int generationSize, int childrenSize, boolean resetWord, double alpha)

      Constructor for SAEQOracle.

      Parameters:
      memOracle - a NumericMembershipOracleCost object.
      length - a int.
      random - a Random object.
      maxTests - a int.
      generationSize - a int.
      childrenSize - a int.
      resetWord - a boolean.
      alpha - a double.
    • SAEQOracle

      SAEQOracle(NumericMembershipOracleCost memOracle, int length, Random random, int maxTests, int generationSize, int childrenSize, boolean resetWord, double alpha, de.learnlib.oracle.PropertyOracle.MealyPropertyOracle<String,String,String> ltlOracle)
  • Method Details

    • createNextGeneration

      protected List<net.automatalib.word.Word<String>> createNextGeneration(List<net.automatalib.word.Word<String>> goodSamples)
      Overrides:
      createNextGeneration in class HillClimbingEQOracle
    • shouldPick

      private boolean shouldPick(double srcCost, double dstCost)
      Parameters:
      srcCost - the cost of src
      dstCost - the cost of dst
      Returns:
      if we should transit from src to dst. We followed the algorithm in https://ja.wikipedia.org/wiki/%E7%84%BC%E3%81%8D%E3%81%AA%E3%81%BE%E3%81%97%E6%B3%95 .
    • onlyEval

      private double onlyEval(net.automatalib.word.Word<String> input)