예제 #1
0
    def profondeurLimit(self):
        self.base = BaseDeConnaissance(self.path)
        self.tbResolution.setText("")
        etatFinal = self.txEtatFinal.toPlainText()
        EtatInit = self.base.faits[0].predicat
        graphe = Graph(EtatInit)
        nouedFermées = []
        nouedOuverts = [EtatInit]
        i = 0

        # Graph construction
        while nouedOuverts:

            nouedCourant = nouedOuverts.pop(0)
            nouedFermées.append(nouedCourant)
            self.base.faits = nouedCourant
            possibleConclusions = genererConclusionUnifies(
                self.base.regles, nouedCourant)

            for conclusion in possibleConclusions:
                graphe.addEdge(nouedCourant, conclusion)
                if not exist(conclusion, nouedFermées) and not exist(
                        conclusion, nouedOuverts):
                    nouedOuverts.append(conclusion)
            i += 1
        test = Predicat.extractPredicat(etatFinal)
        #test = Predicat("cruchesAetB", ['4', '2'])
        chemin = []
        solution = 'chemin:'
        print(
            graphe.rechercheProfendeurLimiteIteratif(graphe.V, test, 10,
                                                     chemin))
        solution += '\n'
        chemin = algorithmService.prepareChemin(chemin, graphe.V)
        for chem in chemin:
            solution += str(chem) + '\n'
        self.tbResolution.setText("")
        self.tbResolution.setText(solution)
        self.textBrowser.setText("")
        self.textBrowser.setText(str(graphe.trace))
예제 #2
0
    def onStar(self):
        self.base = BaseDeConnaissance(self.path)
        self.tbResolution.setText("")
        EtatInit = self.base.faits[0].predicat
        graphe = Graph(EtatInit)
        nouedFermées = []
        nouedOuverts = [EtatInit]
        i = 0

        # Graph construction
        while nouedOuverts:

            nouedCourant = nouedOuverts.pop(0)
            nouedFermées.append(nouedCourant)
            self.base.faits = nouedCourant
            possibleConclusions = genererConclusionUnifies(
                self.base.regles, nouedCourant)

            for conclusion in possibleConclusions:
                graphe.addEdge(nouedCourant, conclusion)
                if not exist(conclusion, nouedFermées) and not exist(
                        conclusion, nouedOuverts):
                    nouedOuverts.append(conclusion)
            i += 1

        etatFinal = self.txEtatFinal.toPlainText()
        test = Predicat.extractPredicat(etatFinal)
        solution = 'chemin\n'

        result, parcours = graphe.a_star_search(graphe.V, test)
        for chem in parcours:
            print(chem)
            solution += str(chem) + '\n'
        self.tbResolution.setText("")
        self.tbResolution.setText(solution)
        self.textBrowser.setText("")
        self.textBrowser.setText(graphe.trace)
예제 #3
0
EtatInit = base.faits[0].predicat
graphe = Graph(EtatInit)
nouedFermées = []
nouedOuverts = [EtatInit]
i = 0

# Graph construction
while nouedOuverts:

    nouedCourant = nouedOuverts.pop(0)
    nouedFermées.append(nouedCourant)
    base.faits = nouedCourant
    possibleConclusions = genererConclusionUnifies(base.regles, nouedCourant)

    for conclusion in possibleConclusions:
        graphe.addEdge(nouedCourant, conclusion)
        if not exist(conclusion, nouedFermées) and not exist(
                conclusion, nouedOuverts):
            nouedOuverts.append(conclusion)
    i += 1

for key in graphe.graph:
    print("*********")
    print("Sommet: ", key.nom, '(', key.vals, ')')
    print("Values")
    for val in graphe.graph[key]:
        print("fils: ", val.nom, '(', val.vals, ')')

test = Predicat("cruchesAetB", ['4', '2'])
chemin = []
print("=========rechercheProfendeurLimiteIteratif===========")