def TreeDown(self, position_courante, symbole_dont_c_est_le_tour): '''Descendre dans l'arbre UCT''' # soit N la racine de l'arbre N = self.tree joueur = symbole_dont_c_est_le_tour # boucle : fils non explorés de N grille = Grille() grille.set(N.name) mes_coups_possibles = grille.lookForAllowedSteps() while all([self.compteur_choix_action_dans_etat.has_key((N.name, i)) for i in mes_coups_possibles]): # soit F le fils de N ayant la plus grande valeur UCT if(len(mes_coups_possibles)>0): action = self.choisirActionUCT(grille) nouvel_etat = changerEtatApresTransition(N.name, action, joueur) F = Node(nouvel_etat, N) F.code = action N = F joueur = getOtherSymbol(joueur) grille.set(N.name) mes_coups_possibles = grille.lookForAllowedSteps() else: break # soir F un fils de N tiré au hasard parmi les fils non explorés grille.set(N.name) mes_coups_possibles = grille.lookForAllowedSteps() if(len(mes_coups_possibles)>0): actions_inexplorees = [i for i in mes_coups_possibles if not self.compteur_choix_action_dans_etat.has_key((N.name, i))] tirage = randint(0, len(actions_inexplorees)-1) action = actions_inexplorees[tirage] etat_inexplore = changerEtatApresTransition(N.name, action, joueur) F = Node(etat_inexplore, N) F.code = action joueur = getOtherSymbol(joueur) else: F = N return (F, joueur)
def setUp(self): n = Node() #output connector c1 = Connector(False, GeometryType.Body3D) c1.name = "union of two boxes" n.add_connector(c1) c2 = Connector(False, GeometryType.Body3D) c2.name = "union of box and union" n.add_connector(c2) #one parameter p1 = NodeParameter() p1.name = "length" p1.datatype = ParameterType.Float p1.value = 3.14159 n.add_parameter(p1) def func(inputs, parameters): l = parameters["length"] b1 = Box(l, l, l) b2 = Box(2.*l, 2.*l, 2.*l) u1 = Union(b1, b2) u2 = Union(u1, b1) d = dict() d["union of two boxes"] = u1 d["union of box and union"] = u2 return d n.code = func self.n = n self.G = Graph(MeshProvider()) self.G.add_node(n)
def setUp(self): n = Node() #input connector c1 = Connector(True, GeometryType.Body3D) c1.name = "input connector name" n.add_connector(c1) #output connector c2 = Connector(False, GeometryType.Shape2D) c2.name = "output connector name" n.add_connector(c2) #two parameters p1 = NodeParameter() p1.name = "integer parameter name" p1.datatype = ParameterType.Integer p1.value = 3 p2 = NodeParameter() p2.name = "float parameter name" p2.datatype = ParameterType.Float p2.value = 3.14159 n.add_parameter(p1) n.add_parameter(p2) def func(inputs, parameters): d = dict() g = Geometry() g._datatype = GeometryType.Shape2D d["output connector name"] = g return d n.code = func self.n = n