Esempio n. 1
0
    def select_assignment(self):

        max_assignment = Assignment()
        max_assignment.score = float('-inf')

        for i in self.A:

            if (i.score > max_assignment.score) and i.valid:
                max_assignment = i

        return max_assignment
Esempio n. 2
0
	def get_top_assignment(self,array=None): # line 7 '(similar to select_assignment()' from greedy.py)
		max_assignment = Assignment()
		max_assignment.score = float('-inf')

		if array == None:
			array=self.A
		
		for i in array:
			if (i.score > max_assignment.score) and (i.valid==True) and (i.update == True):
				max_assignment = i



		return max_assignment
Esempio n. 3
0
def generate_assigment(events,time_intervals):


	c=list(product(events,time_intervals))

	for i in c :

		a = Assignment(i[1],i[0], location= location[i[0]])
		A.append(a)
Esempio n. 4
0
    def generate_assigment(self, events, time_intervals):

        c = list(product(events, time_intervals))
        #printer(c)

        for i in c:

            a = Assignment(i[1], i[0], location=self.location[i[0]])
            self.A.append(a)
Esempio n. 5
0
	def __init__(self,k = 0, U = [], E = [], T = [], location = [] ,social_active_probabilities = [],event_attendance_probability = [] ,competing_event_attendance_probability = [],verbose=True):
		
		self.k = k
		self.U = U
		self.E = E
		self.T = T
		self.location = location

		self.sigma = social_active_probabilities
		self.mu_E = event_attendance_probability
		self.mu_C = competing_event_attendance_probability


		self.A = []
		self.S = []

		self.L_i = [List_timeInt(i) for i in self.T]
		self.M = [Assignment() for i in self.T]
		self.bound = Assignment()
		self.verbose=verbose
Esempio n. 6
0
def select_assignment():

	max_assignment = Assignment()

	for i in A :

		if (i.score > max_assignment.score) and i.valid :
			max_assignment = i


	return max_assignment
Esempio n. 7
0
	def get_bound(self) : # line 16

		flag = False

		for i in self.M :
			if i.update and i.valid :
				flag = True

		top_scorer = Assignment(score = "unavailable")
		if flag :
			top_scorer=max(self.M, key=attrgetter('score'))

		return top_scorer
Esempio n. 8
0
    def popTopAssgn(self):  #line 10
        top = None
        index = None
        for i in range(len(self.M)):
            if (self.M[i].event == ""):
                continue
            elif ((top == None) or (top.score < self.M[i].score)):
                top = self.M[i]
                index = i

        if index != None:
            self.M[index] = Assignment()

        return top
Esempio n. 9
0
	def generate_assignment(self) : # line 1-5 - generates all possible assignments and initializes the M list

		events = list(range(len(self.E)))
		time_intervals = list(range(len(self.T)))


		c=list(product(events,time_intervals))



		for i in c :

			t_a_e = Assignment(i[1],i[0], location= self.location[i[0]])
			self.A.append(t_a_e)

			self.L_i[t_a_e.time_interval].l.append(t_a_e)



		self.assign_score()
Esempio n. 10
0
	def update_assignments(self,top_assignment):

		update_assignment_list = []
		for i in range(len(self.T)):

			if self.bound.score == "unavailable" :
				max = Assignment()
				for j in range(len(self.A)) :
					if self.A[j].valid and self.A[j].score > max.score :
						max = self.A[j]

				self.update_score(max,top_assignment)
				max.update = True
				update_assignment_list.append(max)
				self.bound = max

				break


			if self.L_i[i].update==False and self.M[i].score<=self.bound.score:
				#printer(i)

				j = 0
				while j < len(self.L_i[i].l) :

					#
					if self.L_i[i].l[j].valid==False:
						self.L_i[i].l.pop(j)


					elif self.L_i[i].l[j].update==False and self.L_i[i].l[j].score >=self.bound.score:
						self.update_score(self.L_i[i].l[j],top_assignment)
						self.L_i[i].l[j].update=True
						update_assignment_list.append(self.L_i[i].l[j])
						self.M[i] = self.getBetterAssignment(self.M[i],self.L_i[i].l[j])

						self.bound = self.getBetterAssignment(self.bound,self.L_i[i].l[j])

					j += 1

					
				temp=0
				for j in self.L_i[i].l:
					if j.update==False:
						temp=1
						break
				if temp==0:
					self.L_i[i].update=True
				


		for i in range(len(self.M)):
			#max = Assignment()
			printer(("M[i] = ", self.printer_assignment(self.M[i])),verbose=self.verbose)


			for j in range(len(self.L_i[i].l)):

				printer(("L_i.l= ",self.printer_assignment(self.L_i[i].l[j]) ),verbose=self.verbose)

				if self.L_i[i].l[j].valid == True and self.L_i[i].l[j].update == True :

					self.M[i] = self.getBetterAssignment(self.M[i],self.L_i[i].l[j])

					
		self.printer_updated_assignments(update_assignment_list)