Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TEMA
I. OBJETIVOS
II. INTRODUCCIÓN
Durante la construcción se tendrán que remover o destruir casas, centros comerciales, colinas,
monumentos y sitios de interés arqueológico; los cuales tienen diferentes valores, según el rol
asignado. Los participantes pueden seleccionar una ruta cualquiera, desde cada uno de los seis
hexágonos inferiores de la fila 27 hasta cualquiera de los seis hexágonos superiores de la fila 1.
Se intentará planear la autopista defendiendo los intereses del grupo al que pertenezca. Se
recibe una penalización de 5 puntos por cada hexágono usado, y se tendrá una penalización
adicional por ir a través de hexágonos con símbolos. Cada rol es penalizado según las
especificaciones dadas. (Ver tabla 1)
210
b Son los recursos disponibles
Si bien es cierto que la Programación Lineal (PL) resulta útil para ciertas aplicaciones prácticas,
no hay que olvidar que PL es de complejidad exponencial, de esta manera, no se puede tener
confianza en ella para casos de redes con un gran número de nodos. Por esta razón, se
requiere de algoritmos que exploten la estructura en red del problema de ruta más corta.
Entre estos algoritmos se tienen dos tipos:
Existen varios algoritmos de Etiquetado, dentro de los cuales, los más conocidos y utilizados
son los métodos de Dijsktra y Floyd.
Estos son algoritmos de Etiquetado, los cuales, en términos generales, encuentran la ruta más
corta entre dos nodos, inicial a y final z, de la siguiente manera:
Los nodos de la red son etiquetados con números. Al principio, todos tienen la etiqueta 00
excepto el nodo inicial a que tiene la etiqueta 0. Los arcos tienen un peso w ij que representa la
distancia del enlace (i,j).
Los algoritmos de Dijkstra renumeran los nodos, de manera que cuando el nodo z tiene una
etiqueta permanente, se ha obtenido la solución final.
IV. MATERIALES
V. TIEMPO REQUERIDO
Un facilitador, quien orientará la actividad, al menos 12 participantes, (2 o más personas por cada
rol asumido), más seis investigadores de GEIO, quienes serán orientadores por cada rol.
VII. PROCEDIMIENTO
Mapa de Rutas
A continuación se presenta el mapa de rutas para construir la Autopista, seguido de la tabla que
indica las penalizaciones por cada rol:
211
MAPA
A B C D E F G H I J K
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
212
Rol
Concejal de la ciudad 5 3 1 1 1 5
1 1 1 3 5 5
Contribuyente
1 3 2 4 7 5
Arqueólogo
Ingenieros asesores
1 1 7 1 1 5
de la obra (CAMACOL)
La penalización es para cada símbolo, es decir, un hexágono con dos colinas, cuesta al grupo de
Ingenieros 19 puntos: 5 del hexágono y 7 por cada colina.
213
VIII. DESARROLLO
ETAPA 1: Seleccione una ruta de manera individual, de acuerdo al rol que le corresponde (siempre
queriendo minimizar el valor de las penalizaciones). Ejemplo:
Rol: Arqueólogo
Ruta Valor
G27-G25-G23-H22-H20-I19-J18-J16- 114 Puntos
I15-I13-J12-K11-K9-J8-I7-H6-H4-H2-
I1
ETAPA 2: Agrúpese con sus compañeros de igual rol y concierte una ruta.
Ruta Valor
A manera de socializar con todo el grupo las rutas escogidas por cada rol, se procede a llenar el
siguiente cuadro, en donde cada rol expone cuántos símbolos derrumbó o traspasó, el número de
hexágonos utilizados y el valor total de penalizaciones:
COSTO
Rol
TOTAL
Concejal de la ciudad
Contribuyente
Arqueólogo
Ingenieros asesores
de la obra
(CAMACOL)
*Tabla 1
214
ETAPA 3: Agrúpese con diferentes roles y concierte una ruta.
Ruta Valor
IX. CONCLUSIONES
El desarrollo de las habilidades de trabajo en equipo son de vital importancia dentro del
proceso de formación profesional. Incluso las habilidades de enfoque sistémico ayudan
a una mejor toma de decisiones y solución de conflictos.
X. BIBLIOGRAFIA
http://www.mor.itesm.mx/˜optimiza/opti9901/sesiones.html
OBJETIVOS
215
En cada hexágono sólo se puede avanzar hacia el norte, el nororiente o el noroeste, por ejemplo si
requiere avanzar desde el hexágono J4 sólo se puede hacer hacia I3, J2 o K3. Esto no tiene cabida
en los extremos (Columnas A y K), ya que allí solamente se puede avanzar hacia dos partes, así si
se quiere avanzar desde el hexágono K9 debe hacerse hacia K9 o J8. Figura 1.
Concejo 5 3 1 1 1
Municipal
Arqueólogos 1 1 1 3 5
Paga 1 3 5 1 1
Impuestos
Residentes 7 1 1 1 1
FENALCO 1 7 1 1 1
Ing Camacol 1 1 7 1 1
Constructores
Así para cada empresa los costos de los diversos alzamientos o construcciones varían de acuerdo a
sus intereses por un alzamiento específico.
El objetivo es entonces construir la carretera o camino más económico para cada empresa.
216
CONVENCIONES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
217
Criterio para el desarrollo del programa
La generación de todos los caminos posibles para cada empresa da como resultado seis
árboles ternarios (Cada nodo tiene tres ramas). Ya que como se expresa en el
planteamiento del problema de cada hexágono se puede avanzar hacia dos o tres
hexágonos diferentes, en los cuales, también a su vez se puede avanzar hacia dos o
tres partes diferentes.
218
Conteo de los caminos
1 1 1 1
1 1 1 1
2 2 2
219
A continuación se intenta desde el tercer nivel, contar cuántos posibles caminos hay para llegar al
objetivo, suponiendo que se quiere ir desde el hexágono G3 a cualquiera de las posibles soluciones
se obtienen las siguientes soluciones:
1 1 1 1
2 2 2
3 5 5 3
220
Se puede observar que el comportamiento de esto está regido por lo antes descrito, de
esta manera el conteo de todos los posibles caminos se hace sencillo con un procedimiento
semejante al triángulo de Pascal para calcular los coeficientes binomiales.
1 1 1 1
2 2 2
3 5 5 3
10 12 10
- El valor de los demás hexágonos es igual a la suma del valor de los hexágonos hacia los cuales
se puede avanzar.
- Finalmente, cuando se ha calculado el valor de los hexágonos de la fila 27. Se puede aseverar
que el número total de caminos es igual a la suma de los valores de los hexágonos (A27, C27,
221
E27, G27, I27, K27). Con esto se asegura que el resultado de dicha suma es el valor exacto de
TODOS los posibles caminos en el problema.
Llevando a cabo dicho procedimiento se pudieron obtener los resultados mostrados en el gráfico,
teniendo como total 23.093‟056.650 caminos diferentes. De la siguiente manera:
Resultado A27 = 1.352‟183.067
Resultado C27 = 3.681‟825.597
Resultado E27 = 5.012‟519.661
Resultado G27 = 5.012‟519.661
Resultado I27 = 3.681‟825.597
Resultado K27 = 1.352‟183.067
TOTAL = 20.093’056.650
222
223
Especificaciones de Hardware y Software usados para la realización del programa
El programa objeto de este estudio fue diseñado, compilado y probado bajo las siguientes
características operacionales.
2. Lenguaje: C++
3. Hardware:
Procesador AMD 2100+ con un reloj interno de 1768Mhz. 512 Kb Memoria Caché.
Para la elaboración del programa se seleccionó el lenguaje C++ por las siguientes razones:
a. Ya que para el problema exige el manejo de recursividad, se hace necesario el implementar
la solución en un lenguaje que pueda manejar recursividad.
b. Debido a que C++, es un lenguaje de un nivel más bajo que ciertos lenguajes gráficos, el
procesamiento se hace mucho más rápido, en el problema que se presenta el rendimiento
es primordial, esto por la cantidad de datos y operaciones que se van a manejar.
c. Debido a gran difusión, el C++ puede ser más conocido que otros lenguajes.
e. En el mercado hay muchos compiladores de C++ gratuitos y muy buenos, así no se hace
necesario ni comprar software para elaborarlo ni piratear.
Así mismo se hizo uso del compilador GNU DJGPP. Dadas las siguientes razones:
a. Una de las razones principales es que el compilador es completamente gratuito, puede ser
instalado y usado por quien quiera, bajo la licencia GNU. Esto hace muy portable el
software y que pueda ser usado por múltiples personas, no se está limitado a una licencia.
224
Resultados Programa Versión I.
Dado el número de camino a calcular por los seis niveles:
Resultado A27 = 1.352‟183.067
Resultado C27 = 3.681‟825.597
Resultado E27 = 5.012‟519.661
Resultado G27 = 5.012‟519.661
Resultado I27 = 3.681‟825.597
Resultado K27 = 1.352‟183.067
TOTAL = 20.093’056.650
Se observa claramente que el número de caminos posibles en la columna A es igual al de la
columna K, el de la columna C es igual al de la columna 1 y el de la columna E es igual al de la
columna G.
El número de operaciones realizadas en cada paso de la recursividad es 8 y el número de
comparaciones es 4.
Así para cada caso se tiene el siguiente número de operaciones:
Resultado A27 = 1.352‟183.067 x 8 = 10.817‟464.536
Resultado C27 = 3.681‟825.597 x 8 = 29.454‟604.776
Resultado E27 = 5.012‟519.661 x 8 = 40.100‟157.288
Resultado G27 = 5.012‟519.661 x 8 = 40.100‟157.288
Resultado I27 = 3.681‟825.597 x 8 = 29.454‟604.776
Resultado K27 = 1.352‟183.067 x 8 = 10.817‟464.536
Total = 160.744‟453.200
Resultado A27 = 1.352‟183.067 x 4 = 5.408‟732.268
Resultado C27 = 3.681‟825.597 x 4 = 14.727‟302.388
Resultado E27 = 5.012‟519.661 x 4 = 20.050‟078.644
Resultado G27 = 5.012‟519.661 x 4 = 20.050‟078.644
Resultado I27 = 3.681‟825.597 x 4 = 14.727‟302.388
Resultado K27 = 1.352‟183.067 x 4 = 5.408‟732.268
Total = 80.372‟226.600
Comparaciones + Operaciones = 160.744‟453.200 + 80.372‟226.600 = 241.116‟679.800
Como resultado se necesitaron 96 minutos. Se debe tener en cuenta que las especificaciones del
equipo nombradas anteriormente, daban por parte del Hardware muy buen rendimiento, así como
la elaboración de programa en C++ da un gran rendimiento a nivel de Software.
RESTRICCIONES DE ALMACENAMIENTO
Suponiendo que se quiere guardar en un disco duro la solución de todos los caminos posibles se
tendría la siguiente situación:
Número total de caminos = 20.093’056.650
El presente estudio no contiene el número medio de hexágonos por caminos. Pero, dado que cada
camino está representado por un máximo de 27 hexágonos y un mínimo de 14 hexágonos se
puede calcular una cota inferior y una cota superior, esto con el fin de a la vez poner cotas al
espacio requerido en disco.
Cada hexágono se representa por medio de tres caracteres: una letra, un número de dos cifras. De
esta manera se tiene entonces, que se necesitarían almacenar:
En la cota inferior: 3 x 14 x 20.093‟056.650 = 843.908‟379.300 caracteres.
En la cota superior: 3 x 27 x 20.093‟056.650 = 1‟‟627.537‟588.650 caracteres.
Esto adicionando el costo por camino que podrían ser un máximo de 20 caracteres. DA un
resultado total de:
En la cota inferior: 843.908‟379.320 caracteres.
En la cota superior: 1‟‟627.537‟588.670 caracteres.
225
Para calcular el espacio en disco se debe tener en cuenta que un carácter equivale a un byte
también tener en cuenta las siguientes transformaciones:
1 Kbyte = 1024 bytes.
1 Mbyte = 1024 Kbytes = 1024 x 1024 bytes = 1‟048576 bytes.
1 Gbyte = 1024 Mbytes = 1.073‟741.824 bytes.
Para calcular el espacio total en disco en Gigabytes (Gbytes) que ocupan caracteres en disco se
requiere de la siguiente operación:
Espacio Requerido = numeración de caracteres / 10243
Así Espacio Requerido es:
En la cota inferior: 785,950925 Gbytes.
En la cota superior: 1.515,762497 Gnytes = 1,480237 Therabytes
Esto indica que como mínimo se necesitarían 785,950925 Gbytes y un máximo de 1,480237
Therabytes para poder almacenar todos los caminos posibles en un disco.
Algo para resaltar es que el programa no almacenó dichos datos en el disco, ya que no se tiene un
disco de semejante capacidad, es decir que a los tiempos necesarios para el cálculo se le deberían
adicionar los tiempos para guardar las cantidades calculadas de bytes. Sería importante tener en
cuenta que un disco convencional guarda datos a una velocidad de 25Mb/s.
Aunque en un comienzo el cálculo de todos los posibles caminos parecía una buena idea, los
resultados anteriores sugieren que el programa requiera de una modificación, ya que no es
necesario tener una cantidad tan impresionante de datos que en realidad no serían de mucha
utilidad. Así pues si se sugiere una modificación tratando de llevar el programa para que retorne
únicamente la solución óptima, sin que calcule entonces todas las soluciones posibles, si se usa el
siguiente criterio el rendimiento del programa se vería mejorado:
1. Calcular el primer camino que se encuentre, este en un comienzo será el mejor camino.
3. Si en medio del cálculo de un camino el costo es mayor que el del mejor camino no se
sigue calculando porque es evidente que será de mayor costo que el mejor
4. Si se encuentra un camino de menor costo que el mejor, dicho camino pasa a ser el
mejor.
5. Se repiten los pasos 2-5 hasta que se hayan “calculado” TODOS los caminos.
Es fácil notar la gran semejanza que tiene el método descrito anteriormente con el método de
asignación de Branch and Bound.
Para poder llevar el algoritmo a cabo se modificó el algoritmo anterior, agregando algunas líneas,
variables y validaciones.
Finalmente se agregó una función que calcula, muestra en pantalla y guarda el archivo para cada
empresa, de acuerdo a una selección hecha por el usuario en un menú:
Mejor camino.
Costo.
Total de casillas recorridas.
Devastación causada.
El tiempo necesario de procesamiento.
Resultados programa Versión II.
226
Haciendo uso de las empresas dadas y del programa se calcularon los caminos óptimos para cada
empresa, de las seis empresas se obtuvieron 4 caminos óptimos diferentes.
1. CONCEJO MUNICIPAL
En total se pasó por un total de 15 casillas, las cuales tienen un costo unitario de $5.
Sumando un costo de $75.
2. ARQUEÓLOGOS
En total se pasó por un total de 14 casillas, las cuales tienen un costo unitario de $5.
Sumando un costo de $70.
227
La construcción de la carretera por dicho camino es el costo de la devastación más el costo
de las casillas. El cual es 89.
3. PAGA IMPUESTOS
En total se pasó por un total de 15 casillas, las cuales tienen un costo unitario de $5.
Sumando un costo de $75.
4. RESIDENTES
228
En total se pasó por un total de 15 casillas, las cuales tienen un costo unitario de $5.
Sumando un costo de $75.
5. FENALCO
En total se pasó por un total de 15 casillas, las cuales tienen un costo unitario de $5.
Sumando un costo de $75.
229
En total se pasó por un total de 16 casillas, las cuales tienen un costo unitario de $5.
Sumando un costo de $80.
230
Programa Versión II
231
Ventajas:
Desventajas:
- NO calcula todas las soluciones posibles, tal y como se pensaba hacer en un principio.
CONCLUSIONES
- Aunque se ha hallado la solución óptima desde le punto de vista de los costos, no se tuvieron
en cuenta otros factores tales como al importantes de los monumentos históricos para una
ciudad o las excavaciones arqueológicas, que representan un patrimonio cultural. Así se puede
colegir que no necesariamente la optimización se deba hacer sobre los costos solamente sino
tener en cuenta también otros factores que aunque aumenten el costo son de vital importancia.
- Se puede observar que el camino K27-K25-K23-K21-J20-J18-J16-J14-K13-K11-K9-K7-K5-K3-K1
es el óptimo para tres de los demás papeles. Pero no lo es para los demás, de la misma
manera el camino propuesto por las demás empresas no es necesariamente el óptimo para
FENALCO. De ello se puede deducir que es importante hacer un acuerdo entre las partes (Los
diferentes papeles).
- Cuando se trata de derribar una “casilla” hay más factores que influyen en la toma de decisión
para tumbarla. Por ejemplo las zonas de excavación y los monumentos deben tener preferencia
entre los demás de no ser tumbadas ya que esto representa el patrimonio histórico de la
ciudad.
- En casos de optimización como este, hacer uso de los programas de computador para generar
la solución óptima es muy importante, debido a la rapidez y veracidad de la respuesta. Además
si la implementación de este tipo de algoritmos se lleva a cabo por medio de recursividad es
fácil realizar el algoritmo y fuera de ello el código fuente es razonablemente corto.
- Aparentemente el número posible de caminos es pequeño, pero al hacer un cálculo más
profundo de este número resulta sorprendente ver como se es engañado tan fácilmente,
generalmente cuando se le pregunta a la gente la cantidad de caminos posibles, no tienen la
más mínima idea de la cifra de la que se habla.
- La investigación de operaciones unido a la programación son una poderosa herramienta para la
solución de problemas de optimización
- El cambiar el algoritmo de calcular todos los caminos posibles al método semejante a Brach and
Bound reduce significativamente los cálculos e iteraciones del programa y por ende aumenta la
velocidad de procesamiento.
- La primera solución (solución a la cual en un principio se quería llegar) no pudo ser
implementada debido a restricciones de procesamiento (tiempo necesario) y capacidad de
almacenamiento. Ello debido a la gran cantidad de caminos posibles en la solución del
problema.
232