Go to the documentation of this file.
10 #define ADD_NO_PRUNING
18 using namespace gtsam;
30 s.addStudent(
"Pan, Yunpeng",
"Controls",
"Perception",
"Mechanics",
"Eric Johnson");
33 s.addStudent(
"Sawhney, Rahul",
"Controls",
"AI",
"Perception",
"Henrik Christensen");
36 s.addStudent(
"Akgun, Baris",
"Controls",
"AI",
"HRI",
"Andrea Thomaz");
39 s.addStudent(
"Jiang, Shu",
"Controls",
"AI",
"Perception",
"Ron Arkin");
42 s.addStudent(
"Grice, Phillip",
"Controls",
"Perception",
"HRI",
"Charlie Kemp");
45 s.addStudent(
"Huaman, Ana",
"Controls",
"AI",
"Perception",
"Mike Stilman");
48 s.addStudent(
"Levihn, Martin",
"AI",
"Autonomy",
"Perception",
"Mike Stilman");
51 s.addStudent(
"Nieto, Carlos",
"AI",
"Autonomy",
"Perception",
"Henrik Christensen");
54 s.addStudent(
"Robinette, Paul",
"Controls",
"AI",
"HRI",
"Ayanna Howard");
61 string path(
"../../../gtsam_unstable/discrete/examples/");
64 s.addArea(
"Harvey Lipkin",
"Mechanics");
65 s.addArea(
"Jun Ueda",
"Mechanics");
67 s.addArea(
"Patricio Vela",
"Controls");
68 s.addArea(
"Magnus Egerstedt",
"Controls");
69 s.addArea(
"Jun Ueda",
"Controls");
70 s.addArea(
"Panos Tsiotras",
"Controls");
71 s.addArea(
"Fumin Zhang",
"Controls");
73 s.addArea(
"Henrik Christensen",
"Perception");
74 s.addArea(
"Aaron Bobick",
"Perception");
76 s.addArea(
"Mike Stilman",
"AI");
78 s.addArea(
"Ayanna Howard",
"AI");
79 s.addArea(
"Charles Isbell",
"AI");
80 s.addArea(
"Tucker Balch",
"AI");
82 s.addArea(
"Ayanna Howard",
"Autonomy");
83 s.addArea(
"Charlie Kemp",
"Autonomy");
84 s.addArea(
"Tucker Balch",
"Autonomy");
85 s.addArea(
"Ron Arkin",
"Autonomy");
87 s.addArea(
"Andrea Thomaz",
"HRI");
88 s.addArea(
"Karen Feigh",
"HRI");
89 s.addArea(
"Charlie Kemp",
"HRI");
92 for (
size_t i = 0;
i < nrStudents;
i++)
112 *std::dynamic_pointer_cast<DecisionTreeFactor>(scheduler.
product());
118 SETDEBUG(
"DiscreteConditional::DiscreteConditional",
true);
126 for (
size_t i=0;
i<100;
i++) {
127 auto assignment = chordal->sample();
134 if (nz >= 13 &&
min >=1 &&
max <= 4) {
135 cout <<
"======================================================\n";
155 SETDEBUG(
"DiscreteConditional::COUNT",
true);
160 vector<double> slotsAvailable(
largeExample(0).nrTimeSlots(), 1.0);
185 size_t bestSlot = root->argmax();
190 values[dkey.first] = bestSlot;
191 size_t count = (*root)(
values);
194 slotsAvailable[bestSlot] = 0.0;
196 scheduler.
slotName(bestSlot) <<
" (" << bestSlot
197 <<
"), count = " << count << endl;
205 size_t slot, vector<Scheduler>& schedulers) {
208 SETDEBUG(
"Scheduler::buildGraph",
false);
211 schedulers.push_back(scheduler);
217 vector<Scheduler> schedulers;
218 vector<DiscreteBayesNet::shared_ptr> samplers(
NRSTUDENTS);
221 vector<size_t> slots{3, 20, 2, 6, 5, 11, 1, 4};
226 for (
size_t n = 0;
n < 500;
n++) {
227 vector<size_t>
stats(19, 0);
228 vector<DiscreteValues>
samples;
230 samples.push_back(samplers[
i]->sample());
236 if (nz >= 15 &&
max <= 2) {
237 cout <<
"Sampled schedule " << (
n + 1) <<
", min = " <<
min
238 <<
", nz = " << nz <<
", max = " <<
max << endl;
240 cout << schedulers[
i].studentName(0) <<
" : " << schedulers[
i].slotName(
const std::string & slotName(size_t s) const
#define tictoc_finishedIteration()
void accumulateStats(const DiscreteValues &assignment, std::vector< size_t > &stats) const
DiscreteBayesNet::shared_ptr createSampler(size_t i, size_t slot, vector< Scheduler > &schedulers)
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy y set format x g set format y g set format x2 g set format y2 g set format z g set angles radians set nogrid set key title set key left top Right noreverse box linetype linewidth samplen spacing width set nolabel set noarrow set nologscale set logscale x set set pointsize set encoding default set nopolar set noparametric set set samples
void addStudentSpecificConstraints(size_t i, std::optional< size_t > slot={})
static constexpr bool debug
DiscreteBayesNet::shared_ptr eliminate() const
std::vector< Vector3 > large
DiscreteFactor::shared_ptr product() const
Scheduler largeExample(size_t nrStudents=NRSTUDENTS)
void printAssignment(const DiscreteValues &assignment) const
std::shared_ptr< This > shared_ptr
shared_ptr to this class
void addStudent(Scheduler &s, size_t i)
std::pair< Key, size_t > DiscreteKey
size_t nrStudents() const
current number of students
void setSlotsAvailable(const std::vector< double > &slotsAvailable)
std::shared_ptr< This > shared_ptr
void product(const MatrixType &m)
void print(const std::string &s="Scheduler", const KeyFormatter &formatter=DefaultKeyFormatter) const override
const std::string & studentName(size_t i) const
DiscreteValues optimize(OptionalOrderingType orderingType={}) const
Find the maximum probable explanation (MPE) by doing max-product.
void buildGraph(size_t mutexBound=7)
void solveStaged(size_t addMutex=2)
const DiscreteKey & studentKey(size_t i) const
gtsam
Author(s):
autogenerated on Fri Mar 28 2025 03:03:21