def trouveLaSolution(self): # consistance des noeuds + arcs print "|+| Fait la consistance des noeuds" VARS.consistanceDesNoeuds() print "|+| Fait la consistance des arcs" CONTS.consistanceDesArcs() afficheEtats() afficheNombreVarsEtContraintes() print "|+| Applique l'heuristique Variable Ordering" PSC.variableOrdering() print "|+| Applique le Forward Checking" # sol = PSC.backtrack(0, False) sol = PSC.forwardChecking(0, False, True) if sol!=PSC.ECHEC: afficheUneSolutionPossible() else: print "|-| Aucune solution trouvee"
def trouveLaSolution(self): # consistance des noeuds + arcs print "|+| Fait la consistance des noeuds" VARS.consistanceDesNoeuds() print "|+| Fait la consistance des arcs" CONTS.consistanceDesArcs() afficheEtats() afficheNombreVarsEtContraintes() print "|+| Applique l'heuristique Variable Ordering" PSC.variableOrdering() print "|+| Applique le Forward Checking" # sol = PSC.backtrack(0, False) sol = PSC.forwardChecking(0, False, True) if sol != PSC.ECHEC: afficheUneSolutionPossible() else: print "|-| Aucune solution trouvee"
def run( algo, grille ): # des bugs, oops, debug print "|+| Chargement du probleme" # variable globales global PROBLEME # allez-vous choisir la facile grille A ? if grille=="A": PROBLEME=[[9,X,X,X,X,X,X,X,2], [3,X,7,1,X,X,4,X,8], [X,1,X,X,5,4,X,6,X], [X,X,1,X,X,X,X,7,X], [X,X,4,X,X,X,9,X,X], [X,2,X,X,X,X,8,X,X], [X,8,X,3,2,X,X,4,X], [7,X,3,X,X,6,2,X,1], [4,X,X,X,X,X,X,X,5]] # ou la diabolique grille B ? elif grille=="B": PROBLEME=[[X,X,X,X,X,X,X,X,X], [X,X,7,8,3,X,9,X,X], [X,X,5,X,X,2,6,4,X], [X,X,2,6,X,X,X,7,X], [X,4,X,X,X,X,X,8,X], [X,6,X,X,X,3,2,X,X], [X,2,8,4,X,X,5,X,X], [X,X,X,X,9,6,1,X,X], [X,X,X,X,X,X,X,X,X]] # ou encore une autre ? else: print "|-| Grille" , grille, "non definie" # variables globales global VARS global CONTS # obtient les variables et contraintes du PSC VARS = PSC.Variables() CONTS = PSC.Contraintes() # initialisation de la grille print "|+| Initialisation de la grille" grille = Grille() # ajout des contraintes liees a la grille print "|+| Ajoute les contraintes" grille.genereContraintesLignes() grille.genereContraintesColonnes() grille.genereContraintesSSGrilles() # consistance des noeuds print "|+| Fait la consistance des noeuds" VARS.consistanceDesNoeuds() ##print VARS # consistance des arcs print "|+| Fait la consistance des arcs" CONTS.consistanceDesArcs() ##print CONTS # re-ordonne les noeuds PSC.variableOrdering() # choisit l'algorithme a executer if algo=="FC": sol=PSC.forwardChecking( 0, False, True ) else: sol=PSC.backtrack( 0, False, True ) # imprime la grille une fois l'algorithme lance print grille