hots.model

Define the optimization models we have, with its objective, constraints, variables, and build it from the Instance. Provide all optimization models related methods. The optimization model description is based on Pyomo.

class hots.model.Model(pb_number, df_indiv, dict_id_c, dict_id_n=None, df_host_meta=None, nb_clusters=None, w=None, dv=None, sol_u=None, sol_v=None)[source]

Class holding the optimization models creation.

Attributes : - pb_number : problem type (clustering or placement) - df_indiv : DataFrame describing containers data - dict_id_c : int id for containers with matching string id - dict_id_n : int id for nodes with matching string id - df_host_meta : DataFrame describing node info (capacity) - nb_clusters : number of clusters for clustering - w : similarity matrix for clustering - sol_u : adjacency matrix from current clustering solution - sol_v : adjacency matric from current placement solution

Add mustLink constraints for fixing solution.

Add mustLink constraints for fixing solution.

build_constraints()[source]

Build all the constraints.

build_objective()[source]

Build the objective.

build_parameters(w, dv, u, v)[source]

Build all Params and Sets.

Parameters:
  • w (np.array) – _description_

  • dv (np.array) – _description_

  • u (np.array) – _description_

  • v (np.array) – _description_

build_variables()[source]

Build all model variables.

conso_n_t(mdl, node, t)[source]

Express the total consumption of node at time t.

Parameters:
  • mdl (_type_) – _description_

  • node (_type_) – _description_

  • t (_type_) – _description_

Returns:

_description_

Return type:

_type_

create_data(df_indiv, dict_id_c, df_host_meta, nb_clusters)[source]

Create data from dataframe.

Parameters:
  • df_indiv (_type_) – _description_

  • dict_id_c (_type_) – _description_

  • df_host_meta (_type_) – _description_

  • nb_clusters (_type_) – _description_

mean(mdl, node)[source]

Express the mean consumption of node.

Parameters:
  • mdl (_type_) – _description_

  • node (_type_) – _description_

Returns:

_description_

Return type:

_type_

solve(solver='glpk', verbose=False)[source]

Solve the model using a specific solver.

Parameters:
  • solver (str) – The solver to use to solve the problem.

  • verbose (bool) – Enable / disable logs during solve process.

update_adjacency_clust_constraints(u)[source]

Update constraints fixing u variables from new adjacency matrix (clustering).

Parameters:

u (_type_) – _description_

update_adjacency_place_constraints(v)[source]

Update constraints fixing u variables from new adjacency matrix (placement).

Parameters:

v (_type_) – _description_

update_dv(dv)[source]

Update directly the dv param in instance from new dv matrix.

Parameters:

dv (_type_) – _description_

update_instance(df_indiv)[source]

Update the model instance from new data.

Parameters:

df_indiv (_type_) – _description_

update_obj_clustering(w)[source]

Update the objective for clustering with new w matrix.

Parameters:

w (_type_) – _description_

update_obj_place(dv)[source]

Update the objective for placement with new dv matrix.

Parameters:

dv (_type_) – _description_

update_sol_u(u)[source]

Update directly the sol_u param in instance from new u matrix.

Parameters:

u (_type_) – _description_

update_sol_v(v)[source]

Update directly the sol_v param in instance from new v matrix.

Parameters:

v (_type_) – _description_

update_w(w)[source]

Update directly the w param in instance from new w matrix.

Parameters:

w (_type_) – _description_

write_infile()[source]

Write the problem in LP file.

hots.model.assignment_(mdl, container)[source]

Express the assignment constraint.

Parameters:
  • mdl (_type_) – _description_

  • container (_type_) – _description_

Returns:

_description_

Return type:

_type_

hots.model.capacity_(mdl, node, time)[source]

Express the capacity constraints.

Parameters:
  • mdl (_type_) – _description_

  • node (_type_) – _description_

  • time (_type_) – _description_

Returns:

_description_

Return type:

_type_

hots.model.clust_assign_(mdl, container)[source]

Express the assignment constraint.

Parameters:
  • mdl (_type_) – _description_

  • container (_type_) – _description_

Returns:

_description_

Return type:

_type_

hots.model.fill_dual_values(my_mdl)[source]

Fill dual values from specific constraints.

Parameters:

my_mdl (Model) – _description_

