randomized_rounding_triumvirate¶
-
class
vnep_approx.randomized_rounding_triumvirate.DecompositionMDK(scenario, fractional_solution, gurobi_settings=None, optimization_callback=<function gurobi_callback>, lp_output_file=None, potential_iis_filename=None, logger=None)¶ Given the decomposition into convex combinations of valid mappings for each request, the MDK computes the optimal rounding given all mapping possibilities found.
-
calc_max_loads(L)¶
-
create_constraints()¶
-
create_objective()¶
-
create_variables()¶
-
post_process_integral_computation()¶
-
preprocess_input()¶
-
recover_integral_solution_from_variables()¶
-
-
exception
vnep_approx.randomized_rounding_triumvirate.RandomizedRoundingError¶
-
class
vnep_approx.randomized_rounding_triumvirate.RandomizedRoundingMetaData(time_preprocessing, time_optimization, time_postprocessing, lost_flow_in_decomposition, temporal_log, status)¶ -
lost_flow_in_decomposition¶ Alias for field number 3
-
status¶ Alias for field number 5
-
temporal_log¶ Alias for field number 4
-
time_optimization¶ Alias for field number 1
-
time_postprocessing¶ Alias for field number 2
-
time_preprocessing¶ Alias for field number 0
-
-
class
vnep_approx.randomized_rounding_triumvirate.RandomizedRoundingSolutionData(profit, max_node_load, max_edge_load, time_to_round_solution)¶ -
max_edge_load¶ Alias for field number 2
-
max_node_load¶ Alias for field number 1
-
profit¶ Alias for field number 0
-
time_to_round_solution¶ Alias for field number 3
-
-
class
vnep_approx.randomized_rounding_triumvirate.RandomizedRoundingTriumvirate(scenario, gurobi_settings=None, logger=None, number_of_solutions_to_round=1000, mdk_gurobi_parameters=None, write_lp_file_format=None, decomposition_epsilon=1e-10, relative_decomposition_abortion_epsilon=0.001, absolute_decomposition_abortion_epsilon=1e-06)¶ This class implements 3 different randomized rounding heuristics for obtaining integral mappings. The first class of heuristics applies rounding directly. Either the solution minimizing resource violations or the one maximizing the profit is returned. The second one does round but discards any (chosen) mappings whose addition would violate resource capacities. The last one simply computes the optimal solution of the corresponding Multi-Dimensional Knapsack (MDK). Specifically, given the decomposed solution for each mapping a binary variable is introduced such that capacities are not exceeded and for each request at most one mapping is selected.
-
ALGORITHM_ID= 'RandomizedRoundingTriumvirate'¶
-
calc_max_loads(L)¶
-
check_whether_mapping_would_obey_resource_violations(L, mapping_loads)¶
-
collect_X_randomized_rounding_samples_with_potential_violations(number_of_samples)¶
-
compute_integral_solution()¶
-
init_model_creator()¶
-
round_solution_without_violations(number_of_samples)¶
-
rounding_iteration_violations_allowed_sampling_max_violations(L)¶
-
rounding_iteration_violations_without_violations(L, outer_tries)¶
-
-
class
vnep_approx.randomized_rounding_triumvirate.RandomizedRoundingTriumvirateResult(meta_data, collection_of_samples_with_violations, result_wo_violations, mdk_result, mdk_meta_data)¶ -
cleanup_references(original_scenario)¶
-
get_solution()¶ Returns: the solution (as a namedtuple) stored in this class; abstract function
-