「待ち行列」をGolangでプログラミング
 
									
統計検定2級の勉強ついでに待ち行列を再勉強してみました。
「待ち行列」そのものの勉強はこちらを参考にさせていただきました。
っと思い、Golang + Docker + uikitでアプリを作ってみました。

																		
																			
																	せっかくなのでプログラミング
とりあえず分かったところで、せっかくなので Webアプリとして答えを求められればいいなっと思い、Golang + Docker + uikitでアプリを作ってみました。

type QueueingTheory struct {
    Window   string `form:"window" binding:"required,min=1,max=1"`
    Arrived  string `form:"arrived" binding:"required,min=1,max=3"`
    Servises string `form:"servises" binding:"required,min=1,max=3"`
}
type QueueingResult struct {
    // ID             uint   `json:"id"`
    WaitMan        string `json:"wait_man"`         // 待ち人(人)
    WaitTime       string `json:"wait_time"`        // 待ち時間(分)
    TurnAroundTime string `json:"turn_around_time"` // ターンアラウンドタイム(分)
}
var queueing_result QueueingResult // 計算結果を格納
func exec_queueing(ta, ts, win float64) error {
    λ := 1.0 / ta
    u := win * 1.0 / ts
    ro := λ / u // 混雑度
    fmt.Println("結果:", λ, u, math.Pow(ro, win))
    wait_man := math.Pow(ro, win) / (1 - math.Pow(ro, win)) // 待ち人
    wait_time := wait_man * ts
    turn_around_time := wait_time + ts
    // queueing_result.ID += 1
    queueing_result.WaitMan = strconv.FormatFloat(wait_man, 'f', 1, 64)
    queueing_result.WaitTime = strconv.FormatFloat(wait_time, 'f', 3, 64)
    queueing_result.TurnAroundTime = strconv.FormatFloat(turn_around_time, 'f', 3, 64)
    return nil
}
全部のソースはGithubに上げてみました。


