MOEA Framework поставляется со многими инструментами для анализа выхода MOEA. Он включает в себя инструмент диагностики, который может генерировать 2D-графики нескольких фронтов Парето. Вы можете импортировать свои данные с помощью встроенных инструментов, а затем легко отображать их с помощью диагностического инструмента. Следующее изображение было взято из диагностического инструмента. Я выполнил NSGA-II и SMPSO, чтобы решить пробную проблему LZ3 с 10 семенами. Набор аппроксимаций (например, известный фронт Парето) показан в верхнем правом углу.
Инструмент диагностики в МЭ Framework строит графики с использованием JFreeChart. Если вас интересует только отображение графиков ваших данных (и не выполнение какого-либо другого анализа), вы можете просто использовать JFreeChart. Тем не менее, я рекомендую использовать Диагностический инструмент, поскольку он поставляется со многими другими функциями (например, возможность вычисления Hypervolume, Generational Distance, Additive Epsilon Indicator)
Наконец, вы всегда можете прибегнуть к использованию диаграмм JavaFX. Это довольно надежный (хотя и незрелый) API, и диаграммы на самом деле довольно красивы. Ниже вы найдете скриншот сюжета XY-Scatter, который я построил с помощью JavaFX. Код для создания этого графика доступен ниже. Дополнительные примеры/уроки доступны в http://docs.oracle.com/javafx/2/charts/jfxpub-charts.htm
import java.util.ArrayList;
import java.util.Random;
import com.sun.javafx.collections.ObservableListWrapper;
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.XYChart.Data;
import javafx.scene.chart.XYChart.Series;
import javafx.stage.Stage;
public class ScatterChartSample extends Application {
final double max = 20;
final double min = 0;
@Override
public void start(Stage stage) {
stage.setTitle("Scatter Chart Sample");
final NumberAxis xAxis = new NumberAxis(min, max, (max - min)/10);
final NumberAxis yAxis = new NumberAxis(min, max, (max - min)/10);
final ScatterChart<Number, Number> sc = new ScatterChart<>(xAxis,
yAxis);
xAxis.setLabel("f1");
yAxis.setLabel("f2");
sc.setTitle("Three Pareto Front");
Series<Number, Number> series1 = new Series<>();
series1.setName("Algorithm1");
series1.setData(generateData());
Series<Number, Number> series2 = new Series<>();
series2.setName("Algorithm2");
series2.setData(generateData());
Series<Number, Number> series3 = new Series<>();
series3.setName("Algorithm3");
series3.setData(generateData());
sc.getData().addAll(series1, series2, series3);
Scene scene = new Scene(sc, 500, 400);
stage.setScene(scene);
stage.show();
}
/**
* @return Generates random data resembling a Pareto front
*/
public ObservableList<Data<Number, Number>> generateData() {
ObservableList<Data<Number, Number>> dataList = new ObservableListWrapper<>(
new ArrayList<>());
Random rand = new Random();
double x = min+rand.nextDouble();
double y = max-rand.nextDouble();
while (x < max && y > min) {
x += rand.nextDouble();
y -= rand.nextDouble();
dataList.add(new Data<Number, Number>(x, y));
}
return dataList;
}
public static void main(String[] args) {
launch(args);
}
}
Я новичок в МЭ: Вы можете объяснить, как импортировать данные с помощью встроенных инструментов, а затем отобразить их с помощью инструмента диагностики? Есть ли ссылка для изучения/создания/обработки файла .adf (формат, заданный для загрузки в диагностическом инструменте) –
@ ale-6 Последнее руководство пользователя составляет 15 долларов США и доступно по адресу http://moeaframework.org/documentation.html Однако руководство для v2.5 было бесплатным и доступно по адресу http://moeaframework.sourceforge.net/documentation.html –