Skip to content

Commit 413d54b

Browse files
committed
update specpp discovery to not do unnecessary discovery
1 parent b1a373e commit 413d54b

File tree

3 files changed

+35
-55
lines changed

3 files changed

+35
-55
lines changed

src/org/processmining/placebasedlpmdiscovery/prom/placediscovery/algorithms/SPECppPlaceDiscoveryAlgorithm.java

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import org.deckfour.xes.model.XLog;
44
import org.processmining.acceptingpetrinet.models.AcceptingPetriNet;
5+
import org.processmining.placebasedlpmdiscovery.model.Place;
6+
import org.processmining.placebasedlpmdiscovery.model.Transition;
57
import org.processmining.placebasedlpmdiscovery.prom.placediscovery.PlaceDiscoveryResult;
68
import org.processmining.placebasedlpmdiscovery.prom.placediscovery.StandardPlaceDiscoveryResult;
79
import org.processmining.placebasedlpmdiscovery.prom.placediscovery.converters.place.AbstractPlaceConverter;
@@ -10,12 +12,13 @@
1012
import org.processmining.specpp.composition.BasePlaceComposition;
1113
import org.processmining.specpp.config.parameters.ExecutionParameters;
1214
import org.processmining.specpp.datastructures.petri.CollectionOfPlaces;
13-
import org.processmining.specpp.datastructures.petri.Place;
1415
import org.processmining.specpp.datastructures.petri.ProMPetrinetWrapper;
1516
import org.processmining.specpp.orchestra.ExecutionEnvironment;
1617
import org.processmining.specpp.preprocessing.InputDataBundle;
1718

1819
import java.time.Duration;
20+
import java.util.HashSet;
21+
import java.util.Set;
1922

2023
public class SPECppPlaceDiscoveryAlgorithm extends PlaceDiscoveryAlgorithm<SPECppPlaceDiscoveryParameters,
2124
AcceptingPetriNet> {
@@ -28,31 +31,36 @@ public SPECppPlaceDiscoveryAlgorithm(AbstractPlaceConverter<AcceptingPetriNet> c
2831
@Override
2932
public PlaceDiscoveryResult getPlaces(XLog log) {
3033
InputDataBundle input = InputDataBundle.process(log, parameters.getConfigBundle().getInputProcessingConfig());
31-
SPECpp<Place, BasePlaceComposition, CollectionOfPlaces, ProMPetrinetWrapper> specpp =
34+
SPECpp<org.processmining.specpp.datastructures.petri.Place, BasePlaceComposition, CollectionOfPlaces, ProMPetrinetWrapper> specpp =
3235
SPECpp.build(parameters.getConfigBundle(), input);
3336

34-
ExecutionEnvironment.SPECppExecution<Place, BasePlaceComposition, CollectionOfPlaces, ProMPetrinetWrapper> execution;
37+
ExecutionEnvironment.SPECppExecution<org.processmining.specpp.datastructures.petri.Place, BasePlaceComposition, CollectionOfPlaces, ProMPetrinetWrapper> execution;
3538
try (ExecutionEnvironment ee = new ExecutionEnvironment(Runtime.getRuntime().availableProcessors())) {
3639
execution = ee.execute(specpp, ExecutionParameters.timeouts(
3740
new ExecutionParameters.ExecutionTimeLimits(
38-
Duration.ofMinutes(5), Duration.ofMinutes(50), Duration.ofMinutes(60))));
39-
40-
ee.addCompletionCallback(execution, ex -> {
41-
ProMPetrinetWrapper petrinetWrapper = ex.getSPECpp().getPostProcessedResult();
42-
System.out.println(petrinetWrapper == null ? "null" : "not null" +
43-
" num places: " + petrinetWrapper.getPlaces().size() +
44-
"num transitions: " + petrinetWrapper.getTransitions().size() +
45-
"num edges: " + petrinetWrapper.getEdges().size());
46-
});
41+
Duration.ofMinutes(5), Duration.ofMinutes(1), Duration.ofMinutes(60))));
4742

4843
ee.join();
49-
StandardPlaceDiscoveryResult result = new StandardPlaceDiscoveryResult();
50-
AcceptingPetriNet acceptingPetriNet = execution.getSPECpp().getPostProcessedResult().asAcceptingPetrinet();
51-
result.setPlaces(this.converter.convert(acceptingPetriNet));
52-
result.setLog(log);
53-
return result;
44+
CollectionOfPlaces specppPlaces = execution.getSPECpp().getInitialResult();
45+
System.out.println(specppPlaces.size());
46+
47+
return getStandardPlaceDiscoveryResult(log, specppPlaces);
5448
} catch (InterruptedException e) {
5549
throw new RuntimeException(e);
5650
}
5751
}
52+
53+
private static StandardPlaceDiscoveryResult getStandardPlaceDiscoveryResult(XLog log, CollectionOfPlaces specppPlaces) {
54+
StandardPlaceDiscoveryResult result = new StandardPlaceDiscoveryResult();
55+
Set<Place> placeSet = new HashSet<>();
56+
specppPlaces.getPlaces().forEach(p -> {
57+
Place place = new Place();
58+
p.preset().forEach(t -> place.addInputTransition(new Transition(t.toString(), false)));
59+
p.postset().forEach(t -> place.addOutputTransition(new Transition(t.toString(), false)));
60+
placeSet.add(place);
61+
});
62+
result.setPlaces(placeSet);
63+
result.setLog(log);
64+
return result;
65+
}
5866
}

