Skip to content
Extraits de code Groupes Projets
validation_test.py 1,65 ko
Newer Older
  • Learn to ignore specific revisions
  • Adrien Payen's avatar
    Adrien Payen a validé
    import random as rd
    import numpy as np
    import matplotlib.pyplot as plt
    from tmc import TransitionMatrixCalculator as tmc
    
    Adrien Payen's avatar
    Adrien Payen a validé
    from markovDecision import MarkovDecisionSolver as mD
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    class EmpiricalComparision :
        def __init__(self) : 
            return
            
    
        def simulation(strategy, layout : list, circle, nIter : int) :
            tmc_instance = tmc()
            safe_dice = tmc_instance._compute_safe_matrix(layout, circle)
            normal_dice = tmc_instance._compute_normal_matrix(layout, circle)
            risky_dice = tmc_instance._compute_risky_matrix(layout, circle)
            matrices_transition = [safe_dice, normal_dice, risky_dice]
            nTurns = []
            turns = 0
            for _ in range(nIter) : 
                turns = 0
                k = 0
                while k < len(layout)-1 :
                    action = strategy[k]
                    transitionMatrix  = matrices_transition[int(action -1)]
                    k = np.rd.choice(len(layout), p = transitionMatrix[k])
                    if layout[k] == 3 and action == 2 : 
                        turns +=1 if np.rd.uniform(0,1) < 0.5 else 2
                    elif layout[k] == 3 and action == 3 :
                        turns += 2
                    else :
                        turns += 1
                nTurns.append(turns)
            
            return np.mean(nTurns)
    
        
        def plot(layouts : list, circle, nIter : int) :
            Markov = []
            Safe = []
            Normal = []
            Risky = []
            Random = []
            for layout in layouts :
                expec, policy = mD(layout, circle)
                # Simulate the game
    
            return
    
    
    
    
    
    
    layout = [0,0,3,0,0,0,2,0,0,0,3,0,0,1,0]
    results(layout, False, 1000000)
    results(layout, True, 1000000)