! python --version
import sys
!{sys.executable} -m pip list | grep inferactively-pymdpPython 3.10.12
inferactively-pymdp 1.0.4
[notice] A new release of pip is available: 23.0.1 -> 26.2.1
[notice] To update, run: pip install --upgrade pip
Using PyMDP to solve a 2-armed MAB problem with an epistemic twist
Kobus Esterhuysen
April 6, 2025
September 30, 2026
In this project we refactor one of the PyMDP examples to serve as a baseline for a future client project. Here are some of the changes:
_lup to lookup a value/level
get_policy_labels(policies) to provide text tick labels (rather than indexes) in distribution bar plotsA few coding conventions:
Python 3.10.12
inferactively-pymdp 1.0.4
[notice] A new release of pip is available: 23.0.1 -> 26.2.1
[notice] To update, run: pip install --upgrade pip
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pymdp
import jax
import jax.numpy as jnp
from jax import random as jr
from jax.nn import softmax
from pymdp import utils
from pymdp.agent import Agent
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
from matplotlib.lines import Line2D
from matplotlib.ticker import MaxNLocator
import math
import random
from pprint import pprintdef plot_likelihood(
matrix, ## conditional distribution
title_str="Likelihood distribution (A)",
xlabels=None,
ylabels=None,
size=None):
"""
Plots a 2-D likelihood matrix as a heatmap
"""
matrix = np.asarray(matrix)
if not np.isclose(matrix.sum(axis=0), 1.0).all():
raise ValueError("Distribution not column-normalized! Please normalize (ensure matrix.sum(axis=0) == 1.0 for all columns)")
if size == None:
fig = plt.figure(figsize = (5,5))
else:
fig = plt.figure(figsize = size)
## fig = plt.figure(figsize = (6,6))
fig = plt.figure(figsize = size)
if ylabels == None and xlabels == None:
sns.heatmap(
matrix,
cmap='OrRd',
linewidths=1,
cbar=True,
vmin=0.0,
vmax=1.0)
else:
ax = sns.heatmap(
matrix,
xticklabels = xlabels,
yticklabels = ylabels,
## cmap = 'gray',
cmap = "OrRd",
linewidths=1,
cbar = True,
square=True,
vmin = 0.0,
vmax = 1.0)
plt.title(title_str)
plt.show()
def plot_beliefs(
vector, ## belief distribution
title_str="",
xlabels=None,
size=None,
label_rotation=90, ## 90: labels read bottom-to-top; -90: labels read top-to-bottom; 0: horizontal
label_fontsize=None): ## tick-label font size; None keeps the default
"""
Plot a categorical distribution or belief distribution, stored in the 1-D numpy vector `vector`
"""
vector = np.asarray(vector)
if not np.isclose(vector.sum(), 1.0):
raise ValueError("Distribution not normalized! Please normalize")
if size == None:
fig = plt.figure(figsize = (1,1))
else:
fig = plt.figure(figsize = size)
plt.grid(zorder=0)
plt.bar(range(vector.shape[0]), vector, color='r', zorder=3)
if xlabels == None:
plt.xticks(range(vector.shape[0]))
else:
##+ plt.xticks(range(len(xlabels)), xlabels, rotation='vertical', fontname='DejaVu Sans Mono') ##.fixed-width font
plt.xticks(range(len(xlabels)), xlabels, rotation=label_rotation, ha='center', va='top', fontname='Liberation Mono', fontsize=label_fontsize) ##.fixed-width font
plt.title(title_str)
plt.show()
def plot_FE(
vector,
title_str="",
xlabels=None,
size=None):
vector = np.asarray(vector)
if size == None:
fig = plt.figure(figsize = (1,1))
else:
fig = plt.figure(figsize = size)
plt.grid(zorder=0)
plt.bar(range(vector.shape[0]), vector, color='r', zorder=3)
if xlabels == None:
plt.xticks(range(vector.shape[0]))
else:
plt.xticks(range(len(xlabels)), xlabels, rotation='vertical')
plt.title(title_str)
plt.show()
## --- replacements for pymdp.legacy.utils helpers that no longer exist in the JAX API ---
def np_zeros_list(shapes):
"""Replaces np_zeros_list(): a plain list of (mutable) numpy arrays.
The model is built in numpy and converted to jnp when the Agent is created."""
return [np.zeros(s) for s in shapes]
def is_normalized(dist):
"""Replaces is_normalized(): True if every column (axis 0) sums to 1."""
if isinstance(dist, (list, tuple)):
return all(is_normalized(d) for d in dist)
return bool(np.allclose(np.asarray(dist).sum(axis=0), 1.0))
env_rng = np.random.default_rng(20) ## random generator for the environment (generative process)
def sample(p):
"""Replaces utils.sample(): draw an index from a categorical distribution p."""
p = np.asarray(p, dtype=float)
return int(env_rng.choice(len(p), p=p/p.sum()))
lup = { ## lookup between indexes & labels
## control/action factors
"aAssign": [ ## assign this action to the play
'Assign-Start',
'Assign-Left',
'Assign-Right'
],
"aNull1": ['Null1'], ## sAvail[Left] uncontrollable
"aNull2": ['Null2'], ## sAvail[Right] uncontrollable
## state factors
"sAssigned": [
'Start',
'Left',
'Right'],
"sAvail": { ## uncontrollable (exog info); avail to provide reward
'Left': [False, True],
'Right': [False, True],
},
"sˣAssigned": [
'Start',
'Left',
'Right'],
"sˣAvail": { ## uncontrollable (exog info); avail to provide reward
'Left': [False, True],
'Right': [False, True],
},
## observation modalities
"oAssigned": [
'Start', ## Assign-start played
'Left', ## Assign-left played
'Right' ## Assign-right played
],
"oRew": {
'Left': ['Null', 'Loss', 'Reward'],
'Right': ['Null', 'Loss', 'Reward'],
},
"oAvail": {
'Left': [False, True],
'Right': [False, True],
},
} The current problem involves an explore/exploit task with an epistemic two-armed bandit. The multi-armed bandit (or MAB) is a classic decision-making task that captures the core features of the “explore/exploit tradeoff”. The multi-armed bandit formulation is ubiquitous across problem spaces that require sequential decision-making under uncertainty – this includes disciplines ranging from economics, neuroscience, machine learning, engineering all the way to advertising.
In the standard MAB problem formulation, an agent must choose between mutually-exclusive alternatives (also known as ‘arms’) in order to maximize reward over time. The probability of reward depends on which arm the agent chooses. A common real-world analogy for a MAB problem is imagining a special slot machine with three possible levers to pull (rather than the usual one), where playing each lever has different probabilities of payoff (e.g. getting a winning combination of symbols or bonus). In fact, the ‘standard’ slot machine, which usually only has one lever, was historically referred to as a ‘one-armed bandit’ – this was the direct ancestor of the name for the generic machine learning / decision-making problem class, the MAB.
Crucially, MAB problems are interesting and difficult because in general, the reward statistics of each arm are unknown or only partially known. In a probabilistic or Bayesian context, an agent must therefore act based on beliefs about the reward statistics, since they don’t have perfect access to this information.
The inherent partial-observability of the task creates a conflict between exploitation or choosing the arm that is currently believed to be most rewarding, and exploration or gathering information about the remaining arms, in the hopes of discovering a potentially more rewarding option.
The fact that expected reward or utility is contextualized by beliefs – i.e. which arm is currently thought to be the most rewarding – motivates the use of active inference in this context. This is because the key objective function for action-selection, the expected free energy \(\mathbf{G}\), depends on the agent’s beliefs about the world. And not only that, but expected free energy balances the desire to maximize rewards with the drive to resolve uncertainty about unknown parts of the agent’s model. The more accurate the agent’s beliefs are, the more faithfully decision-making can be guided by maximizing expected utility or rewards.
In the MAB formulation we’ll be exploring in this problem, the agent must choose to play among two possible arms, each of which has unknown reward statistics. These reward statistics take the form of Bernoulli distributions over two possible reward outcomes: “Loss” and “Reward”. However, one of the arms has probability \(p\) of yielding “Reward”” and probabiliity \((1-p)\) of yielding “Loss”. The other arm has swapped statistics. In this example, the agent knows that the bandit has this general reward structure, except they don’t know which of the two arms is the rewarding one (the arm where reward probability is \(p\), assuming \(p \in [0.5, 1]\)).
However, we introduce an additional feature in the environment, that induces an explicit trade-off in decision-making between exploration (information-seeking) and exploitation (reward-seeking). In this special “epistemic bandit” problem, there is an additional action available to the agent, besides playing the two arms. We call this third action “Get Hint”, and allows the agent to acquire information that reveals (potentially probabilistically) which arm is the more rewarding one. There is a trade-off here, because by choosing to acquire the hint, the agent forgoes the possibility of playing an arm and thus the possibility of getting a reward at that moment. The mutual exclusivity of hint-acquisition and arm-playing imbues the system with an explore/exploit trade-off, which active inference is particularly equipped to handle, when compared to simple reinforcement learning schemes (e.g. epsilon-greedy reward maximization).
There is no pre-existing data to be analyzed.
There is no pre-existing data to be prepared.
Please review the narrative in section 1.
This section attempts to answer three important questions:
For this problem, the main metric we are interested in is the probability of observing a Reward. In addition, we want to keep track of what the hint lever reveals as well as the choices played by the agent.
The only source of uncertainty is which lever is more profitable to play: left or right.
The state at time \(t\) of the system-under-steer/environment (envir) is given by
\[ \begin{aligned} \mathbf{s}^*_t &= (s^{*\mathrm{Assigned}}_{t}, s^{*\mathrm{Avail}}_{t} ) \end{aligned} \] where
The decision variables represent what we control.
The environment is steered by decisions/actions \(\mathbf{a}_t\). Each component of this vector is called a control factor or control state factor. The action at time \(t\) is given by
\[ \begin{aligned} \mathbf{a}_t &= (a^{\mathrm{Assign}}_{t}, a^{\mathrm{Null}}_{t} ) \end{aligned} \] where
The exogenous information is not controllable by the agent. It is captured in the state factor \[s^{*\mathrm{Avail}}_{t} \in \{\text{Left}, \text{Right}\}\]
To find the next state for each time step, the generative process starts with the transition function \(f\). To this is added exogenous information and system noise to arrive at the next state.
To find the observation generated by the external state of the generative process for each time step, the generative process starts with the generating function \(g\). To this is added observation or measurement noise to arrive at the observation.
We assume that the reality of the generative process is given by the following implementation:
p_reward = 1.0
lup['oRew']["Left"][sample(np.array([0.0, 1.0 - p_reward, p_reward]))]
# sample(np.array([0.0, 1.0 - p_reward, p_reward]))
lup['oRew']["Right"].index('Null')0
class EpistemicMABEnvir(object):
def __init__(self, avails=None, p_reward=None):
self.sˣAssigned = 'Start'
self.sˣAvail = avails
if p_reward == None:
self.p_reward = 0.8
else:
self.p_reward = p_reward
def step(self, t, action):
print(f"=== step('{action}')")
oRew = {'Left': "Null", 'Right': "Null"}
oAvail = {'Left': False, 'Right': False}
if action == "Assign-Start":
self.sˣAssigned = "Start"
elif action == "Assign-Left":
self.sˣAssigned = "Left"
if self.sˣAvail["Left"][t] == True: ## Reward
oRew["Left"] = lup['oRew']["Left"][sample(np.array([0.0, 1.0 - self.p_reward, self.p_reward]))]
oAvail["Left"] = True
else: ## Loss
oRew["Left"] = lup['oRew']["Left"][sample(np.array([0.0, self.p_reward, 1.0 - self.p_reward]))]
if self.sˣAvail["Right"][t] == True:
# oRew["Right"] = lup['oRew']["Right"][sample(np.array([0.0, self.p_reward, 1.0 - self.p_reward]))]
oAvail["Right"] = True
elif action == "Assign-Right":
self.sˣAssigned = "Right"
if self.sˣAvail["Right"][t] == True: ## Reward
oRew["Right"] = lup['oRew']["Right"][sample(np.array([0.0, 1.0 - self.p_reward, self.p_reward]))]
oAvail["Right"] = True
else: ## Loss
oRew["Right"] = lup['oRew']["Right"][sample(np.array([0.0, self.p_reward, 1.0 - self.p_reward]))]
if self.sˣAvail["Left"][t] == True:
# oRew["Left"] = lup['oRew']["Left"][sample(np.array([0.0, self.p_reward, 1.0 - self.p_reward]))]
oAvail["Left"] = True
else: print(f'ERROR: Invalid action: {action}')
# obs = [self.s̆Assigned, oRew['Left'], oRew['Right']]
obs = [self.sˣAssigned, oRew['Left'], oRew['Right'], oAvail['Left'], oAvail['Right']]
return obs
def reset(self):
print(f'Re-initialized to:\n{self.sˣAvail=}\n{self.p_reward=}')
self.sˣAssigned = 'Start'
oRew = {'Left': "Null", 'Right': "Null"}
# oAvail = {'Left': False, 'Right': False}
oAvail = {'Left': False, 'Right': True} #!!!!!!!!!!!!!
print(f'{self.sˣAssigned=}, {oRew=}')
# return self.s̆Assigned, oRew['Left'], oRew['Right']
return self.sˣAssigned, oRew['Left'], oRew['Right'], oAvail['Left'], oAvail['Right']Give this environment class a quick test drive:
avails = {
'Left': [True, True, True, True, False, False],
'Right': [True, True, True, True, False, False],
}
envir = EpistemicMABEnvir(avails=avails, p_reward=1.0)
envir<__main__.EpistemicMABEnvir at 0x7f804e8f8e20>
Re-initialized to:
self.sˣAvail={'Left': [True, True, True, True, False, False], 'Right': [True, True, True, True, False, False]}
self.p_reward=1.0
self.sˣAssigned='Start', oRew={'Left': 'Null', 'Right': 'Null'}
('Start', 'Null', 'Null', False, True)
The uncertainty of which side is better to play is provided for in the __init__() function of class EpistemicMABEnvir() when avails=None.
Specify the dimensionalities of the hidden state factors, the control state factors, and the observation modalities:
## dimensionalities/cardinalities
## define by manually inspecting lup
_a_dims = [3, 1,1]; print(f'{_a_dims=}') ## sAvail[Left],sAvail[Right] uncontrollable
_s_dims = [3, 2,2]; print(f'{_s_dims=}')
# _o_dims = [3, 3,3]; print(f'{_o_dims=}')
_o_dims = [3, 3,3, 2,2]; print(f'{_o_dims=}')_a_dims=[3, 1, 1]
_s_dims=[3, 2, 2]
_o_dims=[3, 3, 3, 2, 2]
According to the agent the state of the system-under-steer/environment/generative process will be \(\mathbf{s}_t\), rather than \(\mathbf{\breve s}_t\). It is given by
\[ \begin{aligned} \mathbf{s}_t &= (s^{\mathrm{Assigned}}_{t}, s^{\mathrm{Avail}}_{t}) \end{aligned} \] where
According to the agent the action on the environment at time \(t\) will be represented by \(\mathbf{u}_t\), also known as the control state of the agent.
[[3, 3, 2, 2], [3, 3, 2, 2], [3, 3, 2, 2], [2, 3, 2, 2], [2, 3, 2, 2]]
## Modality: oAssigned
## write down first combination just to get started:
## oAssigned sAssigned sAvail[Left] sAvail[Right]
## _A[m][:, :, 0, 0] = np.eye(3)
m = 0
for i in range(len(lup['sAvail']['Left'])):
for j in range(len(lup['sAvail']['Right'])):
## print(i,j)
_A[m][:, :, i, j] = np.eye(len(lup['oAssigned']))
print(_A[m].shape)
_A[m]
## ORIGINAL
# m = 0
# # for s_idx in range(len(lup['sChoice'])):
# for i in range(len(lup['sAssigned'])):
# _A[m][i, i, :] = 1.0
# print(_A[m].shape)
# _A[m]
# ## 4 matrices of 4x2(3, 3, 2, 2)
array([[[[1., 1.],
[1., 1.]],
[[0., 0.],
[0., 0.]],
[[0., 0.],
[0., 0.]]],
[[[0., 0.],
[0., 0.]],
[[1., 1.],
[1., 1.]],
[[0., 0.],
[0., 0.]]],
[[[0., 0.],
[0., 0.]],
[[0., 0.],
[0., 0.]],
[[1., 1.],
[1., 1.]]]])
## Condition on sAvail and display the remaining indices (oAssigned and sAssigned)
plot_likelihood(
_A[m][
:,
:,
lup['sAvail']['Left'].index(True),
lup['sAvail']['Right'].index(True)
],
title_str="""
Modality $o^{\mathrm{Assigned}}$
vs
Factor $s^{\mathrm{Assigned}}$
($s^{\mathrm{Avail[Left]}}=\mathrm{True}, s^{\mathrm{Avail[Right]}}=\mathrm{True}$)""",
ylabels=lup['oAssigned'],
xlabels=lup['sAssigned'],
size=(3,3)
)<Figure size 300x300 with 0 Axes>

