我有3套的帕累託前沿的解決方案從MOEA算法收集情節帕累託前沿的解決方案
我想知道是否有一個Java庫,可以幫助從3組數據繪製在同積3分帕累託。
我有一個2目標的問題。所以我想我需要一個2D劇情。
你可以幫我舉一個例子。
我有3套的帕累託前沿的解決方案從MOEA算法收集情節帕累託前沿的解決方案
我想知道是否有一個Java庫,可以幫助從3組數據繪製在同積3分帕累託。
我有一個2目標的問題。所以我想我需要一個2D劇情。
你可以幫我舉一個例子。
MOEA Framework附帶有許多分析MOEA輸出的工具。它包括一個診斷工具,可以生成多個帕累託前沿的二維圖。您可以使用內置工具導入數據,然後使用診斷工具輕鬆顯示它們。以下圖像是從診斷工具中捕獲的。我執行NSGA-II和SMPSO來解決10粒種子的LZ3測試問題。近似集合(例如已知的Pareto Front)顯示在右上角。
在MOEA Framework中的診斷工具使用JFreeChart構建其情節。如果您只對顯示數據的圖表感興趣(並且不執行任何其他分析),則可能只想使用JFreeChart。不過,我推薦使用診斷工具,因爲它帶有許多其他功能(例如,計算超容量,代間距離,添加劑Epsilon指示器的能力)
最後,您可以隨時使用JavaFX圖表。這是一個相當強大(雖然不成熟)的API,並且圖表實際上非常漂亮。在下面,您會看到我使用JavaFX構建的XY散點圖的屏幕截圖。生成此圖的代碼在下面提供。另外的例子/教程可在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);
}
}
我是新來MOEA:你能解釋一下如何使用內置的工具導入數據,然後使用診斷工具顯示它們?是否有學習/生成/處理.adf文件的參考(要求在診斷工具中加載的格式) –
@ ale-6最新的用戶指南是$ 15,可從http://moeaframework.org/documentation.html獲取。但是,v2.5的用戶指南可以在http://moeaframework.sourceforge.net/documentation.html上免費獲取。 –