12 #ifndef __CODAC_CONTRACTORNETWORK_H__ 13 #define __CODAC_CONTRACTORNETWORK_H__ 16 #include <initializer_list> 17 #include <unordered_map> 38 class ContractorHashcode;
84 bool emptiness()
const;
101 Interval& create_interm_var(
const Interval& i);
102 Interval& create_dom(
const Interval& i);
115 IntervalVector& create_interm_var(
const IntervalVector& iv);
116 IntervalVector& create_dom(
const IntervalVector& iv);
129 Tube& create_interm_var(
const Tube& t);
157 IntervalVector& subvector(Vector& v,
int start_index,
int end_index);
167 IntervalVector& subvector(IntervalVector& iv,
int start_index,
int end_index);
188 void add(Ctc& static_ctc,
const std::vector<Domain>& v_domains);
200 void add(
DynCtc& dyn_ctc,
const std::vector<Domain>& v_domains);
218 void add_data(
Tube& x,
double t,
const Interval& y);
233 void add_data(
TubeVector& x,
double t,
const IntervalVector& y);
247 double contract(
bool verbose =
false);
258 double contract(
const std::unordered_map<Domain,Domain>& var_dom,
bool verbose =
false);
260 double contract_ordered_mode(
bool verbose =
false);
274 double contract_during(
double dt,
bool verbose =
false);
290 void set_fixedpoint_ratio(
float r);
298 void trigger_all_contractors();
303 void reset_interm_vars();
312 int nb_ctc_in_stack()
const;
314 int iteration_nb()
const;
327 void set_name(Domain dom,
const std::string& name);
335 void set_name(Ctc& ctc,
const std::string& name);
343 void set_name(
DynCtc& ctc,
const std::string& name);
358 int print_dot_graph(
const std::string& cn_name =
"cn",
const std::string& layer_model =
"fdp")
const;
383 Domain* add_dom(
const Domain& ad);
395 Contractor* add_ctc(
const Contractor& ac);
403 void add_ctc_to_queue(Contractor *ac, std::deque<Contractor*>& ctc_deque);
405 void reset_value(Domain *dom);
413 void trigger_ctc_related_to_dom(Domain *dom, Contractor *ctc_to_avoid =
nullptr);
415 void replace_var_by_dom(Domain var, Domain dom);
423 int m_iteration_nb = 0;
424 float m_fixedpoint_ratio = 0.0001;
425 double m_contraction_duration_max = std::numeric_limits<double>::infinity();
428 std::list<std::pair<Domain*,Domain*> > m_domains_related_to_ctcderiv;
431 friend class Contractor;
FixPoint of a separator The fixpoint of a separator is computed by calling the "::"separate function ...
Definition: codac_capd_helpers.h:9
Contractor interface.
Definition: codac_DynCtc.h:60
Definition: codac_Contractor.h:22
Graph of contractors and domains that model a problem in the constraint programming framework...
Definition: codac_ContractorNetwork.h:48
std::map< DomainHashcode, Domain * > m_map_domains
pointers to the abstract Domain objects the graph is made of
Definition: codac_ContractorNetwork.h:419
std::map< ContractorHashcode, Contractor * > m_map_ctc
pointers to the abstract Contractor objects the graph is made of
Definition: codac_ContractorNetwork.h:420
n-dimensional tube , defined as an interval of n-dimensional trajectories
Definition: codac_TubeVector.h:38
One dimensional tube , defined as an interval of scalar trajectories.
Definition: codac_Tube.h:47
that contracts a tube with respect to its derivative tube according to the constraint ...
Definition: codac_CtcDeriv.h:29
std::deque< Contractor * > m_deque
queue of active contractors
Definition: codac_ContractorNetwork.h:421