## Modality: oRew[Left]
## write down first combination just to get started:
## oRew[Left] sAssigned sAvail[Left] sAvail[Right]
## _A[m][0, 0, 0, 0] =
## _A[m][1, 0, 0, 0] =
## _A[m][2, 0, 0, 0] =
## WORKS, BUT ASSIGNS MORE SIMPLISTICALLY & EQUALLY
## m = 1
# for i in range(len(_lup['sAssigned'])):
# for j in range(len(_lup['sAvail']['Left'])):
# for k in range(len(_lup['sAvail']['Right'])):
# ## print(i,j,k)
# _A[m][0, i, j, k] = 0
# _A[m][1, i, j, k] = 1/2
# _A[m][2, i, j, k] = 1/2
m = 1
p_reward = 0.7 ## probability of getting a rewarding outcome from an available arm; matches p_reward_env (section 4.6.1) for a smooth VFE
## FIX: the reward outcome for the Left arm depends on sAvail[Left] (axis 2 of A[m]),
## Reward when available, Loss when not; if the Left arm is not played -> Null
## sAvail[Left]=False sAvail[Left]=True
rew_given_avail = np.array([ [p_reward, 1.0-p_reward], ## Loss
[1.0-p_reward, p_reward ] ]) ## Reward
for i,lab in enumerate(lup['sAssigned']):
if lab == 'Left':
_A[m][1:, i, :, :] = rew_given_avail[:, :, None] ## same for every value of the other arm's sAvail
else: ## 'Start' or the other arm played
_A[m][0, i, :, :] = 1.0 ## Null
print(m, _A[m].shape)
_A[m] ## 3 cuboids of 3x2x21 (3, 3, 2, 2)
array([[[[1. , 1. ],
[1. , 1. ]],
[[0. , 0. ],
[0. , 0. ]],
[[1. , 1. ],
[1. , 1. ]]],
[[[0. , 0. ],
[0. , 0. ]],
[[0.7, 0.7],
[0.3, 0.3]],
[[0. , 0. ],
[0. , 0. ]]],
[[[0. , 0. ],
[0. , 0. ]],
[[0.3, 0.3],
[0.7, 0.7]],
[[0. , 0. ],
[0. , 0. ]]]])
plot_likelihood(
_A[m][
:,
lup['sAssigned'].index('Left'),
:,
lup['sAvail']['Right'].index(True)
],
title_str="""
Modality $o^{\mathrm{Rew[Left]}}$
vs
Factor $s^{\mathrm{Avail[Left]}}$
($s^{\mathrm{Assigned}}=\mathrm{Left}\ &\ s^{\mathrm{Avail[Right]}}=\mathrm{True}$)
""",
ylabels=lup['oRew']['Left'],
xlabels=lup['sAvail']['Left'],
size=(3,3)
)<Figure size 300x300 with 0 Axes>

