Auteurs : El Hadji Malick FALL & Adji Ndèye Ndaté SAMBE
Pour l'implémentation, nous avons repris les principes et formules évoqués dans le cours.
{An} suite des inter-arrivées
{Sn} suite des temps de services
T1(n) = date d'arrivée du nième client
T2(n) = date de départ du nième client
A t=0 le système est vide
T1(n)=T1(n-1) + An
T2(n)=max(T1(n),T2(n-1)) + Sn
set.seed(10)
library(ggplot2)
# lambda=taux d'arrivée
service <- function(law_lamb) {
if (law_lamb == "exp") {
return(rexp(1, 1))
}
if (law_lamb == "unif") {
return(runif(1, 0, 1))
}
if (law_lamb == "det") {
return(runif(1, 1, 1))
}
if (law_lamb == "erlang") {
return(rgamma(1, shape = 1))
}
}
interarrivee <- function(lambda) {
return(rexp(1, lambda))
}
simulfa = function(N, lamb, law) {
t1 <- c(1:N)
t2 <- c(1:N)
S <- c(1:N)
A <- c(1:N)
# A = rexp(N,lamb)
R <- c(1:N)
for (i in 1:N) {
S[i] <- service(law)
A[i] <- interarrivee(lamb)
}
t1[1] <- 0
t2[1] <- t1[1] + S[1]
for (i in 2:N) {
t1[i] <- t1[i - 1] + A[i]
t2[i] <- max(t1[i], t2[i - 1]) + S[i]
}
for (i in 1:N) {
R[i] <- t2[i] - t1[i] #temps de sortie - temps d'entrée
}
data.frame(lambda = lamb, R = mean(R), ci = 2 * sd(R)/sqrt(N), loi = law) #ci pour calculer l'intervalle de confiance à 95%
}
set.seed(10)
tracelambda <- function(law) {
df = data.frame()
for (lambda in seq(0.1, 0.9, by = 0.1)) {
df = rbind(df, simulfa(100, lambda, law))
}
df
}
set.seed(10)
tracer <- function() {
tab <- c()
tab[1] = "exp"
tab[2] = "det"
tab[3] = "unif"
tab[4] = "erlang"
datafinal = data.frame()
for (i in 1:4) {
datafinal = rbind(datafinal, tracelambda(tab[i]))
}
datafinal
}
daf = tracer()
set.seed(10)
ggplot(data = daf, aes(x = lambda, y = R, ymin = R - ci, ymax = R + ci, color = factor(loi))) +
geom_point() + geom_line() + geom_errorbar(width = 0.01)
Pour les courbes que nous obtenons (sous réserve qu'elles soient justes), nous pouvons observer que la moyenne de traitement ainsi que les intervalles de confiance sont plus importants dans le cas d'une loi d'erlang du service. On note néanmoins une stabilité pour la loi uniforme. Le temps moyen d'attente n'explose pas contrairement au cas de la loi d'erlang. Concernant la loi exponentielle et la loi déterministe on dénote une croissance des courbes, parsemée de quelques variations,suivant lambda. Mais comme les intervalles de confiance sont assez importants, nous pouvons supposer que ces courbes sont réellement monotones, ce qui signifie le paramètre lambda a donc une forte influence sur le temps moyen dans le cas dans ces deux lois.