Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Grupo 2
Se considera que el producto que se comercializa es indivisible, y por lo tanto las variables
definidas son enteras. Se debe indicar con el comando “gin” en LINDO que las cuatro primeras
variables son enteras.
Se definen cuatro variables binarias para decidir si el proceso se pone en marcha o no.
1, 𝑠𝑖 𝑠𝑒 𝑝𝑜𝑛𝑒 𝑒𝑛 𝑚𝑎𝑟𝑐ℎ𝑎 𝑒𝑙 𝑝𝑟𝑜𝑐𝑒𝑠𝑜 𝑖
yi: {
0, 𝑠𝑖 𝑛𝑜 𝑠𝑒 𝑝𝑜𝑛𝑒 𝑒𝑛 𝑚𝑎𝑟𝑐ℎ𝑎 𝑒𝑙 𝑝𝑟𝑜𝑐𝑒𝑠𝑜 𝑖
Se indica con el comando “int” que las variables yA, yB, yC e yD son binarias.
Función objetivo:
Se desea decidir qué procesos usar y a qué capacidad con el objetivo de minimizar los costes.
Restricciones:
Se introducen tres bloques de restricciones: uno para cubrir la demanda, otro para no
sobrepasar la capacidad de producción y, por último, las condiciones lógicas para las variables
binarias.
Fig. 1 Definición del problema lineal mixto a minimizar que resuelve el solver intlinprog en MatLab
Fuente: Documentación de MathWorks Help
El vector x queda definido en la función como el vector que recoge las variables del problema.
El número de variables y su orden en el vector x queda definido con el tamaño de la matriz A,
en concreto con el número de columnas, que en este caso son 8. La parte independiente de las
restricciones en el vector b. Las restricciones de desigualdad se deben escribir en forma menor
o igual (≤) y se introducen en la matriz A. Para las restricciones de tipo igual se utiliza el vector
fila Aeq. Por último, el vector f recoge los coeficientes de la función objetivo.
Optimización Industrial Iker Ruiz de Esquide e Irene Izco
Grupo 2
El vector “intcon” se utiliza para indicar la posición de las variables que son enteras. En este caso
se introduce intocon= [5, 6, 7, 8], ya que las variables. Finalmente, para acotar los valores de las
variables se definen los valores máximos (upper bound) y mínimos (lower bound) en los vectores
ub y lb. Se debe cumplir la condición de no-negatividad para las variables continuas (ub=infinito
y lb=0) y las binarias se definen de lb=0 a ub=1.
A = [-1,-1,-1,-1,0,0,0,0;
0,0,0,0,1,-1,0,0;
0,0,0,0,0,0,1,1;
1,0,0,0,-2000,0,0,0;
0,1,0,0,0,-2200,0,0;
0,0,1,0,0,0,-2500,0;
0,0,0,1,0,0,0,-2800];
b = [-4400,0,1,0,0,0,0];
Aeq = [0,0,0,0,1,0,-1,0];
beq = 0;
lb = [0;0;0;0;0;0;0;0];
ub = [inf;inf;inf;inf;1;1;1;1];
Fig. 2 Formulación de los datos del problema en Matlab.
El algoritmo de MATLAB
Como se explica en la página web de MathWorks la función intlinprog ejecuta un algoritmo
en 6 pasos. Si llega a la solución del problema en alguno de estos pasos deja de ejecutar el
algoritmo.
Los pasos 5 y 6 se tratan de técnicas para resolver problemas de programación lineal enteros.
MATLAB solo saltará de uno al otro si no consigue resolver el problema con el primero.
La solución obtenida en MATLAB es x= [0, 1600, 0, 2800, 0, 1, 0, 1] y fval= 13150 como se muestra
en la Fig. 3.
Del resultado obtenido podemos destacar que el valor de la función objetivo y por tanto el coste
mínimo de producción es de 13150 unidades monetarias. Para alcanzar esa solución óptima
únicamente se pondrán en marcha únicamente las máquinas B y D, fabricando 1600 unidades
de producto mediante la máquina A y 2800 unidades con la D.
Se incluye la formulación y resolución del mismo problema con LINDO para poder verificar que
la solución obtenida es exactamente la misma con ambos softwares.