Beispiel #1
0
            if successor.isWin():
                successor = None
            elif successor.isLose():
#                 reward = -100
                successor = None
            output.append((successor, prob, reward))
        return output
    
    def discount(self):
        return self.tetris.discount()
          
if __name__ == "__main__":
#     weights = TetrisGame.readWeights('weightsThiery.tetris')
    #weights = [0.10000000000000001, 0.5, -44.892192895842715, -88.868713917352991, -9.0845044328524125, 99.48473353935913, -0.10000000000000001, -0.10000000000000001, -46.3552758541178784, -44.894981251780582, -49.903753991739844, -48.776916252514777, -56.009249265806467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
#     weights = [random.random() for _ in xrange(22)]
    weights = TetrisGame.readWeights('weights_ql400.tetris')
    
#     evaluator = AdvancedEvaluator(weights)
    evaluator = AdhocEvaluator(weights)
    baseSeq = [0,1,2,3,4,5,6]*100
#     random.seed(21)
    random.shuffle(baseSeq);
    
    # state: (board, new piece)
    # action: (newGrid, reward)
    def featureExtractor(state, action):
        newState = state.generateSuccessor(0, action)
        output = evaluator.featureExtractor(newState)
        return output
    
    model = TetrisGameMDP(TetrisMDP(), ExpectimaxTetrisAgent(0, 1, evaluator), FinitePieceGenerator(baseSeq))
Beispiel #2
0
    print 'std', std
    print '5%', percent5
    print '95%', percent95
    return mean, std, percent5, percent95

def printArr(arr):
    print '=========='
    for a in arr:
        print a

if __name__ == '__main__':
#     weightFile = 'weights_ql500.tetris'

    results_lines = []
    results_scores = []
    for i in xrange(9,21):
        weightFile = 'weights_ce{}.tetris'.format(i)
        weights = game.readWeights(weightFile)
        linesV, scoresV = simulateGame(weights, 10)
        print '===lines==='
        results_lines.append(analyze(linesV))
        print '===scores==='
        results_scores.append(analyze(scoresV))
    results1 = zip(*results_lines)
    results2 = zip(*results_scores)
    print len(results1), len(results2)
    for result in results1:
        printArr(result)
    for result in results2:
        printArr(result)