---
title: "Goldratt"
author: "Ricardo R. Palma"
date: "`r Sys.Date()`"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## El problema de Goldratt P&Q


```{r}
library(lpSolve)
```


![TOC Energia](TOC_Energ.png)
La formulación canónica del problema sería así


Este ejemplo tiene tres variables inćognitas llamada $X_1$, $W_2$ y $X_3$.
Tendremos que armar una matriz que tenga 3 columnas y tantas filas como restricciones necesitemos poner.
Cada restricción nueva incrementa exponemcialmente el tiempo de ejecución.

![Forma Canónica](canonico.png)

## Planteo del problema de Goldratt

Aqui tenemos dos incógnitas llamadas P y Q y 6 restricciones. Dos son relativas al potencial de mercado de P y Q y cuatro corresponden a las horas hombres disponibles de A, B, C y D.

![Ecuaciónes](planteo.png)


## Armado para la formulación con la biblioteca lpSolve


```{r}
# Coeficientes de la función objetivo (costos)
f.obj <- c(90-20-20-5, 100-20-20)

# Matriz de restricciones
f.con <- matrix(c(1,0,0,1,15,10,15,30,15,5,15,5), nrow = 6, byrow = TRUE)

# Direcciones de las restricciones
f.dir <- c("<=", "<=", "<=", "<=", "<=", "<=")

# Valores del lado derecho de las restricciones
f.rhs <- c(100, 90,2400,2400,2400,2400)

```



Ver las matrices

1. Función Objetivo a maximizar

```{r}
f.obj
```

2. Matriz de Coeficientes Técnicos (restricciones)

```{r}
f.con
```

3. Matriz de dirección de las restricciones

```{r}
f.dir
```

4. Límite de las restricciones (lado derecho de la ecuación)

```{r}
f.rhs
```

# Resolver el problema de programación lineal
```{r}
solucion <- lp("max", f.obj, f.con, f.dir, f.rhs, compute.sens = TRUE)
```





# Mostrar el resultado

```{r}
solucion$objval # valor óptimo de la función objetivo
solucion$objval - 6000 # Solución descontanto el Operating Expense

solucion$solution # valores óptimos de P y Q

```




## Otros valores Interesantes

Sensibilidad

```{r}
solucion$sens.coef.to
```

