2016-03-01 2 views
1

У меня есть 3 комплекта паретовских передних решений собраны из МЭ алгоритмовземли парето передние решения в Java

мне интересно, если есть библиотека Java, которая может помочь привлечь 3-Пареты в том же участке от 3-х наборов данных ,

У меня есть 2-объектная проблема. Поэтому я думаю, мне нужен 2D-график.

Вы можете помочь мне с примера.

ответ

2

MOEA Framework поставляется со многими инструментами для анализа выхода MOEA. Он включает в себя инструмент диагностики, который может генерировать 2D-графики нескольких фронтов Парето. Вы можете импортировать свои данные с помощью встроенных инструментов, а затем легко отображать их с помощью диагностического инструмента. Следующее изображение было взято из диагностического инструмента. Я выполнил NSGA-II и SMPSO, чтобы решить пробную проблему LZ3 с 10 семенами. Набор аппроксимаций (например, известный фронт Парето) показан в верхнем правом углу.

MOEA Diagnostic Tool

Инструмент диагностики в МЭ Framework строит графики с использованием JFreeChart. Если вас интересует только отображение графиков ваших данных (и не выполнение какого-либо другого анализа), вы можете просто использовать JFreeChart. Тем не менее, я рекомендую использовать Диагностический инструмент, поскольку он поставляется со многими другими функциями (например, возможность вычисления Hypervolume, Generational Distance, Additive Epsilon Indicator)

Наконец, вы всегда можете прибегнуть к использованию диаграмм JavaFX. Это довольно надежный (хотя и незрелый) API, и диаграммы на самом деле довольно красивы. Ниже вы найдете скриншот сюжета XY-Scatter, который я построил с помощью JavaFX. Код для создания этого графика доступен ниже. Дополнительные примеры/уроки доступны в http://docs.oracle.com/javafx/2/charts/jfxpub-charts.htm

JavaFX Chart

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); 
    } 
} 
+0

Я новичок в МЭ: Вы можете объяснить, как импортировать данные с помощью встроенных инструментов, а затем отобразить их с помощью инструмента диагностики? Есть ли ссылка для изучения/создания/обработки файла .adf (формат, заданный для загрузки в диагностическом инструменте) –

+0

@ ale-6 Последнее руководство пользователя составляет 15 долларов США и доступно по адресу http://moeaframework.org/documentation.html Однако руководство для v2.5 было бесплатным и доступно по адресу http://moeaframework.sourceforge.net/documentation.html –

Смежные вопросы