From 2e94821075719207e4af8bc17e2c4d83f452c92a Mon Sep 17 00:00:00 2001 From: Masaki Waga Date: Fri, 30 Jul 2021 11:44:07 +0900 Subject: [PATCH] modified for new libraries --- pom.xml | 19 ++++++++++++++++- .../java/org/group_mmm/BlackBoxVerifier.java | 12 +++++------ .../java/org/group_mmm/EQSearchProblem.java | 12 ++++++----- src/main/java/org/group_mmm/GAEQOracle.java | 14 ++++++------- .../org/group_mmm/IntegerRandomMutation.java | 6 +++--- .../group_mmm/IntegerUniformCrossover.java | 10 ++++----- .../SimulinkGenerationalGeneticAlgorithm.java | 8 +++---- .../java/org/group_mmm/SimulinkSULMapper.java | 6 +++--- .../SimulinkSteadyStateGeneticAlgorithm.java | 21 ++++++++++++------- 9 files changed, 67 insertions(+), 41 deletions(-) diff --git a/pom.xml b/pom.xml index b73ed366..f344ee5a 100644 --- a/pom.xml +++ b/pom.xml @@ -303,7 +303,7 @@ org.uma.jmetal jmetal-core - 5.9 + 5.10 org.uma.jmetal @@ -315,11 +315,28 @@ jmetal-problem 5.10 + + org.uma.jmetal + jmetal-example + 5.10 + org.projectlombok lombok 1.18.20 + + + + org.jacoco + jacoco-maven-plugin + 0.8.7 + + + com.google.code.findbugs + jsr305 + 3.0.0 + diff --git a/src/main/java/org/group_mmm/BlackBoxVerifier.java b/src/main/java/org/group_mmm/BlackBoxVerifier.java index d68b2366..b625bd36 100644 --- a/src/main/java/org/group_mmm/BlackBoxVerifier.java +++ b/src/main/java/org/group_mmm/BlackBoxVerifier.java @@ -47,7 +47,7 @@ class BlackBoxVerifier { private List> cexMealy; private Alphabet inputAlphabet; private LearningAlgorithm.MealyLearner learner; - private EQOracleChain.MealyEQOracleChain eqOracle; + private MealyEQOracleChain eqOracle; private List properties; private List> cexInput; private List cexProperty; @@ -95,8 +95,8 @@ class BlackBoxVerifier { } // create an equivalence oracle, that first searches for a counter example using the ltl properties, and next - this.eqOracle = new EQOracleChain.MealyEQOracleChain<>( - new CExFirstOracle.MealyCExFirstOracle<>(ltlFormulas)); + this.eqOracle = new MealyEQOracleChain<>( + new MealyCExFirstOracle<>(ltlFormulas)); } ArrayList> getLtlFormulas() { @@ -113,7 +113,7 @@ public MembershipOracle.MealyMembershipOracle getMemOracle() { } void addWpMethodEQOracle(int maxDepth) { - addEqOracle(new WpMethodEQOracle.MealyWpMethodEQOracle<>(memOracle, maxDepth)); + addEqOracle(new MealyWpMethodEQOracle<>(memOracle, maxDepth)); } void addBFOracle(double multiplier) { @@ -121,7 +121,7 @@ void addBFOracle(double multiplier) { } void addRandomWordEQOracle(int minLength, int maxLength, int maxTests, Random random, int batchSize) { - addEqOracle(new RandomWordsEQOracle.MealyRandomWordsEQOracle<>( + addEqOracle(new MealyRandomWordsEQOracle<>( memOracle, minLength, maxLength, maxTests, random, batchSize)); } @@ -131,7 +131,7 @@ void addRandomWalkEQOracle(double restartProbability, long maxSteps, Random rand } void addCompleteExplorationEQOracle(int minDepth, int maxDepth, int batchSize) { - addEqOracle(new CompleteExplorationEQOracle.MealyCompleteExplorationEQOracle<>( + addEqOracle(new MealyCompleteExplorationEQOracle<>( memOracle, minDepth, maxDepth, batchSize)); } diff --git a/src/main/java/org/group_mmm/EQSearchProblem.java b/src/main/java/org/group_mmm/EQSearchProblem.java index ef5c5092..b83dba1c 100644 --- a/src/main/java/org/group_mmm/EQSearchProblem.java +++ b/src/main/java/org/group_mmm/EQSearchProblem.java @@ -6,8 +6,8 @@ import net.automatalib.automata.transducers.MealyMachine; import net.automatalib.words.Word; import net.automatalib.words.WordBuilder; -import org.uma.jmetal.problem.impl.AbstractIntegerProblem; -import org.uma.jmetal.solution.IntegerSolution; +import org.uma.jmetal.problem.integerproblem.impl.AbstractIntegerProblem; +import org.uma.jmetal.solution.integersolution.IntegerSolution; import java.util.Collections; import java.util.List; @@ -37,15 +37,17 @@ public class EQSearchProblem extends AbstractIntegerProblem implements Evaluatio setName("EQSearchProblem"); List lowerLimit = Collections.nCopies(length, 0); + List upperLimit = Collections.nCopies(length, Integer.MAX_VALUE); - setLowerLimit(lowerLimit); + setVariableBounds(lowerLimit, upperLimit); } void setSymbolList(List symbolList) { + List lowerLimit = Collections.nCopies(length, 0); List upperLimit = Collections.nCopies(length, symbolList.size() - 1); this.symbolList = symbolList; - setUpperLimit(upperLimit); + setVariableBounds(lowerLimit, upperLimit); } /** {@inheritDoc} */ @@ -53,7 +55,7 @@ void setSymbolList(List symbolList) { public void evaluate(IntegerSolution integerSolution) { WordBuilder currentSample = new WordBuilder<>(); for (int i = 0; i < integerSolution.getNumberOfVariables(); i++) { - int value = integerSolution.getVariableValue(i); + int value = integerSolution.getVariables().get(i); currentSample.append(symbolList.get(value)); } DefaultQuery> query = new DefaultQuery<>(currentSample.toWord()); diff --git a/src/main/java/org/group_mmm/GAEQOracle.java b/src/main/java/org/group_mmm/GAEQOracle.java index 1ff5a1d7..b4f9c081 100644 --- a/src/main/java/org/group_mmm/GAEQOracle.java +++ b/src/main/java/org/group_mmm/GAEQOracle.java @@ -7,13 +7,13 @@ import net.automatalib.words.Word; import org.slf4j.LoggerFactory; import org.uma.jmetal.algorithm.Algorithm; -import org.uma.jmetal.operator.CrossoverOperator; -import org.uma.jmetal.operator.MutationOperator; -import org.uma.jmetal.operator.SelectionOperator; -import org.uma.jmetal.operator.impl.selection.BestSolutionSelection; -import org.uma.jmetal.operator.impl.selection.BinaryTournamentSelection; -import org.uma.jmetal.solution.IntegerSolution; -import org.uma.jmetal.util.AlgorithmRunner; +import org.uma.jmetal.example.AlgorithmRunner; +import org.uma.jmetal.operator.crossover.CrossoverOperator; +import org.uma.jmetal.operator.mutation.MutationOperator; +import org.uma.jmetal.operator.selection.SelectionOperator; +import org.uma.jmetal.operator.selection.impl.BestSolutionSelection; +import org.uma.jmetal.operator.selection.impl.BinaryTournamentSelection; +import org.uma.jmetal.solution.integersolution.IntegerSolution; import org.uma.jmetal.util.comparator.ObjectiveComparator; import org.uma.jmetal.util.evaluator.impl.SequentialSolutionListEvaluator; diff --git a/src/main/java/org/group_mmm/IntegerRandomMutation.java b/src/main/java/org/group_mmm/IntegerRandomMutation.java index 4430013e..8c13278e 100644 --- a/src/main/java/org/group_mmm/IntegerRandomMutation.java +++ b/src/main/java/org/group_mmm/IntegerRandomMutation.java @@ -1,8 +1,8 @@ package org.group_mmm; import org.jetbrains.annotations.NotNull; -import org.uma.jmetal.operator.MutationOperator; -import org.uma.jmetal.solution.IntegerSolution; +import org.uma.jmetal.operator.mutation.MutationOperator; +import org.uma.jmetal.solution.integersolution.IntegerSolution; import java.util.Objects; import java.util.Random; @@ -50,7 +50,7 @@ public IntegerSolution execute(IntegerSolution solution) { if (this.random.nextDouble() < mutationProbability) { int positionToChange = this.random.nextInt(solution.getNumberOfVariables() - 1); Integer newValue = random.nextInt(solution.getUpperBound(i) + 1) + solution.getLowerBound(i); - solution.setVariableValue(positionToChange, newValue); + solution.getVariables().set(positionToChange, newValue); } } return solution; diff --git a/src/main/java/org/group_mmm/IntegerUniformCrossover.java b/src/main/java/org/group_mmm/IntegerUniformCrossover.java index b9e5922f..0b98c4e2 100644 --- a/src/main/java/org/group_mmm/IntegerUniformCrossover.java +++ b/src/main/java/org/group_mmm/IntegerUniformCrossover.java @@ -1,7 +1,7 @@ package org.group_mmm; -import org.uma.jmetal.operator.CrossoverOperator; -import org.uma.jmetal.solution.IntegerSolution; +import org.uma.jmetal.operator.crossover.CrossoverOperator; +import org.uma.jmetal.solution.integersolution.IntegerSolution; import java.util.ArrayList; import java.util.List; @@ -50,9 +50,9 @@ public List execute(List integerSolutions) { offspring.add((IntegerSolution) integerSolutions.get(1).copy()); for (int i = 0; i < integerSolutions.get(0).getNumberOfVariables(); i++) { if (Math.random() < crossoverProbability) { - int tmp = offspring.get(0).getVariableValue(i); - offspring.get(0).setVariableValue(i, offspring.get(1).getVariableValue(i)); - offspring.get(1).setVariableValue(i, tmp); + int tmp = offspring.get(0).getVariables().get(i); + offspring.get(0).getVariables().set(i, offspring.get(1).getVariables().get(i)); + offspring.get(1).getVariables().set(i, tmp); } } return offspring; diff --git a/src/main/java/org/group_mmm/SimulinkGenerationalGeneticAlgorithm.java b/src/main/java/org/group_mmm/SimulinkGenerationalGeneticAlgorithm.java index d9dafb27..134501d9 100644 --- a/src/main/java/org/group_mmm/SimulinkGenerationalGeneticAlgorithm.java +++ b/src/main/java/org/group_mmm/SimulinkGenerationalGeneticAlgorithm.java @@ -3,10 +3,10 @@ import de.learnlib.api.oracle.PropertyOracle; import org.slf4j.LoggerFactory; import org.uma.jmetal.algorithm.singleobjective.geneticalgorithm.GenerationalGeneticAlgorithm; -import org.uma.jmetal.operator.CrossoverOperator; -import org.uma.jmetal.operator.MutationOperator; -import org.uma.jmetal.operator.SelectionOperator; -import org.uma.jmetal.solution.IntegerSolution; +import org.uma.jmetal.operator.crossover.CrossoverOperator; +import org.uma.jmetal.operator.mutation.MutationOperator; +import org.uma.jmetal.operator.selection.SelectionOperator; +import org.uma.jmetal.solution.integersolution.IntegerSolution; import org.uma.jmetal.util.evaluator.SolutionListEvaluator; import java.util.List; diff --git a/src/main/java/org/group_mmm/SimulinkSULMapper.java b/src/main/java/org/group_mmm/SimulinkSULMapper.java index 0d1a44c6..109fd40d 100644 --- a/src/main/java/org/group_mmm/SimulinkSULMapper.java +++ b/src/main/java/org/group_mmm/SimulinkSULMapper.java @@ -5,7 +5,7 @@ import lombok.extern.slf4j.Slf4j; import net.automatalib.words.Alphabet; import net.automatalib.words.Word; -import net.automatalib.words.impl.SimpleAlphabet; +import net.automatalib.words.impl.GrowingMapAlphabet; import java.util.*; import java.util.stream.Collectors; @@ -130,10 +130,10 @@ public List mapConcrete(List concreteOutput) { } Alphabet constructAbstractAlphabet() { - return new SimpleAlphabet<>(this.inputMapper.keySet()); + return new GrowingMapAlphabet<>(this.inputMapper.keySet()); } Alphabet> constructConcreteAlphabet() { - return new SimpleAlphabet<>(this.inputMapper.values()); + return new GrowingMapAlphabet<>(this.inputMapper.values()); } } diff --git a/src/main/java/org/group_mmm/SimulinkSteadyStateGeneticAlgorithm.java b/src/main/java/org/group_mmm/SimulinkSteadyStateGeneticAlgorithm.java index fa57e249..a3d2e919 100644 --- a/src/main/java/org/group_mmm/SimulinkSteadyStateGeneticAlgorithm.java +++ b/src/main/java/org/group_mmm/SimulinkSteadyStateGeneticAlgorithm.java @@ -3,10 +3,10 @@ import de.learnlib.api.oracle.PropertyOracle; import org.slf4j.LoggerFactory; import org.uma.jmetal.algorithm.singleobjective.geneticalgorithm.SteadyStateGeneticAlgorithm; -import org.uma.jmetal.operator.CrossoverOperator; -import org.uma.jmetal.operator.MutationOperator; -import org.uma.jmetal.operator.SelectionOperator; -import org.uma.jmetal.solution.IntegerSolution; +import org.uma.jmetal.operator.crossover.CrossoverOperator; +import org.uma.jmetal.operator.mutation.MutationOperator; +import org.uma.jmetal.operator.selection.SelectionOperator; +import org.uma.jmetal.solution.integersolution.IntegerSolution; import org.uma.jmetal.util.evaluator.SolutionListEvaluator; import java.util.List; @@ -22,13 +22,20 @@ public class SimulinkSteadyStateGeneticAlgorithm extends SteadyStateGeneticAlgor private EQSearchProblem problem; private PropertyOracle.MealyPropertyOracle ltlOracle; - SimulinkSteadyStateGeneticAlgorithm(EQSearchProblem problem, int maxEvaluations, int populationSize, CrossoverOperator crossoverOperator, MutationOperator mutationOperator, SelectionOperator, IntegerSolution> selectionOperator, SolutionListEvaluator evaluator, PropertyOracle.MealyPropertyOracle ltlOracle) { + SimulinkSteadyStateGeneticAlgorithm(EQSearchProblem problem, int maxEvaluations, int populationSize, + CrossoverOperator crossoverOperator, + MutationOperator mutationOperator, + SelectionOperator, IntegerSolution> selectionOperator, + SolutionListEvaluator evaluator, + PropertyOracle.MealyPropertyOracle ltlOracle) { super(problem, maxEvaluations, populationSize, crossoverOperator, mutationOperator, selectionOperator); this.problem = problem; this.ltlOracle = ltlOracle; } - /** {@inheritDoc} */ + /** + * {@inheritDoc} + */ @Override protected boolean isStoppingConditionReached() { if (super.isStoppingConditionReached()) { @@ -40,7 +47,7 @@ protected boolean isStoppingConditionReached() { /** * {@inheritDoc} - * + *

* Create initial population only for the initial run */ @Override