Fonctions_d_evaluation.py 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. from Outils import Arbre
  2. from Outils.Arbre import *
  3. from Outils.Moteur_de_jeu import Joueur
  4. from Outils.Moteur_de_jeu.Joueur import *
  5. import math
  6. def distance_bord (position) :
  7. return (min (position[0], 9-position[0]))
  8. def lin_tout (plateau, num, cdistance, cbarrieres, cbord) :
  9. """on considère les coefficients associés à l'importance des barrières/...
  10. et on les affecte 'linéairement'"""
  11. b_num = plateau.barrieres_restantes[num]
  12. b_opp = plateau.barrieres_restantes[1-num]
  13. distance_num = plateau.longueur_chemin(num)
  14. distance_opp = plateau.longueur_chemin(1-num)
  15. dist_bord_num = distance_bord (plateau.pions[num])
  16. dist_bord_opp = distance_bord (plateau.pions[1-num])
  17. valeur_dist = cdistance*(distance_opp-distance_num)
  18. valeur_b = cbarrieres*(b_opp - b_num)
  19. valeur_bord = cbord*(dist_bord_opp-dist_bord_num)
  20. v = valeur_dist + valeur_b + valeur_bord
  21. return (v)
  22. def lineaire_basique (cdistance, cbarrieres, cbord) :
  23. return (lambda bn, bo, dn, do, dbn, dbo : cdistance*(do-dn) + cbarrieres*(bo - bn) + cbord*(dbo-dbn))
  24. def lineaires () :
  25. fonctions_lineaires = numpy.zeros (1000)
  26. for i in range (0, 10) : #associé à cdistance = i ici
  27. for j in range (0, 10) : #associé à cbarrieres = j*j ici
  28. for k in range (0, 10) : #associé à cbord = sqrt k ici
  29. l = 100*i + 10*j + k
  30. fonctions_lineaires[l] = lineaire_basique (i+1, (j+1)*(j+1), math.sqrt(k+1))
  31. return (fonctions_lineaires)
  32. """on a 1000 fonctions"""
  33. def expo_basique_coefs_internes (cdistance, cbarrieres, cbord) :
  34. return (lambda bn, bo, dn, do, dbn, dbo : math.exp(cdistance*do) - math.exp(cdistance*dn) + math.exp(cbarrieres*bo) - math.exp(cbarrieres*bn) + math.exp(cbord*dbo) - math.exp(cbord*dbn))
  35. def exponentielles_coefs_dans_lexpo () :
  36. fonctions_expo1 = numpy.zeros (125)
  37. for i in range (0, 5) :
  38. for j in range (0, 5) :
  39. for k in range (0, 5) :
  40. l = 25*i + 5*j + k
  41. fonctions_expo1[l] = expo_basique_coefs_internes ((i+1)/2, (j+1), 0.2*(k+1))
  42. return (fonctions_expo1)
  43. """on a 125 fonctions"""
  44. def expo_basique_coefs_doubles (cdistance, cbarrieres, cbord) :
  45. return (lambda bn, bo, dn, do, dbn, dbo : cdistance*math.exp(cdistance*do) - cdistance*math.exp(cdistance*dn) + cbarrieres*math.exp(cbarrieres*bo) - cbarrieres*math.exp(cbarrieres*bn) + cbord*math.exp(cbord*dbo) - cbord*math.exp(cbord*dbn))
  46. def exponentielles_coefs_doubles () :
  47. fonctions_expo2 = numpy.zeros (125)
  48. for i in range (0, 5) :
  49. for j in range (0, 5) :
  50. for k in range (0, 5) :
  51. l = 25*i + 5*j + k
  52. fonctions_expo2[l] = expo_basique_coefs_doubles ((i+1)/3, (j+1), 0.15*(k+1))
  53. return (fonctions_expo2)
  54. """on a 125 fonctions"""
  55. #test = lambda x : x*5
  56. #test2 = lambda x,y : x*5 + y
  57. #print (test2 (1, 2))
  58. def lois_en_puissance (cdistance, cbarrieres, cbord) :
  59. return (lambda bn, bo, dn, do, dbn, dbo : do**cdistance - dn**cdistance + bo**cbarrieres - bn**cbarrieres + dbo**cbord - dbn**cbord)
  60. def puissances () :
  61. fonction_puissance1 = numpy.zeros (1000)
  62. for i in range (0, 10) :
  63. for j in range (0, 10) :
  64. for k in range (0, 10) :
  65. l = 100*i + 10*j + k
  66. fonctions_puissance1[l] = lois_en_puissance (i, j, k)
  67. return (fonctions_puissance1)
  68. """1000 fonctions"""