informe de proyecto2

131
Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez 1 DIVISIÓN DE CIENCIAS BÁSICAS E INGENIERÍA LICENCIATURA EN COMPUTACION PROYECTO DE INVESTIGACION II Implementación de una interfaz para la Generación e Intrusión de Mercurio en Redes Porosas ASESORES: Dr. FRNANDO ROJAS Dra. GRACIELA ROMAN Dr. SALOMON CORDERO GONZALES ALONSO SANCHEZ ____________________ ______________________ _____________________ ALUMNOS: BENJAMIN MORENO MONTIEL 203214228 ISRAEL GUERRERO PEREZ 202119465 DICIEMBRE/2006

Upload: others

Post on 17-Nov-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

1

DIVISIÓN DE CIENCIAS BÁSICAS E INGENIERÍA

LICENCIATURA EN COMPUTACION

PROYECTO DE INVESTIGACION II

Implementación de una interfaz para la Generación e Intrusión de Mercurio en Redes Porosas

ASESORES: Dr. FRNANDO ROJAS Dra. GRACIELA ROMAN Dr. SALOMON CORDERO GONZALES ALONSO SANCHEZ ____________________ ______________________ _____________________ ALUMNOS: BENJAMIN MORENO MONTIEL 203214228 ISRAEL GUERRERO PEREZ 202119465

DICIEMBRE/2006

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

2

1. Antecedentes .............................................................................................................................. 4 2. Objetivos..................................................................................................................................... 7 3. Generación de redes con restricciones geométricas ............................................................... 9

3.1 Errores geométricos...............................................................................................................9 3.2 Corrección de los errores geométricos ................................................................................10

3.2.1 Relajación Sitio ............................................................................................................10 3.2.1.1 Algoritmo..............................................................................................................10 3.2.1.2 Descripción detallada de los módulos empleados .............................................12

3.2.2 Relajación Sitio-Enlace ................................................................................................19 3.2.2.1 Descripción detallada de los módulos empleados .............................................21

3.2.3 Relajación Enlace-Enlace .............................................................................................23 3.2.3.1 Descripción detallada de los módulos empleados .............................................25

3.2.4 Relajación sobre la Formula del calculo de errores Geométricos. ...............................27 4. Generación de Gráficas y Estatísticas ................................................................................... 30

4.1 Calculo del Área de Translape.............................................................................................30 4.1.1 Planteamiento del Problema .........................................................................................31 4.1.2 Algoritmo para resolver el Problema............................................................................32

4.1.2.1 Calculo de Translape...........................................................................................34 4.1.2.2 Punto de Intersección de las dos Funciones Gaussianas ..................................34 4.1.2.3 Método de Trapecio.............................................................................................34 4.1.2.4 Función de Evaluación de las Distribuciones....................................................35

4.2 Calculo de Probabilidad de Enlaces ....................................................................................36 4.2.1 Planteamiento Del Problema ........................................................................................36 4.2.2 Algoritmo para resolver el Problema............................................................................37

4.2.2.1 Calculo de probabilidad de Enlaces...................................................................39 4.2.2.2 Conteo de Enlaces que rodean a un Sitio. .........................................................40

4.3 Calculo de Probabilidad de Sitios........................................................................................41 4.3.1 Planteamiento Del Problema ........................................................................................41 4.3.2 Algoritmo para resolver el Problema............................................................................42

4.3.2.1 Calculo de Probabilidades de Sitios ...................................................................44 4.3.2.2 Conteo de Sitios que rodean a un Enlace ..........................................................45

4.4 Graficas Descriptivas de Resultados ...................................................................................49 4.4.1 Planteamiento Del Problema ........................................................................................49

4.4.1.1 GnuPlot.................................................................................................................49 4.4.2 Resolución del problema ..............................................................................................52

5. Interfaz de Generación de Red e Intrusión........................................................................... 55 5.1 Operaciones de la librería ....................................................................................................55

5.1.1 Calcular el Traslape de las Funciones ..........................................................................55 5.1.2 Generación de Red sin errores del Tipo 1 ....................................................................57 5.1.3 Generación Red sin errores del Geométricos aplicando relajación Enlace -Enlace ....................................................................................................................................58 5.1.4 Generación Red sin errores del Geométricos aplicando relajación Sitio Enlace .........60 5.1.5 Generación Red sin errores del Geométricos aplicando relajación sobre la formula ..................................................................................................................................62 5.1.6 Guardar alguna red .......................................................................................................64 5.1.7 Generación de Grafica de Distribución de Sitios Enlaces............................................66

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

3

5.1.9 Generación de Probabilidades de Enlaces ....................................................................67 5.1.10 Generación de Probabilidades de Sitios .....................................................................69 5.1.11 Graficar las Probabilidades de Enlaces ......................................................................71 5.1.12 Graficar las Probabilidades de Sitios..........................................................................73 5.1.12 Intrusión de Red si errores geométricos .....................................................................75 5.1.13 Intrusión de Red si errores geométricos leída desde un archivo ................................78 5.1.14 Generación de Graficas de Presión vs. Volumen .......................................................80 5.1.14 Generación de Graficas de Presión vs. Sitios .............................................................82

6. Resultados ................................................................................................................................ 85 6.1 Primer Resultado: ................................................................................................................86 6.2 Segundo Resultado: .............................................................................................................89 6.3 Tercer Resultado:.................................................................................................................92 6. 4 Cuarto Resultado: ...............................................................................................................95 6.5 Quinto Resultado: ................................................................................................................98 6.6 Sexto Resultado: ................................................................................................................101

7. Conclusiones........................................................................................................................... 104 8. Trabajos a futuro................................................................................................................... 105 9. Anexos..................................................................................................................................... 106 10. Referencias:.......................................................................................................................... 130

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

4

1. Antecedentes La construcción de un medio poroso por computadora puede basarse en el modelo Dual de Sitios y Enlaces (DSBM) descrito en la tesis doctoral del Dr. Carlos Felipe Mendoza1. El cual establece que un material poroso está compuesto por sitios y enlaces. Los sitios se encuentran unidos entre sí a través de los enlaces, correspondiéndole a cada sitio un determinado número de enlaces (conectividad). Si todos los sitios de la red poseen la misma conectividad, se dice que se tiene una red regular u homogénea, en caso contrario se trata de una red irregular o heterogénea”. La Figura muestra la representación de u medio poroso:

(a) (b) Figura 1.1 Representación del medio poroso a través de sitios y enlaces

a) Material poroso real b) Red porosa en 2D

El simulador del modelo anterior permite la construcción de Redes Tridimensionales, donde los sitios están representados por esferas y los enlaces por Cilindros como se muestra en la Figura 2

Figura 1.2 Red Tridimensional

1 Tesis doctoral descrita en las referencias

SITIOS

ENLACES

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

5

Radio enlace

izquierdo

En la Figura 2 se puede observar que se genera un cubo que simula una red porosa de conectividad 6, esto es, cada sitio esta rodeado por 6 enlaces .El primer Simulador2 fue creado por: Víctor Silva Cabrera Juan Guadalupe Rosiles Bernal Juan José Rodríguez Quintanar Y fue creado para Generación de Redes, Intrusión de Mercurio (Hg) y Retracción de Mercurio (Hg) La generación de redes es un paso importante en la simulación, pues se debe representar de la manera más fidedigna a las redes porosas reales. En el primer simulador los pasos que se seguían para generar estas redes fueron los siguientes:

1. Generación de Red Aleatoria: Se generan números aleatorios en donde cada uno de estos representara los radios de los sitios y de los enlaces sin tomar en cuenta si la red esta bien construida, estos valores se van almacenando en la estructura, la cual, consta de un arreglo tridimensional definido de la siguiente manera:

estructura RED { real radio_sitio; real radio_enlace_izquierdo; real radio_enlace_arriba; real radio_enlace_frente; };

Figura 1.3 Representación de medio Poroso donde un sitio es una esfera

Y un enlace es un cilindró

La generación de estos números aleatorios se genera de la fusión “randi” defina en Linux.

2. Corrección de errores del tipo 1. Una vez generada la red aleatoria el simulador procedía a corregir los errores del tipo 1, a continuación se explica que son estos errores.

2 Proyecto termina II descrito en Referencias

Radio sitio

Radio enlace arriba

Radio enlace frente

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

6

Decimos que un a red tiene errores del tipo1 cuando el radio del sitio es menor a alguno de los radios de los enlaces que lo rodean.

Figura 1.4 Representación Visual de un error del tipo 1

Una vez explicado esto, el simulador corregía los errores de tipo 1 mediante un algoritmo el cual generaban números aleatorios y en base a estos se intercambiaban enlaces por enlaces ò sitios por sitios y si el numero de errores disminuía se aceptaban estos cambios, en caso contrario se regresaba a la configuración anterior. 3. Batidos de la red ¿Por qué se realizaba este procedimiento? Antes de realizar este paso la red se encontraba sin ningún error del tipo 1 por lo que se pretendía llegar a una configuración de la red en la cual estuvieran sitios grandes con enlaces grandes y sitios pequeños con enlaces pequeños, de esta forma e lograba relajar la red para que la intrusión se llevara acabo de manera mas eficaz y que esta red se apegara a lo que es una medio poroso real. ¿Cómo funcionaba este algoritmo? Este algoritmo sigue la misma lógica que en la corrección de errores de tipo 1 pero además contenía la restricción de que en cada batido no debía generar ningún error de estos, el número de batidos era determinado por el usuario y este era el punto de parada para poder decir que se logro una relajación satisfactoria sobre la red. 4. Operaciones de la red Una vez que se obtenía una red sin errores de tipo 1 y relajada se procedía a intruir y retraer mercurio (Hg) sobre esta, de esta forma se completaban tres de las tareas primordiales en el estudio de un medio poroso.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

7

2. Objetivos Limitantes del programa

Las principales limitantes del primer simulador para la generación inicial de redes porosas fueron las siguientes:

• Existen otro tipo de errores dentro de la red, que son los geométricos, los cuales hacen que las redes modelen mejor a los materiales porosos.

• Los resultados de salida solo se visualizaban al momento de la ejecución del simulador lo que dificultaba llevar un historial de estos.

• Al inicio el simulador realizaba las operaciones (creación de red, intrusión, retracción) sobre una red de manera independiente ya que estas estaban en programas por separado y para poder comenzar cada una de las operaciones sobre la red se realizaban archivos de texto creados por el usuario los cuales contenían la información necesaria para la creación de la red como:

* Media de sitios. * Media de enlaces. * Desviación estándar. * Longitud de la red. * Numero de batidos. * Altura de sitios. * Altura de enlaces.

* Red sin errores tipo 1 (para intrusión y retracción).

• El programa no estaba estructurado de forma correcta, ya que no se podían visualizar cuales eran las operaciones de la generación de red, cuales eran las operaciones de intrusión y cuales eran las operaciones de la retracción. Todo esto se encantaba en programas por separado y no cumplía las características de una librería.

Los objetivos de este proyecto se orientan a la mejora de procesos de generación de redes porosas, a la generación de resultados para el análisis de redes y al desarrollo de una librería que defina la interfaz de un nuevo simulador. Estos tres se pueden listar de la siguiente forma:

1. Corrección de Errores Geométricos aplicando distintos métodos de relajación de Red.

2. Generación de resultados tales como:

• Calculo del Área de Translape de las distribuciones de Medias de Sitios y

Enlaces • Calculo de Probabilidades de Enlaces • Calculo de Probabilidades de Sitios

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

8

• Realizar Graficas de probabilidades de Sitios y Enlaces • Realizar Graficas de Distribución de Sitios y Enlaces • Realizar Graficas de Comportamiento de Intrusión.

3. Desarrollar una interfaz de usuario para poder Generar Redes Porosas e Intruir sobre estas.

La manera de solucionar estos objetivos se explicara a lo largo de este informe. .

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

9

3. Generación de redes con restricciones geométricas

3.1 Errores geométricos

Un error geométrico en una red es aquel en donde los enlaces que rodear a un sitio se enciman uno con otro e.i. Sitio Enlace

Figura 3.1 Representación Visual de un Error Geométrico.

Analíticamente la forma de encontrar los errores geométricos es utilizando la formula del teorema de Pitágoras en donde se debe de cumplir la siguiente condición: Rs

2 ≥ Rb12 + Rb2

2 Donde: Rs es el radio del sitio Rb1 es el radio del enlace 1 Rb2 es el radio del enlace 2

Esta estrategia de utilizar el teorema de Pitágoras se utiliza para los diversos métodos de relajación que se implementaron para la corrección de los errores geométricos que podría tener una red. En el siguiente capitulo se describen cada uno de los métodos de relajación de forma detallada que fueron implementados.

Rs

Rb1

Rb2

Figura 3.2 Partes fundamen-

tales de los errores gemetricios

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

10

3.2 Corrección de los errores geométricos

3.2.1 Relajación Sitio A continuación se describe la lógica empleada para corregir los errores geométricos de la red por el método de relajación Sitio. Con la finalidad de reducir al máximo el numero de errores geométricos de la red la estrategia utilizada fue la de aumentar el radio de los sitios de forma artificial, es decir, se incrementan los radios de los sitios hasta un cierto porcentaje y posteriormente se fue decrementando poco a poco (para nuestras pruebas incrementamos la red en un 30% y los fuimos reduciendo en 1%) hasta llegar a 0%, es decir, hasta llegar al radio inicial y original de los sitios, esto se realiza en el modulo llamado “Red_crea_c_RG_Sit” en el único ciclo “para” que contiene . 3.2.1.1 Algoritmo Al principio el procedimiento “copia_radios_sitios” se copian los radios originales de la red inicial a una matriz cúbica llamada “rad_orig”. La variable “zz” adquiere el valor con el que se incrementaran los radios de los sitios de forma artificial y se estará decrementando cada vez que se cumpla un ciclo. El procedimiento “modifica_radio_sitio” hace el cambio de los valores iniciales de los radios de los sitios por los valores de los radios de los sitios a los que ya se les ha aplicado el incremento según el porcentaje. La función “violacgeom” le regresa a la variable nviolG el numero de violaciones geométricas que existe antes de empezar a hacer las correcciones de los errores. La función “batidotgeom” regresa el nuevo número de violaciones existentes después de haber hecho modificaciones en la red y mientras nviolG > 0 se estará ejecutando el ciclo mientras, y hasta que zz sea igual a 0 se estará ejecutando el ciclo “para”. Por ultimo se realiza un ultimo batido a la red con la finalidad de relajar mas la red ya que aunque la red cumple con las correcciones geométricas todavía queda tensa, el numero de batidos es un parámetro que lo determina el usuario (a este proceso se le llama isotropía). A continuación se describen a detalle cada uno de los módulos involucrados para la corrección de los errores geométricos con el método de relajación de Sitio.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

11

Figura 3.3 Representación Grafica de la Relajación Sitio.

RED Red_crea_c_RG_Sit (red_sin_error_t1, xmb, L, PasosMonteCarlo) {

.

. .

copia_radios_sitios (red, rad_orig, L); para (zz=30; zz>=0; zz-=1) {

modifica_radio_sitio (red, rad_orig, z, L); haz { nviolG = batidotgeom (red, L, nviolG, randi); j++; } mientras (nviolG>0);

} . . .

mientras (MCS <= PasosMonteCarlo) batidotEq (red, L, &contadorMCS, &MCS, randi); }

Sitio con su radio Inicial.

Sitio aumentado 30%

Sitio aumentado 29%

Sitio aumentado 28%

Sitio aumentado 0%

Durante el decremento en el porcentaje de los sitios se van corrigiendo los errores geométricos

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

12

3.2.1.2 Descripción detallada de los módulos empleados

• El procedimiento “copia_radios_sitios” copia los radios de los sitios originales en una matriz cúbica llamada rad_orig, la variable “L” tiene el valor del tamaño de la red.

void copia_radios_sitios (red, rad_orig, L) { int i, j, k; para (i=0; i<L; i++) para (j=0; j<L; j++) para (k=0; k<L; k++) rad_orig[i] [j] [k] =red[i] [j] [k].site; }

• El procedimiento “modifica_radio_sitio” modifica el radio de los sitios de toda la red, se modifican los radios en dependencia del valor “z” que es el que determina el porcentaje que se esta incrementando. Incremento de radios nuevo_radio = (radio_original)*(1+z) Por ejemplo Incremento de los radios en un 30% nuevo_radio = 256.32 * (1+0.3) nuevo_radio = 333.216

