示例#1
0
print "\t@version: 2.2  date: 28/06/2007 modified by Thomas Leaute"
print "\t@version: 2.1  date: 04/05/2007 modified by Thomas Leaute"
print "\t@version: 2.0  date: 03/05/2007 modified by Thomas Leaute"
print "\t@version: 1.1  date: 02/05/2007 modified by Thomas Leaute"
print "\t@version: 1.0  date: 05/03/2007 created by Vincent Schickel-Zuber"
print "\t@author: [email protected] date: 05/03/2007"
print "\t@copyright: EPFL-IC-IIF-LIA 2007"
#-------------------------------------------------------------------------------
import copy
import libPSC
import PSC
import libPlan

## contiennent les variables et les contraintes
VARS = PSC.Variables()
CONTS = PSC.Contraintes()

## contient la liste de tous les etats
ETATS = []


## Une contrainte d'axiome de cadre pour un etat et une proposition donnes
class ContrainteAxiomeCadre(libPSC.Contrainte):

    ## \var varPre
    # Variable correspondant a la proposition au debut de l'etat

    ## \var varPost
    # Variable correspondant a la proposition a la fin de l'etat

    ## \var varsOp
示例#2
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