| | 1 | TolGlpk: Interfaz Tol para resolver problemas de programación lineal |
| | 2 | |
| | 3 | Los problemas de programación lineal son muy frecuentes en la práctica. El paquete |
| | 4 | TolGlpk brinda una interfaz para resolver este tipo de problemas desde Tol basado en la |
| | 5 | biblioteca Glpk. Permite especificar el tipo de las variables: binarias, enteras o continuas; y |
| | 6 | opcionalmente se puede definir un criterio de parada: el número máximo de iteraciones o el |
| | 7 | tiempo máximo de ejecución. |
| | 8 | |
| | 9 | Supongamos por ejemplo el siguiente problema: |
| | 10 | |
| | 11 | maximize: |
| | 12 | |
| | 13 | subject to: 3 x_1 + 4 x_2 + 2 x_3 ≤ 60 |
| | 14 | |
| | 15 | 2 x_1 + 4 x_2 + 3 x_3 |
| | 16 | |
| | 17 | 2 x_1 + |
| | 18 | |
| | 19 | x_1 + 3 x_2 + 2 x_3 ≤ 80 |
| | 20 | |
| | 21 | x_2 + 2 x_3 ≤ 40 |
| | 22 | |
| | 23 | x_1, x_2, x_3 are non-negative real numbers |
| | 24 | |
| | 25 | Su solución a través de TolGplk: |
| | 26 | |
| | 27 | #Require TolGlpk; |
| | 28 | |
| | 29 | Matrix C = Col(2, 4, 3); |
| | 30 | |
| | 31 | Matrix A = Col(3, 2, 1) | Col(4, 1, 3) | Col(2, 2, 2); |
| | 32 | |
| | 33 | Matrix L = Constant(3, 1, -Inf); |
| | 34 | |
| | 35 | Matrix U = Col(60, 40, 80); |
| | 36 | |
| | 37 | Matrix Lx = Constant(3, 1, 0); |
| | 38 | |
| | 39 | Matrix Ux = Constant(3, 1, Inf); |
| | 40 | |
| | 41 | Set Options = [[ Real Maximize = 1; Real maxSec = 30*60 ]]; |
| | 42 | |
| | 43 | Set result = TolGlpk::solveLP(C, A, L, U, Lx, Ux, Options); |
| | 44 | |
| | 45 | Para una formulación general de un problema de programación lineal: |
| | 46 | |
| | 47 | z = Ct*Xs, sujeto a las restricciones: Xa=A*Xs, L≤Xa≤U, Lx≤Xs≤Ux; donde z es la función objetivo, |
| | 48 | C es el vector de costos, Xs son las variables estructurales (Matriz mx1), Xa son las variables |
| | 49 | auxiliares (Matriz nx1), L y U son las cotas inferiores y superiores (si existen) de las variables |
| | 50 | auxiliares, Lx y Ux son las cotas inferiores y superiores (si existen) de las variables estructurales |
| | 51 | y A es la matriz de restricciones (matriz mxn). |
| | 52 | |
| | 53 | Su solución por medio de TolGlpk: |
| | 54 | |
| | 55 | Set result = TolGlpk::solveLP(C, A, L, U, Lx, Ux, Options); |