Hasta ahora solo teniamos una app sencilla. Vamos a ponerle un poco más de dificultad.
Implementación de duración de mantenimientos
Es posible que algunas tareas o rutinas de mantenimiento tomen más tiempo que un solo periodo de planeación.
Actualización de la restricción de mantenimiento basada en operación
Si un período de mantenimiento es mayor a un mes, la Eq.4 debe actualizarse para en lugar de agregar \(T_i\) cuando \(y_{i,t} = 1\), solo haga esto cuando finalice todo el período de mantenimiento. La restricción se reescribe como:
\[ \sum_{j=t}^{t+u}x_{i,t} \le T_i + T_i \sum_{j=t}^{t+u}z_{i,j}, \quad ∀i,t,u ∈ \{o,1,...,H-t\}, \tag{1}\]
donde \(z_{i,t}\) es una variable binaria que implica:
\[ z_{i,t} = \cases{1, \quad \text{si }y_{i,t}=1,\text{ } y_{i,t+1}=0 \\0, \quad \text{de lo contrario}} \]
que es equivalente a:
\[ z_{i,t}= \cases{1, \quad \text{si t es el último mes en un periodo de mantenimiento para la unidad i}\\0, \quad \text{de lo contrario}} \]
Para tener \(z_{i,t}\) así, se deben incluir las siguientes tres restricciones:
\[ z_{i,\tau} - y_{i,\tau}+y_{i,\tau +1} \ge 0, \quad ∀i, \tau ∈ \{1,2,...,H-1\}, \]
\[ z_{i,\tau} + y_{i,\tau +1} \le 1, \quad ∀i, \tau ∈ \{1,2,...,H-1\} \]
\[ z_{i,\tau} - y_{i,\tau} \le 0, \quad ∀i, \tau ∈ \{1,2,...,H-1\} \]
La restricción de mantenimiento basada en el calendario no se modifica para restringir la suma de \(z_{i,t}\) en lugar de \(y_{i,t}\) ya que queremos permitir que un período de mantenimiento haya comenzado pero no haya terminado al final del período de planeación. Sin embargo, esto no supone un problema con la restricción 2.1. ya que \(x_{i,t} = 0\) cuando \(y_{i,t} = 1\) y la restricción no se hace más estricta para las franjas incluidas con \(x_{i,t} = 0\). Por la misma razón, no es un problema que \(z_{i,t}\) no esté definido para \(t = H\).
Restricción de la duración de los mantenimientos
Si la duración del mantenimiento para una unidad \(i\) es superior a un mes y se representa como un parámetro entero \(M_i > 1\), se puede escribir una restricción para controlar la duración del mantenimiento como:
\[ y_{i,\tau - j} - z_{i,\tau} \ge 0, \quad ∀i, \tau ∈ \{M_i,M_i+1,...,H\}, j ∈ \{1,2,...,M_i-1\} \tag{2}\]
que asegura que \(M_i\) periodos consecutivos tiene \(y_{i,t}=1\) cuando el mantenimiento es planeado. Entonces nos quedan las siguientes deducciones:
\[ z_{i,\tau}=1 ⟶ y_{i,\tau - j}=1, \]
\[ y_{i,\tau - j}=0 ⟶ z_{i, \tau}=0 \]
y como esto se hace para todos los \(\tau\) y \(j\) definidos, el mantenimiento se extenderá a lo largo de \(M_i\) meses. Si un período de mantenimiento es de un mes, \(z_{i,t}\) es igual a \(y_{i,t}\) y la restricción 2.2. no es necesaria ni está definida.
Seguro que con estas versiones de las restricciones que habías conocido, ya se empieza a ajustar el modelo a lo que podrías estar necesitando.
Cómo citar
@online{chiquito_valencia2025,
author = {Chiquito Valencia, Cristian},
title = {Una Aplicación Robusta Para {Mantenimiento}},
date = {2025-02-04},
url = {https://cchiquitovalencia.github.io/posts/2025-02-04-advance_mtto_shiny_app/},
langid = {en}
}