def test_excluded_domain(capsys, logging_config): log = Logger() log._enable_all = False log.spam('eggs') out, err = capsys.readouterr() assert out == '' assert err == ''
def test_logging_config(): config = Config([__name__, '--log', 'v1', 'v2', 'v3']) log = Logger() assert (config.verbose is False) assert ('v1' in log._enabled_keys) assert ('v2' in log._enabled_keys) assert ('v3' in log._enabled_keys) assert ('v4' not in log._enabled_keys) log._enabled_keys = {}
def test_enable_all(capsys, logging_config): log = Logger() log.set_enable_all(True) log.spam('eggs') out, err = capsys.readouterr() assert out == '' assert err.find("[spam] eggs\n") >= 0 log.set_enable_all(False)
def test_verbose_logging(capsys, temp_dot_bonsai): config = Config([ __name__, '--verbose' ]) log = Logger() assert(config.verbose is True) assert(log._enable_all is True)
def test_included_domain(capsys, logging_config): log = Logger() log.foo('bar') log.baz('qux') out, err = capsys.readouterr() assert out == '' assert err.find('[foo] bar\n') >= 0 assert err.find('[baz] qux\n') >= 0
def test_disable_domain(capsys, logging_config): log = Logger() log.set_enabled('spam', False) assert log._enabled_keys['spam'] == False log.spam('eggs') out, err = capsys.readouterr() assert out == '' assert err == ''
""" Provides the state transform, action transform, terminal function and reward function. The functions in this file are called from cartpole_simulator.py. """ import math from bonsai_ai.logger import Logger log = Logger() def state(model_state): """ Convert the state as represented in CartPole to a format expected. by the AI Engine. """ return { 'position': model_state[0], 'velocity': model_state[1], 'angle': model_state[2], 'rotation': model_state[3], } def terminal(model_state): """ Return true if the state should end the episode. This includes both failure terminals (such as when the model isout-of-bounds) and success terminals (when the model is in a successful state) """ x, x_dot, theta, theta_dot = model_state theta_threshold_radians = 12 * 2 * math.pi / 360
import numpy import random import sys from bonsai_ai import Luminance from bonsai_ai import Config, Brain, Simulator from bonsai_ai.logger import Logger log = Logger() letters = { "X": [[1, 0, 1], [0, 1, 0], [1, 0, 1]], "O": [[0, 1, 0], [1, 0, 1], [0, 1, 0]], " ": [[0, 0, 0], [0, 0, 0], [0, 0, 0]] } POSMAP = {"X": 1, " ": 0, "O": -1} class TicTacToeGame(object): def __init__(self, seed=42): random.seed(seed) self.board = [" "] * 10 self.playerLetter, self.computerLetter = ('X', 'O') self.terminal = False self.reward = 0 self.framecount = 0 self.image = numpy.zeros((9, 9), dtype=numpy.uint8) def render(self): for i in range(3):
import sys import gym from bonsai_ai import Brain, Config, Predictor from bonsai_ai.logger import Logger log = Logger() log.set_enabled("info") def _state(observation): """ Converts gym observation into Inkling state dictionary """ state = { 'position': observation[0], 'velocity': observation[1], 'angle': observation[2], 'rotation': observation[3] } return state def _action(action): """ Converts Inkling action into a gym action """ return action['command'] def _log_state_and_action(state, action): log.info("The BRAIN received the following state: {}".format(state)) log.info("The BRAIN returned the following action: {}".format(action)) if __name__ == '__main__':
def test_verbose_logging(): config = Config([__name__, '--verbose']) log = Logger() assert (config.verbose is True) assert (log._enable_all is True) assert (len(log._enabled_keys.keys()) == 0)