Returns:

_description_

Return type:

Dict

hots.model.get_conflict_graph(my_mdl, constraints_dual_values, tol)[source]

Build conflict graph from comapring dual variables.

Parameters:
  • my_mdl (Model) – _description_

  • constraints_dual_values (Dict) – _description_

  • tol (float) – _description_

Returns:

_description_

Return type:

nx.Graph

hots.model.get_container_tomove(c1, c2, working_df)[source]

Get the container we want to move between c1 and c2.

Parameters:
  • c1 (int) – _description_

  • c2 (int) – _description_

  • working_df (pd.DataFrame) – _description_

Returns:

_description_

Return type:

int

hots.model.get_moving_containers_clust(my_mdl, constraints_dual_values, tol, tol_move, nb_containers, dict_id_c, df_clust, profiles)[source]

Get the list of moving containers from constraints dual values.

Parameters:
  • my_mdl (Model) – _description_

  • constraints_dual_values (Dict) – _description_

  • tol (float) – _description_

  • tol_move (float) – _description_

  • nb_containers (int) – _description_

  • dict_id_c (Dict) – _description_

  • df_clust (pd.DataFrame) – _description_

  • profiles (np.array) – _description_

Returns:

_description_

Return type:

Tuple[List, int, int, int, int]

hots.model.get_moving_containers_place(my_mdl, constraints_dual_values, tol, tol_move, nb_containers, working_df, dict_id_c)[source]

Get the list of moving containers from constraints dual values.

Parameters:
  • my_mdl (Model) – _description_

  • constraints_dual_values (Dict) – _description_

  • tol (float) – _description_

  • tol_move (float) – _description_

  • nb_containers (int) – _description_

  • working_df (pd.DataFrame) – _description_

  • dict_id_c (Dict) – _description_

Returns:

_description_

Return type:

Tuple[List, int, int, int, int]

hots.model.get_obj_value_host(df_host, t_min=None, t_max=None)[source]

Get objectives value of current solution.

Parameters:
  • df_host (pd.DataFrame) – _description_

  • t_min (int, optional) – _description_, defaults to None

  • t_max (int, optional) – _description_, defaults to None

Returns:

_description_

Return type:

Tuple[int, float]

hots.model.get_obj_value_indivs(df_indiv, t_min=None, t_max=None)[source]

Get objective value of current solution (max delta).

Parameters:
  • df_indiv (pd.DataFrame) – _description_

  • t_min (int, optional) – _description_, defaults to None

  • t_max (int, optional) – _description_, defaults to None

Returns:

_description_

Return type:

Tuple[int, float]

hots.model.min_coloc_cluster_(mdl)[source]

Express the placement minimization objective from clustering.

Parameters:

mdl (pe.AbstractModel) – _description_

Returns:

_description_

Return type:

_type_

hots.model.min_dissim_(mdl)[source]

Express the within clusters dissimilarities.

Parameters:

mdl (_type_) – _description_

Returns:

_description_

Return type:

_type_

Express the clustering mustlink constraint.

Parameters:
  • mdl (_type_) – _description_

  • i (_type_) – _description_

  • j (_type_) – _description_

Returns:

_description_

Return type:

_type_

Express the placement mustlink constraint.

Parameters:
  • mdl (_type_) – _description_

  • i (_type_) – _description_

  • j (_type_) – _description_

Returns:

_description_

Return type:

_type_

hots.model.open_cluster_(mdl, container, cluster)[source]

Express the opening cluster constraint.

Parameters:
  • mdl (_type_) – _description_

  • container (_type_) – _description_

  • cluster (_type_) – _description_

Returns:

_description_

Return type:

_type_

hots.model.open_clusters_(mdl)[source]

Express the numbers of open clusters.

Parameters:

mdl (_type_) – _description_

Returns:

_description_

Return type:

_type_

hots.model.open_node_(mdl, container, node)[source]

Express the opening node constraint.

Parameters:
  • mdl (_type_) – _description_

  • container (_type_) – _description_

  • node (_type_) – _description_

Returns:

_description_

Return type:

_type_

hots.model.open_nodes_(mdl)[source]

Express the numbers of open nodes.

Parameters:

mdl (_type_) – _description_

Returns:

_description_

Return type:

_type_