0

グラフとアルゴリズムを示すためのツールを作成しようとしています。そのために、GraphStream ライブラリを見つけました。そのドキュメントとチュートリアルをすべて読みましたが、これを機能させることはできません。グラフをカスタム GUI (ボタン付きの左側のメニューと右側のグラフ スペース) に配置しようとしていますが、なんとかそれを行うことができました。2 つのボタンを有効にすると、生成 - ランダム ジェネレーターでグラフを作成し、クリア - グラフをクリアすると、すべて正常に動作しますが、生成を押してクリアした後、次のエラーが発生します。

スレッド "Thread-2" org.miv.pherd.IdAlreadyInUseException の例外: 同じ識別子を持つ粒子が既に存在します (0)

GUIを使用しない単純なテストプログラムで、メインで同じことを行う単純なコードを作成し、それが機能するため、これが問題である理由がわかりません。

public class Test {

public static void main(String[] args){

     Graph graph = new SingleGraph("test");

      graph.display();

      Generator generator = new BarabasiAlbertGenerator();
      generator.addSink(graph);
      generator.begin();
      for (int i = 0; i < 100; i++) {
      generator.nextEvents();
      }

      generator.end();

      graph.clear();
      generator = new BarabasiAlbertGenerator();
      generator.addSink(graph);
      generator.begin();
      for (int i = 0; i < 100; i++) {
      generator.nextEvents();
      }
      generator.end();


}

このコードは機能しますが、GUI 内でボタンを使用して実行すると、上記のエラーがスローされます。また、プログラムで実行されているスレッドの数も確認しましたが、そのうちの 3 つが実行されているようです。私の問題がかなり明確で、誰かが私を助けてくれることを願っています。皆さん、ありがとうございました!

4

1 に答える 1

2

BarabasiAlbertGeneratorこれは、クラスの既知のバグが原因です(対応するGraphstream ユーザー スレッドを参照してください)。

このバグはライブラリの 1.3.x バージョンで修正されており、現在http://graphstream-project.org/pub/1.x/nightly-build/last/でナイトリー ビルドとして入手できます。

(将来的には、この修正は通常の Graphstream ダウンロードの一部になるはずです)

于 2014-12-19T10:12:57.040 に答える