UNPKG

pm4js

Version:

Process Mining for Javascript

35 lines (30 loc) 1.16 kB
class GeneralizationTbrResults { constructor(value) { this.value = value; } } class GeneralizationTbr { static apply(log, acceptingPetriNet, activityKey="concept:name") { return GeneralizationTbr.evaluate(TokenBasedReplay.apply(log, acceptingPetriNet, activityKey)); } static evaluate(tbrResults) { let invSqOccSum = 0.0 for (let trans in tbrResults.transExecutions) { let thisTerm = 1.0 / Math.sqrt(Math.max(tbrResults.transExecutions[trans], 1)); invSqOccSum += thisTerm; } let ret = new GeneralizationTbrResults(1.0 - invSqOccSum/(Object.keys(tbrResults.transExecutions).length)); Pm4JS.registerObject(ret, "Generalization Results"); return ret; } } try { module.exports = {GeneralizationTbr: GeneralizationTbr, GeneralizationTbrResults: GeneralizationTbrResults}; global.GeneralizationTbr = GeneralizationTbr; global.GeneralizationTbrResults = GeneralizationTbrResults; } catch (err) { // not in Node //console.log(err); } Pm4JS.registerAlgorithm("GeneralizationTbr", "evaluate", ["TokenBasedReplayResult"], "GeneralizationTbrResults", "Calculate Generalization", "Alessandro Berti");