import numpy as np
from cbp.node import FactorNode, VarNode
from .hmm_builder import HMMBuilder
from .potential_utils import identity_potential
[docs]class HMMZeroBuilder(HMMBuilder):
def __init__(self, length, d, policy, rand_seed=1):
super().__init__(length, d, policy, rand_seed=rand_seed)
[docs] def add_factor(self, name_list, is_conv=False):
factor_potential = identity_potential(
self.node_dim, self.node_dim, self.rng)
factornode = FactorNode(name_list, factor_potential)
self.graph.add_factornode(factornode)
return factornode
[docs] def add_constrained_node(self, probability=None):
probability = np.zeros(self.node_dim)
probability[0] = 1
probability[-1] = 1
varnode = VarNode(
self.node_dim,
constrained_marginal=probability /
np.sum(probability))
self.graph.add_varnode(varnode)
return varnode