-
Bug
-
Resolution: Done
-
Critical
-
6.2.0.Final
-
None
"The logarithmic scaling does not work if the problemScale is ambiguous and therefore set to -1L in ProblemBenchmarkResult.class.
While creating a chart having problems with ambiguous scale JfreeChart is throwing a Runtime Exception:"
java.lang.RuntimeException: Values less than or equal to zero not allowed with logarithmic axis at org.jfree.chart.axis.LogarithmicAxis.autoAdjustRange(LogarithmicAxis.java:530) at org.jfree.chart.axis.NumberAxis.configure(NumberAxis.java:415) at org.jfree.chart.plot.XYPlot.configureDomainAxes(XYPlot.java:974) at org.jfree.chart.plot.XYPlot.datasetChanged(XYPlot.java:4539) at org.jfree.chart.plot.XYPlot.setDataset(XYPlot.java:1396) at org.optaplanner.benchmark.impl.report.BenchmarkReport.createScalabilityPlot(BenchmarkReport.java:527) at org.optaplanner.benchmark.impl.report.BenchmarkReport.writeBestScoreScalabilitySummaryChart(BenchmarkReport.java:302) at org.optaplanner.benchmark.impl.report.BenchmarkReport.writeReport(BenchmarkReport.java:202) at org.optaplanner.benchmark.impl.PlannerBenchmarkRunner.benchmarkingEnded(PlannerBenchmarkRunner.java:197) at org.optaplanner.benchmark.impl.PlannerBenchmarkRunner.benchmark(PlannerBenchmarkRunner.java:89) at de.akquinet.jbosscc.energyplanner.planner.runtime.benchmark.PlannerBenchmarkTest.testDifferentLocalSearchParametersMoreStatistics(PlannerBenchmarkTest.java:63) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74)
Solution proposals:
Proposal A) don't add a point on the graph for a result with a problem scale of -1. Problem X: Given result A, B, C: if A and C have a problem scale, and B has -1, then the color of C will be different in graphs with the problem scale and graphs without it. That's not acceptable, because it is extremely misleading. Make sure to manually test problem X by configuring a benchmark to reproduce that case!
Proposal B) Like proposal A, but still add with a problem scale of 0.
Any other proposals we can think of?