Esempio n. 1
0
    def branch_bound(self, V):

        # Affichage au début de l'algo
        if self.timed == 0:
            self.send_to_Trace("Debut du Branch & Bound :\n", "in")
            self.timed = time.time()

        # Initialisation de l'algo
        arbre = Arbre(V, self)

        # Initialisation de la liste des feuilles
        sol = arbre.update()
        # Tant qu'on a pas de solution, on met à jour la liste des feuilles
        while not sol:
            sol = arbre.update()
            if isinstance(sol, str):
                print sol
                return

        # Construction de la solution entière à partir de la feuille
        solution = []
        while sol:
            solution += [(sol.motObj, sol.mot, sol.value)]
            sol = sol.pere

        # Affichage de la solution et du temps de calcul
        self.timed = time.time() - self.timed
        self.send_to_Trace("Fin du Branch & Bound ", "out")
        self.send_to_Trace(" Temps :" + str(self.timed) + "\n", "time")
        self.res = solution
        self.sendResult(self.res)

        self.pause()
        with self.pause_cond:
            while self.paused:
                self.pause_cond.wait()
            self.timed = time.time()
Esempio n. 2
0
    def branch_bound(self, V):

        # Affichage au début de l'algo
        if self.timed == 0:
            self.send_to_Trace("Debut du Branch & Bound :\n", "in")
            self.timed = time.time()

        # Initialisation de l'algo
        arbre = Arbre(V, self)

        # Initialisation de la liste des feuilles
        sol = arbre.update()
        # Tant qu'on a pas de solution, on met à jour la liste des feuilles
        while not sol:
            sol = arbre.update()
            if isinstance(sol, str):
                print sol
                return

        # Construction de la solution entière à partir de la feuille
        solution = []
        while sol:
            solution += [(sol.motObj, sol.mot, sol.value)]
            sol = sol.pere

        # Affichage de la solution et du temps de calcul
        self.timed = time.time() - self.timed
        self.send_to_Trace("Fin du Branch & Bound ", "out")
        self.send_to_Trace(" Temps :" + str(self.timed) + "\n", "time")
        self.res = solution
        self.sendResult(self.res)

        self.pause()
        with self.pause_cond:
            while self.paused:
                self.pause_cond.wait()
            self.timed = time.time()