## Modality: oRew[Right]
## write down first combination just to get started:
## oRew[Right] sAssigned sAvail[Left] sAvail[Right]
## _A[m][0, 0, 0, 0] =
## _A[m][1, 0, 0, 0] =
## _A[m][2, 0, 0, 0] =
m = 2
p_reward = 0.7 ## probability of getting a rewarding outcome from an available arm; matches p_reward_env (section 4.6.1) for a smooth VFE
## FIX: the reward outcome for the Right arm depends on sAvail[Right] (axis 3 of A[m]),
## Reward when available, Loss when not; if the Right arm is not played -> Null
## sAvail[Right]=False sAvail[Right]=True
rew_given_avail = np.array([ [p_reward, 1.0-p_reward], ## Loss
[1.0-p_reward, p_reward ] ]) ## Reward
for i,lab in enumerate(lup['sAssigned']):
if lab == 'Right':
_A[m][1:, i, :, :] = rew_given_avail[:, None, :] ## same for every value of the other arm's sAvail
else: ## 'Start' or the other arm played
_A[m][0, i, :, :] = 1.0 ## Null
print(m, _A[m].shape)
_A[m] ## 3 cuboids of 3x2x22 (3, 3, 2, 2)
array([[[[1. , 1. ],
[1. , 1. ]],
[[1. , 1. ],
[1. , 1. ]],
[[0. , 0. ],
[0. , 0. ]]],
[[[0. , 0. ],
[0. , 0. ]],
[[0. , 0. ],
[0. , 0. ]],
[[0.7, 0.3],
[0.7, 0.3]]],
[[[0. , 0. ],
[0. , 0. ]],
[[0. , 0. ],
[0. , 0. ]],
[[0.3, 0.7],
[0.3, 0.7]]]])
plot_likelihood(
_A[m][
:,
lup['sAssigned'].index('Right'),
lup['sAvail']['Left'].index(True),
:
],
title_str="""
Modality $o^{\mathrm{Rew[Right]}}$
vs
Factor $s^{\mathrm{Avail[Right]}}$
($s^{\mathrm{Assigned}}=\mathrm{Right}\ &\ s^{\mathrm{Avail[Left]}}=\mathrm{True}$)
""",
ylabels=lup['oRew']['Right'],
xlabels=lup['sAvail']['Right'],
size=(3,3)
)<Figure size 300x300 with 0 Axes>

# _A = np_zeros_list(_A_shapes) # REMOVE !!!!!!!!!!!!
## Modality: oAvail[Left]
## write down first combination just to get started:
## oAvail[Left] sAssigned sAvail[Left] sAvail[Right]
## _A[m][0, 0, 0, 0] =
## _A[m][1, 0, 0, 0] =
m = 3
for i in range(len(lup['sAssigned'])):
# for j in range(len(lup['sAvail']['Left'])):
for k in range (len(lup['sAvail']['Right'])):
# _A[m][0, i, j, k] = 0.5
# _A[m][1, i, j, k] = 0.5
_A[m][:, i, :, k] = np.eye(len(lup['oAvail']['Left']))
print(m, _A[m].shape)
_A[m] ## 2 cuboids of 3x2x23 (2, 3, 2, 2)
array([[[[1., 1.],
[0., 0.]],
[[1., 1.],
[0., 0.]],
[[1., 1.],
[0., 0.]]],
[[[0., 0.],
[1., 1.]],
[[0., 0.],
[1., 1.]],
[[0., 0.],
[1., 1.]]]])
plot_likelihood(
_A[m][
:,
lup['sAssigned'].index('Left'),
:,
lup['sAvail']['Right'].index(True)
],
title_str="""
Modality $o^{\mathrm{Avail[Left]}}$
vs
Factor $s^{\mathrm{Avail[Left]}}$
($s^{\mathrm{Assigned}}=\mathrm{Left}\ &\ s^{\mathrm{Avail[Right]}}=\mathrm{True}$)
""",
ylabels=lup['oAvail']['Left'],
xlabels=lup['sAvail']['Left'],
size=(3,3)
)<Figure size 300x300 with 0 Axes>

# _A = np_zeros_list(_A_shapes) # REMOVE !!!!!!!!!!!!
## Modality: oAvail[Left]
## write down first combination just to get started:
## oAvail[Right] sAssigned sAvail[Left] sAvail[Right]
## _A[m][0, 0, 0, 0] =
## _A[m][1, 0, 0, 0] =
m = 4
for i in range(len(lup['sAssigned'])):
for j in range (len(lup['sAvail']['Left'])):
for k in range(len(lup['sAvail']['Right'])):
# _A[m][0, i, j, k] = 0.5
# _A[m][1, i, j, k] = 0.5
_A[m][:, i, j, :] = np.eye(len(lup['oAvail']['Right']))
print(m, _A[m].shape)
_A[m] ## 2 cuboids of 3x2x24 (2, 3, 2, 2)
array([[[[1., 0.],
[1., 0.]],
[[1., 0.],
[1., 0.]],
[[1., 0.],
[1., 0.]]],
[[[0., 1.],
[0., 1.]],
[[0., 1.],
[0., 1.]],
[[0., 1.],
[0., 1.]]]])
plot_likelihood(
_A[m][
:,
lup['sAssigned'].index('Left'),
lup['sAvail']['Left'].index(True),
:,
],
title_str="""
Modality $o^{\mathrm{Avail[Right]}}$
vs
Factor $s^{\mathrm{Avail[Right]}}$
($s^{\mathrm{Assigned}}=\mathrm{Left}\ &\ s^{\mathrm{Avail[Left]}}=\mathrm{True}$)
""",
ylabels=lup['oAvail']['Right'],
xlabels=lup['sAvail']['Right'],
size=(3,3)
)<Figure size 300x300 with 0 Axes>

[[3, 3, 3], [2, 2, 1], [2, 2, 1]]
[array([[[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]],
[[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]],
[[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]]]),
array([[[0.],
[0.]],
[[0.],
[0.]]]),
array([[[0.],
[0.]],
[[0.],
[0.]]])]
array([[[1., 0., 0.],
[1., 0., 0.],
[1., 0., 0.]],
[[0., 1., 0.],
[0., 1., 0.],
[0., 1., 0.]],
[[0., 0., 1.],
[0., 0., 1.],
[0., 0., 1.]]])
plot_likelihood(
_B[f][:,:,lup['aAssign'].index('Assign-Start')],
title_str="""
Factor $s^{\mathrm{Assigned}}_{t}$
vs
Factor $s^{\mathrm{Assigned}}_{t-1}$
($a^{\mathrm{Assign}}_{t-1}=\mathrm{Assign-Start}$)""",
ylabels=lup['sAssigned'],
xlabels=lup['sAssigned'],
size=(3,3)
)<Figure size 300x300 with 0 Axes>

plot_likelihood(
_B[f][:,:,lup['aAssign'].index('Assign-Left')],
title_str="""
Factor $s^{\mathrm{Assigned}}_{t}$
vs
Factor $s^{\mathrm{Assigned}}_{t-1}$
($a^{\mathrm{Assign}}_{t-1}=\mathrm{Assign-Left}$)""",
ylabels=lup['sAssigned'],
xlabels=lup['sAssigned'],
size=(3,3)
)<Figure size 300x300 with 0 Axes>

plot_likelihood(
_B[f][:,:,lup['aAssign'].index('Assign-Right')],
title_str="""
Factor $s^{\mathrm{Assigned}}_{t}$
vs
Factor $s^{\mathrm{Assigned}}_{t-1}$
($a^{\mathrm{Assign}}_{t-1}=\mathrm{Assign-Right}$)""",
ylabels=lup['sAssigned'],
xlabels=lup['sAssigned'],
size=(3,3)
)<Figure size 300x300 with 0 Axes>

p_flip = 0.2 ## prob. that sAvail[Left] flips per step; availability flips every ~5 steps (1/5 = 0.2)
f = 1
_B[f][
:,
:,
0 ## for uncontrollable, 0 for the only value: 'null/no-action'
] = np.array([ [1.0-p_flip, p_flip ], ## to False
[p_flip, 1.0-p_flip] ]) ## to True (from False, from True)
_B[f]array([[[0.8],
[0.2]],
[[0.2],
[0.8]]])
plot_likelihood(
_B[f][:,:,lup['aNull1'].index('Null1')],
title_str="""
Factor $s^{\mathrm{Avail[Left]}}_{t}$
vs
Factor $s^{\mathrm{Avail[Left]}}_{t-1}$
($a^{\mathrm{Null1}}_{t-1}=\mathrm{Null1}$)""",
ylabels=lup['sAvail']['Left'],
xlabels=lup['sAvail']['Left'],
size=(3,3)
)<Figure size 300x300 with 0 Axes>

p_flip = 0.2 ## prob. that sAvail[Right] flips per step; availability flips every ~5 steps (1/5 = 0.2)
f = 2
_B[f][
:,
:,
0 ## for uncontrollable, 0 for the only value: 'null/no-action'
] = np.array([ [1.0-p_flip, p_flip ], ## to False
[p_flip, 1.0-p_flip] ]) ## to True (from False, from True)
_B[f]array([[[0.8],
[0.2]],
[[0.2],
[0.8]]])
plot_likelihood(
_B[f][:,:,lup['aNull2'].index('Null2')],
title_str="""
Factor $s^{\mathrm{Avail[Right]}}_{t}$
vs
Factor $s^{\mathrm{Avail[Right]}}_{t-1}$
($a^{\mathrm{Null2}}_{t-1}=\mathrm{Null2}$)""",
ylabels=lup['sAvail']['Right'],
xlabels=lup['sAvail']['Right'],
size=(3,3)
)<Figure size 300x300 with 0 Axes>

