hots.placement
Provide placement heuristics and all placement-related methods (check capacity, change assignment …).
- hots.placement.allocation_distant_pairwise(instance, cluster_var_matrix, labels_, nb_nodes=None, lb=0.0)[source]
First placement heuristic implemented.
Idea : take two most distant clusters (from their mean profile), and assign by pair (one container from each cluster) on the first available node, and so on. Take the following node if current one has not enough resources. Return a list of containers forced to be grouped together.
- Parameters:
instance (Instance) – _description_
cluster_var_matrix (np.array) – _description_
labels (List) – _description_
nb_nodes (int, optional) – _description_, defaults to None
lb (float, optional) – _description_, defaults to 0.0
- hots.placement.allocation_ffd(instance, cluster_vars, cluster_var_matrix, labels_, bound_new_node=50)[source]
Second placement heuristic.
Idea (based on “first-fit decreasing” bin-packing heuristic) : order clusters by decreasing variance, place all containers belonging to the clusters in this order. For each container, try to place it on a node decreasing the node’s variance. If not possible, place it on the node whose variance increases the least.
- Parameters:
instance (Instance) – _description_
cluster_vars (np.array) – _description_
cluster_var_matrix (np.array) – _description_
labels (List) – _description_
bound_new_node (float, optional) – _description_, defaults to 50
- hots.placement.allocation_spread(instance, min_nodes=None)[source]
Spread technique for placement.
- Parameters:
instance (Instance) – _description_
min_nodes (int, optional) – _description_, defaults to None
- hots.placement.assign_container_node(node_id, container_id, instance, remove=True)[source]
Assign container_id to node_id, and remove it from old node.
- Parameters:
node_id (str) – _description_
container_id (str) – _description_
instance (Instance) – _description_
remove (bool, optional) – _description_, defaults to True
- hots.placement.assign_indiv_available_host(instance, indiv_id, tmin, tmax, nb_open_nodes)[source]
Assign the individual to first available host.
- Parameters:
instance (Instance) – _description_
indiv_id (str) – _description_
tmin (int) – _description_
tmax (int) – _description_
nb_open_nodes (int) – _description_
- Raises:
RuntimeError – _description_
- hots.placement.assign_indiv_initial_placement(instance, indiv_id, tmin, tmax, conso_nodes, min_nodes, n=0)[source]
Assign indiv in node during first heuristic.
- Parameters:
instance (Instance) – _description_
indiv_id (str) – _description_
tmin (int) – _description_
tmax (int) – _description_
conso_nodes (List) – _description_
min_nodes (int) – _description_
n (int, optional) – _description_, defaults to 0
- Returns:
_description_
- Return type:
bool
- hots.placement.build_placement_adj_matrix(df_indiv, dict_id_c)[source]
Build the adjacency matrix of placement.
- Parameters:
df_indiv (pd.DataFrame) – _description_
dict_id_c (Dict) – _description_
- Returns:
_description_
- Return type:
np.array
- hots.placement.colocalize_clusters(list_containers_i, list_containers_j, containers_grouped, instance, total_time, min_nodes, conso_nodes, n=0)[source]
Allocate containers of 2 clusters grouping by pairs.
- Parameters:
list_containers_i (List) – _description_
list_containers_j (List) – _description_
containers_grouped (List) – _description_
instance (Instance) – _description_
total_time (int) – _description_
min_nodes (int) – _description_
conso_nodes (List) – _description_
n (int, optional) – _description_, defaults to 0
- Raises:
RuntimeError – _description_
RuntimeError – _description_
- Returns:
_description_
- Return type:
int
- hots.placement.find_substitution(instance, indiv_id, tmin, tmax)[source]
Find a node in which we can place indiv_id by moving another indiv.
- Parameters:
instance (Instance) – _description_
indiv_id (str) – _description_
tmin (int) – _description_
tmax (int) – _description_
- Raises:
RuntimeError – _description_
- hots.placement.free_full_nodes(instance, full_nodes, tick)[source]
Change the solution in order to satisfy node capacities.
- Parameters:
instance (Instance) – _description_
full_nodes (List) – _description_
tick (int) – _description_
- hots.placement.move_container(mvg_cont, instance, tmin, tmax, old_id)[source]
Move mvg_cont to another node.
- Parameters:
mvg_cont (int) – _description_
instance (Instance) – _description_
tmin (int) – _description_
tmax (int) – _description_
old_id (str) – _description_
- hots.placement.move_list_containers(mvg_conts, instance, tmin, tmax, order='max')[source]
Move the list of containers to move.
- Parameters:
mvg_conts (List) – _description_
instance (Instance) – _description_
tmin (int) – _description_
tmax (int) – _description_
order (str, optional) – _description_, defaults to ‘max’
- hots.placement.nb_min_nodes(instance, total_time)[source]
Compute the minimum number of nodes needed to support the load.
- Parameters:
instance (Instance) – _description_
total_time (int) – _description_
- Returns:
_description_
- Return type:
float
- hots.placement.place_opposite_clusters(instance, cluster_vars, cluster_var_matrix, labels_, min_nodes, conso_nodes)[source]
Initialize allocation heuristic by co-localizing distant clusters.
- Parameters:
instance (Instance) – _description_
cluster_vars (np.array) – _description_
cluster_var_matrix (np.array) – _description_
labels (List) – _description_
min_nodes (int) – _description_
conso_nodes (np.array) – _description_
- Returns:
_description_
- Return type:
Tuple[np.array, np.array]
- hots.placement.remove_container_node(node_id, container_id, instance)[source]
Remove container from node.
- Parameters:
node_id (str) – _description_
container_id (str) – _description_
instance (Instance) – _description_
- hots.placement.spread_containers(list_containers, instance, conso_nodes, total_time, min_nodes)[source]
Spread containers from list_containers into nodes.
- Parameters:
list_containers (List) – _description_
instance (Instance) – _description_
conso_nodes (np.array) – _description_
total_time (int) – _description_
min_nodes (int) – _description_