Exemplo n.º 1
0
	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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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