In [1]:
import sklearn
import json
import operator
import matplotlib.pyplot as plt
import prettyplotlib as ppl
%matplotlib inline
agent1 = [sklearn.externals.joblib.load('agent1_ind')]
agent2 = [sklearn.externals.joblib.load('agent2_ind')]
hist1 = sklearn.externals.joblib.load('agent1_indhist')
hist2 = sklearn.externals.joblib.load('agent2_indhist')


/usr/local/lib/python3.4/dist-packages/matplotlib/backends/backend_gtk3agg.py:18: UserWarning: The Gtk3Agg backend is known to not work on Python 3.x with pycairo. Try installing cairocffi.
  "The Gtk3Agg backend is known to not work on Python 3.x with pycairo. "

In [2]:
def loader(dictionary):
    def load_keys(k):
        unjsoned = json.loads(k)
        loaded = tuple( ((tuple(unjsoned[0])), unjsoned[1] ))
        return loaded
    return {load_keys(k):v for k,v in dictionary.items()}
def get_score(hist):
    loaded = {k:len(json.loads(v)) for k,v in loader(hist).items()}
    not_running = sum([v for k,v in loaded.items() if k[0][1] == 'sleeping' and k[0][2]=='sleeping'])
    zero = sum([v for k,v in loaded.items() if k[0][0] == 0])
    total = sum([v for k,v in loaded.items()])
    return not_running, zero, total, not_running/total, zero/total
def get_winners(dictionary):
    states = set([k[0] for k,v in dictionary.items()])
    winners = {}
    for s in states:
        matches = [(v, k[1]) for k,v in dictionary.items() if k[0]==s]
        winners[s] = sorted(matches, key=operator.itemgetter(0))[::-1]
    return {k: v[0][1] for k,v in winners.items()}
print(get_score(hist1))
print(get_score(hist2))


(247, 110, 2847, 0.0867579908675799, 0.03863716192483316)
(247, 110, 2847, 0.0867579908675799, 0.03863716192483316)

In [3]:
loaded1 = [loader(i) for i in agent1]
[get_winners(j) for j in loaded1]


Out[3]:
[{(0, 'running', 'running'): 'go_to_sleep',
  (0, 'running', 'sleeping'): 'go_to_sleep',
  (0, 'sleeping', 'running'): 'noop',
  (0, 'sleeping', 'sleeping'): 'noop',
  (1, 'running', 'running'): 'go_to_sleep',
  (1, 'running', 'sleeping'): 'go_to_sleep',
  (1, 'sleeping', 'running'): 'noop',
  (1, 'sleeping', 'sleeping'): 'noop',
  (2, 'running', 'running'): 'go_to_sleep',
  (2, 'running', 'sleeping'): 'go_to_sleep',
  (2, 'sleeping', 'running'): 'wakeup',
  (2, 'sleeping', 'sleeping'): 'wakeup',
  (3, 'running', 'running'): 'noop',
  (3, 'running', 'sleeping'): 'noop',
  (3, 'sleeping', 'running'): 'wakeup',
  (3, 'sleeping', 'sleeping'): 'wakeup',
  (4, 'running', 'running'): 'noop',
  (4, 'running', 'sleeping'): 'noop',
  (4, 'sleeping', 'running'): 'wakeup',
  (4, 'sleeping', 'sleeping'): 'wakeup',
  (5, 'running', 'running'): 'noop',
  (5, 'running', 'sleeping'): 'noop',
  (5, 'sleeping', 'running'): 'wakeup',
  (5, 'sleeping', 'sleeping'): 'wakeup',
  (6, 'running', 'running'): 'noop',
  (6, 'running', 'sleeping'): 'noop',
  (6, 'sleeping', 'running'): 'wakeup',
  (6, 'sleeping', 'sleeping'): 'wakeup',
  (7, 'running', 'running'): 'noop',
  (8, 'running', 'running'): 'noop',
  (8, 'sleeping', 'sleeping'): 'wakeup',
  (9, 'running', 'running'): 'go_to_sleep',
  (10, 'running', 'running'): 'noop',
  (10, 'running', 'sleeping'): 'go_to_sleep',
  (10, 'sleeping', 'running'): 'wakeup',
  (11, 'running', 'running'): 'noop',
  (11, 'sleeping', 'running'): 'wakeup',
  (12, 'running', 'running'): 'noop',
  (12, 'running', 'sleeping'): 'noop',
  (12, 'sleeping', 'running'): 'wakeup',
  (12, 'sleeping', 'sleeping'): 'wakeup',
  (13, 'running', 'running'): 'noop',
  (13, 'running', 'sleeping'): 'noop',
  (14, 'running', 'running'): 'noop'}]

