2

私は、パケットの到着と送信試行のイベントがポアソン分布に従うネットワーク シミュレータを開発しています。私はクヌースのアルゴリズムを適応させています:

public class Poisson {

    private double λ;
    private Random rand;

    /** Creates a variable with a given mean. */
    public Poisson(double λ) {
        this.λ = λ;
        rand = new Random();
    }

    public int next() {
        double L = Math.exp(-λ);
        double p = 1.0;
        int k = 0;

        do {
            k++;
            p *= rand.nextDouble();
        } while (p > L);

        return k - 1;

    }
}

私の仕様では、ノードはポアソン過程でフロアをランダムに再スケジュールすると述べています。平均到着間隔は、平均 Ts = 2.5ms で指数分布します。λ = 2.5 を使用するのは正しいですか?

新着イベントを作成したいときは、次のようにします。

Event evt = new Event(EventType.ARRIVAL_EVENT,
    MasterClock.getTime + poisson.next());
eventList.add(evt);

シミュレーターは、パフォーマンスを測定するために負荷が増加するたびに、数回実行されていると思われます。最初は、到着率は λ に等しいと思っていましたが、λ が大きいほど、1 秒あたりのパケット数は少なくなります。到着率とλの関係は?非常に長い投稿で申し訳ありませんが、ネットワーク シミュレーションの有効なソースがなく、多くの大学の書籍やインターネット全体を検索することに本当にイライラしています...

よろしくお願いいたします。

4

2 に答える 2

4

奇妙に思えるかもしれませんが、ポアソン過程では、ポアソン分布ではなく指数分布が必要です。ウィキペディアを見てください。

コードでシミュレートしている到着間隔は、パラメーター lambda = 1 / 2.5 の指数分布に従います (lambda は平均の逆数です)。-Math.log(1.0 - rand.nextDouble()) / lambda を使用すると、ランダムな指数変量を簡単に取得できます。

ポアソン過程には 2 つのビューがあります。上記のビューは、イベントの数を固定 (1) に保ち、時間間隔を変化させます。もう 1 つのビューでは、時間間隔は固定されていますが、その間隔内のイベント数は確率変量です (そしてポアソン分布に従います)。

于 2011-10-05T00:41:24.037 に答える
0

Ts = 2.5ms。λ = 2.5 の使用は正しいですか?

いいえ、Ts は時間です。λ は到着率で、1 秒あたりのアイテム数です。William Stallings の「Queueing Analysis」を参照してください。

于 2011-10-05T01:20:24.090 に答える