4

我有以下图表:

在此处输入图像描述

我被告知以下信息:

(1) 顶点 A 到顶点 X 用 lambda = 4 的指数分布来描述;

(2) 顶点 A 到顶点 Y 用 lambda = 2.5 的指数分布来描述;

(3) 顶点 X 到顶点 Y 等同于顶点 Y 到顶点 X,并且用 lambda = 10 的指数分布来描述;

(4) 顶点 X 到顶点 B 用 lambda = 3 的指数分布来描述;最后,

(5) 顶点 Y 到顶点 B 由 lambda = 5 的指数分布描述。

假设我在每次模拟时都在顶点之间采用最快的路径。

我现在想知道从顶点 A 到顶点 B 所需的平均时间。

我的R代码如下:

# Generate/simulate 1000 random numbers for each of the internode paths.
        
            AtoX <- rexp(1000, 4)
            AtoY <- rexp(1000, 2.5)
            XtoY <- rexp(1000, 10)
            XtoB <- rexp(1000, 3)
            YtoB <- rexp(1000, 5)
    
    # Length of path from A to X to Y and A to Y to X.
            
            AYX = AtoY + XtoY
            AXY = AtoX + XtoY
    
    # Total time of paths from A to B. 
            
            AXB = AtoX + XtoB
            AYB = AtoY + YtoB
            AXYB = AtoX + XtoY + YtoB
            AYXB = AtoY + XtoY + XtoB
    
    # Taking the fastest path of all paths. 
            
            minAXB = min(AXB)
            minAYB = min(AYB)
            minAXYB = min(AXYB)
            minAYXB = min(AYXB)
    
    # Taking an average of the fastest paths.
            
            averageTravelTime = 
              mean(minAXB + minAYB + minAXYB + minAYXB)

这看起来正确吗?

4

1 回答 1

3
  1. 这取决于解释,但我想说你需要分别模拟从 X 到 Y 和从 Y 到 X 的时间,尽管速度相同。如果一列火车双向行驶并且平均速度相同,这并不意味着从 X 和 Y 出发的两列火车会同时到达另一点。

  2. 你没有使用

    AYX <- AtoY + XtoY
    AXY <- AtoX + XtoY
    

    所以它们是多余的。

  3. 写作minAXB <- min(AXB)真的没有意义。您为每条边模拟 1000 次旅行时间,AXB是 1000 次路线的矢量,AXB现在您正在选择时间最短的路线。

  4. 同样,averageTravelTime没有意义,因为minAXB + minAYB + minAXYB + minAYXB它只是一个数字,而不是一个向量。

因此,我认为代码应该是

set.seed(1)
AtoX <- rexp(1000, 4)
AtoY <- rexp(1000, 2.5)
XtoY <- rexp(1000, 10)
YtoX <- rexp(1000, 10) # added
XtoB <- rexp(1000, 3)
YtoB <- rexp(1000, 5)

AXB <- AtoX + XtoB
AYB <- AtoY + YtoB
AXYB <- AtoX + XtoY + YtoB
AYXB <- AtoY + YtoX + XtoB # changed XtoY to YtoX

TravelTimes <- pmin(AXB, AYB, AXYB, AYXB)
averageTravelTime <- mean(TravelTimes)

?pmin。对于每一天,它选择最快的旅行时间并返回一个长度为 1000 的向量。

作为奖励,以下显示了哪条路线最快的次数

table(apply(cbind(AXB, AYB, AXYB, AYXB), 1, which.min))
#   1   2   3   4 
# 317 370 240  73 
于 2018-03-20T12:47:57.803 回答