Esempio n. 1
0
	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"
Esempio n. 2
0
    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"
Esempio n. 3
0
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