In [4]:
{k:len(json.loads(v)) for k,v in loader(hist1).items()}


Out[4]:
{((0, 'running', 'running'), 'go_to_sleep'): 13,
 ((0, 'running', 'running'), 'noop'): 5,
 ((0, 'running', 'sleeping'), 'go_to_sleep'): 4,
 ((0, 'running', 'sleeping'), 'noop'): 2,
 ((0, 'sleeping', 'running'), 'noop'): 35,
 ((0, 'sleeping', 'running'), 'wakeup'): 10,
 ((0, 'sleeping', 'sleeping'), 'noop'): 11,
 ((0, 'sleeping', 'sleeping'), 'wakeup'): 1,
 ((1, 'running', 'running'), 'go_to_sleep'): 32,
 ((1, 'running', 'running'), 'noop'): 14,
 ((1, 'running', 'sleeping'), 'go_to_sleep'): 5,
 ((1, 'running', 'sleeping'), 'noop'): 12,
 ((1, 'sleeping', 'running'), 'noop'): 178,
 ((1, 'sleeping', 'running'), 'wakeup'): 18,
 ((1, 'sleeping', 'sleeping'), 'noop'): 83,
 ((1, 'sleeping', 'sleeping'), 'wakeup'): 10,
 ((2, 'running', 'running'), 'go_to_sleep'): 300,
 ((2, 'running', 'running'), 'noop'): 44,
 ((2, 'running', 'sleeping'), 'go_to_sleep'): 137,
 ((2, 'running', 'sleeping'), 'noop'): 25,
 ((2, 'sleeping', 'running'), 'noop'): 12,
 ((2, 'sleeping', 'running'), 'wakeup'): 232,
 ((2, 'sleeping', 'sleeping'), 'noop'): 1,
 ((2, 'sleeping', 'sleeping'), 'wakeup'): 97,
 ((3, 'running', 'running'), 'go_to_sleep'): 21,
 ((3, 'running', 'running'), 'noop'): 506,
 ((3, 'running', 'sleeping'), 'go_to_sleep'): 7,
 ((3, 'running', 'sleeping'), 'noop'): 187,
 ((3, 'sleeping', 'running'), 'noop'): 6,
 ((3, 'sleeping', 'running'), 'wakeup'): 101,
 ((3, 'sleeping', 'sleeping'), 'wakeup'): 49,
 ((4, 'running', 'running'), 'go_to_sleep'): 14,
 ((4, 'running', 'running'), 'noop'): 389,
 ((4, 'running', 'sleeping'), 'go_to_sleep'): 8,
 ((4, 'running', 'sleeping'), 'noop'): 173,
 ((4, 'sleeping', 'running'), 'noop'): 1,
 ((4, 'sleeping', 'running'), 'wakeup'): 15,
 ((4, 'sleeping', 'sleeping'), 'wakeup'): 4,
 ((5, 'running', 'running'), 'go_to_sleep'): 2,
 ((5, 'running', 'running'), 'noop'): 68,
 ((5, 'running', 'sleeping'), 'noop'): 34,
 ((5, 'sleeping', 'running'), 'wakeup'): 2,
 ((5, 'sleeping', 'sleeping'), 'wakeup'): 1,
 ((6, 'running', 'running'), 'go_to_sleep'): 1,
 ((6, 'running', 'running'), 'noop'): 14,
 ((6, 'running', 'sleeping'), 'noop'): 5,
 ((6, 'sleeping', 'running'), 'wakeup'): 2,
 ((7, 'running', 'running'), 'noop'): 2,
 ((8, 'running', 'running'), 'noop'): 3,
 ((8, 'sleeping', 'sleeping'), 'wakeup'): 1,
 ((12, 'running', 'running'), 'noop'): 1,
 ((12, 'running', 'sleeping'), 'noop'): 1,
 ((12, 'sleeping', 'sleeping'), 'wakeup'): 1,
 ((13, 'running', 'running'), 'noop'): 3,
 ((14, 'running', 'running'), 'noop'): 3}

In [ ]: