gtsam_unstable/discrete
							parent
							
								
									51e60cc8e0
								
							
						
					
					
						commit
						0ae90f6262
					
				|  | @ -10,6 +10,7 @@ | ||||||
| #include <gtsam_unstable/discrete/Domain.h> | #include <gtsam_unstable/discrete/Domain.h> | ||||||
| 
 | 
 | ||||||
| #include <boost/make_shared.hpp> | #include <boost/make_shared.hpp> | ||||||
|  | #include <optional> | ||||||
| 
 | 
 | ||||||
| namespace gtsam { | namespace gtsam { | ||||||
| 
 | 
 | ||||||
|  | @ -64,7 +65,7 @@ bool AllDiff::ensureArcConsistency(Key j, Domains* domains) const { | ||||||
|   // a value in domains->at(j) that does not occur in any other connected domain.
 |   // a value in domains->at(j) that does not occur in any other connected domain.
 | ||||||
|   // If found, we make this a singleton...
 |   // If found, we make this a singleton...
 | ||||||
|   // TODO: make a new constraint where this really is true
 |   // TODO: make a new constraint where this really is true
 | ||||||
|   boost::optional<Domain> maybeChanged = Dj.checkAllDiff(keys_, *domains); |   std::optional<Domain> maybeChanged = Dj.checkAllDiff(keys_, *domains); | ||||||
|   if (maybeChanged) { |   if (maybeChanged) { | ||||||
|     Dj = *maybeChanged; |     Dj = *maybeChanged; | ||||||
|     return true; |     return true; | ||||||
|  |  | ||||||
|  | @ -61,7 +61,7 @@ bool Domain::ensureArcConsistency(Key j, Domains* domains) const { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* ************************************************************************* */ | /* ************************************************************************* */ | ||||||
| boost::optional<Domain> Domain::checkAllDiff(const KeyVector keys, | std::optional<Domain> Domain::checkAllDiff(const KeyVector keys, | ||||||
|                                              const Domains& domains) const { |                                              const Domains& domains) const { | ||||||
|   Key j = key(); |   Key j = key(); | ||||||
|   // for all values in this domain
 |   // for all values in this domain
 | ||||||
|  | @ -74,7 +74,7 @@ boost::optional<Domain> Domain::checkAllDiff(const KeyVector keys, | ||||||
|     return Domain(this->discreteKey(), value); |     return Domain(this->discreteKey(), value); | ||||||
|   found:; |   found:; | ||||||
|   } |   } | ||||||
|   return boost::none;  // we did not change it
 |   return {};  // we did not change it
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* ************************************************************************* */ | /* ************************************************************************* */ | ||||||
|  |  | ||||||
|  | @ -9,6 +9,7 @@ | ||||||
| 
 | 
 | ||||||
| #include <gtsam/discrete/DiscreteKey.h> | #include <gtsam/discrete/DiscreteKey.h> | ||||||
| #include <gtsam_unstable/discrete/Constraint.h> | #include <gtsam_unstable/discrete/Constraint.h> | ||||||
|  | #include <optional> | ||||||
| 
 | 
 | ||||||
| namespace gtsam { | namespace gtsam { | ||||||
| 
 | 
 | ||||||
|  | @ -100,7 +101,7 @@ class GTSAM_UNSTABLE_EXPORT Domain : public Constraint { | ||||||
|    * @param keys connected domains through alldiff |    * @param keys connected domains through alldiff | ||||||
|    * @param keys other domains |    * @param keys other domains | ||||||
|    */ |    */ | ||||||
|   boost::optional<Domain> checkAllDiff(const KeyVector keys, |   std::optional<Domain> checkAllDiff(const KeyVector keys, | ||||||
|                                        const Domains& domains) const; |                                        const Domains& domains) const; | ||||||
| 
 | 
 | ||||||
|   /// Partially apply known values
 |   /// Partially apply known values
 | ||||||
|  |  | ||||||
|  | @ -79,7 +79,7 @@ void Scheduler::addStudent(const string& studentName, const string& area1, | ||||||
| 
 | 
 | ||||||
| /** get key for student and area, 0 is time slot itself */ | /** get key for student and area, 0 is time slot itself */ | ||||||
| const DiscreteKey& Scheduler::key(size_t s, | const DiscreteKey& Scheduler::key(size_t s, | ||||||
|                                   boost::optional<size_t> area) const { |                                   std::optional<size_t> area) const { | ||||||
|   return area ? students_[s].keys_[*area] : students_[s].key_; |   return area ? students_[s].keys_[*area] : students_[s].key_; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -100,7 +100,7 @@ const string& Scheduler::studentArea(size_t i, size_t area) const { | ||||||
| 
 | 
 | ||||||
| /** Add student-specific constraints to the graph */ | /** Add student-specific constraints to the graph */ | ||||||
| void Scheduler::addStudentSpecificConstraints(size_t i, | void Scheduler::addStudentSpecificConstraints(size_t i, | ||||||
|                                               boost::optional<size_t> slot) { |                                               std::optional<size_t> slot) { | ||||||
|   bool debug = ISDEBUG("Scheduler::buildGraph"); |   bool debug = ISDEBUG("Scheduler::buildGraph"); | ||||||
| 
 | 
 | ||||||
|   assert(i < nrStudents()); |   assert(i < nrStudents()); | ||||||
|  |  | ||||||
|  | @ -108,7 +108,7 @@ class GTSAM_UNSTABLE_EXPORT Scheduler : public CSP { | ||||||
| 
 | 
 | ||||||
|   /** get key for student and area, 0 is time slot itself */ |   /** get key for student and area, 0 is time slot itself */ | ||||||
|   const DiscreteKey& key(size_t s, |   const DiscreteKey& key(size_t s, | ||||||
|                          boost::optional<size_t> area = boost::none) const; |                          std::optional<size_t> area = {}) const; | ||||||
| 
 | 
 | ||||||
|   /** addStudent has to be called after adding slots and faculty */ |   /** addStudent has to be called after adding slots and faculty */ | ||||||
|   void addStudent(const std::string& studentName, const std::string& area1, |   void addStudent(const std::string& studentName, const std::string& area1, | ||||||
|  | @ -124,7 +124,7 @@ class GTSAM_UNSTABLE_EXPORT Scheduler : public CSP { | ||||||
| 
 | 
 | ||||||
|   /** Add student-specific constraints to the graph */ |   /** Add student-specific constraints to the graph */ | ||||||
|   void addStudentSpecificConstraints( |   void addStudentSpecificConstraints( | ||||||
|       size_t i, boost::optional<size_t> slot = boost::none); |       size_t i, std::optional<size_t> slot = {}); | ||||||
| 
 | 
 | ||||||
|   /** Main routine that builds factor graph */ |   /** Main routine that builds factor graph */ | ||||||
|   void buildGraph(size_t mutexBound = 7); |   void buildGraph(size_t mutexBound = 7); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue