optimalAssignment -> optimize. Not deprecating as in unstable.
parent
e713897235
commit
b17fcfb64f
|
@ -14,18 +14,6 @@ using namespace std;
|
|||
|
||||
namespace gtsam {
|
||||
|
||||
/// Find the best total assignment - can be expensive
|
||||
DiscreteValues CSP::optimalAssignment() const {
|
||||
DiscreteBayesNet::shared_ptr chordal = this->eliminateSequential();
|
||||
return chordal->optimize();
|
||||
}
|
||||
|
||||
/// Find the best total assignment - can be expensive
|
||||
DiscreteValues CSP::optimalAssignment(const Ordering& ordering) const {
|
||||
DiscreteBayesNet::shared_ptr chordal = this->eliminateSequential(ordering);
|
||||
return chordal->optimize();
|
||||
}
|
||||
|
||||
bool CSP::runArcConsistency(const VariableIndex& index,
|
||||
Domains* domains) const {
|
||||
bool changed = false;
|
||||
|
|
|
@ -43,12 +43,6 @@ class GTSAM_UNSTABLE_EXPORT CSP : public DiscreteFactorGraph {
|
|||
// return result;
|
||||
// }
|
||||
|
||||
/// Find the best total assignment - can be expensive.
|
||||
DiscreteValues optimalAssignment() const;
|
||||
|
||||
/// Find the best total assignment, with given ordering - can be expensive.
|
||||
DiscreteValues optimalAssignment(const Ordering& ordering) const;
|
||||
|
||||
// /*
|
||||
// * Perform loopy belief propagation
|
||||
// * True belief propagation would check for each value in domain
|
||||
|
|
|
@ -255,23 +255,6 @@ DiscreteBayesNet::shared_ptr Scheduler::eliminate() const {
|
|||
return chordal;
|
||||
}
|
||||
|
||||
/** Find the best total assignment - can be expensive */
|
||||
DiscreteValues Scheduler::optimalAssignment() const {
|
||||
DiscreteBayesNet::shared_ptr chordal = eliminate();
|
||||
|
||||
if (ISDEBUG("Scheduler::optimalAssignment")) {
|
||||
DiscreteBayesNet::const_iterator it = chordal->end() - 1;
|
||||
const Student& student = students_.front();
|
||||
cout << endl;
|
||||
(*it)->print(student.name_);
|
||||
}
|
||||
|
||||
gttic(my_optimize);
|
||||
DiscreteValues mpe = chordal->optimize();
|
||||
gttoc(my_optimize);
|
||||
return mpe;
|
||||
}
|
||||
|
||||
/** find the assignment of students to slots with most possible committees */
|
||||
DiscreteValues Scheduler::bestSchedule() const {
|
||||
DiscreteValues best;
|
||||
|
|
|
@ -147,9 +147,6 @@ class GTSAM_UNSTABLE_EXPORT Scheduler : public CSP {
|
|||
/** Eliminate, return a Bayes net */
|
||||
DiscreteBayesNet::shared_ptr eliminate() const;
|
||||
|
||||
/** Find the best total assignment - can be expensive */
|
||||
DiscreteValues optimalAssignment() const;
|
||||
|
||||
/** find the assignment of students to slots with most possible committees */
|
||||
DiscreteValues bestSchedule() const;
|
||||
|
||||
|
|
|
@ -122,7 +122,7 @@ void runLargeExample() {
|
|||
// SETDEBUG("timing-verbose", true);
|
||||
SETDEBUG("DiscreteConditional::DiscreteConditional", true);
|
||||
gttic(large);
|
||||
auto MPE = scheduler.optimalAssignment();
|
||||
auto MPE = scheduler.optimize();
|
||||
gttoc(large);
|
||||
tictoc_finishedIteration();
|
||||
tictoc_print();
|
||||
|
|
|
@ -143,7 +143,7 @@ void runLargeExample() {
|
|||
}
|
||||
#else
|
||||
gttic(large);
|
||||
auto MPE = scheduler.optimalAssignment();
|
||||
auto MPE = scheduler.optimize();
|
||||
gttoc(large);
|
||||
tictoc_finishedIteration();
|
||||
tictoc_print();
|
||||
|
|
|
@ -167,7 +167,7 @@ void runLargeExample() {
|
|||
}
|
||||
#else
|
||||
gttic(large);
|
||||
auto MPE = scheduler.optimalAssignment();
|
||||
auto MPE = scheduler.optimize();
|
||||
gttoc(large);
|
||||
tictoc_finishedIteration();
|
||||
tictoc_print();
|
||||
|
|
|
@ -132,7 +132,7 @@ TEST(CSP, allInOne) {
|
|||
EXPECT(assert_equal(expectedProduct, product));
|
||||
|
||||
// Solve
|
||||
auto mpe = csp.optimalAssignment();
|
||||
auto mpe = csp.optimize();
|
||||
DiscreteValues expected;
|
||||
insert(expected)(ID.first, 1)(UT.first, 0)(AZ.first, 1);
|
||||
EXPECT(assert_equal(expected, mpe));
|
||||
|
@ -172,22 +172,18 @@ TEST(CSP, WesternUS) {
|
|||
csp.addAllDiff(WY, CO);
|
||||
csp.addAllDiff(CO, NM);
|
||||
|
||||
DiscreteValues mpe;
|
||||
insert(mpe)(0, 2)(1, 3)(2, 2)(3, 1)(4, 1)(5, 3)(6, 3)(7, 2)(8, 0)(9, 1)(10, 0);
|
||||
|
||||
// Create ordering according to example in ND-CSP.lyx
|
||||
Ordering ordering;
|
||||
ordering += Key(0), Key(1), Key(2), Key(3), Key(4), Key(5), Key(6), Key(7),
|
||||
Key(8), Key(9), Key(10);
|
||||
// Solve using that ordering:
|
||||
auto mpe = csp.optimalAssignment(ordering);
|
||||
// GTSAM_PRINT(mpe);
|
||||
DiscreteValues expected;
|
||||
insert(expected)(WA.first, 1)(CA.first, 1)(NV.first, 3)(OR.first, 0)(
|
||||
MT.first, 1)(WY.first, 0)(NM.first, 3)(CO.first, 2)(ID.first, 2)(
|
||||
UT.first, 1)(AZ.first, 0);
|
||||
|
||||
// TODO: Fix me! mpe result seems to be right. (See the printing)
|
||||
// It has the same prob as the expected solution.
|
||||
// Is mpe another solution, or the expected solution is unique???
|
||||
EXPECT(assert_equal(expected, mpe));
|
||||
// Solve using that ordering:
|
||||
auto actualMPE = csp.optimize(ordering);
|
||||
|
||||
EXPECT(assert_equal(mpe, actualMPE));
|
||||
EXPECT_DOUBLES_EQUAL(1, csp(mpe), 1e-9);
|
||||
|
||||
// Write out the dual graph for hmetis
|
||||
|
@ -227,7 +223,7 @@ TEST(CSP, ArcConsistency) {
|
|||
EXPECT_DOUBLES_EQUAL(1, csp(valid), 1e-9);
|
||||
|
||||
// Solve
|
||||
auto mpe = csp.optimalAssignment();
|
||||
auto mpe = csp.optimize();
|
||||
DiscreteValues expected;
|
||||
insert(expected)(ID.first, 1)(UT.first, 0)(AZ.first, 2);
|
||||
EXPECT(assert_equal(expected, mpe));
|
||||
|
|
|
@ -122,7 +122,7 @@ TEST(schedulingExample, test) {
|
|||
|
||||
// Do exact inference
|
||||
gttic(small);
|
||||
auto MPE = s.optimalAssignment();
|
||||
auto MPE = s.optimize();
|
||||
gttoc(small);
|
||||
|
||||
// print MPE, commented out as unit tests don't print
|
||||
|
|
|
@ -100,7 +100,7 @@ class Sudoku : public CSP {
|
|||
|
||||
/// solve and print solution
|
||||
void printSolution() const {
|
||||
auto MPE = optimalAssignment();
|
||||
auto MPE = optimize();
|
||||
printAssignment(MPE);
|
||||
}
|
||||
|
||||
|
@ -126,7 +126,7 @@ TEST(Sudoku, small) {
|
|||
0, 1, 0, 0);
|
||||
|
||||
// optimize and check
|
||||
auto solution = csp.optimalAssignment();
|
||||
auto solution = csp.optimize();
|
||||
DiscreteValues expected;
|
||||
insert(expected)(csp.key(0, 0), 0)(csp.key(0, 1), 1)(csp.key(0, 2), 2)(
|
||||
csp.key(0, 3), 3)(csp.key(1, 0), 2)(csp.key(1, 1), 3)(csp.key(1, 2), 0)(
|
||||
|
@ -148,7 +148,7 @@ TEST(Sudoku, small) {
|
|||
EXPECT_LONGS_EQUAL(16, new_csp.size());
|
||||
|
||||
// Check that solution
|
||||
auto new_solution = new_csp.optimalAssignment();
|
||||
auto new_solution = new_csp.optimize();
|
||||
// csp.printAssignment(new_solution);
|
||||
EXPECT(assert_equal(expected, new_solution));
|
||||
}
|
||||
|
@ -250,7 +250,7 @@ TEST(Sudoku, AJC_3star_Feb8_2012) {
|
|||
EXPECT_LONGS_EQUAL(81, new_csp.size());
|
||||
|
||||
// Check that solution
|
||||
auto solution = new_csp.optimalAssignment();
|
||||
auto solution = new_csp.optimize();
|
||||
// csp.printAssignment(solution);
|
||||
EXPECT_LONGS_EQUAL(6, solution.at(key99));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue