Transférer les fichiers vers ''
This commit is contained in:
parent
468415957c
commit
c0dff5ad9d
1 changed files with 149 additions and 0 deletions
149
Probas.py
Normal file
149
Probas.py
Normal file
|
@ -0,0 +1,149 @@
|
|||
from random import random
|
||||
from math import floor
|
||||
from statistics import mean, variance
|
||||
# from matplotlib import pyplot
|
||||
|
||||
def simulate_NFBP(N):
|
||||
"""
|
||||
Tries to simulate T_i, V_i and H_n for N boxes of random size.
|
||||
"""
|
||||
i = 0 # Nombre de boites
|
||||
R = [0] # Remplissage de la i-eme boite
|
||||
T = [0] # Nombre de paquets de la i-eme boite
|
||||
V = [0] # Taille du premier paquet de la i-eme boite
|
||||
H = [] # Rang de la boite contenant le n-ieme paquet
|
||||
for n in range(N):
|
||||
size = random()
|
||||
if R[i] + size >= 1:
|
||||
# Il y n'y a plus de la place dans la boite pour le paquet.
|
||||
# On passe à la boite suivante (qu'on initialise)
|
||||
i += 1
|
||||
R.append(0)
|
||||
T.append(0)
|
||||
V.append(0)
|
||||
R[i] += size
|
||||
T[i] += 1
|
||||
if V[i] == 0:
|
||||
# C'est le premier paquet de la boite
|
||||
V[i] = size
|
||||
H.append(i)
|
||||
|
||||
return {
|
||||
"i": i,
|
||||
"R": R,
|
||||
"T": T,
|
||||
"V": V,
|
||||
"H": H
|
||||
}
|
||||
|
||||
|
||||
def stats_NFBP(R, N):
|
||||
"""
|
||||
Runs R runs of NFBP (for N packages) and studies distribution, variance, mean...
|
||||
"""
|
||||
print("Running {} NFBP simulations with {} packages".format(R, N))
|
||||
I = []
|
||||
H = [[] for _ in range(N)] # List of empty lists
|
||||
|
||||
for i in range(R):
|
||||
sim = simulate_NFBP(N)
|
||||
I.append(sim["i"])
|
||||
for n in range(N):
|
||||
H[n].append(sim["H"][n])
|
||||
|
||||
print("Mean number of boxes : {} (variance {})".format(mean(I), variance(I)))
|
||||
|
||||
for n in range(N):
|
||||
print("Mean H_{} : {} (variance {})".format(n, mean(H[n]), variance(H[n])))
|
||||
|
||||
|
||||
def simulate_NFDBP(N):
|
||||
"""
|
||||
Tries to simulate T_i, V_i and H_n for N boxes of random size.
|
||||
"""
|
||||
i = 0 # Nombre de boites
|
||||
R = [0] # Remplissage de la i-eme boite
|
||||
T = [0] # Nombre de paquets de la i-eme boite
|
||||
V = [0] # Taille du premier paquet de la i-eme boite
|
||||
H = [] # Rang de la boite contenant le n-ieme paquet
|
||||
for n in range(N):
|
||||
size = random()
|
||||
R[i] += size
|
||||
T[i] += 1
|
||||
if R[i] + size >= 1:
|
||||
# Il y n'y a plus de la place dans la boite pour le paquet.
|
||||
# On passe à la boite suivante (qu'on initialise)
|
||||
i += 1
|
||||
R.append(0)
|
||||
T.append(0)
|
||||
V.append(0)
|
||||
|
||||
if V[i] == 0:
|
||||
# C'est le premier paquet de la boite
|
||||
V[i] = size
|
||||
H.append(i)
|
||||
|
||||
return {
|
||||
"i": i,
|
||||
"R": R,
|
||||
"T": T,
|
||||
"V": V,
|
||||
"H": H
|
||||
}
|
||||
|
||||
|
||||
def stats_NFDBP(R, N):
|
||||
"""
|
||||
Runs R runs of NFDBP (for N packages) and studies distribution, variance, mean...
|
||||
"""
|
||||
print("Running {} NFDBP simulations with {} packages".format(R, N))
|
||||
I = []
|
||||
H = [[] for _ in range(N)] # List of empty lists
|
||||
Tmean=[]
|
||||
for i in range(R):
|
||||
sim = simulate_NFDBP(N)
|
||||
I.append(sim["i"])
|
||||
for n in range(N):
|
||||
H[n].append(sim["H"][n])
|
||||
|
||||
for k in range(sim["i"]):
|
||||
# for o in range(sim["i"]):
|
||||
Tmean+=sim["T"]
|
||||
print("Mean number of boxes : {} (variance {})".format(mean(I), variance(I)))
|
||||
|
||||
for n in range(N):
|
||||
print("Mean H_{} : {} (variance {})".format(n, mean(H[n]), variance(H[n])))
|
||||
for k in range(int(mean(I))+1):
|
||||
print(Tmean[7])
|
||||
# print("Mean T_{} : {} (variance {})".format(k, mean(Tmean[k]), variance(Tmean[k])))
|
||||
|
||||
N = 10 ** 1
|
||||
sim = simulate_NFBP(N)
|
||||
|
||||
print("Simulation NFBP pour {} packaets. Contenu des boites :".format(N))
|
||||
for j in range(sim["i"] + 1):
|
||||
remplissage = floor(sim["R"][j] * 100)
|
||||
print("Boite {} : Rempli à {} % avec {} paquets. Taille du premier paquet : {}".format(j, remplissage, sim["T"][j],
|
||||
sim["V"][j]))
|
||||
|
||||
print()
|
||||
stats_NFBP(10 ** 4, 10)
|
||||
|
||||
N = 10 ** 1
|
||||
sim = simulate_NFDBP(N)
|
||||
print("Simulation NFDBP pour {} packaets. Contenu des boites :".format(N))
|
||||
for j in range(sim["i"] + 1):
|
||||
remplissage = floor(sim["R"][j] * 100)
|
||||
print("Boite {} : Rempli à {} % avec {} paquets. Taille du premier paquet : {}".format(j, remplissage,
|
||||
sim["T"][j],
|
||||
sim["V"][j]))
|
||||
|
||||
print()
|
||||
stats_NFDBP(10 ** 4, 10)
|
||||
|
||||
#
|
||||
# pyplot.plot([1, 2, 4, 4, 2, 1], color = 'red', linestyle = 'dashed', linewidth = 2,
|
||||
# markerfacecolor = 'blue', markersize = 5)
|
||||
# pyplot.ylim(0, 5)
|
||||
# pyplot.title('Un exemple')
|
||||
|
Loading…
Reference in a new issue