AssignmentSet.cpp
Go to the documentation of this file.
1 /*
2  * AssignmentSet.h
3  *
4  * Created on: Jul 29, 2011
5  * Author: sdries
6  */
7 
10 #include "wire/logic/Assignment.h"
12 
13 #include <iostream>
14 #include <cassert>
15 #include <stdio.h>
16 #include <set>
17 
18 namespace mhf {
19 
21  hyp_(hyp), assignment_matrix_(assignment_matrix), probability_(hyp_->getProbability()),
22  evidence_assignments_(assignment_matrix_->getNumMeasurements()), n_blocked_(0) {
23 
24  for(unsigned int i = 0; i < evidence_assignments_.size(); ++i) {
25  evidence_assignments_[i] = 0;
27  }
28 
29  assert(probability_ > 0);
30 }
31 
35 }
36 
38 }
39 
40 void AssignmentSet::expand(std::list<AssignmentSet*>& children) const {
41  for(unsigned int i = n_blocked_; i < evidence_assignments_.size(); ++i) {
43  AssignmentSet* child = new AssignmentSet(*this);
44  child->evidence_assignments_[i]++;
45  child->n_blocked_ = i;
48 
49  children.push_back(child);
50  }
51  }
52 }
53 
54 const Assignment& AssignmentSet::getMeasurementAssignment(unsigned int i_ev) const {
56 }
57 
58 void AssignmentSet::getAllAssignments(std::list<const Assignment*>& assignments) const {
59  for(unsigned int i = 0; i < evidence_assignments_.size(); ++i) {
60  assignments.push_back(&getMeasurementAssignment(i));
61  }
62 }
63 
65  return probability_;
66 }
67 
69  return hyp_;
70 }
71 
73  return evidence_assignments_.size();
74 }
75 
76 bool AssignmentSet::isValid() const {
77  return true;
78 
79  /*
80  set<const SemanticObject*> assigned_objects;
81 
82  for(unsigned int i = 0; i < evidence_assignments_.size(); ++i) {
83  const SemanticObject* target = assignment_matrix_->getAssignment(i, evidence_assignments_[i]).getTarget();
84  if (target) {
85  if (assigned_objects.find(target) != assigned_objects.end()) {
86  return false;
87  }
88  assigned_objects.insert(target);
89  }
90  }
91  return true;
92  */
93 }
94 
95 void AssignmentSet::print() const {
96  std::cout << std::endl << "===== P = " << getProbability() << " ====" << std::endl;
97 
98  for(unsigned int i = 0; i < evidence_assignments_.size(); ++i) {
99  for(unsigned int j = 0; j < assignment_matrix_->getNumAssignments(i); ++j) {
100  double prob = assignment_matrix_->getAssignment(i, j).getProbability();
101  if (j == evidence_assignments_[i]) {
102  std::cout << " (" << prob << ")";
103  } else {
104  std::cout << " " << prob << " ";
105  }
106  }
107  printf("\n");
108  }
109 
110  for(unsigned int i = 0; i < evidence_assignments_.size(); ++i) {
111  std::cout << assignment_matrix_->getAssignment(i, evidence_assignments_[i]).toString() << std::endl;
112  }
113 
114  isValid();
115 
116  printf("\n");
117 }
118 
119 }
120 
void print() const
void expand(std::list< AssignmentSet * > &children) const
std::vector< unsigned int > evidence_assignments_
Definition: AssignmentSet.h:64
bool isValid() const
double getProbability() const
unsigned int getNumAssignments(unsigned int i_ev)
Hypothesis * getHypothesis() const
void getAllAssignments(std::list< const Assignment * > &assignments) const
virtual ~AssignmentSet()
const Assignment & getAssignment(unsigned int i_ev, int i_assignment)
double getProbability() const
Definition: Assignment.cpp:36
Hypothesis * hyp_
Definition: AssignmentSet.h:58
int getNumMeasurements() const
const Assignment & getMeasurementAssignment(unsigned int i_ev) const
std::string toString() const
Definition: Assignment.cpp:64
AssignmentSet(Hypothesis *hyp, AssignmentMatrix *assignment_matrix)
Definition: ClassModel.h:44
AssignmentMatrix * assignment_matrix_
Definition: AssignmentSet.h:60


wire_core
Author(s): Sjoerd van den Dries, Jos Elfring
autogenerated on Fri Apr 16 2021 02:32:27