Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from constraint import *
- def D(matiere): #returns the length of a subject
- if matiere == "Anglais":
- return 4
- if matiere == "Francais":
- return 2
- if matiere == "Physique":
- return 3
- if matiere == "Maths":
- return 3
- problem = Problem() #new problem
- #code generated from C# begins here
- problem.addVariable("E1Anglais", range(1, 25-D("Anglais"))) #add the first exam of the first student (Student 1, English exam)
- #Contraintes une epreuve a la fois
- problem.addConstraint(lambda E1Anglais, E1Francais: E1Anglais <= E1Francais and E1Anglais + D("Anglais") < E1Francais or E1Francais <= E1Anglais and E1Francais + D("Francais") < E1Anglais, ("E1Anglais", "E1Francais")) #this should guarantee it doesn't overlap with the French exam
- problem.addConstraint(lambda E1Anglais, E1Physique: E1Anglais <= E1Physique and E1Anglais + D("Anglais") < E1Physique or E1Physique <= E1Anglais and E1Physique + D("Physique") < E1Anglais, ("E1Anglais", "E1Physique"))#this should guarantee it doesn't overlap with the physics exam
- problem.addConstraint(lambda E1Anglais, E1Maths: E1Anglais <= E1Maths and E1Anglais + D("Anglais") < E1Maths or E1Maths <= E1Anglais and E1Maths + D("Maths") < E1Anglais, ("E1Anglais", "E1Maths"))#this should guarantee it doesn't overlap with the math exam
- #Contraintes un candidat par prof
- problem.addConstraint(lambda E1Anglais, E2Anglais: E1Anglais <= E2Anglais and E1Anglais + D("Anglais") <= E2Anglais or E2Anglais <= E1Anglais and E2Anglais + D("Anglais") <= E1Anglais, ("E1Anglais", "E2Anglais")) #this should guarantee it doesn't overlap with other students' exams
- problem.addVariable("E1Francais", range(1, 25-D("Francais"))) #add the French exam for the first student variable
- #Contraintes une epreuve a la fois
- problem.addConstraint(lambda E1Francais, E1Physique: E1Francais <= E1Physique and E1Francais + D("Francais") < E1Physique or E1Physique <= E1Francais and E1Physique + D("Physique") < E1Francais, ("E1Francais", "E1Physique")) #as you can see, I have one subject less for which I have to constraint the overlap since it's already been done in the constraints of the said subject, here we don't add the English hour variable
- problem.addConstraint(lambda E1Francais, E1Maths: E1Francais <= E1Maths and E1Francais + D("Francais") < E1Maths or E1Maths <= E1Francais and E1Maths + D("Maths") < E1Francais, ("E1Francais", "E1Maths"))
- #Contraintes un candidat par prof
- problem.addConstraint(lambda E1Francais, E2Francais: E1Francais <= E2Francais and E1Francais + D("Francais") <= E2Francais or E2Francais <= E1Francais and E2Francais + D("Francais") <= E1Francais, ("E1Francais", "E2Francais"))
- problem.addVariable("E1Physique", range(1, 25-D("Physique")))
- #Contraintes une epreuve a la fois
- problem.addConstraint(lambda E1Physique, E1Maths: E1Physique <= E1Maths and E1Physique + D("Physique") < E1Maths or E1Maths <= E1Physique and E1Maths + D("Maths") < E1Physique, ("E1Physique", "E1Maths"))
- #Contraintes un candidat par prof
- problem.addConstraint(lambda E1Physique, E2Physique: E1Physique <= E2Physique and E1Physique + D("Physique") <= E2Physique or E2Physique <= E1Physique and E2Physique + D("Physique") <= E1Physique, ("E1Physique", "E2Physique"))
- problem.addVariable("E1Maths", range(1, 25-D("Maths")))
- #Contraintes une epreuve a la fois
- #Contraintes un candidat par prof
- problem.addConstraint(lambda E1Maths, E2Maths: E1Maths <= E2Maths and E1Maths + D("Maths") <= E2Maths or E2Maths <= E1Maths and E2Maths + D("Maths") <= E1Maths, ("E1Maths", "E2Maths"))
- solutions = problem.getSolutions()
- print(solutions)
Advertisement
Add Comment
Please, Sign In to add comment