## Modelo de optimización Plan de Producción
## 1. Indices y Conjuntos
* $d$ es índice de días del conjunto $\mathbb{D} = \lbrace 1,....,365\rbrace$.
* $h$ es índice de horas del conjunto $\mathbb{H} = \lbrace 1,2,...., 2184\rbrace$.
* $rms$ restricciones de maxima produccion por sku $\mathbb{RMS}$
* El subconjunto de los días de cada restricción de maxima produccion por sku es $\mathbb{D}_{RMS}$
* El subconjunto de los skus de cada restricción de maxima produccion por sku es $\mathbb{S}_{RMS}$
* $s$ es índice de sku's del conjunto $\mathbb{S}$
* $sm$ es índice de sku's madre del conjunto $\mathbb{SM}$
* $s$ es índice de los skus en $S_{sm}$ de los skus similares al sku madre $sm\in\mathbb{SM}$
* $w$ es el índice de las semanas $\mathbb{W}$
* el subconjunto de los días $d\in\mathbb{D}_w$ de la semana $w\in\mathbb{W}$
### <span style="color:green">1.1. Embotellado</span>
* $l$ es índice de líneas de embotellado del conjunto $\mathbb{L} = \lbrace 1,2,4,5,6\rbrace$.
### <span style="color:rgb(240,230,140)">1.2. Paradas de linea</span>
* $pl$ es el indice del conjunto de las paradas de linea $\mathbb{PL}$
* El subconjunto de los días de cada parada de linea es $\mathbb{D}_{pl}$
* El subconjunto de las horas de cada parada de linea es $\mathbb{H}_{pl}$
* El subconjunto de las lineas de cada parada de linea es $\mathbb{L}_{pl}$
### <span style="color:orange">1.3. Elaboración</span>
* $sc$ es índice de salas del conjunto $\mathbb{SC}$
* El subconjunto de sku's que provienen de una misma cerveza $cd$ es $S_{cd}$
* $f$ es índice de tanques de fermentación del conjunto $\mathbb{F}$
* $fi$ es índice de filtradoras del conjunto $\mathbb{FI}$.
* $m$ índice de tanques de medición del conjunto $\mathbb{M}$.
* $mc$ es índice de mosto de cocción del conjunto $\mathbb{MC}$
* El subconjunto de mostos de cocción de cada sala es $\mathbb{MC}_{sc}$.
* $cd$ es índice de cerveza diluida (mosto de fermentación) del conjunto $\mathbb{CD}$
* Las cervezas diluidas $cd$ que pueden ser fabricadas a partir de un mosto de cocción son $cd\in\mathbb{CD}_{mc}$
* $by$ es índice de levaduras (brewer yeast) del conjunto $\mathbb{BY}$
### <span style="color:rgb(72, 180, 224)">1.4. Demanda y Stock</span>
* $c$ es índice de categoria de stock $c\in\mathbb{C} = \lbrace \text{silver, diamond, gold, bronze, prestock}\rbrace$
* $n$ el conjunto de los niveles de stock $\mathbb{N} = \lbrace ss,med,max \rbrace$ .
* El subconjunto de skus $s\in\mathbb{S}_c$ de la categoría $c\in\mathbb{C}$
* El subconjunto de categorias de cada sku es $\mathbb{C}_s$
* $u$ es el indice de ubicación del stock $\mathbb{U}=\lbrace Local , RED \rbrace$
* $ms$ el conjunto de restricciones de capacidad máxima de stock en RED $\mathbb{MS}$
* El subconjunto de los días de cada restricción de capacidad máxima de stock en RED es $\mathbb{D}_{ms}$
## 2. Parámetros
Se clasifican según subproceso:
### <span style="color:orange">2.1. Embotellado</span>
* $RL_{s,l} \in \mathbb{R}^+$, rendimiento en **HL** de linea $l\in\mathbb{L}$ al producir sku $s\in\mathbb{S}$.
* $TD_{s_1,s_2,l}\in \mathbb{Z}^+$, tiempo de demora en **hrs** al cambiar de setup en línea $l\in\mathbb{L}$ desde el sku $s_1\in\mathbb{S}$ al sku $s_2\in\mathbb{S}$ .
* $MP_{rmp}\in \mathbb{R}^+$, máxima producción en **HL** de la restriccion $rmp\in\mathbb{RMP}$.
* $\mathbb{D}_{rmp} \subset\mathbb{D}$ dias de la restricción $rmp\in\mathbb{RMP}$
### <span style="color:green">2.2. Elaboración</span>
* $BATCH_{f} \in \mathbb{R}^+$ es volumen en **HL** de cerveza diluida proveniente del tanque de fermentación $f\in \mathbb{F}$ creada en un batch.
* $VL_{cd,f}\in \mathbb{R}^+$ es volumen inicial en **HL** de cerveza $cd\in\mathbb{CD}$ en el tanque de fermentacion $f\in \mathbb{F}$.
* $TFzero_{cd,f}\in \mathbb{R}^+$ tiempo necesario para liberación del volumen inicial de cerveza $cd \in \mathbb{CD}$ del tanque $f\in \mathbb{F}$.
* $TPLL_{f} \in \mathbb{R}^+$ es el tiempo necesario para llenar el tanque de fermentación $f \in \mathbb{F}$.
* $TF_{cd} \in \mathbb{Z}^+$ es tiempo de fermentación de la cerveza diluida $cd \in \mathbb{CD}$
* $CAP_{f} \in \mathbb{R}^+$ es capacidad del tanque fermentacion $f\in \mathbb{F}$.
* $CAP_{m} \in \mathbb{R}^+$ es capacidad del tanque medidora $m\in \mathbb{M}$.
* $CAUC \in \mathbb{R}^+$es el caudal de alimentación de los tanques fermentadores desde el proceso de cocción, es en Hectolitros por hora.
### <span style="color:rgb(72, 180, 224)">2.4. Demandas y stock</span>
* $SI_{s,u} \in \mathbb{R}^+$, stock inicial en **HL** del sku $s$.
* $DE_{d,s}\in \mathbb{R}^+$, demanda en **HL** del sku $s$ en día $d$.
* $MACO_{s}\in \mathbb{R}^+$, MACO por **HL** del sku $s$.
* $IM_{d,s}\in \mathbb{R}^+$, importación en **HL** del sku $s\in\mathbb{S}$ en día $d \in \mathbb{D}$.
* $PS_{s,c,n,u} \in \mathbb{R}^+$, política de stock en **HL** para el sku $s\in \mathbb{S}$ que pertenece a cluster $c\in \mathbb{C}$ con nivel $n\in \mathbb{N}$ y ubicacion $u\in \mathbb{U}$
## 3. Variables de decisión
### <span style="color:orange">3.1. Líneas de embotellado</span>
* la producción del sku $s\in\mathbb{S}$ en la hora $h \in \mathbb{H}$
$$X_{h,s} \in \mathbb{R}^+$$
* la producción del sku $s\in\mathbb{S}$ en el dia $d\in\mathbb{D}$
$$X_{d,s} \in \mathbb{R}^+$$
* la producción del sku $s\in\mathbb{S}$ en la linea $l\in\mathbb{L}$ en la hora $h\in\mathbb{H}_d$
$$X_{h,s,l} \in \mathbb{R}^+$$
* la producción del sku $s\in\mathbb{S}$ en la linea $l\in\mathbb{L}$ en el dia $d\in\mathbb{D}$
$$X_{d,s,l} \in \mathbb{R}^+$$
* la cantidad de horas de paradas de linea $pl\in\mathbb{PL}$ en el dia $d\in\mathbb{D}$
$$P_{d,pl} \in \mathbb{Z}^+$$
* la cantidad de horas de paradas de linea $pl\in\mathbb{PL}$ en el dia $d\in\mathbb{D}$ en la linea $l\in\mathbb{L}$
$$P_{d,pl,l} \in \mathbb{Z}^+$$
* las horas de paradas de linea $pl\in\mathbb{PL}$ en la hora h $\in \mathbb{H}$
$$P_{h,pl} \in \{0,1\}$$
* las horas de paradas de linea $pl\in\mathbb{PL}$ en la linea $l\in\mathbb{L}$ en la hora h $\in \mathbb{H}$
$$P_{h,pl,l} \in \{0,1\}$$
* la asignación de setup de la linea $l\in\mathbb{L}$ del sku $s\in\mathbb{S_l}$ en el dia $d\in\mathbb{D}$ en la hora $h \in \mathbb{H}$
$$Y_{h,l,s} \in \left\{0,1 \right\}$$
* la cantidad de horas de setup de la linea $l\in\mathbb{L}$ en el dia $d\in\mathbb{D}$
$$STP_{d,l} \in \mathbb{Z}^+$$
* la cantidad de horas de setup de la linea $l\in\mathbb{L}$ en la hora h $\in \mathbb{H}$
$$STP_{h,l} \in \left\{0,1 \right\}$$
* la activación del cambio de setup de la linea $l\in\mathbb{L}$ en el dia $d\in\mathbb{D}$ en la hora h $\in \mathbb{H}$ desde el sku $s_1\in\mathbb{S}$ al sku $s_2\in\mathbb{S}$
$$Z_{h,l,s_1,s_2} \in \left\{0,1 \right\}$$
* la activación de cambio de setup producto de que se cambio de un sku $s_1\in\mathbb{S}$ a cualquier otro de la linea $l\in\mathbb{L}$ en el dia $d\in\mathbb{D}$ en la hora h $\in \mathbb{H}$
$$Zout_{h,l,s_1} \in \left\{0,1 \right\}$$
* la activación de cambio de setup producto de que se cambio a un sku $s_2\in\mathbb{S}$ desde cualquier otro de la linea $l\in\mathbb{L}$ en el dia $d\in\mathbb{D}$ en la hora h $\in \mathbb{H}$
$$Zin_{h,l,s_2} \in \left\{0,1 \right\}$$
* la cantidad de stock del sku $s\in \mathbb{S}$ en la ubicación $u\in \mathbb{U}$ en el día $d\in\mathbb{D}$
$$Q_{d,s,u}\in \mathbb{Z}^+$$
* la demanda satisfecha del sku $s$ en el día $d\in\mathbb{D}$
$$V_{w,s}\in\mathbb{R}^+ $$
### <span style="color:green">3.2. Elaboración</span>
#### <span style="color:green">Tanque medidora</span>
* cantidad de liquido de cerveza diluida en el tanque medidora $m\in \mathbb{M}$ en tiempo $h\in \mathbb{H}$
$$X_{h,cd,m} \in \mathbb{R}^+$$
* volumen de consumo de cerveza diluida $cd\in\mathbb{CD}$ desde tanque medidora $m\in \mathbb{M}$ en tiempo $h\in \mathbb{H}$
$$Xout_{h,cd,m}\in \mathbb{R}^+$$
* define el estado si el tanque está siendo vaciado o está estático de cerveza diluida $cd\in\mathbb{CD}$ desde tanque medidora $m\in \mathbb{M}$ en tiempo $h\in \mathbb{H}$
$$Yout_{h,cd,m}\in \lbrace 0,1 \rbrace $$
* se define el instante de inicio de llenado de cerveza diluida $cd\in\mathbb{CD}$ desde tanque medidora $m\in \mathbb{M}$ en tiempo $h\in \mathbb{H}$
$$ Zstart_{h,cd,m}\in \lbrace 0,1 \rbrace $$
* volumen de llenado de cerveza diluida $cd\in\mathbb{CD}$ en el tanque medidora $m\in \mathbb{M}$ en tiempo $h\in \mathbb{H}$
$$Xin_{h,cd,m}\in \mathbb{R}^+$$
* define el estado de si el tanque está siendo llenado de cerveza diluida $cd\in\mathbb{CD}$ desde tanque medidora $m\in \mathbb{M}$ en tiempo $h\in \mathbb{H}$
$$Yin_{h,cd,m}\in \lbrace 0,1 \rbrace $$
* se define el instante de termino de llenado de cerveza diluida $cd\in\mathbb{CD}$ desde tanque medidora $m\in \mathbb{M}$ en tiempo $h\in \mathbb{H}$
$$ Zstop_{h,cd,m}\in \lbrace 0,1 \rbrace $$
#### <span style="color:green">Tanque de fermentación</span>
* cantidad de liquido de cerveza diluida en el tanque de fermentación $f\in \mathbb{F}$ en tiempo $d\in \mathbb{D}$
$$X_{d,cd,f} \in \mathbb{R}^+$$
* consumo de cerveza diluida $cd\in\mathbb{CD}$ desde tanque de fermentación $f\in \mathbb{F}$ en tiempo $d\in \mathbb{D}$
$$Xout_{d,cd,f}\in \mathbb{R}^+$$
* inicio de llenado del tanque de fermentación $f \in \mathbb{F}$ en el día $d \in \mathbb{D}$ con la cerveza diluida $cd \in \mathbb{CD}$
$$Zstart_{d,cd,f}\in \{0,1\}$$
* instante de termino de bloque del tanque de fermentación lleno $f \in \mathbb{F}$ en el día $d \in \mathbb{D}$ con la cerveza diluida $cd \in \mathbb{CD}$
$$Zstop_{d,cd,f}\in \{0,1\}$$
## 4. Restricciones basales
### <span style="color:orange">4.1. Líneas de embotellado</span>
#### Cada linea produce solo un tipo de sku por hora
**<span style="color:orange">1. R_setup_linea (OK)</span>** sólo se puede definir un tipo de setup en instante de tiempo
$$\sum_{s\in\mathbb{S}_l}Y_{h,l,s} = 1 \quad \forall l\in\mathbb{L},h\in\mathbb{H}$$
#### Cada linea tendrá un rendimiento específico para cada sku en hectolitros por hora
**<span style="color:orange">2. R_rendimiento_linea_maximo (OK)</span>** La linea podrá producir el sku s solo si está en el estado de setup correspondiente
$$X_{h,s,l} \leq RL_{s,l}Y_{h,l,s} \quad \forall s\in\mathbb{S}_l,l\in\mathbb{L},h\in\mathbb{H}$$
#### Las lineas deberán detenerse por cambios de calibre
**<span style="color:orange">3. R_rendimiento_linea_setup (OK)</span>** La linea no podrá producir si esta en cambio de setup
$$X_{h,s,l} \leq RL_{s,l}(1-STP_{h,l}) \quad \forall s\in\mathbb{S}_l,l\in\mathbb{L},h\in\mathbb{H}$$
#### Cada linea al cambiar de sku tendrá un tiempo de setup
**<span style="color:orange">4.- R_cambio_calibre_out (OK)</span>** sabremos que estamos en un momento de cambio de calibre desde el sku $s_1$ en la hora $h\in\mathbb{H}$ en el día $d\in\mathbb{D}$ en la linea $l\in\mathbb{L}$, si la variable $Zout$ vale 1
$$Zout_{h,l,s_1} \geq Y_{h-1,l,s_1}-Y_{h,l,s_1} \quad \forall s_1\in\mathbb{S}_l\in\mathbb{S}_l,l\in\mathbb{L},h\in\mathbb{H}$$
**<span style="color:orange">5.- R_cambio_calibre_in (OK)</span>** sabremos que estamos en un momento de cambio de calibre al sku $s_2$ en la hora $h\in\mathbb{H}$ en el día $d\in\mathbb{D}$ en la linea $l\in\mathbb{L}$, si la variable $Zin$ vale 1
$$Zin_{h,l,s_2} \geq Y_{h,l,s_2}-Y_{h-1,l,s_2} \quad \forall s_2\in\mathbb{S}_l\in\mathbb{S}_l,l\in\mathbb{L},h\in\mathbb{H}$$
**<span style="color:orange">6.- R_cambio_calibre_1 y R_cambio_calibre_2 (OK)</span>** la variable $Z$ valdrá 1 si se cambio de calibre desde el sku $s_1$ al sku $s_2$ en la hora $h\in\mathbb{H}$ en el día $d\in\mathbb{D}$ en la linea $l\in\mathbb{L}$, si la variable $Z$ vale 1
$$\sum_{s_2\in\mathbb{S} \| s_2\neq s_1} Z_{h,l,s_1,s_2} = Zout_{l,h,s_1} \quad \forall s_1\in\mathbb{S}_l,l\in\mathbb{L},d\in\mathbb{D},h\in\mathbb{H}$$
$$\sum_{s_1\in\mathbb{S} \| s_2\neq s_1} Z_{h,l,s_1,s_2} = Zin_{l,h,s_2} \quad \forall s_2\in\mathbb{S}_l,s_2\in\mathbb{S}_l,l\in\mathbb{L},d\in\mathbb{D},h\in\mathbb{H}$$
**<span style="color:orange">7.-R_cambio_calibre_3(OK)</span>** Es necesario decir que estamos en un estado de setup de linea por el largo de tiempo correspondiente. Esto solo va a aplicar cuando $h$ sea mayor que un día y menor que los tres meses menos un día
$$ \sum_{h..h-1+TD_{s_1,s_2}} STP_{h,l} \geq TD_{s_1,s_2}Z_{h,l,s_1,s_2} \quad \forall s_1\in\mathbb{S}_l,s_2\in\mathbb{S}_l,l\in\mathbb{L},h\in\mathbb{H}$$
**<span style="color:orange">8.-R_cambio_calibre_4 (OK)</span>** [Necesario ver con compatibildiad de disminución setup por detención]Para el caso del primer día y el último día, de los primeros 3 meses, se debe cumplir
$$ STP_{l,h+t} \geq Z_{h,l,s_1,s_2} \forall t\in\lbrace 0,...,TD_{s_1,s_2}-1 \rbrace ,s_1\in\mathbb{S}_l,s_2\in\mathbb{S}_l,l\in\mathbb{L},h\in\mathbb{H}$$
**<span style="color:orange">8.5.-R_cambio_calibre_5 (OK)</span>**
$$\sum_{s_1,s_2: s_1\neq s_2}Z_{h,l,s_1,s_2}\leq 1 \qquad \forall h\in \mathbb{H}, \forall l\in \mathbb{L}$$
**<span style="color:orange">9.-R_cambio_calibre_6 (OK)</span>** Si en la hora anterior se estuvo en un cambio de calibre, no puedo inducir un nuevo cambio de calibre
$$(1-STP_{h-1,l})\geq Z_{h,l,s_1,s_2} \quad \forall s_1\in\mathbb{S}_l,s_2\in\mathbb{S}_l,l\in\mathbb{L},h\in\mathbb{H}$$
#### Un tanque de medición puede alimentar a distintas líneas de forma secuencial
**<span style="color:orange">10.</span>** Conservación de masa: lo ocupado para fabricar un sku $s$ de cerveza diluida $cd$ debe ser igual a lo que sale de los tanques medidores $m$
$$\sum_{l\in\mathbb{L}, s\in\mathbb{S}_{cd}} X_{h,s,l} = \sum_{m\in\mathbb{M}} Xout_{h,cd,m} \quad \forall cd\in\mathbb{CD},h\in\mathbb{H}$$
#### Cada sku podrá tener un límite de producción en una ventana de tiempo definida
**<span style="color:orange">-11.</span>** La suma de las producciones de sku en las distintas lineas, dentro de la ventana de tiempo
$$\sum_{d\in \mathbb{D}_{rmp}, h\in\mathbb{D}_d,l\in\mathbb{L}, s\in\mathbb{S}_{rmp}\cap\mathbb{S}_l} X_{h,s,l} \leq MP_{rmp} \quad \forall rmp\in\mathbb{RMP}$$
**<span style="color:orange">12. R_osvaldo_1</span>**
$$ Y_{h,l,s_1}+ Y_{h+t,l,s_2} \leq 1 \qquad \forall t \in \{1,...,+TD_{s_1,s_2}\}, \forall h, l,s_1, s_2 $$
**<span style="color:orange">13. R_osvaldo_2</span>** $$ 1- \sum_{s} Y_{h,l,s} = STP_{h,l} \qquad \forall h,l$$
**<span style="color:orange">14. R_osvaldo_3</span>**
$$PL_{h,l} \leq \sum_{s}Y_{h,l,s} \qquad \forall h,l$$
### <span style="color:rgb(240,230,140)">4.2. Detenciones de linea</span>
#### Las lineas de embotellado deben parar con el fin de hacer mantenimiento programado, lo que se realizará en días y en un largo de tiempo específico
**<span style="color:rgb(240,230,140)">1. R_rendimiento_linea_parada (OK)</span>** Se limitará la productividad de las lineas a 0 en los casos en que existan parádas de linea por mantención $P_{h,l}$
$$X_{h,s,l} \leq RL_{s,l}(1-P_{h,l}) \quad \forall s\in\mathbb{S}_l,l\in\mathbb{L},h\in\mathbb{H}$$
$STP_{h,l}+P_{h,l}\leq 1$$
**<span style="color:rgb(240,230,140)">2. </span>** Se considerarán paradas de acuerdo a lo definido en los parámetros en la hora, linea para cada parada
$$ P_{h,l,pl}=1 \quad \forall pl\in\mathbb{PL}, h\in\mathbb{H}_{pl}, l\in\mathbb{L}_{pl} $$
**<span style="color:rgb(240,230,140)">3.</span>** En otro caso se considerarán que no están paradas
$$ P_{h,l,pl}=0 \quad \forall pl\in\mathbb{PL}, (h,l)\not\in\lbrace \mathbb{H}_{pl} \times \mathbb{L}_{pl}\rbrace $$
### <span style="color:green">4.3. Elaboración</span>
**<span style="color:green">1.</span>** El tiempo entre la fermentación de una cerveza $cd\in \mathbb{CD}_{by}$ con levadura $by\in\mathbb{BY}$ en los tanques de fermentación, debe ser menor al tiempo de ciclo de las levaduras.
$Ztart$ resumen de la fermentación que me indique cuando inicie el uso de una levadura
\begin{align*}
Zstart_{d,by}&\leq \sum_{cd \in \mathbb{CD}_{by}, f\in\mathbb{F}} Zstart_{d,cd,f} \quad \forall d \in \mathbb{D}, by \in \mathbb{BY}\\
Zstart_{d,by}&\geq Zstart_{d,cd,f} \quad \forall d \in \mathbb{D}, cd \in \mathbb{CD}_{by}, f\in \mathbb{F}
\end{align*}
**<span style="color:green">2.</span>** debo asegurarme que al menos se cumplan 7 días entre el inicio del uso de una levadura y otra
\begin{align*}
SBY_{d,by} + \sum_{ t\in\{d,...,d+7\}}Zstart_{t,by}&\geq 2 \cdot Zstart_{d,by} \quad\forall d \in \mathbb{D}, by\in \mathbb{BY}\\
SBY_{d,by}&\geq0 \quad \forall d \in \mathbb{D}, by\in\mathbb{BY}
\end{align*}
**<span style="color:green">3.</span>** Toda la producción de skus $s\in\mathbb{S_{cd}}$ producidos desde la cerveza diluida $cd\in\mathbb{CD}$ será igual a toda la cerveza que sale desde los tanques medidores $m\in\mathbb{M}$
$$\sum_{s\in\mathbb{S_{cd}}} X_{h,s} = \sum_{m\in\mathbb{M}} Xout_{h,cd,m} \quad \forall cd\in\mathbb{CD},h\in\mathbb{H}$$
**<span style="color:green">4.</span>** Cantidad producida en fermentación no puede superar la capacidad de un tanque de fermentación $f\in\mathbb{F}$
$$X_{d,cd,f}\leq CAP_{cd,f} \quad \forall d \in \mathbb{D}, cd \in \mathbb{CD}$$
**<span style="color:green">5.</span>** Todo tanque de fermentación solo puede preparar a lo mas 1 batch de un cerveza $cd \in \mathbb{CD}$ durante el periodo de fermentación
$$\sum_{\{d,...,d-1+TF_{cd}\}}Yin_{d,cd,f} \geq TF_{cd}\cdot Zstart_{d,cd,f} \quad \forall cd \in \mathbb{CD}_{f}, f\in \mathbb{F}$$
**<span style="color:green">6.</span>** si cerveza $cd\in \mathbb{CD}$ termina de producirse en $d\in \mathbb{D}$ entonces no puede estar lista dentro del periodo de fermentación $\{d-TF_{cd},...,d\}$
$$\sum_{cd}\sum_{\{d-TF_{cd},...,d-1\}}Xout_{d,cd,f}\leq (1-Yout_{d,cd,f})$$
**<span style="color:green">7.</span>** cantidad de cerveza $cd\in \mathbb{CD}$ que sale del proceso de fermentación es igual a cantidad que entra a las medidoras $m \in \mathbb{M}$
$$ \sum_{f\in \mathbb{F}}Xout_{d,cd,f} = \sum_{h \in \mathbb{H}_d,m\in\mathbb{M}} Xin_{h,m,cd} \quad \forall d\in\mathbb{D}_{M+3}$$
#### **<span style="color:green">Conservación de masas entre llenado de botellas y estanques</span>**
**<span style="color:green">8.R_tanques_medidores_1 (OK)</span>** Conservación de masa: El nivel de las tanques medidores $X$ será igual al nivel del tanque medidor anterior $X$ más el volumen de cerveza diluida que entra $Xin$ menos el volumen de cerveza diluida que sale $Xout$
$$X_{h,cd,m} = X_{h-1,cd,m} + Xin_{h,cd,m} - Xout_{h,cd,m} \quad \forall cd\in\mathbb{CD},m\in\mathbb{M},h\in\mathbb{H}$$
#### **<span style="color:green">Llenado y vaciado de tanques medidores</span>**
**<span style="color:green">9. R_tanques_medidoras_2 (OK)</span>** No se puede llenar un tanque y al mismo vaciar un tanque , ni ocuparlo en más de un tipo de cerveza diluida
$$\sum_{cd\in\mathbb{CD},fi\in\mathbb{ FI} }Yin_{h,cd,fi,m} + \sum_{cd\in\mathbb{CD}}Yout_{h,cd,m} \leq 1 \quad \forall m\in\mathbb{M},h\in\mathbb{H}$$
**<span style="color:green">10. R_tanques_medidoras_llenado_1(OK)</span>** Llenado de las medidoras es secuencial y no simultaneo. $Zstart$ será 1 cuando se inicia el llenado
$$Zstart_{h,cd,fi,m} \geq Yin_{h,cd,fi,m}-Yin_{h-1,cd,fi,m}$$
**<span style="color:green">11.</span>** Llenado de las medidoras es secuencial y no simultaneo. $Zstop$ será 1 cuando se termina el llenado
$$Zstop_{h,cd,fi,m} \geq Yin_{h,cd,fi,m}-Yin_{h+1,cd,fi,m}$$
**<span style="color:green">12.</span>** se considerará que se termina el llenado dependiendo de la velocidad de llenado y la capacidad del tanque $m$
$$ Zstop_{h+TLLM_{fi,m},cd,fi,m}\geq Zstart_{h,cd,fi,m} $$
Se necesita el parámetro $TLLM_{fi,m}$ que será el tiempo de llenado, definido como
$$ TLLM_{fi,m} \simeq \frac{ \text{Volumen de tanque } m }{ \text{velocidad de llenado de la filtradora } fi } $$
**<span style="color:green">13.</span>** el tanque se llenará a velocidad $RFi$, rendimiento de la filtradora
$$Xin_{h,cd,fi,m}\leq RFi_{fi} \cdot Yin_{h,cd,fi,m} $$
**<span style="color:green">14.</span>** balance de masas de llenado
$$ Xin_{h,cd,m}= \sum_{fi\in\mathbb{FI}}Xin_{h,cd,fi,m}$$
**<span style="color:green">15.</span>** Entre el $Zstart$ y el $Zstop$ , la variable $Y$ debe ser 1. Para asegurar eso, debo hacer que desde el ztart y el en adelante tolo el tiempo de llenado debe ser 1
$$ Zstart_{h,cd,fi,m} = Yin_{h+t,cd,fi,m} $$ $$ \quad \forall h\in\mathbb{H}, t\in\lbrace t+h\in\mathbb{H}| t\geq0 \wedge t<TLLM_{fi,m} \rbrace, fi \in\mathbb{FI}, m\in\mathbb{M} $$
**<span style="color:green">16.</span>** La hora posterior al $Zstop$, comienza el vaciado de la medidora. Es decir el Yout toma valor
$$ Zstop_{h,cd,fi,m} \leq Yout_{h+1,cd,m} $$
**<span style="color:green">17.</span>** El $Yout$ o $Yin$ se mantendrán positivo hasta que $X$ sea 0
$$ M\cdot \left( Yout_{h,cd,m} + \sum_{fi\in\mathbb{FI}} Yin_{h,cd,fi,m} \right) \geq X_{h,cd,m} $$
**<span style="color:green">18.</span>** El volumen de llenado del tanque medidor tendrá que ser el máximo tamaño de la medidora
$$ X_{h,cd,m} = \sum_{fi\in\mathbb{FI}}Zout_{h,cd,fi,m}\cdot \text{Cap}_{m} $$
**<span style="color:green">19.</span>** El volumen de vaciado de la medidora ocurrirá solo si está en estado $Yout=1$
$$ Xout_{h,cd,m}\leq M \cdot Yout_{h,cd,m} $$
**<span style="color:green">19.</span>** Solo puede tomar 1 solo valor las variables $Zstart$ y $Zstop$ para cada filtradora
$$ \sum_{cd\in\mathbb{CD}, m\in\mathbb{m}} Zstart_{h,cd,fi,m}+Zstop_{h,cd,fi,m}\leq 1 $$
#### Volumenes y estado inicial de los tanques
**<span style="color:rgb(72, 180, 224)">1.</span>** la cantidad de cerveza hasta el tiempo de liberación del tanque fermentador $f\in \mathbb{F}$ debe ser igual al volumen inicial
\begin{align*}
X_{t,cd,f} &= VL_{cd,f}, & \forall t\in \{d,...,d+TFzero_{cd,f}\}\\
Zstop_{t,cd,f} &= 1,&\text{con}\;t = TFzero_{cd,f}\\
Zstop_{d,cd,f} &= 0, & \forall d \in \{0,...,TFzero_{cd,f}\}
\end{align*}
**<span style="color:rgb(72, 180, 224)">2.</span>** la cantidad de cerveza hasta el tiempo de liberación de la medidora $m \in \mathbb{M}$ debe ser igual al volumen inicial
\begin{align*}
X_{t,cd,f} &= VL_{cd,m}, & \forall t\in \{d,...,d+TFzero_{cd,m}\}\\
Zstop_{t,cd,m} &= 1,&\text{con}\;t = TFzero_{cd,m}\\
Zstop_{d,cd,f} &= 0, & \forall d \in \{0,...,TFzero_{cd,m}\}
\end{align*}
### <span style="color:rgb(72, 180, 224)">4.4. Demanda</span>
#### La demanda semanal/mensual debe atribuirse de manera diaria, uniformemente entre las semanas siempre el primer día de la semana
**<span style="color:rgb(72, 180, 224)">1. R_venta_semanal_1 (OK)</span>** Lo primero es fijar que todos los días que no sean lunes tendrán venta 0
$$V_{d,s}=0\quad \forall s\in\mathbb{S},\; d\in \lbrace\mathbb{D} | \text { no es lunes }\rbrace $$
**<span style="color:rgb(72, 180, 224)">2. (OK)</span>** La demanda semanal se devengará el primer día de la semana
$$ V_{d,s}\geq0 \quad s\in\mathbb{S},\; \forall d\in\lbrace\mathbb{D} | \text{ es lunes } \rbrace$$
**<span style="color:rgb(72, 180, 224)">2.1. R_venta_semanal_2 (OK) </span>** venta semanal
.
$$ V_{w,s}=V_{d,s} \qquad \quad \forall w \in \mathbb{W}, s\in \mathbb{S}, d = \min D_w$$
**<span style="color:rgb(72, 180, 224)">2.2. R_venta_semanal_3 (OK) </span>** balance de ventas segun ubicacion
$$V_{d,s} = \sum_{u\in\{Local, NoLocal\}}V_{d,s,u} \qquad \forall d\in D, s\in\mathbb{S}$$
**<span style="color:rgb(72, 180, 224)">2.2. R_venta_demanda_1 (OK) </span>**
$$V_{w,s}\leq DE_{w,s} \qquad \forall w \in \mathbb{W}, s\in \mathbb{S}$$
### <span style="color:rgb(72, 180, 224)">4.5. Stocks e importaciones</span>
#### Balance de masa de stocks, venta, producción e importaciones

