Técnicas de Optimización en Ingeniería,Máster Oficial en Tecnologías de la Información y las Comunicaciones, curso 2006/2007.
Práctica 1. Programación lineal y cuadrática usando Matlab.
Matlab ofrece programas para solucionar problemas de programación lineal y cuadrática, mediante las librerías en la toolbox de optimización. Cualquier versión de Matlab a partir de la 5.3 tiene disponible estas funciones.
Programación Lineal:
La función de Matlab para resolver problemas de programación lineal es “linprog”. Como podéis ver en la ayuda de Matlab, esta función resuelve el siguiente problema:
min(cT x)x
Ax b
Así pues hay que poner el problema como un problema de minimización, con restricciones de igualdad o menor-igual.
La función se invoca desde Matlab o desde un archivo .m como [x,fval,r]=linprog(c,A,b,Aeq,beq,LB,UB), con A, b, condiciones de menor-igual, Aeq, beq, condiciones de igualdad, LB cota inferior para las x, UB cota superior para las x.
Ejercicio 1: Resolver el siguente programa lineal con la función linprog de Matlab
min(z 80x1 60x2 )0.2x1 0.32x2 0.25
x1 x2 1xi 0
Ejercicio 2: Resolver el siguente programa lineal con la función linprog de Matlab
max(z 3x1 5x2 )x1 4
x2 63x1 2x2 18
xi 0
Nota: Ten cuidado con la función, hay que maximizarla, y recuerda que Matlab minimiza por defecto. Si no hay restricciones de igualdad introduce matrices vacías [] para Aeq y beq.
Ejercicio 3: Resolver el siguente programa lineal con la función linprog de Matlab
min(z x1 x2 )x1 5x2 5
2x1 x2 4
xi 0
Programación cuadrática:
La función de Matlab para resolver problemas de programación lineal es “quadprog”. Como podéis ver en la ayuda de Matlab, esta función resuelve el siguiente problema:
min( 1
xT Hx cT x)x 2
Ax b
La función se invoca desde Matlab o desde un archivo .m como [x,fval,r]=quadprog(H,c,A,b,Aeq,beq,LB,UB,x0), con A, b, condiciones de menor- igual, Aeq, beq, condiciones de igualdad, LB cota inferior para las x, UB cota superior para las x, x0 punto inicial para la optimización (si conocido).
Ejercicio 4: Resolver el siguiente problema:
2 2 2
max( z 10x1
20x2 30x3 10x1 x2 8x1 x3 6x2 x3 x1 2x2 x3 )x1 2x2 x3 10
xi 0