Skip to content

Commit

Permalink
modified for new libraries
Browse files Browse the repository at this point in the history
  • Loading branch information
MasWag committed Jul 30, 2021
1 parent 2930cf4 commit c180f10
Show file tree
Hide file tree
Showing 9 changed files with 67 additions and 41 deletions.
19 changes: 18 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@
<dependency>
<groupId>org.uma.jmetal</groupId>
<artifactId>jmetal-core</artifactId>
<version>5.9</version>
<version>5.10</version>
</dependency>
<dependency>
<groupId>org.uma.jmetal</groupId>
Expand All @@ -315,11 +315,28 @@
<artifactId>jmetal-problem</artifactId>
<version>5.10</version>
</dependency>
<dependency>
<groupId>org.uma.jmetal</groupId>
<artifactId>jmetal-example</artifactId>
<version>5.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.jacoco/jacoco-maven-plugin -->
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.7</version>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
</project>
12 changes: 6 additions & 6 deletions src/main/java/org/group_mmm/BlackBoxVerifier.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class BlackBoxVerifier {
private List<MealyMachine<?, String, ?, String>> cexMealy;
private Alphabet<String> inputAlphabet;
private LearningAlgorithm.MealyLearner<String, String> learner;
private EQOracleChain.MealyEQOracleChain<String, String> eqOracle;
private MealyEQOracleChain<String, String> eqOracle;
private List<String> properties;
private List<Word<String>> cexInput;
private List<String> cexProperty;
Expand Down Expand Up @@ -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<PropertyOracle.MealyPropertyOracle<String, String, String>> getLtlFormulas() {
Expand All @@ -113,15 +113,15 @@ public MembershipOracle.MealyMembershipOracle<String, String> getMemOracle() {
}

void addWpMethodEQOracle(int maxDepth) {
addEqOracle(new WpMethodEQOracle.MealyWpMethodEQOracle<>(memOracle, maxDepth));
addEqOracle(new MealyWpMethodEQOracle<>(memOracle, maxDepth));
}

void addBFOracle(double multiplier) {
addEqOracle(new MealyBFInclusionOracle<>(memOracle, 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));
}

Expand All @@ -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));
}

Expand Down
12 changes: 7 additions & 5 deletions src/main/java/org/group_mmm/EQSearchProblem.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -37,23 +37,25 @@ public class EQSearchProblem extends AbstractIntegerProblem implements Evaluatio
setName("EQSearchProblem");

List<Integer> lowerLimit = Collections.nCopies(length, 0);
List<Integer> upperLimit = Collections.nCopies(length, Integer.MAX_VALUE);

setLowerLimit(lowerLimit);
setVariableBounds(lowerLimit, upperLimit);
}

void setSymbolList(List<? extends String> symbolList) {
List<Integer> lowerLimit = Collections.nCopies(length, 0);
List<Integer> upperLimit = Collections.nCopies(length, symbolList.size() - 1);

this.symbolList = symbolList;
setUpperLimit(upperLimit);
setVariableBounds(lowerLimit, upperLimit);
}

/** {@inheritDoc} */
@Override
public void evaluate(IntegerSolution integerSolution) {
WordBuilder<String> 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<String, Word<String>> query = new DefaultQuery<>(currentSample.toWord());
Expand Down
14 changes: 7 additions & 7 deletions src/main/java/org/group_mmm/GAEQOracle.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
6 changes: 3 additions & 3 deletions src/main/java/org/group_mmm/IntegerRandomMutation.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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;
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/org/group_mmm/IntegerUniformCrossover.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -50,9 +50,9 @@ public List<IntegerSolution> execute(List<IntegerSolution> 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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/org/group_mmm/SimulinkSULMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -130,10 +130,10 @@ public List<Double> mapConcrete(List<Double> concreteOutput) {
}

Alphabet<String> constructAbstractAlphabet() {
return new SimpleAlphabet<>(this.inputMapper.keySet());
return new GrowingMapAlphabet<>(this.inputMapper.keySet());
}

Alphabet<List<Double>> constructConcreteAlphabet() {
return new SimpleAlphabet<>(this.inputMapper.values());
return new GrowingMapAlphabet<>(this.inputMapper.values());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -22,13 +22,20 @@ public class SimulinkSteadyStateGeneticAlgorithm extends SteadyStateGeneticAlgor
private EQSearchProblem problem;
private PropertyOracle.MealyPropertyOracle<String, String, String> ltlOracle;

SimulinkSteadyStateGeneticAlgorithm(EQSearchProblem problem, int maxEvaluations, int populationSize, CrossoverOperator<IntegerSolution> crossoverOperator, MutationOperator<IntegerSolution> mutationOperator, SelectionOperator<List<IntegerSolution>, IntegerSolution> selectionOperator, SolutionListEvaluator<IntegerSolution> evaluator, PropertyOracle.MealyPropertyOracle<String, String, String> ltlOracle) {
SimulinkSteadyStateGeneticAlgorithm(EQSearchProblem problem, int maxEvaluations, int populationSize,
CrossoverOperator<IntegerSolution> crossoverOperator,
MutationOperator<IntegerSolution> mutationOperator,
SelectionOperator<List<IntegerSolution>, IntegerSolution> selectionOperator,
SolutionListEvaluator<IntegerSolution> evaluator,
PropertyOracle.MealyPropertyOracle<String, String, String> ltlOracle) {
super(problem, maxEvaluations, populationSize, crossoverOperator, mutationOperator, selectionOperator);
this.problem = problem;
this.ltlOracle = ltlOracle;
}

/** {@inheritDoc} */
/**
* {@inheritDoc}
*/
@Override
protected boolean isStoppingConditionReached() {
if (super.isStoppingConditionReached()) {
Expand All @@ -40,7 +47,7 @@ protected boolean isStoppingConditionReached() {

/**
* {@inheritDoc}
*
* <p>
* Create initial population only for the initial run
*/
@Override
Expand Down

0 comments on commit c180f10

Please sign in to comment.