src/org/processmining/placebasedlpmdiscovery/prom/placediscovery/parameters/SPECppPlaceDiscoveryParameters.java

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,21 @@
33
import org.processmining.acceptingpetrinet.models.AcceptingPetriNet;
44
import org.processmining.placebasedlpmdiscovery.prom.placediscovery.algorithms.PlaceDiscoveryAlgorithm;
55
import org.processmining.placebasedlpmdiscovery.prom.placediscovery.algorithms.PlaceDiscoveryAlgorithmFactory;
6-
import org.processmining.specpp.componenting.data.ParameterRequirements;
7-
import org.processmining.specpp.componenting.evaluation.EvaluatorConfiguration;
8-
import org.processmining.specpp.componenting.system.GlobalComponentRepository;
9-
import org.processmining.specpp.config.ConfigPresets;
6+
import org.processmining.specpp.config.ConfigFactory;
7+
import org.processmining.specpp.config.DataExtractionParameters;
8+
import org.processmining.specpp.config.PreProcessingParameters;
109
import org.processmining.specpp.config.SPECppConfigBundle;
11-
import org.processmining.specpp.config.components.Configurators;
12-
import org.processmining.specpp.config.parameters.*;
13-
import org.processmining.specpp.config.presets.BaseComponentConfig;
14-
import org.processmining.specpp.evaluation.fitness.BaselineFitnessEvaluator;
15-
import org.processmining.specpp.evaluation.markings.LogHistoryMaker;
10+
import org.processmining.specpp.config.presets.BaseParameters;
11+
import org.processmining.specpp.config.presets.PlaceOracleComponentConfig;
12+
import org.processmining.specpp.config.presets.PlaceOracleParameters;
1613

1714
public class SPECppPlaceDiscoveryParameters extends PlaceDiscoveryParameters {
1815
private final SPECppConfigBundle configBundle;
1916

2017
public SPECppPlaceDiscoveryParameters() {
21-
this.configBundle = ConfigPresets.PLACE_ORACLE;
22-
// this.configBundle = ConfigFactory.create(
23-
// new PreProcessingParameters(new XEventNameClassifier(), true),
24-
// new DataExtractionParameters(Lexicographic.class),
25-
// new LPMDiscoverySPECppComponentConfig(),
26-
// new LPMDiscoverySPECppParameters(0.5),
27-
// CodeDefinedConfigurationSample.createSpecificParameters());
18+
this.configBundle = ConfigFactory.create(PreProcessingParameters.getDefault(),
19+
DataExtractionParameters.getDefault(), new PlaceOracleComponentConfig(),
20+
new BaseParameters(), new PlaceOracleParameters());
2821
}
2922

3023
public SPECppConfigBundle getConfigBundle() {
@@ -35,26 +28,4 @@ public SPECppConfigBundle getConfigBundle() {
3528
public PlaceDiscoveryAlgorithm<SPECppPlaceDiscoveryParameters, AcceptingPetriNet> getAlgorithm(PlaceDiscoveryAlgorithmFactory factory) {
3629
return factory.createPlaceDiscoveryAlgorithm(this);
3730
}
38-
39-
private class LPMDiscoverySPECppParameters extends ParameterProvider {
40-
41-
LPMDiscoverySPECppParameters(double tauThreshold) {
42-
globalComponentSystem().provide(ParameterRequirements.OUTPUT_PATH_PARAMETERS.fulfilWithStatic(OutputPathParameters.getDefault()))
43-
.provide(ParameterRequirements.SUPERVISION_PARAMETERS.fulfilWithStatic(SupervisionParameters.getDefault()))
44-
.provide(ParameterRequirements.TAU_FITNESS_THRESHOLDS.fulfilWithStatic(new TauFitnessThresholds(tauThreshold)))
45-
.provide(ParameterRequirements.REPLAY_COMPUTATION.fulfilWithStatic(ReplayComputationParameters.getDefault()))
46-
.provide(ParameterRequirements.IMPLICITNESS_TESTING.fulfilWithStatic(ImplicitnessTestingParameters.getDefault()))
47-
.provide(ParameterRequirements.PLACE_GENERATOR_PARAMETERS.fulfilWithStatic(PlaceGeneratorParameters.getDefault()));
48-
}
49-
}
50-
51-
private class LPMDiscoverySPECppComponentConfig extends BaseComponentConfig {
52-
@Override
53-
public EvaluatorConfiguration getEvaluatorConfiguration(GlobalComponentRepository gcr) {
54-
return Configurators.evaluators()
55-
.addEvaluatorProvider(LogHistoryMaker::new)
56-
.addEvaluatorProvider(new BaselineFitnessEvaluator.Builder())
57-
.build(gcr);
58-
}
59-
}
6031
}

src/org/processmining/placebasedlpmdiscovery/runners/lpmdiscovery/LPMDiscoveryRunner.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ private static void run(String configPath) throws Exception {
3838
List<LPMDiscoveryRunnerConfig> runnerConfigs = readConfig(configPath);
3939

4040
for (LPMDiscoveryRunnerConfig config : runnerConfigs) {
41+
System.out.println(config.getInput().get("eventlog"));
4142
XLog log = LogUtils.readLogFromFile(config.getInput().get("eventlog"));
4243
LPMDiscoveryResult result = LPMDiscovery.getInstance().from(log);
4344
System.out.println(result.getAllLPMs().size());

0 commit comments

Comments
 (0)