Transférer les fichiers vers ''

This commit is contained in:
Clement Lacau 2023-03-13 10:05:27 +01:00
parent 468415957c
commit c0dff5ad9d

149
Probas.py Normal file
View 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')