void modifica_radio_sitio (red, rad_orig, z, L) { int i, j, k; para (i=0; i<L; i++) para (j=0; j<L; j++) para (k=0; k<L; k++) red[i] [j] [k].site=rad_orig[i] [j] [k]*(1+z); } La función ”violacgeom” regresa el numero total de violaciones geométricas, esto se hace cada vez que se van a corregir los errores geométricos, es decir, cada vez que se decrementa el porcentaje de los radios de los sitios, esta función obtiene mediante las funciones ”enlace_izquierdo”, “enlace_arriba”, “enlace_frente”, “enlace_derecha”, “enlace_abajo”, “enlace_atras” y “sitio” los valores de los radios de los enlaces y el sitio a los que se hace referencia en ese momento (esta en dependencia de los valores i, j, k) y se envían estos parámetros a la función “errores_geom” que regresa el numero de errores geométricos que tiene el sitio que se esta evaluando en ese momento, ese valor lo regresa a la variable ”nviolgeom” que se suma a si misma y se almacena en la variable “nviolG” que es el valor que se regresa a la variable con el mismo nombre del modulo ”Red_crea_c_RG_Sit” que contiene el numero total de errores de la red .

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

13

Figura 3.4 Componentes de un Sitio. int violacgeom (red, L) { para (i=0; i<L; i++) para (j=0; j<L; j++) para (k=0; k<L; k++) { enlace_izquierdo = enizq (red, i, j, k); enlace_arriba = enarriba (red, i, j, k); enlace_frente = enfren (red, i, j, k); enlace_derecha = ender (red, i, j, k, L); enlace_abajo = enabajo (red, i, j, k, L); enlace_atras = enatras (red, i, j, k, L); sitio = sitioac (red, i, j, k); nviolgeom = errores_geom (enlace_derecha, enlace_abajo, enlace_izquierdo, enlace_arriba, enlace_frente, enlace_atras, sitio); nviolG+ = nviolgeom; } return nviolG; } Este modulo como se dijo regresa el número de violaciones geométricas de un sitio en particular, lo que verifica es lo siguiente:

Rs2 ≥ Rb1

2 + Rb22

Donde: Rs es el radio del sitio Rb1 es el radio del enlace 1 Rb2 es el radio del enlace 2 Si no se cumple esta condición el número de errores se incrementa Para encontrar un error geométrico en un sitio utilizamos esta condición de forma inversa y si es cierta se incrementa el numero de errores. Si (Rb1

2 + Rb22 > Rs

2) entonces N° violaciones geométricas se incrementa en 1

Enlace_izquierdo

Enlace_arriba

Enlace_frente

Enlace_abajo Enlace_derecha

Enlace_atras

Rs

Rb1

Rb2

Figura 3.5 Partes fundamen- tales de los errores

gemetricios

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

14

Estas operaciones son las que se esta haciendo en el siguiente modulo: int errores_geom (en_derecha, en_abajo, en_izquierdo, en_arriba, en_frente, en_fondo, sitio) { int viol_geom = 0; si ((pow (en_derecha, 2)+pow (en_frente, 2))>pow (sitio, 2)) viol_geom++; si ((pow (en_abajo, 2)+pow (en_frente, 2))>pow (sitio, 2)) viol_geom++; si ((pow (en_izquierdo, 2)+pow (en_frente, 2))>pow (sitio, 2)) viol_geom++; si ((pow (en_arriba, 2)+pow (en_frente, 2))>pow (sitio, 2)) viol_geom++; si ((pow (en_derecha, 2)+pow (en_fondo, 2))>pow (sitio, 2)) viol_geom++; si ((pow (en_abajo, 2)+pow (en_fondo, 2))>pow (sitio, 2)) viol_geom++; si ((pow (en_izquierdo, 2)+pow (en_fondo, 2))>pow (sitio, 2)) viol_geom++; si ((pow (en_arriba, 2)+pow (en_fondo, 2))>pow (sitio, 2)) viol_geom++; si ((pow (en_arriba, 2)+pow (en_derecha, 2))>pow (sitio, 2)) viol_geom++; si ((pow (en_abajo, 2)+pow (en_derecha, 2))>pow (sitio, 2)) viol_geom++; si ((pow (en_arriba, 2)+pow (en_izquierdo, 2))>pow (sitio, 2)) viol_geom++; si ((pow (en_abajo, 2)+pow (en_izquierdo, 2))>pow (sitio, 2)) viol_geom++; return viol_geom; } La función ”batidotgeom” lo primero que hace es escoger uno de los casos que permiten cambiar ya sea un enlace por otro enlace (del caso 1 al 9) ò un sitio por otro sitio (casos 0 , 10 y 11) , una vez que se selecciona que tipo cambio es el que se va a hacer, para los cambios de enlaces hay una variable “eg1” que cuenta el numero de errores de los enlaces a los que se esta haciendo referencia (estos enlaces son obtenidos por los subíndices (i1,j1,k1) y (i2,j2,k2) que son obtenidos de forma aleatoria) posteriormente se hace el intercambio de enlaces y se vuelve a hacer el conteo de errores y se guarda en la variable “eg2” y si se cumple que eg1>eg2 quiere decir que el numero de errores disminuye y ya no se hace un cambio mas, pero si por el contrario eg1<= eg2 quiere decir que no hay una reducción en el numero de errores y entonces los enlaces se regresan como estaban en un principio.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

15

Por ejemplo: Suponiendo que el caso que se escoge de forma aleatoria es el 2 (case 2), va a cambiar un enlace X (Bx) por uno Y (By) Figura 3.6 Posibles cambios en Enlaces que se pueden realizar para los errores geométricos.

Como se muestra en este ejemplo eg1 > eg2 por lo que el numero de errores geométrico se redujo, si se hubiera dado el caso de que eg1 <= eg2 entonces los enlaces se regresan a su posición original. Lo que se hace en los casos en los que se cambian enlaces por enlaces (casos del 1 al 9) es lo siguiente: . . . Caso 1-9 :{ eg1 = cuenta_errores_geometricos (Enlace_1) + cuenta_errores_geometricos (Enlace_2) se_hace_el_cambio _de_ posición_de_enlaces eg1 = cuenta_errores_geometricos (Enlace_2) + cuenta_errores_geometricos (Enlace_1) si (eg1<= eg2) regresa_enlaces_a_su_ posición_original caso_contrario (eg2<eg1) numero_violaciones = numero_violaciones-(eg1-eg2) }

regresa (numero_violaciones) } case 2:{ /* enlace x - enlace y */

Enlace a cambiar Enlace_1 Enlace a cambiar

Enlace_2

3 errores2 errores

0 errores 1 errores

El número de errores que hay antes de hacer el cambio de posición de los enlaces es: eg1 = 5

El número de errores que hay después de hacer el cambio de posición de los enlaces es: Eg2 = 1

Enlace_2

Enlace_2

Los enlaces azules son los que se relacionan con los que se van a cambiar para revisar los errores geométricos

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

16

eg1 = cuenta_viogeomBx (red, L, i1, j1, k1)+ cuenta_viogeomBy (red, L, i2, j2, k2); swap (&red [i1] [j1] [k1].xb, &red [i2] [j2] [k2].yb); /* Cambio los enlace */ eg2=cuenta_viogeomBx (red, L, i1, j1, k1)+ cuenta_viogeomBy (red, L, i2, j2, k2); si (eg1<=eg2) swap(&red[i1][j1][k1].xb,&red[i2][j2][k2].yb); /*Re-Cambio los Bond*/ else violac = violac-(eg1-eg2); break; } Para los casos 0, 11 y 12 que es donde se hacen cambios de sitios por sitios es análogo a los casos en sonde se hacen cambios de enlaces. La función “cambia_sitiosgeom “ cambia de posición un sitio por otro sitio y regresa a la variable “nviolac” con el nuevo numero de errores en caso de que se haya mejorado este, en caso contrario regresa el mismo numero de errores que ya existían, lo que se hace primero es contar el numero de violaciones que hay antes de hacer el cambio de sitios, este valor se obtiene de la función “error_geom_sitios” que obtiene el numero de errores geométricos para cada uno de los sitios a los que se esta haciendo referencia y la suma errores se guarda en la variable “eg1” , posteriormente se hace el cambio de posición de los sitios y después se vuelven a contar el numero de errores geométricos de los sitios en su nueva posición y la suma de errores se guarda en la variable “eg2”. Después lo que se hace es verificar que no existen errores por llamar los así del “tipo 1” y los guardamos en una variable llamada “e2t” esto para asegurar que no se este descuidando este tipo de errores ya que al cambiar un sitio por otro se pueden volver a generar este tipo de errores con los enlaces que rodean a los sitios en cuestión. Si después de hacer estos cálculos se tiene que (eg1<eg2) ó (e2t!=0) quiere decir que después de los cambios de sitios el numero de errores geométricos incremento ó que en la red hay nuevamente errores del “tipo 1”, entonces se procede a regresarlos a la posición donde estaban originalmente. Y si por el contrario (eg2<eg1) y (e2t=0) quiere decir que el numero de errores geométricos se redujo y que además no existen errores del “tipo 1”, entonces el cambio se queda y se resta el numero de errores que se corrigieron y ese nuevo valor se regresa a la función ”batidotgeom”.

Figura 3.7 Otra representación de errores de Tipo 1

Radio del enlace Rb

Los errores tipo 1 son cuando: Rb > Rs

Radio del sitio S

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

17

Cambio de sitios Si (eg2<eg1) y además (e2t=0) el cambio se queda, de lo contrario (eg1<eg2 ó e2t!=0) se regresan los sitios a su posición original

Figura 3.8 Posibles cambios de Sitios que se pueden presentar el la corrección de errores geométricos.

Algoritmo caso 0,11 ó 12:{ /* sitio - sitio */ violac = cambia_sitiosgeom(red,L,violac,i1,j1,k1,i2,j2,k2); break; } Funcion cambia_sitiosgeom(red ,tamaño_red, No_de_violaciones_geometricas, posicion_sitio1,posicion_sito2) { eg1 = cuenta_errores_geometricos(sitio1) + cuenta_errores_geometricos(sitio2) se_hace_cambio_de_posicion_de_sitios eg1 = cuenta_errores_geometricos(sitio2) + cuenta_errores_geometricos(sitio1) e2t = cuenta_errores_tipo1(sitio1) + cuenta_errores_tipo1(sitio1) si ((eg1<eg2) ó (e2t!=0)) regreso_de_sitios_a_posicion_inicial si ((eg2<eg1) y (e2t==0)) numero_violaciones = numero_violaciones - (eg1-eg2)

Sitio1

Sitio2

Sitio2

Sitio1

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

18

regresa (numero_violaciones) } /*cambia sitios si se mejora el numero de errores geometricos*/ int cambia_sitiosgeom (red, L, nviolG, i1, j1, k1, i2, j2, k2) { int nviolac, eg1, eg2, e2t; nviolac = nviolG; eg1 = error_geom_sitios(red,L,i1,j1,k1)+error_geom_sitios(red,L,i2,j2,k2); swap (&red [i1] [j1] [k1].site, &red [i2] [j2] [k2].site); /* Cambio los sitios */ eg2= error_geom_sitios(red,L,i1,j1,k1)+error_geom_sitios(red,L,i2,j2,k2); e2t=cuenta_vioS(red,L,i1,j1,k1)+ cuenta_vioS(red,L,i2,j2,k2); si ((eg1<eg2) || (e2t!=0)) swap(&red[i1][j1][k1].site,&red[i2][j2][k2].site);/*Re-Cambio los sitios */ si ((eg2<eg1) && (e2t==0)) nviolac = nviolac-(eg1-eg2); return nviolac; }

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

19

3.2.2 Relajación Sitio-Enlace Los fundamentos de este tipo de relajación están basados en el tipo de relajación anterior (Relajación sitio) pero a este se le adiciona un procedimiento el cual también va a modificar el radio de los enlaces. Básicamente en lo que consiste este tipo de relajación es en lo siguiente: Se pretende llegar a una red sin errores geométricos con una xmb_f y una xms, partiendo de una xmb_i con xmb_f > xmb_i , se corrige la red con xmb_i y una vez que ya no tiene errores xmb_i incrementa su valor y se vuelve a corregir y esto se repite hasta que xmb_i sea igual a xmb_f ,esto se hace con la finalidad de llegar a corregir una red de forma mas rápida y que permita además que la media de enlaces con respecto a la de sitios sea mas comprometida (e.i. la diferencia entre media de enlaces y de sitios en pequeña) ya que el método de relajación anterior llegaba a un punto en el cual el numero de errores geométricos ya no disminuía después de un periodo largo de tiempo y cuando las medias de enlaces y sitios era mas comprometida no llegaba a corregir toda la red. La secuencia de este algoritmo es la siguiente:

• Se copian los radios de los sitios a una matriz cúbica auxiliar que servirá como referencia para modificar el radio de los sitios en un cierto porcentaje.

• Se modifica el radio de los sitios según el porcentaje correspondiente al ciclo “para”.

• Se corrigen los errores geométricos para la red en cuestión(al inicio del ciclo es la red con la xmb inicial).

• Una vez que se haya corregido la red se incrementa la media de enlaces, es decir, a toda la red se le incrementa el valor de los radios de los enlaces según la constante “incremento_enlaces”.

• Este ciclo se va a repetir hasta que xmb_i sea igual a xmb_f • Por ultimo a la red se le aplica un cierto número de batidos que es determinado por

el usuario para relajar más la red, estos batidos se hacen cuidando que no se generen más errores en la red durante el cambio de posición de sitios y de enlaces.

En esencia los módulos ocupados en este método son los mismos que el anterior pero a este se le incorpora un nuevo método que incrementa el radio de los enlaces.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

20

Por ejemplo: Media inicial de enlaces = xmb_i

Figura 3.9 Representación Grafica de la Sitio - Enlace. Durante el decremento en el porcentaje de los sitios se van corrigiendo los errores geométricos. Se parte de una media de enlaces inicial y se incrementan los sitios en un 30% y se va decrementando en 1% hasta llegar a su radio original (0%), una vez que ya este corregida esta red la media de enlaces se incrementa en una unidad por ejemplo y se vuelve a repetir el procedimiento anterior hasta que la media de enlaces inicial sea igual a la media de enlaces final. Con esto se logra tener una red con medias de enlaces y sitios más comprometida y en un tiempo menor que si se hace de forma directa con el método anterior (Relajación Sitio).

Sitio aumentado 30% con xmb_i

Sitio aumentado 29% con xmb_i

Sitio aumentado 28% con xmb_i

Sitio aumentado 0% con xmb_i

Sitio aumentado 29% con xmb f

Sitio aumentado 28% con xmb f

Sitio aumentado 0% con xmb_f

Sitio aumentado 30% con xmb_f

xmb_i = xmb_f

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

21

3.2.2.1 Descripción detallada de los módulos empleados La función “Red_crea_c_RG_SitEnl” regresa un valor de tipo RED y es la que se encarga de hacer la corrección de los errores geométricos utilizando el método de relajación Sitio-Enlace. La primera operación que se hace es copiar los radios de los sitios originales en una matriz cúbica auxiliar, esto lo hace el procedimiento “copia_radios_sitios”. Posteriormente una vez que se esta dentro del ciclo “para” lo que se hace es modificar el radio de los sitios, esto es, se incrementan según el porcentaje que esta determinado por la variable “z” y lo hace el procedimiento ”modifica_radio_sitio” para después contar el número de errores geométricos que tiene la red actual, esto lo hace la función “violacgeom”, dentro del ciclo haz-mientras la función “batidotgeom” se encarga de realizar los batidos para corregir los errores geométricos que pueda tener la red en cuestión, esta función regresa el numero de errores que tiene la red y mientras sea mayor a 0 se va a estar ejecutando este ciclo. Una vez que se corrigen los errores geométricos se verifica si los sitios ya regresaron a su tamaño original (e.i cuando “zz = 0”) si no es así se repiten los pasos anteriores en caso contrario se verifica si la media de enlaces inicial (xmb_i) es menor a la media de enlaces final (xmb_f) y si se cumple se incrementa la media de enlaces en un valor que esta determinado por la variable “incremento_enlaces” y se procede a cambiar el radio de todos los enlaces de la red con el procedimiento llamado “modifica_enlaces” para que después se vuelvan a ejecutar todos los pasos antes mencionados, en caso contrario (xmb_i = xmb_f) el programa sale del ciclo “para” y por ultimo realiza el ultimo batido de la red para relajar aun mas la red, esto se hace mediante el procedimiento “batidotEq“ y se va a estar repitiendo según el valor de la variable “PasosMonteCarlo” que su valor es determinado por el usuario. RED Red_crea_c_RG_SitEnl (red, xmb_i, xmb_f, L, ruta, PasosMonteCarlo) { . . . increm = xmb_i; copia_radios_sitios (red, rad_orig, L); para (zz=30; zz>=0; zz-=1) { . . . modifica_radio_sitio (red, rad_orig, z, L); nviolG = batidotgeom (red, L, nviolG, randi); j++; } mientras (nviolG>0); si (zz==0) { . . . increm+ = incremento_enlaces; zz = 31;

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

22

modifica_enlaces (red, L, incremento_enlaces); } . . . } } mientras (MCS <= PasosMonteCarlo) batidotEq (red, L, &contadorMCS, &MCS, randi); return red; } El procedimiento “modifica_enlaces” cambia el radio de los enlaces según el valor de la variable “incremento_enlaces”, es decir, se incrementa la media de enlaces (xmb) para que después se vuelvan a corregir los errores geométricos de la nueva red. void modifica_enlaces (red, L, incremento_enlaces) { int i, j, k; para (i=0; i<L; i++) para (j=0; j<L; j++) para (k=0; k<L; k++) { red[i] [j] [k].xb+=incremento_enlaces; red[i] [j] [k].yb+=incremento_enlaces; red[i] [j] [k].zb+=incremento_enlaces; } } El resto de los módulos mencionados en la descripción anterior son los mismos que se utilizaron en el método de “Relajación Sitio” el único modulo que se adiciono fue el de “modifica_enlaces” en caso de dudas sobre los demás módulos utilizados se pueden consultar en la descripción del método de relajación “Relajación Sitio”

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

