1#ifndef INFRARED_FEATURE_NETWORK_HPP
2#define INFRARED_FEATURE_NETWORK_HPP
28#include "finite_domain.hpp"
49 template<
class FunValue>
61 r_( rand()/(RAND_MAX+1.0) * value) {
99 template<
class FunValue>
114 template<
class FunValue>
136 return std::max(x,y);
154 return std::numeric_limits<fun_value_t>::min();
253 domains_.push_back(domain);
254 return domains_.size()-1;
270 if ( x->auto_materialize() ) {
277 auto mx = std::make_shared<MaterializedFunction<bool, vecS>>(x.get(),cn);
279 constraints_.push_back( mx );
281 constraints_.push_back( x );
283 return constraints_.back().get();
299 if ( x->auto_materialize() ) {
301 auto mx = std::make_shared<MaterializedFunction<typename function_t::fun_value_t, vecS>>(x.get(),*
this);
302 functions_.push_back( mx );
304 functions_.push_back( x );
306 return functions_.back().get();
326 std::vector<std::shared_ptr<function_t>> functions_;
327 std::vector<std::shared_ptr<constraint_t>> constraints_;
Definition feature_network.hpp:122
auto select(const fun_value_t &x)
Definition feature_network.hpp:126
selector(const fun_value_t &value)
Definition feature_network.hpp:124
Evaluation Strategy for Optimization (max/+); defining the arctic semiring.
Definition feature_network.hpp:115
static fun_value_t plus(const fun_value_t &x, const fun_value_t &y)
Definition feature_network.hpp:135
static fun_value_t one()
Definition feature_network.hpp:147
static fun_value_t zero()
Definition feature_network.hpp:153
static fun_value_t mul(const fun_value_t &x, const fun_value_t &y)
Definition feature_network.hpp:141
FunValue fun_value_t
Definition feature_network.hpp:117
A (partial) assignment of variables to values.
Definition assignment.hpp:76
Cluster (or bag) in the cluster tree.
Definition cluster.hpp:40
the feature network
Definition feature_network.hpp:208
FunValue fun_value_t
Definition feature_network.hpp:211
auto add_function(const std::shared_ptr< function_t > &x)
add function
Definition feature_network.hpp:298
int var_idx_t
Definition feature_network.hpp:209
~FeatureNetwork()
Definition feature_network.hpp:243
int num_vars() const
Number of variables.
Definition feature_network.hpp:313
EvaluationPolicy evaluation_policy_t
Definition feature_network.hpp:217
FeatureNetwork(const FiniteDomainVector &domains)
Construct with domains.
Definition feature_network.hpp:231
auto add_constraint(const std::shared_ptr< constraint_t > &x)
add constraint
Definition feature_network.hpp:269
FeatureNetwork(int num_vars, FiniteDomain domain)
Construct with domains of equal size.
Definition feature_network.hpp:238
int var_value_t
Definition feature_network.hpp:209
const auto & domains() const
Get vector of domains (read only)
Definition feature_network.hpp:319
FeatureNetwork()
Construct empty.
Definition feature_network.hpp:225
var_idx_t add_variable(FiniteDomain domain)
add variable with domain size
Definition feature_network.hpp:252
Definition finite_domain.hpp:29
Functions evaluate assignments of a subset of variables.
Definition functions.hpp:67
Definition feature_network.hpp:57
auto select(const fun_value_t &x)
Definition feature_network.hpp:65
selector(const fun_value_t &value)
Definition feature_network.hpp:59
The evaluation policy to calculate partition functions.
Definition feature_network.hpp:50
static fun_value_t one()
Definition feature_network.hpp:87
static fun_value_t zero()
Definition feature_network.hpp:93
FunValue fun_value_t
Definition feature_network.hpp:52
static fun_value_t plus(const fun_value_t &x, const fun_value_t &y)
Definition feature_network.hpp:75
static fun_value_t mul(const fun_value_t &x, const fun_value_t &y)
Definition feature_network.hpp:81
static fun_value_t plus(const fun_value_t &x, const fun_value_t &y)
Definition feature_network.hpp:172
bool fun_value_t
Definition feature_network.hpp:166
static fun_value_t mul(const fun_value_t &x, const fun_value_t &y)
Definition feature_network.hpp:178
static fun_value_t zero()
Definition feature_network.hpp:190
static fun_value_t one()
Definition feature_network.hpp:184
define PFEvaluationPolicy as standard
Definition feature_network.hpp:100
Definition assignment.hpp:29
std::vector< FiniteDomain > FiniteDomainVector
Definition finite_domain.hpp:148
Function< bool > Constraint
A constraint is simply a boolean-valued function.
Definition functions.hpp:406