diff options
Diffstat (limited to 'geom_matching/wasserstein/src')
-rw-r--r-- | geom_matching/wasserstein/src/auction_runner_gs.cpp | 3 | ||||
-rw-r--r-- | geom_matching/wasserstein/src/auction_runner_jac.cpp | 3 | ||||
-rw-r--r-- | geom_matching/wasserstein/src/wasserstein.cpp | 6 |
3 files changed, 9 insertions, 3 deletions
diff --git a/geom_matching/wasserstein/src/auction_runner_gs.cpp b/geom_matching/wasserstein/src/auction_runner_gs.cpp index bd25442..5865325 100644 --- a/geom_matching/wasserstein/src/auction_runner_gs.cpp +++ b/geom_matching/wasserstein/src/auction_runner_gs.cpp @@ -122,6 +122,7 @@ void AuctionRunnerGS::flushAssignment(void) void AuctionRunnerGS::runAuction(void) { + relativeError = std::numeric_limits<double>::max(); #ifdef PRINT_DETAILED_TIMING std::chrono::high_resolution_clock hrClock; std::chrono::time_point<std::chrono::high_resolution_clock> startMoment; @@ -169,6 +170,7 @@ void AuctionRunnerGS::runAuction(void) std::cout << "; error bound: " << numerator / denominator << std::endl; #endif #endif + relativeError = numerator / denominator; // if relative error is greater than delta, continue notDone = ( numerator / denominator > delta ); } @@ -243,6 +245,7 @@ double AuctionRunnerGS::getDistanceToQthPowerInternal(void) auto pA = bidders[bIdx]; assert( 0 <= biddersToItems[bIdx] and biddersToItems[bIdx] < static_cast<int>(items.size()) ); auto pB = items[biddersToItems[bIdx]]; + std::cout << "pA = " << pA << ", pB = " << pB << ", pow(distLp(pA, pB, internal_p), wassersteinPower) = " << pow(distLp(pA, pB, internal_p), wassersteinPower) << ", dist = " << distLp(pA, pB, internal_p) << std::endl; result += pow(distLp(pA, pB, internal_p), wassersteinPower); } wassersteinCost = result; diff --git a/geom_matching/wasserstein/src/auction_runner_jac.cpp b/geom_matching/wasserstein/src/auction_runner_jac.cpp index b892643..c807ec9 100644 --- a/geom_matching/wasserstein/src/auction_runner_jac.cpp +++ b/geom_matching/wasserstein/src/auction_runner_jac.cpp @@ -188,7 +188,7 @@ void AuctionRunnerJac::flushAssignment(void) void AuctionRunnerJac::runAuction(void) { - // relative error + relativeError = std::numeric_limits<double>::max(); // choose some initial epsilon oracle->setEpsilon(oracle->maxVal / 4.0); assert( oracle->getEpsilon() > 0 ); @@ -210,6 +210,7 @@ void AuctionRunnerJac::runAuction(void) } else { denominator = pow(denominator, 1.0 / wassersteinPower); double numerator = currentResult - denominator; + relativeError = numerator / denominator; //std::cout << " numerator: " << numerator << " denominator: " << denominator << std::endl; //std::cout << " error bound: " << numerator / denominator << std::endl; // if relative error is greater than delta, continue diff --git a/geom_matching/wasserstein/src/wasserstein.cpp b/geom_matching/wasserstein/src/wasserstein.cpp index fc1b662..2c536ed 100644 --- a/geom_matching/wasserstein/src/wasserstein.cpp +++ b/geom_matching/wasserstein/src/wasserstein.cpp @@ -79,7 +79,8 @@ double wassersteinDistVec(const std::vector<DiagramPoint>& A, #else AuctionRunnerJac auction(A, B, q, delta, _internal_p); #endif - return auction.getWassersteinDistance(); + double result = auction.getWassersteinDistance(); + return result; } double wassersteinCostVec(const std::vector<DiagramPoint>& A, @@ -119,7 +120,8 @@ double wassersteinCostVec(const std::vector<DiagramPoint>& A, #else AuctionRunnerJac auction(A, B, q, delta, _internal_p); #endif - return auction.getWassersteinCost(); + double result = auction.getWassersteinCost(); + return result; } bool readDiagramPointSet(const std::string& fname, std::vector<std::pair<double, double>>& result) |