From 1656194bb55cfccb78132df252de3bdea51bd869 Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Fri, 14 Sep 2018 16:43:01 +0200 Subject: Updated progress monitor for huge amount instance generation processes --- .../execution/EclipseBasedProgressMonitor.xtend | 8 +++++++- .../execution/GenerationTaskExecutor.xtend | 23 +++++++++++----------- .../application/execution/ScriptExecutor.xtend | 4 ++-- 3 files changed, 21 insertions(+), 14 deletions(-) (limited to 'Application') diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/EclipseBasedProgressMonitor.xtend b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/EclipseBasedProgressMonitor.xtend index 624e75a5..be35b64a 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/EclipseBasedProgressMonitor.xtend +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/EclipseBasedProgressMonitor.xtend @@ -9,9 +9,15 @@ class EclipseBasedProgressMonitor extends SolverProgressMonitor{ public new(IProgressMonitor internalMonitor) { this.internalMonitor = internalMonitor } + var double currentDouble = 0.0 + var int currentInt = 0 override protected processWorked(double amount) { - internalMonitor.worked((amount*1000).intValue) + val newDouble = currentDouble+amount + val newInt = (newDouble*1000).intValue + internalMonitor.worked(newInt-currentInt) + currentDouble = newDouble + currentInt = newInt } override isCancelled() { diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/GenerationTaskExecutor.xtend b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/GenerationTaskExecutor.xtend index ad950fc8..c9d38c7d 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/GenerationTaskExecutor.xtend +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/GenerationTaskExecutor.xtend @@ -186,6 +186,7 @@ class GenerationTaskExecutor { console.writeMessage("Model generation started") for(run : 1..runs) { monitor.subTask('''Solving problem«IF runs>0» «run»/«runs»«ENDIF»''') + val visualisationProgressMonitor= new EclipseBasedProgressMonitor(monitor) // 6.2 For each run, the configuration and the workspace is adjusted solverLoader.setRunIndex(solverConfig,configurationMap,run,console) @@ -240,44 +241,44 @@ class GenerationTaskExecutor { dotRepresentations += outputWorkspaceForRun.getFile(dotFileName) } else { - dotRepresentations += null + dotRepresentations.add(null) } } else { - gmlRepresentations += null - dotRepresentations += null + gmlRepresentations.add(null) + dotRepresentations.add(null) } } - monitor.worked(100) + visualisationProgressMonitor.worked(1.0/interpretations.size) } if(!emfRepresentations.empty) { console.writeMessage( - '''Models: «FOR f : emfRepresentations»#«ENDFOR»''', + '''Models: «FOR f : emfRepresentations.filterNull»#«ENDFOR»''', "#", - emfRepresentations.map[ + emfRepresentations.filterNull.map[ new ScriptConsoleDecorator('''«it.fileRepresentationInConsole»''',it) ] ) } if(!gmlRepresentations.empty) { console.writeMessage( - '''Visualisations: «FOR f : gmlRepresentations»#«ENDFOR»''', + '''Visualisations: «FOR f : gmlRepresentations.filterNull»#«ENDFOR»''', "#", - gmlRepresentations.map[ + gmlRepresentations.filterNull.map[ new ScriptConsoleDecorator('''«it.fileRepresentationInConsole»''',it) ] ) } if(!dotRepresentations.empty) { console.writeMessage( - '''Visualisations: «FOR f : dotRepresentations»#«ENDFOR»''', + '''Visualisations: «FOR f : dotRepresentations.filterNull»#«ENDFOR»''', "#", - dotRepresentations.map[ + dotRepresentations.filterNull.map[ new ScriptConsoleDecorator('''«it.fileRepresentationInConsole»''',it) ] ) } } else { - monitor.worked(solverConfig.solutionScope.numberOfRequiredSolution*100) + visualisationProgressMonitor.worked(1.0) } solutionVisualisationTime = System.nanoTime - solutionVisualisationTime diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptExecutor.xtend b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptExecutor.xtend index b9813040..c9ec68bb 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptExecutor.xtend +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/ScriptExecutor.xtend @@ -102,12 +102,12 @@ class ScriptExecutor { /** * Mapping time = 100 * Solving = 1000 * runs - * Visualisation = runs * number * 100 + * Visualisation = 1000 * runs */ def protected dispatch getTotalWork(GenerationTask task) { val runs = if(task.runSpecified) { task.runs } else { 1 } val number = if(task.numberSpecified) { task.number } else { 1 } - return 100 + runs*1000 +runs*number*100 + return 100 + runs*1000 +runs*1000 } def protected dispatch getTotalWork(Task task) { throw new IllegalArgumentException('''Unsupported task type: «task.class.simpleName»!''') -- cgit v1.2.3-54-g00ecf