=== _a_dims:
[3, 1, 1]
=== _s_dims:
[3, 2, 2]
[array([[[1., 0., 0.],
[1., 0., 0.],
[1., 0., 0.]],
[[0., 1., 0.],
[0., 1., 0.],
[0., 1., 0.]],
[[0., 0., 1.],
[0., 0., 1.],
[0., 0., 1.]]]),
array([[[0.8],
[0.2]],
[[0.2],
[0.8]]]),
array([[[0.8],
[0.2]],
[[0.2],
[0.8]]])]
## For C, each observation modality has a VECTOR, NOT a MATRIX/TENSOR as in the case of A
_C = np_zeros_list(_o_dims) ##.
_C[array([0., 0., 0.]),
array([0., 0., 0.]),
array([0., 0., 0.]),
array([0., 0.]),
array([0., 0.])]
## "oAssigned"
## leave _C[0]
## "oRew[Left]"
_C[1][1] = -4.0 ##. do not want to see the oRew[Left] == 'Loss' observation
# _C[1][1] = -8.0 ##. do not want to see the oRew[Left] == 'Loss' observation
_C[1][2] = 4.0 ##. want to see the oRew[Left] == 'Reward' observation
# _C[1][2] = 8.0 ##. want to see the oRew[Left] == 'Reward' observation
## "oRew[Right]"
_C[2][1] = -4.0 ##. do not want to see the oRew[Right] == 'Loss' observation
_C[2][2] = 4.0 ##. want to see the oRew[Right] == 'Reward' observation
## "oAvail[Left]"
## leave _C[3]
## "oAvail[Right]"
## leave _C[4]
_C[array([0., 0., 0.]),
array([ 0., -4., 4.]),
array([ 0., -4., 4.]),
array([0., 0.]),
array([0., 0.])]
## For D, each state factor has a VECTOR, NOT a MATRIX/TENSOR as in the case of B
_D = np_zeros_list(_s_dims)
_D[array([0., 0., 0.]), array([0., 0.]), array([0., 0.])]
## "sAssigned"
## _D[0] = [0.5, 0.5] ## breaks later, has to be np.array()
## _D[0] = np.array([1.0, 0.0, 0.0, 0.0]) ##. certain about 'Start'
_D[0] = np.array([1.0, 0.0, 0.0]) ##. certain about 'Start'
_D[array([1., 0., 0.]), array([0., 0.]), array([0., 0.])]
## "sAvail[Left]"
## _D[1] = [1.0, 0.0, 0.0, 0.0] ## breaks later, has to be np.array()
# _D[1] = np.array([0.5, 0.5])
_D[1] = np.array([1.0, 0.0])
_D[array([1., 0., 0.]), array([1., 0.]), array([0., 0.])]
[array([1., 0., 0.]), array([1., 0.]), array([0., 1.])]
Now we’ll write a function that will take the agent, the environment, and a time length and run the active inference loop
def get_policy_labels(policies):
H = len(policies[0]) ## use first policy to find policy_len or time horizon H
labels = []
for p in range(len(policies)): ## for each action-sequence / policy
lab = ''
for a in range(H): ## for each action
if a < H - 1:
## lab = lab+f"{[lup['aAssign'][policies[p][a][0]],_lup['aNull1'][policies[p][a][1]],_lup['aNull2'][policies[p][a][2]]]}\n↓\n"
lab = lab+f"{[lup['aAssign'][policies[p][a][0]], '', '']}\n↓\n"
else:
## lab = lab+f"{[lup['aAssign'][policies[p][a][0]],_lup['aNull1'][policies[p][a][1]],_lup['aNull2'][policies[p][a][2]]]}"
lab = lab+f"{[lup['aAssign'][policies[p][a][0]], '', '']}"
labels.append(lab)
return labels
## for nested entries in lup (in addition to normal entries)
def get_val_names(names): ## fac/mod names
val_names = []
for omn in names:
if omn.find('[') == -1: ## no '[' in name
val_names.append(lup[omn])
else:
hi = omn.split('[')[0]
lo = omn.split('[')[1][:-1]
val_names.append(lup[hi][lo])
return val_names
a_fac_names = ['aAssign', 'aNull1', 'aNull2'] ## control factor names
s_fac_names = [ ## state factor names
'sAssigned',
'sAvail[Left]', 'sAvail[Right]'
]
sˣ_fac_names = [ ## state factor names
'sˣAssigned',
'sˣAvail[Left]', 'sˣAvail[Right]'
]
o_mod_names = [ ## observation modality names
'oAssigned',
'oRew[Left]', 'oRew[Right]',
'oAvail[Left]', 'oAvail[Right]'
]
a_val_names = get_val_names(a_fac_names); print(f'{a_val_names=}')
s_val_names = get_val_names(s_fac_names); print(f'{s_val_names=}')
sˣ_val_names = get_val_names(sˣ_fac_names); print(f'{sˣ_val_names=}')
o_val_names = get_val_names(o_mod_names); print(f'{o_val_names=}')
def run_active_inference_loop(agt, env, T=5, rng_key=None):
if rng_key is None:
rng_key = jr.PRNGKey(0)
obs_lab = env.reset() ## reset the environment and get an initial observation
obs_idx = [
lup['oAssigned'].index(obs_lab[0]),
lup['oRew']['Left'].index(obs_lab[1]),
lup['oRew']['Right'].index(obs_lab[2]),
lup['oAvail']['Left'].index(obs_lab[3]),
lup['oAvail']['Right'].index(obs_lab[4]),
]
print(f'Number of policies: {math.prod(_a_dims)**agt.policy_len=}')
print(f'\tbecause {_a_dims=}, {agt.policy_len=}')
policies = np.asarray(agt.policies.policy_arr) ## (num_policies, policy_len, num_factors)
policy_labels = get_policy_labels(policies)
## JAX: the agent no longer stores beliefs internally; we carry the empirical prior ourselves
prior = agt.D ## at t=0 the prior over states is D
for t in range(T): ##. with a slide
print(f"\n===================== Time {t}: =====================")
#### infer states
obs = [jnp.array([o]) for o in obs_idx] ## leading batch dim (batch_size=1)
qs, info = agt.infer_states(obs, empirical_prior=prior, return_info=True) ##. infer.
QIsI = [np.asarray(q[0, -1]) for q in qs] ## drop batch & time dims -> one vector per factor
## VFE
VFE = float(info['vfe'][0])
print(f'{VFE=}')
VFEː.append(VFE)
## QIsI
plot_beliefs(QIsI[0], title_str=r"$Q(s^{\mathrm{Assigned}}_{t})$"+f" at t = {t}", xlabels=lup['sAssigned'])
plot_beliefs(QIsI[1], title_str=r"$Q(s^{\mathrm{Avail[Left]}}_{t})$"+f" at t = {t}", xlabels=lup['sAvail']['Left'])
plot_beliefs(QIsI[2], title_str=r"$Q(s^{\mathrm{Avail[Right]}}_{t})$"+f" at t = {t}", xlabels=lup['sAvail']['Right'])
sˣ_facs['sˣAssigned'].append(env.sˣAssigned)
sˣ_facs['sˣAvail']['Left'].append(env.sˣAvail['Left'][t])
sˣ_facs['sˣAvail']['Right'].append(env.sˣAvail['Right'][t])
for sfi, sfn in enumerate(s_fac_names):
if sfn.find('[') == -1: ## no '[' in name
s_facs[sfn].append( lup[sfn][int(np.argmax(QIsI[sfi].round(3)))] )
else:
hi = sfn.split('[')[0]
lo = sfn.split('[')[1][:-1]
s_facs[hi][lo].append( lup[hi][lo][int(np.argmax(QIsI[sfi].round(3)))] )
print('s_facs:'); print(s_facs)
print('sˣ_facs:'); print(sˣ_facs)
#### infer policies
print(f'\t%%% Policies %%%')
q_pi, neg_efe = agt.infer_policies(qs)
QIpiI = np.asarray(q_pi[0])
EFE = -np.asarray(neg_efe[0]) ## JAX returns the NEGATIVE expected free energy
## efe
print(f'{len(EFE)=}'); ##print(f'EFE: {np.round(EFE, 2)}')
print(f'{np.argmin(EFE)=}'); print(f'{np.min(EFE)=}')
lowest_EFE_idx = int(np.argmin(EFE))
print(f'LOWEST EFE in {lowest_EFE_idx}: {EFE[lowest_EFE_idx]}')
## plot_FE(
# EFE,
# title_str=r"$G$"+f" at t = {t}",
# size=(12,1)
# )
EFEː.append(EFE)
## qIpiI
print(f'{len(QIpiI)=}'); print(f'QIpiI: {np.round(QIpiI, 2)}')
print(f'{np.argmax(QIpiI)=}'); print(f'{np.max(QIpiI)=}')
print(f'BEST QIpiI: {np.round(QIpiI[lowest_EFE_idx], 2)}')
plot_beliefs(
QIpiI,
title_str=r"$Q(\pi_{t})$"+f" at t = {t}",
xlabels=policy_labels,
size=(18,2),
label_rotation=0, ## horizontal labels; actions stacked top-to-bottom with an arrow
label_fontsize=7
)
QIpiIː.append(QIpiI)
print(f'### ACT FUTURE ###')
rng_key, key_action = jr.split(rng_key)
action = agt.sample_action(q_pi, rng_key=jr.split(key_action, agt.batch_size)) ## shape (batch, num_factors)
act_idx = np.asarray(action[0]); print(f'!!!!!!!!!! {act_idx=}') ##. Act future &
act_idx_controllable = int(act_idx[0]) ## aAssign; only ele 0 used, rest of state factors uncontrollable
act_lab_controllable = lup['aAssign'][act_idx_controllable] ##.
for afi, afn in enumerate(a_fac_names):
a_facs[afn].append(a_val_names[afi][int(act_idx[afi])])
print('a_facs:'); print(a_facs)
## JAX: propagate beliefs through B under the chosen action -> prior for the next step
prior = agt.update_empirical_prior(action, qs)
print(f'### NEXT OBSERVE ###')
obs_lab = env.step(t, act_lab_controllable) ##. next observe, howto
obs_idx = [
lup['oAssigned'].index(obs_lab[0]),
lup['oRew']['Left'].index(obs_lab[1]),
lup['oRew']['Right'].index(obs_lab[2]),
lup['oAvail']['Left'].index(obs_lab[3]),
lup['oAvail']['Right'].index(obs_lab[4]),
]
for omi, omn in enumerate(o_mod_names):
if omn.find('[') == -1: ## no '[' in name
o_mods[omn].append( o_val_names[omi][obs_idx[omi]] )
else:
hi = omn.split('[')[0]
lo = omn.split('[')[1][:-1]
o_mods[hi][lo].append( o_val_names[omi][obs_idx[omi]] )
print('o_mods:'); print(o_mods)
print(f'Action at time {t}: {act_lab_controllable}')
print(f"sˣAvail[Left] at time {t}: {env.sˣAvail['Left'][t]}")
print(f'oRew[Left] at time {t}: {obs_lab[1]}')
print(f'oRew[Right] at time {t}: {obs_lab[2]}')
print(f'oAvail[Left] at time {t}: {obs_lab[3]}')
print(f'oAvail[Right] at time {t}: {obs_lab[4]}') a_val_names=[['Assign-Start', 'Assign-Left', 'Assign-Right'], ['Null1'], ['Null2']]
s_val_names=[['Start', 'Left', 'Right'], [False, True], [False, True]]
sˣ_val_names=[['Start', 'Left', 'Right'], [False, True], [False, True]]
o_val_names=[['Start', 'Left', 'Right'], ['Null', 'Loss', 'Reward'], ['Null', 'Loss', 'Reward'], [False, True], [False, True]]
Now all we have to do is define the bandit environment, choose the length of the simulation, and run the function we wrote above.
Try playing with the hint accuracy and/or reward statistics of the environment - remember this is different than the agent’s representation of the reward statistics (i.e. the agent’s generative model, e.g. the A or B matrices).
## Create an envir
## this is the "true" reward probability - i.e. how often does the better arm actually
## return a reward, as opposed to a loss. REMEMBER: THIS IS INDEPENDENT OF HOW YOU
## PARAMETERIZE THE A MATRIX FOR THE REWARD MODALITY
p_reward_env = 0.7
# p_reward_env = 1.0
## availability flips every 5 steps: Left & Right are never available at the same time
## (previous scenario: Left always False, Right always True)
avails = {
'Left': [
True, True, True, True, True, ## t = 0-4
False, False, False, False, False, ## t = 5-9
True, True, True, True, True, ## t = 10-14
False, False, False, False, False, ## t = 15-19
True, True, True, True, True, ## t = 20-24
False, False, False, False, False, ## t = 25-29
True, True, True, True, True, ## t = 30-34
False, False, False, False, False, ## t = 35-39
True, True, True, True, True, ## t = 40-44
False, False, False, False, False, ## t = 45-49
],
'Right': [
False, False, False, False, False, ## t = 0-4
True, True, True, True, True, ## t = 5-9
False, False, False, False, False, ## t = 10-14
True, True, True, True, True, ## t = 15-19
False, False, False, False, False, ## t = 20-24
True, True, True, True, True, ## t = 25-29
False, False, False, False, False, ## t = 30-34
True, True, True, True, True, ## t = 35-39
False, False, False, False, False, ## t = 40-44
True, True, True, True, True, ## t = 45-49
],
}
print(f"{len(avails['Left'])=}")
my_envir = EpistemicMABEnvir(
avails = avails,
p_reward=p_reward_env)
pprint(f'my_envir.sˣAvail: {my_envir.sˣAvail}')len(avails['Left'])=50
("my_envir.sˣAvail: {'Left': [True, True, True, True, True, False, False, "
'False, False, False, True, True, True, True, True, False, False, False, '
'False, False, True, True, True, True, True, False, False, False, False, '
'False, True, True, True, True, True, False, False, False, False, False, '
"True, True, True, True, True, False, False, False, False, False], 'Right': "
'[False, False, False, False, False, True, True, True, True, True, False, '
'False, False, False, False, True, True, True, True, True, False, False, '
'False, False, False, True, True, True, True, True, False, False, False, '
'False, False, True, True, True, True, True, False, False, False, False, '
'False, True, True, True, True, True]}')
## Create an agent
## list of the indices of the hidden state factors that are controllable
## sContext_0: uncontrollable; sChoice_1: controllable
controllable_indices = [0] ## aAssign
my_agent = Agent(
A=[jnp.asarray(a) for a in _A], ## JAX: convert numpy model to jnp arrays
B=[jnp.asarray(b) for b in _B],
C=[jnp.asarray(c) for c in _C],
D=[jnp.asarray(d) for d in _D],
## number of action values (aChoice_1); aNull_0 has a single value, so 1*4=4
# policy_len=1, ##. 4**1 = 4 ele
policy_len=2, ##. 4**2 = 16 ele
# policy_len=3, ##. 4**3 = 64 ele
# policy_len=4, ##. 4**4 = 256 ele
control_fac_idx=controllable_indices,
action_selection="deterministic", ## same as legacy default
sampling_mode="marginal", ## legacy default; JAX default is "full"
)
my_agentAgent(
A=[
f32[1,3,3,2,2],
f32[1,3,3,2,2],
f32[1,3,3,2,2],
f32[1,2,3,2,2],
f32[1,2,3,2,2]
],
B=[f32[1,3,3,3], f32[1,2,2,1], f32[1,2,2,1]],
C=[f32[1,3], f32[1,3], f32[1,3], f32[1,2], f32[1,2]],
D=[f32[1,3], f32[1,2], f32[1,2]],
E=f32[1,9],
pA=None,
pB=None,
gamma=weak_f32[1],
alpha=weak_f32[1],
policies=Policies(
_policy_tup=(
((0, 0, 0), (0, 0, 0)),
((0, 0, 0), (1, 0, 0)),
((0, 0, 0), (2, 0, 0)),
((1, 0, 0), (0, 0, 0)),
((1, 0, 0), (1, 0, 0)),
((1, 0, 0), (2, 0, 0)),
((2, 0, 0), (0, 0, 0)),
((2, 0, 0), (1, 0, 0)),
((2, 0, 0), (2, 0, 0))
),
_dtype=dtype('int32'),
horizon=2,
num_policies=9
),
inductive_threshold=weak_f32[1],
inductive_epsilon=weak_f32[1],
H=None,
I=[f32[1,1,3], f32[1,1,2], f32[1,1,2]],
A_dependencies=[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]],
B_dependencies=[[0], [1], [2]],
B_action_dependencies=[[0], [1], [2]],
action_maps=None,
batch_size=1,
num_iter=16,
num_obs=[3, 3, 3, 2, 2],
num_modalities=5,
num_states=[3, 2, 2],
num_factors=3,
num_controls=[3, 1, 1],
num_controls_multi=None,
control_fac_idx=[0],
policy_len=2,
inference_horizon=None,
inductive_depth=1,
use_utility=True,
use_states_info_gain=True,
use_param_info_gain=False,
use_inductive=False,
categorical_obs=False,
preprocess_fn=None,
action_selection='deterministic',
sampling_mode='marginal',
inference_algo='fpi',
learn_A=False,
learn_B=False,
learn_C=False,
learn_D=False,
learn_E=False
)
# T = 5 ## number of timesteps
# T = 10 ## number of timesteps
# T = 20 ## number of timesteps
# T = 40 ## number of timesteps
T = 50 ## number of timesteps ############################
# T = 60 ## number of timesteps
assert(len(avails['Left']) >= T)
a_facs = {'aAssign': [], 'aNull1': [], 'aNull2': []}
s_facs = {
'sAssigned': [],
'sAvail': {
'Left': [],
'Right': [],
},
}
sˣ_facs = {
'sˣAssigned': [],
'sˣAvail': {
'Left': [],
'Right': [],
},
}
o_mods = {
'oAssigned': [],
'oRew': {
'Left': [],
'Right': [],
},
'oAvail': {
'Left': [],
'Right': [],
}
}
## min_F = []
# _QIpiIs = []
QIpiIː = []
# _EFE = []
EFEː = []
## _VFE = []
VFEː = []
run_active_inference_loop(my_agent, my_envir, T=T, rng_key=rng_key)Re-initialized to:
self.sˣAvail={'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True]}
self.p_reward=0.7
self.sˣAssigned='Start', oRew={'Left': 'Null', 'Right': 'Null'}
Number of policies: math.prod(_a_dims)**agt.policy_len=9
because _a_dims=[3, 1, 1], agt.policy_len=2
===================== Time 0: =====================
VFE=3.554191241067157e-30
s_facs:
{'sAssigned': ['Start'], 'sAvail': {'Left': [False], 'Right': [True]}}
sˣ_facs:
{'sˣAssigned': ['Start'], 'sˣAvail': {'Left': [True], 'Right': [False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right'], 'aNull1': ['Null1'], 'aNull2': ['Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right'], 'oRew': {'Left': ['Null'], 'Right': ['Loss']}, 'oAvail': {'Left': [True], 'Right': [False]}}
Action at time 0: Assign-Right
sˣAvail[Left] at time 0: True
oRew[Left] at time 0: Null
oRew[Right] at time 0: Loss
oAvail[Left] at time 0: True
oAvail[Right] at time 0: False
===================== Time 1: =====================
VFE=3.5755507946014404
s_facs:
{'sAssigned': ['Start', 'Right'], 'sAvail': {'Left': [False, True], 'Right': [True, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right'], 'sˣAvail': {'Left': [True, True], 'Right': [False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left'], 'aNull1': ['Null1', 'Null1'], 'aNull2': ['Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left'], 'oRew': {'Left': ['Null', 'Reward'], 'Right': ['Loss', 'Null']}, 'oAvail': {'Left': [True, True], 'Right': [False, False]}}
Action at time 1: Assign-Left
sˣAvail[Left] at time 1: True
oRew[Left] at time 1: Reward
oRew[Right] at time 1: Null
oAvail[Left] at time 1: True
oAvail[Right] at time 1: False
===================== Time 2: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left'], 'sAvail': {'Left': [False, True, True], 'Right': [True, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left'], 'sˣAvail': {'Left': [True, True, True], 'Right': [False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss'], 'Right': ['Loss', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True], 'Right': [False, False, False]}}
Action at time 2: Assign-Left
sˣAvail[Left] at time 2: True
oRew[Left] at time 2: Loss
oRew[Right] at time 2: Null
oAvail[Left] at time 2: True
oAvail[Right] at time 2: False
===================== Time 3: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True], 'Right': [True, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True], 'Right': [False, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward'], 'Right': ['Loss', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True], 'Right': [False, False, False, False]}}
Action at time 3: Assign-Left
sˣAvail[Left] at time 3: True
oRew[Left] at time 3: Reward
oRew[Right] at time 3: Null
oAvail[Left] at time 3: True
oAvail[Right] at time 3: False
===================== Time 4: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True], 'Right': [True, False, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True], 'Right': [False, False, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True], 'Right': [False, False, False, False, False]}}
Action at time 4: Assign-Left
sˣAvail[Left] at time 4: True
oRew[Left] at time 4: Reward
oRew[Right] at time 4: Null
oAvail[Left] at time 4: True
oAvail[Right] at time 4: False
===================== Time 5: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True], 'Right': [True, False, False, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False], 'Right': [False, False, False, False, False, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False], 'Right': [False, False, False, False, False, True]}}
Action at time 5: Assign-Left
sˣAvail[Left] at time 5: False
oRew[Left] at time 5: Loss
oRew[Right] at time 5: Null
oAvail[Left] at time 5: False
oAvail[Right] at time 5: True
===================== Time 6: =====================
VFE=3.5755507946014404
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False], 'Right': [True, False, False, False, False, False, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False], 'Right': [False, False, False, False, False, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss']}, 'oAvail': {'Left': [True, True, True, True, True, False, False], 'Right': [False, False, False, False, False, True, True]}}
Action at time 6: Assign-Right
sˣAvail[Left] at time 6: False
oRew[Left] at time 6: Null
oRew[Right] at time 6: Loss
oAvail[Left] at time 6: False
oAvail[Right] at time 6: True
===================== Time 7: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False], 'Right': [True, False, False, False, False, False, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False], 'Right': [False, False, False, False, False, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False], 'Right': [False, False, False, False, False, True, True, True]}}
Action at time 7: Assign-Right
sˣAvail[Left] at time 7: False
oRew[Left] at time 7: Null
oRew[Right] at time 7: Reward
oAvail[Left] at time 7: False
oAvail[Right] at time 7: True
===================== Time 8: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True]}}
Action at time 8: Assign-Right
sˣAvail[Left] at time 8: False
oRew[Left] at time 8: Null
oRew[Right] at time 8: Reward
oAvail[Left] at time 8: False
oAvail[Right] at time 8: True
===================== Time 9: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True]}}
Action at time 9: Assign-Right
sˣAvail[Left] at time 9: False
oRew[Left] at time 9: Null
oRew[Right] at time 9: Reward
oAvail[Left] at time 9: False
oAvail[Right] at time 9: True
===================== Time 10: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False]}}
Action at time 10: Assign-Right
sˣAvail[Left] at time 10: True
oRew[Left] at time 10: Null
oRew[Right] at time 10: Loss
oAvail[Left] at time 10: True
oAvail[Right] at time 10: False
===================== Time 11: =====================
VFE=3.5755507946014404
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False]}}
Action at time 11: Assign-Left
sˣAvail[Left] at time 11: True
oRew[Left] at time 11: Loss
oRew[Right] at time 11: Null
oAvail[Left] at time 11: True
oAvail[Right] at time 11: False
===================== Time 12: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False]}}
Action at time 12: Assign-Left
sˣAvail[Left] at time 12: True
oRew[Left] at time 12: Reward
oRew[Right] at time 12: Null
oAvail[Left] at time 12: True
oAvail[Right] at time 12: False
===================== Time 13: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False]}}
Action at time 13: Assign-Left
sˣAvail[Left] at time 13: True
oRew[Left] at time 13: Loss
oRew[Right] at time 13: Null
oAvail[Left] at time 13: True
oAvail[Right] at time 13: False
===================== Time 14: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False]}}
Action at time 14: Assign-Left
sˣAvail[Left] at time 14: True
oRew[Left] at time 14: Loss
oRew[Right] at time 14: Null
oAvail[Left] at time 14: True
oAvail[Right] at time 14: False
===================== Time 15: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True]}}
Action at time 15: Assign-Left
sˣAvail[Left] at time 15: False
oRew[Left] at time 15: Reward
oRew[Right] at time 15: Null
oAvail[Left] at time 15: False
oAvail[Right] at time 15: True
===================== Time 16: =====================
VFE=4.422848701477051
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True]}}
Action at time 16: Assign-Right
sˣAvail[Left] at time 16: False
oRew[Left] at time 16: Null
oRew[Right] at time 16: Reward
oAvail[Left] at time 16: False
oAvail[Right] at time 16: True
===================== Time 17: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True]}}
Action at time 17: Assign-Right
sˣAvail[Left] at time 17: False
oRew[Left] at time 17: Null
oRew[Right] at time 17: Loss
oAvail[Left] at time 17: False
oAvail[Right] at time 17: True
===================== Time 18: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True]}}
Action at time 18: Assign-Right
sˣAvail[Left] at time 18: False
oRew[Left] at time 18: Null
oRew[Right] at time 18: Reward
oAvail[Left] at time 18: False
oAvail[Right] at time 18: True
===================== Time 19: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True]}}
Action at time 19: Assign-Right
sˣAvail[Left] at time 19: False
oRew[Left] at time 19: Null
oRew[Right] at time 19: Loss
oAvail[Left] at time 19: False
oAvail[Right] at time 19: True
===================== Time 20: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False]}}
Action at time 20: Assign-Right
sˣAvail[Left] at time 20: True
oRew[Left] at time 20: Null
oRew[Right] at time 20: Loss
oAvail[Left] at time 20: True
oAvail[Right] at time 20: False
===================== Time 21: =====================
VFE=3.5755507946014404
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False]}}
Action at time 21: Assign-Left
sˣAvail[Left] at time 21: True
oRew[Left] at time 21: Reward
oRew[Right] at time 21: Null
oAvail[Left] at time 21: True
oAvail[Right] at time 21: False
===================== Time 22: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False]}}
Action at time 22: Assign-Left
sˣAvail[Left] at time 22: True
oRew[Left] at time 22: Reward
oRew[Right] at time 22: Null
oAvail[Left] at time 22: True
oAvail[Right] at time 22: False
===================== Time 23: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False]}}
Action at time 23: Assign-Left
sˣAvail[Left] at time 23: True
oRew[Left] at time 23: Loss
oRew[Right] at time 23: Null
oAvail[Left] at time 23: True
oAvail[Right] at time 23: False
===================== Time 24: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False]}}
Action at time 24: Assign-Left
sˣAvail[Left] at time 24: True
oRew[Left] at time 24: Reward
oRew[Right] at time 24: Null
oAvail[Left] at time 24: True
oAvail[Right] at time 24: False
===================== Time 25: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True]}}
Action at time 25: Assign-Left
sˣAvail[Left] at time 25: False
oRew[Left] at time 25: Loss
oRew[Right] at time 25: Null
oAvail[Left] at time 25: False
oAvail[Right] at time 25: True
===================== Time 26: =====================
VFE=3.5755507946014404
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True]}}
Action at time 26: Assign-Right
sˣAvail[Left] at time 26: False
oRew[Left] at time 26: Null
oRew[Right] at time 26: Reward
oAvail[Left] at time 26: False
oAvail[Right] at time 26: True
===================== Time 27: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True]}}
Action at time 27: Assign-Right
sˣAvail[Left] at time 27: False
oRew[Left] at time 27: Null
oRew[Right] at time 27: Loss
oAvail[Left] at time 27: False
oAvail[Right] at time 27: True
===================== Time 28: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True]}}
Action at time 28: Assign-Right
sˣAvail[Left] at time 28: False
oRew[Left] at time 28: Null
oRew[Right] at time 28: Reward
oAvail[Left] at time 28: False
oAvail[Right] at time 28: True
===================== Time 29: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True]}}
Action at time 29: Assign-Right
sˣAvail[Left] at time 29: False
oRew[Left] at time 29: Null
oRew[Right] at time 29: Loss
oAvail[Left] at time 29: False
oAvail[Right] at time 29: True
===================== Time 30: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False]}}
Action at time 30: Assign-Right
sˣAvail[Left] at time 30: True
oRew[Left] at time 30: Null
oRew[Right] at time 30: Loss
oAvail[Left] at time 30: True
oAvail[Right] at time 30: False
===================== Time 31: =====================
VFE=3.5755507946014404
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False]}}
Action at time 31: Assign-Left
sˣAvail[Left] at time 31: True
oRew[Left] at time 31: Reward
oRew[Right] at time 31: Null
oAvail[Left] at time 31: True
oAvail[Right] at time 31: False
===================== Time 32: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False]}}
Action at time 32: Assign-Left
sˣAvail[Left] at time 32: True
oRew[Left] at time 32: Loss
oRew[Right] at time 32: Null
oAvail[Left] at time 32: True
oAvail[Right] at time 32: False
===================== Time 33: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False]}}
Action at time 33: Assign-Left
sˣAvail[Left] at time 33: True
oRew[Left] at time 33: Reward
oRew[Right] at time 33: Null
oAvail[Left] at time 33: True
oAvail[Right] at time 33: False
===================== Time 34: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False]}}
Action at time 34: Assign-Left
sˣAvail[Left] at time 34: True
oRew[Left] at time 34: Reward
oRew[Right] at time 34: Null
oAvail[Left] at time 34: True
oAvail[Right] at time 34: False
===================== Time 35: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True]}}
Action at time 35: Assign-Left
sˣAvail[Left] at time 35: False
oRew[Left] at time 35: Reward
oRew[Right] at time 35: Null
oAvail[Left] at time 35: False
oAvail[Right] at time 35: True
===================== Time 36: =====================
VFE=4.422848701477051
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True]}}
Action at time 36: Assign-Right
sˣAvail[Left] at time 36: False
oRew[Left] at time 36: Null
oRew[Right] at time 36: Reward
oAvail[Left] at time 36: False
oAvail[Right] at time 36: True
===================== Time 37: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True]}}
Action at time 37: Assign-Right
sˣAvail[Left] at time 37: False
oRew[Left] at time 37: Null
oRew[Right] at time 37: Loss
oAvail[Left] at time 37: False
oAvail[Right] at time 37: True
===================== Time 38: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True]}}
Action at time 38: Assign-Right
sˣAvail[Left] at time 38: False
oRew[Left] at time 38: Null
oRew[Right] at time 38: Reward
oAvail[Left] at time 38: False
oAvail[Right] at time 38: True
===================== Time 39: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True]}}
Action at time 39: Assign-Right
sˣAvail[Left] at time 39: False
oRew[Left] at time 39: Null
oRew[Right] at time 39: Loss
oAvail[Left] at time 39: False
oAvail[Right] at time 39: True
===================== Time 40: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False]}}
Action at time 40: Assign-Right
sˣAvail[Left] at time 40: True
oRew[Left] at time 40: Null
oRew[Right] at time 40: Loss
oAvail[Left] at time 40: True
oAvail[Right] at time 40: False
===================== Time 41: =====================
VFE=3.5755507946014404
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False]}}
Action at time 41: Assign-Left
sˣAvail[Left] at time 41: True
oRew[Left] at time 41: Loss
oRew[Right] at time 41: Null
oAvail[Left] at time 41: True
oAvail[Right] at time 41: False
===================== Time 42: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False]}}
Action at time 42: Assign-Left
sˣAvail[Left] at time 42: True
oRew[Left] at time 42: Reward
oRew[Right] at time 42: Null
oAvail[Left] at time 42: True
oAvail[Right] at time 42: False
===================== Time 43: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False]}}
Action at time 43: Assign-Left
sˣAvail[Left] at time 43: True
oRew[Left] at time 43: Loss
oRew[Right] at time 43: Null
oAvail[Left] at time 43: True
oAvail[Right] at time 43: False
===================== Time 44: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Reward'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False]}}
Action at time 44: Assign-Left
sˣAvail[Left] at time 44: True
oRew[Left] at time 44: Reward
oRew[Right] at time 44: Null
oAvail[Left] at time 44: True
oAvail[Right] at time 44: False
===================== Time 45: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(4)
np.min(EFE)=np.float32(-3.9156215)
LOWEST EFE in 4: -3.915621519088745
len(QIpiI)=9
QIpiI: [0.07 0.13 0.04 0.19 0.36 0.11 0.03 0.05 0.02]
np.argmax(QIpiI)=np.int64(4)
np.max(QIpiI)=np.float32(0.3601646)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([1, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Left')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Reward', 'Loss'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True]}}
Action at time 45: Assign-Left
sˣAvail[Left] at time 45: False
oRew[Left] at time 45: Loss
oRew[Right] at time 45: Null
oAvail[Left] at time 45: False
oAvail[Right] at time 45: True
===================== Time 46: =====================
VFE=3.5755507946014404
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Reward', 'Loss', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True]}}
Action at time 46: Assign-Right
sˣAvail[Left] at time 46: False
oRew[Left] at time 46: Null
oRew[Right] at time 46: Reward
oAvail[Left] at time 46: False
oAvail[Right] at time 46: True
===================== Time 47: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True]}}
Action at time 47: Assign-Right
sˣAvail[Left] at time 47: False
oRew[Left] at time 47: Null
oRew[Right] at time 47: Loss
oAvail[Left] at time 47: False
oAvail[Right] at time 47: True
===================== Time 48: =====================
VFE=1.6502598524093628
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True]}}
Action at time 48: Assign-Right
sˣAvail[Left] at time 48: False
oRew[Left] at time 48: Null
oRew[Right] at time 48: Reward
oAvail[Left] at time 48: False
oAvail[Right] at time 48: True
===================== Time 49: =====================
VFE=0.802962064743042
s_facs:
{'sAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'sAvail': {'Left': [False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False], 'Right': [True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True]}}
sˣ_facs:
{'sˣAssigned': ['Start', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right'], 'sˣAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True]}}
%%% Policies %%%
len(EFE)=9
np.argmin(EFE)=np.int64(8)
np.min(EFE)=np.float32(-3.9156213)
LOWEST EFE in 8: -3.915621280670166
len(QIpiI)=9
QIpiI: [0.07 0.04 0.13 0.03 0.02 0.05 0.19 0.11 0.36]
np.argmax(QIpiI)=np.int64(8)
np.max(QIpiI)=np.float32(0.36016455)
BEST QIpiI: 0.36000001430511475
### ACT FUTURE ###
!!!!!!!!!! act_idx=array([2, 0, 0], dtype=int32)
a_facs:
{'aAssign': ['Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Left', 'Assign-Right', 'Assign-Right', 'Assign-Right', 'Assign-Right'], 'aNull1': ['Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1', 'Null1'], 'aNull2': ['Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2', 'Null2']}
### NEXT OBSERVE ###
=== step('Assign-Right')
o_mods:
{'oAssigned': ['Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right', 'Right', 'Left', 'Left', 'Left', 'Left', 'Left', 'Right', 'Right', 'Right', 'Right'], 'oRew': {'Left': ['Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Loss', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Reward', 'Reward', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Loss', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null'], 'Right': ['Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Loss', 'Reward', 'Reward', 'Reward', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss', 'Loss', 'Null', 'Null', 'Null', 'Null', 'Null', 'Reward', 'Loss', 'Reward', 'Loss']}, 'oAvail': {'Left': [True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False], 'Right': [False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True, False, False, False, False, False, True, True, True, True, True]}}
Action at time 49: Assign-Right
sˣAvail[Left] at time 49: False
oRew[Left] at time 49: Null
oRew[Right] at time 49: Loss
oAvail[Left] at time 49: False
oAvail[Right] at time 49: True








































































































































































































