示例#1
0
def chainage_arriere(faits, premisses, but):
    #chainage arrière
    verif = False
    for l in but:
        if l in faits:
            verif = True
        elif l in conclusions:
            index = conclusions.index(l)
            ai.ecrire(f, regles[index])
            return (chainage_arriere(faits, premisses, premisses[index]))
        else:
            verif = False
    return verif
示例#2
0
def chainage_avant(faits, premisses, regles, fichier):
    #chainage avant
    f = open(r"trace.txt", 'w')
    creatListPremissesConclusions(conclusions, premisses, fichier)
    brf = []
    del reglesutil[:]
    i = 0
    while i < len(premisses):
        j = 0
        while j < len(premisses[i]):
            existe = True
            if not (premisses[i][j] in faits):
                existe = False
                break
            j += 1
        if existe == True:
            if not (conclusions[i] in faits):
                if not (regles[i] in reglesutil):
                    reglesutil.append(regles[i])
                faits.append(conclusions[i])
                brf.append(regles[i])
        i += 1
    ai.ecrire(
        f,
        "************************\n****Règles utilisées****\n************************\n\n\n"
    )
    for i in reglesutil:
        ai.ecrire(f, i)
    ai.ecrire(
        f,
        "\n\n\n**********************\n****Base des faits****\n**********************\n\n\n"
    )
    ai.ecrire(f, str(faits))
示例#3
0
def saturer(faits, premisses, fichier, regles, reglesutil):
    #sature la base des faits
    f = open(r"trace.txt", 'w')
    creatListPremissesConclusions(conclusions, premisses, fichier)
    changement = True
    brf = []
    while changement == True:
        changement = False
        i = 0
        while i < len(premisses):
            j = 0
            while j < len(premisses[i]):
                existe = True
                if not (premisses[i][j] in faits):
                    existe = False
                    break
                j += 1
            if existe == True:
                if not (conclusions[i] in faits):
                    if not (regles[i] in reglesutil):
                        reglesutil.append(regles[i])
                    faits.append(conclusions[i])
                    changement = True
                    brf.append(regles[i])
            i += 1
    ai.ecrire(
        f,
        "************************\n****Règles utilisées****\n************************\n\n\n"
    )
    for i in reglesutil:
        ai.ecrire(f, i)
    ai.ecrire(
        f,
        "\n\n\n**********************\n****Base des faits****\n**********************\n\n\n"
    )
    ai.ecrire(f, str(faits))
示例#4
0
 def clicked():
     faits = []
     regles = []
     init(reglesutil, premisses, faits, conclusions)
     fichier = selected.get()
     direct = direction.get()
     boolean = chk_state.get()
     if direct == "avant":
         if not boolean:
             if not fichier in ["meteorologies", ""]:
                 regles = []
                 regles = creationListe(fichier)
                 cretListFaits(faits, fichier)
                 print("chainage avant sans but")
                 chainage_avant(faits, premisses, regles, fichier)
             elif fichier != "":
                 ai.creatListPremissesConclusions(ai.conclusions,
                                                  ai.premisses, fichier)
                 ai.splitPremisses(ai.premisses)
                 ai.cretListFaits(ai.faits, fichier)
                 ai.splitFaits(ai.faits)
                 print("chainage avant sans but meteorologie")
                 ai.chainageAvant(ai.argPremisses, ai.opPremisses,
                                  ai.argFaits, ai.valFaits, ai.conclusions)
         else:
             if not fichier in ["meteorologies", ""]:
                 regles = creationListe(fichier)
                 cretListFaits(faits, fichier)
                 chainage_avant_avec_but(faits, premisses, text.get())
             elif fichier != "":
                 ai.creatListPremissesConclusions(ai.conclusions,
                                                  ai.premisses, fichier)
                 ai.splitPremisses(ai.premisses)
                 ai.cretListFaits(ai.faits, fichier)
                 ai.splitFaits(ai.faits)
                 ai.chainageAvantAvecBut(ai.argPremisses, ai.opPremisses,
                                         ai.argFaits, ai.valFaits,
                                         ai.conclusions, text.get())
     elif direct == "arriere":
         if boolean:
             f = open(r"trace.txt", 'w')
             ai.ecrire(
                 f,
                 "*************************************\n****Règles peuvent etre utilisées****\n*************************************\n\n\n"
             )
             if not fichier in ["meteorologies", ""]:
                 regles = creationListe(fichier)
                 creatListPremissesConclusions(conclusions, premisses,
                                               fichier)
                 cretListFaits(faits, fichier)
                 print("chainage arrière")
                 a = []
                 a.append(text.get())
                 test = chainage_arriere(faits, premisses, a)
                 if test:
                     ai.ecrire(f, "\nTrouvé")
                 else:
                     ai.ecrire(f, "\nNon trouvé")
             else:
                 print("service indisponible")
         else:
             print("service indisponible")
     else:
         if not boolean:
             if not fichier in ["meteorologies", ""]:
                 del premisses[:]
                 del faits[:]
                 del regles[:]
                 del reglesutil[:]
                 regles = creationListe(fichier)
                 cretListFaits(faits, fichier)
                 print("Saturation de {}".format(fichier))
                 saturer(faits, premisses, fichier, regles, reglesutil)
             elif fichier != "":
                 ai.creatListPremissesConclusions(ai.conclusions,
                                                  ai.premisses, fichier)
                 ai.splitPremisses(ai.premisses)
                 ai.cretListFaits(ai.faits, fichier)
                 ai.splitFaits(ai.faits)
                 print("Saturation de meteorolgie")
                 ai.saturation(ai.argPremisses, ai.opPremisses, ai.argFaits,
                               ai.valFaits, ai.conclusions)
示例#5
0
def chainage_avant_avec_but(faits, premisses, but):
    #chainage avant avec but
    f = open(r"trace.txt", 'w')
    ai.ecrire(
        f,
        "************************\n****Règles utilisées****\n************************\n\n\n"
    )
    creatListPremissesConclusions(conclusions, premisses, fichier)
    changement = True
    find = False
    while changement and not find:
        changement = False
        if but in faits:
            find = True
            break
        i = 0
        if but in faits:
            print("Le but '{}' existe déja dans la base des faits".format(but))
            break
        while i < len(premisses):
            j = 0
            while j < len(premisses[i]):
                existe = True
                if not (premisses[i][j] in faits):
                    existe = False
                    break
                j += 1
            if existe == True:
                if not (conclusions[i] in faits):
                    faits.append(conclusions[i])
                    ai.ecrire(f, regles[i])
                    changement = True
                if but == conclusions[i]:
                    find = True
                    break
            i += 1
    ai.ecrire(
        f,
        "\n\n\n**********************\n****Base des faits****\n**********************\n\n\n"
    )
    ai.ecrire(f, str(faits))
    ai.ecrire(f, "\n\n")
    if find:
        ai.ecrire(
            f,
            "L'agorithme de chainage avant a atteint le but '{}'".format(but))
    else:
        ai.ecrire(
            f,
            "L'agorithme de chainage avant n'a pas atteint le but '{}'".format(
                but))