ECJ Group:

I have made some simple and small changes to the GUI which I feel are well worth
keeping.  It allows new chart types to be made easily by simply extending
ChartableStatistics.  A new chart can be declared in the parameter file by
simply adding a new statistics child.  Now one can have many different charts
displayed in multiple tabs by just adding new statistics children.

I hope that you will consider reviewing and adding these changes to ECJ13.  They
offer much greater display functionality and better program structure.  If you
are interested, I am willing to add more comments/documentation to the chart
display portion of ECJ13, even a small tutorial.

Attached is the source code for ECJ13 with the changes I have made to the
display files.  A more detailed description of the changes I have made are given
below.  Note:  I also changed the ec.app.gui.coevolve2.params which demonstrates
the changes.

Robert Hovden
Georgia Institute of Technology
[log in to unmask]
[log in to unmask]



Summary:  Chart types are made by extending ChartableStatistics.  An actual
chart must be made by extending the ChartType, where it will then specify what
information the chart type is going to display.

Adjustments to the Display GUI in ECJ13:

    In order to improve the capabilities and the flexibility of the display
portion of the gui, the following modifications where made:

-ec.display.chart.ChartableStatistics

        This class is now abstract and holds an abstract method makeChart() which will
make and return a chart.  It is no longer a class designed specifically for
XYSeries charts so information about such has been removed.  Now by extending
ChartableStatistics you can easily add new chart types such as the Bar Chart and
XY Series Chart, which are done in the classes below.

-ec.display.chart.BarChartStatistics and ec.display.XYSeriesStatistics

        These classes extend ChartableStatistics.  They declare how the chart is made
in the makeChart() method.  More classes like these can easily be made to
accommodate different types of charts.

-ec.display.chart.SimpleBarChartStatistics and ec.SimpleXYSeriesStatistics

        These are the statistics classes that tell specifically how to construct the
bar charts by giving them the information that is needed.  For example, the
SimpleXYSeriesStatistics will construct a line graph of the fitness as it
changes through each generation (this is exactly what the old
SimpleChartableStatistics did, they are equivalent).  The
SimpleBarChartStatistics will construct a bar chart that displays the genome
values of the best individual in each subpop.

-ec.StatisticsChartPane.java

        JFreeChart chart is defined by calling an abstract method, makeChart(), in
ChartableStatistics.  The abstract method is defined in each class that extends
ChartableStatistics.


--