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
- 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_
- 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_
- 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_
- hots.model.must_link_c_(mdl, i, j)[source]
Express the clustering mustlink constraint.
- Parameters:
mdl (_type_) – _description_
i (_type_) – _description_
j (_type_) – _description_
- Returns:
_description_
- Return type:
_type_
- hots.model.must_link_n_(mdl, i, j)[source]
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_