Академический Документы
Профессиональный Документы
Культура Документы
n_lineal
1 Programación Lineal
Para poder usar este programa debemos tener una formulación correcta del problema, para ello
debemos tener una función objetivo y un set de restricciones que sean lineales. Podemos mini-
mizar o maximizar la función objetivo y todos las restricciones deben ser de la forma:
LHS ≤ RHS
1.1 Poblema
• Un turno tiene una duración de 8h
• El horno puede utilizarse 6h por turno y tiene una capacidad de 30 kg de masa
• La unidad de fermentación puede utilizarse 7h por turno y tiene una capacidad de 25 kg de
masa
1.2 Objetivo
maximizar f (x) = v1 × x1 + v2 × x2 + v3 × x3
donde la utilidad por producto esta indicada en la siguiente lista:
1.3 Restricciones
Demanda máxima:
Ahora creamos una matriz con todas las restricciones y le vamos a llamar RHS
1
In [5]: RHS = np.array(demanda_máxima + capacidad_máquinas)
print(RHS)
Ahora creamos una matriz con los requerimientos de cada restricción por producto y le vamos
a llamar LHS
[[ 1. 0. 0. ]
[ 0. 1. 0. ]
[ 0. 0. 1. ]
[ 0.375 0.05 0.0045]
[ 1. 0.15 0.045 ]]
[[1, 0, 0], [0, 1, 0], [0, 0, 1], [0.375, 0.05, 0.0045], [1.0, 0.15000000000000002, 0.045]]
1.4 Método
Definir el método que va a solucionar el problema
1.5 Solución
Si queremos maximizar la función objetivo escribimos ’max’ en el último input de la función ILP(),
caso contrario escribimos ’min’. Si simplemente deseamos resolver el problema con programación
lineal corremos lo siguiente:
donde el penúltimo input de la función ILP(), i.e. ’ ’, indica que queremos resolver el problema
con programmación lineal.
2
In [12]: print('La utilidad obtenida es de {} USD.'.format(objective))
Sin embargo, en la realidad no es posible producir 0.66667 unidades de pan 2, y por ello nece-
sitamos resolver el problema con programación lineal entera. Para hacer esto debemos pasar el
parametro ’Integer’ al penúltimo input de la función ILP(), tal como se muestra a continuación: