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
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))
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))
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)
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))