To prevent spam users, you can only post on this forum after registration, which is by invitation. If you want to post on the forum, please send me a mail (h DOT m DOT w DOT verbeek AT tue DOT nl) and I'll send you an invitation in return for an account.

Problem with seeded ETM and Inductive Miner

I am developing a new plugin within this plugin I am doing the following steps:

  1. I am mining a process tree with the InductiveMinerDeprecated from a simple log file.
  2. I convert the result to an NAryTree
  3. I construct a ETMParam object with the NAryTree as a seed
  4. I am running the TreeEvolutionEngine with 1 indiviudal (seed)
  5. The TreeEvolutionEngine returns a result.
While mining (between step 4 and 5) the TreeEvolutionEngine logs in every generation the following error to the console. What is causing this issue and what does it mean?

lpsolve.LpSolveException: ERROR in set_mat: status = -1 (Model has not been optimized)
    at lpsolve.LpSolve.setMat(Native Method)
    at org.processmining.plugins.etm.model.narytree.replayer.AbstractNAryTreeLPDelegate.<init>(AbstractNAryTreeLPDelegate.java:237)
    at org.processmining.plugins.etm.model.narytree.replayer.hybridilp.NAryTreeHybridILPDelegate.<init>(NAryTreeHybridILPDelegate.java:30)
    at org.processmining.plugins.etm.model.narytree.replayer.hybridilp.NAryTreeHybridILPDelegate.<init>(NAryTreeHybridILPDelegate.java:25)
    at org.processmining.plugins.etm.model.narytree.replayer.basisilp2.NAryTreeBasis2ILPDelegate.<init>(NAryTreeBasis2ILPDelegate.java:23)
    at org.processmining.plugins.etm.model.narytree.replayer.basisilp2.NAryTreeReplayerWithBasis2ILP.constructDelegate(NAryTreeReplayerWithBasis2ILP.java:68)
    at org.processmining.plugins.etm.model.narytree.replayer.basisilp2.NAryTreeReplayerWithBasis2ILP.constructDelegate(NAryTreeReplayerWithBasis2ILP.java:23)
    at org.processmining.plugins.etm.model.narytree.replayer.AbstractNAryTreeReplayer.<init>(AbstractNAryTreeReplayer.java:125)
    at org.processmining.plugins.etm.model.narytree.replayer.basisilp2.NAryTreeReplayerWithBasis2ILP.<init>(NAryTreeReplayerWithBasis2ILP.java:41)
    at org.processmining.plugins.etm.fitness.metrics.FitnessReplay.setupReplayer(FitnessReplay.java:401)
    at org.processmining.plugins.etm.fitness.metrics.FitnessReplay.getFitness(FitnessReplay.java:227)
    at org.processmining.plugins.etm.fitness.metrics.FitnessReplay.getFitness(FitnessReplay.java:54)
    at org.processmining.plugins.etm.fitness.metrics.OverallFitness.getFitness(OverallFitness.java:170)
    at org.processmining.plugins.etm.fitness.metrics.OverallFitness.getFitness(OverallFitness.java:47)
    at org.processmining.plugins.etm.fitness.metrics.MultiThreadedFitnessEvaluator.getFitness(MultiThreadedFitnessEvaluator.java:135)
    at org.processmining.plugins.etm.fitness.metrics.MultiThreadedFitnessEvaluator.getFitness(MultiThreadedFitnessEvaluator.java:31)
    at org.uncommonseditedbyjoosbuijs.watchmaker.framework.AbstractEvolutionEngine.evaluatePopulation(AbstractEvolutionEngine.java:181)
    at org.processmining.plugins.etm.engines.LoggingEvolutionEngine.evaluatePopulation(LoggingEvolutionEngine.java:87)
    at org.processmining.plugins.etm.engines.TreeEvolutionEngine.nextEvolutionStep(TreeEvolutionEngine.java:94)
    at org.uncommonseditedbyjoosbuijs.watchmaker.framework.AbstractEvolutionEngine.evolvePopulation(AbstractEvolutionEngine.java:136)
    at org.processmining.plugins.etm.engines.LoggingEvolutionEngine.evolvePopulation(LoggingEvolutionEngine.java:81)
    at snippet.MineETMProcessTreeFromSeed.modelrepair(MineETMProcessTreeFromSeed.java:275)
    at snippet.MineETMProcessTreeFromSeed.main(MineETMProcessTreeFromSeed.java:318)
java.lang.NullPointerException
    at org.processmining.plugins.etm.model.narytree.replayer.AbstractNAryTreeLPDelegate.deleteLPs(AbstractNAryTreeLPDelegate.java:411)
    at org.processmining.plugins.etm.model.narytree.replayer.basisilp2.NAryTreeReplayerWithBasis2ILP.run(NAryTreeReplayerWithBasis2ILP.java:75)
    at org.processmining.plugins.etm.fitness.metrics.FitnessReplay.getFitness(FitnessReplay.java:245)
    at org.processmining.plugins.etm.fitness.metrics.FitnessReplay.getFitness(FitnessReplay.java:54)
    at org.processmining.plugins.etm.fitness.metrics.OverallFitness.getFitness(OverallFitness.java:170)
    at org.processmining.plugins.etm.fitness.metrics.OverallFitness.getFitness(OverallFitness.java:47)
    at org.processmining.plugins.etm.fitness.metrics.MultiThreadedFitnessEvaluator.getFitness(MultiThreadedFitnessEvaluator.java:135)
    at org.processmining.plugins.etm.fitness.metrics.MultiThreadedFitnessEvaluator.getFitness(MultiThreadedFitnessEvaluator.java:31)
    at org.uncommonseditedbyjoosbuijs.watchmaker.framework.AbstractEvolutionEngine.evaluatePopulation(AbstractEvolutionEngine.java:181)
    at org.processmining.plugins.etm.engines.LoggingEvolutionEngine.evaluatePopulation(LoggingEvolutionEngine.java:87)
    at org.processmining.plugins.etm.engines.TreeEvolutionEngine.nextEvolutionStep(TreeEvolutionEngine.java:94)
    at org.uncommonseditedbyjoosbuijs.watchmaker.framework.AbstractEvolutionEngine.evolvePopulation(AbstractEvolutionEngine.java:136)
    at org.processmining.plugins.etm.engines.LoggingEvolutionEngine.evolvePopulation(LoggingEvolutionEngine.java:81)
    at snippet.MineETMProcessTreeFromSeed.modelrepair(MineETMProcessTreeFromSeed.java:275)
    at snippet.MineETMProcessTreeFromSeed.main(MineETMProcessTreeFromSeed.java:318)






Comments

  • I'm afraid only Joos can help you with specifics about ETM, but you might have a look at the IndulpetMiner package, which does something that seems related:
    (org.processmining.indulpetminer.mining.FallThroughETM)

    Unfortunately, calling ETM programmatically is not so easy :'(
    Sander Leemans
    Assistant Processor (Lecturer) at Queensland University of Technology
    Author of the visual Miner and Inductive Miner
Sign In or Register to comment.