23

3.2.3 Relajación Enlace-Enlace En este tipo de relajación es parecido al anterior nada mas que en vez de incrementar en cierto porcentaje el radio de los sitios los que se hace ahora es disminuir en un cierto porcentaje el radio de los enlaces, básicamente en lo que consiste este tipo de relajación es en lo siguiente: Se pretende llegar a una red sin errores geométricos con una xmb_f y una xms, partiendo de una xmb_i con xmb_f > xmb_i , primero se disminuye el radio de los enlaces de la red con la xmb_i en un porcentaje y a esa red alterada se le comienzan a corregir los errores geométricos y una vez que se corrigen se incrementa el radio de los enlaces y se repite el procedimiento hasta que llegue a su radio original , esto se repite hasta que xmb_i sea igual a xmb_f ,esto se hace con la finalidad de llegar a corregir una red de forma mas rápida y que permita además que la media de enlaces con respecto a la de sitios sea mas comprometida (e.i. la diferencia entre media de enlaces y de sitios en pequeña). La secuencia de este algoritmo es la siguiente:

• Se copian los radios de los enlaces a una matriz cúbica auxiliar que servirá como referencia para modificar el radio de los enlaces en un cierto porcentaje.

• Se modifica el radio de los enlaces según el porcentaje correspondiente al ciclo “para”.

• Se corrigen los errores geométricos para la red en cuestión(al inicio del ciclo es la red con la xmb inicial).

• Una vez que se haya corregido la red se incrementa la media de enlaces, es decir, a toda la red se le incrementa el valor de los radios de los enlaces según la constante “incremento_enlaces”.

• Una vez que se hayan modificado los radios de los enlaces se vuelve a copiar estos radios a la matriz cúbica auxiliar para que cuando se repita el ciclo y se modifiquen los radios de los enlaces ya se haga sobre la nueva red que es a la que ya se le ha incrementado la media de enlaces (xmb).

• Este ciclo se va a repetir hasta que xmb_i sea igual a xmb_f • Por ultimo a la red se le aplica un cierto número de batidos que es determinado por

el usuario para relajar más la red, estos batidos se hacen cuidando que no se generen más errores en la red durante el cambio de posición de sitios y de enlaces.

En esencia los módulos ocupados en este método son los mismos que el anterior pero a este se le incorpora un nuevo método que incrementa el radio de los enlaces.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

24

Por ejemplo: Media inicial de enlaces= xmb_i

Figura 3.10 Representación Grafica de la Enlace - Enlace.

Durante el decremento en el porcentaje de los radios de los enlaces se van corrigiendo los errores geométricos. Se parte de una media de enlaces inicial y se decrementan sus radios en un 30% y se va aumentando en 1% hasta llegar a su radio original (0%), una vez que ya este corregida esta red, la media de enlaces se incrementa en una unidad por ejemplo y se vuelve a repetir el procedimiento anterior hasta que la media de enlaces inicial sea igual a la media de enlaces final. Con esto se obtiene una red con medias de enlaces y sitios más comprometida y en un tiempo menor que si se hace de forma directa con el método anterior (Relajación Sitio).

Radios de enlaces reducido 30% con

xmb_i

xmb_i = xmb_f

Radios de enlaces reducido 29% con

xmb_i

Radios de enlaces reducido 0% con xmb_i

(Tamaño original)

Radios de enlaces reducido 30% con

xmb_f

Radios de enlaces reducido 29% con

xmb_f

Radios de enlaces reducido 0% con xmb_f

(Tamaño original)

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

25

3.2.3.1 Descripción detallada de los módulos empleados La función “Red_crea_c_RG_EnlEnl” regresa un valor de tipo RED y es la que se encarga de hacer la corrección de los errores geométricos utilizando el método de relajación Enlace-Enlace. La primera operación que se hace es copiar los radios de los enlaces originales en una matriz cúbica auxiliar, esto lo hace el procedimiento “copia_radios_enlaces”. Posteriormente una vez que se esta dentro del ciclo “para” lo que se hace es modificar el radio de los enlaces, esto es, se decrementa el radio de los enlaces según el porcentaje que esta determinado por la variable “z” y lo hace el procedimiento ”modifica_radio_enlaces” para después contar el número de errores geométricos que tiene la red actual, esto lo hace la función “violacgeom”, dentro del ciclo do-mientras la función “batidotgeom” se encarga de realizar los batidos para corregir los errores geométricos que pueda tener la red en cuestión, esta función regresa el numero de errores que tiene la red y mientras sea mayor a 0 se va a estar ejecutando este ciclo. Una vez que se corrigen los errores geométricos se verifica si los enlaces ya regresaron a su tamaño original (e.i cuando “zz = 0”) si no es así se repiten los pasos anteriores, en caso contrario se verifica si la media de enlaces inicial (xmb_i) es menor a la media de enlaces final (xmb_f) y si se cumple se incrementa la media de enlaces en un valor que esta determinado por la variable “incremento_enlaces” y se procede a cambiar el radio de todos los enlaces de la red con el procedimiento llamado “modifica_enlaces” y una vez que ya se tenga la red con la nueva xmb se vuelve a copiar los radios de los enlaces a la matriz cúbica auxiliar para que cuando se repita el ciclo las operaciones siempre se realicen a la ultima red a la cual se le incremento la xmb, en caso contrario (xmb_i = xmb_f) el programa sale del ciclo “para” y por ultimo realiza el ultimo batido de la red para relajar aun mas la red, esto se hace mediante el procedimiento “batidotEq“ y se va a estar repitiendo según el valor de la variable “PasosMonteCarlo” que su valor es determinado por el usuario. RED Red_crea_c_RG_EnlEnl (red, xmb_i, xmb, L, ruta [], PasosMonteCarlo) { . . .

copia_radios_enlaces (red, rad_orig, L); increm=inicio; para(zz=30;zz>=0;zz-=1) { . . . modifica_radio_enlaces (red, rad_orig, z, L); nviolG = violacgeom (red, L); haz { nviolG = batidotgeom (red, L, nviolG, randi); j++; } mientras (nviolG>0); . . .

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

26

si (zz==0) { si (increm<xmb) { increm+=incremento_enlaces; zz = 31; modifica_enlaces (red, L, incremento_enlaces); copia_radios_enlaces (red, rad_orig, L); } . . . } } mientras (MCS <= PasosMonteCarlo) batidotEq (red, L, &contadorMCS, &MCS, randi); return red; } El procedimiento “copia_radios_enlaces” copia a una matriz cúbica auxiliar llamada “rad_orig” los radios de los enlaces de la red a la que se le este corrigiendo los errores geométricos. void copia_radios_enlaces (red, rad_orig, L) { int i, j, k; para (i=0; i<L; i++) para (j=0; j<L; j++) para (k=0; k<L; k++) { rad_orig[i] [j] [k].xb=red[i] [j] [k].xb; rad_orig[i] [j] [k].yb=red[i] [j] [k].yb; rad_orig[i] [j] [k].zb=red[i] [j] [k].zb; } } El procedimiento “modifica_radio_enlaces” modifica el radio de los enlaces de la red en la que actualmente se este trabajando, estos cambios se van a realizar en dependencia de la variable z que es la que determina el porcentaje con el cual la red se va a modificar. Por ejemplo:

Decremento de radios de enlaces nuevo_radio = (radio_original)*(1-z) Decremento de los radios de los sitios en un 30% nuevo_radio = 256.32 * (1-0.3) nuevo_radio = 179.424

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

27

void modifica_radio_enlaces (red, rad_orig, z, L) { int i, j, k; para (i=0; i<L; i++) para (j=0; j<L; j++) para (k=0; k<L; k++) { red[i] [j] [k].xb= (rad_orig[i] [j] [k].xb)*(1-z); red[i] [j] [k].yb= (rad_orig[i] [j] [k].yb)*(1-z); red[i] [j] [k].zb= (rad_orig[i] [j] [k].zb)*(1-z); } }

3.2.4 Relajación sobre la Formula del calculo de errores Geométricos. En este tipo de relajación no se hace ningún cambio sobre los radios de los enlaces o sobre los radios de los sitios sino que se hace cambios sobre la formula para corregir los errores geométricos (formula del teorema de Pitágoras). Rs

2 ≥ Rb12 + Rb2

2 Donde: Rs es el radio del sitio Rb1 es el radio del enlace 1 Rb2 es el radio del enlace 2 Lo que se hace es multiplicar la suma de los cuadrados de los radios de los enlaces por una variable “A”. Rs

2 ≥ A (Rb12 + Rb2

2) Con A є [0,1] y “A” va incrementando de 0.1 hasta legar a 1. Se pretende llegar a una red sin errores geométricos con una xmb_f y una xms, partiendo de una xmb_i con xmb_f > xmb_i , primero se parte de la xmb_i y cada vez que se corrigen los errores geométricos sobre la red se multiplica la variable “A” a la formula, donde el valor de A empieza en 0 y una vez que se corrigen los errores para ese valor de A se incrementa en 0.1 hasta y se repite el procedimiento hasta llegar a 1 y una vez que se corrigen los errores para xmb_i se incrementa ésta en dependencia de la variable “incremento_enlaces” y se repite este proceso hasta que xmb_i sea igual a xmb_f, esto se hace con la finalidad de llegar a corregir una red de forma mas rápida y que permita además que la media de enlaces con respecto a la de sitios sea mas comprometida (e.i. la diferencia entre media de enlaces y de sitios en pequeña).

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

28

La secuencia de este algoritmo es la siguiente: • Dentro del ciclo “para” se calculan los errores geométricos de la red tomando en

cuenta el valor que tiene “A” en ese momento (el valor de “A” lo determina la variable z).

• Se corrigen los errores geométricos para la red en cuestión(al inicio del ciclo es la red con la xmb inicial).

• Una vez que se haya corregido la red se incrementa la media de enlaces, es decir, a toda la red se le incrementa el valor de los radios de los enlaces según la constante “incremento_enlaces”.

• Este ciclo se va a repetir hasta que xmb_i sea igual a xmb_f • Por ultimo a la red se le aplica un cierto número de batidos que es determinado por

el usuario para relajar más la red, estos batidos se hacen cuidando que no se generen más errores en la red durante el cambio de posición de sitios y de enlaces.

RED Red_crea_c_RG_varA (red, xmb_i, xmb, L, ruta [], PasosMonteCarlo) { . . . para (zz = 0; zz<=10; zz++) { . . . nviolG=violacgeom_A (red, L, z); haz { nviolG = batidotgeom_A (red, L, nviolG, randi, z); j++; } mientras (nviolG>0); si (zz==10) { si (increm<xmb) { increm+=incremento_enlaces; zz = -1; modifica_enlaces (red, L, incremento_enlaces); } } } . . . mientras (MCS <= PasosMonteCarlo) batidotEq (red, L, &contadorMCS, &MCS, randi); return red; } El modulo que cuenta el número de errores geométricos en este tipo de relajación cambia ya que interviene la variable “A”. Para encontrar un error geométrico en un sitio utilizamos la siguiente lógica. Si (A (Rb1

2 + Rb22 ) > Rs

2) entonces violaciones geométricas se incrementa en 1

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

29

int errores_geom_A (en_derecha, en_abajo, en_izquierdo, en_arriba, en_frente, en_fondo, sitio, A) { int viol_geom = 0; si ((A*(pow (en_derecha, 2)+pow (en_frente, 2)))>pow (sitio, 2)) viol_geom++; si ((A*(pow (en_abajo, 2)+pow (en_frente, 2)))>pow (sitio, 2)) viol_geom++; si ((A*(pow (en_izquierdo, 2)+pow (en_frente, 2)))>pow (sitio, 2)) viol_geom++; si ((A*(pow (en_arriba, 2)+pow (en_frente, 2)))>pow (sitio, 2)) viol_geom++; si ((A*(pow (en_derecha, 2)+pow (en_fondo, 2)))>pow (sitio, 2)) viol_geom++; si ((A*(pow (en_abajo, 2)+pow (en_fondo, 2)))>pow (sitio, 2)) viol_geom++; si ((A*(pow (en_izquierdo, 2)+pow (en_fondo, 2)))>pow (sitio, 2)) viol_geom++; si ((A*(pow (en_arriba, 2)+pow (en_fondo, 2)))>pow (sitio, 2)) viol_geom++; si ((A*(pow (en_arriba, 2)+pow (en_derecha, 2)))>pow (sitio, 2)) viol_geom++; si ((A*(pow (en_abajo, 2)+pow (en_derecha, 2)))>pow (sitio, 2)) viol_geom++; si ((A*(pow (en_arriba, 2)+pow (en_izquierdo, 2)))>pow (sitio, 2)) viol_geom++; si ((A*(pow (en_abajo, 2)+pow (en_izquierdo, 2)))>pow (sitio, 2)) viol_geom++; return viol_geom; }

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

30

4. Generación de Gráficas y Estatísticas

4.1 Calculo del Área de Translape Como ya sabemos dentro de la generación de la Red, se están manejando dos distribuciones Gaussinas una para la Distribución de Sitios y la otra para la Distribución de enlaces. En ellas se presenta lo que llamamos Área de Traslape, en la Figura 4.1 se pueden observar el ejemplo de dos graficas las cuales tienen los siguientes datos: Media de Sitios = 265 Media de Enlaces = 225 Sigma = 15

Figura 4.1 Grafica que muestra las principales partes para el calculo de Área de Translape Procederemos pues a describir cada una de estas partes y veremos como calcular esta area.

Distribución de Enlaces:

⎥⎦

⎤⎢⎣

⎡ −−

∏ 2

2

221

