這樣做的一種方法是使用蒙特卡洛模擬。下面的例子只是爲了讓你開始。
假設您有三個城市L,P和B.呼叫路由分別爲(0.2,0.3,0.5)。呼叫通過給定城市所花費的時間通常以平均值取決於城市,標準偏差= 1(例如毫秒)。在本例中,我將L,P,B的平均時間分別定義爲(30 ms,20 ms,10 ms)。這是關於定義在城市中旅行需要多長時間的意見。
然後,我們使用下面的代碼進行模擬。
Monte.Carlo <- function(df) {
set.seed(1)
path <- sample(df$cities, 1000, p=c(0.2,0.3,0.5), replace=T)
mu <- df[match(path,df$cities),]$t.mean
time <- sapply(mu,function(mu)rnorm(1,mu))
}
par(mfrow=c(3,1))
cities <- c("L","P","B")
t.mean <- c(30,20,10)
df <- data.frame(cities,t.mean)
hist(Monte.Carlo(df), breaks=50, xlim=c(5,35),main="(L,P,B)=(30,20,10)")
t.mean <- c(25,20,15)
df <- data.frame(cities,t.mean)
hist(Monte.Carlo(df), breaks=50, xlim=c(5,35), main="(L,P,B)=(25,20,15)")
t.mean <- c(22,20,18)
df <- data.frame(cities,t.mean)
hist(Monte.Carlo(df), breaks=50, xlim=c(5,35), main="(L,P,B)=(22,20,18)")
![](https://i.stack.imgur.com/ePmjP.png)
仿真過程如下:
- 定義
path
向量其指示哪個城市的呼叫被路由通過,對於每個1000級的呼叫。這是一個「L」,「P」或「B」的隨機向量,其中有問題陳述中給出的概率。
- 使用
df
中的定義將城市「名稱」映射爲平均時間。
- 對於
path
中的每個呼叫,計算路由時間作爲具有適當均值的正態分佈的單個隨機樣本。
然後,我們使用不同的平均佈線時間定義運行模擬三次。在第一種情況下請注意大部分通話需要大約10ms。這是因爲根據我們的定義,通過B(erlin)的路由平均需要10ms,並且平均有50%的呼叫通過柏林。
您需要一些正式的方式來定義需要多長時間才能穿越每個城市。現在,根據信號在哪個城市傳播,沒有任何區別 –