gtsam
4.0.0
gtsam
|
Scheduler class Creates one variable for each student, and three variables for each of the student's areas, for a total of 4*nrStudents variables.
The "student" variable will determine when the student takes the qual. The "area" variables determine which faculty are on his/her committee.
Public Member Functions | |
Scheduler (size_t maxNrStudents) | |
Constructor WE need to know the number of students in advance for ordering keys. More... | |
void | addFaculty (const std::string &facultyName) |
size_t | nrFaculty () const |
void | setAvailability (const std::string &available) |
boolean std::string of nrTimeSlots * nrFaculty | |
void | addSlot (const std::string &slotName) |
size_t | nrTimeSlots () const |
const std::string & | slotName (size_t s) const |
void | setSlotsAvailable (const std::vector< double > &slotsAvailable) |
slots available, boolean | |
void | addArea (const std::string &facultyName, const std::string &areaName) |
Scheduler (size_t maxNrStudents, const std::string &filename) | |
Constructor that reads in faculty, slots, availibility. More... | |
const DiscreteKey & | key (size_t s, boost::optional< size_t > area=boost::none) const |
get key for student and area, 0 is time slot itself | |
void | addStudent (const std::string &studentName, const std::string &area1, const std::string &area2, const std::string &area3, const std::string &advisor) |
addStudent has to be called after adding slots and faculty | |
size_t | nrStudents () const |
current number of students | |
const std::string & | studentName (size_t i) const |
const DiscreteKey & | studentKey (size_t i) const |
const std::string & | studentArea (size_t i, size_t area) const |
void | addStudentSpecificConstraints (size_t i, boost::optional< size_t > slot=boost::none) |
Add student-specific constraints to the graph. | |
void | buildGraph (size_t mutexBound=7) |
Main routine that builds factor graph. | |
void | print (const std::string &s="Scheduler") const |
print | |
void | printAssignment (sharedValues assignment) const |
Print readable form of assignment. | |
void | printSpecial (sharedValues assignment) const |
Special print for single-student case. | |
void | accumulateStats (sharedValues assignment, std::vector< size_t > &stats) const |
Accumulate faculty stats. | |
DiscreteBayesNet::shared_ptr | eliminate () const |
Eliminate, return a Bayes net. | |
sharedValues | optimalAssignment () const |
Find the best total assignment - can be expensive. | |
sharedValues | bestSchedule () const |
find the assignment of students to slots with most possible committees | |
sharedValues | bestAssignment (sharedValues bestSchedule) const |
find the corresponding most desirable committee assignment | |
Public Member Functions inherited from gtsam::CSP | |
void | addSingleValue (const DiscreteKey &dkey, size_t value) |
Add a unary constraint, allowing only a single value. | |
void | addAllDiff (const DiscreteKey &key1, const DiscreteKey &key2) |
Add a binary AllDiff constraint. | |
void | addAllDiff (const DiscreteKeys &dkeys) |
Add a general AllDiff constraint. | |
sharedValues | optimalAssignment (OptionalOrdering ordering=boost::none) const |
return product of all factors as a single factor More... | |
void | runArcConsistency (size_t cardinality, size_t nrIterations=10, bool print=false) const |
Public Member Functions inherited from gtsam::DiscreteFactorGraph | |
DiscreteFactorGraph () | |
Default constructor. | |
template<typename ITERATOR > | |
DiscreteFactorGraph (ITERATOR firstFactor, ITERATOR lastFactor) | |
Construct from iterator over factors. | |
template<class CONTAINER > | |
DiscreteFactorGraph (const CONTAINER &factors) | |
Construct from container of factors (shared_ptr or plain objects) | |
template<class DERIVEDFACTOR > | |
DiscreteFactorGraph (const FactorGraph< DERIVEDFACTOR > &graph) | |
Implicit copy/downcast constructor to override explicit template container constructor. | |
template<class SOURCE > | |
void | add (const DiscreteKey &j, SOURCE table) |
template<class SOURCE > | |
void | add (const DiscreteKey &j1, const DiscreteKey &j2, SOURCE table) |
template<class SOURCE > | |
void | add (const DiscreteKeys &keys, SOURCE table) |
add shared discreteFactor immediately from arguments | |
KeySet | keys () const |
Return the set of variables involved in the factors (set union) | |
DecisionTreeFactor | product () const |
return product of all factors as a single factor | |
double | operator() (const DiscreteFactor::Values &values) const |
Evaluates the factor graph given values, returns the joint probability of the factor graph given specific instantiation of values. | |
void | print (const std::string &s="DiscreteFactorGraph", const KeyFormatter &formatter=DefaultKeyFormatter) const |
print | |
DiscreteFactor::sharedValues | optimize () const |
Solve the factor graph by performing variable elimination in COLAMD order using the dense elimination function specified in function , followed by back-substitution resulting from elimination. More... | |
bool | equals (const This &fg, double tol=1e-9) const |
Public Member Functions inherited from gtsam::FactorGraph< DiscreteFactor > | |
void | reserve (size_t size) |
Reserve space for the specified number of factors if you know in advance how many there will be (works like FastVector::reserve). | |
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value >::type | push_back (boost::shared_ptr< DERIVEDFACTOR > factor) |
Add a factor directly using a shared_ptr. | |
void | push_back (const sharedFactor &factor) |
Add a factor directly using a shared_ptr. | |
std::enable_if< std::is_base_of< FactorType, typename ITERATOR::value_type::element_type >::value >::type | push_back (ITERATOR firstFactor, ITERATOR lastFactor) |
push back many factors with an iterator over shared_ptr (factors are not copied) | |
std::enable_if< std::is_base_of< FactorType, typename CONTAINER::value_type::element_type >::value >::type | push_back (const CONTAINER &container) |
push back many factors as shared_ptr's in a container (factors are not copied) | |
std::enable_if< std::is_base_of< This, typename CLIQUE::FactorGraphType >::value >::type | push_back (const BayesTree< CLIQUE > &bayesTree) |
push back a BayesTree as a collection of factors. More... | |
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value >::type | push_back (const DERIVEDFACTOR &factor) |
Add a factor by value, will be copy-constructed (use push_back with a shared_ptr to avoid the copy). More... | |
std::enable_if< std::is_base_of< FactorType, typename ITERATOR::value_type >::value >::type | push_back (ITERATOR firstFactor, ITERATOR lastFactor) |
push back many factors with an iterator over plain factors (factors are copied) | |
std::enable_if< std::is_base_of< FactorType, typename CONTAINER::value_type >::value >::type | push_back (const CONTAINER &container) |
push back many factors as non-pointer objects in a container (factors are copied) | |
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value >::type | emplace_shared (Args &&... args) |
Emplace a factor. | |
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value, boost::assign::list_inserter< RefCallPushBack< This > > >::type | operator+= (boost::shared_ptr< DERIVEDFACTOR > factor) |
Add a factor directly using a shared_ptr. | |
boost::assign::list_inserter< CRefCallPushBack< This > > | operator+= (const sharedFactor &factor) |
Add a factor directly using a shared_ptr. | |
boost::assign::list_inserter< CRefCallPushBack< This > > | operator+= (const FACTOR_OR_CONTAINER &factorOrContainer) |
Add a factor or container of factors, including STL collections, BayesTrees, etc. More... | |
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value >::type | add (boost::shared_ptr< DERIVEDFACTOR > factor) |
Add a factor directly using a shared_ptr. | |
void | add (const sharedFactor &factor) |
Add a factor directly using a shared_ptr. | |
void | add (const FACTOR_OR_CONTAINER &factorOrContainer) |
Add a factor or container of factors, including STL collections, BayesTrees, etc. More... | |
void | print (const std::string &s="FactorGraph", const KeyFormatter &formatter=DefaultKeyFormatter) const |
print out graph | |
bool | equals (const This &fg, double tol=1e-9) const |
Check equality. More... | |
size_t | size () const |
return the number of factors (including any null factors set by remove() ). More... | |
bool | empty () const |
Check if the graph is empty (null factors set by remove() will cause this to return false). More... | |
const sharedFactor | at (size_t i) const |
Get a specific factor by index (this checks array bounds and may throw an exception, as opposed to operator[] which does not). | |
sharedFactor & | at (size_t i) |
Get a specific factor by index (this checks array bounds and may throw an exception, as opposed to operator[] which does not). | |
const sharedFactor | operator[] (size_t i) const |
Get a specific factor by index (this does not check array bounds, as opposed to at() which does). | |
sharedFactor & | operator[] (size_t i) |
Get a specific factor by index (this does not check array bounds, as opposed to at() which does). | |
const_iterator | begin () const |
Iterator to beginning of factors. More... | |
const_iterator | end () const |
Iterator to end of factors. More... | |
sharedFactor | front () const |
Get the first factor. | |
sharedFactor | back () const |
Get the last factor. | |
iterator | begin () |
non-const STL-style begin() | |
iterator | end () |
non-const STL-style end() | |
void | resize (size_t size) |
Directly resize the number of factors in the graph. More... | |
void | remove (size_t i) |
delete factor without re-arranging indexes by inserting a NULL pointer | |
void | replace (size_t index, sharedFactor factor) |
replace a factor by index | |
iterator | erase (iterator item) |
Erase factor and rearrange other factors to take up the empty space. | |
iterator | erase (iterator first, iterator last) |
Erase factors and rearrange other factors to take up the empty space. | |
size_t | nrFactors () const |
return the number of non-null factors | |
KeySet | keys () const |
Potentially slow function to return all keys involved, sorted, as a set. | |
KeyVector | keyVector () const |
Potentially slow function to return all keys involved, sorted, as a vector. | |
bool | exists (size_t idx) const |
MATLAB interface utility: Checks whether a factor index idx exists in the graph and is a live pointer. | |
Public Member Functions inherited from gtsam::EliminateableFactorGraph< DiscreteFactorGraph > | |
boost::shared_ptr< BayesNetType > | eliminateSequential (OptionalOrdering ordering=boost::none, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none, OptionalOrderingType orderingType=boost::none) const |
Do sequential elimination of all variables to produce a Bayes net. More... | |
boost::shared_ptr< BayesTreeType > | eliminateMultifrontal (OptionalOrdering ordering=boost::none, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none, OptionalOrderingType orderingType=boost::none) const |
Do multifrontal elimination of all variables to produce a Bayes tree. More... | |
std::pair< boost::shared_ptr< BayesNetType >, boost::shared_ptr< FactorGraphType > > | eliminatePartialSequential (const Ordering &ordering, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Do sequential elimination of some variables, in ordering provided, to produce a Bayes net and a remaining factor graph. More... | |
std::pair< boost::shared_ptr< BayesNetType >, boost::shared_ptr< FactorGraphType > > | eliminatePartialSequential (const KeyVector &variables, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Do sequential elimination of the given variables in an ordering computed by COLAMD to produce a Bayes net and a remaining factor graph. More... | |
std::pair< boost::shared_ptr< BayesTreeType >, boost::shared_ptr< FactorGraphType > > | eliminatePartialMultifrontal (const Ordering &ordering, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Do multifrontal elimination of some variables, in ordering provided, to produce a Bayes tree and a remaining factor graph. More... | |
std::pair< boost::shared_ptr< BayesTreeType >, boost::shared_ptr< FactorGraphType > > | eliminatePartialMultifrontal (const KeyVector &variables, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Do multifrontal elimination of the given variables in an ordering computed by COLAMD to produce a Bayes net and a remaining factor graph. More... | |
boost::shared_ptr< BayesNetType > | marginalMultifrontalBayesNet (boost::variant< const Ordering &, const KeyVector & > variables, OptionalOrdering marginalizedVariableOrdering=boost::none, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Compute the marginal of the requested variables and return the result as a Bayes net. More... | |
boost::shared_ptr< BayesTreeType > | marginalMultifrontalBayesTree (boost::variant< const Ordering &, const KeyVector & > variables, OptionalOrdering marginalizedVariableOrdering=boost::none, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Compute the marginal of the requested variables and return the result as a Bayes tree. More... | |
boost::shared_ptr< FactorGraphType > | marginal (const KeyVector &variables, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Compute the marginal factor graph of the requested variables. More... | |
Additional Inherited Members | |
Public Types inherited from gtsam::CSP | |
typedef KeyVector | Indices |
A map from keys to values. | |
typedef Assignment< Key > | Values |
typedef boost::shared_ptr< Values > | sharedValues |
Public Types inherited from gtsam::DiscreteFactorGraph | |
typedef DiscreteFactorGraph | This |
Typedef to this class. | |
typedef FactorGraph< DiscreteFactor > | Base |
Typedef to base factor graph type. | |
typedef EliminateableFactorGraph< This > | BaseEliminateable |
Typedef to base elimination class. | |
typedef boost::shared_ptr< This > | shared_ptr |
shared_ptr to this class | |
typedef KeyVector | Indices |
A map from keys to values. | |
typedef Assignment< Key > | Values |
typedef boost::shared_ptr< Values > | sharedValues |
Public Types inherited from gtsam::FactorGraph< DiscreteFactor > | |
typedef DiscreteFactor | FactorType |
factor type | |
typedef boost::shared_ptr< DiscreteFactor > | sharedFactor |
Shared pointer to a factor. | |
typedef sharedFactor | value_type |
typedef FastVector< sharedFactor >::iterator | iterator |
typedef FastVector< sharedFactor >::const_iterator | const_iterator |
Public Types inherited from gtsam::EliminateableFactorGraph< DiscreteFactorGraph > | |
typedef EliminationTraits< FactorGraphType > | EliminationTraitsType |
Typedef to the specific EliminationTraits for this graph. | |
typedef EliminationTraitsType::ConditionalType | ConditionalType |
Conditional type stored in the Bayes net produced by elimination. | |
typedef EliminationTraitsType::BayesNetType | BayesNetType |
Bayes net type produced by sequential elimination. | |
typedef EliminationTraitsType::EliminationTreeType | EliminationTreeType |
Elimination tree type that can do sequential elimination of this graph. | |
typedef EliminationTraitsType::BayesTreeType | BayesTreeType |
Bayes tree type produced by multifrontal elimination. | |
typedef EliminationTraitsType::JunctionTreeType | JunctionTreeType |
Junction tree type that can do multifrontal elimination of this graph. | |
typedef std::pair< boost::shared_ptr< ConditionalType >, boost::shared_ptr< _FactorType > > | EliminationResult |
The pair of conditional and remaining factor produced by a single dense elimination step on a subgraph. More... | |
typedef boost::function< EliminationResult(const FactorGraphType &, const Ordering &)> | Eliminate |
The function type that does a single dense elimination step on a subgraph. | |
typedef boost::optional< const Ordering & > | OptionalOrdering |
Typedef for an optional ordering as an argument to elimination functions. | |
typedef boost::optional< const VariableIndex & > | OptionalVariableIndex |
Typedef for an optional variable index as an argument to elimination functions. | |
typedef boost::optional< Ordering::OrderingType > | OptionalOrderingType |
Typedef for an optional ordering type. | |
Protected Member Functions inherited from gtsam::FactorGraph< DiscreteFactor > | |
FactorGraph () | |
Default constructor. | |
FactorGraph (ITERATOR firstFactor, ITERATOR lastFactor) | |
Constructor from iterator over factors (shared_ptr or plain objects) | |
FactorGraph (const CONTAINER &factors) | |
Construct from container of factors (shared_ptr or plain objects) | |
Protected Attributes inherited from gtsam::FactorGraph< DiscreteFactor > | |
FastVector< sharedFactor > | factors_ |
concept check, makes sure FACTOR defines print and equals More... | |
|
inline |
Constructor WE need to know the number of students in advance for ordering keys.
then add faculty, slots, areas, availability, students, in that order
gtsam::Scheduler::Scheduler | ( | size_t | maxNrStudents, |
const std::string & | filename | ||
) |
Constructor that reads in faculty, slots, availibility.
Still need to add areas and students after this