**<span style="color:rgb(72, 180, 224)">3.</span>** A grandes razgos, es posible hacer una conservación de masas general que incluye los valores agregados de stock anterior, la producción, las importaciones, menos la venta
$$Q_{d,s}= Q_{d-1,s}+X_{d,s}+IM_{d,s}-V_{d,s}$$
**<span style="color:rgb(72, 180, 224)">4. R_stock_dia_1 (OK)</span>** el detalle al interior de cada lugar de producción es el siguiente
$$ Q_{d,s,u}=Q_{d-1,s,u}\cdot 1_{\mathbb{D}}(d-1) + SI_{s,u}\cdot 1_{Local}(u)\cdot 1_{0}(d) $$ $$+X_{d,s,u}\cdot 1_{Local}(u)+IM_{d,s,u}\cdot 1_{Local}(u)+QT_{d,s,u}\cdot \mathbb{1}_{NoLocal}(u)$$ $$-QT_{d,s,u}\cdot \mathbb{1}_{Local}(u)-V_{d,s,u} \qquad \forall d\in \mathbb{D},s\in \mathbb{S},u\in \{ Local, NoLocal\}$$
Donde cada dia se traslada material desde Local a RED
**<span style="color:rgb(72, 180, 224)">5. R_stock_dia_2 (OK)</span>**
$$Q_{d,s,Red}=Q_{d,s,Local} + Q_{d,s,NoLocal}$$
### <span style="color:rgb(72, 180, 224)">4.6. Política de stocks</span>
Cumplimiento de politica de stock por niveles de cada sku y penalización de aquellos productos con stock inferior al nivel SS, y mayor al nivel MAX, por cada hectolitro
**<span style="color:rgb(72, 180, 224)">1. R_politica_stock_lower (OK)</span>** Será necesario medir cuanto falta para estar por sobre una política de stock
$$Q_{d,s,u}+ SPSlower_{d,s,c,n,u} \leq PS_{s,c,n,u} \quad \forall d\in \mathbb{D},s\in \mathbb{S},c\in \mathbb{C},n\in \mathbb{N},u \in \mathbb{U}$$
min<Q<max
min<Q => Q-aux<=min
Q<max => Q+aux => max
correccion:
$$Q_{d,s,u}+ SPSlower_{d,s,c,n,u} = PS_{s,c,n,u} \quad n = min N$$
**<span style="color:rgb(72, 180, 224)">2. R_politica_stock_upper (OK)</span>** Será necesario medir cuanto sobra para estar por debajo una política de stock
$$Q_{d,s,u}- SPSupper_{d,s,c,n,u} \geq PS_{s,c,n,u} \quad \forall d\in \mathbb{D},s\in \mathbb{S},c\in \mathbb{C},n\in \mathbb{N},u \in \mathbb{U}$$
correccion:
$$Q_{d,s,u} = PS_{s,c,n,u}+ SPSupper_{d,s,c,n,u} \quad n=max N$$
### <span style="color:purple">4.7. Equivalencia dias-horas</span>
**<span style="color:purple">1. R_produccion_dia_3 (OK)</span>**
$$X_{h,s}=\sum_{l\in \mathbb{L}} X_{h,s,l}$$
**<span style="color:purple">2. R_produccion_dia_1 (OK)</span>** produccion total de lineas por dia
$$X_{d,s,l} = \sum_{h\in\mathbb{H}_d}X_{h,s,l} \quad \forall d\in\mathbb{D}, s\in\mathbb{S}$$
**<span style="color:purple">2.1 R_produccion_2 (OK)</span>**
$$X_{d,s}=\sum_{l\in \mathbb{L}} X_{d,s,l}$$
**<span style="color:purple">3.</span>** total de paradas diaria a nivel horas de un dia
$$P_{d,pl} = \sum_{h\in\mathbb{H}_d}P_{h,pl} \quad \forall d\in\mathbb{D}, s\in\mathbb{S}$$
**<span style="color:purple">4.</span>** total de paradas de lineas durante un dia
$$P_{d,l} = \sum_{ pl\in\mathbb{PL}_l}P_{d,pl} \quad \forall d\in\mathbb{D}, l\in\mathbb{L}$$
**<span style="color:purple">6.</span>** cambios de setup durante un dia es total de horas de cambios de setup
$$STP_{d,l} = \sum_{h\in\mathbb{H}_d}STP_{h,l} \quad \forall d\in\mathbb{D}, l\in\mathbb{L}$$
## 5. Función Objetivo
La función objetivo buscará cumplir multiples objetivos $FO\in \mathbb{R}$
Los objetivos principales serán:
* Maximizar la productividad de la linea $FO_{productividad}$
* Minimizar quiebres de stock $FO_{quiebres}$
Existirán objetivos secundarios como :
* Maximizar producción considerando ventas con MACO $FO_{MACO}$
* Minimizar Stock máximo $FO_{stockmaximo}$
Además de elementos obligatorios auxilires como:
* Cumplimiento de los ciclos de fermentación $FO_{levaduras}$
* Otros que surjan.
Con esto la función objetivo será
$$ FO = FO_{eficiencia} + FO_{quiebres} +FO_{MACO} + FO_{stockmaximo} + FO_{levaduras}$$
### Maximizar la productividad de las lineas (R_FOproductividad OK)
$$ FO_{productividad} = beneficio\_productividad*\sum_{s\in\mathbb{S},d\in\mathbb{D}}X_{d,s} $$
### Minimizar quiebres de stock (R_FOPoliticaLower OK)
$$ FO_{quiebres} = -penalizacion\_quiebre*\sum_{s\in\mathbb{S},c\in\mathbb{C},n\in\mathbb{N},u\in\mathbb{U}}\alpha_{c,n,u} \cdot SPSlower_{d,s,c,n,u} $$
### Maximizar MACO
$$FO_{MACO}=beneficio\_MACO \sum_{d in \mathbb{D},s\in\mathbb{S}} MACO_s\cdot X_{d, s}$$
### Penalización superar Stock máximo (R_FOPoliticaUpper OK)
$$FO_{stock maximo}=penalizacion\_maximo \sum_{s\in\mathbb{S},c\in\mathbb{C},n\in\mathbb{N},u\in\mathbb{U}}\alpha_{c,n,u} \cdot SPSupper_{d,s,c,n,u} $$
### Levaduras
$$FO_{levaduras} = penalizacion\_levaduras \cdot \sum_{d\in\mathbb{D},by\in\mathbb{BY}}SBY_{d,by}$$
$s_1<s_2<...<s_n<s_1$
defino $Z_{h,s1} = h$ si estas en $h$ 0 eoc.
$$Z_{hs1} + \frac{X_{h,s1}}{RL_{s1}}+ TD_{s1,s2} \leq Z_{h,s2}$$
$$ \sum_h X_{h,l,s} = X_{d,s}$$
paradas y cambios de setup
$$PL_h + STP_h =1$$
# Modelo Medidoras
**<span style="color:green">9. R_tanques_medidoras_vaciado_2a (OK)</span>**
$$ Xout_{h,cd,m} \leq Yout_{h,cd,m} \cdot Cap_m
\qquad \forall (h,cd,m) \in \mathcal{D}\left( Xout\right) $$
**<span style="color:green">9. R_tanques_medidoras_vaciado_2b (OK)</span>**
$$ Xin_{h,cd,fi,m} \leq RFi_{fi} \cdot (1-Yout_{h,cd,m}) \qquad \forall (h,cd,fi,m) \in \mathcal{D}\left( Xin\right) $$
**<span style="color:green">9. R_tanques_medidoras_vaciado_2c (OK)</span>**
$$ X_{h,cd,m} \leq Cap_m \qquad \forall (h,cd,m) \in \mathcal{D}\left( X\right) $$
**<span style="color:green">9. R_tanques_medidoras_1 (OK)</span>**
$$ X_{h,cd,m} = X_{h-1,cd,m} + \sum_{fi} Xin_{h,cd,fi,m} - Xout_{h,cd,m} \qquad \forall (h,cd,m) \in \mathcal{D}\left( X\right) $$
**<span style="color:green">9. R_tanques_medidoras_llenado_3 (OK)</span>**
$$ Zstop_{h+TLLM_{fi,m}-1,cd,fi,m} = Zstart_{h,cd,fi,m} \qquad \forall (h,cd,fi,m) \in \mathcal{D}\left( Zstop\right) $$
$$ \int_{t=0}^h \left( Zstart_{t,cd2,fi,m} - Zstop_{t-1 ,cd,fi,m} \right) \geq 0 \qquad \forall (h,cd,fi,m) \in \mathcal{D}\left( Zstart\right) $$
$$ \int_{t=0}^h \left( Zstart_{t,cd,fi,m} - Zstop_{t-1,cd,fi,m} \right) \cdot RFi_{fi} \leq 2 \cdot Xin_{h,cd,fi,m} \qquad \forall (h,cd,fi,m) \in \mathcal{D}\left( Xin\right) $$
$$ \int_{t=0}^h \left( \sum_{fi\in \mathbb{FI}} Zstart_{t,cd,fi,m} - Zstop_{t-1,cd,fi,m} \right) \geq 1-Yout_{h,cd,m} \qquad \forall (h,cd,m) \in \mathcal{D}\left( Yout\right) $$