TP Probabilités et Simulation

Dalaine - Gauffier INFO4

Question 1

  • E(Stratégie A) = Pa * T
  • E(Stratégie B) = Pb * T
  • E(Stratégie A et B) = (Pa + Pb)* T / 2

Le regret nous permet de visualiser la différence entre l’espérance Par essai maximale, qui dans ce cas serait Pa puisque l’on sait que c’est la machine optimale, et le gain réel Par essai que l’on a effectivement eu. La stratégie optimale étant la Stratégie A on attendrait d’elle un regret de 0 en moyenne.

Une stratégie efficace devra avoir la moyenne de ses regrets finaux le plus bas possible. Une stratégie peu efficace se tendrait vers le regret de la stratégie B qui est la pire des stratégies. R(Stratégie B) = Pa - Pb = 0.1

Question 2

La stratégie mL est une stratégie intéresultatsante pour des valeurs de Tmax élevées, en effet elle se base sur une phase d’observation puis une série figée sur une des machines. Avec un Tmax trop peu élevé la phase d’observation a plus de chances de résulté à une victoire de Pb ce qui conduirait à l’utilisation de la Stratégie B pour tout le resultatte de la simulation.

Il y a une forte variance des résultats à cause de cela et donc n’est Pas fiable pour un Tmax faible. Si l’on augmente e alors le résultat devient plus fiable mais on perd de son intérêt d’avoir possiblement une très longue série de Stratégie A en augmentant la période de stratégie A et B.

 Question 3

La stratégie mG est une stratégie correcte pour une valeur de Tmax faible mais son regret tend vers 0.5 assez vite ce qui est très élevé Par rapport aux résultats que l’on a pu avoir avec la stratégie mL.

On peut remarquer que même en réduisant l’e le regret ne diminue Pas significativement, c’est donc une stratégie à éviter.

Question 4

La stratégie mT est excellente. Elle est meilleure que les deux autresultat stratégies à Partir des quelques premiers essais. La correction très dynamique de sa trajectoire dès le début lui permet d’être plus efficace sur le début de la simulation que la stratégie mG et plus tard sa loi Bêta qui devient de plus en plus précise permet une fiabilité excellente Par rapport à mL.

Code

library(ggplot2)

simulation <-function(strat,Pa,Pb,Tmax,nbCourbes){
  resultat = data.frame()
  
  switch(strat,
         '1'={
            e = 0.1
            
            Ba = rbinom(nbCourbes, (e * Tmax)/2, Pa)
            Bb = rbinom(nbCourbes, (e * Tmax)/2, Pb)     
            p  = ifelse(Ba > Bb, Pa, Pb)
            
            for ( i in 1:nbCourbes){
            {
              Bt = cumsum(rbinom(1:Tmax, 1, p[i]))
              regret = Pa - Bt/ (1:Tmax)
               
              resultat = rbind(resultat, data.frame(id = i, t=1:Tmax, regret))
            }
           }
         },
         '2'={
           e = 0.1
           
           for (j in 1:nbCourbes)
           {
             nSuccesA = 0
             nSuccesB = 0
             result = c()
             
             for (i in 1:Tmax)
             {
               if(nSuccesA == nSuccesB){ p = ifelse(runif(1,0,1) > 0.5, Pa, Pb) }
               
               else if(rbinom(1,1, 1 - e)){
                 if(max(nSuccesA, nSuccesB) == nSuccesA){ p = Pa }
                 else{ p = Pb }
               }
               
               else{
                 if(min(nSuccesA, nSuccesB) == nSuccesA){ p = Pa }
                 else{ p = Pb }
               }
               
               result[i] = rbinom(1,1, p)
               if(result[i] == 1){
                 if(p == Pa) {nSuccesA = nSuccesA + 1}
                 else {succesB = nSuccesB + 1}
               }
             }
             
             regret = Pa - cumsum(result)/ (1:Tmax)
             resultat = rbind(resultat, data.frame(id = j, t=1:Tmax, regret))
           }
         },
         '3'={
           for(j in 1:nbCourbes)
           {
             nSuccesA = 0
             nEchecA = 0
             
             nSuccesB = 0
             nEchecB = 0
             
             result = c()
             for(i in 1:Tmax)
             {
               pSupPa = rbeta(1, shape1 = nSuccesA + 1, shape2 = nEchecA + 1)
               pSupPb = rbeta(1, shape1 = nSuccesB + 1, shape2 = nEchecB + 1)
               
               if(pSupPa > pSupPb) { p = Pa }
               else if(pSupPb > pSupPa) { p = Pb }
               else { p = ifelse(runif(1,0,1) > 0.5, Pa, Pb) }
               
               result[i] = rbinom(1,1,p)
               
               if(result[i] == 1){
                 if(p == Pa){ nSuccesA = nSuccesA + 1 }
                 else{ nSuccesB = nSuccesB + 1 }
               }
               else{
                 if(p == Pa){ nEchecA = nEchecA + 1 }
                 else{ nEchecB = nEchecB + 1 }
               }
             }
             
             regret = Pa - cumsum(result)/ (1:Tmax)
             resultat = rbind(resultat, data.frame(id = j, t=1:Tmax, regret))
           }
         })
  
  return(resultat)
}

Tmax = 1000
nbCourbes = 10
Pa = 0.65
Pb = 0.55

methode1 = simulation('1', Pa, Pb, Tmax, nbCourbes)
methode2 = simulation('2', Pa, Pb, Tmax, nbCourbes)
methode3 = simulation('3', Pa, Pb, Tmax, nbCourbes)

ggplot(data=methode1, aes(x=t, y=regret , group = id)) +geom_line(size=0.2) + stat_summary(fun.y=mean, colour="green", geom="line", aes(group = 1))

ggplot(data=methode2, aes(x=t, y=regret , group = id)) +geom_line(size=0.2) +stat_summary(fun.y=mean, colour="green", geom="line", aes(group = 1))

ggplot(data=methode3, aes(x=t, y=regret , group = id)) +geom_line(size=0.2) +stat_summary(fun.y=mean, colour="green", geom="line", aes(group = 1))