σσ)RR(

exp BB

Distribución de Sitios:

⎥⎦

⎤⎢⎣

⎡ −−

∏ 2

2

221

σσ)RR(

exp SS

Ri = Punto de Intersección 1 - S (Ri) B (Ri)

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

31

4.1.1 Planteamiento del Problema Se deben identificar los principales elementos que se presentan en el calculo del Área de Translape, estos son los que pudieron observar en la figura 4.1, lo cuales son punto de intersección, Formula de Función de Distribución de Enlaces, Formula de Función de Distribución de Sitios, para poder calcular dicha área se debe proceder primero a plantear u despejar una serie de formulas analíticas que nos llevaran a ver como es el planteamiento de este problema. Para calcular el Área del Translape tenemos la siguiente formula:

))Ri(B)Ri(S(Translape +−=1 Formula 4.1 Se puede observa que para calcular el translape se necesita primero calcular el Área S (Ri) y posteriormente el Área B (Ri), para ello lo primero que haremos será igualar las dos funciones de distribución para poder encontrar el Punto de Intersección: Se igualan las funciones

⎥⎦

⎤⎢⎣

⎡ −−∏ 2

2

221

σσ)RR(

exp BB = ⎥⎦

⎤⎢⎣

⎡ −−

∏ 2

2

221

σσ)RR(

exp SS

Multiplicamos por σ∏2

1 ambas partes:

⎥⎥⎦

⎢⎢⎣

⎡⎥⎦

⎤⎢⎣

⎡ −−

∏∏=

⎥⎥⎦

⎢⎢⎣

⎡⎥⎦

⎤⎢⎣

⎡ −−

∏∏ 2

2

2

2

221

21

221

21

σσσσσσ)RR(

exp)RR(

exp BBBB

⎥⎦

⎤⎢⎣

⎡ −−=⎥

⎤⎢⎣

⎡ −−2

2

2

2

22 σσ)RR(

exp)RR(

exp BBBB

Se saca logaritmo de las dos partes:

⎥⎥⎦

⎢⎢⎣

⎡⎥⎦

⎤⎢⎣

⎡ −−=

⎥⎥⎦

⎢⎢⎣

⎡⎥⎦

⎤⎢⎣

⎡ −−2

2

2

2

22 σσ)RR(

explog)RR(

explog BBBB

2

2

2

2

22 σσ)RR()RR( BBBB −−

=−−

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

32

Como sabemos que las dos sigmas (“σ ”) son iguales podemos multiplicar por -2σ 2 ambos lados:

⎥⎦

⎤⎢⎣

⎡ −−−=⎥

⎤⎢⎣

⎡ −−− 2

22

2

22

22

22

σσ

σσ

)RR()RR( BBBB

22 )RR()RR( SSBB −=−

Sabemos que estamos buscando del punto de intersección de las dos funciones por ello podemos sustituir RB y RS por Ri, ya que hayamos hecho esto desarrollamos el cuadrado de ambos lados y optemos la siguiente formula para poder encontrar el punto de Intersección:

)RR(RR

RBS

Si −

−=

2

22B Formula 4.2

Donde:

• SR = Media de Sitios • BR = Media de Enlaces

Podemos calcular ahora cualquier punto de Intersección de dos funciones gaussianas, estos nos sirve además para poder entrar de lleno al calculo de el Área del Traslape, para esto recordamos que la Formula 4.1 tenia implícito el calculo de dos Áreas. Una era S (Ri) y la otra era B (Ri), calcularemos el área B (Ri) y como las funciones se encuentran normalizadas se puede calcular el otro pedazo de área que falta multiplican por 2 a B (Ri) y de esa forma tendremos el Área de Traslape.

)Ri(B*Translape 2= Formula 4.3

4.1.2 Algoritmo para resolver el Problema El primer punto que se tomo en consideración para poder resolver el problema del Calculo del Translape fue ver con que método se calcularía esta área, nosotros propusimos el método del trapecio el cual lo explicaremos a continuación:

El método de los trapecios es muy simple y se puede explicar fácilmente a partir de la Figura 4.2.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

33

Figura 4.2 Ejemplo del Método de Trapecio

Eligiendo un espaciado

Se divide el intervalo [a, b] por medio de puntos igualmente espaciados

Tenemos que, las ordenadas de dichos puntos son

En cada intervalo (xi, xi+1) se sustituye la función f(x) por la recta que une los puntos (xi, yi) y (xi+1, yi+1) tal como se aprecia en la Figura 4.2.

La parte sombreada, un trapecio, se toma como el área aproximada, su valor se puede calcular fácilmente

El área total aproximada es la suma de las áreas de los n pequeños trapecios de anchura h

O bien, agrupando términos

Cuanto mayor sea el número de divisiones del intervalo [a, b] que hagamos, menor será h, y más nos aproximaremos al valor exacto de la integral.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

34

Una vez que se explico esto dentro del código nosotros propusimos 4 módulos que se encargar de calcular el área, estos módulos son los siguientes:

• Calculo de Translape • Punto de Intersección de las dos funciones gaussianas • Método de Trapecio • Función de Evaluación de las Distribuciones

4.1.2.1 Calculo de Translape En este modulo se encuentran las llamadas a los otros tres módulos y es el que se encarga de poner los mensajes en pantalla de cada uno de los resultados obtenidos. 4.1.2.2 Punto de Intersección de las dos Funciones Gaussianas En este modulo es donde se calcula el punto de intersección de dos funciones gaussinanas, se le pasan los datos de las medias de Enlaces y de Sitios, recordamos la Formula 4.2 la cual era para calcular el punto de intersección pues esta es la que implementamos de manera directa en este modulo, por lo que la única función que tiene este modulo es sustituir los valores y obtener así Ri (Punto de Intersección), el cual será regresado al modulo Calculo de Translape. 4.1.2.3 Método de Trapecio En este modulo es donde se implemento el Meto de Trapecio explicado anteriormente: Lo primero que hay que localizar, es el Limite Inferior y Superior sobre los cuales se va integrar la función, estos se pueden visualizar mejor en la Figura 4.3: Limite Inferior = Limite Superior = xrb +

(3*sigma)

Figura 4.3 Limite Superior e Inferior

de la Grafica de distribución de Sitio - Enlace

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

35

Se procede posteriormente a calcular el tamaño de nuestras particiones que va esta almacenado en la variable h:

n)eriorinf_itelimeriorsup_ite(limh −

=

Entre mas grande sea n la aproximación será mejor. Se calcula posteriormente cuanto vale cada uno de los subintervalos evaluados en la función esto se hace mediante el siguiente ciclo: para (x=limite_inferior + h; x < limite_superior; x+=h) So+ = f (x, xrb, sigma); Donde:

• xmb = Media de Enlaces. • So = Variable donde se almacenará la evaluación de cada subintervalo.

Se propone la siguiente formula para poder calcular el Área de B (Ri): Area = (h*(f (inf, xrb, sigma) +2*So+f (sup, xrb, sigma))/2.0) Una vez obtenida esta área retomaremos la Formula 4.3 y obtendremos el traslape de la siguiente forma: Translape = Área * 2 4.1.2.4 Función de Evaluación de las Distribuciones La función que se va estar evaluando va ser la siguiente: 1/(sqrt (2*Pi)*sigma))*(exp ((-(pow ((Ri-xrb) ,2)))/ (2*pow (sigma, 2))) Donde:

• Sqrt = Función Raíz Cuadrada definida en C. • Pi = 2*Π • sigma = Desviación Estándar. • exp = Función exponencial definida en C. • pow = Función para poder elevar a alguna potencia un valor o

variable. • Ri = Punto de Intelección obtenido en el modulo punt_inters. • xrb = Media de Enlaces.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

36

4.2 Calculo de Probabilidad de Enlaces El cálculo de Probabilidades de Enlaces, localiza que enlaces de diferentes tamaños están rodeando a un sitio de un tamaño dado (Media de Sitios + sigma, Media de Sitios – sigma, Media de Sitios), con el objetivo de ver que comportamiento tienen estos sitios dentro de la generación de redes sin errores geométricos.

4.2.1 Planteamiento Del Problema Los siguientes pasos muestran como se localizan las Probabilidades de Enlaces:

1. Dentro de la RED sin ningún error geométrico, obtenida por los cuatro Métodos de Relajación explicados anteriormente, se localizan Sitios con ciertos tamaños, estos son:

• xms (Media de Sitios) • xms + sigma (Media de Sitios mas Sigma) • xms – sigma (Media de Sitios menos Sigma)

2. Cada uno de estos sitios es rodeado por enlaces de diferente tamaño dentro del

intervalo [xmb-(3*sigma), xmb + (3*sigma)], localizaremos estos enlaces y veremos que probabilidades tiene un sitio de estar rodeado por un enlace de diferente tamaño, de aquí radica el nombre de Probabilidad de Enlaces.

Definiremos la siguiente función:

⎥⎦

⎤⎢⎣

S

B

RR

ρ

Esta es la Densidad de Probabilidad Condicional de que dado un Sitios de tamaño RS, se encuentre conectado a un enlace de tamaño RB. Como se calcula directamente en la RED:

Nx

RR i

S

B ∑=⎥⎦

⎤⎢⎣

⎡ρ Formula 4.4

Donde:

• xi = Evento de Encontrar un enlace de tamaño RB conectado a un Sitio de tamaño fijo RS.

• N = Numero tal de enlaces conectados a sitios de tamaño Rs

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

37

Dado esto debemos localizar entonces estas tres probabilidades:

1. ⎥⎦

⎤⎢⎣

S

B

RR

ρ

2. ⎥⎦

⎤⎢⎣

⎡+ σ

ρS

B

RR

3. ⎥⎦

⎤⎢⎣

⎡−σ

ρS

B

RR

Correspondiente a los tamaños de Sitios: SR (Media de Sitios), σ+SR (Media de Sitios + sigma), σ−SR (Media de Sitios – sigma)

4.2.2 Algoritmo para resolver el Problema ¿Qué se planteo para resolver este Problema? Fue muy simple, se genera una red sin errores geométricos con cualquiera de los cuatro métodos de relajación, ya que se tiene esta red se localizan uno por uno los diferentes sitios que cumplan estar en los tres tamaños que se definieron anteriormente, dado que el programa genera números aleatorio reales, nunca encontraremos sitios con los tres tamaños anteriormente vistos, por ello se definen tres tamaños nuevos, que no necesariamente son tamaños, mas bien son inérvalos en los que puede caer algún sitio:

1. [xms-δ, xms+ δ] (Media de Sitios – Delta, Media de Sitios + Delta) 2. [(xms + sigma)-δ, (xms + sigma)+ δ] (Media de Sitios mas Sigma – Delta,

Media de Sitios mas Sigma + Delta ) 3. [(xms - sigma)-δ, (xms - sigma)+ δ] (Media de Sitios menos Sigma – Delta,

Media de Sitios menos Sigma + Delta ) Vamos a poner un ejemplo, se localiza un sitio que cae en el Intervalo numero 2:

Figura 4.4 Sitio que esta dentro del intervalo [(xms + sigma)-δ, (xms + sigma)+ δ]. Se localizan que enlaces lo están rodeando y de que tamaño son estos

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

38

0 … 9 … 13 … 15 …. 30 …. 40 ….

Sabemos que cada uno de los sitios esta rodeado por enlaces de diferente tamaño, el tamaño de estos enlaces esta delimitado por el intervalo [xmb-(3*sigma), xmb + (3*sigma)], este intervalo lo tendremos que dividir en subintervalos pequeños, los subintervalos van a ser de la siguiente forma:

Primer Subintervalo = [xmb – (3*sigma), (xmb – (3*sigma)) + 1] Segundo Subintervalo = [(xmb – (3*sigma)) + 1, (xmb – (3*sigma)) + 2] Tercero Subintervalo = [(xmb – (3*sigma)) + 2, (xmb – (3*sigma)) + 3] Cuarto Subintervalo = [(xmb – (3*sigma)) + 3, (xmb – (3*sigma)) + 4] . . . n Subintervalo = [(xmb – (n-1*sigma)) + n-1, (xmb – (n-1*sigma)) + n] Cada subintervalo va ir de una unidad en unidad para que se consideren todos los tamaños de los enlaces, de esta forma podemos utilizar un tipo de dato definido en C, el cual es un arreglo, dentro de este arreglo irán cada una de las probabilidades para los distintos valores de enlaces. Retomando el ejemplo el sitio esta rodeado por 6 enlaces como máximo, los 6 enlaces pueden estar en el primer subintervalo, en el quinceavo, en el noveno, en el cuarentavo, en el treceavo y en el treintavo respectivamente, por lo que el arreglo ira depositando primero cuantos enlaces están rodeando a un sitio con un tamaño fijo de la siguiente forma: 1 …. 1 … 1 … 1 …. 1 …. 1 …

El arreglo ira de la posición [0, 1, 2, 3, …. , n], en donde n se conoce y se puede calcular muy fácil, sabemos que vamos estar monitoreando todos los tamaños de los enlaces, por ello tenemos un limite superior para la distribución que es xmb – (3*sigma) y un limite superior que es xmb + (3*sigma), por ello el tamaño de este intervalo seria la diferencia por lo que se obtiene el valor de n o lo que es lo mismo:

)))*(xmb())*(xmb((n σσ 33 −−+= De esta forma podemos declarar arreglos largos como se muestra a continuación: float *prob1; prob1= (float *) malloc (diferencia* sizeof (int)); Tenemos que declarar tres arreglos para cada uno de los valores posibles que puede tomar un Sitio, el algoritmo que se implemento para poder resolver esto se conforma por dos módulos:

• Calculo de Probabilidad de Enlaces • Conteo de Enlaces que rodean a un Sitio

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

39

4.2.2.1 Calculo de probabilidad de Enlaces En este modulo se van a ir localizando cada uno de los Sitios que se presenten en la Red este numero de Sitios va estas acumulado en tres variables distintas, una vez que se haya recorrido toda la RED, tendremos diferentes valores para estas variables, por ejemplo: N1 = 320 N2 = 420 N3 = 280 Comentamos anteriormente que cada sitio esta rodeado por 6 enlaces como máximo, pues ese número de enlaces es por el que vamos a multiplicar cada una de las variables N’es, y este va a ser el factor N de la Formula 4.4, esto es: N1 = 320 * 6 = 1920 N2 = 420 * 6 = 2520 N3 = 280 * 6 = 1680 ¿Como se obtienen estas N’es? Se hace mediante un triple ciclo anidado, el cual va estar recorriendo la RED Índice por Índice, como se muestra en el siguiente pseudo código: para(i=0;i<L;i++){ para(j=0;j<L;j++){ para (k=0; k<L; k++) { si ((sitio<= (xms+delta)) && (sitio>= (xms-delta))) { conts1++; prob_enlaces (parametros_de_la_funcion); } si ((sitio<= ((xms+sigma)+delta)) && (sitio>= ((xms+sigma)-delta))) { conts2++; prob_enlaces (parametros_de_la_funcion); } si ((sitio<= ((xms-sigma)+delta)) && (sitio>= ((xms- sigma)-delta))) { conts3++; prob_enlaces (parametros_de_la_funcion); } } } } N1=conts1*6; N2=conts2*6; N3=conts3*6; si((N1!=0)&&(N2!=0)&&(N3!=0)){ para (z=0; z<diferencia; z++) prob1[z]/=N1,prob2[z]/=N2,prob3[z]/=N3; }

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

40

Se puede observar que hay tres comparaciones que corresponden a los tres intervalos para los tamaños de sitios, en donde cada vez que se encuentra un sitio se incrementa un contador especial, y se hace una llamada a la función prob_enlaces la cual se va encargar de ver que enlace lo rodea e ir llenando el arreglo, al final se multiplica los diferentes contadores por 6 y se obtienen las N’es, después de obtener las N’es procedemos a obtener las probabilidades, lo único que se hace es dividir cada uno de los arreglos correspondientes a los tres intervalos de los valores de sitios entre su N correspondiente. 4.2.2.2 Conteo de Enlaces que rodean a un Sitio. En esta función se va a recorrer los diferentes intervalos de la distribución de enlaces, y de esta manera llenar cada uno de los arreglos para los distintos tamaños que pueda tomar un sitio, por ello se le va a mandar que arreglo es el que se va a manipular, y que enlaces están rodeando al sitio el algoritmo que se implemento es el siguiente: para (mrb = lim_infb; mrb<=lim_supb; mrb++) { si ((enlace_izquierdo<=b) && (enlace_izquierdo>=a)) contb++; si ((enlace_arriba<=b) && (enlace_arriba>=a)) contb++; si ((enlace_frente<=b) && (enlace_frente>=a)) contb++; si ((enlace_derecha<=b) && (enlace_derecha>=a)) contb++; si ((enlace_abajo<=b) && (enlace_abajo>=a)) contb++; si ((enlace_atras<=b) && (enlace_atras>=a)) contb++; acm=prob[ri]+contb; prob[ri]=acm; contb = 0; ri++; a=b; b++; } Se verifica en que posición del arreglo deben ir los 6 enlaces que rodean al sitio y así hasta terminar todo el modulo Red_prob_enlaces.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

41

4.3 Calculo de Probabilidad de Sitios El cálculo de Probabilidades de Sitios, localiza que sitios de diferentes tamaños están rodeando a un enlace de un tamaño dado (Media de Enlaces + sigma, Media de Enlaces – sigma, Media de Enlaces), con el objetivo de ver que comportamiento tienen estos enlaces dentro de la generación de redes sin errores geométricos

4.3.1 Planteamiento Del Problema Los siguientes pasos muestran como se localizan las Probabilidades de Sitios:

1. Dentro de la RED sin ningún error geométrico, obtenida por los cuatro Métodos de Relajación explicados anteriormente, se localizan Enlaces con ciertos tamaños, estos son:

• xmb (Media de Sitios) • xmb + sigma (Media de Sitios mas Sigma) • xmb – sigma (Media de Sitios menos Sigma)

2. Cada uno de estos enlaces es conectado por dos sitios como máximo, estos sitios son de diferente tamaño dentro del intervalo [xms-(3*sigma), xms + (3*sigma)], localizaremos estos sitios y veremos que probabilidades tiene un enlace de estar rodeado por un sitio de un tamaño dado, de aquí radica el nombre de Probabilidad de Sitios.

Definiremos la siguiente función:

⎥⎦

⎤⎢⎣

B

S

RR

ρ

Esta es la Densidad de Probabilidad Condicional de que dado un Enlace de tamaño RB, se encuentre conectado a un Sitio de tamaño RS. Como se calcula directamente en la RED:

Nx

RR i

B

S ∑=⎥⎦

⎤⎢⎣

⎡ρ Formula 4.5

Donde:

• xi = Evento de Encontrar un sitio de tamaño RS conectado a un Enlace de tamaño fijo RB.

• N = Numero tal de Sitios conectados a un Enlace de tamaño RB Dado esto debemos localizar entonces estas tres probabilidades:

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

42

1. ⎥⎦

⎤⎢⎣

B

S

RR

ρ

2. ⎥⎦

⎤⎢⎣

⎡+ σ

ρB

S

RR

3. ⎥⎦

⎤⎢⎣

⎡−σ

ρB

S

RR

Correspondiente a los tamaños de Sitios: BR (Media de Enlaces), σ+BR (Media de Enlaces + sigma), σ−BR (Media de Enlaces – sigma)

4.3.2 Algoritmo para resolver el Problema ¿Qué se planteo para resolver este Problema? Fue muy simple, se genera una red sin errores geométricos con cualquiera de los cuatro métodos de relajación, ya que se tiene esta red se localizan uno por uno los diferentes enlaces que cumplan estar en los tres tamaños que se definieron anteriormente, dado que el programa genera números aleatorio reales, nunca encontraremos enlaces con los tres tamaños anteriormente vistos, por ello se definen tres tamaños nuevos, que no necesariamente son tamaños, mas bien son inérvalos en los que puede caer algún enlace:

4. [xmb-δ, xmb+ δ] (Media de Enlaces – Delta, Media de Enlaces + Delta) 5. [(xmb + sigma)-δ, (xmb + sigma)+ δ] (Media de Enlaces mas Sigma – Delta,

Media de Enlaces mas Sigma + Delta ) 6. [(xmb - sigma)-δ, (xmb - sigma)+ δ] (Media de Enlaces menos Sigma – Delta,

Media de Enlaces menos Sigma + Delta ) Vamos a poner un ejemplo, se localiza un enlace que cae en el Intervalo numero 2:

Figura 4.5 Enlace que esta dentro del intervalo [(xmb + sigma)-δ, (xmb + sigma)+ δ]. Se localizan que sitios lo están rodeando y de que tamaño son estos

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

43

0 … 9 … 13 … 15 …. 30 …. 40 ….

Sabemos que cada uno de los enlaces esta rodeado por sitios de diferente tamaño, el tamaño de estos sitios esta delimitado por el intervalo [xms-(3*sigma), xms + (3*sigma)], este intervalo lo tendremos que dividir en subintervalos pequeños, los subintervalos van a ser de la siguiente forma:

Primer Subintervalo = [xms – (3*sigma), (xms – (3*sigma)) + 1] Segundo Subintervalo = [(xms – (3*sigma)) + 1, (xms – (3*sigma)) + 2] Tercero Subintervalo = [(xms – (3*sigma)) + 2, (xms – (3*sigma)) + 3] Cuarto Subintervalo = [(xms – (3*sigma)) + 3, (xms – (3*sigma)) + 4] . . . n Subintervalo = [(xms – (n-1*sigma)) + n-1, (xms – (n-1*sigma)) + n] Cada subintervalo va ir de una unidad en unidad para que se consideren todos los tamaños de los sitios, de esta forma podemos utilizar un tipo de dato definido en C, el cual es un arreglo, dentro de este arreglo irán cada una de las probabilidades para los distintos valores de sitios. Retomando el ejemplo el enlace esta conectado con dos sitios como máximo, los dos enlaces pueden estar en el quinceavo subintervalo y en el treintavo respectivamente, por lo que el arreglo ira depositando primero cuantos sitios están rodeando a un enlace sitio con un tamaño fijo de la siguiente forma:

El arreglo ira de la posición [0, 1, 2, 3, …. , n], en donde n se conoce y se puede calcular muy fácil, sabemos que vamos estar monitoreando todos los tamaños de los sitios, por ello tenemos un limite superior para la distribución que es xms – (3*sigma) y un limite superior que es xms + (3*sigma), por ello el tamaño de este intervalo seria la diferencia por lo que se obtiene el valor de n o lo que es lo mismo:

)))*3(())*3((( σσ −−+= xmsxmsn De esta forma podemos declarar arreglos largos como se muestra a continuación: float *prob1; prob1= (float *) malloc (diferencia* sizeof (int)); Tenemos que declarar tres arreglos para cada uno de los valores posibles que puede tomar un Enlace, el algoritmo que se implemento para poder resolver esto se conforma por dos módulos:

• Calculo de Probabilidad de Sitios • Conteo de Sitios que rodean a un Enlace

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

44

4.3.2.1 Calculo de Probabilidades de Sitios En este modulo se van a ir localizando cada uno de los Enlaces que se presenten en la Red este numero de Enlaces va estas acumulado en tres variables distintas, una vez que se haya recorrido toda la RED, tendremos diferentes valores para estas variables, por ejemplo: N1 = 560 N2 = 830 N3 = 380 Comentamos anteriormente que cada enlace esta rodeado por 2 sitios como máximo, pues ese número de sitios es por el que vamos a multiplicar cada una de las variables N’es, y este va a ser el factor N de la Formula 4.5, esto es: N1 = 560 * 2 = 1120 N2 = 830 * 2 = 1660 N3 = 380 * 2 = 760 ¿Como se obtienen estas N’es? Se hace mediante un triple ciclo anidado, el cual va estar recorriendo la RED Índice por Índice, como se muestra en el siguiente pseudo código: para (i=0;i<L;i++){ para (j=0;j<L;j++){ para (k=0;k<L;k++){

si ((e_iz <= (xmb+delta))&&(e_iz >= (xmb-delta))||(e_ar <= (xmb+delta))&&(e_ar >= (xmb-delta))||(e_fr <= (xmb+delta))&&(e_fr >= (xmb-delta))||(e_de <= (xmb+delta))&&(e_de >= (xmb-delta))||(e_ab <= (xmb+delta))&&(e_ab >= (xmb-delta))||(e_at <= (xmb+delta))&&(e_at >= (xmb-delta))){

tamanio1 = xmb+delta; tamanio2 = xmb-delta;

contb1=contb1 + prob_sitios (parámetros de la función);

}

si ((e_iz <= ((xmb+sigma)+delta))&&(e_iz >= ((xmb+sigma)-delta))||(e_ar <= ((xmb+sigma)+delta))&&(e_ar >= ((xmb+sigma)-delta))||(e_fr <= ((xmb+sigma)+delta))&&(e_fr >= ((xmb+sigma)-delta))||(e_de <= ((xmb+sigma)+delta))&&(e_de >= ((xmb+sigma)-delta))||(e_ab <= ((xmb+sigma)+delta))&&(e_ab >= ((xmb+sigma)-delta))||(e_at <= ((xmb+sigma)+delta))&&(e_at >= ((xmb+sigma)-delta))){

tamanio1= (xmb+sigma)+delta; tamanio2= (xmb+sigma)-delta;

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

45

contb2=contb2 + prob_sitios (parámetros de la función);

}

si ((e_iz <= ((xmb-sigma)+delta))&&(e_iz >= ((xmb-sigma)-delta))||(e_ar <= ((xmb-sigma)+delta))&&(e_ar >= ((xmb-sigma)-delta))||(e_fr <= ((xmb-sigma)+delta))&&(e_fr >= ((xmb-sigma)-delta))||(e_de <= ((xmb-sigma)+delta))&&(e_de >= ((xmb-sigma)-delta))||(e_ab <= ((xmb-sigma)+delta))&&(e_ab >= ((xmb-sigma)-delta))||(e_at <= ((xmb-sigma)+delta))&&(e_at >= ((xmb-sigma)-delta))){

tamanio1= (xmb-sigma)+delta;

tamanio2= (xmb-sigma)-delta; contb3=contb3 + prob_sitios (parámetros de la función);

} } } } N1=contb1*2; N2=contb2*2; N3=contb3*2; si((N1!=0)&&(N2!=0)&&(N3!=0)){

para (z=0; z<diferencia; z++) prob1[z]/=N1,prob2[z]/=N2,prob3[z]/=N3; } Se puede observar que las comparaciones de este modulo solo cuentan un solo enlace de un determinado tamaño para ver los distintos enlaces que se localizan de distintos tamaños debemos ver como se planteo en la función Calculo de Probabilidad de Sitios. 4.3.2.2 Conteo de Sitios que rodean a un Enlace Esta es la función que tiene mas peso para localizar las probabilidades de sitios, sabemos que al haber echo una llamada a esta función se encontró un enlace con uno de los intervalos de tamaños de enlaces, tenemos 6 posibilidades, de que esto haya ocurrido, se puede haber tratado de un enlace izquierdo, enlace derecho, enlace arriba enlace abajo, enlace frente y enlace atrás, por ello, se deben hacer 6 comparaciones para ver cuantos de todos estos posibles enlaces están dentro del intervalo localizado, por ello este algoritmo prevé esta situación realizando las 6 comparaciones y en cada comparación reporta que Sitios dentro del intervalo de distribución de sitios esta rodeando a los enlaces, y se vera en donde corresponde ponerlos dentro del arreglo para tener las probabilidades de los tres intervalos de tamaño de enlaces, el algoritmo es el siguiente:

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

46

si ((e_iz <= (tamanio1))&&(e_iz >= (tamanio2))){ contb++; para (mrs = lim_infs; mrs<=lim_sups; mrs++) { si ((sitio<=b) && (sitio>=a)) conts++; si((s_iz<=b) && (s_iz>=a)) conts++; acm = prob [ri] +conts; prob [ri] =acm; conts=0; ri++; a=b; b++; } a=lim_infs; b=lim_infs+1; ri=0; } si ((e_ar <= (tamanio1))&&(e_ar >= (tamanio2))){ contb++; para (mrs = lim_infs; mrs<=lim_sups; mrs++) { si ((sitio<=b) && (sitio>=a)) conts++; si ((s_ar<=b) && (s_ar>=a)) conts++; acm=prob [ri] +conts; prob [ri] =acm; conts=0; ri++; a=b; b++; } a=lim_infs; b=lim_infs+1; ri=0; } si ((e_fr <= (tamanio1))&&(e_fr >= (tamanio2))){ contb++; para (mrs = lim_infs; mrs<=lim_sups; mrs++) { si ((sitio<=b) && (sitio>=a)) conts++; si ((s_fr<=b) && (s_fr>=a)) conts++; acm = prob [ri] +conts; prob [ri] =acm; conts=0; ri++; a=b; b++; } a=lim_infs;

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

47

b=lim_infs+1; ri=0; } si ((e_de <= (tamanio1))&&(e_de >= (tamanio2))){ contb++; para (mrs = lim_infs; mrs<=lim_sups; mrs++) { si ((sitio<=b) && (sitio>=a)) conts++; si ((s_de<=b) && (s_de>=a)) conts++; acm=prob [ri] +conts; prob [ri] =acm; conts=0; ri++; a=b; b++; } a=lim_infs; b=lim_infs+1; ri=0; } si ((e_ab <= (tamanio1))&&(e_ab >= (tamanio2))){ contb++; para (mrs=lim_infs; mrs<=lim_sups; mrs++) { si ((sitio<=b) && (sitio>=a)) conts++; si ((s_ab<=b) && (s_ab>=a)) conts++; acm=prob [ri] +conts; prob [ri] =acm; conts=0; ri++; a=b; b++; } a=lim_infs; b=lim_infs+1; ri=0; } si ((e_at <= (tamanio1))&&(e_at >= (tamanio2))){ contb++; para (mrs=lim_infs; mrs<=lim_sups; mrs++) { si ((sitio<=b) && (sitio>=a)) conts++; si ((sat <= b) && (sat>=a)) conts++; acm=prob [ri] +conts; prob [ri] =acm; conts=0; ri++; a=b; b++;

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

48

} a=lim_infs; b=lim_infs+1; ri=0; } return (contb); Donde:

• tamanio1 = Se pasa del modulo Red_prob_enlaces y es el limite inferior de los tres posibles intervalos de tamaño de Enlaces.

• tamanio2 = Se pasa del modulo Red_prob_enlaces y es el limite superior de los tres posibles intervalos de tamaño de Enlaces.

• contb es el contador que nos va a servir para poder calcular las N’es para el calculo de Probabilidades.

• conts es el contador que nos va ayudar a ver cuantos y de que tamaño de sitios están rodeando a un enlace de tamaño fijo.

Se pudo observar que la explicación es la misma que la de Probabilidad de Enlaces, solo que este es mas rebuscado ya que hay mas posibilidades de encontrar enlaces de distintos tamaños dados, y se debe de contar todas estas posibilidades, y además hay notar una cosa la cual es que pueden ser contados sitios dos veces, por ejemplo si se localiza un enlace izquierdo Rb1 de un tamaño dado, se cuenta tanto su sitio izquierdo Rs1 y su sitio derecho Rs2, pero se sabemos que un enlace derecho Rb2 va a tener un sitio izquierdo Rs3 que puede ser el sitio derecho Rs2 del primer enlace Rb1 por lo que se estaría contando dos veces este mismo sitio, para que se entienda mejor esto la siguiente figura muestra este caso:

Figura 4.6 Muestra un ejemplo de Probabilidad de Enlaces

Enlace Izquierdo Rb1 de tamaño dado

Sitio Derecho Rs2 Sitio Izquierdo Rs1 Y Sitio Derecho Rs3

Enlace Derecho Rb2 de tamaño dado

Sitio Izquierdo Rs4

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

49

4.4 Graficas Descriptivas de Resultados Además de todos los cálculos numéricos anteriormente mencionados, se necesitaba tener una visualización grafica de los resultados de salida que arrojaba nuestro simulador, por ello se realizaron las siguientes graficas:

• Grafica de Distribución de Sitios & Enlaces: Muestra las dos Funciones Gaussinas y el translape que existe entre ellas

• Grafica de probabilidades de Sitios y Enlaces: Muestra el comportamiento que tiene las diferentes probabilidades ya sea de sitios o de enlaces comparadas con su distribución de cada una.

• Graficas de Intrusión: Muestra el comportamiento que tuvo la operación de Intrusión sobre redes sin errores geométricos, mostrando la relación que hubo entre presión vs volumen y presión vs sitios llenos

4.4.1 Planteamiento Del Problema Para poder resolver el problema de graficar las probabilidades de los Sitios y de los Enlaces utilizamos la herramienta de Linux llama “GnuPlot”, la cual nos sirve para graficar ya sean valores o graficas de manera directa, a continuación se explicaran las principales características de GnuPlot 4.4.1.1 GnuPlot Introducción: Es un programa muy flexible para generar gráficas de funciones y datos.

• Tiene una de licencia de software libre particular (no es compatible con la GPL). • Fue creado por Thomas Williams de la Pixar Corporation en 1986, aunque desde

entonces ha sufrido numerosas modificaciones. • Es el motor de “plotting” utilizado en el programa GNU Octave de computación

numérica. • Puede producir información directamente en la pantalla o en multitud de formatos

gráficos. • El programa puede ser utilizado desde la línea de comandos interactiva o en

proceso “batch”.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

50

Comandos básicos:

• Salvar la situación actual gnuplot> save “fichero.plt”

• Leer de un fichero desde gnuplot gnuplot> load “fichero.plt”

• Leer de un fichero desde fuera de gnuplot $gnuplot savefile.plt

• Salir de gnuplot gnuplot> exit gnuplot> quit

Trazado de Funciones: Existen dos comandos básicos para realizar el trazado de una función

• Trazado de funciones en 2D gnuplot> plot sin(x)

• Trazado de funciones en 3D gnuplot> splot sin(x)

Cuando se traza una función como la anterior gnuplot determina las divisiones y escalas de la gráfica de forma automática.

o Para trazar la función solo para 0 ≤ x ≤ 5 gnuplot> plot [0:5] sin (x)

o de otra forma gnuplot> set xrange [0:5] gnuplot> plot sin(x)

• Se pueden indicar rangos para las variables x,y,z

gnuplot> splot [0:5] [3:2] [1:2] sin (x) O de otra forma gnuplot> set xrange [0:5] gnuplot> set yrange [3:2]

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

51

gnuplot> set zrange [1:2] gnuplot> splot sin(x)

Ayuda en GnuPlot:

• Para obtener la ayuda general de GnuPlot gnuplot> help

• Para obtener ayuda sobre un comando concreto gnuplot> help command Ejemplo

gnuplot> help replot gnuplot> help set xrange gnuplot> help expressions functions

Definición de funciones:

• Variables gnuplot> k=3 gnuplot> print k

• Funciones

gnuplot> a=1+2*sqrt (k) gnuplot> plot (a)

• Constantes

gnuplot> plot [-2*pi:2*pi] sin(x),cos(x) Estilos de trazado:

• El estilo de trazado se cambia con “with estilo” gnuplot> plot sin(x) with impulses

• Estilos comunes

o lines: une los puntos con líneas suaves. o dots: representa puntos, difícil de ver si no hay muchos. o points: símbolos para los puntos (set point size). o impulses: representa con barras verticales de altura “y”. o steps: utiliza tramos rectos entre puntos.

Formatos de salida:

• Si no se especifica una Terminal de dibujo las gráficas se realizan en la estándar (x11)

o Es posible cambiar la Terminal utilizando el comando para elegir como salida la impresora, un fichero, la consola, etc.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

52

gnuplot> set terminal postscript gnuplot> set terminal x11 gnuplot> set terminal ...

• Indicar tipo de Terminal y salida de datos

o Salida PNG

gnuplot> set terminal png gnuplot> set output “sin.png” gnuplot> plot sin(x)

o Salida Latex gnuplot> set gnuplot> set output “sin.tex” gnuplot> replot

4.4.2 Resolución del problema Se creo un archivo de texto en el cual se puso los principales componentes para poder lograr las graficas de las distribuciones de enlace & sitio, probabilidades de sitios, probabilidades de enlaces y graficas de intrusión, estos archivos contienen las siguientes líneas: Distribución de Sitios & Enlace: plot "archivos_50/distribucion_enlaces.txt" title "Distribucion de Enlaces" with lines linetype 25 linewidth 1, "archivos_50/distribucion_sitios.txt" title "Distribucion de Sitios" with lines linetype 2 linewidth 1 set ylabel "N U M E R O D E S I T I O & E N L A C E" set xlabel " E N L A C E S I T I O" set grid xtics set grid ytics set output "archivos_50/distribucion_translape.eps" set terminal postscript eps set title "G R A F I C A D E T R A N S L A P E" replot pause 5 quit Probabilidad de Enlaces: plot "archivos_50/Red_ree__xms+sigma.txt" title "xms+sigma" with lines linetype 25 linewidth 1, "archivos_50/Red_ree__xms-sigma.txt" title "xms-sigma" with lines linetype 2 linewidth 1 ,"archivos_50/Red_ree__xms.txt" title "xms" with lines linewidth 1 , "archivos_50/Red_ree__dist_enl.txt" title "distribucion_enlaces" with lines linetype 13 linewidth 7 set ylabel "P R O B A B I L I D A D E S"

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

53

set xlabel "I N T E R V A L O S [xms-(3*sigma),xms+(3*sigma)]" set grid xtics set grid ytics set output "archivos_50/Red_ree_.eps" set terminal postscript eps set title "" replot pause 5 quit Probabilidades de Sitios: plot "archivos_50/Red_ree__xmb+sigma.txt" title "xmb+sigma" with lines linetype 25 linewidth 1, "archivos_50/Red_ree__xmb-sigma.txt" title "xmb-sigma" with lines linetype 2 linewidth 1,"archivos_50/Red_ree__xmb.txt" title "xmb" with lines linewidth 1, "archivos_50/Red_ree__dist_sitio.txt" title "distribucion_sitios" with lines linetype 13 linewidth 7 set ylabel "P R O B A B I L I D A D E S" set xlabel "I N T E R V A L O S [xms-(3*sigma),xms+(3*sigma)]" set grid xtics set grid ytics set output "archivos_50/Red_ree_.eps" set terminal postscript eps set title "" replot pause 5 quit Presión vs. Volumen: plot "archivos_50/pres_vs_vol" title "presion_vs_volumen" with lines linetype 13 linewidth 7 set ylabel "V O L U M E N I N T R U I D O" set xlabel "P R E S I O N" set grid xtics set grid ytics set output "archivos_50/pres_vs_vol_Grafica.eps" set terminal postscript eps set title "I N T R U S I O N" replot pause 5 quit Presión vs. Sitos llenos plot "archivos_50/pres_vs_sit" title "presion_vs_sitio" with lines linetype 13 linewidth 7 set ylabel "S I T I O S L L E N O S" set xlabel "P R E S I O N" set grid xtics set grid ytics set output "archivos_50/pres_vs_sit_Grafica.eps" set terminal postscript eps set title "I N T R U S I O N" replot pause 5 quit

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

54

Cada uno de estos contiene las instrucciones que se explicaron anteriormente. Después de crear estos cuatro archivos nosotros creamos cuatro módulos llamados:

1. Red_grafica_distribuciones_e_s 2. Red_grafica_prob_sitios 3. Red_grafica_prob_enlaces 4. Red_grafica_p_vs_v 5. Red_grafica_p_vs_s

Estos módulos crean de forma automática los archivos de texto anteriormente descritos y hace una llamada al sistema para poder graficar cada una de las graficas anteriormente citadas Algunas de las Graficas que se pueden obtener son las siguientes: Figura 4.7 Se puede observar que existen cuatro graficas sobrepuestas ya que se trata de los

tres tamaños de probabilidades, de la distribución de sitios o enlaces.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

55

5. Interfaz de Generación de Red e Intrusión Se debe de crear un archivo con extensión .c el cual deberá incluir la siguiente librería: #include “pores.h” En donde “pores.h” es donde se encuentra todos los prototipos para poder generar y manipular una red de materiales porosos.

5.1 Operaciones de la librería

5.1.1 Calcular el Traslape de las Funciones

void Red_Traslape (float xms, float xmb , float sigma , float *Translape, float *Ri)

• Esta es una operación que calcula el Área del Traslapé de dos funciones gaussianas utilizadas (Distribución de Sitios, Distribución de enlaces) por el Método del Trapecio y obtiene el punto de intersección de estas.

Figura 5.1 Grafica que muestra el translape de las dos funciones gaussianas.

Traslape

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

56

Parámetros de entrada:

float xms Variable de tipo Real que es la Media de Sitios. float xmb_f Variable de tipo Real que es la Media de Enlaces

final. float sigma Variable de tipo Real que es la Desviación Estándar. float Traslape Variable de tipo Real pasada por referencia que es el

Traslapé de Funciones float Ri Variable de tipo Real pasada por referencia que es el

Punto de intersección que debe ser de

Parámetros de Salida:

float *Traslape Traslape obtenido de las dos funciones gaussianas float *Ri Punto de intersección

Ejemplo:

En este ejemplo se presenta una forma de declara las variables que son locales, y se les da un valor de inicialización para poder obtener el resultado del Traslape y Punto de Intersección.

Compilación y Ejecución

bash-3.00$ make gcc -c apli_gen_redv4.c gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall bash-3.00$ make ejecutar ./apli_gen_redv4

================================================

Punto de Intersección = 85.000000

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

57

================================================ ================================================ Translape = 0.222481 ================================================

5.1.2 Generación de Red sin errores del Tipo 1

RED Red_sin_violaciones_t1 (int L, float xms, float sigma, float alturaB, float alturaS, long int randi)

• Esta es una operación que genera una red sin ningún tipo de error elemental, esto es, que ningún enlace grande este con un sitio pequeño. La operación regresa un arreglo de tipo red.

Parámetros de entrada:

RED_I red Variable de tipo RED_I int L Variable de tipo Entero que es la Longitud de la red. float xms Variable de tipo Real que es la Media de Sitios. float xmb_i Variable de tipo Real que es la Media de Enlaces

Inicial. float xmb_f Variable de tipo Real que es la Media de Enlaces

Final. float sigma Variable de tipo Real que el la Desviación Estándar. float alturaB Variable de tipo Real que es la Altura de Enlaces. float alturaS Variable de tipo Real que es la Altura de Sitios. long int randi[55] Arreglo de tipo Entero Largo para generar los

números aleatorios.

Esta función regresa una RED sin errores de tipo 1

Ejemplo:

En este ejemplo se presenta una forma de declara las variables que son locales, y se les da un valor de inicialización para poder obtener la red sin errores del tipo 1.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

58

Compilación y Ejecución bash-3.00$ make gcc -c apli_gen_redv4.c gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall bash-3.00$ make ejecutar ./apli_gen_redv4 Al inicio hay 4651 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 1107881 MCS para corrección de errores del Tipo 1: 307.74

5.1.3 Generación Red sin errores del Geométricos aplicando relajación Enlace -Enlace

RED_I Red_crea_c_RG_EnlEnl (RED_I red_sin_error_t1, float xmb_i, float xmb_f, int L , long int randi[55] , char ruta_e [50], long int PasosMonteCarlo[500])

• Esta es una operación que genera una red sin ningún tipo de errores

geométricos utilizando la relajación Enlace – Enlace. La operación regresa una Red.

Parámetros de entrada:

RED_I red_sin_error_t1

Variable de tipo RED_I en donde se corrigieron los errores de tipo 1.

int L Variable de tipo Entero que es la Longitud de la red. float xmb_i Variable de tipo Real que es la Media de Enlaces

Inicial. float xmb_f Variable de tipo Real que es la Media de Enlaces

Final. long int randi[55] Arreglo de tipo Entero Largo para generar los

números aleatorios. char ruta_e[20] Arreglo de Caracteres el cual contiene la Ruta para

guardar errores geometricos presentes en la relajación.

int long PasosMonteCarlo[n]

Arreglo de Enteros Largos donde se encuentra el Numero de Batidos que se le aplican a la red después de la corrección de errores geométricos.

La función regresa una RED donde se corrigieron los Errores Geométricos con la Relajación Enlace - Enlace

Ejemplo:

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

59

En este ejemplo se presenta una forma de declara las variables que son locales, y se les da un valor de inicialización para poder obtener la red sin errores geométricos aplicando el Método de Relajación Enlace - Enlace.

Compilación y Ejecución bash-3.00$ make gcc -c apli_gen_redv4.c gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall bash-3.00$ make ejecutar ./apli_gen_redv4 Al inicio hay 33 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 8474 MCS para correcion de errores del Tipo 1: 21.18

Al inicio hay 825 violaciones geomètricas

C O R R E C C I O N D E E R R O R E S G E O M E T R I C O S R E L A J A C I O N E N L A C E - E N L A C E

XMB 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

50.0 0 0 0 1 5 6 9 18 14 22 19 20 19 30 26 30 33 36 52 67 59 72 89 99 110 123 126 110 131 151 180

. . .

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

60

57.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 30 54 104 144 182 215 273 262 314 400 405

Se corrigieron 405 de los 405 errores geométricos, actualmente hay 0 errores MCS para correcciones geométricas: 9410.59 Procesando los pasos de Monte Carlo... Tiempo de generación de la red con correcciones geométricas: 97.0000 segundos

5.1.4 Generación Red sin errores del Geométricos aplicando relajación Sitio Enlace

RED_I Red_crea_c_RG_SitEnl (RED_I red_sin_error_t1, float xmb_i, float xmb_f, int L, long int randi [55], char ruta_e [50], long int PasosDeMonteCarlo [500])

• Esta operación que genera una red sin ningún tipo de errores geométricos utilizando la relajación Sitio – Enlace. La operación regresa una red.

Parámetros de entrada:

RED_I red_sin_error_t1

Variable de tipo RED_I en donde se corrigieron los errores de tipo 1.

int L Variable de tipo Entero que es la Longitud de la red. float xmb_i Variable de tipo Real que es la Media de Enlaces

Inicial. float xmb_f Variable de tipo Real que es la Media de Enlaces

Final. long int randi[55] Arreglo de tipo Entero Largo para generar los

números aleatorios. char ruta_e[20] Arreglo de Caracteres el cual contiene la Ruta para

guardar errores geometricos presentes en la relajación.

int long PasosMonteCarlo[n]

Arreglo de Enteros Largos donde se encuentra el Numero de Batidos que se le aplican a la red después de la corrección de errores geométricos.

La función regresa una RED donde se corrigieron los Errores Geométricos con la Relajación Sitio - Enlace

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

61

Ejemplo:

En este ejemplo se presenta una forma de declara las variables que son locales, y se les da un valor de inicialización para poder obtener la red sin errores geométricos aplicando el Método de Relajación Sitio - Enlace.

Compilación y Ejecución

bash-3.00$ make

gcc -c apli_gen_redv4.c gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall bash-3.00$ make ejecutar ./apli_gen_redv4 Al inicio hay 43 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 5893 MCS para corrección de errores del Tipo 1: 14.73

Al inicio hay 1066 violaciones geométricas

C O R R E C C I O N D E E R R O R E S G E O M E T R I C O S R E L A J A C I O N S I T I O - E N L A C E

XMB 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

50.0 18 10 7 8 7 11 16 25 22 22 22 26 24 30 30 35 31 35 37 42 38 54 64 62 92 87 111 119 107 115 173

.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

62

. .

57.0 1 0 0 0 0 0 1 0 1 0 0 0 2 3 4 5 5 6 5 10 13 11 15 15 19 38 57 84 130 181 401

Se corrigieron 401 de los 401 errores geométricos, actualmente hay 0 errores MCS para correcciones geométricas: 14364.28 Procesando los pasos de Monte Carlo... Tiempo de generación de la red con correcciones geométricas: 143.0000 segundos

5.1.5 Generación Red sin errores del Geométricos aplicando relajación sobre la formula

RED_I Red_crea_c_RG_varA (RED_I red_sin_error_t1, float xmb_i, float xmb_f, int L, long int randi [55], char ruta_e [50], long int pasosDeMonteCarlo [500])

• Esta operación que genera una red sin ningún tipo de errores geométricos

utilizando la relajación sobre la Formula. La operación regresa una red. Parámetros de entrada:

RED_I red_sin_error_t1

Variable de tipo RED_I en donde se corrigieron los errores de tipo 1.

int L Variable de tipo Entero que es la Longitud de la red. float xmb_i Variable de tipo Real que es la Media de Enlaces

Inicial. float xmb_f Variable de tipo Real que es la Media de Enlaces

Final. long int randi[55] Arreglo de tipo Entero Largo para generar los

números aleatorios. char ruta_e[20] Arreglo de Caracteres el cual contiene la Ruta para

guardar errores geometricos presentes en la relajación.

int long PasosMonteCarlo[n]

Arreglo de Enteros Largos donde se encuentra el Numero de Batidos que se le aplican a la red después de la corrección de errores geométricos.

La función regresa una RED donde se corrigieron los Errores Geométricos con la Relajación sobre la formula.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

63

Ejemplo:

En este ejemplo se presenta una forma de declara las variables que son locales, y se les da un valor de inicialización para poder obtener la red sin errores geométricos aplicando el Método de Relajación sobre la Formula.

Compilación y Ejecución bash-3.00$ make gcc -c oper_redv4.c gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall bash-3.00$ make ejecutar ./apli_gen_redv4 Al inicio hay 55 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 6815 MCS para corrección de errores del Tipo 1: 17.04

Al inicio hay 1072 violaciones geométricas

C O R R E C C I O N D E E R R O R E S G E O M E T R I C O S R E L A J A C I O N S O B R E L A F O R M U L A

XMB 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

50.0 0 0 0 0 0 0 23 81 199 270 351 . . .

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

64

57.0 0 0 0 0 0 0 0 0 4 43 690

Se corrigieron 690 de los 690 errores geométricos, actualmente hay 0 errores MCS para correcciones geométricas: 7819.09 Procesando los pasos de Monte Carlo... Tiempo de generación de la red con correcciones geométricas: 84.0000 segundo

5.1.6 Guardar alguna red

void Red_guarda (RED_I red_nombre_dela_relajacion, int L, float xms, flota xmb_f, float sigma, char ruta_red [20], char ruta_foto [20], ruta_param [20], char ruta_identificador [5])

• En esta operación guarda todas la redes que se generan (Aleatoria, Sin

Errores tipo 1, Sin Errores Geométricos con relajación Enlace – Enlace, Sin Errores Geométricos con relajación Sitio – Enlace, Sin Errores Geométricos con relajación Sobre la Formula).

Parámetros de entrada:

RED_I red_nombre_de_la_red Variable de tipo RED_I la cual contiene Cualquier tipo de RED generada

int L Variable de tipo Entero que es la Longitud de la red.

float xmb_f Variable de tipo Real que es la Media de Enlaces Final.

float sigma Variable de tipo Real que el la Desviación Estándar.

char ruta_red[20] Arreglo de Caracteres el cual contiene la Ruta para guardar la red.

char ruta_foto[20] Arreglo de Caracteres el cual contiene la Ruta para guardar graficar la red en le programa RASMOL.

char ruta_param[20] Arreglo de Caracteres el cual contiene la Ruta para guardar graficar la red en le programa RASMOL.

char ruta_identificador[5] Arreglo de Caracteres el cual contiene el identificador del tipo de relajación que se uso.

La Función genera tres archivos de texto con los datos necesarios de las redes construidas. Nótese que pueden ser 9 archivos como mínimo para cubrir todas las redes generadas con los distintos métodos de relajación.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

65

Ejemplo:

En este ejemplo se presenta una forma de declara las variables que son locales, y se les da un valor de inicialización para poder salvar la red obtenida de la relajación Enlace - Enlace.

Compilación y Ejecución

bash-3.00$ make gcc -c apli_gen_redv4.c gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall bash-3.00$ make ejecutar ./apli_gen_redv4 Al inicio hay 48 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 6825 MCS para corrección de errores del Tipo 1: 17.06

Al inicio hay 966 violaciones geométricas

C O R R E C C I O N D E E R R O R E S G E O M E T R I C O S R E L A J A C I O N E N L A C E - E N L A C E . . . Se corrigieron 439 de los 439 errores geométricos, actualmente hay 0 errores

MCS para correcciones geométricas: 13785.19 Procesando los pasos de Monte Carlo... Tiempo de generación de la red con correcciones geométricas: 143.0000 segundos Archivo de red guardado: archivos_ejemplos/Red_ree.bin

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

66

5.1.7 Generación de Grafica de Distribución de Sitios Enlaces

void Red_grafica_distribuciones_e_s (RED_I red_sin_error_t1, float xms, float xmb_i, float sigma, int L, char ruta_d[100])

• Esta es una operación se genera la grafica de Distribución de Sitio y Enlaces.

Parámetros de entrada:

RED_I red_sin_error_t1

Variable de tipo RED_I en donde se corrigieron los errores de tipo 1.

int L Variable de tipo Entero que es la Longitud de la red. float xms Variable de tipo Real que es la Media de Sitios float xmb_i Variable de tipo Real que es la Media de Enlaces

Inicial. float sigma Variable de tipo Real que el la Desviación Estándar. char ruta_d[20] Arreglo de Caracteres el cual contiene la Ruta para

guardar la grafica de distribución de Sitios y Enlaces La función genera un archivo de texto el cual contiene las instrucciones para poder graficar la distribución desde gnuplot, además de generar la grafica en el lugar indicado por el usuario.

Ejemplo:

En este ejemplo se presenta una forma de declara las variables que son locales, y se les da un valor de inicialización para poder obtener la Grafica de Distribución de Sitios y Enlaces.

Compilación y Ejecución bash-3.00$ make gcc -c apli_gen_redv4.c

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

67

gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall bash-3.00$ make ejecutar ./apli_gen_redv4 Al inicio hay 4459 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 737356 MCS para correcion de errores del Tipo 1: 204.82 Archivo de red guardado: archivos_ejemplos/distribucion_sitios.txt Archivo de red guardado: archivos_ejemplos/distribucion_enlaces.txt Generando la Grafica de Distribución de Sitios y Enlaces

5.1.9 Generación de Probabilidades de Enlaces

void Red_prob_enlaces (RED_I red_Enl_Enl, int L, float xms, float xmb_f, float sigma, Res_prob &R_xmb, char ruta_probenlace[20], char ruta_enlaces[20])

• En esta operación se generan las probabilidades la cual ve que tipos de

enlaces rodean a un sitio de tamaño dado (Media de Sitios, Media de Sitios + sigma, Media de Sitios – sigma)

Parámetros de entrada:

RED_I red_nombre_de_relajacion

Variable de tipo RED_I la cual contiene Cualquier tipo de RED generada por los tres Métodos de Relajación.

int L Variable de Tipo Entero que es la Longitud de la red.

float xms Variable de Tipo Real que es la Media de Sitios. float xmb_f Variable de Tipo Real que es la Media de Enlaces

Final. float sigma Variable de Tipo Real que es la Desviación

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

68

Estándar. Res_prob R_xmb Registro de tipo Res_prob donde van estar

presentes los 4 arreglos para guardar las probabilidades de enlaces.

char ruta_probenlaces[20] Arreglo de Caracteres el cual contiene la Ruta para guardar las probabilidades de enlaces.

char ruta_enlaces[20] Arreglo de Caracteres el cual contiene la Ruta para guardar la distribución original de enlaces.

Parámetros de Salida:

Res_prob *R_xmb Un registro con cuatro arreglos de tipo Real, tres de ellos con los datos de la probabilidades para cada uno de los valores buscados (xms, xms + σ, xms – σ), el ultimo contiene la información de la distribución de los enlaces.

La Función genera cuatro archivos de texto, tres de ellos con los datos de la probabilidades para cada uno de los valores buscados (xms, xms + σ, xms – σ), el ultimo contiene la información de la distribución de los enlaces que nos va a ser útil para que posteriormente se grafiquen en GNU- PLOT

Ejemplo:

En este ejemplo se presenta una forma de declara las variables que son locales, y se les da un valor de inicialización para poder calcular las probabilidades de enlaces con la red que se obtuvo de la relajación Enlace - Enlace.

Compilación y Ejecución bash-3.00$ make gcc -c apli_gen_redv4.c

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

69

gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall bash-3.00$ make ejecutar ./apli_gen_redv4 Al inicio hay 52 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 7487 MCS para corrección de errores del Tipo 1: 18.72

Al inicio hay 970 violaciones geométricas

C O R R E C C I O N D E E R R O R E S G E O M E T R I C O S R E L A J A C I O N E N L A C E - E N L A C E …

Se corrigieron 440 de los 440 errores geométricos, actualmente hay 0 errores MCS para correcciones geométricas: 13815.62 Procesando los pasos de Monte Carlo... Tiempo de generación de la red con correcciones geométricas: 136.0000 segundos

Archivo de red guardado: archivos_ejemplos/Red_reexms.txt Archivo de red guardado: archivos_ejemplos/Red_reexms+sigma.txt Archivo de red guardado: archivos_ejemplos/Red_reexms-sigma.txt Archivo de red guardado: archivos_ejemplos/Red_reedist_enl.txt

5.1.10 Generación de Probabilidades de Sitios

void Red_prob_sitios (RED_I red_Enl_Enl, int L, float xms, float xmb_f, float sigma, Res_prob &R_xms, char ruta_probsitios [20], char ruta_sitios [20])

• En esta operación se generan las probabilidades de que tipos de sitios

rodean a un enlace de tamaño dado (Media de Enlaces, Media de Enlaces + sigma, Media de Enlaces – sigma)

Parámetros de entrada:

RED_I red_nombre_de_relajacion

Variable de tipo RED_I la cual contiene Cualquier tipo de RED generada por los tres Métodos de Relajación.

int L Variable de Tipo Entero que es la Longitud de la red.

float xms Variable de Tipo Real que es la Media de Sitios. float xmb_f Variable de Tipo Real que es la Media de Enlaces

Final. float sigma Variable de Tipo Real que es la Desviación

Estándar.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

70

Res_prob R_xmb Registro de tipo Res_prob donde van estar presentes los 4 arreglos para guardar las probabilidades de sitios.

char ruta_probenlaces[20] Arreglo de Caracteres el cual contiene la Ruta para guardar las probabilidades de sitios.

char ruta_enlaces[20] Arreglo de Caracteres el cual contiene la Ruta para guardar la distribución original de sitios.

Parámetros de Salida:

Res_prob *R_xms Un registro con cuatro arreglos de tipo Real, tres de ellos con los datos de la probabilidades para cada uno de los valores buscados (xmb, xmb + σ, xmb – σ), el ultimo contiene la información de la distribución de los sitios que nos va a ser útil para que posteriormente se grafiquen en GNU- PLOT.

La Función genera cuatro archivos de texto, tres de ellos con los datos de la probabilidades para cada uno de los valores buscados (xmb, xmb + σ, xmb – σ), el ultimo contiene la información de la distribución de los enlaces que nos va a ser útil para que posteriormente se grafiquen en GNU- PLOT

Ejemplo:

En este ejemplo se presenta una forma de declara las variables que son locales, y se les da un valor de inicialización para poder calcular las probabilidades de sitios con la red que se obtuvo de la relajación Enlace - Enlace.

Compilación y Ejecución bash-3.00$ make gcc -c apli_gen_redv4.c gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall bash-3.00$ make ejecutar

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

71

./apli_gen_redv4 Al inicio hay 46 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 8571 MCS para corrección de errores del Tipo 1: 21.43 Al inicio hay 962 violaciones geométricas C O R R E C C I O N D E E R R O R E S G E O M E T R I C O S R E L A J A C I O N E N L A C E - E N L A C E … Se corrigieron 411 de los 411 errores geométricos, actualmente hay 0 errores MCS para correcciones geométricas: 14188.44 Procesando los pasos de Monte Carlo... Tiempo de generación de la red con correcciones geométricas: 155.0000 segundos Archivo de red guardado: archivos_ejemplos/Red_reexmb.txt Archivo de red guardado: archivos_ejemplos/Red_reexmb+sigma.txt Archivo de red guardado: archivos_ejemplos/Red_reexmb-sigma.txt Archivo de red guardado: archivos_ejemplos/Red_reedist_sitio.txt

5.1.11 Graficar las Probabilidades de Enlaces

void Red_grafica_prob_enlaces (cadena nombre_s)

• En esta operación se grafican las probabilidades de enlaces con los cuatro

archivos de texto que se generaron en el modulo de Red_prob_enlaces. Parámetros de entrada:

cedana ruta_graficas_prob Arreglo de Caracteres de tipo Cadena el cual contiene la Ruta para guardar las graficas de probabilidades de enlaces.

Esta función genera una grafica donde se puede observar las tres probabilidades y la distribución de enlaces.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

72

Ejemplo:

En este ejemplo solo se muestra los dos llamados a las funciones para poder generar la grafica.

Compilación y Ejecución

bash-3.00$ make

gcc -c apli_gen_redv4.c gcc -c oper_redv4.c gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall bash-3.00$ make ejecutar ./apli_gen_redv4 Al inicio hay 60 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 5215 MCS para corrección de errores del Tipo 1: 13.04 Al inicio hay 1133 violaciones geométricas

C O R R E C C I O N D E E R R O R E S G E O M E T R I C O S R E L A J A C I O N E N L A C E - E N L A C E …

Se corrigieron 491 de los 491 errores geométricos, actualmente hay 0 errores MCS para correcciones geométricas: 20021.55 Procesando los pasos de Monte Carlo... Tiempo de generación de la red con correcciones geométricas: 201.0000 segundos

Archivo de red guardado: archivos_ejemplos/Red_ree_xms.txt Archivo de red guardado: archivos_ejemplos/Red_ree_xms+sigma.txt Archivo de red guardado: archivos_ejemplos/Red_ree_xms-sigma.txt

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

73

Archivo de red guardado: archivos_ejemplos/Red_ree_dist_enl.txt

Generando grafica de Probabilidad de Enlaces

5.1.12 Graficar las Probabilidades de Sitios

void Red_grafica_prob_sitios ()

• En esta operación se grafican las probabilidades de sitio con los cuatro

archivos de texto que se generaron en el modulo de Red_prob_sitios. Parámetros de entrada:

cadena ruta_graficas_prob Arreglo de Caracteres de tipo Cadena el cual contiene la Ruta para guardar las graficas de probabilidades de sitios.

Esta función genera una grafica donde se puede observar las tres probabilidades y la distribución de sitios.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

74

Ejemplo:

En este ejemplo solo se muestra los dos llamados a las funciones para poder generar la grafica.

Compilación y Ejecución

bash-3.00$ make gcc -c apli_gen_redv4.c gcc -c oper_redv4.c gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall bash-3.00$ make ejecutar ./apli_gen_redv4 Al inicio hay 50 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 10444 MCS para correcion de errores del Tipo 1: 26.11 Al inicio hay 1063 violaciones geomètricas

C O R R E C C I O N D E E R R O R E S G E O M E T R I C O S R E L A J A C I O N E N L A C E - E N L A C E …

Se corrigieron 485 de los 485 errores geométricos, actualmente hay 0 errores MCS para correcciones geométricas: 17536.01 Procesando los pasos de Monte Carlo... Tiempo de generación de la red con correcciones geométricas: 171.0000 segundos Archivo de red guardado: archivos_ejemplos/Red_ree_xmb.txt Archivo de red guardado: archivos_ejemplos/Red_ree_xmb+sigma.txt

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

75

Archivo de red guardado: archivos_ejemplos/Red_ree_xmb-sigma.txt Archivo de red guardado: archivos_ejemplos/Red_ree_dist_sitio.txt Generando grafica de Probabilidad de Sitios

5.1.12 Intrusión de Red si errores geométricos listaPV intrusión (RED_I red, float radio_ini, float radio_fin, int L, cadena pres_vol, cadena pres_sit)

• En esta operación se intruye una red sin errores geométricos obtenida por alguno de los métodos de relajación de Red dentro de la ejecución del programa.

Parámetros de entrada:

RED_I red_nombre_de_relajacion

Variable de tipo RED_I obtenida por los tres métodos de relajación.

int L Variable de tipo Entero que es la Longitud de la red.

float radio_inicial Variable de tipo Real que es el Radio inicial

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

76

para comenzar la intrusión. float radio_final Variable de tipo Real que es el Radio Final con

el cual va terminar la intrusión. cadena pres_vol Arreglo de Caracteres de tipo Cadena que sirve

para saber donde guardar los archivos que contengan la información sobre que presión se necesita para ir intruyendo un determinado volumen.

cadena pres_sit Arreglo de Caracteres de tipo Cadena que sirve para saber donde guardar los archivos que contengan la información sobre que presión se necesita para ir intruyendo un determinado numero de sitios

Parámetros de Salida:

listaPV lista_pv La función regresa una lista donde se puede ver que determinada volumen se ha intuido a una determinada presión.

Ejemplo:

En este ejemplo se presenta una forma de declara las variables que son locales, y se les da un valor de inicialización para poder obtener la intrusión de una red sin errores geométricos obtenida a partir de cualquier Método de Relajación Enlace - Enlace.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

77

Compilación y Ejecución

lobo@linux:~/Proyecto2/v_final> make gcc -c apli_gen_redv4.c gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall lobo@linux:~/Proyecto2/v_final> make ejecutar ./apli_gen_redv4 Al inicio hay 47 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 5091 MCS para corrección de errores del Tipo 1: 12.73 Al inicio hay 999 violaciones geométricas

C O R R E C C I O N D E E R R O R E S G E O M E T R I C O S R E L A J A C I O N E N L A C E - E N L A C E ….

Se corrigieron 505 de los 505 errores geométricos, actualmente hay 0 errores MCS para correcciones geométricas: 16924.56 Procesando los pasos de Monte Carlo... Tiempo de generación de la red con correcciones geométricas: 18.0000 segundos

Radio inicial: 280.000000 Volumen esperado: 4478400958.285532

Radio Volumen Intruido Volumen Por Llenar Sitios llenos Total 280.00 0.000000 4478400958.285532 0 . . . 31.00 4478400958.285531 0.000001 1000

Intrusión realizada en 0.0000 segundos

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

78

5.1.13 Intrusión de Red si errores geométricos leída desde un archivo listaPV Red_fintruir(cadena archivo, int L, float radio_ini ,float radio_fin)

• En esta operación se instruye una red sin errores geométricos leída desde

un archivo de texto que se hay generado cuando salvamos alguna red sin errores geométricos con cualquiera de los tres métodos de relajación

Parámetros de entrada:

cadena archivo Ruta de tipo Cadena para poder guardar encontrar la red que se haya generado.

int L Variable de tipo Entero que es la Longitud de la red.

float radio_inicial Variable de tipo Real que es el Radio inicial para comenzar la intrusión.

float radio_final Variable de tipo Real que es el Radio Final con el cual va terminar la intrusión.

Parámetros de Salida:

listaPV lista_pv La función regresa una lista donde se puede ver que determinada volumen se ha intuido a una determinada presión.

Ejemplo:

En este ejemplo se presenta una forma de declara las variables que son locales, y se les da un valor de inicialización para poder obtener la intrusión de una red sin errores geométricos obtenida por algún archivo guardado por el usuario con la operación de salvar redes.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

79

Compilación y Ejecución

lobo@linux:~/Proyecto2/v_final> make gcc -c apli_gen_redv4.c gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall lobo@linux:~/Proyecto2/v_final> make ejecutar ./apli_gen_redv4 Al inicio hay 42 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 5547 MCS para correcion de errores del Tipo 1: 13.87 Al inicio hay 1016 violaciones geomètricas

C O R R E C C I O N D E E R R O R E S G E O M E T R I C O S R E L A J A C I O N E N L A C E - E N L A C E ….

Se corrigieron 474 de los 474 errores geometricos, actualmente hay 0 errores MCS para correcciones geometricas: 13988.52 Procesando los pasos de Monte Carlo... Tiempo de generacion de la red con correcciones geomètricas: 15.0000 segundos Archivo : archivos_ejemplos/Red_ree.bin SI se puede leer el archivo archivos_ejemplos/Red_ree.bin, L=10 Radio inicial: 280.000000 Volumen esperado: 4486570539.766445

Radio Volumen Intruido Volumen Por Llenar Sitios llenos Total 280.00 0.000000 4486570539.766445 0 . . . 31.00 4486570539.766452 -0.000007 1000

Intrusión realizada en 0.0000 segundos

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

80

5.1.14 Generación de Graficas de Presión vs. Volumen

void Red_grafica_p_vs_v(cadena nombre_c_p_vs_v)

• En esta operación se grafican el comportamiento que se tiene al ir intruyendo mercurio sobre una red porosa que nos dice que presión se necesita para ir intruyendo un determinado volumen.

Parámetros de entrada:

cadena nombre_c_p_vs_v Arreglo de Caracteres de tipo cadena el cual contiene la Ruta para guardar las graficas de presión contra volumen.

Esta función genera una Grafica para ver el comportamiento que se tiene al ir intruyendo mercurio sobre una red porosa que nos dice que presión se necesita para ir intruyendo un determinado volumen.

Ejemplo:

En este ejemplo se presenta una forma de declara las variables que son locales, y se les da un valor de inicialización para poder obtener la Grafica de Presión contra Volumen de la intrusión de una red sin errores geométricos obtenida a partir de cualquier Método de Relajación Enlace – Enlace

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

81

Compilación y Ejecución lobo@linux:~/Proyecto2/v_final> make gcc -c apli_gen_redv4.c gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall lobo@linux:~/Proyecto2/v_final> make ejecutar ./apli_gen_redv4 Al inicio hay 51 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 7088 MCS para correcion de errores del Tipo 1: 17.72 Al inicio hay 1141 violaciones geomètricas

C O R R E C C I O N D E E R R O R E S G E O M E T R I C O S R E L A J A C I O N E N L A C E - E N L A C E …

Se corrigieron 296 de los 296 errores geometricos, actualmente hay 0 errores MCS para correcciones geometricas: 14406.74 Procesando los pasos de Monte Carlo... Tiempo de generacion de la red con correcciones geomètricas: 18.0000 segundos

Radio inicial: 280.000000 Volumen esperado: 4405913764.962739

Radio Volumen Intruido Volumen Por Llenar Sitios llenos Total 280.00 0.000000 4405913764.962739 0 . . . 32.00 4405913764.962744 -0.000005 1000

Intrusión realizada en 0.0000 segundos

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

82

5.1.14 Generación de Graficas de Presión vs. Sitios

void Red_grafica_p_vs_s(cadena nombre_c_p_vs_s)

• En esta operación se grafican el comportamiento que se tiene al ir intruyendo mercurio sobre una red porosa que nos dice que presión se necesita para ir intruyendo un determinado numero de Sitios.

Parámetros de entrada:

cadena nombre_c_p_vs_s Arreglo de Caracteres de tipo cadena el cual contiene la Ruta para guardar las graficas de Presión contra Sitios.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

83

Esta función genera una grafica para ver el comportamiento que se tiene al ir intruyendo mercurio sobre una red porosa que nos dice que presión se necesita para ir intruyendo un determinado número de Sitios.

Ejemplo:

En este ejemplo se presenta una forma de declara las variables que son locales, y se les da un valor de inicialización para poder obtener la Grafica de Presión contra Sitios de la intrusión de una red sin errores geométricos obtenida a partir de cualquier Método de Relajación Enlace – Enlace

Compilación y Ejecución lobo@linux:~/Proyecto2/v_final> make gcc -c apli_gen_redv4.c gcc -lm -o apli_gen_redv4 apli_gen_redv4.o oper_redv4.o intrusion_recursiva_vSitios31.o listas31.o -Wall lobo@linux:~/Proyecto2/v_final> make ejecutar ./apli_gen_redv4 Al inicio hay 44 violaciones Generando la red inicial sin violaciones... Red inicial sin violaciones generada Numero de batidos: 5417 MCS para correcion de errores del Tipo 1: 13.54

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

84

Al inicio hay 1005 violaciones geomètricas

C O R R E C C I O N D E E R R O R E S G E O M E T R I C O S R E L A J A C I O N E N L A C E - E N L A C E …

Se corrigieron 456 de los 456 errores geometricos, actualmente hay 0 errores MCS para correcciones geometricas: 12834.92 Procesando los pasos de Monte Carlo... Tiempo de generacion de la red con correcciones geomètricas: 14.0000 segundos Radio inicial: 280.000000 Volumen esperado: 4483371593.437043

Radio Volumen Intruido Volumen Por Llenar Sitios llenos Total 280.00 0.000000 4483371593.437043 0

. . .

29.00 4483371593.437047 -0.000004 1000 Intrusión realizada en 0.0000 segundos

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

85

6. Resultados Los siguientes resultados muestran algunas corridas que realizamos con nuestro simulador, en donde se pueden observar los monitoreos de tiempos de ejecución para poder producir alguna red con cualquiera de los tres métodos de relajación anteriormente explicados, estos resultados además de mostrar estos tiempos de ejecución, dan también los paso de MonteCarlo que se necesitaron para lleva r a cabo dicho objetivo, así como los datos iniciales que se aplicaron en la generación de red e intrusión, que por cierto también se le aplica a una red que se genero, que por lo regular fue la de Relajación Enlace – Enlace. Definiremos ahora que significa cada una de las siglas utilizadas para que se tenga una mejor comprensión de lo que se esta repostando:

• xmb inicia: Se trata de la Media de Enlaces que es con la que se va a generar la primera red sin restricciones geométricas, pieza fundamental para poder proceder con los tres métodos de relajación.

• xmb final: Se trata de la Media de Enlaces a la que queremos llegar por ello lleva el pseudónimo final.

• xms: Se trata de la Media de Sitios con la que se va a generar la Red. • Desviación Estándar: Su nombre lo dice es la tolerancia que se va a utilizar para

hacer crecer un poco mas las distintas medias ya sea la de sitios o la de enlaces, para todo los casos se esta utilizando +/- 3 * Desviación Estándar

• Longitud de la Red: Obviamente es el Tamaño de la Red a generar el cual como es una red cúbica su tamaño será L*L*L

• Traslape: Se refiere a que tanto se encuentran encimadas las graficas presentes. • Sitio – Enlace: Se refiere a la relajación de tipo Sitio - Enlace que corrige errores

geométricos. • Enlace – Enlace: Se refiere a la relajación de tipo Enlace - Enlace que corrige

errores geométricos. • Sobre Formula: Se refiere a la relajación que se realiza sobre la formula que

corrige errores geométricos. • Tiempo (hr: mm: ss): Esto es el tiempo de ejecución de los tres tipos de relajación

dado por horas, minutos y segundos respectivamente. • MCS: Paso de Monte Carlo necesarios para corregir los errores geométricos. • Tiempo de intrusión: Tiempo necesario para poder realizar la Intrusión de alguna

Red generada por alguno de los tres métodos de relajación o leída desde un archivo.

Estas definiciones se estarán presentando en cada unos de los resultados que se presenten a continuación así como sus graficas que haya arrojado la ejecución de estos

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

86

6.1 Primer Resultado: xmb inicial = 45.0 xmb final = 50.0 xms = 90.0 Desviación estándar = 15.0 Longitud de la red = 10 Traslape = 0.127096 Tipo de relajación

Tiempo (hr:mm:ss)

MCS

Sitio-Enlace 00:02:58 17573.47 Enlace-Enlace 00:03:08 18859.10 Sobre Formula 00:01:13 5885.26

Grafica de Distribución de Sitios & Enlaces

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

87

Grafica de Probabilidad de Enlaces

Grafica de Probabilidad de Sitios

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

88

Tiempo de Intrusión (seg.)

0.0000

Grafica de Intrusión Presión - Volumen

Grafica de Intrusión Presión - Sitio

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

89

6.2 Segundo Resultado: xmb inicial = 50.0 xmb final = 57.0 xms = 100.0 Desviación estándar = 15.0 Longitud de la red = 20 Traslape = 0.105422 Tipo de relajación

Tiempo (hr:mm:ss)

MCS

Sitio-Enlace 00:18:37 55602.17 Enlace-Enlace 00:26:17 71986.95 Sobre Formula 00:05:32 15484.80

Grafica de Distribución de Sitios & Enlaces

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

90

Grafica de Probabilidad de Enlaces

Grafica de Probabilidad de Sitios

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

91

Tiempo de Intrusión (seg.)

1.0000

Grafica de Intrusión Presión - Volumen

Grafica de Probabilidad de Sitios

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

92

6.3 Tercer Resultado: xmb inicial = 45.0 xmb final = 52.0 xms = 100.0 Desviación estándar = 10.0 Longitud de la red = 30 Traslape = 0.084689 Tipo de relajación

Tiempo (hr:mm:ss)

MCS

Sitio-Enlace 00:11:14 4332.61 Enlace-Enlace 00:09:47 3389.31 Sobre Formula 00:05:17 1165.06

Grafica de Distribución de Sitios & Enlaces

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

93

Grafica de Probabilidad de Enlaces

Grafica de Probabilidad de Sitios

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

94

Tiempo de Intrusión (seg.)

1.0000

Grafica de Intrusión Presión - Volumen

Grafica de Intrusión Presión - Sitio

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

95

6. 4 Cuarto Resultado: xmb inicial = 45.0 xmb final = 50.0 xms = 100.0 Desviación estándar = 15.0 Longitud de la red = 40 Traslape = 0.065686 Tipo de relajación

Tiempo (hr:mm:ss)

MCS

Sitio-Enlace 00:53:15 2589.23 Enlace-Enlace 01:03:27 2135.17 Sobre Formula 00:20:00 4580.89

Grafica de Distribución de Sitios & Enlaces

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

96

Grafica de Probabilidad de Enlaces

Grafica de Probabilidad de Sitios

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

97

Tiempo de Intrusión

(seg.) 4.0000

Grafica de Intrusión Presión – Volumen

Grafica de Intrusión Presión - Sitio

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

98

6.5 Quinto Resultado: xmb inicial = 45.0 xmb final = 55.0 xms = 100.0 Desviación estándar = 15.0 Longitud de la red = 50 Traslape = 0.092582 Tipo de relajación

Tiempo (hr:mm:ss)

MCS

Sitio-Enlace 10:12:11 145709.15 Enlace-Enlace 11:01:60 160303.62 Sobre Formula 03:45:55 48588.88

Grafica de Distribución de Sitios & Enlaces

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

99

Grafica de Probabilidad de Enlaces

Grafica de Probabilidad de Sitios

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

100

Tiempo de Intrusión (seg.)

9.0000

Grafica de Intrusión Presión - Volumen

Grafica de Intrusión Presión – Sitio

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

101

6.6 Sexto Resultado: xmb inicial = 45.0 xmb final = 50.0 xms = 100.0 Desviación estándar = 15.0 Longitud de la red = 70 Traslape = 0.065686 Tipo de relajación

Tiempo (hr:mm:ss)

MCS

Sitio-Enlace 09:23:06 65564,55 Enlace-Enlace 07:02:60 47483,32 Sobre Formula 04:15:37 14294,60

Grafica de Distribución de Sitios & Enlaces

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

102

Grafica de Probabilidad de Enlaces

Grafica de Probabilidad de Sitios

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

103

Tiempo de Intrusión (seg.)

19.0000

Grafica de Intrusión Presión - Volumen

Grafica de Probabilidad de Sitios

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

104

7. Conclusiones Con los resultados anteriores podemos concluir lo siguiente sobre los métodos de relajación de redes: El método que presenta un mejor comportamiento es el que se aplica sobre la formula de calculo de errores geométricos ya que mejora el tiempo de corrección de los errores geométricos y en numero de Pasos de MonteCarlo se reduce en un buen numero como se presento en los resultados, aunque tiene un comportamiento distinto para redes de tamaño muy grande ya que el numero de errores que presenta cuando se trabaja sobre la formula en su valor real (A = 1) es muy inestable por ejemplo si para xmb_inicial = 350 el numero de errores es de 78541 cuando se incrementa xmb a 350.5 el numero de errores es de 7500 ò puede pasar de forma inversa y elevarse de forma considerable el numero de errores geométricos y con esto el tiempo de corrección de la red se incrementa de forma considerable. En cuanto al método de relajación “Sitio -Enlace” se puede considerar como el segundo mejor ya que es mas estable (los errores de la red en su tamaño original no son volátiles) y corrige los errores en un tiempo considerablemente bueno a pesar de que los resultados muestran que es aproximadamente en promedio 2.5 veces mas tardado, aunque para redes en donde las medias de enlaces y de sitios son mas grandes como por ejemplo xmb = 190 y xms = 240 su comportamiento cambia y es el método que mas tarda para generar una red sin errores geométricos. En lo que se refiere al método “Enlace-Enlace” es el que más tiempo utiliza para corregir los errores geométricos y en consecuencia de esto es también el que mas pasos de MonteCarlo emplea para el proceso y al igual que los métodos anteriores presenta variaciones en su comportamiento cuando las medias de enlaces y de sitios son más grandes ya que en estos casos se convierte en el segundo mejor método para generar una red. En base a los resultados consideramos que el mejor método es el de relajación que se aplica sobre la formula de calculo de errores geométricos (“método relajación sobre la formula”) ya que los resultados que se obtienen en redes grandes y mas comprometidas son buenas en ambos casos. En lo que se refiere al número de errores geométricos que puede tener una red antes de aplicarle cualquiera de los métodos antes mencionados podemos concluir que no esta tanto en dependencia del translape como se pensaba al inicio de esta implementación (al inicio se creía que entre mas grande fuera el translape se generarían mas errores geométricos) sino que depende mas del valor que se le den a las medias de sitios y de enlaces ya que se puede dar el caso de que sean medias grandes (xmb = 370 y xms = 465 por ejemplo) en una red de tamaño L=10 con un translape que es casi cero pero sin embargo genera un numero muy elevado de errores geométricos (casi el 80% de la red tiene errores geométricos) y en consecuencia el proceso puede tardar mas de 15 horas y por el contrario se pueden dar valores como el de primer resultado el capitulo anterior en donde existe un translape de 0.127096 y los resultados se obtienen a lo mas en 3 minutos. Esto es mas que nada por la formula de evaluación para contar el numero de errores geométricos (formula de teorema de Pitágoras en donde se considera a los catetos como los radios de los enlaces y a la hipotenusa como el radio de los sitios) que al sumar medias de enlaces al cuadrado de un tamaño pequeño con una media de sitios proporcional a ellos van a existir pocos errores que si se realiza con valores de enlaces grandes (mayores a 200).

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

105

8. Trabajos a futuro Una de las cosas que se pueden hacer son la finalidad de obtener redes con media de enlaces y media de sitios y con valores grandes además con un translape mas comprometido es hacer combinaciones de los métodos de relajación, por ejemplo primero utilizar el método que se aplica sobre la formula de calculo de errores geométricos y corregir los errores cuando las medias no sean tan comprometidas, después relajar la red con el procedimiento “batidotEq” con la finalidad de que la red no quede muy tensa para después aplicar el cualquiera de los otros dos métodos de relajación y repetir este procedimiento hasta que se obtenga una mejor red, esto mismo se puede experimentar con el método. Además algo que ayudaría a reducir los tiempos de forma muy considerable es paralelizar el proceso de la corrección de errores geométricos ya que para redes de tamaño grande (L>100) el tiempo es demasiado alto ya que es de días. Consideramos que primero se puede partir la red en 8 partes para que después a cada una de ellas de forma independiente se corrijan los errores que puedan tener y una vez hecho esto unirlas nuevamente tomando en cuenta que las caras que son adyacentes unas con otras al momento de unirlas no generen errores. De esta forma seria posible reducir los tiempos de generación de redes con las restricciones geométricas. Otro de los aspectos que se tienen que considerar es el de paralelizar la intrusión de mercurio ya que al utilizar algoritmos recursivos para realizar las operaciones llega un punto en el que la memoria se vuelve un recurso insuficiente para redes le longitud mayor a 90. Por ultimo se puede incluir en la librería las funciones que realizan la simulación de la retracción de mercurio.

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

106

9. Anexos

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

107

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

108

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

109

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

110

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

111

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

112

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

113

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

114

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

115

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

116

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

117

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

118

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

119

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

120

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

121

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

122

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

123

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

124

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

125

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

126

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

127

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

128

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

129

Benjamín Moreno Montiel. Proyectos ll, Licenciatura en Computación, UAM-I Israel Guerrero Pérez

130

10. Referencias:

1. Estudio de Fenómenos Capilares en Medios Porosos: Sorción de Nitrógeno y Porosimetría de Mercurio. Acuerdos y Discordancias”. Mendoza Carlos Felipe. Tésis doctoral. 2005

2. http://computacion.cs.cinvestav.mx/~acaceres/courses/gnuplotCurso/gnuplotCurso.pdf

3. “Estudio y paralelizacion de intrusión y retracción de mercurio en un medio poroso”. Silva Cabrera Víctor, Rosiles Bernal Juan Guadalupe, Rodríguez Quintanar Juan José. Proyecto Terminal II. 2006

20/05/2007