colors = [
{'Assign-Start':'black', 'Assign-Left': 'orange', 'Assign-Right': 'purple'}, ## aAssign
{'Null1':'black'}, ## aNull1
{'Start':'black', 'Left': 'orange', 'Right': 'purple'}, ## sAssigned
{False:'orange', True:'purple'}, ## s̆Avail[Left]
{False:'orange', True:'purple'}, ## sAvail[Left]
{False:'orange', True:'purple'}, ## s̆Avail[Right]
{False:'orange', True:'purple'}, ## sAvail[Right]
{'Start':'black', 'Left': 'orange', 'Right': 'purple'}, ## oAssigned
{'Null':'black', 'Loss':'red', 'Reward': 'green'}, ## oRew[Left]
{'Null':'black', 'Loss':'red', 'Reward': 'green'}, ## oRew[Right]
{False:'orange', True:'purple'}, ## oAvail[Left]
{False:'orange', True:'purple'}, ## oAvail[Right]
]
ylabel_size = 12
msi = 6 ## markersize for Line2D, diameter in points
siz = (msi/2)**2 * np.pi ## size for scatter, area of marker in points squared
# fig = plt.figure(figsize=(9, 6))
fig = plt.figure(figsize=(9, 7))
## gs = GridSpec(6, 1, figure=fig, height_ratios=[1, 3, 1, 3, 3, 1])
# grid_rows = 10
grid_rows = 12
## gs = GridSpec(grid_rows, 1, figure=fig, height_ratios=[1, 1, 1, 1, 1, 1, 1, 1])
gs = GridSpec(grid_rows, 1, figure=fig, height_ratios=[1]*grid_rows)
ax = [fig.add_subplot(gs[i]) for i in range(grid_rows)]
i = 0
ax[i].set_title(f'Epistemic MAB', fontweight='bold',fontsize=14)
y_pos = 0
for t, s in zip(range(T), a_facs['aAssign']):
ax[i].scatter(t, y_pos, color=colors[i][s], s=siz, label=s)
ax[i].set_ylabel('$a^{\mathrm{Assign}}_{t}$', rotation=0, fontweight='bold', fontsize=ylabel_size)
ax[i].set_yticks([])
leg_items = [
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Assign-Start'],markersize=msi,label='Assign-Start'),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Assign-Left'],markersize=msi,label='Assign-Left'),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Assign-Right'],markersize=msi,label='Assign-Right')]
ax[i].legend(handles=leg_items, bbox_to_anchor=(1.05, 0.5), loc='center left', borderaxespad=0, labelspacing=0.1)
ax[i].spines['top'].set_visible(False); ax[i].spines['right'].set_visible(False)
i = 1
y_pos = 0
for t, s in zip(range(T), a_facs['aNull1']):
ax[i].scatter(t, y_pos, color=colors[i][s], s=siz)
ax[i].set_ylabel('$a^{\mathrm{Null}}_{t}$', rotation=0, fontweight='bold', fontsize=ylabel_size)
ax[i].set_yticks([])
ax[i].set_xticklabels([])
leg_items = [
Line2D([0],[0],marker='o',color='w',markerfacecolor='black',markersize=msi,label='Null')]
ax[i].legend(handles=leg_items, bbox_to_anchor=(1.05, 0.5), loc='center left', borderaxespad=0, labelspacing=0.1)
ax[i].spines['top'].set_visible(False); ax[i].spines['right'].set_visible(False)
i = 2
y_pos = 0
for t, s in zip(range(T), s_facs['sAssigned']):
ax[i].scatter(t, y_pos, color=colors[i][s], s=siz, label=s)
ax[i].set_ylabel('$s^{\mathrm{Assigned}}_{t}$', rotation=0, fontweight='bold', fontsize=ylabel_size)
ax[i].set_yticks([])
leg_items = [
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Start'],markersize=msi,label='Start'),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Left'],markersize=msi,label='Left'),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Right'],markersize=msi,label='Right')]
ax[i].legend(handles=leg_items, bbox_to_anchor=(1.05, 0.5), loc='center left', borderaxespad=0, labelspacing=0.1)
ax[i].spines['top'].set_visible(False); ax[i].spines['right'].set_visible(False)
i = 3
y_pos = 0
for t, s in zip(range(T), sˣ_facs['sˣAvail']['Left']):
ax[i].scatter(t, y_pos, color=colors[i][s], s=siz)
ax[i].set_ylabel('$s̆^{\mathrm{Avail[Left]}}_{t}$', rotation=0, fontweight='bold', fontsize=ylabel_size)
ax[i].set_yticks([])
ax[i].set_xticklabels([])
leg_items = [
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i][False],markersize=msi,label=False),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i][True],markersize=msi,label=True)]
ax[i].legend(handles=leg_items, bbox_to_anchor=(1.05, 0.5), loc='center left', borderaxespad=0, labelspacing=0.1)
ax[i].spines['top'].set_visible(False); ax[i].spines['right'].set_visible(False)
i = 4
y_pos = 0
for t, s in zip(range(T), s_facs['sAvail']['Left']):
ax[i].scatter(t, y_pos, color=colors[i][s], s=siz)
ax[i].set_ylabel('$s^{\mathrm{Avail[Left]}}_{t}$', rotation=0, fontweight='bold', fontsize=ylabel_size)
ax[i].set_yticks([])
ax[i].set_xticklabels([])
leg_items = [
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i][False],markersize=msi,label=False),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i][True],markersize=msi,label=True)]
ax[i].legend(handles=leg_items, bbox_to_anchor=(1.05, 0.5), loc='center left', borderaxespad=0, labelspacing=0.1)
ax[i].spines['top'].set_visible(False); ax[i].spines['right'].set_visible(False)
i = 5
y_pos = 0
for t, s in zip(range(T), sˣ_facs['sˣAvail']['Right']):
ax[i].scatter(t, y_pos, color=colors[i][s], s=siz)
ax[i].set_ylabel('$s̆^{\mathrm{Avail[Right]}}_{t}$', rotation=0, fontweight='bold', fontsize=ylabel_size)
ax[i].set_yticks([])
ax[i].set_xticklabels([])
leg_items = [
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i][False],markersize=msi,label=False),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i][True],markersize=msi,label=True)]
ax[i].legend(handles=leg_items, bbox_to_anchor=(1.05, 0.5), loc='center left', borderaxespad=0, labelspacing=0.1)
ax[i].spines['top'].set_visible(False); ax[i].spines['right'].set_visible(False)
i = 6
y_pos = 0
for t, s in zip(range(T), s_facs['sAvail']['Right']):
ax[i].scatter(t, y_pos, color=colors[i][s], s=siz)
ax[i].set_ylabel('$s^{\mathrm{Avail[Right]}}_{t}$', rotation=0, fontweight='bold', fontsize=ylabel_size)
ax[i].set_yticks([])
ax[i].set_xticklabels([])
leg_items = [
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i][False],markersize=msi,label=False),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i][True],markersize=msi,label=True)]
ax[i].legend(handles=leg_items, bbox_to_anchor=(1.05, 0.5), loc='center left', borderaxespad=0, labelspacing=0.1)
ax[i].spines['top'].set_visible(False); ax[i].spines['right'].set_visible(False)
i = 7
y_pos = 0
for t, s in zip(range(T), o_mods['oAssigned']):
ax[i].scatter(t, y_pos, color=colors[i][s], s=siz, label=s)
ax[i].set_ylabel('$o^{\mathrm{Assigned}}_{t}$', rotation=0, fontweight='bold', fontsize=ylabel_size)
ax[i].set_yticks([])
leg_items = [
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Start'],markersize=msi,label='Start'),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Left'],markersize=msi,label='Left'),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Right'],markersize=msi,label='Right')]
ax[i].legend(handles=leg_items, bbox_to_anchor=(1.05, 0.5), loc='center left', borderaxespad=0, labelspacing=0.1)
ax[i].spines['top'].set_visible(False); ax[i].spines['right'].set_visible(False)
i = 8
y_pos = 0
for t, s in zip(range(T), o_mods['oRew']['Left']):
ax[i].scatter(t, y_pos, color=colors[i][s], s=siz, label=s)
ax[i].set_ylabel('$o^{\mathrm{Rew[Left]}}_{t}$', rotation=0, fontweight='bold', fontsize=ylabel_size)
ax[i].set_yticks([])
leg_items = [
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Null'],markersize=msi,label='Null'),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Loss'],markersize=msi,label='Loss'),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Reward'],markersize=msi,label='Reward')]
ax[i].legend(handles=leg_items, bbox_to_anchor=(1.05, 0.5), loc='center left', borderaxespad=0, labelspacing=0.1)
ax[i].spines['top'].set_visible(False); ax[i].spines['right'].set_visible(False)
i = 9
y_pos = 0
for t, s in zip(range(T), o_mods['oRew']['Right']):
ax[i].scatter(t, y_pos, color=colors[i][s], s=siz, label=s)
ax[i].set_ylabel('$o^{\mathrm{Rew[Right]}}_{t}$', rotation=0, fontweight='bold', fontsize=ylabel_size)
ax[i].set_yticks([])
leg_items = [
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Null'],markersize=msi,label='Null'),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Loss'],markersize=msi,label='Loss'),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i]['Reward'],markersize=msi,label='Reward')]
ax[i].legend(handles=leg_items, bbox_to_anchor=(1.05, 0.5), loc='center left', borderaxespad=0, labelspacing=0.1)
ax[i].spines['top'].set_visible(False); ax[i].spines['right'].set_visible(False)
i = 10
y_pos = 0
for t, s in zip(range(T), o_mods['oAvail']['Left']):
ax[i].scatter(t, y_pos, color=colors[i][s], s=siz, label=s)
ax[i].set_ylabel('$o^{\mathrm{Avail[Left]}}_{t}$', rotation=0, fontweight='bold', fontsize=ylabel_size)
ax[i].set_yticks([])
leg_items = [
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i][False],markersize=msi,label=False),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i][True],markersize=msi,label=True)]
ax[i].legend(handles=leg_items, bbox_to_anchor=(1.05, 0.5), loc='center left', borderaxespad=0, labelspacing=0.1)
ax[i].spines['top'].set_visible(False); ax[i].spines['right'].set_visible(False)
i = 11
y_pos = 0
for t, s in zip(range(T), o_mods['oAvail']['Right']):
ax[i].scatter(t, y_pos, color=colors[i][s], s=siz, label=s)
ax[i].set_ylabel('$o^{\mathrm{Avail[Right]}}_{t}$', rotation=0, fontweight='bold', fontsize=ylabel_size)
ax[i].set_yticks([])
leg_items = [
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i][False],markersize=msi,label=False),
Line2D([0],[0],marker='o',color='w',markerfacecolor=colors[i][True],markersize=msi,label=True)]
ax[i].legend(handles=leg_items, bbox_to_anchor=(1.05, 0.5), loc='center left', borderaxespad=0, labelspacing=0.1)
ax[i].spines['top'].set_visible(False); ax[i].spines['right'].set_visible(False)
ax[i].xaxis.set_major_locator(MaxNLocator(integer=True))
## ax[i].xaxis.set_major_locator(MaxNLocator(nbins=10, integer=True))
ax[i].set_xlabel('$\mathrm{time,}\ t$', fontweight='bold', fontsize=12)
plt.tight_layout()
plt.subplots_adjust(hspace=0.1) ## Adjust this value as needed
plt.show()
fig, ax = plt.subplots(figsize=(9, 2))
ax.plot(range(len(VFEː)), VFEː, marker='o', color='r', markersize=3)
ax.set_title('Variational free energy $F_t$', fontweight='bold')
ax.set_xlabel('$\\mathrm{time,}\\ t$')
ax.xaxis.set_major_locator(MaxNLocator(integer=True))
ax.spines['top'].set_visible(False); ax.spines['right'].set_visible(False)
plt.show()
The animation below steps through the posterior over policies \(Q(\pi_t)\) at every time step. The most probable policy is highlighted, and the title shows the action taken and the outcome it produced. Use the controls to play, pause or step through the frames. The same animation is saved as QIpiI_animation.gif next to the notebook.
from matplotlib import animation
from IPython.display import HTML, display
QIpiI_arr = np.stack(QIpiIː) ## (T, num_policies)
anim_labels = get_policy_labels(np.asarray(my_agent.policies.policy_arr))
num_pols = QIpiI_arr.shape[1]
x = np.arange(num_pols)
def outcome_at(t):
"""Reward outcome of the action taken at time t (Null for Assign-Start)."""
act = a_facs['aAssign'][t]
if act == 'Assign-Left': return o_mods['oRew']['Left'][t]
if act == 'Assign-Right': return o_mods['oRew']['Right'][t]
return 'Null'
outcome_colors = {'Null': 'black', 'Loss': 'red', 'Reward': 'green'}
fig, ax = plt.subplots(figsize=(18, 5))
ax.grid(zorder=0)
bars = ax.bar(x, QIpiI_arr[0], color='r', zorder=3)
ax.set_ylim(0, 1.0)
ax.set_ylabel(r'$Q(\pi_t)$')
ax.set_xticks(x)
ax.set_xticklabels(anim_labels, rotation=0, ha='center', va='top', fontname='Liberation Mono', fontsize=7)
title = ax.set_title(r'$Q(\pi_t)$ at t = 0 | action: Assign-Right | outcome: Reward', fontweight='bold') ## placeholder so tight_layout reserves room
fig.tight_layout()
def update(t):
q = QIpiI_arr[t]
best = int(np.argmax(q))
for p, bar in enumerate(bars):
bar.set_height(q[p])
bar.set_color('darkred' if p == best else 'r')
out = outcome_at(t)
title.set_text(f"$Q(\\pi_t)$ at t = {t} | action: {a_facs['aAssign'][t]} | outcome: {out}")
title.set_color(outcome_colors[out])
return (*bars, title)
anim = animation.FuncAnimation(fig, update, frames=len(QIpiI_arr), interval=400, blit=False)
anim.save('QIpiI_animation.gif', writer=animation.PillowWriter(fps=3))
plt.close(fig) ## prevent a duplicate static figure
plt.rcParams['animation.embed_limit'] = 50 ## MB
display(HTML(anim.to_jshtml()))Note that \(\pi_t\) is a univariate random variable, even though it takes on a sequence (in this case 2) of vector values. The value sequence evolves from top-to-bottom below each probability. Each vector value has 3 components. The ’’/NULL components are for the uncontrollable states.