Modelos de Redes
En el contexto de la Investigación Operativa, los modelos de redes refieren al conjunto especial de problemas en los que la geometría de la posición, espacial pero también temporal, es una característica relevante.
● ● ☼ ☼ ☼ ● ●
Se ha desarrollado una terminología específica que conviene tener presente. Un diagrama (o grafo) está constituido por un conjunto de uniones o intersecciones llamados nodos, los que se unen entre sí por vínculos (arcos o ramas). Una red es un diagrama al que se asociaron medidas cuantitativas a los vínculos y/o nodos. ● ● ☼ ☼ ☼ ● ● Una secuencia de vínculos que conectan dos nodos cualesquiera conforman una cadena. Si se especificó una dirección de flujo a lo largo de la cadena, entonces se habla de ruta o camino. Un ciclo es una cadena que conecta a un nodo consigo mismo (i.e. el nodo origen es el de destino).
Modelos de Redes
Una diagrama conectado es aquel en el que hay una cadena conectando a cada par de nodos. Un árbol es un diagrama o red conectada que no contiene ciclos.
● ● ☼ ☼ ☼ ● ●
En muchos modelos nos interesarán los vínculos dirigidos u orientados, en los que se ha dado un sentido o dirección al mismo de modo que se puede identificar uno de los nodos como el origen y el otro como el destino. Así, se hablará de un diagrama o red dirigida cuando todos los arcos sean orientados.
● ● ☼ ☼ ☼ ● ●
Todos los problemas que se estudiaran pueden ser planteados como casos especiales del problema de la PL. No obstante, para todos ellos se han desarrollado algoritmos especiales que los resuelven más eficientemente.
El Modelo de Transporte
El modelo se ha desarrollado para distribuir de manera óptima bienes o servicios desde múltiples fuentes hacia múltiples destinos.
● ● ☼ ☼ ☼ ● ●
El objetivo es minimizar alguna medida de la eficiencia en la distribución (costos, distancias, tiempos). Las variables de decisión, xi,j, denotan la cantidad de bienes o servicios que se transportarán desde la fuente i hasta el destino j.
● ● ☼ ☼ ☼ ● ●
Sea el problema de distribuir plantines desde tres viveros hasta cuatro sitios de plantación (rodales). Las cantidades de plantines requeridas en cada sitio de plantación se especifican de acuerdo con la superficie a plantar y la densidad estipulada. También se han especificado las disponibilidades de plantines en cada vivero. Finalmente, se especifican las distancias entre viveros y sitios de plantación.
El Modelo de Transporte
Vivero (i) Distancias (km) del Vivero i al Rodal j Disponibilidad (106 plantines) Rodal (j) 1 2 3 4 1 8 19 22 6 5 2 15 6 16 5 1 3 7 8 9 12 2 Requerimiento (106 plantines) 2 3 2 1 8 V3 8 19 7 6 15 22 5 16 6 R 1 R4 R2 R3 8 9 12 V2 V1El Modelo de Transporte
Si asumimos que los costos son directamente proporcionales a la distancia (e.g. todos los caminos son de calidad comparable), entonces el siguiente modelo minimiza los costos de distribuir los plantines:
Minimizar
z
=
8
x
1,1+
19
x
1,2+
22
x
1,3+
6
x
1,4+
15
x
2,1+
6
x
2,2+
16
x
2,3+
5
x
2,4+
7
x
3,1+
8
x
3,2+
9
x
3,3+
12
x
3,4Sujeto a
x
1,1+
x
1,2+
x
1,3+
x
1,4=
5
(
V
1)
x
1,1+
x
2,1+
x
3,1=
2
(
R
1)
x
2,1+
x
2,2+
x
2,3+
x
2,4=
1
(
V
2)
x
1,2+
x
2,2+
x
3,2=
3
(
R
2)
x
3,1+
x
3,2+
x
3,3+
x
3,4=
2
(
V
3)
x
1,3+
x
2,3+
x
3,3=
2
(
R
3)
x
i , j⩾
0
x
1,4+
x
2,4+
x
3,4=
1
(
R
4)
Solución óptima
z
*=
84
; x
1,1*=
2
; x
1,2*=
2
; x
1,4*=
1,
x
*2,2=
1
; x
*3,3=
2
El Modelo de Transporte
Sea xi,j la cantidad de plantines a transportar desde el vivero i al rodal j,
di,j la distancia entre el vivero i y el rodal j, V el número de viveros, R el
número de rodales, Di la disponibilidad de plantines del vivero i y Qj el
requerimiento de plantines del rodal j. Si se asume que los costos son
directamente proporcionales a la distancia entre los viveros y los rodales, entonces la formulación general del modelo que minimiza los costos de distribuir los plantines se puede escribir así:
Minimizar
z
=
∑
i=1 V∑
j=1 Rd
i , jx
i , jSujeto a:
∑
j=1 Rx
i , j=
D
i(
i
=
1,2,
…
, V
)
∑
i=1 Vx
i , j=
Q
j(
j
=
1,2,
…
, R
)
x
i , j⩾
0
(
i
=
1,2,
…
,V ; j
=
1,2,
…
, R
)
El Modelo de Transporte
Si bien se han desarrollado algoritmos de solución específicos para el modelo del transporte, el problema presentado es un problema de Programación Lineal y, como tal, puede ser resuelto con el algoritmo simplex. El algoritmo simplex es extremadamente eficiente y se ha implementado en numerosos programas informáticos, desde las planillas de cálculo hasta potentísimos programas desarrollados específicamente para la optimización.
● ● ☼ ☼ ☼ ● ●
Actualmente, aparte de la versatilidad que ofrecen las planillas de cálculo y que permite resolver problemas de tamaño moderado, una opción más potente consiste en escribir el problema en un lenguaje que emula la notación algebraica (de las sumatorias) y encomendarle la solución a un programa que entienda o traduzca el formato empleado (comúnmente llamados solvers). Programas que pueden resolver problemas con esta notación hay de todo tipo, desde comerciales hasta libres, para todos los sistemas operativos y hasta se pueden resolver en sitios web dedicados.
Resolver problemas de Programación Lineal
Una opción que combina una lenguaje algebraico muy potente con un solver capaz de resolver problemas de gran escala, que se distribuye con licencia de software libre y que se ha compilado para correr tanto en windows como en linux, es GLPK (GNU Linear Programming Kit).
● ● ☼ ☼ ☼ ● ●
El lenguaje algebraico se llama GNU MathProg y es un lenguaje de modelado diseñado para describir modelos lineales de programación matemática. El lenguaje es un subconjunto del lenguaje AMPL. Su implementación en GLPK está basada principalmente en el paper: Robert Fourer, David M. Gay & Brian W. Kernighan, A Modeling Language for Mathematical Programming. Management Science 36 (1990), pp. 519554. El documento de referencia del lenguaje está disponible en castellano (adjunto a esta presentación). ● ● ☼ ☼ ☼ ● ● El proyecto GLPK está hospedado en: https://www.gnu.org/software/glpk/.
GLPK (Instalación y uso)
En el sitio oficial está disponible el código fuente de GLPK, de modo que para su uso será necesario compilarlo. Para ahorrarse este paso, es conveniente instalar directamente los ejecutables compilados. Para windows, la recomendación es usar las compilaciones del proyecto winglpk: http://winglpk.sourceforge.net/. Para linux, las principales distribuciones incluyen la posibilidad de instalar un paquete con el ejecutable compilado. En cualquiera de los dos sistemas operativos, el solver se invoca mediante la linea de comandos o shell (tipear glpsol help)
● ● ☼ ☼ ☼ ● ●
Otra posibilidad es instalar un IDE (Entorno de Desarrollo Integrado). El recomendado provee una interfaz para escribir los problemas en el lenguaje GNU MathProg con resaltado, verificación y control de la sintaxis, además de la instalación del solver como ejecutable y una interfaz en la que se presentan los resultados de la optimización. Naturalmente, a esta funcionalidad se accede mediante menúes. La recomendación es GUSEK (GLPK Under Scite Extended Kit): http://gusek.sourceforge.net/.
Volviendo al Modelo de Transporte
El problema de distribuir plantines desde tres viveros a cuatro rodales en los que serán plantados, escrito con la sintaxis del lenguaje GNU MathProg se codifica en un archivo en formato de texto puro con la extensión .mod (se adjunta el archivo a la presentación). Los resultados del solver se pueden escribir en un archivo con la extensión .sol (también se adjunta el archivo a la presentación).
● ● ☼ ☼ ☼ ● ●
Si no se ha instalado GUSEK, con el archivo del modelo se puede probar un solver online en: http://www3.nd.edu/~jeff/mathprog/mathprog.html.
● ● ☼ ☼ ☼ ● ●
Pero definitivamente el sitio más recomendable para resolver problemas de optimización (lineal y no lineal) mediante la web es el NEOS Server for Optimization: http://www.neosserver.org/neos.