줄 서기 이론의 세 가지
이른바 M/M/N/N/N/N 모델
M/M/N/N/N 모델은 파송 분포에 따라 서버가 도착하고 서비스에 걸리는 시간은 지수 분포에 따라 분포하는 모델이다.행렬의 길이는 최대 0이다.줄을 설 수 없다는 뜻이다.서비스의 규율은 생략되었지만 FCFS입니다.이 시스템도 아란의 호출률 시스템이라고 불린다.이 모델은 줄을 서지 못하는 모델에게는 기본적인 아이디어이기 때문에 가장 이해가 간다.또한 이 모델의 사용률과 정의된 $$\rho=\rac{lambda} {N\mu}를 주의하십시오.
시스템에 n명이 존재할 확률
우선 고객이 파송 과정에 따라즉, $\Deltat 달러로 충분한 간격을 설정하면 최대 한 명의 고객만 올 수 있습니다.이때 평균 도착률은 $\lambda와 한 고객이 올 확률은 $\lambda\Delta달러로 표시할 수 있다.시간 t시스템에서 클라이언트 k의 확률을 $P로 설정합니다k(t)달러입니다.이 확률의 $\Deltat 달러 이후의 변화를 기술합니다.마찬가지로 고객이 평균 서비스 $\mu$의 서버에서 나올 확률도 $\mu\Delta달러가 됩니다.
여기까지는 지난번의 가설과 같다.이번에 우리는 상태 k가 $1\leqk\leqn달러일 때의 평균 서비스율을 $k\mu달러로 정할 것이다.이는 평균 서비스 비율이 $\mu달러인 서버가 k대를 이동하고 있음을 의미합니다.다음은 시스템에서 고객의 수량 변화를 나타내는 방정식(상태 방정식)이다.단, 저번와 같은 상황에서 경계를 나누는 $k=0, N달러에 주의해야 한다.10분이 지나서 안정된 상태로 계산하면
$P_k=\frac{\frac{a^k}{k!}}{\sum_{i=0}^{N}\frac{a^i}{i!}}$
그러나 $(i=0,...,N), a=\rac{lambda} {\mu}달러.
이렇게 하면 우리는 시스템에 k명의 고객이 있을 확률을 알게 된다.
이후 우리는 줄 서기 초기에 자주 발생하는 공식을 모색할 것이다.
시스템 내 평균 손님 수 L
L은 평균, 즉 기대치이기 때문에 $L=\sum{k=0}^{N}kP_$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.따라서 $L=\sum{k=0}^{N}kP_k$
$=a\frac{\sum_{k=0}^{N}\frac{a^k}{k!}-\frac{a^N}{N!}}{\sum_{k=0}^{N}\frac{a^k}{k!}}$
$=a(1-P_N)$
시스템 내 평균 대기 시간 W
작은 공식 $W=\rac{L} {lambda} =\racc {1-P N} {mu} 달러
줄을 서는 평균 손님 수 Lq
줄을 설 수 없기 때문에 0입니다.
대기열 평균 대기 시간 Wq
대기열에 배열되지 않기 때문에 0입니다.
호출 손실률
호출 손실률이란 줄을 서지 못하고 쫓겨난 사람의 비율을 뜻한다.일반 $Pb$EN (a) 달러로 표시됩니다. 여기는 달러 E 입니다.N달러.호출 손실률이 서버가 묻힐 확률과 같기 때문에 $EN(a)=P_모두 N달러입니다.알라가 이것을 발견했기 때문에 알란 B식이라고 불린다.주제 밖의 말을 좀 해라. C식 방이라고 한다.
더 재미있는 건 점화식으로.
$E_0(a)=1$
$E_N=\frac{a E_{N-1}(a)}{s+a E_{N-1}(a)}$
설립,$FN(a)=\rac{1}{E N(a)}$에 넣으면
$F_0(a)=1$
$F_N(a)=1+\frac{N}{a}F_{N-1}(a)$
성립N은 모두 1 이상의 정수다.
통과량 Y와 잃어버린 양 al
통과된 양은 시스템 내의 평균 손님 수이다.즉 $Y=a(1-P N)=a(1-E N(a)$)이로써 전체의 평균 a에서 통과한 양을 빼고 잃어버린 양을 계산하면 $al=a-Y=a E_N달러.
a와 N의 관계
B 를 0 이상 1 이하의 일정치로 $EN(a)=B달러입니다.현재 $EN(a)$a에 대한 편미분 방정식
$\frac{\partial E_N(a)}{\partial a}=(\frac{N}{a}-1+E_N(a))E_N(a)$
$EN(a)=B달러의 조건에서 풀면 a와 N의 것을 얻을 수 있다.또한 N, a, B의 활용도 $N(B)=\racc {a(1-B)] {N} 달러가 성립될 것 같습니다.
이번에는 파이톤으로 이 두 도표를 써 보았다.
프로그램입니다.
M_M_N_N.py![N_a.png](https
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
# 無駄が多いプログラム
def E_B(N, a):
# アーランB式を計算する。
# Nはサーバー数
# aはトラフィック密度
p=1
i=1
while i < N+1:
b = a * p
p = b / (i + b)
i += 1
return p
def make_list(n, b):
# nはサーバー数の最大値
# bはニュートン法で解く為の目的関数E_B(N, a)-BのBを表していて呼損率を表す。
p = [0 for i in range(n+1)] # n+1番目がE_B(N, a)となる
p[0] = 0 # a=s=0は明らかに成り立つ為
c = 1 # a_0として初期値cを決める。
for i in range(1, len(p)):
a = c
# E(N,a)=Bとなる値を20回程度の繰り返しで求める。
for j in range(20):
t = E_B(i, a)
a = a - (t-b) / ((i/a-1+t)*t)
p[i] = a
c=a # 次回用に妥当な初期値に更新しておく
return p
# ここからは描画と実行
n=50
b=0.01
p = make_list(n, b)
plt.figure()
plt.plot(range(n+1), p)
plt.xlabel("N")
plt.ylabel("a")
plt.title("E_N(a)=%.3f" % b)
plt.figure()
rho = [0]
for n, a in enumerate(p):
if n == 0:
continue
rho.append(a*(1-b)/n)
plt.plot(range(n+1), rho)
plt.xlabel("N")
plt.ylabel("rho_N(B)")
plt.title("E_N(a)=%.3f" % b)
plt.show()
이 프로그램에 따르면 데이터 밀도 a와 서버 수 N의 관계는
따라서 B를 호출 손실률로 사용하는 경우 $\rhoN(B)$
총결산
지금까지 이 시리즈는 qita였지만 프로그래밍이 없어서 넣어봤어요.
주의해야 할 것은 $0다음엔 어떡해?
Reference
이 문제에 관하여(줄 서기 이론의 세 가지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ogata-k/items/8700023cbf3e613aff37
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
우선 고객이 파송 과정에 따라즉, $\Deltat 달러로 충분한 간격을 설정하면 최대 한 명의 고객만 올 수 있습니다.이때 평균 도착률은 $\lambda와 한 고객이 올 확률은 $\lambda\Delta달러로 표시할 수 있다.시간 t시스템에서 클라이언트 k의 확률을 $P로 설정합니다k(t)달러입니다.이 확률의 $\Deltat 달러 이후의 변화를 기술합니다.마찬가지로 고객이 평균 서비스 $\mu$의 서버에서 나올 확률도 $\mu\Delta달러가 됩니다.
여기까지는 지난번의 가설과 같다.이번에 우리는 상태 k가 $1\leqk\leqn달러일 때의 평균 서비스율을 $k\mu달러로 정할 것이다.이는 평균 서비스 비율이 $\mu달러인 서버가 k대를 이동하고 있음을 의미합니다.다음은 시스템에서 고객의 수량 변화를 나타내는 방정식(상태 방정식)이다.단, 저번와 같은 상황에서 경계를 나누는 $k=0, N달러에 주의해야 한다.10분이 지나서 안정된 상태로 계산하면
$P_k=\frac{\frac{a^k}{k!}}{\sum_{i=0}^{N}\frac{a^i}{i!}}$
그러나 $(i=0,...,N), a=\rac{lambda} {\mu}달러.
이렇게 하면 우리는 시스템에 k명의 고객이 있을 확률을 알게 된다.
이후 우리는 줄 서기 초기에 자주 발생하는 공식을 모색할 것이다.
시스템 내 평균 손님 수 L
L은 평균, 즉 기대치이기 때문에 $L=\sum{k=0}^{N}kP_$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.따라서 $L=\sum{k=0}^{N}kP_k$
$=a\frac{\sum_{k=0}^{N}\frac{a^k}{k!}-\frac{a^N}{N!}}{\sum_{k=0}^{N}\frac{a^k}{k!}}$
$=a(1-P_N)$
시스템 내 평균 대기 시간 W
작은 공식 $W=\rac{L} {lambda} =\racc {1-P N} {mu} 달러
줄을 서는 평균 손님 수 Lq
줄을 설 수 없기 때문에 0입니다.
대기열 평균 대기 시간 Wq
대기열에 배열되지 않기 때문에 0입니다.
호출 손실률
호출 손실률이란 줄을 서지 못하고 쫓겨난 사람의 비율을 뜻한다.일반 $Pb$EN (a) 달러로 표시됩니다. 여기는 달러 E 입니다.N달러.호출 손실률이 서버가 묻힐 확률과 같기 때문에 $EN(a)=P_모두 N달러입니다.알라가 이것을 발견했기 때문에 알란 B식이라고 불린다.주제 밖의 말을 좀 해라. C식 방이라고 한다.
더 재미있는 건 점화식으로.
$E_0(a)=1$
$E_N=\frac{a E_{N-1}(a)}{s+a E_{N-1}(a)}$
설립,$FN(a)=\rac{1}{E N(a)}$에 넣으면
$F_0(a)=1$
$F_N(a)=1+\frac{N}{a}F_{N-1}(a)$
성립N은 모두 1 이상의 정수다.
통과량 Y와 잃어버린 양 al
통과된 양은 시스템 내의 평균 손님 수이다.즉 $Y=a(1-P N)=a(1-E N(a)$)이로써 전체의 평균 a에서 통과한 양을 빼고 잃어버린 양을 계산하면 $al=a-Y=a E_N달러.
a와 N의 관계
B 를 0 이상 1 이하의 일정치로 $EN(a)=B달러입니다.현재 $EN(a)$a에 대한 편미분 방정식
$\frac{\partial E_N(a)}{\partial a}=(\frac{N}{a}-1+E_N(a))E_N(a)$
$EN(a)=B달러의 조건에서 풀면 a와 N의 것을 얻을 수 있다.또한 N, a, B의 활용도 $N(B)=\racc {a(1-B)] {N} 달러가 성립될 것 같습니다.
이번에는 파이톤으로 이 두 도표를 써 보았다.
프로그램입니다.
M_M_N_N.py![N_a.png](https
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
# 無駄が多いプログラム
def E_B(N, a):
# アーランB式を計算する。
# Nはサーバー数
# aはトラフィック密度
p=1
i=1
while i < N+1:
b = a * p
p = b / (i + b)
i += 1
return p
def make_list(n, b):
# nはサーバー数の最大値
# bはニュートン法で解く為の目的関数E_B(N, a)-BのBを表していて呼損率を表す。
p = [0 for i in range(n+1)] # n+1番目がE_B(N, a)となる
p[0] = 0 # a=s=0は明らかに成り立つ為
c = 1 # a_0として初期値cを決める。
for i in range(1, len(p)):
a = c
# E(N,a)=Bとなる値を20回程度の繰り返しで求める。
for j in range(20):
t = E_B(i, a)
a = a - (t-b) / ((i/a-1+t)*t)
p[i] = a
c=a # 次回用に妥当な初期値に更新しておく
return p
# ここからは描画と実行
n=50
b=0.01
p = make_list(n, b)
plt.figure()
plt.plot(range(n+1), p)
plt.xlabel("N")
plt.ylabel("a")
plt.title("E_N(a)=%.3f" % b)
plt.figure()
rho = [0]
for n, a in enumerate(p):
if n == 0:
continue
rho.append(a*(1-b)/n)
plt.plot(range(n+1), rho)
plt.xlabel("N")
plt.ylabel("rho_N(B)")
plt.title("E_N(a)=%.3f" % b)
plt.show()
이 프로그램에 따르면 데이터 밀도 a와 서버 수 N의 관계는
따라서 B를 호출 손실률로 사용하는 경우 $\rhoN(B)$
총결산
지금까지 이 시리즈는 qita였지만 프로그래밍이 없어서 넣어봤어요.
주의해야 할 것은 $0다음엔 어떡해?
Reference
이 문제에 관하여(줄 서기 이론의 세 가지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ogata-k/items/8700023cbf3e613aff37
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
작은 공식 $W=\rac{L} {lambda} =\racc {1-P N} {mu} 달러
줄을 서는 평균 손님 수 Lq
줄을 설 수 없기 때문에 0입니다.
대기열 평균 대기 시간 Wq
대기열에 배열되지 않기 때문에 0입니다.
호출 손실률
호출 손실률이란 줄을 서지 못하고 쫓겨난 사람의 비율을 뜻한다.일반 $Pb$EN (a) 달러로 표시됩니다. 여기는 달러 E 입니다.N달러.호출 손실률이 서버가 묻힐 확률과 같기 때문에 $EN(a)=P_모두 N달러입니다.알라가 이것을 발견했기 때문에 알란 B식이라고 불린다.주제 밖의 말을 좀 해라. C식 방이라고 한다.
더 재미있는 건 점화식으로.
$E_0(a)=1$
$E_N=\frac{a E_{N-1}(a)}{s+a E_{N-1}(a)}$
설립,$FN(a)=\rac{1}{E N(a)}$에 넣으면
$F_0(a)=1$
$F_N(a)=1+\frac{N}{a}F_{N-1}(a)$
성립N은 모두 1 이상의 정수다.
통과량 Y와 잃어버린 양 al
통과된 양은 시스템 내의 평균 손님 수이다.즉 $Y=a(1-P N)=a(1-E N(a)$)이로써 전체의 평균 a에서 통과한 양을 빼고 잃어버린 양을 계산하면 $al=a-Y=a E_N달러.
a와 N의 관계
B 를 0 이상 1 이하의 일정치로 $EN(a)=B달러입니다.현재 $EN(a)$a에 대한 편미분 방정식
$\frac{\partial E_N(a)}{\partial a}=(\frac{N}{a}-1+E_N(a))E_N(a)$
$EN(a)=B달러의 조건에서 풀면 a와 N의 것을 얻을 수 있다.또한 N, a, B의 활용도 $N(B)=\racc {a(1-B)] {N} 달러가 성립될 것 같습니다.
이번에는 파이톤으로 이 두 도표를 써 보았다.
프로그램입니다.
M_M_N_N.py![N_a.png](https
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
# 無駄が多いプログラム
def E_B(N, a):
# アーランB式を計算する。
# Nはサーバー数
# aはトラフィック密度
p=1
i=1
while i < N+1:
b = a * p
p = b / (i + b)
i += 1
return p
def make_list(n, b):
# nはサーバー数の最大値
# bはニュートン法で解く為の目的関数E_B(N, a)-BのBを表していて呼損率を表す。
p = [0 for i in range(n+1)] # n+1番目がE_B(N, a)となる
p[0] = 0 # a=s=0は明らかに成り立つ為
c = 1 # a_0として初期値cを決める。
for i in range(1, len(p)):
a = c
# E(N,a)=Bとなる値を20回程度の繰り返しで求める。
for j in range(20):
t = E_B(i, a)
a = a - (t-b) / ((i/a-1+t)*t)
p[i] = a
c=a # 次回用に妥当な初期値に更新しておく
return p
# ここからは描画と実行
n=50
b=0.01
p = make_list(n, b)
plt.figure()
plt.plot(range(n+1), p)
plt.xlabel("N")
plt.ylabel("a")
plt.title("E_N(a)=%.3f" % b)
plt.figure()
rho = [0]
for n, a in enumerate(p):
if n == 0:
continue
rho.append(a*(1-b)/n)
plt.plot(range(n+1), rho)
plt.xlabel("N")
plt.ylabel("rho_N(B)")
plt.title("E_N(a)=%.3f" % b)
plt.show()
이 프로그램에 따르면 데이터 밀도 a와 서버 수 N의 관계는
따라서 B를 호출 손실률로 사용하는 경우 $\rhoN(B)$
총결산
지금까지 이 시리즈는 qita였지만 프로그래밍이 없어서 넣어봤어요.
주의해야 할 것은 $0다음엔 어떡해?
Reference
이 문제에 관하여(줄 서기 이론의 세 가지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ogata-k/items/8700023cbf3e613aff37
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
대기열에 배열되지 않기 때문에 0입니다.
호출 손실률
호출 손실률이란 줄을 서지 못하고 쫓겨난 사람의 비율을 뜻한다.일반 $Pb$EN (a) 달러로 표시됩니다. 여기는 달러 E 입니다.N달러.호출 손실률이 서버가 묻힐 확률과 같기 때문에 $EN(a)=P_모두 N달러입니다.알라가 이것을 발견했기 때문에 알란 B식이라고 불린다.주제 밖의 말을 좀 해라. C식 방이라고 한다.
더 재미있는 건 점화식으로.
$E_0(a)=1$
$E_N=\frac{a E_{N-1}(a)}{s+a E_{N-1}(a)}$
설립,$FN(a)=\rac{1}{E N(a)}$에 넣으면
$F_0(a)=1$
$F_N(a)=1+\frac{N}{a}F_{N-1}(a)$
성립N은 모두 1 이상의 정수다.
통과량 Y와 잃어버린 양 al
통과된 양은 시스템 내의 평균 손님 수이다.즉 $Y=a(1-P N)=a(1-E N(a)$)이로써 전체의 평균 a에서 통과한 양을 빼고 잃어버린 양을 계산하면 $al=a-Y=a E_N달러.
a와 N의 관계
B 를 0 이상 1 이하의 일정치로 $EN(a)=B달러입니다.현재 $EN(a)$a에 대한 편미분 방정식
$\frac{\partial E_N(a)}{\partial a}=(\frac{N}{a}-1+E_N(a))E_N(a)$
$EN(a)=B달러의 조건에서 풀면 a와 N의 것을 얻을 수 있다.또한 N, a, B의 활용도 $N(B)=\racc {a(1-B)] {N} 달러가 성립될 것 같습니다.
이번에는 파이톤으로 이 두 도표를 써 보았다.
프로그램입니다.
M_M_N_N.py![N_a.png](https
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
# 無駄が多いプログラム
def E_B(N, a):
# アーランB式を計算する。
# Nはサーバー数
# aはトラフィック密度
p=1
i=1
while i < N+1:
b = a * p
p = b / (i + b)
i += 1
return p
def make_list(n, b):
# nはサーバー数の最大値
# bはニュートン法で解く為の目的関数E_B(N, a)-BのBを表していて呼損率を表す。
p = [0 for i in range(n+1)] # n+1番目がE_B(N, a)となる
p[0] = 0 # a=s=0は明らかに成り立つ為
c = 1 # a_0として初期値cを決める。
for i in range(1, len(p)):
a = c
# E(N,a)=Bとなる値を20回程度の繰り返しで求める。
for j in range(20):
t = E_B(i, a)
a = a - (t-b) / ((i/a-1+t)*t)
p[i] = a
c=a # 次回用に妥当な初期値に更新しておく
return p
# ここからは描画と実行
n=50
b=0.01
p = make_list(n, b)
plt.figure()
plt.plot(range(n+1), p)
plt.xlabel("N")
plt.ylabel("a")
plt.title("E_N(a)=%.3f" % b)
plt.figure()
rho = [0]
for n, a in enumerate(p):
if n == 0:
continue
rho.append(a*(1-b)/n)
plt.plot(range(n+1), rho)
plt.xlabel("N")
plt.ylabel("rho_N(B)")
plt.title("E_N(a)=%.3f" % b)
plt.show()
이 프로그램에 따르면 데이터 밀도 a와 서버 수 N의 관계는
따라서 B를 호출 손실률로 사용하는 경우 $\rhoN(B)$
총결산
지금까지 이 시리즈는 qita였지만 프로그래밍이 없어서 넣어봤어요.
주의해야 할 것은 $0다음엔 어떡해?
Reference
이 문제에 관하여(줄 서기 이론의 세 가지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ogata-k/items/8700023cbf3e613aff37
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
통과된 양은 시스템 내의 평균 손님 수이다.즉 $Y=a(1-P N)=a(1-E N(a)$)이로써 전체의 평균 a에서 통과한 양을 빼고 잃어버린 양을 계산하면 $al=a-Y=a E_N달러.
a와 N의 관계
B 를 0 이상 1 이하의 일정치로 $EN(a)=B달러입니다.현재 $EN(a)$a에 대한 편미분 방정식
$\frac{\partial E_N(a)}{\partial a}=(\frac{N}{a}-1+E_N(a))E_N(a)$
$EN(a)=B달러의 조건에서 풀면 a와 N의 것을 얻을 수 있다.또한 N, a, B의 활용도 $N(B)=\racc {a(1-B)] {N} 달러가 성립될 것 같습니다.
이번에는 파이톤으로 이 두 도표를 써 보았다.
프로그램입니다.
M_M_N_N.py![N_a.png](https
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
# 無駄が多いプログラム
def E_B(N, a):
# アーランB式を計算する。
# Nはサーバー数
# aはトラフィック密度
p=1
i=1
while i < N+1:
b = a * p
p = b / (i + b)
i += 1
return p
def make_list(n, b):
# nはサーバー数の最大値
# bはニュートン法で解く為の目的関数E_B(N, a)-BのBを表していて呼損率を表す。
p = [0 for i in range(n+1)] # n+1番目がE_B(N, a)となる
p[0] = 0 # a=s=0は明らかに成り立つ為
c = 1 # a_0として初期値cを決める。
for i in range(1, len(p)):
a = c
# E(N,a)=Bとなる値を20回程度の繰り返しで求める。
for j in range(20):
t = E_B(i, a)
a = a - (t-b) / ((i/a-1+t)*t)
p[i] = a
c=a # 次回用に妥当な初期値に更新しておく
return p
# ここからは描画と実行
n=50
b=0.01
p = make_list(n, b)
plt.figure()
plt.plot(range(n+1), p)
plt.xlabel("N")
plt.ylabel("a")
plt.title("E_N(a)=%.3f" % b)
plt.figure()
rho = [0]
for n, a in enumerate(p):
if n == 0:
continue
rho.append(a*(1-b)/n)
plt.plot(range(n+1), rho)
plt.xlabel("N")
plt.ylabel("rho_N(B)")
plt.title("E_N(a)=%.3f" % b)
plt.show()
이 프로그램에 따르면 데이터 밀도 a와 서버 수 N의 관계는
따라서 B를 호출 손실률로 사용하는 경우 $\rhoN(B)$
총결산
지금까지 이 시리즈는 qita였지만 프로그래밍이 없어서 넣어봤어요.
주의해야 할 것은 $0다음엔 어떡해?
Reference
이 문제에 관하여(줄 서기 이론의 세 가지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ogata-k/items/8700023cbf3e613aff37
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
# 無駄が多いプログラム
def E_B(N, a):
# アーランB式を計算する。
# Nはサーバー数
# aはトラフィック密度
p=1
i=1
while i < N+1:
b = a * p
p = b / (i + b)
i += 1
return p
def make_list(n, b):
# nはサーバー数の最大値
# bはニュートン法で解く為の目的関数E_B(N, a)-BのBを表していて呼損率を表す。
p = [0 for i in range(n+1)] # n+1番目がE_B(N, a)となる
p[0] = 0 # a=s=0は明らかに成り立つ為
c = 1 # a_0として初期値cを決める。
for i in range(1, len(p)):
a = c
# E(N,a)=Bとなる値を20回程度の繰り返しで求める。
for j in range(20):
t = E_B(i, a)
a = a - (t-b) / ((i/a-1+t)*t)
p[i] = a
c=a # 次回用に妥当な初期値に更新しておく
return p
# ここからは描画と実行
n=50
b=0.01
p = make_list(n, b)
plt.figure()
plt.plot(range(n+1), p)
plt.xlabel("N")
plt.ylabel("a")
plt.title("E_N(a)=%.3f" % b)
plt.figure()
rho = [0]
for n, a in enumerate(p):
if n == 0:
continue
rho.append(a*(1-b)/n)
plt.plot(range(n+1), rho)
plt.xlabel("N")
plt.ylabel("rho_N(B)")
plt.title("E_N(a)=%.3f" % b)
plt.show()
지금까지 이 시리즈는 qita였지만 프로그래밍이 없어서 넣어봤어요.
주의해야 할 것은 $0
Reference
이 문제에 관하여(줄 서기 이론의 세 가지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ogata-k/items/8700023cbf3e613aff37텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)