From 61e388776e719c687df5999eead48532eba5eca2 Mon Sep 17 00:00:00 2001 From: Ishan Garg Date: Tue, 18 Sep 2018 17:10:49 +0530 Subject: [PATCH 01/26] Add files via upload --- Compute.py | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++- Course.py | 40 ++++++++++++++++++++++----- Instructor.py | 8 +++--- Student.py | 16 +++++++---- 4 files changed, 123 insertions(+), 16 deletions(-) diff --git a/Compute.py b/Compute.py index f3d1e8c..02bfbb2 100644 --- a/Compute.py +++ b/Compute.py @@ -20,5 +20,78 @@ def lambda_c(course, student_list): #course is an object of course class, studen return lam_c; -def lambda_s(student): #Returns lambda_s +def lambda_s(student, p): #Returns lambda_s return (student.preferences[0][1]*0.8+student.CG*0.2); + +def instructorAllotPreference(instructor_list, course_list): #Not checking for clashes, not checking if student applied for the course. + #List of all instructors, list of all courses. + for i in instructor_list: + for k, l in i.preference: + l.alloted=k.course_code; + l.allotCourse(k.course_code) + k.size_remaining=k.size_remaining-1; + +def fillAppliedFirstPreference(course_list, student_list): +#List of all courses, list of all students + for i in student_list: + for j in course_list: + if(i.preferences[0][0]==j.course_code): + ls=lamda_s(i, 0); + heapq.heappush(j.applied,(-ls, i)); + +def sortCourses(course_list, student_list): +#List of all courses, list of all students + lambda_c_list=[]; + for i in course_list: + c=lambda_c(i, student_list); + lambda_c_list.append((i, c)); + + sorted(lambda_c_list, key=getKey); + return lambda_c_list; + + + +def getKey(item): + return item[1]; + +def allot(course): + while(course.size_remaining>0): + most_deserving=heapq.heappop(course.applied); + + for k,l in most_deserving: #Not sure if this is correct + most_deserving=(-k, l); + + heapq.heappush(course.selected, most_deserving); + l.alloted=course.course_code; + fillRemaining(course.applied, course); + + +def fillRemaining(applied, course): + while(len(applied)>0): + most_deserving=heapq.heappop(applied); + for k, l in most_deserving: + nextPreference(-k, l, course); + +def nextPreference(ls, student, course): + most_deserving=(ls, student); + for k, l in most_deserving: + for j in l.preferences: + if(j[0]==course): #If course matches + j=j+1; #Not sure. How to increment? + ls=lamda_s(l, j); + if(j[0].size_remaining!=0): #And next preference is not full + heapq.heappush(j[0].applied, (-ls, l)); #Push student into applied of next preference + else: + ifFull(ls, student,course); + +def ifFull(ls, student, course): + worst_student=heapq.heappop(course.selected); + for k, l in worst_student: + if(k0 + + def decrementSize(): + self.size_remaining-=1 + + def isFull(): + return size_remaining==0 + + def allot(student,lambda_s): + heappush(self.selected,{lambda_s,student}) + + def getWorstSelected(): + return selected[0] + + def popWorsrSelected(): + heappop(selected) + + + + + + \ No newline at end of file diff --git a/Instructor.py b/Instructor.py index 2701ff3..3958f2c 100644 --- a/Instructor.py +++ b/Instructor.py @@ -1,5 +1,7 @@ - - class Instructor: +class Instructor: def __init__(self, preference): - self.preference=preference; #List of pairs (Course, Student) + self.preference=preference #List of pairs (Course, Student) + + def getPreferences(): + return self.preference \ No newline at end of file diff --git a/Student.py b/Student.py index 9003017..b59d2cc 100644 --- a/Student.py +++ b/Student.py @@ -1,7 +1,13 @@ class Student: - def __init__ (self,ID,preferences ,alloted,CG): - self.ID=ID; - self.preferences=preferences; - self.alloted=alloted; - self.CG=CG; + def __init__ (self,ID,preferences,alloted,CG): + self.ID=ID + self.preferences=preferences + self.alloted=alloted + self.CG=CG + + def allotCourse(alloted): + self.alloted=alloted + + def getAllotedCourse(): + return self.alloted \ No newline at end of file From 920caa0bdd12c76abaf315db73cc281283fca874 Mon Sep 17 00:00:00 2001 From: Ishan Garg Date: Tue, 18 Sep 2018 17:13:07 +0530 Subject: [PATCH 02/26] Update Course.py --- Course.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Course.py b/Course.py index e20c606..49bf3b7 100644 --- a/Course.py +++ b/Course.py @@ -22,6 +22,7 @@ def isFull(): def allot(student,lambda_s): heappush(self.selected,{lambda_s,student}) + decrementSize() def getWorstSelected(): return selected[0] @@ -33,4 +34,4 @@ def popWorsrSelected(): - \ No newline at end of file + From ba0013b1272f72d9623062a90b547926411bfa5f Mon Sep 17 00:00:00 2001 From: Ishan Garg Date: Tue, 18 Sep 2018 17:17:07 +0530 Subject: [PATCH 03/26] Update Course.py --- Course.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Course.py b/Course.py index 49bf3b7..43cda10 100644 --- a/Course.py +++ b/Course.py @@ -11,6 +11,9 @@ def __init__(self, course_code, size_remaining, selected, applied): def addtoApplied(student,lambda_s): heappush(self.applied,{-lambda_s,student}) + def popApplied(): + return heappop(applied) + def appliedRemaining(): return length(self.applied)>0 @@ -27,8 +30,8 @@ def allot(student,lambda_s): def getWorstSelected(): return selected[0] - def popWorsrSelected(): - heappop(selected) + def popWorstSelected(): + return heappop(selected) From 6e9dad03e934faa2b2de6387eba767a8b302181f Mon Sep 17 00:00:00 2001 From: KeerthanaSrikanth Date: Tue, 18 Sep 2018 17:31:22 +0530 Subject: [PATCH 04/26] Update Compute.py --- Compute.py | 89 +++++++++++++++++++++++++++--------------------------- 1 file changed, 44 insertions(+), 45 deletions(-) diff --git a/Compute.py b/Compute.py index 02bfbb2..7a19e6a 100644 --- a/Compute.py +++ b/Compute.py @@ -3,95 +3,94 @@ import Student #Returns lambda_c for a single course def lambda_c(course, student_list): #course is an object of course class, student_list is a list of Students - c1=0; - c2=0; - c3=0; + c1=0 + c2=0 + c3=0 for j in student_list: - for i in j.preferences: #Checking priority for particular course. + for i in j.getPreferences(): #Checking priority for particular course. if(i[0]==course.course_code): - c1=c1+1; + c1=c1+1 elif(i[1]==course.course_code): - c2=c2+1; + c2=c2+1 elif(i[2]==course.course_code): - c3=c3+1; + c3=c3+1 - app=3*c1+2*c2+1*c3; #Calculating lambda_c - lam_c=app/course.size_remaining; + app=3*c1+2*c2+1*c3 #Calculating lambda_c + lam_c=app/course.size_remaining - return lam_c; + return lam_c def lambda_s(student, p): #Returns lambda_s - return (student.preferences[0][1]*0.8+student.CG*0.2); + return (student.getPreferences()[0][1]*0.8+student.CG*0.2) def instructorAllotPreference(instructor_list, course_list): #Not checking for clashes, not checking if student applied for the course. #List of all instructors, list of all courses. for i in instructor_list: - for k, l in i.preference: - l.alloted=k.course_code; + for k, l in i.getPreferences(): l.allotCourse(k.course_code) - k.size_remaining=k.size_remaining-1; + k.decrementSize() def fillAppliedFirstPreference(course_list, student_list): #List of all courses, list of all students for i in student_list: for j in course_list: - if(i.preferences[0][0]==j.course_code): - ls=lamda_s(i, 0); - heapq.heappush(j.applied,(-ls, i)); + if(i.getPreferences()[0][0]==j.course_code): + ls=lamda_s(i, 0) + j.addToApplied() def sortCourses(course_list, student_list): #List of all courses, list of all students - lambda_c_list=[]; - for i in course_list: - c=lambda_c(i, student_list); - lambda_c_list.append((i, c)); - - sorted(lambda_c_list, key=getKey); - return lambda_c_list; + lambda_c_list=[] + for i in course_list: + c=lambda_c(i, student_list) + lambda_c_list.append((i, c)) + + sorted(lambda_c_list, key=getKey) + return lambda_c_list - + def getKey(item): - return item[1]; + return item[1] def allot(course): while(course.size_remaining>0): - most_deserving=heapq.heappop(course.applied); + most_deserving=heapq.heappop(course.applied) for k,l in most_deserving: #Not sure if this is correct - most_deserving=(-k, l); + most_deserving=(-k, l) - heapq.heappush(course.selected, most_deserving); - l.alloted=course.course_code; - fillRemaining(course.applied, course); + heapq.heappush(course.selected, most_deserving) + l.alloted=course.course_code + fillRemaining(course.applied, course) def fillRemaining(applied, course): while(len(applied)>0): - most_deserving=heapq.heappop(applied); + most_deserving=heapq.heappop(applied) for k, l in most_deserving: - nextPreference(-k, l, course); + nextPreference(-k, l, course) def nextPreference(ls, student, course): - most_deserving=(ls, student); + most_deserving=(ls, student) for k, l in most_deserving: for j in l.preferences: if(j[0]==course): #If course matches - j=j+1; #Not sure. How to increment? - ls=lamda_s(l, j); + j=j+1 #Not sure. How to increment? + ls=lamda_s(l, j) if(j[0].size_remaining!=0): #And next preference is not full - heapq.heappush(j[0].applied, (-ls, l)); #Push student into applied of next preference + heapq.heappush(j[0].applied, (-ls, l)) #Push student into applied of next preference else: - ifFull(ls, student,course); + ifFull(ls, student,course) def ifFull(ls, student, course): - worst_student=heapq.heappop(course.selected); + worst_student=heapq.heappop(course.selected) for k, l in worst_student: if(k Date: Tue, 18 Sep 2018 17:32:07 +0530 Subject: [PATCH 05/26] Update Student.py --- Student.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Student.py b/Student.py index b59d2cc..df62e7a 100644 --- a/Student.py +++ b/Student.py @@ -10,4 +10,7 @@ def allotCourse(alloted): self.alloted=alloted def getAllotedCourse(): - return self.alloted \ No newline at end of file + return self.alloted + + def getPreferences(): + return self.preferences From dd1ad22e621d660ab28d55e0d6eb80d6c0cb3fd4 Mon Sep 17 00:00:00 2001 From: Ishan Garg Date: Tue, 18 Sep 2018 17:48:21 +0530 Subject: [PATCH 06/26] Update Compute.py --- Compute.py | 83 +++++++++++++++++++++++++++--------------------------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/Compute.py b/Compute.py index 7a19e6a..6e5a49c 100644 --- a/Compute.py +++ b/Compute.py @@ -7,7 +7,7 @@ def lambda_c(course, student_list): #course is an object of course class, studen c2=0 c3=0 for j in student_list: - for i in j.getPreferences(): #Checking priority for particular course. + for i in j.preferences: #Checking priority for particular course. if(i[0]==course.course_code): c1=c1+1 elif(i[1]==course.course_code): @@ -18,79 +18,80 @@ def lambda_c(course, student_list): #course is an object of course class, studen app=3*c1+2*c2+1*c3 #Calculating lambda_c lam_c=app/course.size_remaining - return lam_c + return lam_c; def lambda_s(student, p): #Returns lambda_s - return (student.getPreferences()[0][1]*0.8+student.CG*0.2) + return (student.preferences[0][1]*0.8+student.CG*0.2); def instructorAllotPreference(instructor_list, course_list): #Not checking for clashes, not checking if student applied for the course. #List of all instructors, list of all courses. for i in instructor_list: - for k, l in i.getPreferences(): + for k, l in i.preference: + l.alloted=k.course_code; l.allotCourse(k.course_code) - k.decrementSize() + k.size_remaining=k.size_remaining-1; def fillAppliedFirstPreference(course_list, student_list): #List of all courses, list of all students for i in student_list: for j in course_list: - if(i.getPreferences()[0][0]==j.course_code): - ls=lamda_s(i, 0) - j.addToApplied() + if(i.preferences[0][0]==j.course_code): + ls=lamda_s(i, 0); + heapq.heappush(j.applied,(-ls, i)); def sortCourses(course_list, student_list): #List of all courses, list of all students - lambda_c_list=[] - for i in course_list: - c=lambda_c(i, student_list) - lambda_c_list.append((i, c)) - - sorted(lambda_c_list, key=getKey) - return lambda_c_list + lambda_c_list=[]; + for i in course_list: + c=lambda_c(i, student_list); + lambda_c_list.append((i, c)); + + sorted(lambda_c_list, key=getKey); + return lambda_c_list; - + def getKey(item): - return item[1] + return item[1]; def allot(course): - while(course.size_remaining>0): - most_deserving=heapq.heappop(course.applied) - - for k,l in most_deserving: #Not sure if this is correct - most_deserving=(-k, l) - - heapq.heappush(course.selected, most_deserving) - l.alloted=course.course_code - fillRemaining(course.applied, course) + + while(!course.full() and course.appliedRemaining()): + most_deserving=course.popApplied() + course.allot(most_deserving) + most_deserving[1].allotCourse(course.getCourseCode()) + + fillRemaining(course) -def fillRemaining(applied, course): - while(len(applied)>0): - most_deserving=heapq.heappop(applied) - for k, l in most_deserving: - nextPreference(-k, l, course) +def fillRemaining(course): + while(course.appliedRemaining()): + most_deserving=course.popApplied(); + nextPreference(-most_deserving[0], most_deserving[1], course); def nextPreference(ls, student, course): - most_deserving=(ls, student) + most_deserving=(ls, student); + flag=false for k, l in most_deserving: for j in l.preferences: if(j[0]==course): #If course matches - j=j+1 #Not sure. How to increment? - ls=lamda_s(l, j) + f=true + elif (f): + ls=lamda_s(l, j); if(j[0].size_remaining!=0): #And next preference is not full heapq.heappush(j[0].applied, (-ls, l)) #Push student into applied of next preference else: ifFull(ls, student,course) + break def ifFull(ls, student, course): - worst_student=heapq.heappop(course.selected) + worst_student=heapq.heappop(course.selected); for k, l in worst_student: if(k Date: Tue, 18 Sep 2018 17:49:18 +0530 Subject: [PATCH 07/26] Update Compute.py --- Compute.py | 128 ++++++++++++++--------------------------------------- 1 file changed, 34 insertions(+), 94 deletions(-) diff --git a/Compute.py b/Compute.py index 6e5a49c..f658d4e 100644 --- a/Compute.py +++ b/Compute.py @@ -1,97 +1,37 @@ -import Course -import Instructor -import Student -#Returns lambda_c for a single course -def lambda_c(course, student_list): #course is an object of course class, student_list is a list of Students - c1=0 - c2=0 - c3=0 - for j in student_list: - for i in j.preferences: #Checking priority for particular course. - if(i[0]==course.course_code): - c1=c1+1 - elif(i[1]==course.course_code): - c2=c2+1 - elif(i[2]==course.course_code): - c3=c3+1 - - app=3*c1+2*c2+1*c3 #Calculating lambda_c - lam_c=app/course.size_remaining - - return lam_c; - -def lambda_s(student, p): #Returns lambda_s - return (student.preferences[0][1]*0.8+student.CG*0.2); - -def instructorAllotPreference(instructor_list, course_list): #Not checking for clashes, not checking if student applied for the course. - #List of all instructors, list of all courses. - for i in instructor_list: - for k, l in i.preference: - l.alloted=k.course_code; - l.allotCourse(k.course_code) - k.size_remaining=k.size_remaining-1; - -def fillAppliedFirstPreference(course_list, student_list): -#List of all courses, list of all students - for i in student_list: - for j in course_list: - if(i.preferences[0][0]==j.course_code): - ls=lamda_s(i, 0); - heapq.heappush(j.applied,(-ls, i)); - -def sortCourses(course_list, student_list): -#List of all courses, list of all students - lambda_c_list=[]; - for i in course_list: - c=lambda_c(i, student_list); - lambda_c_list.append((i, c)); - - sorted(lambda_c_list, key=getKey); - return lambda_c_list; - - +from heapq import heappush,heappop +class Course: + applied=[] + selected=[] + def __init__(self, course_code, size_remaining, selected, applied): + self.course_code=course_code + self.size_remaining=size_remaining + self.selected=selected + self.applied=applied + + def addtoApplied(student,lambda_s): + heappush(self.applied,(-lambda_s,student)) + + def popApplied(): + return heappop(self.applied) + + def appliedRemaining(): + return length(self.applied)>0 + + def decrementSize(): + self.size_remaining-=1 + + def isFull(): + return self.size_remaining==0 + + def allot(student,lambda_s): + heappush(self.selected,(lambda_s,student)) + decrementSize() -def getKey(item): - return item[1]; - -def allot(course): - - while(!course.full() and course.appliedRemaining()): - most_deserving=course.popApplied() - course.allot(most_deserving) - most_deserving[1].allotCourse(course.getCourseCode()) - - fillRemaining(course) - - -def fillRemaining(course): - while(course.appliedRemaining()): - most_deserving=course.popApplied(); - nextPreference(-most_deserving[0], most_deserving[1], course); + def getWorstSelected(): + return self.selected[0] -def nextPreference(ls, student, course): - most_deserving=(ls, student); - flag=false - for k, l in most_deserving: - for j in l.preferences: - if(j[0]==course): #If course matches - f=true - elif (f): - ls=lamda_s(l, j); - if(j[0].size_remaining!=0): #And next preference is not full - heapq.heappush(j[0].applied, (-ls, l)) #Push student into applied of next preference - else: - ifFull(ls, student,course) - break + def popWorstSelected(): + return heappop(self.selected) -def ifFull(ls, student, course): - worst_student=heapq.heappop(course.selected); - for k, l in worst_student: - if(k Date: Wed, 19 Sep 2018 12:17:50 +0530 Subject: [PATCH 08/26] Update Compute.py --- Compute.py | 137 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 100 insertions(+), 37 deletions(-) diff --git a/Compute.py b/Compute.py index f658d4e..5623f40 100644 --- a/Compute.py +++ b/Compute.py @@ -1,37 +1,100 @@ -from heapq import heappush,heappop -class Course: - applied=[] - selected=[] - def __init__(self, course_code, size_remaining, selected, applied): - self.course_code=course_code - self.size_remaining=size_remaining - self.selected=selected - self.applied=applied - - def addtoApplied(student,lambda_s): - heappush(self.applied,(-lambda_s,student)) - - def popApplied(): - return heappop(self.applied) - - def appliedRemaining(): - return length(self.applied)>0 - - def decrementSize(): - self.size_remaining-=1 - - def isFull(): - return self.size_remaining==0 - - def allot(student,lambda_s): - heappush(self.selected,(lambda_s,student)) - decrementSize() - - def getWorstSelected(): - return self.selected[0] - - def popWorstSelected(): - return heappop(self.selected) - - def getCourseCode(): - return self.course_code +import Course +import Instructor +import Student +import operator +#Returns lambda_c for a single course +def lambda_c(course, student_list): #course is an object of course class, student_list is a list of Students + c1=0 + c2=0 + c3=0 + for j in student_list: + for i in j.getPreferences(): #Checking priority for particular course. + if(i[0]==course.getCourseCode()): + c1=c1+1 + elif(i[1]==course.getCourseCode()): + c2=c2+1 + elif(i[2]==course.getCourseCode()): + c3=c3+1 + + app=3*c1+2*c2+1*c3 #Calculating lambda_c + lam_c=app/course.getSizeRemaining() + + return lam_c + +def lambda_s(student, grade): #Returns lambda_s + + return (grade*0.8+student.getCG()*0.2) + +def instructorAllotPreference(instructor_list, course_list): #Not checking for clashes, not checking if student applied for the course. + #List of all instructors, list of all courses. + for i in instructor_list: + for k, l in i.getPreferences(): + l.allotCourse(k.getCourseCode()) + k.decrementSize() + +def fillAppliedFirstPreference(course_list, student_list): +#List of all courses, list of all students + for i in student_list: + for j in course_list: + x=i.getPreferences() + if(x[0][0]==j.getCourseCode()): + ls=lambda_s(i, x[0][1]) + j.addToApplied(i, ls) + +def sortCourses(course_list, student_list): +#List of all courses, list of all students + lambda_c_list=[] + for i in course_list: + c=lambda_c(i, student_list) + lambda_c_list.append((i, c)) + + lambda_c_list.sort(key=operator.itemgetter(1)) + lambda_c_list=[course for course, lam_c in lambda_c_list] + return lambda_c_list + + + +def getKey(item): + return item[1] + +def allot(course): + while(course.getSizeRemaining()>0 and course.appliedRemaining()>0): + most_deserving=course.popApplied() + course.allot(-most_deserving[0], most_deserving[1]) + most_deserving[1].allotCourse(course.getCourseCode()) + + fillRemaining(course) + + +def fillRemaining(course): + while(course.appliedRemaining()>0): + most_deserving=course.popApplied() + + nextPreference(-most_deserving[0], most_deserving[1], course) + +def nextPreference(ls, student, course): + most_deserving=(ls, student) + flag=false + for k, l in most_deserving: + for j in l.getPreferences(): + if(j[0]==course): #If course matches + flag=true + elif(flag): + ls=lambda_s(l, j[1]) + if(j[0].getSizeRemaining()>0): #And next preference is not full + j[0].addToApplied(l, ls) #Push student into applied of next preference + + else: + ifFull(ls, student, j[0]) #Check this line. Changed it + break + +def ifFull(ls, student, course): + worst_student=getWorstSelected() + for k, l in worst_student: + if(k Date: Wed, 19 Sep 2018 12:18:50 +0530 Subject: [PATCH 09/26] Update Course.py --- Course.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/Course.py b/Course.py index 43cda10..f0f8577 100644 --- a/Course.py +++ b/Course.py @@ -9,7 +9,7 @@ def __init__(self, course_code, size_remaining, selected, applied): self.applied=applied def addtoApplied(student,lambda_s): - heappush(self.applied,{-lambda_s,student}) + heappush(self.applied,(-lambda_s,student)) def popApplied(): return heappop(applied) @@ -20,21 +20,19 @@ def appliedRemaining(): def decrementSize(): self.size_remaining-=1 - def isFull(): - return size_remaining==0 - def allot(student,lambda_s): - heappush(self.selected,{lambda_s,student}) + heappush(self.selected,(lambda_s,student)) decrementSize() def getWorstSelected(): return selected[0] def popWorstSelected(): + self.size_remaining-=1 return heappop(selected) + def getCourseCode(): + return self.course_code - - - - + def getSizeRemaining(): + return self.size_remaining From f0b9347fa662a6e83b46584cc1d34d74019fd00f Mon Sep 17 00:00:00 2001 From: KeerthanaSrikanth Date: Wed, 19 Sep 2018 12:19:31 +0530 Subject: [PATCH 10/26] Update Student.py --- Student.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Student.py b/Student.py index df62e7a..eaaf011 100644 --- a/Student.py +++ b/Student.py @@ -14,3 +14,8 @@ def getAllotedCourse(): def getPreferences(): return self.preferences + + def getCG(): + return self.CG + + From ce6b8fc77678c48a0197677f46bf1bf3661eea68 Mon Sep 17 00:00:00 2001 From: KeerthanaSrikanth Date: Thu, 20 Sep 2018 17:43:10 +0530 Subject: [PATCH 11/26] Add temporary data --- ARC - Sheet2.csv | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 ARC - Sheet2.csv diff --git a/ARC - Sheet2.csv b/ARC - Sheet2.csv new file mode 100644 index 0000000..455c03c --- /dev/null +++ b/ARC - Sheet2.csv @@ -0,0 +1,30 @@ +ID,CG,Course1,Grade1,Course2,Grade2,Course3,Grade3,Course4,Grade4,Course5,Grade5 +2017A3PS0453G,9.2,A,10,B,8,D,9,,,, +2017A3PS0455G,8.3,E,8,G,9,,,,,, +2017A3PS0456G,7.4,F,9,E,7,D,8,,,, +2017A3PS0458G,8.5,A,10,G,9,,,,,, +2017A3PS0459G,9.7,B,6,G,8,A,9,,,, +2017A3PS0899G,8.3,E,7,D,9,,,,,, +2017A3PS0900G,7.9,E,8,A,8,,,,,, +2017A3PS0901G,8.7,A,9,,,,,,,, +2017A3PS0902G,8.1,D,10,,,,,,,, +2017A3PS1900G,7.7,F,8,A,7,G,8,,,, +2017A3PS1901G,7.9,E,7,A,9,B,9,,,, +2017A3PS0453G,7.2,C,9,H,8,D,8,,,, +2017A3PS0455G,7.4,F,7,D,7,C,7,,,, +2017A3PS0456G,8.6,A,8,B,9,C,9,G,9,, +2017A3PS0458G,8.8,F,9,D,10,E,8,,,, +2017A3PS0459G,10,A,6,C,6,D,9,F,8,I,10 +2017A3PS0899G,8.5,A,7,C,9,B,7,,,, +2017A3PS0900G,9.1,H,8,D,9,H,6,,,, +2017A3PS0901G,8.2,H,7,I,10,,,,,, +2017A3PS0902G,8.8,B,8,C,8,H,10,A,10,, +2017A3PS1900G,7.6,E,9,F,7,A,10,C,10,, +2016A3PS0166G,7.2,I,7,D,9,E,9,G,9,, +2016A3PS0167G,7.4,H,10,B,10,A,7,D,8,, +2016A3PS0168G,8.5,B,8,D,9,G,8,H,9,E,8 +2016A3PS0169G,7.5,I,9,B,10,H,10,G,7,, +2016A3PS0170G,8,A,6,E,9,G,9,D,6,, +2016A3PS0173G,9,A,8,C,9,B,10,D,9,, +2016A3PS0178G,7.7,F,7,A,8,,,,,, +2016A3PS0180G,7.3,B,10,I,9,A,9,C,8,, \ No newline at end of file From 84e603afd49cd8012a63965e4e9e705ef01781ca Mon Sep 17 00:00:00 2001 From: KeerthanaSrikanth Date: Thu, 20 Sep 2018 18:10:26 +0530 Subject: [PATCH 12/26] Add temporary instructor and course data --- course.py.ods | Bin 0 -> 9104 bytes instructor.ods | Bin 0 -> 12079 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 course.py.ods create mode 100644 instructor.ods diff --git a/course.py.ods b/course.py.ods new file mode 100644 index 0000000000000000000000000000000000000000..36c9ccd38f644ff23e741872333645308e2e1355 GIT binary patch literal 9104 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 XEhBLo5i}to;Uj+L2>!YASNHxOLfOK8 literal 0 HcmV?d00001 diff --git a/instructor.ods b/instructor.ods new file mode 100644 index 0000000000000000000000000000000000000000..8da478a7a4b70328be0edc674d6b336725386f97 GIT binary patch literal 12079 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 ZKM=HxI5f=5X|J9?*3bM?Nb_>^e*pJCaX0_~ literal 0 HcmV?d00001 From eb72431600e963a996dabaf71ba34672cad00ce9 Mon Sep 17 00:00:00 2001 From: KeerthanaSrikanth Date: Thu, 20 Sep 2018 18:13:29 +0530 Subject: [PATCH 13/26] Add files via upload From 3df9ecf0d2899269c8e38d2b001c18bd1acdaa06 Mon Sep 17 00:00:00 2001 From: KeerthanaSrikanth Date: Fri, 21 Sep 2018 12:08:43 +0530 Subject: [PATCH 14/26] Delete course.py.ods --- course.py.ods | Bin 9104 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 course.py.ods diff --git a/course.py.ods b/course.py.ods deleted file mode 100644 index 36c9ccd38f644ff23e741872333645308e2e1355..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9104 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 XEhBLo5i}to;Uj+L2>!YASNHxOLfOK8 From 151a484592a77ac51374f87586defab0d7af12a0 Mon Sep 17 00:00:00 2001 From: KeerthanaSrikanth Date: Fri, 21 Sep 2018 12:09:04 +0530 Subject: [PATCH 15/26] Delete instructor.ods --- instructor.ods | Bin 12079 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 instructor.ods diff --git a/instructor.ods b/instructor.ods deleted file mode 100644 index 8da478a7a4b70328be0edc674d6b336725386f97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12079 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 ZKM=HxI5f=5X|J9?*3bM?Nb_>^e*pJCaX0_~ From bcfc6569c82151b84cc27cee1cfbd6f33ae84bd0 Mon Sep 17 00:00:00 2001 From: KeerthanaSrikanth Date: Fri, 21 Sep 2018 12:09:54 +0530 Subject: [PATCH 16/26] Add self to methods --- Course.py | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/Course.py b/Course.py index f0f8577..936ec31 100644 --- a/Course.py +++ b/Course.py @@ -2,37 +2,35 @@ class Course: applied=[] selected=[] - def __init__(self, course_code, size_remaining, selected, applied): + def __init__(self, course_code, size_remaining): self.course_code=course_code self.size_remaining=size_remaining - self.selected=selected - self.applied=applied - - def addtoApplied(student,lambda_s): + + def addtoApplied(self, student,lambda_s): heappush(self.applied,(-lambda_s,student)) - def popApplied(): + def popApplied(self): return heappop(applied) - def appliedRemaining(): + def appliedRemaining(self): return length(self.applied)>0 - def decrementSize(): + def decrementSize(self): self.size_remaining-=1 - def allot(student,lambda_s): + def allot(self, student,lambda_s): heappush(self.selected,(lambda_s,student)) decrementSize() - def getWorstSelected(): + def getWorstSelected(self): return selected[0] - def popWorstSelected(): + def popWorstSelected(self): self.size_remaining-=1 return heappop(selected) - def getCourseCode(): + def getCourseCode(self): return self.course_code - def getSizeRemaining(): + def getSizeRemaining(self): return self.size_remaining From 7bc56efa83c9a7dc7fa854f9efcf5e603c63f50b Mon Sep 17 00:00:00 2001 From: KeerthanaSrikanth Date: Fri, 21 Sep 2018 12:10:57 +0530 Subject: [PATCH 17/26] Add self to methods --- Instructor.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Instructor.py b/Instructor.py index 3958f2c..cff1a2a 100644 --- a/Instructor.py +++ b/Instructor.py @@ -3,5 +3,5 @@ class Instructor: def __init__(self, preference): self.preference=preference #List of pairs (Course, Student) - def getPreferences(): - return self.preference \ No newline at end of file + def getPreferences(self): + return self.preference From e5b2031cf004db35163aac1bebaa680f85d3c142 Mon Sep 17 00:00:00 2001 From: KeerthanaSrikanth Date: Fri, 21 Sep 2018 12:12:18 +0530 Subject: [PATCH 18/26] Add self to methods --- Student.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Student.py b/Student.py index eaaf011..3fab315 100644 --- a/Student.py +++ b/Student.py @@ -6,16 +6,18 @@ def __init__ (self,ID,preferences,alloted,CG): self.alloted=alloted self.CG=CG - def allotCourse(alloted): + def allotCourse(self, alloted): self.alloted=alloted - def getAllotedCourse(): + def getAllotedCourse(self): return self.alloted - def getPreferences(): + def getPreferences(self): return self.preferences - def getCG(): + def getCG(self): return self.CG + def getID(self): + return self.ID From 8a361d05926564e12110420bcb1fcdcd8c95e5bd Mon Sep 17 00:00:00 2001 From: KeerthanaSrikanth Date: Fri, 21 Sep 2018 12:13:03 +0530 Subject: [PATCH 19/26] Delete ARC - Sheet2.csv --- ARC - Sheet2.csv | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 ARC - Sheet2.csv diff --git a/ARC - Sheet2.csv b/ARC - Sheet2.csv deleted file mode 100644 index 455c03c..0000000 --- a/ARC - Sheet2.csv +++ /dev/null @@ -1,30 +0,0 @@ -ID,CG,Course1,Grade1,Course2,Grade2,Course3,Grade3,Course4,Grade4,Course5,Grade5 -2017A3PS0453G,9.2,A,10,B,8,D,9,,,, -2017A3PS0455G,8.3,E,8,G,9,,,,,, -2017A3PS0456G,7.4,F,9,E,7,D,8,,,, -2017A3PS0458G,8.5,A,10,G,9,,,,,, -2017A3PS0459G,9.7,B,6,G,8,A,9,,,, -2017A3PS0899G,8.3,E,7,D,9,,,,,, -2017A3PS0900G,7.9,E,8,A,8,,,,,, -2017A3PS0901G,8.7,A,9,,,,,,,, -2017A3PS0902G,8.1,D,10,,,,,,,, -2017A3PS1900G,7.7,F,8,A,7,G,8,,,, -2017A3PS1901G,7.9,E,7,A,9,B,9,,,, -2017A3PS0453G,7.2,C,9,H,8,D,8,,,, -2017A3PS0455G,7.4,F,7,D,7,C,7,,,, -2017A3PS0456G,8.6,A,8,B,9,C,9,G,9,, -2017A3PS0458G,8.8,F,9,D,10,E,8,,,, -2017A3PS0459G,10,A,6,C,6,D,9,F,8,I,10 -2017A3PS0899G,8.5,A,7,C,9,B,7,,,, -2017A3PS0900G,9.1,H,8,D,9,H,6,,,, -2017A3PS0901G,8.2,H,7,I,10,,,,,, -2017A3PS0902G,8.8,B,8,C,8,H,10,A,10,, -2017A3PS1900G,7.6,E,9,F,7,A,10,C,10,, -2016A3PS0166G,7.2,I,7,D,9,E,9,G,9,, -2016A3PS0167G,7.4,H,10,B,10,A,7,D,8,, -2016A3PS0168G,8.5,B,8,D,9,G,8,H,9,E,8 -2016A3PS0169G,7.5,I,9,B,10,H,10,G,7,, -2016A3PS0170G,8,A,6,E,9,G,9,D,6,, -2016A3PS0173G,9,A,8,C,9,B,10,D,9,, -2016A3PS0178G,7.7,F,7,A,8,,,,,, -2016A3PS0180G,7.3,B,10,I,9,A,9,C,8,, \ No newline at end of file From ce0bde2c97ef238595011b0d4b7d96339023f7c6 Mon Sep 17 00:00:00 2001 From: KeerthanaSrikanth Date: Fri, 21 Sep 2018 12:13:55 +0530 Subject: [PATCH 20/26] Create course_list and student_list --- Compute.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/Compute.py b/Compute.py index 5623f40..65d8c40 100644 --- a/Compute.py +++ b/Compute.py @@ -1,7 +1,8 @@ -import Course -import Instructor -import Student +from Course import * +from Student import * +from Instructor import * import operator +import pandas as pd #Returns lambda_c for a single course def lambda_c(course, student_list): #course is an object of course class, student_list is a list of Students c1=0 @@ -98,3 +99,21 @@ def ifFull(ls, student, course): nextPreference(k, l, course) else: nextPreference(ls, student, course) + +df=pd.read_csv('Course.csv') +course_list=[] +course_code_dict={} +for index, row in df.iterrows(): + c=Course(row['course_code'],row['Size-remaining']) + course_list.append(c) + course_code_dict[c.getCourseCode()]=c + +df=pd.read_csv('Student.csv') +student_list=[] +student_id_dict={} +for index, row in df.iterrows(): + prefs=[(row['Course1'],row['Grade1']),(row['Course2'],row['Grade2']),(row['Course3'],row['Grade3']),(row['Course4'],row['Grade4']),(row['Course5'],row['Grade5'])] + s=Student(row['ID'],prefs,"None",row['CG']) + student_list.append(s) + student_id_dict[s.getID()]=s + From 57ca8f74a4773ba608e6ff31c026fdc73ab331ce Mon Sep 17 00:00:00 2001 From: KeerthanaSrikanth Date: Fri, 21 Sep 2018 12:15:06 +0530 Subject: [PATCH 21/26] Add temporary course, instructor and student data --- Course.csv | 10 ++++++++++ Instructor.csv | 12 ++++++++++++ Student.csv | 30 ++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 Course.csv create mode 100644 Instructor.csv create mode 100644 Student.csv diff --git a/Course.csv b/Course.csv new file mode 100644 index 0000000..14d74bf --- /dev/null +++ b/Course.csv @@ -0,0 +1,10 @@ +course_code,Size-remaining +A,5 +B,4 +C,4 +D,3 +E,7 +F,2 +G,1 +H,6 +I,3 \ No newline at end of file diff --git a/Instructor.csv b/Instructor.csv new file mode 100644 index 0000000..03ff664 --- /dev/null +++ b/Instructor.csv @@ -0,0 +1,12 @@ +Instructor,Course1,Student1,Student2 +Z,A,2017A7PS0054G, +Z,B,2016A7PS0002G, +Y,,, +X,D,2015A8PS0326G, +W,H,2017AAPS0267G,2017AAPS0452G +V,,, +U,,, +T,G,2014B1A40567G, +S,I,2015A3PS0562G, +R,,, +Q,C,2016B3A10421G,2015B4TS0631G \ No newline at end of file diff --git a/Student.csv b/Student.csv new file mode 100644 index 0000000..455c03c --- /dev/null +++ b/Student.csv @@ -0,0 +1,30 @@ +ID,CG,Course1,Grade1,Course2,Grade2,Course3,Grade3,Course4,Grade4,Course5,Grade5 +2017A3PS0453G,9.2,A,10,B,8,D,9,,,, +2017A3PS0455G,8.3,E,8,G,9,,,,,, +2017A3PS0456G,7.4,F,9,E,7,D,8,,,, +2017A3PS0458G,8.5,A,10,G,9,,,,,, +2017A3PS0459G,9.7,B,6,G,8,A,9,,,, +2017A3PS0899G,8.3,E,7,D,9,,,,,, +2017A3PS0900G,7.9,E,8,A,8,,,,,, +2017A3PS0901G,8.7,A,9,,,,,,,, +2017A3PS0902G,8.1,D,10,,,,,,,, +2017A3PS1900G,7.7,F,8,A,7,G,8,,,, +2017A3PS1901G,7.9,E,7,A,9,B,9,,,, +2017A3PS0453G,7.2,C,9,H,8,D,8,,,, +2017A3PS0455G,7.4,F,7,D,7,C,7,,,, +2017A3PS0456G,8.6,A,8,B,9,C,9,G,9,, +2017A3PS0458G,8.8,F,9,D,10,E,8,,,, +2017A3PS0459G,10,A,6,C,6,D,9,F,8,I,10 +2017A3PS0899G,8.5,A,7,C,9,B,7,,,, +2017A3PS0900G,9.1,H,8,D,9,H,6,,,, +2017A3PS0901G,8.2,H,7,I,10,,,,,, +2017A3PS0902G,8.8,B,8,C,8,H,10,A,10,, +2017A3PS1900G,7.6,E,9,F,7,A,10,C,10,, +2016A3PS0166G,7.2,I,7,D,9,E,9,G,9,, +2016A3PS0167G,7.4,H,10,B,10,A,7,D,8,, +2016A3PS0168G,8.5,B,8,D,9,G,8,H,9,E,8 +2016A3PS0169G,7.5,I,9,B,10,H,10,G,7,, +2016A3PS0170G,8,A,6,E,9,G,9,D,6,, +2016A3PS0173G,9,A,8,C,9,B,10,D,9,, +2016A3PS0178G,7.7,F,7,A,8,,,,,, +2016A3PS0180G,7.3,B,10,I,9,A,9,C,8,, \ No newline at end of file From 3edc28b7659af2e94b2c17605f568348836604cc Mon Sep 17 00:00:00 2001 From: Ishan Garg Date: Sat, 22 Sep 2018 16:45:42 +0530 Subject: [PATCH 22/26] Update Compute.py --- Compute.py | 104 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 62 insertions(+), 42 deletions(-) diff --git a/Compute.py b/Compute.py index 65d8c40..df7def8 100644 --- a/Compute.py +++ b/Compute.py @@ -5,26 +5,22 @@ import pandas as pd #Returns lambda_c for a single course def lambda_c(course, student_list): #course is an object of course class, student_list is a list of Students - c1=0 - c2=0 - c3=0 - for j in student_list: + c=[0,0,0,0,0] + for j in student_list: + cnt=0 for i in j.getPreferences(): #Checking priority for particular course. - if(i[0]==course.getCourseCode()): - c1=c1+1 - elif(i[1]==course.getCourseCode()): - c2=c2+1 - elif(i[2]==course.getCourseCode()): - c3=c3+1 + if (i[0]==course.getCourseCode()): + c[cnt]+=1 + cnt+=1 - app=3*c1+2*c2+1*c3 #Calculating lambda_c + app=5*c[0]+4*c[1]+3*c[2]+2*c[3]+c[4] #Calculating lambda_c lam_c=app/course.getSizeRemaining() return lam_c def lambda_s(student, grade): #Returns lambda_s - - return (grade*0.8+student.getCG()*0.2) + grade=float(grade) + return (grade*10+float(student.getCG())) def instructorAllotPreference(instructor_list, course_list): #Not checking for clashes, not checking if student applied for the course. #List of all instructors, list of all courses. @@ -36,11 +32,11 @@ def instructorAllotPreference(instructor_list, course_list): #Not checking for c def fillAppliedFirstPreference(course_list, student_list): #List of all courses, list of all students for i in student_list: - for j in course_list: - x=i.getPreferences() - if(x[0][0]==j.getCourseCode()): - ls=lambda_s(i, x[0][1]) - j.addToApplied(i, ls) + if (i.getAllotedCourse()!="None"): + continue + x=i.getPreferences() + ls=lambda_s(i, x[0][1]) + course_code_dict[x[0][0]].addToApplied(i, ls) def sortCourses(course_list, student_list): #List of all courses, list of all students @@ -53,11 +49,6 @@ def sortCourses(course_list, student_list): lambda_c_list=[course for course, lam_c in lambda_c_list] return lambda_c_list - - -def getKey(item): - return item[1] - def allot(course): while(course.getSizeRemaining()>0 and course.appliedRemaining()>0): most_deserving=course.popApplied() @@ -69,25 +60,21 @@ def allot(course): def fillRemaining(course): while(course.appliedRemaining()>0): - most_deserving=course.popApplied() - - nextPreference(-most_deserving[0], most_deserving[1], course) - -def nextPreference(ls, student, course): - most_deserving=(ls, student) - flag=false - for k, l in most_deserving: - for j in l.getPreferences(): - if(j[0]==course): #If course matches - flag=true - elif(flag): - ls=lambda_s(l, j[1]) - if(j[0].getSizeRemaining()>0): #And next preference is not full - j[0].addToApplied(l, ls) #Push student into applied of next preference - - else: - ifFull(ls, student, j[0]) #Check this line. Changed it - break + most_deserving=course.popApplied() + nextPreference(most_deserving[1], course) + +def nextPreference(student, course): + flag=False + for j in student.getPreferences(): + if(j[0]==course): #If course matches + flag=True + elif(flag): + ls=lambda_s(student, j[1]) + if(j[0].getSizeRemaining()>0): #And next preference is not full + j[0].addToApplied(l, ls) #Push student into applied of next preference + else: + ifFull(ls, student, j[0]) #Check this line. Changed it + break def ifFull(ls, student, course): worst_student=getWorstSelected() @@ -112,8 +99,41 @@ def ifFull(ls, student, course): student_list=[] student_id_dict={} for index, row in df.iterrows(): + if (row['ID'] in student_id_dict): #to take care of duplicate data set + continue prefs=[(row['Course1'],row['Grade1']),(row['Course2'],row['Grade2']),(row['Course3'],row['Grade3']),(row['Course4'],row['Grade4']),(row['Course5'],row['Grade5'])] s=Student(row['ID'],prefs,"None",row['CG']) student_list.append(s) student_id_dict[s.getID()]=s +df=pd.read_csv('Instructor.csv') +instructor_list=[] +instructor_id_dict={} +for index, row in df.iterrows(): + c=course_code_dict[row['Course']] + s=student_id_dict[row['Student']] + prefs=[(c,s)] + if (row['Instructor'] in instructor_id_dict): + instructor_id_dict[row['Instructor']].addToPreferences(c,s) + else: + i=Instructor(prefs) + instructor_list.append(i) + instructor_id_dict[row['Instructor']]=i + +instructorAllotPreference (instructor_list,course_list) + +for c in course_list: + if (c.getSizeRemaining()==0): + course_list.remove(c) + +course_list=sortCourses(course_list,student_list) + +fillAppliedFirstPreference(course_list,student_list) + +for c in course_list: + allot(c) + +print(len(student_list)) + +for s in student_list: + print(s.getID(),s.getAllotedCourse()) From d48471cca9f09383613a25514c74053da9dbd754 Mon Sep 17 00:00:00 2001 From: harshrawat17 <33692444+harshrawat17@users.noreply.github.com> Date: Wed, 26 Sep 2018 19:59:44 +0530 Subject: [PATCH 23/26] documentcompute.py --- Compute.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Compute.py b/Compute.py index df7def8..417e61e 100644 --- a/Compute.py +++ b/Compute.py @@ -3,7 +3,8 @@ from Instructor import * import operator import pandas as pd -#Returns lambda_c for a single course + +#Calculates lambda_c(which is used to rank the courses) for a single course def lambda_c(course, student_list): #course is an object of course class, student_list is a list of Students c=[0,0,0,0,0] for j in student_list: @@ -18,10 +19,12 @@ def lambda_c(course, student_list): #course is an object of course class, studen return lam_c -def lambda_s(student, grade): #Returns lambda_s +#Calculates lambda_s (which is used to rank the students) for a single student +def lambda_s(student, grade): #returns lambda_s grade=float(grade) return (grade*10+float(student.getCG())) +#allots the students who have been recommended by the instructors of various courses into the respective courses def instructorAllotPreference(instructor_list, course_list): #Not checking for clashes, not checking if student applied for the course. #List of all instructors, list of all courses. for i in instructor_list: @@ -29,6 +32,7 @@ def instructorAllotPreference(instructor_list, course_list): #Not checking for c l.allotCourse(k.getCourseCode()) k.decrementSize() +#alloting first preference to students from the course list sorted on the basis of lambda_c def fillAppliedFirstPreference(course_list, student_list): #List of all courses, list of all students for i in student_list: @@ -38,6 +42,7 @@ def fillAppliedFirstPreference(course_list, student_list): ls=lambda_s(i, x[0][1]) course_code_dict[x[0][0]].addToApplied(i, ls) +#sorts the courses according to the lambda_c as parameter def sortCourses(course_list, student_list): #List of all courses, list of all students lambda_c_list=[] @@ -49,6 +54,7 @@ def sortCourses(course_list, student_list): lambda_c_list=[course for course, lam_c in lambda_c_list] return lambda_c_list +#alloting the students their respective courses from the sorted list of that course def allot(course): while(course.getSizeRemaining()>0 and course.appliedRemaining()>0): most_deserving=course.popApplied() @@ -57,12 +63,13 @@ def allot(course): fillRemaining(course) - +#filling the remaining seats of the course def fillRemaining(course): while(course.appliedRemaining()>0): most_deserving=course.popApplied() nextPreference(most_deserving[1], course) +#pushing students into the next preference course list if their current preference is full def nextPreference(student, course): flag=False for j in student.getPreferences(): @@ -73,9 +80,10 @@ def nextPreference(student, course): if(j[0].getSizeRemaining()>0): #And next preference is not full j[0].addToApplied(l, ls) #Push student into applied of next preference else: - ifFull(ls, student, j[0]) #Check this line. Changed it + ifFull(ls, student, j[0]) break +#checking whether their current preference course list is full or not and sending them to next preference if list full def ifFull(ls, student, course): worst_student=getWorstSelected() for k, l in worst_student: @@ -87,6 +95,7 @@ def ifFull(ls, student, course): else: nextPreference(ls, student, course) +#(don't know much about pandas so can't do documentation) df=pd.read_csv('Course.csv') course_list=[] course_code_dict={} @@ -137,3 +146,6 @@ def ifFull(ls, student, course): for s in student_list: print(s.getID(),s.getAllotedCourse()) + + + From 5a3efa1942d9eb821a8b7080ed80a3eddef7d993 Mon Sep 17 00:00:00 2001 From: harshrawat17 <33692444+harshrawat17@users.noreply.github.com> Date: Wed, 26 Sep 2018 20:02:02 +0530 Subject: [PATCH 24/26] course_document.py --- Course.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/Course.py b/Course.py index 936ec31..aab3965 100644 --- a/Course.py +++ b/Course.py @@ -1,36 +1,50 @@ from heapq import heappush,heappop class Course: - applied=[] - selected=[] def __init__(self, course_code, size_remaining): self.course_code=course_code self.size_remaining=size_remaining - - def addtoApplied(self, student,lambda_s): + self.applied=[] + self.selected=[] + + #adding students to the applied list + def addToApplied(self, student,lambda_s): heappush(self.applied,(-lambda_s,student)) + + #prints the student ID no.s who have applied + def printApplied(self): + for x in self.applied: + print(x[1].getID()) + #pops the best student suitable for the course on the basis of lambda_s def popApplied(self): - return heappop(applied) + return heappop(self.applied) + #checking the number of students in the applied list def appliedRemaining(self): - return length(self.applied)>0 + return len(self.applied) + #decrements the size of the course list def decrementSize(self): self.size_remaining-=1 + #pushing the worst student (on basis of lambda_s) to the top of the list def allot(self, student,lambda_s): heappush(self.selected,(lambda_s,student)) - decrementSize() + self.decrementSize() + #returns the worst student def getWorstSelected(self): - return selected[0] + return self.selected[0] + #removes the worst student from the selected list def popWorstSelected(self): self.size_remaining-=1 - return heappop(selected) + return heappop(self.selected) + #returns the course code of the course def getCourseCode(self): return self.course_code + #returns the size remaining in the course def getSizeRemaining(self): return self.size_remaining From 2ef525810185f062390556103c1ebb8d6c209c19 Mon Sep 17 00:00:00 2001 From: harshrawat17 <33692444+harshrawat17@users.noreply.github.com> Date: Wed, 26 Sep 2018 20:03:41 +0530 Subject: [PATCH 25/26] document_instructor.py --- Instructor.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Instructor.py b/Instructor.py index cff1a2a..149f65f 100644 --- a/Instructor.py +++ b/Instructor.py @@ -1,7 +1,12 @@ class Instructor: def __init__(self, preference): - self.preference=preference #List of pairs (Course, Student) + self.preference=preference #here preference is a list of pairs (Course, Student) + #list of students given by the instructors of their respective courses:- def getPreferences(self): return self.preference + + #adding students into the above preference list:- + def addToPreferences(self,course,student): + self.preference.append((course,student)) From 7ada9136f5eb1c09526fcf01c1ba64c6a50aacba Mon Sep 17 00:00:00 2001 From: harshrawat17 <33692444+harshrawat17@users.noreply.github.com> Date: Wed, 26 Sep 2018 20:05:02 +0530 Subject: [PATCH 26/26] document_student.py --- Student.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Student.py b/Student.py index 3fab315..c5adda9 100644 --- a/Student.py +++ b/Student.py @@ -2,22 +2,31 @@ class Student: def __init__ (self,ID,preferences,alloted,CG): self.ID=ID - self.preferences=preferences + self.preferences=preferences #here preferences is a list of (grade,course) self.alloted=alloted self.CG=CG + #redefining the greater than operator. (if two students are compared, they will be compared on the bases of ID) + def __gt__(self, student2): + return self.ID > student2.getID() + + #allots the course to the student:- def allotCourse(self, alloted): self.alloted=alloted + #returns the alloted course of the student:- def getAllotedCourse(self): return self.alloted + #returns preference list of the student:- def getPreferences(self): return self.preferences + #returns CG of the student:- def getCG(self): return self.CG - + #returns ID of the student:- def getID(self): return self.ID +