戰地指揮所-資訊傳遞耗時計算

場景

  1. 戰場混亂,傳遞資訊不易,『戰地指揮所』傳遞資訊給『前進指揮所』前,因為幅員廣闊,必須經過若干『中繼指揮所』(假設為 M 個),才能將資訊傳遞給『前進指揮所』。
  2. 『戰地指揮所』在傳遞資訊前,必須確定『前進指揮所』能接收資訊,因此在傳遞真實作戰資訊前,先傳遞『驗證資訊』。
    『前進指揮所』收到『驗證資訊』後,必須回傳『驗證碼』給『戰地指揮所』。

  3. 『戰地指揮所』傳遞『驗證資訊』給『中繼指揮所』,『中繼指揮所』轉送給其他『中繼指揮所』,『中繼指揮所』傳遞『驗證資訊』給『前進指揮所』,
    各段傳遞『驗證資訊』所需時間(Tokentransmit)假定均相同。

  4. 各『中繼指揮所』收到『驗證資訊』或『驗證碼』需要處理轉送時間(Tokenprocess)假定均相同。

  5. 『前進指揮所』回傳『驗證碼』給『戰地指揮所』,所經過之路徑,並須與接收時相同,因為『中繼指揮所』要確認『驗證碼』是否正確,也就是必須經過相同之『中繼指揮所』。

  6. 『前進指揮所』收到『戰地指揮所』之『驗證碼』後,開始傳遞真實作戰資訊。『前進指揮所』將作戰資訊(假設為 N 個單位資料量)切割成若該等分(假設為 Packetsize)資訊包裹,由不同傳訊員同時傳遞。

  7. 假定傳訊員傳遞至『中繼指揮所』,再從『中繼指揮所』至下一個『中繼指揮所』,直至『前進指揮所』,所需傳遞時間(Datatransmit)均相同。

  8. 各『中繼指揮所』需要處理作戰資轉送時間(Dataprocess)假定均相同。

  9. 『前進指揮所』收完最後一個資訊包裹後,必須循原傳遞路徑回傳『已收畢碼』給『戰地指揮所』,假定傳遞時間與『驗證資訊』相同。

問題

  1. 『前進指揮所』何時收到第一個作戰資訊包裹?
  2. 『戰地指揮所』傳遞 N 單位作戰資訊至『前進指揮所』,總需時若干?

分析

  • 因為在『戰地指揮所』與『前進指揮所』之間,有『中繼指揮所數:M』,而『驗證資訊傳遞時間:Tokentransmit』,因此:

    • 『總驗證資訊傳遞時間:Totaltoken = Tokentransmit + M * (Tokentransmit + Tokenprocess) = (M + 1) * Tokentransmit + M * Tokenprocess』。
    • 『總驗證碼傳遞時間:Totalvalid = Totaltoken』。
    • 『總已收畢碼傳遞時間:Totalroger = Totaltoken』。
    • 『總非作戰資料傳遞時間:Totaltoken,valid,roger = 3 * Tokentoken = 3 * ((M + 1) * Tokentransmit + M * Tokenprocess)』。
  • 因為『作戰資訊量:N』『資訊包裹資訊量:Packetsize』,因此『資訊包裹數:P = RoundUp(N / Packetsize)』,因此:

    • 『第 1 個作戰資料包裹到達前進指揮所時間:Data1 = Datatransmit + M * (Datatransmit + Dataprocess) = (M + 1) * Datatransmit + M * Dataprocess』。
      • 『前進指揮所』收到第一個作戰資訊包裹時間:TotalData1 = Totaltoken + Totalvalid + Data1 = 2 * ((M + 1) * Tokentransmit + M * Tokenprocess) + (M + 1) * Datatransmit + M * Dataprocess
    • 『其餘作戰資料包裹到達前進指揮所時間:Dataothers = (P - 1) * M * (Datatransmit + Dataprocess) = (P - 1) * M * Datatransmit + (P - 1) * M * Dataprocess』。

    • 『總作戰資料傳遞時間:Data1,others = Data1 + Dataothers = (P * M + 1) * Datatransmit + (P * M + 1) * Dataprocess = (P * M + 1) * (Datatransmit + Dataprocess)』。
  • 『戰地指揮所』傳遞 N 單位作戰資訊至『前進指揮所』,總需時:Totaltime = Totaltoken,valid,roger + (Data1,others),因此:

    • Totaltime = 3 * ((M + 1) * Tokentransmit + M * Tokenprocess) + (P * M + 1) * (Datatransmit + Dataprocess)。


