summaryrefslogtreecommitdiff
path: root/wasserstein/include/auction_runner_fr.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'wasserstein/include/auction_runner_fr.hpp')
-rw-r--r--wasserstein/include/auction_runner_fr.hpp232
1 files changed, 0 insertions, 232 deletions
diff --git a/wasserstein/include/auction_runner_fr.hpp b/wasserstein/include/auction_runner_fr.hpp
index 07c1459..b0b65d0 100644
--- a/wasserstein/include/auction_runner_fr.hpp
+++ b/wasserstein/include/auction_runner_fr.hpp
@@ -127,70 +127,6 @@ AuctionRunnerFR<R, AO>::AuctionRunnerFR(const std::vector<DgmPoint>& A,
#ifdef ORDERED_BY_PERSISTENCE
batch_size = 5000;
#endif
-
- console_logger = spdlog::get("console");
- if (not console_logger) {
- console_logger = spdlog::stdout_logger_st("console");
- }
- console_logger->set_pattern("[%H:%M:%S.%e] %v");
- console_logger->info("Forward-reverse runnder, max_num_phases = {0}, max_bids_per_round = {1}, gamma_threshold = {2}, unassigned_threshold = {3}",
- max_num_phases,
- max_bids_per_round,
- gamma_threshold,
- unassigned_threshold);
-
-
-// check_epsilon_css();
-#ifdef LOG_AUCTION
- parallel_threshold = bidders.size() / 100;
- forward_plot_logger_file_name = log_filename_prefix + "_forward_plot.txt";
- forward_plot_logger = spdlog::get(forward_plot_logger_name);
- if (not forward_plot_logger) {
- forward_plot_logger = spdlog::basic_logger_st(forward_plot_logger_name, forward_plot_logger_file_name);
- }
- forward_plot_logger->info("New forward plot starts here, diagram size = {0}, gamma_threshold = {1}, epsilon_common_ratio = {2}",
- bidders.size(),
- gamma_threshold,
- epsilon_common_ratio);
- forward_plot_logger->set_pattern("%v");
-
- reverse_plot_logger_file_name = log_filename_prefix + "_reverse_plot.txt";
- reverse_plot_logger = spdlog::get(reverse_plot_logger_name);
- if (not reverse_plot_logger) {
- reverse_plot_logger = spdlog::basic_logger_st(reverse_plot_logger_name, reverse_plot_logger_file_name);
- }
- reverse_plot_logger->info("New reverse plot starts here, diagram size = {0}, gamma_threshold = {1}, epsilon_common_ratio = {2}",
- bidders.size(),
- gamma_threshold,
- epsilon_common_ratio);
- reverse_plot_logger->set_pattern("%v");
-
-
-
- forward_price_stat_logger_file_name = log_filename_prefix + "_forward_price_change_stat";
- forward_price_stat_logger = spdlog::get(forward_price_stat_logger_name);
- if (not forward_price_stat_logger) {
- forward_price_stat_logger = spdlog::basic_logger_st(forward_price_stat_logger_name,
- forward_price_stat_logger_file_name);
- }
- forward_price_stat_logger->info("New forward price statistics starts here, diagram size = {0}, gamma_threshold = {1}, epsilon_common_ratio = {2}",
- bidders.size(),
- gamma_threshold,
- epsilon_common_ratio);
- forward_price_stat_logger->set_pattern("%v");
-
- reverse_price_stat_logger_file_name = log_filename_prefix + "_reverse_price_change_stat";
- reverse_price_stat_logger = spdlog::get(reverse_price_stat_logger_name);
- if (not reverse_price_stat_logger) {
- reverse_price_stat_logger = spdlog::basic_logger_st(reverse_price_stat_logger_name,
- reverse_price_stat_logger_file_name);
- }
- reverse_price_stat_logger->info("New reverse price statistics starts here, diagram size = {0}, gamma_threshold = {1}, epsilon_common_ratio = {2}",
- bidders.size(),
- gamma_threshold,
- epsilon_common_ratio);
- reverse_price_stat_logger->set_pattern("%v");
-#endif
}
template<class R, class AO>
@@ -270,7 +206,6 @@ void AuctionRunnerFR<R, AO>::reset_round_stat()
template<class R, class AO>
void AuctionRunnerFR<R, AO>::assign_forward(IdxType item_idx, IdxType bidder_idx)
{
- console_logger->debug("Enter assign_forward, item_idx = {0}, bidder_idx = {1}", item_idx, bidder_idx);
sanity_check();
// only unassigned bidders submit bids
assert(bidders_to_items[bidder_idx] == k_invalid_index);
@@ -357,14 +292,12 @@ void AuctionRunnerFR<R, AO>::assign_forward(IdxType item_idx, IdxType bidder_idx
#endif
sanity_check();
- console_logger->debug("Exit assign_forward, item_idx = {0}, bidder_idx = {1}", item_idx, bidder_idx);
}
template<class R, class AO>
void AuctionRunnerFR<R, AO>::assign_reverse(IdxType item_idx, IdxType bidder_idx)
{
- console_logger->debug("Enter assign_reverse, item_idx = {0}, bidder_idx = {1}", item_idx, bidder_idx);
// only unassigned items submit bids in reverse phase
assert(items_to_bidders[item_idx] == k_invalid_index);
@@ -447,7 +380,6 @@ void AuctionRunnerFR<R, AO>::assign_reverse(IdxType item_idx, IdxType bidder_idx
}
#endif
- console_logger->debug("Exit assign_reverse, item_idx = {0}, bidder_idx = {1}", item_idx, bidder_idx);
}
template<class R, class AO>
@@ -465,7 +397,6 @@ AuctionRunnerFR<R, AO>::get_item_bidder_cost(const size_t item_idx, const size_t
template<class R, class AO>
void AuctionRunnerFR<R, AO>::assign_to_best_bidder(IdxType item_idx)
{
- console_logger->debug("Enter assign_to_best_bidder, item_idx = {0}", item_idx);
assert( item_idx >= 0 and item_idx < static_cast<IdxType>(num_items) );
assert( forward_bid_table[item_idx].first != k_invalid_index);
@@ -482,13 +413,11 @@ void AuctionRunnerFR<R, AO>::assign_to_best_bidder(IdxType item_idx)
forward_price_change_cnt_vec.back()[item_idx]++;
reverse_price_change_cnt_vec.back()[best_bidder_idx]++;
#endif
- console_logger->debug("Exit assign_to_best_bidder, item_idx = {0}", item_idx);
}
template<class R, class AO>
void AuctionRunnerFR<R, AO>::assign_to_best_item(IdxType bidder_idx)
{
- console_logger->debug("Enter assign_to_best_item, bidder_idx = {0}", bidder_idx);
check_epsilon_css();
assert( bidder_idx >= 0 and bidder_idx < static_cast<IdxType>(num_bidders) );
assert( reverse_bid_table[bidder_idx].first != k_invalid_index);
@@ -506,7 +435,6 @@ void AuctionRunnerFR<R, AO>::assign_to_best_item(IdxType bidder_idx)
reverse_price_change_cnt_vec.back()[bidder_idx]++;
#endif
check_epsilon_css();
- console_logger->debug("Exit assign_to_best_item, bidder_idx = {0}", bidder_idx);
}
template<class R, class AO>
@@ -647,20 +575,10 @@ AuctionRunnerFR<R, AO>::get_relative_error(const bool debug_output) const
// cost minus n epsilon
Real reduced_cost = partial_cost - num_bidders * get_epsilon();
if ( reduced_cost < 0) {
-#ifdef LOG_AUCTION
- if (debug_output) {
- console_logger->debug("Epsilon too large, reduced_cost = {0}", reduced_cost);
- }
-#endif
result = k_max_relative_error;
} else {
Real denominator = std::pow(reduced_cost, 1.0 / wasserstein_power) - gamma;
if (denominator <= 0) {
-#ifdef LOG_AUCTION
- if (debug_output) {
- console_logger->debug("Epsilon too large, reduced_cost = {0}, denominator = {1}, gamma = {2}", reduced_cost, denominator, gamma);
- }
-#endif
result = k_max_relative_error;
} else {
Real numerator = 2 * gamma +
@@ -668,16 +586,6 @@ AuctionRunnerFR<R, AO>::get_relative_error(const bool debug_output) const
std::pow(reduced_cost, 1.0 / wasserstein_power);
result = numerator / denominator;
-#ifdef LOG_AUCTION
- if (debug_output) {
- console_logger->debug("Reduced_cost = {0}, denominator = {1}, numerator {2}, error = {3}, gamma = {4}",
- reduced_cost,
- denominator,
- numerator,
- result,
- gamma);
- }
-#endif
}
}
return result;
@@ -686,7 +594,6 @@ AuctionRunnerFR<R, AO>::get_relative_error(const bool debug_output) const
template<class R, class AO>
void AuctionRunnerFR<R, AO>::flush_assignment()
{
- console_logger->debug("Enter flush_assignment");
for(auto& b2i : bidders_to_items) {
b2i = k_invalid_index;
}
@@ -751,7 +658,6 @@ void AuctionRunnerFR<R, AO>::flush_assignment()
never_assigned_items = unassigned_items;
#endif
check_epsilon_css();
- console_logger->debug("Exit flush_assignment");
}
template<class R, class AO>
@@ -814,10 +720,8 @@ void AuctionRunnerFR<R, AO>::run_auction_phase()
while(continue_phase()) {
forward_oracle.recompute_top_diag_items(true);
forward_oracle.sanity_check();
- console_logger->debug("forward_oracle recompute_top_diag_items done");
run_forward_auction_phase();
reverse_oracle.recompute_top_diag_items(true);
- console_logger->debug("reverse_oracle recompute_top_diag_items done");
reverse_oracle.sanity_check();
run_reverse_auction_phase();
}
@@ -831,87 +735,9 @@ void AuctionRunnerFR<R, AO>::run_auction_phases(const int max_num_phases, const
assert( reverse_oracle.get_epsilon() > 0 );
for(int phase_num = 0; phase_num < max_num_phases; ++phase_num) {
flush_assignment();
- console_logger->info("Phase {0} started: eps = {1}",
- num_phase,
- get_epsilon());
run_auction_phase();
Real current_result = partial_cost;
-#ifdef LOG_AUCTION
- console_logger->info("Phase {0} done: current_result = {1}, eps = {2}, unassigned_threshold = {3}, unassigned = {4}, error = {5}, gamma = {6}",
- num_phase,
- partial_cost,
- get_epsilon(),
- format_int<>(unassigned_threshold),
- unassigned_bidders.size(),
- get_relative_error(false),
- get_gamma());
-
- console_logger->info("Phase {0} done: num_rounds / num_parallelizable_rounds = {1} / {2} = {3}, cumulative rounds = {4}",
- num_phase,
- format_int(num_rounds_non_cumulative),
- format_int(num_parallelizable_rounds),
- static_cast<double>(num_parallelizable_rounds) / static_cast<double>(num_rounds_non_cumulative),
- format_int(num_rounds)
- );
-
- console_logger->info("parallelizable_forward_rounds / num_forward_rounds = {0} / {1} = {2}",
- format_int<>(num_parallelizable_forward_rounds),
- format_int<>(num_forward_rounds_non_cumulative),
- static_cast<double>(num_parallelizable_forward_rounds) / static_cast<double>(num_forward_rounds_non_cumulative)
- );
-
- num_parallelizable_forward_rounds = 0;
- num_forward_rounds_non_cumulative = 0;
-
- console_logger->info("parallelizable_reverse_rounds / num_reverse_rounds = {0} / {1} = {2}",
- format_int<>(num_parallelizable_reverse_rounds),
- format_int<>(num_reverse_rounds_non_cumulative),
- static_cast<double>(num_parallelizable_reverse_rounds) / static_cast<double>(num_reverse_rounds_non_cumulative)
- );
-
- num_parallelizable_reverse_rounds = 0;
- num_reverse_rounds_non_cumulative = 0;
-
- console_logger->info("num_parallel_bids / num_total_bids = {0} / {1} = {2}, num_parallel_assignments / num_total_assignments = {3} / {4} = {5}",
- format_int<>(num_parallel_bids),
- format_int<>(num_total_bids),
- static_cast<double>(num_parallel_bids) / static_cast<double>(num_total_bids),
- format_int<>(num_parallel_assignments),
- format_int<>(num_total_assignments),
- static_cast<double>(num_parallel_assignments) / static_cast<double>(num_total_assignments)
- );
-
- auto forward_min_max_price = forward_oracle.get_minmax_price();
- auto reverse_min_max_price = reverse_oracle.get_minmax_price();
-
- console_logger->info("forward min price = {0}, max price = {1}; reverse min price = {2}, reverse max price = {3}",
- forward_min_max_price.first,
- forward_min_max_price.second,
- reverse_min_max_price.first,
- reverse_min_max_price.second
- );
-
- for(size_t item_idx = 0; item_idx < num_items; ++item_idx) {
- forward_price_stat_logger->info("{0} {1} {2} {3} {4}",
- phase_num,
- item_idx,
- items[item_idx].getRealX(),
- items[item_idx].getRealY(),
- forward_price_change_cnt_vec.back()[item_idx]
- );
- }
-
- for(size_t bidder_idx = 0; bidder_idx < num_bidders; ++bidder_idx) {
- reverse_price_stat_logger->info("{0} {1} {2} {3} {4}",
- phase_num,
- bidder_idx,
- bidders[bidder_idx].getRealX(),
- bidders[bidder_idx].getRealY(),
- reverse_price_change_cnt_vec.back()[bidder_idx]
- );
- }
-#endif
if (get_relative_error(true) <= delta) {
break;
@@ -923,9 +749,6 @@ void AuctionRunnerFR<R, AO>::run_auction_phases(const int max_num_phases, const
if (phase_can_be_final()) {
unassigned_threshold = 0;
-#ifdef LOG_AUCTION
- console_logger->info("Unassigned threshold set to zero!");
-#endif
}
}
}
@@ -1038,7 +861,6 @@ void AuctionRunnerFR<R, AO>::remove_unassigned_bidder(const size_t bidder_idx)
template<class R, class AO>
void AuctionRunnerFR<R, AO>::remove_unassigned_item(const size_t item_idx)
{
- console_logger->debug("Enter remove_unassigned_item, unassigned_items.size = {0}", unassigned_items.size());
unassigned_items_persistence -= get_cost_to_diagonal(items[item_idx]);
never_assigned_items.erase(item_idx);
@@ -1059,7 +881,6 @@ void AuctionRunnerFR<R, AO>::remove_unassigned_item(const size_t item_idx)
all_assigned_round_found = true;
}
#endif
- console_logger->debug("Exit remove_unassigned_item, unassigned_items.size = {0}", unassigned_items.size());
}
template<class R, class AO>
@@ -1076,7 +897,6 @@ void AuctionRunnerFR<R, AO>::decrease_epsilon()
template<class R, class AO>
void AuctionRunnerFR<R, AO>::run_reverse_auction_phase()
{
- console_logger->debug("Enter run_reverse_auction_phase");
size_t original_unassigned_items = unassigned_items.size();
// const size_t min_reverse_matching_increment = std::max( static_cast<size_t>(1), static_cast<size_t>(original_unassigned_items / 10));
size_t min_reverse_matching_increment = 1;
@@ -1084,7 +904,6 @@ void AuctionRunnerFR<R, AO>::run_reverse_auction_phase()
while (continue_reverse(original_unassigned_items, min_reverse_matching_increment)) {
num_rounds++;
num_rounds_non_cumulative++;
- console_logger->debug("started round = {0}, reverse, unassigned = {1}", num_rounds, unassigned_items.size());
check_epsilon_css();
#ifdef LOG_AUCTION
@@ -1123,38 +942,6 @@ void AuctionRunnerFR<R, AO>::run_reverse_auction_phase()
}
check_epsilon_css();
-
- console_logger->debug("ended round = {0}, reverse, unassigned = {1}", num_rounds, unassigned_items.size());
-
-#ifdef LOG_AUCTION
-
- reverse_plot_logger->info("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13} {14} {15} {16} {17} {18} {19} {20} {21} {22}",
- num_phase,
- num_rounds,
- num_reverse_rounds,
- unassigned_bidders.size(),
- get_gamma(),
- partial_cost,
- reverse_oracle.get_epsilon(),
- num_normal_reverse_bids_submitted,
- num_diag_reverse_bids_submitted,
- num_reverse_diag_to_diag_assignments,
- num_reverse_diag_to_normal_assignments,
- num_reverse_normal_to_diag_assignments,
- num_reverse_normal_to_normal_assignments,
- num_reverse_diag_from_diag_thefts,
- num_reverse_diag_from_normal_thefts,
- num_reverse_normal_from_diag_thefts,
- num_reverse_normal_from_normal_thefts,
- unassigned_normal_bidders.size(),
- unassigned_diag_bidders.size(),
- unassigned_normal_items.size(),
- unassigned_diag_items.size(),
- reverse_oracle.get_heap_top_size(),
- get_relative_error(false)
- );
- sanity_check();
-#endif
}
}
@@ -1164,7 +951,6 @@ void AuctionRunnerFR<R, AO>::run_forward_bidding_step(const Range& active_bidder
{
clear_forward_bid_table();
for(const auto bidder_idx : active_bidders) {
- console_logger->debug("current bidder (forward): {0}, persistence = {1}", bidders[bidder_idx], bidders[bidder_idx].persistence_lp(1.0));
submit_forward_bid(bidder_idx, forward_oracle.get_optimal_bid(bidder_idx));
if (++num_forward_bids_submitted >= max_bids_per_round) {
break;
@@ -1183,7 +969,6 @@ void AuctionRunnerFR<R, AO>::run_reverse_bidding_step(const Range& active_items)
[ki = k_invalid_index, kl = k_lowest_bid_value](const IdxValPairR& b) { return static_cast<size_t>(b.first) == ki and b.second == kl; }));
for(const auto item_idx : active_items) {
- console_logger->debug("current bidder (reverse): {0}, persistence = {1}", items[item_idx], items[item_idx].persistence_lp(1.0));
submit_reverse_bid(item_idx, reverse_oracle.get_optimal_bid(item_idx));
if (++num_reverse_bids_submitted >= max_bids_per_round) {
break;
@@ -1199,7 +984,6 @@ void AuctionRunnerFR<R, AO>::run_forward_auction_phase()
// const size_t min_forward_matching_increment = std::max( static_cast<size_t>(1), static_cast<size_t>(original_unassigned_bidders / 10));
const size_t min_forward_matching_increment = 1;
while (continue_forward(original_unassigned_bidders, min_forward_matching_increment)) {
- console_logger->debug("started round = {0}, forward, unassigned = {1}", num_rounds, unassigned_bidders.size());
check_epsilon_css();
num_rounds++;
#ifdef LOG_AUCTION
@@ -1238,7 +1022,6 @@ void AuctionRunnerFR<R, AO>::run_forward_auction_phase()
assign_to_best_bidder(item_idx);
}
- console_logger->debug("ended round = {0}, forward, unassigned = {1}", num_rounds, unassigned_bidders.size());
check_epsilon_css();
#ifdef LOG_AUCTION
@@ -1348,10 +1131,6 @@ void AuctionRunnerFR<R, AO>::sanity_check()
#ifdef ORDERED_BY_PERSISTENCE
assert(unassigned_bidders.size() == unassigned_bidders_by_persistence.size());
- if (unassigned_items.size() != unassigned_items_by_persistence.size()) {
- console_logger->error("unassigned_items.size() = {0}, unassigned_items_by_persistence.size() = {1}", unassigned_items.size(),unassigned_items_by_persistence.size());
- console_logger->error("unassigned_items = {0}, unassigned_items_by_persistence = {1}", format_container_to_log(unassigned_items),format_pair_container_to_log(unassigned_items_by_persistence));
- }
assert(unassigned_items.size() == unassigned_items_by_persistence.size());
for(size_t bidder_idx = 0; bidder_idx < num_bidders; ++bidder_idx) {
@@ -1393,17 +1172,6 @@ void AuctionRunnerFR<R, AO>::check_epsilon_css()
for(size_t i = 0; i < num_items; ++i) {
if(((is_bidder_normal(b) and is_item_diagonal(i)) or (is_bidder_diagonal(b) and is_item_normal(i))) and b != i)
continue;
- if (b_prices[b] + i_prices[i] + eps < -get_item_bidder_cost(i, b) - 0.000001) {
- console_logger->debug("b = {0}, i = {1}, eps = {2}, b_price = {3}, i_price[i] = {4}, cost = {5}, b_price + i_price + eps = {6}",
- b,
- i,
- eps,
- b_prices[b],
- i_prices[i],
- get_item_bidder_cost(i, b),
- b_prices[b] + i_prices[i] + eps
- );
- }
assert(b_prices[b] + i_prices[i] + eps >= -get_item_bidder_cost(i, b) - 0.000001);
}
}