示例#1
0
def train_3(weights, moderate_constant, max_error):
    board = experiment_generator()
    game_trace = get_game_trace_with_old_vesion(board, weights, weights)
    training_examples = get_training_examples(game_trace, weights)
    weights = gen(training_examples, weights, moderate_constant)
    error = squared_error(training_examples, weights)
    return weights, error, error <= max_error
    def test_squared_errors2(self):

        logging.basicConfig(filename='./logs/test_with_old_version_mu02.log', level=logging.INFO)
        logging.info('------------------------------------------------------------------------------------------------')
        logging.info('Started')

        moderate_constant = 0.2
        iterations = 50

        weights = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        old_weights = weights

        errors = []
        won = 0
        lost = 0
        for i in range(iterations):

            board = experiment_generator()
            logging.info('Obteniendo traza del juego...')
            game_trace = get_game_trace_with_old_vesion(board, weights, old_weights)
            logging.info(f'Se obtuvieron {game_trace.__len__()} tuplas')
            training_examples = get_training_examples(game_trace, weights)

            board_features = training_examples[training_examples.__len__() - 1][0]
            logging.info(training_examples[training_examples.__len__() - 1])
            if board_features[6] >= 1 :
                won = won + 1
            elif board_features[13] >= 1 :
                lost = lost + 1

            logging.info('Ajustando pesos...')
            old_weights = weights
            weights = gen(training_examples, weights, moderate_constant)
            errors.append(squared_error(training_examples, weights))
            logging.info(weights)

            # if errors[i -1] < errors[i]:
            #     moderate_constant = max(0.1, moderate_constant - 0.1)
            #     logging.info(moderate_constant)

        for i in range(iterations):
            logging.info('Error {}: {}'.format(i, errors[i]))

        # for i in range(iterations-1):
        #     self.assertGreaterEqual(errors[i], errors[i+1],
        #                             f'El error {i} no es mayor o igual que el error {i+1}, los errores deben decrecer')

        logging.info(f'Ganados: {won}')
        logging.info(f'Perdidos: {lost}')

        logging.info('Finished')
        logging.info('------------------------------------------------------------------------------------------------')

        return weights