This commit is contained in:
s450026 2020-06-09 15:06:12 +02:00
commit 6d4744f553
2 changed files with 44 additions and 31 deletions

31
main.py
View File

@ -32,6 +32,9 @@ if __name__ == "__main__":
# Dominik # Dominik
check = 0 check = 0
queue = [] queue = []
fromBar = 0
barNode = (3, 12)
node = ()
# Marcin Dobrowolski # Marcin Dobrowolski
suggestionTreeRoot = SuggestionTree.buildTree(trainingData) suggestionTreeRoot = SuggestionTree.buildTree(trainingData)
@ -179,17 +182,31 @@ if __name__ == "__main__":
path = waiter.translatePath(path) path = waiter.translatePath(path)
# Dominik # Dominik
if check == 1: if path == '' and fromBar == 0 and check == 1:
task = queue.pop(0) task = queue.pop(0)
goal = (task[2][0], task[2][1]) tree.RemoveTask()
print(goal) node = (task[2][0], task[2][1])
path = waiter.findPath(goal) if task[0] == "goToBar":
print(path) path = waiter.findPath(barNode)
fromBar = 1
else:
path = waiter.findPath(node)
path = waiter.translatePath(path) path = waiter.translatePath(path)
print(path) if fromBar == 1:
check = 0 check = 0
if len(queue) != 0 and check == 0 and path == '': if path == '' and fromBar == 1:
path = waiter.findPath(node)
path = waiter.translatePath(path)
fromBar = 0
if path != '':
nextStep = path[0]
path = path[1:]
waiter.travel(nextStep, graphics)
if len(queue) != 0 and check == 0 and path == '' and fromBar == 0:
check = 1 check = 1
# AStar # AStar

View File

@ -16,11 +16,12 @@ class DecisionTree:
graphics = Graphics() graphics = Graphics()
self.waiter = Waiter(graphics) self.waiter = Waiter(graphics)
self.matrix = Matrix(graphics=graphics) self.matrix = Matrix(graphics=graphics)
self.tree = self.BuildTree(self.BuildDf())
def BuildDf(self): def BuildDf(self):
actionName = 'order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check'.split(',') actionName = 'order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,order,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,goToBar,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,eat,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check,check'.split(',')
distance = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27'.split(',') distance = '0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27'.split(',')
priority = '1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4'.split(',') priority = '1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4'.split(',')
dataset ={'actionName':actionName,'distance':distance,'priority':priority} dataset ={'actionName':actionName,'distance':distance,'priority':priority}
df = pd.DataFrame(dataset,columns=['actionName','distance','priority']) df = pd.DataFrame(dataset,columns=['actionName','distance','priority'])
@ -85,39 +86,30 @@ class DecisionTree:
#Dodawanie zadan do listy zadan #Dodawanie zadan do listy zadan
def TasksList(self, name, coordinate): def TasksList(self, name, coordinate, waiterPos):
distance = [] distance = []
waiterNode = [self.waiter.X, self.waiter.Y] print(waiterPos)
if name != "goToBar": if name != "goToBar":
if self.matrix.matrix[coordinate[0] - 1][coordinate[1] - 1].walk_through == 1:
distance.append([abs(waiterNode[0] - (coordinate[0] - 1)) + abs(waiterNode[1] - (coordinate[1] - 1)), [coordinate[0] - 1, coordinate[1] - 1]])
if self.matrix.matrix[coordinate[0] + 1][coordinate[1] - 1].walk_through == 1:
distance.append([abs(waiterNode[0] - (coordinate[0] + 1)) + abs(waiterNode[1] - (coordinate[1] - 1)), [coordinate[0] + 1, coordinate[1] - 1]])
if self.matrix.matrix[coordinate[0] + 1][coordinate[1]].walk_through == 1: if self.matrix.matrix[coordinate[0] + 1][coordinate[1]].walk_through == 1:
distance.append([abs(coordinate[0] - (coordinate[0] + 1)) + abs(waiterNode[1] - coordinate[1]), [coordinate[0] + 1, coordinate[1] ]]) distance.append([abs(coordinate[0] - (coordinate[0] + 1)) + abs(waiterPos[1] - coordinate[1]), [coordinate[0] + 1, coordinate[1] ]])
if self.matrix.matrix[coordinate[0] + 1][coordinate[1] - 1].walk_through == 1: if self.matrix.matrix[coordinate[0] - 1][coordinate[1]].walk_through == 1:
distance.append([abs(waiterNode[0] - (coordinate[0] + 1)) + abs(waiterNode[1] - (coordinate[1] - 1)), [coordinate[0] + 1, coordinate[1] - 1]]) distance.append([abs(coordinate[0] - (coordinate[0] - 1)) + abs(waiterPos[1] - coordinate[1]), [coordinate[0] - 1, coordinate[1] ]])
if self.matrix.matrix[coordinate[0] - 1][coordinate[1] + 1].walk_through == 1:
distance.append([abs(waiterNode[0] - (coordinate[0] - 1)) + abs(waiterNode[1] - (coordinate[1] + 1)), [coordinate[0] - 1, coordinate[1] + 1]])
else: else:
distance.append([abs(waiterNode[0] - 0) + abs(waiterNode[1] - 12), [0, 12]]) if self.matrix.matrix[coordinate[0] + 1][coordinate[1]].walk_through == 1:
distance.append([abs(waiterNode[0] - 1) + abs(waiterNode[1] - 12), [1, 12]]) distance.append([abs(waiterPos[0] - 3) + abs(waiterPos[1] - 12), [coordinate[0] + 1, coordinate[1] ]])
distance.append([abs(waiterNode[0] - 2) + abs(waiterNode[1] - 12), [2, 12]]) if self.matrix.matrix[coordinate[0] - 1][coordinate[1]].walk_through == 1:
distance.append([abs(waiterNode[0] - 3) + abs(waiterNode[1] - 12), [3, 12]]) distance.append([abs(waiterPos[0] - 3) + abs(waiterPos[1] - 12), [coordinate[0] - 1, coordinate[1] ]])
distance.append([abs(waiterNode[0] - 4) + abs(waiterNode[1] - 12), [4, 12]])
distance.append([abs(waiterNode[0] - 5) + abs(waiterNode[1] - 13), [5, 13]])
distance.append([abs(waiterNode[0] - 5) + abs(waiterNode[1] - 14), [5, 14]])
distance.sort(key=lambda x: x[0]) distance.sort(key=lambda x: x[0])
tasksList.append([name, distance[0][0], distance[0][1]]) tasksList.append([name, distance[0][0], distance[0][1]])
#Kolejkowanie zadan #Kolejkowanie zadan
def Queue(self, tasksList): def Queue(self, tasksList):
df = self.BuildDf() df = self.BuildDf()
tree = self.BuildTree(df) tree = self.tree
winnerNode = self.FindWinner(df) winnerNode = self.FindWinner(df)
for i in tasksList: for i in tasksList:
@ -153,6 +145,10 @@ class DecisionTree:
print(queue) print(queue)
return queue return queue
def RemoveTask(self):
tasksList.remove(tasksList[0])
def print(self): def print(self):
print(tasksList) print(tasksList)