2011-10-04 4 views
2

패킷 도착 및 전송 시도 이벤트가 포아송 분포를 따르는 네트워크 시뮬레이터를 개발 중입니다. 포아송 과정을 무작위로 바닥을 재조정 노드포아송 변량, λ 및 도착률 연결, Java 네트워크 시뮬레이션

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; 

    } 
} 

내 사양 상태 : 내가 크 누스의 알고리즘의 적응을 가지고있다. 평균 interarrival time은 평균 Ts = 2.5ms로 기하 급수적으로 분포한다. λ = 2.5를 사용하는 것이 맞습니까? 이 시뮬레이터는 아마도 여러 번 실행

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

증가 부하마다 성능을 측정하기 :

내가 뭔가를 할 새로운 도착 이벤트를 만들고 싶어

. 처음에 나는 도착률이 λ와 같다고 생각했지만, λ가 클수록 초당 패킷 수가 적었습니다. 도착률과 λ의 관계는 무엇입니까? 매우 긴 게시물에 대해 유감이지만 네트워크 시뮬레이션을위한 유효한 출처가 없으면 많은 대학 서적과 인터넷을 통해 검색하면 정말 실망합니다.

감사합니다.

+6

사람들이 Java에 lambdas가 없다고 말합니다. –

답변

3

포아송 과정에서는 포아송 분포가 필요하지 않지만 지수 분포는 필요하지 않습니다. wikipedia을 확인하십시오.

코드에서 시뮬레이트하는 도착 간 시간은 매개 변수 λamba = 1/2.5 (λ는 평균의 역수)의 exponential distribution을 따릅니다. -Math.log (1.0 - rand.nextDouble())/lambda를 사용하여 쉽게 임의의 지수 변량을 얻을 수 있습니다.

포아송 프로세스에는 두 가지보기가 있습니다. 위에서 설명한 뷰는 이벤트 수를 고정시키고 (1) 시간 간격이 다릅니다. 다른보기는 시간 간격을 고정으로 유지하지만 해당 간격의 이벤트 수는 임의의 변량입니다 (그리고 포아송 분포를 따릅니다).

+0

해답을 찾아 주셔서 대단히 감사합니다. 마침내 의미가 있습니다. –

0

Ts = 2.5ms. λ = 2.5를 사용하여 정확합니까?

No. Ts는 입니다. λ는 비율이며, 초당 항목 수는입니다. William Stallings, Queueing Analysis.

+0

해답을 찾아 주셔서 대단히 감사합니다. pdf도 훌륭합니다. 제안 된로드에 대한 다른 질문에 대답했습니다. –