Machine Reassignment Problem

Google Challenge 2012

Stefano Gualandi / @famo2spaghi / stefano.gualandi@gmail.com

Definizione dei dati

  • $M$: insieme delle macchine
  • $P$: insieme dei processi
  • $MP \subseteq M \times P$: coppie ammissibili di assegnamento processo-macchina
  • $R$: insieme delle risorse
  • $TR$: insieme delle risorse transitorie
  • $x^0_p \in M$: assegnamento iniziale dei processi

Definizione dei dati

  • $NS$: insieme dei servizi
  • $S_s \subset P$: processi che appartengono al servizio $s$
  • $Nei_m$: vicinato della macchina $m$
  • $N_i \subset M$: sottoinsieme di macchine nel vicinato $i$
  • $Loc_m$: locations della macchina $m$
  • $L_i$: sottoinsieme di macchine nella location $i$

Definizione dei dati

  • spread$_s$: coefficiente di spread per il servizio $s$
  • $Q_{pr}$: consumo di risorsa $r$ per processo $p$
  • $C_{mr}$: capacita` risorsa $r$ di macchina $m$
  • $SC_{mr}$: livello di capacita` di sicurezza per risorse $r$ della macchina $m$
  • $RC_{mr}=C_{mr} - \sum_{p \in P: x^0_p = m} Q_{pr}$: capacita` transitoria per risorsa $r$ della macchina $m$

Pesi dei diversi obiettivi

  • $Lw$: peso per il costo di carico (load)
  • $Bw$: peso per il costo di bilanciamento
  • $Pw$: peso per il costo di spostamento di un processo
  • $Sw$: peso per il costo di spostamento dei servizi
  • $Mw$: peso per il costo di spostamento di un processo macchina-macchina

  • $PMC_p$: costo di spostamento del processo $p$
  • $MMC_{m1,m2}$: costo per spostare un processo da $m^1$ a $m^2$

Definizione dei dati

  • $SP_s \subseteq S$: sottoinsieme di processi del servizio $s$
  • $SM_s \subseteq S$: sottoinsieme di macchine del servizio $s$
  • $SN_s \subseteq S$: sottoinsieme di vicinati del servizio $s$

Variabili

  • $x_{mp} \in \{0,1\}$: uguale a 1 se assegno il processo $p$ alla macchina $m$
  • $y_{ls} \in \{0,1\}$: uguale a 1 se il servizio $s$ (almeno un processo in $s$) e` nel luogo $l$
  • $0 \leq \alpha_{mr} \leq C_{mr} - SC_{mr}$: eccesso da pagare per la risorsa $r$ sulla macchina $m$
  • $\beta_{bm} \geq 0$: costo di bilanciamento $b$ per la macchina $m$
  • $0 \leq \gamma \leq \max_{s \in NS} {|S_s|}$: costo per lo spostamento dei servizi

Funzione obiettivo

$$\begin{align} \min \quad & Sw \gamma + \sum_{r \in R} Lw_r \sum_{m \in M} \alpha_{mr} \\ &\sum_{b \in NB} Bw_b \sum_{m \in M} \beta_{bm} + \\ &\sum_{p \in P: (x^0_p,p) \in MP} Pw \times PMC_p (1 - x_{x^0_p,p}) + \\ & Mw \sum_{p \in P, m \in M: (m,p) \in MP} MMC_{x^0_p m} x_{mp} \end{align}$$

Vincoli di Assegnamento

  • Ogni processo deve essere assegnato ad una macchina: $$\sum_{(m,p) \in MP} x_{mp} = 1, \quad \forall p \in P$$

Conflict constraints

  • Due processi dello stesso servizio non possono stare sulla stessa macchina: $$\sum_{p \in S_s: (m,p) \in MP} x_{mp} \leq 1 \quad \forall m \in M, s \in NS: |S_s| > 1 $$

Spread constraint

  • Vincoli di "spread": $$\sum_{l \in NL} y_{ls} \geq \mbox{spread}_s \quad \forall s \in NS$$

Attivazione variabile $y$

  • Vincoli: $$\sum_{m \in L_l, p \in S_s: (m,p) \in MP} x_{mp} \geq y_{ls} \quad \forall l \in NL, \forall s \in NS: \mbox{spread}_s > 1 $$

Load Costs

  • Vincoli di costo di carico e "link" con le variabili di costo: $$\sum_{(m,p) \in MP} Q_{pr} x_{mp} \leq \alpha_{mr} + SC_{mr} \quad \forall m \in M, \forall r \in R$$

Transient Capacity

  • Capacita` Temporanea $$\sum_{(m,p) \in MP: x^0_p \neq m} Q_{pr} x_{mp} \leq RC_{mr} \quad \forall m \in M, \forall r \in TR$$

Costi per lo spostamento dei servizi

  • $$\gamma \geq |S_s| - \sum_{p \in S_s, m \in M: x^0_p =m, (m,p) \in MP} x_{mp} $$

Bilanciamento tra risorse

  • $NB$: insieme di rapporti per costo di bilanciamento delle risorse (indice di una tripla $(r_1,r_2, \mbox{target}$))
  • $B^1_i \subseteq R$: primo elemento della tripla $i$
  • $B^2_i \subseteq R$: secondo elemento della tripla $i$
  • $B^3_i$: target della tripla $i$

Balance Cost constraints

  • Vincoli per i costi di bilanciamento dei carichi: $$ \begin{align} \beta_{bm} \geq &B^3_b(C_{m,B^1_b} - \sum_{p \in P: (m,p) \in MP} Q_{p,B^1_b}x_{mp}) & \\ &- C_{m,B^2_b} + \sum_{p \in P: (m,p) \in MP}Q_{p,B^2_b}x_{mp}& \\ \end{align}$$

Attivazione variabile $z$

  • $z_{ns} \in \{0,1\}$: uguale a 1 se il servizio $s$ e` nel vicinato $n$
  • Vincoli: $$\sum_{m \in N_n, p \in S_s: (m,p) \in MP} x_{mp} \geq z_{ns} \quad \forall n \in NN, s \in Ind $$

Dependency constraints

    • $Dep_s$: sottoinsieme di servizi da cui dipende $s$
    • $Ind \subseteq S$: insieme di servizi che hanno un vincolo di dipendenza
    • Vincoli: $$ \begin{align} & \sum_{m \in N_n, p \in S_s: (m,p) \in MP} x_{mp} \leq |S_s|z_{n,s^2} \\ & \quad \forall n \in NN, s \in NS, s^2 \in Dep_s: |Dep_s| \geq 1 \end{align}$$

Per domande:

stefano.gualandi@gmail.com