1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

renamed analysis.toolbox/AlgorithmSearchProgressChartBuilder.java to

analysis.toolbox.XYLineChartBuilder.java
This commit is contained in:
oblonski 2014-04-14 13:01:51 +02:00
parent 6ac7b39367
commit 21ab39013c
2 changed files with 38 additions and 7 deletions

View file

@ -44,7 +44,7 @@ public class AlgorithmSearchProgressChartListener implements IterationEndsListen
private String filename; private String filename;
private AlgorithmSearchProgressChartBuilder chartBuilder; private XYLineChartBuilder chartBuilder;
/** /**
* Constructs chart listener with target png-file (filename plus path). * Constructs chart listener with target png-file (filename plus path).
@ -62,7 +62,7 @@ public class AlgorithmSearchProgressChartListener implements IterationEndsListen
@Override @Override
public void informAlgorithmEnds(VehicleRoutingProblem problem, Collection<VehicleRoutingProblemSolution> solutions) { public void informAlgorithmEnds(VehicleRoutingProblem problem, Collection<VehicleRoutingProblemSolution> solutions) {
log.info("create chart " + filename); log.info("create chart " + filename);
AlgorithmSearchProgressChartBuilder.saveChartAsPNG(chartBuilder.build(), filename); XYLineChartBuilder.saveChartAsPNG(chartBuilder.build(), filename);
} }
@Override @Override
@ -83,7 +83,7 @@ public class AlgorithmSearchProgressChartListener implements IterationEndsListen
@Override @Override
public void informAlgorithmStarts(VehicleRoutingProblem problem,VehicleRoutingAlgorithm algorithm,Collection<VehicleRoutingProblemSolution> solutions) { public void informAlgorithmStarts(VehicleRoutingProblem problem,VehicleRoutingAlgorithm algorithm,Collection<VehicleRoutingProblemSolution> solutions) {
chartBuilder = AlgorithmSearchProgressChartBuilder.newInstance("search-progress", "iterations", "results"); chartBuilder = XYLineChartBuilder.newInstance("search-progress", "iterations", "results");
} }
} }

View file

@ -15,8 +15,19 @@ import org.jfree.data.Range;
import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection; import org.jfree.data.xy.XYSeriesCollection;
public class AlgorithmSearchProgressChartBuilder { /**
*
* @author schroeder
*
*/
public class XYLineChartBuilder {
/**
* Helper that just saves the chart as specified png-file. The width of the image is 1000 and height 600.
*
* @param chart
* @param pngFilename
*/
public static void saveChartAsPNG(JFreeChart chart, String pngFilename){ public static void saveChartAsPNG(JFreeChart chart, String pngFilename){
try { try {
ChartUtilities.saveChartAsPNG(new File(pngFilename), chart, 1000, 600); ChartUtilities.saveChartAsPNG(new File(pngFilename), chart, 1000, 600);
@ -25,8 +36,17 @@ public class AlgorithmSearchProgressChartBuilder {
} }
} }
public static AlgorithmSearchProgressChartBuilder newInstance(String chartName, String xDomainName, String yDomainName){ /**
return new AlgorithmSearchProgressChartBuilder(chartName, xDomainName, yDomainName); * Returns a new instance of the builder.
*
* @param chartTitle appears on top of the XYLineChart
* @param xDomainName appears below the xAxis
* @param yDomainName appears beside the yAxis
*
* @return the builder
*/
public static XYLineChartBuilder newInstance(String chartTitle, String xDomainName, String yDomainName){
return new XYLineChartBuilder(chartTitle, xDomainName, yDomainName);
} }
private ConcurrentHashMap<String,XYSeries> seriesMap = new ConcurrentHashMap<String, XYSeries>(); private ConcurrentHashMap<String,XYSeries> seriesMap = new ConcurrentHashMap<String, XYSeries>();
@ -37,12 +57,19 @@ public class AlgorithmSearchProgressChartBuilder {
private final String chartName; private final String chartName;
private AlgorithmSearchProgressChartBuilder(String chartName, String xDomainName, String yDomainName) { private XYLineChartBuilder(String chartName, String xDomainName, String yDomainName) {
this.xDomain=xDomainName; this.xDomain=xDomainName;
this.yDomain=yDomainName; this.yDomain=yDomainName;
this.chartName=chartName; this.chartName=chartName;
} }
/**
* Adds data to the according series (i.e. XYLine).
*
* @param seriesName
* @param xVal
* @param yVal
*/
public void addData(String seriesName, double xVal, double yVal){ public void addData(String seriesName, double xVal, double yVal){
if(!seriesMap.containsKey(seriesName)){ if(!seriesMap.containsKey(seriesName)){
seriesMap.put(seriesName, new XYSeries(seriesName,true,true)); seriesMap.put(seriesName, new XYSeries(seriesName,true,true));
@ -50,6 +77,10 @@ public class AlgorithmSearchProgressChartBuilder {
seriesMap.get(seriesName).add(xVal, yVal); seriesMap.get(seriesName).add(xVal, yVal);
} }
/**
* Builds and returns JFreeChart.
* @return
*/
public JFreeChart build(){ public JFreeChart build(){
XYSeriesCollection collection = new XYSeriesCollection(); XYSeriesCollection collection = new XYSeriesCollection();
for(XYSeries s : seriesMap.values()){ for(XYSeries s : seriesMap.values()){