/** * Constructs a synthetic oracle for data generated from a Bayesian network. * @param vector_var_order vector variables for dataset features * @param class_variable finite variable for class * @param var_type_order order of variable types */ explicit syn_oracle_bayes_net(const bayesian_network<Factor>& bn, parameters params = parameters()) : base(bn.arguments(), vector_var_vector(), std::vector<variable::variable_typenames> (bn.arguments().size(), variable::FINITE_VARIABLE)), params(params), bn(bn), current_rec(finite_numbering_ptr_, vector_numbering_ptr_, dvector) { rng.seed(static_cast<unsigned>(params.random_seed)); }
//! Throws an assertion violation if the DBN is not valid void check_valid() const { // The arguments at the current and next time step domain_type vars_t = arguments(processes(), current_step); domain_type vars_t1 = arguments(processes(), next_step); // Check the prior and the transition model assert(prior.arguments() == vars_t); assert(is_superset(transition.arguments(),vars_t1)); assert(is_subset(transition.arguments(), set_union(vars_t, vars_t1))); }