def recordHillClimbing():
    data = []
    h0 = ZeroHeuristic()
    aStarWithH0 = AStar(h0)
    for i in range(0, 15):
        for j in range(0, 25):
            filename = '{0}_{1}.txt'.format(i, j)
            r = load_file(boardConfigsFolder + '/{0}'.format(filename))
            sol1 = aStarWithH0.aStar(r)
            rr = load_file(harderPuzzlesFolder + '/{0}'.format(filename))
            sol2 = aStarWithH0.aStar(rr)
            data.append([filename, sol1['Steps'], sol2['Steps']])
            print(filename,sol1['Steps'], sol2['Steps'])
    with open('hillClimbing.csv', 'w', newline='') as f:
        wr = csv.writer(f, delimiter=',')
        wr.writerows(data)
 def LoadPuzzle(self):
     self.enablePanel(self.bottomRightPanel)
     self.lblSteps['text']=''
     self.lblSteps.update()
     self.lblExpandedNodes['text']=''
     self.lblExpandedNodes.update()
     self.lblrunningTime['text']=''
     self.lblrunningTime.update()
     filename =boardConfigsFolder+"/" +"{}_{}.txt".format(int(self.spinBoxNumOfVehicle.get())-1,int(self.spinBoxPuzzleNum.get())-1)
     print(filename)
     self.rushhour = load_file(filename)
     self.drawBoard(self.rushhour.get_board())
Exemplo n.º 3
0
                cameFrom[neighbor] = current
                gScore[neighbor] = tentative_gScore


        return {'Expanded Nodes': expandedNodes, 'Steps':-1, 'Solution':None}

    def __reconstructPath(self, cameFrom, current):
        total_path = [current]
        while current in cameFrom.keys():
            current = cameFrom[current]
            total_path.insert(0,current)
        return total_path

boardConfigsFolder = "C:/Users/Abbas/PycharmProjects/Rush Hour Puzzle Game/New folder"
if __name__ == '__main__':
    # for i in range(25):
        filename =boardConfigsFolder+"/" +"3_{0}.txt".format(1)
        rushHour1 = load_file(filename)
        # print(rushHour1)
        # aStar = AStar(DistanceFromTargetToExit())
        # elapsedTime = time.time()
        # sol = aStar.aStar(rushHour1)
        # print(sol,'Time= ',((time.time()-elapsedTime)*1000))
        # h = BlockingExitHeuristic()
        # print(h.heuristicEstimate(rushHour1))
        print(rushHour1)
        h4 = BlockingLowerBoundEstimation()
        aStar = AStar(h4)
        sol = aStar.aStar(rushHour1)
        print(sol['Solution'],"\n steps", sol['Steps'])
        wr = csv.writer(f, delimiter=',')
        wr.writerows(data)
print('File#','Num of Vehicles','Heuristic','Time', 'Expanded Nodes', 'Steps', 'Solveable or not')
h0 = ZeroHeuristic()
h1 = DistanceFromTargetToExit()
h2 = BlockingExitHeuristic()
h3 = BlockingLowerBoundEstimation()
aStarWithH0 = AStar(h0)
aStarWithH1 = AStar(h1)
aStarWithH2 = AStar(h2)
aStarWithH3 = AStar(h3)
data = []
for i in range(3,15):
    for j in range(25):
        puzzleFile = boardConfigsFolder+"/" +"{0}_{1}.txt".format(i,j)
        rushHour = load_file(puzzleFile)
        elapsedTime = time.time()
        sol0 = aStarWithH0.aStar(rushHour)
        t0 = round((time.time()-elapsedTime)*1000)
        numVehicles = len(rushHour.vehicles)

        # data.append([i,numVehicles,'h0',t,sol['Expanded Nodes'],sol['Steps'],s])
        # print(i,numVehicles,'h0',t,sol['Expanded Nodes'],sol['Steps'],s)

        elapsedTime = time.time()
        sol1 = aStarWithH1.aStar(rushHour)
        t1 = round((time.time()-elapsedTime)*1000)

        # data.append([i,numVehicles,'h1',t,sol['Expanded Nodes'],sol['Steps'],s])
        # print(i,numVehicles,'h1',t,sol['Expanded Nodes'],sol['Steps'],s)
harderPuzzlesFolder = "C:/Users/Abbas/PycharmProjects/Rush Hour Puzzle Game/HarderPuzzles"
generateHarderPuzzle = GenerateHarderPuzzle()


def recordHillClimbing():
    data = []
    h0 = ZeroHeuristic()
    aStarWithH0 = AStar(h0)
    for i in range(0, 15):
        for j in range(0, 25):
            filename = '{0}_{1}.txt'.format(i, j)
            r = load_file(boardConfigsFolder + '/{0}'.format(filename))
            sol1 = aStarWithH0.aStar(r)
            rr = load_file(harderPuzzlesFolder + '/{0}'.format(filename))
            sol2 = aStarWithH0.aStar(rr)
            data.append([filename, sol1['Steps'], sol2['Steps']])
            print(filename,sol1['Steps'], sol2['Steps'])
    with open('hillClimbing.csv', 'w', newline='') as f:
        wr = csv.writer(f, delimiter=',')
        wr.writerows(data)


if __name__ == '__main__':
    for i in range(13,15):
        for j in range(0,25):
            filename = '{0}_{1}.txt'.format(i,j)
            print('puzzle file {0}'.format(filename))
            puzzle = load_file(boardConfigsFolder+'/{0}'.format(filename))
            harderPuzzle = generateHarderPuzzle.hillClimbing(puzzle)
            savePuzzle(harderPuzzle, harderPuzzlesFolder+'/'+filename)
    recordHillClimbing()