GNU R 程式碼:

tansmisionTimeOfToken <- 2.5
tokenProcessTimeOfMidPoint <- 1.5

numOfMidPoint <- 2

totalDataSize <- 244
PacketDataSize <- 15

timeOfDataPacketTransmission <- 18
dataPacketProcessTimeOfMidPoint <- 3

############################################################################################################################

output <- function(format, val) {
msg <- sprintf(format, val)
print(msg)
}


# 總驗證資訊傳遞時間:前進指揮所 -> 中繼指揮所 -> 戰地指揮所
totalTimeOfTokenTransmission <- tansmisionTimeOfToken + numOfMidPoint * (tansmisionTimeOfToken + tokenProcessTimeOfMidPoint)
output("總驗證資訊傳遞時間=%.2f", totalTimeOfTokenTransmission)

# 總驗證碼傳遞時間:戰地指揮所 -> 中繼指揮所 -> 前進指揮所
totalTimeOfTokenValidation <- tansmisionTimeOfToken + numOfMidPoint * (tansmisionTimeOfToken + tokenProcessTimeOfMidPoint)
output("總驗證碼傳遞時間=%.2f", totalTimeOfTokenValidation)

# 通信建立時間:前進指揮所 -> 中繼指揮所 -> 戰地指揮所
totalTimeOfCommunicationSetup <- totalTimeOfTokenTransmission + totalTimeOfTokenValidation
output("通信建立時間=%.2f", totalTimeOfCommunicationSetup)

# 通信包裹數
numOfPackets <- ceiling(totalDataSize / PacketDataSize)
output("通信包裹數=%.2f", numOfPackets)

# 第一個通信包裹到達時間:前進指揮所 -> 中繼指揮所 -> 戰地指揮所
timeOfFirstDataPacketTransmission <- numOfMidPoint * (timeOfDataPacketTransmission + dataPacketProcessTimeOfMidPoint)
output("第一個通信包裹到達前進指揮所時間=%.2f", totalTimeOfCommunicationSetup + timeOfFirstDataPacketTransmission)

# 最後一個通信包裹到達時間:前進指揮所 -> 中繼指揮所 -> 戰地指揮所
timeOfOtherDataPacketsTransmission <- numOfPackets * numOfMidPoint * (timeOfDataPacketTransmission + dataPacketProcessTimeOfMidPoint)
output("最後一個通信包裹到達前進指揮所時間=%.2f", totalTimeOfCommunicationSetup + timeOfOtherDataPacketsTransmission)

# 總已收畢碼傳遞時間:戰地指揮所 -> 中繼指揮所 -> 前進指揮所
totalTransmissionTimeOfDataACK <- tansmisionTimeOfToken + numOfMidPoint * (tansmisionTimeOfToken + tokenProcessTimeOfMidPoint)
output("總已收畢碼傳遞時間=%.2f", totalTransmissionTimeOfDataACK)

# 所有資料傳遞時間:前進指揮所 -> 中繼指揮所 ->
戰地指揮所
totalTimeOfInformationTransmission <- totalTimeOfCommunicationSetup + timeOfOtherDataPacketsTransmission + totalTransmissionTimeOfDataACK
output("所有資料傳遞時間=%.2f", totalTimeOfInformationTransmission)

  • 總驗證資訊傳遞時間=10.50

  • 總驗證碼傳遞時間=10.50

  • 通信建立時間=21.00

  • 通信包裹數=17.00

  • 第一個通信包裹到達前進指揮所時間=63.00

  • 最後一個通信包裹到達前進指揮所時間=735.00

  • 總已收畢碼傳遞時間=10.50

  • 所有資料傳遞時間=745.50

ċ
BattleMesaging.xml
(27k)
李智,
2011年4月16日 下午11:47
ċ
WarGame.R
(3k)
李智,
2011年4月17日 上午5:47