anÁlisis de confiabilidad de redes de …

90
ANÁLISIS DE CONFIABILIDAD DE REDES DE TELECOMUNICACIONES CON SIMULACIONES DE MONTECARLO – MODELAMIENTO ANDRÉS FELIPE JAIMES GONZÁLEZ UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA BOGOTÁ D.C. 2004

Upload: others

Post on 10-Nov-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

ANÁLISIS DE CONFIABILIDAD DE REDES DE TELECOMUNICACIONES CON SIMULACIONES DE MONTECARLO – MODELAMIENTO

ANDRÉS FELIPE JAIMES GONZÁLEZ

UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA BOGOTÁ D.C.

2004

Page 2: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

ANÁLISIS DE CONFIABILIDAD DE REDES DE TELECOMUNICACIONES CON

SIMULACIONES DE MONTECARLO - MODELAMIENTO

ANDRÉS FELIPE JAIMES GONZÁLEZ

Trabajo De Grado

Asesor: Ph.D. ALVARO TORRES MACIAS

UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA BOGOTÁ D.C.

2004

Page 3: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

1

DEDICATORIA

A nuestros Padres y familiares que nos apoyaron durante toda esta etapa de nuestras vidas.

Page 4: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

2

CONTENIDO

Pág. 1. INTRODUCCIÓN 4

2. CONFIABILIDAD 6 3. REDES DE TELECOMUNICACIONES 9

3.1. RED TELEFÓNICA 15 3.2. RADIODIFUSIÓN DE SEÑALES 17

3.3. TEORIA DE GRAFOS 20 4. MODELAMIENTO 24

4.1. CONDICIONES INICIALES 24 4.2. ENRUTAMIENTO 26

4.2.1. Principio de optimalidad 27 4.2.2. Algoritmos de enrutamiento 28

4.2.2.1. Selección de la ruta más corta 28 4.2.2.2. Algoritmo para encontrar los cortes mínimos

(Flujo máximo) 31 4.2.2.3. Selección del algoritmo 32

4.3. INDICADORES 32 5. SIMULACIÓN 33

5.1. MACROALGORITMO 33 5.2. MÉTODO DE MONTECARLO 33 5.3. ALGORITMO DE FORD-FULKERSON 34 5.4. RESULTADOS 36 5.5. EJEMPLOS 39

5.5.1. Ejemplo 1 39 5.5.2. Ejemplo 2 40

6. CONCLUSIONES 42 7. TRABAJO FUTURO 44

8. BIBLIOGRAFIA 45 9. APENDICE 46

9.1. MANUAL DEL USUARIO 46

Page 5: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

3

9.2. CODIGO DEL PROGRAMA 5

10. LISTA DE FIGURAS 88

Page 6: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

4

1. INTRODUCCIÓN

Una red está compuesta por nodos y enlaces que los comunican. La

confiabilidad de una red es una medida que refleja la capacidad de la misma de

continuar operativa frente a posibles fallos de algunos de sus componentes, y se

define como la probabilidad de comunicación exitosa entre cierto conjunto de

nodos de la red, dadas las probabilidades de funcionamiento de los componentes

y la topología de la red1. El concepto de confiabilidad de redes de

telecomunicaciones está relacionado con su operabilidad.

La evaluación de la confiabilidad de las redes de telecomunicaciones es un

problema difícil para redes de tamaño considerable. Como solución a este

problema de cómputo surge la necesidad de aplicar el método de simulación de

MonteCarlo. Este método genera eventos aleatorios que permiten evaluar el

comportamiento de la red ante fallas.

El proyecto general consiste en conocer y aprender a aplicar diferentes algoritmos

de ordenamiento, enrutamiento y reestructuración de redes, para realizar un

esquema de modelamiento para redes de telecomunicaciones y su respectivo

análisis de confiabilidad. Esto con el fin de desarrollar paralelamente una

herramienta computacional que permita al ingeniero obtener un análisis del

desempeño del sistema en el momento de realizar el modelamiento y diseño de

una red de telecomunicaciones.

En este proyecto se presenta el modelamiento y la implementación de una

herramienta computacional para el análisis de confiabilidad en sistemas de

telecomunicaciones empleando simulaciones de MonteCarlo (SMC). Se aplica un

modelo probabilística basado en un grafo estocástico para evaluar la confiabilidad

como la capacidad de una red de permanecer operativa ante una eventualidad. Por 1 “Método RVR en la simulación de medidas de confiabilidad en redes”, Departamento de Investigación Operativa, Instituto de Computación, Facultad de Ingeniería, Universidad de la República, Montevideo, Uruguay. Antonio Mauttone, Tutor: Dr. Ing. Héctor Cancela.

Page 7: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

5

medio de este proyecto se busca facilitarle al ingeniero su decisión para la

selección de la red óptima basado en un criterio de robustez y proporcionarle una

herramienta adicional de decisión.

Page 8: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

6

2. CONFIABILIDAD

En el concepto de confiabilidad existen diferentes definiciones dependiendo del

punto de vista. Una de las definiciones de confiabilidad se refiere a ésta como la

probabilidad de que un sistema realice su función adecuadamente en el periodo

de tiempo considerado, operando en las condiciones establecidas2.

Otra definición de confiabilidad es la de disponibilidad del sistema en un instante

de tiempo; en otras palabras es la probabilidad de que un sistema esté en

capacidad de operar en un tiempo t.

En cuanto a las redes de telecomunicaciones la confiabilidad es una herramienta

de análisis que permite un criterio de selección adicional para los ingenieros

diseñadores. Es importante conocer la robustez de una red y evitar sanciones o

pérdidas en el momento de ocurrencia de un evento. La confiabilidad de las redes

puede ser de definida de varias maneras: Una medida determinística, por ejemplo,

enunciándola como el número mínimo de enlaces que al ser removidos

desconectan la red.

Una red de comunicaciones está representada matemáticamente como un grafo:

cada nodo representa una persona, computador, o ubicación y cada enlace

representa un canal de comunicación. Una red esta conectada si para cada par

distinto de nodos, existe una secuencia de enlaces que empieza en un nodo y

termina en el otro. La medida probabilística más común es asumir inicialmente

que cada enlace tiene cierta probabilidad de estar en operación y luego determinar

la probabilidad de que la red esté conectada.

La red se evalúa en sus aspectos técnicos, como la probabilidad de que estará

conectada, y por lo tanto se aleja de manejar las necesidades de la gente. En

confiabilidad de redes, el contenido del mensaje, y por lo tanto la capacidad de los 2 “Modelo para el dimensionamiento de una red de reserva de transmisión de telecomunicaciones con base en criterios de demanda y confiabilidad”, Miguel Felipe Anzola Espinosa, Universidad de los Andes, Bogotá, Colombia.

Page 9: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

7

enlaces de comunicación y la probabilidad de tergiversación del mensaje no son

considerados. Un enlace es operacional y capaz de cargar cualquier tipo de

mensaje o no es capaz de cargar ningún mensaje. Además se asume que los

individuos pueden colectivamente disponer como enrutar los mensajes en caso de

que exista una falla en el enlace de comunicación.

Entre los métodos de evaluación de la confiabilidad de un sistema se encuentran

el método analítico y el método de Simulaciones de MonteCarlo. El método

analítico emplea una serie de ecuaciones matemáticas (del modelo matemático)

para evaluar los índices de confiabilidad.

Por otro lado, el método de SMC simula el proceso real y por medio de generación

de número aleatorios se modelan los eventos en el sistema y en los componentes.

Este método de simulación permite realizar experimentos reales sobre el sistema y

observar su comportamiento. A partir de estas simulaciones se calculan los

índices de confiabilidad al igual que en el método analítico; es por esto que el

método de SMC se convierte en el método mas empleado en la evaluación de la

confiabilidad.

El método fue llamado así por el principado de Mónaco por ser “la capital del juego

de azar”, al tomar una ruleta como un generador simple de números aleatorios. El

nombre y el desarrollo sistemático de los métodos de MonteCarlo datan

aproximadamente de 1944 con el desarrollo de la computadora electrónica. Sin

embargo hay varias instancias (aisladas y no desarrolladas) en muchas ocasiones

anteriores a 19443.

El uso real de los métodos de MonteCarlo como una herramienta de investigación,

viene del trabajo de la bomba atómica durante la Segunda Guerra Mundial. Este

trabajo involucraba la simulación directa de problemas probabilísticos de

3 Oscar M. Ponce, http://delta.cs.cinvestav.mx/~mcintosh/oldweb/s1998/oscar/node3.html

Page 10: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

8

hidrodinámica concernientes a la difusión de neutrones aleatorios en material de

fusión.

Aún en la primera etapa de estas investigaciones, John von Neumann y Stanislao

Ulam refinaron esta curiosa “Ruleta rusa” y los métodos “de división”. Sin

embargo, el desarrollo sistemático de estas ideas tuvo que esperar el trabajo de

Harris y Herman Kahn en 1948. Aproximadamente en el mismo año, Fermi,

Metropolos y Ulam obtuvieron estimadores para los valores característicos de la

ecuación de Schrödinger para la captura de neutrones a nivel nuclear.

La simulación de MonteCarlo fue creada para resolver integrales que no se

pueden resolver por métodos analíticos, para resolver estas integrales se usaron

números aleatorios. Posteriormente se utilizó para cualquier esquema que emplee

números aleatorios, usando variables aleatorias con distribuciones de probabilidad

conocidas, el cual es usado para resolver ciertos problemas estocásticos y

determinísticos, donde el tiempo no juega un papel importante.

Por lo tanto es un proceso computacional que utiliza números aleatorios para

derivar una salida, por lo que en vez de tener entradas con puntos dados, se

asignan distribuciones de probabilidad a alguna o todas las variables de entrada.

Esto generará una distribución de probabilidad para una salida después de una

corrida de la simulación.

Page 11: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

9

3. REDES DE TELECOMUNICACIONES4 Cuando hablamos de una red de telecomunicaciones, estamos hablando de una

infraestructura por la cual transportamos diferentes tipos de información desde un

origen hasta un destinatario.

En la red todos los usuarios poseen un equipo terminal así como un canal de

acceso equivalente a la tecnología de su terminal.

La razón básica por la que se generan las redes de telecomunicaciones es facilitar

la comunicación entre varios usuarios por medio de enlaces compartidos entre

usuarios pero conservando una conexión dedicada para su equipo, es decir que

se evitan los costos elevados de tener un canal dedicado, compartiendo su enlace

con todos los demás usuarios de la red.

La función de una red de telecomunicaciones consiste en ofrecer servicios a sus

usuarios, existe las redes públicas abiertas para todo el mundo y las redes

privadas cuando alguien establece una red para uso personal o restringido.

Una característica importante de una red es su cobertura geográfica, ya que ésta

limita el área de conexión y el acceso a la red para utilizar los servicios que ofrece.

Existen redes locales que enlazan computadoras instaladas en un mismo edificio

conocidas como LAN (local area network), existen redes de cobertura más amplia

conocidas como WAN (wide area network), redes de cobertura urbana, redes

metropolitanas, redes que enlazan redes metropolitanas o redes urbanas

formando así redes nacionales.

Las redes se clasifican por su arquitectura y su modo de transmisión de la

siguiente manera:

4 Información y telecomunicaciones, Federico Kuhlman y Antonio Alonso C. Publicado por el FCE, México 1997

Page 12: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

10

• Red Conmutada: En esta red la información es transmitida de nodo en

nodo, los cuales la retransmiten sucesivamente hasta llegar a su

destinatario final. La conmutación puede ser hecha por paquetes o por

circuitos. En la primera, la información se divide en paquetes

independientes con información de control, estos se transmiten de nodo en

nodo por diferentes rutas y al llegar a su destinatario final estos paquetes se

ensamblan nuevamente y la información llega completa. En la conmutación

de circuitos se entabla una ruta entre los equipos, comienza la

comunicación y se mantiene la ruta durante el tiempo de transmisión

requerido.

• Red de Difusión: Aquí se tiene un canal al que se conectan todos los

usuarios de la red, los cuales pueden recibir todos los mensajes enviados

pero solamente ven los que están identificados con su dirección. Las redes

de difusión generalmente tienen sólo un nodo transmisor que ingresa la

información al canal donde están conectados los usuarios. Casos típicos de

este tipo de red son las topologías Bus y Anillo.

Existen muchas maneras de clasificar los servicios de telecomunicaciones, ya

que también existen diversos parámetros por medio de los cuales pueden ser

comparados. En particular se utilizan los siguientes criterios de comparación:

Tipo de red. Basadas fundamentalmente en transmisiones de radio o en

señales guiadas por medio de conductores eléctricos u ópticos.

Cobertura. La extensión del área geográfica que cubre una red es de

particular interés. La cobertura puede ser caracterizada como local,

regional o nacional.

Interconexión. A pesar de que la cobertura de una red puede ser local o

regional, si está interconectada con otras redes de mayor cobertura se

amplía de manera automática el área geográfica cubierta por la red.

Page 13: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

11

Direccionalidad. En una comunicación un usuario puede tener un papel

pasivo o uno activo. Aquí se indica si el tipo de comunicación es

unidireccional o bidireccional.

Tipo de información. La información que se transmite puede ser digital

(D) o analógica (A), lo cual define algunos aspectos del alcance de un

servicio.

Privacía. Normalmente cuando se hace uso de un servicio de

telecomunicaciones se desea tener la certeza de que sólo aquellos

usuarios a quienes está destinada la información la reciben, y de que

ningún intruso puede tener acceso al servicio sin tener autorización para

ello.

Una red de telecomunicaciones se basa en dos componentes:

• Los nodos: Se encargan de enviar, recibir y procesar la información. Los

nodos son los equipos encargados de realizar las diversas funciones de

procesamiento que requieren cada una de las señales transitan a través de

los enlaces de la red. Desde un punto de vista topológico, los nodos

proveen los enlaces físicos entre los diversos canales que conforman la

red. Los nodos de una red de telecomunicaciones son equipos que realizan

las siguientes funciones:

Establecimiento y verificación de un protocolo. Los nodos de la red de

telecomunicaciones realizan los diferentes procesos de comunicación de

acuerdo con un conjunto de reglas que les permiten comunicarse entre

sí.

Transmisión. Existe la necesidad de hacer un uso eficiente de los

canales, por lo cual, en esta función, los nodos de la red adaptan al

Page 14: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

12

canal la información o los mensajes en los cuales está contenida, para

su transporte eficiente y efectivo a través de la red.

Interfase. En esta función el nodo se encarga de proporcionar al canal

las señales que serán transmitidas, de acuerdo con el medio de que

está formado el canal.

Recuperación. Cuando durante una transmisión se interrumpe el

sistema, a través de sus nodos, debe ser capaz de recuperarse y

reanudar en cuanto sea posible la transmisión.

Enrutamiento. La selección de la ruta en cada nodo depende, entre otros

factores, de la situación instantánea de congestión de la red, es decir,

del número de mensajes que en cada momento están en proceso de ser

transmitidos a través de los diferentes enlaces de la red.

Direccionamiento. Un nodo requiere la capacidad de identificar

direcciones para poder hacer llegar un mensaje a su destino,

principalmente cuando el usuario final está conectado a otra red de

telecomunicaciones.

Control de flujo. Todo canal de comunicaciones tiene una cierta

capacidad de manejar mensajes, y cuando el canal está saturado ya no

se deben enviar más mensajes por medio de ese canal, hasta que los

mensajes previamente enviados hayan sido entregados a sus destinos.

• Los Enlaces: Estos interconectan los nodos y se encargan de la

transmisión de la información. El canal es el medio físico a través del cual

viaja la información de un punto a otro. Las características de un canal son

de fundamental importancia para una comunicación efectiva, ya que de

ellas depende en gran medida la calidad de las señales recibidas en el

destino o en los nodos intermedios en una ruta. Los canales pueden

Page 15: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

13

pertenecer a una de dos clases:

o Canales que guían las señales que contienen información desde la

fuente hasta el destino, por ejemplo: cables de cobre (tasas hasta 4

Mbps), cables coaxiales (tasas hasta 500 Mbps) y fibras ópticas

(tasas hasta 2000 Mbps).

Los cables de cobre son el medio más utilizado en transmisiones

tanto analógicas como digitales. El material del que están formados

produce atenuación en las señales, de manera tal que a distancias

de entre 2 y 6 km deben ser colocadas repetidoras.

Los cables coaxiales tienen un blindaje que aísla al conductor central

del ruido en la transmisión; son muy utilizados en comunicaciones de

larga distancia, en distribución de señales de televisión y en redes de

transmisión de datos. La distancia entre repetidoras es similar a la de

los cables de cobre, debido a que se utiliza una mayor banda para la

transmisión, permitiendo mayores tasas en las comunicaciones

digitales.

La fibra óptica transmite señales ópticas en lugar de las eléctricas de

los dos casos anteriores. Son mucho más ligeras que los cables

metálicos y permiten transmitir tasas muchísimo más altas que los

primeros. Además, aunque las señales se ven afectadas por ruido,

no se alteran por ruido de tipo eléctrico y pueden soportar distancias

mayores entre repetidoras (del orden de 100 km). Sus aplicaciones

principales son enlaces de larga distancia, enlaces metropolitanos y

redes locales.

La diferencia fundamental entre las transmisiones que utilizan fibras

ópticas y las de naturaleza puramente eléctrica está en el hecho de

que en las primeras la información se sobrepone a señales ópticas,

es decir, la información modula alguna característica de una señal

Page 16: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

14

óptica. Entre las ventajas de la fibra óptica se destacan que son

mucho menos sensibles a ruido de tipo eléctrico, y, por el espacio

que ocupan en el espectro las señales ópticas, la capacidad de estas

transmisiones es mucho mayor que las de los sistemas basados en

cables metálicos. Un área en la cual las fibras ópticas han sido de

extraordinaria importancia es la de transmisiones transoceánicas. La

clave para este tipo de aplicaciones está en disponer de dispositivos

de alta confiabilidad, grandes anchos de banda y pocas pérdidas.

o Canales que difunden la señal sin una guía, a los cuales pertenecen

los canales de radio, que incluyen también microondas y enlaces

satelitales.

Las microondas utilizan antenas de transmisión y recepción de tipo

parabólico para transmitir con haces estrechos y tener mayor

concentración de energía radiada. Principalmente se utilizan en

enlaces de larga distancia, desde luego con repetidoras, pero a

últimas fechas se han utilizado también para enlaces cortos punto a

punto.

Los enlaces satelitales funcionan de una manera muy parecida a las

microondas. Un satélite recibe en una banda señales de una estación

terrena, las amplifica y las transmite en otra banda de frecuencias, se

envían señales de radio desde una antena hacía un satélite

estacionado en un punto fijo alrededor de la Tierra (llamado

"geoestacionario"). Los satélites tienen un reflector orientado hacia

los sitios donde se quiere hacer llegar la señal reflejada. Y en esos

puntos también se tienen antenas cuya función es precisamente

captar la señal reflejada por el satélite. De ese punto en adelante, la

señal puede ser procesada para que por último sea entregada a su

destino.

Page 17: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

15

Las ventajas de las comunicaciones satelitales son que se pueden

salvar grandes distancias sin importar la topografía, y se pueden usar

antenas que tengan coberturas geográficas amplias, de manera tal

que muchas estaciones receptoras terrenas puedan recibir y distribuir

simultáneamente la misma señal que fue transmitida una sola vez.

Una red moderna de telecomunicaciones normalmente utiliza canales de

distintos tipos para lograr la mejor solución a los problemas de

telecomunicaciones de los usuarios; es decir, con frecuencia existen redes

que emplean canales de radio en algunos segmentos, canales vía satélite

en otros, microondas en algunas rutas, radio entre otras.

3.1. RED TELEFÓNICA:

Es la más compleja, la de mayor cobertura geográfica y la que mayor número de

usuarios tiene. Permite establecer una llamada entre dos usuarios en cualquier

parte del planeta de manera distribuida, automática, prácticamente instantánea.

Es evidente que por la dispersión geográfica de la red telefónica y de sus usuarios

existen muchas centrales locales. Las centrales locales están enlazadas entre sí

por medio de canales de mayor capacidad, de manera que cuando ocurran

situaciones de alto tráfico no exista un bloqueo considerable entre las centrales.

Existe una jerarquía entre las diferentes centrales que le permite a cada una de

ellas enrutar las llamadas de acuerdo con los tráficos que se presenten.

Los enlaces entre los abonados y las centrales locales son normalmente cables de

cobre, pero las centrales pueden comunicarse entre sí por medio de enlaces de

cable coaxial, de fibras ópticas o de canales de microondas. En caso de enlaces

entre centrales ubicadas en diferentes ciudades, se usan cables de fibras ópticas y

enlaces satelitales, dependiendo de la distancia que se desee cubrir. Como las

necesidades de manejo de tráfico de los canales que enlazan centrales de los

diferentes niveles jerárquicos aumentan conforme aumenta el nivel jerárquico,

también las capacidades de los mismos deben ser mayores en la misma medida.

Page 18: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

16

La red telefónica está organizada de manera jerárquica. El nivel más bajo (las

centrales locales) está formado por el conjunto de nodos a los cuales están

conectados los usuarios. Le siguen nodos o centrales en niveles superiores,

enlazados de manera tal que entre cuanto sea la jerarquía, mayor será la

capacidad que los enlaza. Con esta arquitectura se proporcionan a los usuarios

diferentes rutas para colocar sus llamadas, que son seleccionadas por los nodos

mismos de acuerdo con criterios preestablecidos, tratando de que una llamada no

sea enrutada más que por aquellos nodos y canales estrictamente indispensables

para completarla, se trata de minimizar el número de canales y nodos por los

cuales pasa una llamada para mantenerlos desocupados en la medida de lo

posible.

El servicio que tradicionalmente ha sido ofrecido al público en general por medio

de la red pública telefónica, es el de comunicación de voz, es decir, la transmisión

bidireccional de señales de voz, con el objeto de que dos usuarios puedan

establecer y sostener una conversación. Este servicio tiene básicamente dos

componentes: la etapa de señalización, que incluye la selección del número del

destinatario, la identificación de una ruta por medio de la conmutación, la

reservación de la misma y el timbrado, y la etapa de transmisión, que consiste en

la conversión de las señales acústicas en señales eléctricas, su transporte a

través de los medios de comunicación, y la conversión de señales eléctricas

nuevamente en acústicas para ser entregadas al destinatario.

Considerando la amplia cobertura de la red telefónica y los desarrollos

tecnológicos de las últimas décadas, muchos esfuerzos se han dirigido hacia la

transmisión señales digitales sobre la misma infraestructura, lo cual aumenta la

cantidad de servicios ofrecidos por medio de esta red.

Las centrales modernas (los nodos de la red) están basadas en sistemas

totalmente digitales, lo cual contribuye a que se puedan ofrecer al usuario

servicios tan sencillos como conferencias de voz, transmisión de datos y

videoconferencias, y tan rudimentarios como dar de alta la línea de un nuevo

Page 19: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

17

usuario, indicar el número que llama, transferir llamadas a otro número telefónico,

etc.

3.2. RADIODIFUSIÓN DE SEÑALES:

Dentro de estos servicios existen dos clases: los bidireccionales y los

unidireccionales. En los de tipo bidireccional está la operación de la telefonía

celular y los servicios personales de comunicación (PCS Personal Communication

System).

La telefonía celular surgió como un avance importante de la radiotelefonía

tradicional. En esta última, los conceptos de la red son muy similares a los de la

red telefónica pública, con la excepción de que el acceso a la red por parte del

usuario es por medio de un canal de radio. En el servicio tradicional de

radiotelefonía se cuenta con una sola estación base que realiza funciones de

transmisión y de repetición. En las transmisiones se utilizan potencias

extremadamente grandes, logrando así una gran zona de cobertura. Sin embargo,

si durante una conversación un usuario se sale de la zona de cobertura, la

conversación se interrumpe ya que este sistema no tiene capacidad de

conmutación. Cada usuario tiene asignado un canal de radio con una frecuencia

fija para acceder a la red, lo cual hace ineficiente el uso del espectro

radioeléctrico, ya que, si uno de los usuarios con canales asignados en algún

momento no lo utiliza, ese o esos canales estarían desocupados.

La radiotelefonía tradicional fue evolucionando hacia el concepto de "telefonía

celular", con base en dos objetivos: aumentar la calidad de los servicios que

pueden ser ofrecidos, y aumentar, compartiendo las frecuencias, la utilización del

espectro radioeléctrico, lo cual dio como resultado el aumento del número de

usuarios de la red.

El servicio para el que inicialmente fue concebida la radiotelefonía celular fue

similar al de la telefonía por medio de la red telefónica pública, es decir,

comunicaciones de voz, pero con esquemas de acceso similares a los de la

Page 20: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

18

radiotelefonía tradicional, es decir, por medio de canales de radio. Las ventajas

que se esperaba que la telefonía celular tendría sobre la red telefónica tradicional

son la portabilidad (no requieren de un enlace de cable para tener acceso a la red

telefónica), que un equipo terminal puede desplazarse dentro del área de

cobertura sin interrumpir la comunicación, que por medio de un equipo de telefonía

celular se pueden establecer conversaciones con equipos telefónicos conectados

a la red telefónica tradicional, y que el número de usuarios de una red puede

aumentar casi sin límite debido a la posibilidad de reutilizar frecuencias, de reducir

tamaños de células y de explotar adecuadamente las complejas técnicas de

codificación.

La tecnología celular es diferente de los conceptos que la precedieron, al menos

en lo referente a la posibilidad de reutilizar frecuencias. Con sistemas

convencionales de radio, el objetivo era tener la mayor cobertura posible con cada

una de las estaciones fijas, usando antenas montadas en altas torres, con

potencias de transmisión grandes. A cada estación le corresponde un grupo de

canales y la configuración del sistema no cambia a lo largo del tiempo. Con las

redes celulares las potencias radiadas por las estaciones base se mantienen al

mínimo, de manera tal que, en combinación con antenas localizadas a las alturas

mínimas, se pueda garantizar la cobertura deseada con la calidad requerida. Con

ello se logra que muchas células no adyacentes usen las mismas frecuencias sin

interferir las transmisiones de unas con las de otras.

Debe estar claro que células geográficamente separadas sí pueden emplear los

mismos conjuntos de frecuencias sin que haya un efecto perjudicial entre las

conversaciones que las usen. La limitante que existe en cuanto al número de

usuarios del servicio en una célula se debe a la cantidad de frecuencias que se

tienen asignadas en esa célula. Sin embargo, si se reduce el tamaño de las

células, lo cual equivale a reducir el área de cobertura de las mismas (esto se

logra disminuyendo la potencia transmitida, la altura de las antenas de las bases o

ambas) se puede aumentar el número total de usuarios de una red, debido a que,

Page 21: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

19

si bien el número de usuarios por célula no aumenta, sí se incrementa el número

total de células.

El servicio más importante que se ofrece por medio de una red celular es el de

comunicación de voz, el cual opera de la siguiente manera. En las llamadas

originadas en la unidad móvil, cuando un usuario activa su teléfono, se realiza un

proceso de búsqueda por el canal de control para identificar un canal con buena

recepción. Generalmente éste está asignado a la base más cercana. Esta

búsqueda es controlada por el equipo móvil y se realiza cuando el equipo no se

está utilizando en una conversación. Una vez identificado el canal que será

utilizado, la unidad móvil se considera inicializada y lista para establecer una

comunicación. Después de esto, se envía el número hacia la estación base,

misma que envía esta información a la unidad de conmutación, que es la

encargada de localizar la célula en la que está ubicada la unidad buscada. Una

vez identificada, se le asigna un canal, se le notifica que tiene una llamada y se

puede iniciar la conversación. Cuando la llamada se origina en un aparato de la

red pública telefónica, se hace llegar la solicitud a la central celular de

conmutación, la cual se encarga de localizar al usuario destino y de hacer la

señalización correspondiente. Al terminar una conversación, ambos usuarios

liberan los canales de radio asignados para esa conversación y las unidades

móviles reactivan el monitoreo de la calidad de los canales. Finalmente, si durante

la conversación de una unidad en movimiento se detecta que la unidad ha salido

de la zona de cobertura de una célula, el sistema le asigna a esta conversación

una nueva frecuencia y se realiza la nueva asignación sin que el usuario se

percate de ello.

Los PCS pueden ser caracterizados por lo siguiente:

o Utilizan una red de radio basada en microcélulas.

o Están basados en transmisiones digitales.

o Utilizan una banda de alta frecuencia (típicamente en 1.8-2 Ghz).

o Su mayor fortaleza no está en aplicaciones vehiculares.

Page 22: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

20

o Son el primer paso hacia el objetivo de comunicación entre

personas, más que entre equipos terminales.

Los servicios bidireccionales tienen la característica común de que, a pesar de

tratarse de comunicación por radio, los equipos terminales de los usuarios son

direccionables, es decir, únicamente responden cuando en la información que

reciben identifican su propia "dirección electrónica". La direccionabilidad, concepto

fundamental tanto para servicios unidireccionales como para los bidireccionales,

consiste en que cada equipo receptor tiene grabado en su memoria un número de

identificación único, cuando se transmite una señal digital que contiene un

mensaje, éste va precedido por el número de identificación del usuario a quien va

destinado el mensaje. Todos los equipos dentro del área de cobertura reciben esta

señal, extraen del mensaje el número de identificación y lo comparan con el

número que tienen grabado en su memoria. Si ambos números coinciden,

entonces el equipo receptor activa sus circuitos para poder recibir el mensaje

completo; en caso contrario, hace caso omiso de lo que recibió y vuelve a su

estado de espera, verificando las direcciones cada vez que detecta un mensaje.

3.3. TEORIA DE GRAFOS5: Para poder simplificar las redes y transformarlas a un sistema matemático se

utiliza la representación por grafos. La Teoría de Grafos se encarga de establecer

los fundamentos y bases necesarias para resolver problemas de una determinada

complejidad a través de estructuras matemáticas cómo lo son los grafos. Los

fundamentos de esta teoría se basan en una serie de conceptos que se resumen a

continuación.

Se define grafo como una terna G = (V, E, f) donde V representa un conjunto de

vértices o nodos, E un conjunto de aristas o enlaces y f una aplicación que a cada

elemento de E le hace corresponder un par de elementos de V, es decir, a cada

arista le hacemos corresponder un par de vértices. 5 M.Romero Schmidtke, http://enciclopedia.us.es/index.php/Teor%EDa_de_grafos

Page 23: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

21

La conexidad de un grafo determina la posibilidad de seguir caminos en grafos a

través de los enlaces. Si se puede llegar a un nodo desde otro cualquiera a través

de las aristas, respetando el sentido decimos que el grafo es conexo. Si hay

vértices inaccesibles, el grafo no es conexo.

Existen diversos algoritmos que ayudan a resolver diversos problemas en la teoría

de grafos, como caminos mínimos, flujos, Dijktra, Ford-Fulkerson, etc.

En un grafo la forma de los enlaces no son relevantes, sólo importan sus

extremidades; la posición de los nodos tampoco, y se puede variar para obtener

un grafo más claro. Estos cambios se llaman isomorfismos de grafos.

Generalmente, se considera que colocar los vértices en forma de polígono regular

da grafos más entendibles.

Figura 1. Isomorfismos

En la figura, V = { a, b, c, d, e, f }, y A = { ab, ac, ae, bc, bd, df, ef }.

Un ciclo es un camino, es decir una sucesión de aristas adyacentes, donde no se

recorre dos veces la misma arista, y donde se regresa al punto inicial. Un ciclo

hamiltoniano tiene además que recorrer todas los vértices. Se habla también de

camino hamiltoniano si no tiene que regresar al punto de partida.

Page 24: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

22

Un grafo que no tiene circuito y que conecta a todos los puntos, se llama un árbol:

Figura 2. Grafo tipo árbol

En un grafo con n nodos, los árboles tienen exactamente n - 1 enlaces, y hay nn-2

árboles posibles. Los árboles son grafos que conectan nodos utilizando el menor

número posible de enlaces, de ahí su interés concreto.

En muchos problemas reales, a cada arista se le es asignado un número

específico, llamado coste, según el contexto, y se obtiene así un grafo valuado.

Formalmente, es un grafo con una función f: A → R+. Estos coste permiten dar

pesos a cada uno de los ejes que constituyen un grafo, esto facilita a los diversos

algoritmos tener en cuenta algunas de las características de los enlaces y la

complejidad de ir entre ellos y obtener así la ruta más corta entre nodos, o también

la ruta de mejor desempeño.

Se nota Kn el grafo completo con n nodos, es decir, en el cual cada par de nodos

están conectados por un enlace. Kn,p es el grafo compuesto de un grupo de n

vértices y otro de p, tal que cada vértice del primer grupo está conectado con cada

del segundo, y no hay más aristas.

Figura 3. Distancia entre nodos.

Page 25: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

23

En un grafo, La distancia entre dos nodos es el menor número de enlaces de un

recorrido entre ellos. El diámetro, en una figura como en un grafo, es la mayor

distancia entre dos puntos de la misma. El diámetro de los Kn es 1, y el de los Kn,p

es 2. Un diámetro infinito puede significar que el grafo tiene una infinidad e

vértices o simplemente que no es conexo. También se puede considerar el

diámetro promedio, como el promedio de las distancias entre dos vértices.

Page 26: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

24

4. MODELAMIENTO 4.1. CONDICIONES INICIALES: Para plantear el modelo del proyecto, primero se deben hacer unos ajustes de los

criterios básicos de redes de telecomunicaciones, estableciendo así las

restricciones del modelo. Los diferentes criterios y su manejo se describen a

continuación:

• Tipo de red: El software esta dirigido para redes de telecomunicaciones

tipo WAN, debido a que un análisis de confiabilidad es una herramienta de

mayor provecho para grandes empresas de telecomunicaciones

interesadas en el rendimiento, la confiabilidad y seguridad de la red. Sin

embargo, el software puede ser utilizado también para otro tipo de redes de

menor alcance o sistemas afines evaluados mediante teoría de grafos, en

caso que se encuentre útil la información que brinda el mismo.

• Dimensiones de la red: La red a simular puede contener un máximo de

15 enlaces (inicialmente para evaluar el peso de la carga computacional).

• Demanda y tráfico de la red: En este caso la demanda es la capacidad

pico requerida por los usuarios de la red representada en una distribución

Gaussiana (probabilística), o un valor pico (determinística).

Figura 4. Distribución Normal6

6 Tomado de Presentación curso de Confiabilidad. P.hD. Alvaro Torres M.

Page 27: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

25

• Capacidad: La capacidad de los enlaces esta dada en unidades de bits por

segundo, en este caso no se utilizan unidades globales sino que se advierte

manejar todas las capacidades en la misma escala de unidades.

• Tiempo de simulación: Para el tiempo se depende de las unidades de las

tasas de falla y reparación, aunque para mayor facilidad a la hora de tabular

los resultados y analizarlos se pedirá que introduzcan los datos en años.

• Tipo de enlaces: Los enlaces de la red se definen según el sistema que se

esté simulando, sin embargo se pueden simular tanto unidireccionales

(comunicaciones half duplex) como bidireccionales (full duplex).

• Fallas simultáneas: La simulación de MonteCarlo no contempla la

simultaneidad de eventos de falla, sin embargo si contempla aquellos

eventos en que dos o más enlaces de la red se encuentren fallando al

mismo tiempo.

• Datos de entrada:

Para nodos:

Tipo de Nodo: Nodo fuente, de transición o sumidero.

Para enlaces:

Tasa de Falla (λ): Esta es una propiedad intrínseca del enlace, se

mide en años y sirve para calcular los tiempos de falla del enlace.

Tasa de reparación (µ): Esta es una propiedad intrínseca del enlace,

se mide en años y sirve para calcular los tiempos de reparación del

enlace.

Capacidad: Es la capacidad de transporte de información disponible

que posee el enlace.

Page 28: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

26

Para simular:

Tiempo de simulación: Este tiempo indica la duración en años que va

a ser simulada la red mediante MonteCarlo.

Capacidad requerida: Es la capacidad pico requerida del sistema.

Desviación estándar: Es la desviación estándar de la capacidad

requerida, con este dato y con la capacidad requerida del sistema se

genera la distribución Gaussiana con la cual se modela la demanda

de la red.

• MonteCarlo7: Para utilizar el método de MonteCarlo, se va a implementar

la simulación secuencial de MonteCarlo utilizando el método del próximo

evento; mediante λ o µ (depende del estado de falla o de reparación), se

determina el tiempo de la próxima transición para cada componente. El

tiempo menor indica el siguiente evento y el componente al que le

corresponde ese tiempo entonces hace un cambio de estado. Si el evento

indica un cambio de estado del sistema (una falla o un restablecimiento),

entonces los índices del sistema se actualizan. 4.2. ENRUTAMIENTO8:

Los algoritmos de enrutamiento son los encargados de establecer la ruta más

adecuada para la transmisión de los diferentes paquetes en una red. Sin importar

la ruta que sea elegida para el envío de paquetes o si se establecen nuevas

conexiones un algoritmo de enrutamiento se debe caracterizar por su simplicidad,

robustez, estabilidad y facilidad de corrección, a se vez debe de ser imparcial en la

asignación de rutas y óptimo. Un algoritmo de enrutamiento debe de ser capaz de

7 Alvaro Torres M. Ph.D, Curso de Confiabilidad. Universidad de los Andes, Enero de 2004 8 “Computer Networks”, Andrew Tanenbaum, Prentice Hall, 4a edición, 2003.

Page 29: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

27

sobrevivir a los diferentes cambios en la topología de las redes como también del

tráfico en las mismas, sin que haya la necesidad de reiniciar los equipos.

Los algoritmos de enrutamiento se clasifican en dos grupos:

- Algoritmos no adaptativos: Estos algoritmos no toman en cuenta alguna

medida o estimación del tráfico de la red o de su topología para la toma

de decisiones. Para elegir una ruta de un punto a otro para todo los

paquetes entre estos puntos, se calcula cuando la red esta off-line y es

tomada por los enrutadores cuando la red es iniciada, esto se conoce

como enrutamiento estático.

- Algoritmos Adaptativos: En este caso los algoritmos cambian sus

decisiones de acuerdo a los cambios en su topología como también del

tráfico de la red. Estos algoritmos se diferencian en donde ellos obtienen

la información (Datos locales, de enrutadores cercanos o de todos los

enrutadores), o también cuando hay un cambio de ruta (cada ∆T,

cuando la carga o la topología cambia) o la manera de determinar el

camino óptimo (distancia, número de saltos, o tiempo estimado de

transporte).

4.2.1. Principio de optimalidad:

Existe un principio general para determinar la ruta más corta sin hacer uso de la

topología de la red o del tráfico presente en ésta, y es conocido como principio de

optimalidad. Este principio dice si J está en la ruta óptima de I a K, la ruta óptima

de J a K hace parte de la misma ruta. Como consecuencia de este principio se

puede observar que las rutas óptimas desde todas las fuentes a un lugar de

destino dado forman un árbol ramificado cuya raíz es el punto de destino.

Page 30: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

28

4.2.2. Algoritmos de enrutamiento:

En el momento en que ocurre una falla de alguno de los enlaces de la red, el

sistema debe generar nuevos caminos de conexión para evitar desconexiones y

perdidas de información, es por esto que se debe examinar la forma de generar

caminos alternos cada vez que ocurra una contingencia en el sistema; Los

algoritmos de enrutamiento sirven en el proyecto para resolver problemas de

programación lineal, los cuales se hacen presentes en dos aspectos básicos:

• Costos del canal: Al existir una falla o una contingencia en el sistema, uno

de los aspectos que se debe hacer al reenrutar las conexiones caídas es

examinar los canales que permitan restablecer la mayor cantidad de

conexiones del sistema y que a la vez tengan el mínimo impacto económico

para la empresa. Es por esto que este problema de optimización busca los

caminos que generen el costo mínimo, sin importar la cantidad de demanda

restablecida.

• Flujo máximo restablecido: En este caso lo que se busca es maximizar el

flujo en la red, es decir que se busca la mínima perdida de capacidad del

sistema, sin restricciones de tipo económico, por lo que todo el esfuerzo

computacional se concentra en tener pérdidas mínimas a unos costos

tentativamente elevados.

Lo siguiente es examinar más profundamente estas dos posibilidades.

4.2.2.1. Selección de la ruta más corta:

El problema de la ruta más corta se puede resolver utilizando programación lineal

sin embargo, debido a que el método simplex es de complejidad exponencial, se

prefiere utilizar algoritmos que aprovechen la estructura en red que se tiene para

estos problemas.

Page 31: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

29

Una red de telecomunicaciones involucra un conjunto de nodos conectados

mediante enlaces, que transfieren información desde determinados nodos origen a

otros nodos destino. La forma más común para seleccionar la ruta óptima se basa

en la formulación de la ruta más corta. En particular a cada enlace se le asigna un

escalar positivo el cual se puede ver como su longitud o su costo dentro de la red.

Un algoritmo de trayectoria más corta enruta cada lazo a lo largo de la trayectoria

de longitud mínima (ruta más corta) entre los nodos origen y destino. Hay varias

formas posibles de seleccionar la longitud de los enlaces. La forma más simple es

que cada enlace tenga una longitud unitaria, en cuyo caso, la trayectoria más corta

es simplemente una trayectoria con el menor número de enlaces. De una manera

más general, la longitud de un enlace puede depender de su capacidad de

transmisión y su carga de tráfico.

La solución a este problema es encontrar la trayectoria más corta, esperando que

dicha trayectoria contenga pocos enlaces no congestionados; de esta forma los

enlaces menos congestionados son candidatos a pertenecer a la ruta.

Hay algoritmos de enrutamiento especializados que también pueden permitir que

la longitud de cada enlace cambie en el tiempo, dependiendo del nivel de tráfico

de cada enlace. De esta forma un algoritmo de enrutamiento se debe adaptar a

sobrecargas temporales y enrutar paquetes alrededor de nodos congestionados.

• Algoritmo de Dijkstra9:

Este algoritmo encuentra la ruta más corta entre dos nodos, inicial a y final z, de la

siguiente manera:

Los nodos de la red son etiquetados con números. Al principio, todos tienen la

etiqueta 00 excepto el nodo inicial a que tiene la etiqueta 0. Los arcos tienen un

peso positivo Wij que representa la distancia del enlace (i, j). El algoritmo de

9 http://www.guides.sk/suuri/Dijkstra.html

Page 32: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

30

Dijkstra renumera los nodos, de manera que cuando el nodo z tiene una etiqueta

permanente, se ha obtenido la solución final.

El algoritmo mantiene un grupo de nodos cuyos pesos finales en la ruta menor ya

han sido calculados, así como un grupo complementario de nodos en lo que

todavía no ha sido determinado. El algoritmo selecciona repetidamente el nodo

con el mínimo camino estimado entre aquellos nodos en los cuales todavía no se

había determinado el peso. Esto actualiza los pesos estimados de todos los nodos

adyacentes al nodo seleccionado. El nodo es entonces agregado al grupo de

nodos con el peso del camino más corto ya calculado.

Se continúa haciendo esto hasta que todos los nodos y sus caminos más cortos

han sido calculados.

1. es el conjunto de nodos para los cuales la distancia de a ha sido

calculada.

2. es el conjunto de nodos para los cuales la distancia de a no ha

sido calculada.

3. es el estimado actual del peso que existe entre el nodo y el

nodo .

4. es un predecesor de . Es el nodo por el cual se ha

establecido la distancia más corta de a .

Mientras { buscar con el menor

Para todo

Page 33: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

31

Si

El tiempo requerido por el algoritmo de Dijkstra es O(|V|2).

4.2.2.2. Algoritmo para encontrar los cortes mínimos (Flujo máximo):

En este caso se utilizará el algoritmo de Ford-Fulkerson, un algoritmo simplex que

al ser aplicado a la programación lineal para resolver el problema de flujo máximo

en la red también encontrará el flujo optimo de la misma, esto ocurre de la

siguiente manera:

Se arranca por un flujo vacío que progresivamente se irá mejorando, también se

tiene unas capacidades Cu,v. Se puede buscar un camino entre dos puntos S y T

y mover el flujo a lo largo de esta ruta de valor total igual a la mínima capacidad de

un extremo de la ruta. Esta es la primera iteración.

La capacidad encontrada C va a ser tomada como la capacidad mínima a lo largo

de la ruta.

Para cada extremo de la ruta hay que restarle a Cu,v el valor de C, aumentar el

lazo Lu,v el valor de C y incrementar Cv,u el valor de C (si el extremo (v,u) no

existe en el grafo hay que crearlo).

Luego deben borrarse las puntas con capacidad cero y volver al paso en que se

busca una ruta de S a T y repetir hasta llegar a la solución optima.

Page 34: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

32

4.2.2.3. Selección del algoritmo: Para el enfoque que tiene el proyecto y los conocimientos básicos de una red se

concluyó que es mejor centrar esfuerzos en maximizar el flujo de datos por la red y

utilizar el Algoritmo de Ford-Fulkerson ya que es un algoritmo sencillo que cumple

con las necesidades del proyecto y ya ha sido trabajado en cursos anteriores. La

razón por la cual se descarta el enfoque hacia los costos del enlace es que es muy

difícil obtener costos reales para simular y las pérdidas monetarias por datos

(demandas, multas, abogados, perdida de clientes, etc.) podrían superar

fácilmente los ahorros en los costos de los enlaces.

Lo ideal sería lograr un equilibrio entre los costos y las perdidas pero para esto

se requiere tener un mayor conocimiento del sistema y por esto mismo el uso de

esta herramienta exigiría un conocimiento muy completo de la red a la persona

que lo quiera usar, restringiendo así al usuario.

4.3. Indicadores: Para obtener los resultados del análisis se utiliza el modelo de confiabilidad de

esfuerzo-resistencia para poder generar la probabilidad de falla probabilística y

determinística. Como la función de distribución es discreta, en lugar de efectuar

una integral se realiza una sumatoria.

Figura 5. Modelo Esfuerzo-Resistencia y Probabilidad de Falla10

10 Tomado de Presentación curso de Confiabilidad. P.hD. Alvaro Torres M.

Page 35: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

33

5. SIMULACION 5.1. MACROALGORITMO: El software de simulación trabaja siguiendo el siguiente macro algoritmo:

Almacenamiento de la información de entrada dada por el usuario.

Lectura de datos del archivo de simulaciones en Excel para MonteCarlo

Generación una tabla en Excel para la simulación en el tiempo de los casos

Aplicación de la función Ford-Fulkerson para encontrar la capacidad

máxima en cada uno de los casos.

Generación de los datos de salida (las probabilidades y parámetros de

confiabilidad).

5.2. MÉTODO DE MONTECARLO: Se decidió para este proyecto implementar el método de MonteCarlo secuencial

usando el método del próximo evento, por medio de la herramienta computacional

Excel de la siguiente manera:

Se genera una tabla con tasas de falla (λ) y de reparación (µ) para cada

uno de los nodos del grafo.

Se utiliza otra tabla con todos los elementos de la red (nodos) y se genera

N par de números aleatorios (dependiendo del tiempo de simulación) por

cada tiempo de vida m y de reparación r. Estos van a representar las

probabilidades de falla y de reparación para cada elemento.

Una tercera tabla calcula los tiempos de falla y de reparación para cada uno

de los elementos, mediante el uso de las siguientes ecuaciones:

M= -Ln(Aleatorio1)/(λ)

R= -Ln( Aleatorio2)/(µ)

Page 36: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

34

Los tiempos de falla se pasan nuevamente al programa principal en Visual

Basic y mediante una función, se discretizan los tiempos y se obtiene la

secuencia de fallas y reparaciones para cada uno de los enlaces de la red. 5.3. ALGORITMO DE FORD-FULKERSON: El programa que corre el algoritmo de Ford-Fulkerson está implementado en C++

ya que por tratarse de un algoritmo con alta complejidad matemática es difícil de

implementar directamente desde Visual Basic, por esto se invocará desde el

programa principal como una subrutina. El programa se presenta a continuación:

#include <stdio.h> #define WHITE 0 #define GRAY 1 #define BLACK 2 #define MAX_NODES 100 #define oo 1000 int n; // Numero de nodos int e; // Numero de enlaces int capacity[MAX_NODES][MAX_NODES]; // Matriz de capacidad int flow[MAX_NODES][MAX_NODES]; // Matriz de flujos int color[MAX_NODES]; // características de los nodos int pred[MAX_NODES]; // vector para almacenar los caminos de aumento int min1(int x, int y) { return x<y ? x : y; // Retorna el mínimo entre x y y } int head,tail; int q[MAX_NODES+2]; void enqueue (int x) { q[tail] = x; tail++; color[x] = GRAY; } int dequeue () { int x = q[head];

Page 37: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

35

head++; color[x] = BLACK; return x; } int bfs (int start, int target) { int u,v; for (u=0; u<n; u++) { color[u] = WHITE; } head = tail = 0; enqueue(start); pred[start] = -1; while (head!=tail) { u = dequeue(); // Busca todos los nodos blanco adyacentes v. Si la capacidad // de u a v en la red residual es positiva, pone en cola v. for (v=0; v<n; v++) { if (color[v]==WHITE && capacity[u][v]-flow[u][v]>0) { enqueue(v); pred[v] = u; } } } // Si el color del nodo objetivo es negro ahora, // esto significa que fue alcanzado return color[target]==BLACK; } int max_flow (int source, int sink) { int i,j,u; // Inicializa el flujo int max_flow = 0; for (i=0; i<n; i++) { for (j=0; j<n; j++) { flow[i][j] = 0; } } // Mientras exista un camino de aumento, // incrementa el flujo a través de este camino while (bfs(source,sink)) { // Detemina la cantidad por la cual incrementamos el flujo int increment = oo; for (u=n-1; pred[u]>=0; u=pred[u]) { increment = min1(increment,capacity[pred[u]][u]-flow[pred[u]][u]);

Page 38: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

36

} // Incrementa el flujo. for (u=n-1; pred[u]>=0; u=pred[u]) { flow[pred[u]][u] += increment; flow[u][pred[u]] -= increment; } max_flow += increment; } // no hay mas caminos de aumento, devuelve el flujo máximo return max_flow; } void read_input_file() { int a,b,c,i,j; FILE* input = fopen("\\mf.in","r"); // lee el numero de nodos y enlaces fscanf(input,"%d %d",&n,&e); // inicializa la matriz de capacidades for (i=0; i<n; i++) { for (j=0; j<n; j++) { capacity[i][j] = 0; } } // lee las capacidades de los enlaces for (i=0; i<e; i++) { fscanf(input,"%d %d %d",&a,&b,&c); capacity[a][b] = c; } fclose(input); } int main () { read_input_file(); return max_flow(0,n-1); } 5.4. RESULTADOS: Al concluir la simulación, el programa arroja una serie de resultados útiles para el diseño de redes, mostrando el comportamiento del sistema a través del tiempo simulado, entregando unas gráficas de distribución de probabilidades y una tabla de resultados que se explican a continuación.

• Gráficos: El resultado gráfico de la simulación se divide en dos partes, la parte superior corresponde a una gráfica donde se muestra la función de distribución de probabilidad de la carga disponible del sistema, al hacer clic

Page 39: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

37

sobre cada una de las barras de colores de la gráfica se muestra la capacidad disponible del sistema y la probabilidad acumulada de ocurrencia de esa carga. Con esta gráfica el ingeniero puede determinar que capacidad es más probable, o que rangos de capacidades son más probables en el sistema, mirando la pendiente de la curva.

La parte inferior de la ventana muestra la función de distribución de probabilidad de la carga en el tiempo. Esta gráfica ilustra el comportamiento del sistema en el dominio del tiempo (los años que dure la simulación).

Figura 6. Graficas del simulador

• Tabla de resultados: En la tabla de resultados se pueden ver los

parámetros básicos de simulación ingresados por el usuario que son el

tiempo de simulación en años el cual va a determinar el tiempo real de

simulación del programa, la capacidad requerida es un parámetro para

definir la distribución Gaussiana y la desviación estándar también, se

utilizan para generar el modelo de demanda del sistema.

Page 40: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

38

Las medidas que arroja el programa como resultados numéricos son la

confiabilidad y la probabilidad de falla para el caso determinístico.

El valor de la confiabilidad se obtiene empleando la probabilidad de falla del

sistema en el caso estocástico como 1-P(falla), esto se logra empleando el

principio del modelo esfuerzo-resistencia. Para hallar este valor, la tasa de

reparación se tomó variable en el tiempo (es decir que se pueden demorar las

reparaciones más en unos eventos que en otros) y por tanto no se puede

generalizar el problema y se hace necesario efectuar estas simulaciones para

encontrar el valor de la confiabilidad. Al aumentar el tiempo de simulación el

esfuerzo computacional sube considerablemente pero el valor obtenido de

confiabilidad es más exacto.

La probabilidad de falla determinística se encuentra contando el número de

casos para los cuales la capacidad requerida es mayor que la capacidad

disponible y se divide por el número total de casos simulados. Como la

demanda del sistema no es constante entonces es mejor tomar un valor

estocástico de la capacidad requerida pero para fines de simplificar el

problema se puede hacer uso de un valor constante. El simulador puede

utilizar cualquiera de las dos opciones, debido a que al conocer la probabilidad

de falla del caso determinístico se puede calcular también la confiabilidad por

este método.

Figura 7. Tabla de resultados del simulador

Page 41: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

39

5.5. EJEMPLOS: A continuación se presentan un par de ejemplos para mostrar el funcionamiento del programa. 5.5.1. Ejemplo 1:

Figura 8. Ejemplo 1

Cada enlace está caracterizado por: Capacidad, tasa de reparación, tasa de falla

(C, µ,λ). La implementación del grafo en el programa resulta así:

Figura 9. Grafo esquemático del simulador

s

b

t

a

10,1,0.1

7,1,0.2

5,1,0.3 6,1,0.1

3,1,0.3

5,1,0.1

Page 42: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

40

Después de correr el programa, la simulación arrojó los siguientes resultados:

Figura 10. Resultados de la simulación

Esto quiere decir que se simularon 50 años, la capacidad requerida por el sistema

era de 3 con una desviación estándar de 2, el sistema arrojó una confiabilidad del

sistema de 54.47% respecto a la capacidad requerida y la probabilidad de falla

determinística es del 8% por lo que se puede decir que el sistema no es muy

confiable para cumplir con la capacidad requerida pero tampoco sus enlaces son

susceptibles a fallas.

5.5.2. Ejemplo 2:

Figura 11. Ejemplo 2

s

c d

t

a b

16

13

10 4

12

14

9 7

20

4

Page 43: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

41

En este caso las tasas de falla son 0.1 y las de reparación 1 para todos los enlaces de la red.

La implementación del grafo en el programa resulta así:

Figura 12. Grafo esquemático del simulador Después de correr el programa, la simulación arrojó los siguientes resultados:

Figura 13. Resultados de la simulación Esto quiere decir que se simularon 50 años, la capacidad requerida por el sistema

era de 10 con una desviación estándar de 5, el sistema arrojó una confiabilidad del

sistema de 51.87% respecto a la capacidad requerida y la probabilidad de falla

determinística es del 90% por lo que se puede decir que el sistema no es muy

confiable y es muy susceptible a fallas.

Page 44: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

42

6. CONCLUSIONES El desarrollo de este proyecto desde su etapa básica de modelamiento permitió

trabajar con una metodología flexible y abierta para poder acondicionar al

programa los diferentes cambios que iban surgiendo a medida que se avanzaba

en el trabajo del mismo, así como se presta actualmente para modificaciones

dependiendo de las necesidades del usuario.

El uso de la herramienta de programación Visual Basic fue de gran importancia

pues fue utilizado como lenguaje base del software de simulación. Además, el

esfuerzo computacional fue complementado con el uso de Excel, ya que para

facilitar la interpretación de los datos al usuario se entregar los resultados

debidamente tabulados en hojas de cálculo para poder analizar paso a paso el

comportamiento del sistema.

La simplificación del modelo permitió que este se pudiera implementar en el

lenguaje de programación sin muchos contratiempos y sin perder la consistencia

del sistema ni la validez del análisis.

La aproximación a otro problema como lo es el tráfico de redes nos ayudó a ver

que el proyecto que escogimos abarca otros temas con los que se puede trabajar

también ampliamente para hacer una herramienta más real y generar un modelo

más completo, que se ajuste a usuarios más avanzados.

La implementación del método de MonteCarlo es un concepto importante para

este tipo de proyecto, pues el uso de este método de simulación permite obtener

un análisis de confiabilidad adecuado, ahorrando esfuerzo computacional.

En el proceso de evaluación de la confiabilidad de redes de telecomunicaciones,

los algoritmos de enrutamiento permiten analizar el comportamiento de la red ante

una falla.

Page 45: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

43

A su vez estos algoritmos son de gran ayuda al evaluar la robustez y desempeño

de la red, proporcionando una medida de la confiabilidad por medio de la

capacidad. Estos algoritmos estudiados unidos con la teoría de confiabilidad

permitieron realizar el análisis de confiabilidad en el proyecto.

Al comparar las diferentes opciones de algoritmos para reenrutar los datos en

caso de presentarse fallas en algún enlace, establecimos dos enfoque para

resolver nuestro proyecto, la minimización de costos post falla sin importar las

perdidas de información de la red y la maximización del flujo de datos por la red

sin importar los costos nuevos de transmisión. Sin dejar totalmente de lado la

optimización para minimizar costos de enrutamiento, vimos que en nuestro caso

era más importante el problema de maximizar el flujo por la red en caso de una

contingencia para evitar perdidas de información, posibles multas por negligencia

del servicio, descontento de los clientes por las fallas en el servicio de

comunicaciones, etc. La idea a futuro es buscar un equilibro entre los costos del

canal y la capacidad máxima de transmisión para lograr beneficios equitativos

tanto para usuarios como para las empresas de telecomunicaciones, aunque para

esto pensamos que se deben conocer mejor las condiciones de mercado y

efectuar un análisis económico para mirar la viabilidad de abarcar este problema.

Con el desarrollo de este software de simulación, llegamos a lograr una

herramienta sencilla y práctica, que puede ser utilizada por estudiantes

interesados temas de confiabilidad, comunicaciones y algoritmos de optimización y

de grafos. Así mismo profesionales e Ingenieros encontrarán en el programa una

herramienta que facilitará su trabajo para el diseño de redes al brindarles un

análisis de confiabilidad completo, además de indicadores útiles para usar en

diferentes diseños y modelos.

Page 46: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

44

7. TRABAJO FUTURO

La idea a futuro es buscar un equilibro entre los costos y la capacidad

máxima de transmisión para lograr beneficios equitativos tanto para

usuarios como para las empresas de telecomunicaciones. Es necesario

analizar la viabilidad de incluir costos en los análisis.

Es importante agregar la opción al programa de señalar el conjunto de

nodos para los cuales se desea evaluar la confiabilidad, con eso no se

restringe el análisis a los nodos fuente y sumidero, sino que se puede

evaluar también el comportamiento de caminos intermedios de la red, a fin

de lograr un análisis mas completo.

Es necesario implementar otros algoritmos de enrutamiento alternos que

funcionen bajo nuevos criterios del modelo y que permitan un análisis mas

completo o análisis con diferentes enfoques.

Page 47: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

45

8. BIBLIOGRAFIA

• A. Mauttone. “Método RVR en la simulación de medidas de confiabilidad en redes”, Departamento de Investigación Operativa, Instituto de Computación, Facultad de Ingeniería, Universidad de la República, Montevideo, Uruguay.

• O. Ponce,

http://delta.cs.cinvestav.mx/~mcintosh/oldweb/s1998/oscar/node3.html

• F. Kuhlman, A. Alonso. Información y telecomunicaciones. FCE, México 1997

• M.Romero Schmidtke, http://enciclopedia.us.es/index.php/Teor%EDa_de_grafos

• A. Torres, Presentaciones Curso de confiabilidad.

• A. Tanenbaum, “Computer Networks”, Prentice Hall, 4a edición, 2003.

• M. Anzola, “Modelo para el dimensionamiento de una red de reserva de

transmisión de telecomunicaciones con base en criterios de demanda y confiabilidad”, Universidad de los Andes, Bogotá, Colombia.

• Algoritmos, http://www.guides.sk/suuri/Dijkstra.html

• C. Colbourn, “Reliability issues in telecommunications network planning”,

University of Vermont.

• A. Buchsbaum, M. Mihail. “Monte Carlo and Markov chain techniques for network reliability and sampling. Septiembre 1992.

• C. Lucet, J. Manouvrier. “Exact methods to compute Network Reliability”.

• H. Cancela, “An algorithm to compute the all-terminal reliability measure”.

• H. Cancela, “On the RVR simulation algorithm for network reliability

evaluation”.

• J. Manouvrier, C. Lucet. “Resolving the network reliability problem with a tree decomposition of the graph”.

• A. Roberto, A. Lino. “Grafos 2001”, Escola Superior de Gestão de

Santarém.

Page 48: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

46

9. APENDICE 9.1. MANUAL DEL USUARIO:

MANUAL SIMULADOR DE CONFIABILIDAD DE REDES DE TELECOMUNICACIONES

La idea principal de este programa es proporcionarles a los ingenieros de diseño

de redes de telecomunicaciones parámetros para la toma de decisiones en el

momento de diseñar una red y adicionalmente crear un nuevo parámetro para

medir la robustez y confiabilidad del sistema diseñado.

El simulador de confiabilidad de redes de telecomunicaciones esta conformado por

una barra de opciones en donde se encuentra: “File”, “Add” y “Tools”. Además

encontramos dos íconos que representan “Agregar nodo” y “Agregar enlace”, por

último se encuentra el botón “Simular” que ejecuta el programa una vez se

ingresen los datos. En la figura siguiente se puede observar estas características

del programa.

Page 49: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

47

Al hacer click sobre la opción “File” se despliega un menú que tiene las opciones

de “New” para crear un archivo nuevo y borrar lo que se encuentre en pantalla. La

segunda opción es “Open” que corresponde a abrir un archivo existente, la tercera

corresponde a “Save” para guardar lo que se esta haciendo y por último se

encuentra “Exit” para salir del programa sin guardar lo que se ha hecho.

La segunda opción en la barra del menú es “Add” la cual sirve para agregar

elementos nuevos, en este caso agrega nodos y enlaces. La opción “Add” tiene la

misma respuesta que hacer click sobre las imágenes de la izquierda. En la

siguiente gráfica se muestra el menú y las opciones que se despliegan al hacer

click.

Page 50: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

48

La tercera opción en la barra de menú es “Tools” donde se muestra la opción

“Options” para configurar los datos de la simulación por medio de la siguiente

ventana:

En esta ventana se muestra el tiempo de simulación que esta dado en años, la

capacidad requerida entre un par de nodos y la desviación estándar de la

capacidad requerida. Estas opciones permiten determinar las simulaciones

requeridas para cumplir con estos requisitos, si no se ingresan estos parámetros

no es posible realizar el proceso de simulación. Es preferible emplear números

enteros para los datos de simulación ya que implicaría una mayor complejidad de

los cálculos.

En la parte de resultados se muestra las gráficas de las simulaciones, en particular

las curvas correspondientes a la función de distribución de la capacidad disponible

entre un par de nodos en el tiempo y función acumulada de la probabilidad en

función de las capacidades. La opción del archivo en Excel permite ver la ruta

donde se guardó el archivo de Excel correspondiente a los resultados obtenidos

de la simulación en el tiempo.

Page 51: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

49

En la opción abrir del menú se puede encontrar una ventaja emergente que

permite ubicar el archivo para abrir, se busca y se hace click sobre “open” para

cargarlo, como se muestra a continuación.

Page 52: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

50

Un ejemplo de esto lo podemos ver en la figura siguiente:

Para crear un modelo:

Se puede hacer click sobre el icono con forma de computador o en “Add” “Nodo”

para agregar un nodo nuevo. Esto genera una ventana donde se escoge el tipo de

nodo, ya sea fuente, transición o sumidero. A continuación se muestra la ventana

que se despliega.

Page 53: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

51

Los nodos que se pueden ubicar en la ventana son los siguientes, que

corresponden a fuente, sumidero y transición:

Para eliminar un nodo se presiona la tecla “Suprimir” o “Delete” adicionalmente

elimina los enlaces que estén cercanos. Cada nodo tiene diferentes

configuraciones de entradas y salidas dependiendo del tipo de nodo (fuente,

transición y sumidero).

Un ejemplo se muestra a continuación:

Para este ejemplo se agregan los nodos empezando por el nodo fuente y

terminando por el nodo sumidero, para este ejemplo se ubican primero los nodos y

luego los enlaces.

Page 54: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

52

Luego se agrega un enlace entre el par de nodos agregados y se abre un cuadro

que permite ingresar los valores de capacidad, tasa de falla y tasa de reparación.

Estos parámetros están dados en años y la capacidad en kbytes/segundo.

Como resultado de este procedimiento se obtiene la siguiente gráfica donde se

ubican los enlaces y los nodos.

Page 55: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

53

Para realizar la simulación es necesario ingresar los datos de tiempo de

simulación, capacidad requerida y desviación estándar. Si no se ingresan estos

parámetros se muestra un mensaje de error; de la misma manera, si no se tienen

nodos o enlaces en el sistema el programa no permite simular.

En este caso se agregan los parámetros adecuados y se carga un ejemplo

diseñado con anterioridad y se hace clic en el comando “Simular”. Esta opción

despliega una barra de proceso que se encarga de mostrar la etapa del proceso

en la que se encuentra el programa.

Luego de la simulación aparece un mensaje para guardar los datos de la

simulación en un archivo de Excel en donde aparecen los estados de los enlaces y

las capacidades en cada uno de los estados.

Page 56: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

54

Adicionalmente, como resultado de la simulación se muestran las gráficas de

distribución de la capacidad disponible y una curva de la capacidad acumulada en

el tiempo.

Page 57: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

55

Al hacer clic en el botón aceptar se muestran los resultados de la confiabilidad, la

probabilidad de falla y los parámetros de simulación como el tiempo de simulación,

la capacidad requerida y la desviación estándar.

Page 58: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

56

Modificar datos ingresados

Para cambiar datos de un modelo guardado se hace clic sobre el botón “Datos”

que se encuentra ubicado en el lado izquierdo, en la parte superior del programa.

Al hacer clic se abre una ventana con la información del modelo ingresado.

En la tabla se muestran los enlaces en el orden en que fueron ingresados, se

muestra el valor de lambda, miu, el nodo de inicio, el nodo de llegada y la

capacidad del enlace.

Para modificar estos datos se hace clic sobre el número del enlace que se quiere

modificar. Al hacer clic sobre el número este se resalta y a continuación se

escriben los parámetros a actualizar (Lambda, Miu y Capacidad), si no se ingresa

alguno de estos no se modifica. Luego del ingreso de estos parámetros se hace

clic en actualizar y este actualiza la tabla pero no cambia el archivo por lo cual es

necesario guardar cuando se quieran cambiar estos parámetros para la próxima

vez que se cargue el modelo.

Page 59: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

57

A continuación se muestra un cambio en los valores del enlace 1 en donde se

cambia lambda de 1 a 0.1 y miu de 0.5 a 1

Antes de modificar

Después de modificado

Page 60: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

58

9.2. CODIGO DEL PROGRAMA: FORM1 Dim Var As Integer 'example1.dll Funcion encargada de calcular la capacidad maxima 'por medio del algoritmo de Ford Fulkerson 'Recibe un archivo con los enlaces disponibles 'Devuelve la capacidad máxima Private Declare Function main Lib "example1.dll" () As Integer Dim dato(1 To 10000) As Integer Dim eliminar(1 To 100) As Integer '100 numero de nodos 'Elementos para crear un libro nuevo en Excel Option Explicit ' Para excel Dim wkbObj As Workbook ' Para excel Sub Imagen() 'Funcion que ubica la imagen en la posicion donde se hizo click 'Dependiendo del tipo de nodo puede tener una entrada (Inp) o no 'tener entradas, lo mismo para las salidas (Out) 'Entradas If Inp = 1 Then 'Nodo Sumidero o Transicion Load Picture3(cont) 'Carga la imagen de la entrada Picture3(cont).Top = Y1 'Ubica la imagen en la posicion especifica Picture3(cont).Left = X1 - Picture2(0).Width / 2 - Picture3(0).Width Picture3(cont).Visible = True 'Muestra la imagen End If If Inp = 0 Then 'Nodo Fuente Load Picture3(cont) Picture3(cont).Top = Y1 Picture3(cont).Left = X1 - Picture2(0).Width / 2 - Picture3(0).Width Picture3(cont).Visible = False 'Oculta la imagen End If 'Salidas If Out = 1 Then 'Nodo Fuente o Transicion Load Picture6(cont) Picture6(cont).Top = Y1 Picture6(cont).Left = X1 + Picture2(0).Width / 2

Page 61: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

59

Picture6(cont).Visible = True End If If Out = 0 Then 'Nodo sumidero Load Picture6(cont) Picture6(cont).Top = Y1 Picture6(cont).Left = X1 + Picture2(0).Width / 2 Picture6(cont).Visible = False End If End Sub Private Sub Exit_Click() 'Comando para cerrar el programa End 'Cierra todas las ventanas visibles End Sub Private Sub Form_Load() 'Inicio del programa 'Ubicacion de la barra de simulacion ProgressBar1.Left = Form1.Left ProgressBar1.Top = Form1.Height 'Inicializacion de las variables linea(0).cont = 0 'Contador de lineas nsim = 0 'tiempo de simulacion capreq = 0 'Capacidad requerida desv = 0 'desviacion u = 0 'Enlaces cont = 0 'Nodos estado = 0 'Para agregar nodos Var = 0 'Variable para agrafar lineas c = 1 'Contador de las capacidas en la simulacion 'Oculta los nodos Picture1(0).Visible = False 'Imagen exterior del nodo Picture2(0).Visible = False 'Imagen interior del nodo '(contiene entradas y salidas) End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) If estado = 1 Then 'Si se agrega un nuevo nodo

Page 62: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

60

cont = cont + 1 'Aumenta el contador de nodos matriz(cont).Xn = Int(x - Picture2(0).Width / 2) 'Guarda la posicion matriz(cont).Yn = Int(y - Picture2(0).Height / 2) matriz(cont).Nodo = cont 'Guarda el contador como el numero del nodo X1 = x Y1 = y Load Picture2(cont) 'Carga la imagen y la ubica en la posicion Picture2(cont).Top = Y1 - Picture2(0).Height / 2 'Y Picture2(cont).Left = X1 - Picture2(0).Width / 2 'X Picture2(cont).Visible = True 'Picture9.Top = Y1 'Picture9.Left = X1 'Picture9.Visible = True Form1.Imagen 'Busca la funcion imagen para las entradas 'y salidas End If estado = 0 'Vuelve el estado de agregar nodo a cero End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) Form1.Caption = x & " " & y 'Muestra la posicion cuando se mueve el 'Mouse End Sub Private Sub Image1_Click(Index As Integer) 'Eliminar enlace indx = Index Dialog1.Visible = True 'Opcion para eliminar enlace End Sub Public Sub Image2_Click(Index As Integer) 'Eliminar enlace indx = Index Dialog1.Visible = True 'Opcion para eliminar enlace End Sub Private Sub Image3_Click(Index As Integer) 'Eliminar enlace indx = Index Dialog1.Visible = True 'Opcion para eliminar enlace End Sub Private Sub Image4_Click(Index As Integer)

Page 63: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

61

'Eliminar enlace indx = Index Dialog1.Visible = True 'Opcion para eliminar enlace End Sub Private Sub Image5_Click(Index As Integer) 'Eliminar enlace indx = Index Dialog1.Visible = True 'Opcion para eliminar enlace End Sub Private Sub Line_Click() Var = 1 'Cambia el estado para agregar un enlace End Sub Private Sub New_Click() 'Funcion encargada de eliminar los nodos y enlaces creados 'y dejar la ventana de trabajo en blanco Dim i As Integer 'Crea un contador i For i = 1 To cont Unload Picture2(i) 'Elimina la imagen del nodo Unload Picture3(i) 'Elimina la imagen de la entrada Unload Picture6(i) 'Elimina la imagen de la salida Next cont = 0 'Vuelve el contador de nodos a cero For i = 1 To u Unload Image1(i) 'Elimina las componentes horizontal Unload Image2(i) 'y vertical de las líneas que conforman Unload Image3(i) 'el enlace. Unload Image4(i) Unload Image5(i) Next u = 0 'Vuelve el contador de enlaces a cero End Sub Private Sub Nodo_Click() frmOptions2.Enabled = True 'Abre el menu de opciones de tipo de nodo frmOptions2.Visible = True

Page 64: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

62

estado = 1 'Estado en 1 corresponde a agregar un nodo 'Estado en 0 corresponde a no agragar nodo End Sub Private Sub Open_Click() 'Funcion encargada de abrir un caso ya creado New_Click 'Elimina todos los nodos y enlaces en pantalla estado = 0 'Nodo deja agragar nodos hasta terminar de cargar CommonDialog1.Filter = "Archivos de texto" 'Tipo de archivo CommonDialog1.ShowOpen 'Muestra el cuadro de diálogo Abrir If CommonDialog1.FileName <> "" Then Form1.MousePointer = 11 'muestra el reloj de arena Dim matriz2(0 To 10) As nodos 'Crea una matriz de tipo nodo temporal 'para leer los datos del archivo Open CommonDialog1.FileName For Random As #1 Len = Len(matriz2(0)) 'Carga el archivo seleccionado como #1 Dim i As Integer For i = 0 To 10 Get #1, i + 1, matriz2(i) 'Guarda lo que hay en el archivo 'en la matriz temporal Next Close #1 'Cierra el archivo Dim matriz3(0 To 10) As unir 'Crea una matriz temporal de los enlaces 'de tipo "unir" Open CommonDialog1.FileName & "2" For Random As #1 Len = Len(matriz3(0)) 'Carga el archivo seleccionado como #2 For i = 0 To 10 Get #1, i + 1, matriz3(i) 'Guarda lo que hay en el archivo Next Close #1 Form1.MousePointer = 0 'Cambia el puntero del mouse a ocupado CommonDialog1.FileName = "" 'borra el nombre del archivo End If For i = 1 To matriz2(0).cont

Page 65: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

63

Load Picture2(i) Picture2(i).Top = matriz2(i).Yn Picture2(i).Left = matriz2(i).Xn Picture2(i).Visible = True Next For i = 0 To matriz3(0).cont linea(i) = matriz3(i) 'Guarda los datos del archivo temporal 'al archivo de datos de los enlaces Next ''''''''''''''''''''Cargar Imagenes - Enlaces''''''''''''''''''''' For u = 1 To matriz3(0).cont If linea(u).X1 < linea(u).X2 And linea(u).Y1 > linea(u).Y2 Then Load Image2(u) Image2(u).Top = linea(u).Y1 + Picture2(0).Height / 2 Image2(u).Left = linea(u).X1 + Picture2(0).Width Image2(u).Width = Abs(linea(u).X1 + Picture2(0).Width - linea(u).X2) / 2 + Image1(0).Width Image2(u).Visible = True Load Image4(u) Image4(u).Top = linea(u).Y2 + Picture2(0).Height / 2 Image4(u).Left = linea(u).X2 - Abs(linea(u).X1 + Picture2(0).Width - linea(u).X2) / 2 Image4(u).Width = Abs(linea(u).X1 + Picture2(0).Width - linea(u).X2) / 2 Image4(u).Visible = True Load Image5(u) Load Image1(u) Image1(u).Top = linea(u).Y2 + Picture2(0).Height / 2 Image1(u).Left = (linea(u).X1 + Picture2(0).Width + linea(u).X2) / 2 Image1(u).Height = Abs(linea(u).Y1 - linea(u).Y2) Image1(u).Visible = True Load Image3(u) Var = 0 End If If linea(u).X1 < linea(u).X2 And linea(u).Y1 < linea(u).Y2 Then Load Image2(u) Image2(u).Top = linea(u).Y1 + Picture2(0).Height / 2 Image2(u).Left = linea(u).X1 + Picture2(0).Width Image2(u).Width = Abs(linea(u).X1 + Picture2(0).Width - linea(u).X2) / 2 + Image1(0).Width Image2(u).Visible = True Load Image4(u) Image4(u).Top = linea(u).Y2 + Picture2(0).Height / 2

Page 66: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

64

Image4(u).Left = linea(u).X2 - Abs(linea(u).X1 + Picture2(0).Width - linea(u).X2) / 2 Image4(u).Width = Abs(linea(u).X1 + Picture2(0).Width - linea(u).X2) / 2 Image4(u).Visible = True Load Image5(u) Load Image1(u) Image1(u).Top = linea(u).Y1 + Picture2(0).Height / 2 Image1(u).Left = (linea(u).X1 + Picture2(0).Width + linea(u).X2) / 2 Image1(u).Height = Abs(linea(u).Y1 - linea(u).Y2) Image1(u).Visible = True Load Image3(u) Var = 0 End If If linea(u).X1 > linea(u).X2 And linea(u).Y1 < linea(u).Y2 Then Load Image2(u) Image2(u).Top = linea(u).Y1 + Picture2(0).Height / 2 Image2(u).Left = linea(u).X1 + Picture2(0).Width Image2(u).Width = Picture2(0).Width / 2 Image2(u).Visible = True Load Image4(u) Image4(u).Top = linea(u).Y2 + Picture2(0).Height / 2 Image4(u).Left = linea(u).X2 - Picture2(0).Width / 2 Image4(u).Width = Picture2(0).Width / 2 Image4(u).Visible = True Load Image5(u) Image5(u).Top = linea(u).Y2 + 3 / 2 * Picture2(0).Height Image5(u).Left = linea(u).X2 - Picture2(0).Width / 2 Image5(u).Width = Abs(linea(u).X1 - linea(u).X2 + 2 * Picture2(0).Width) Image5(u).Visible = True Load Image1(u) Image1(u).Top = linea(u).Y1 + Picture2(0).Height / 2 Image1(u).Left = linea(u).X1 + Picture2(0).Width + Picture2(0).Width / 2 Image1(u).Height = Abs(linea(u).Y1 - linea(u).Y2) + Picture2(0).Height Image1(u).Visible = True Load Image3(u) Image3(u).Top = linea(u).Y2 + Picture2(0).Height / 2 Image3(u).Left = linea(u).X2 - Picture2(0).Width / 2 Image3(u).Height = Picture2(0).Height Image3(u).Visible = True Var = 0 End If If linea(u).X1 > linea(u).X2 And linea(u).Y1 > linea(u).Y2 Then Load Image2(u) Image2(u).Top = linea(u).Y1 + Picture2(0).Height / 2 Image2(u).Left = linea(u).X1 + Picture2(0).Width

Page 67: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

65

Image2(u).Width = Picture2(0).Width / 2 Image2(u).Visible = True Load Image4(u) Image4(u).Top = linea(u).Y2 + Picture2(0).Height / 2 Image4(u).Left = linea(u).X2 - Picture2(0).Width / 2 Image4(u).Width = Picture2(0).Width / 2 Image4(u).Visible = True Load Image5(u) Image5(u).Top = (linea(u).Y1 + linea(u).Y2 + Picture2(0).Height) / 2 Image5(u).Left = linea(u).X2 - Picture2(0).Width / 2 Image5(u).Width = Abs(linea(u).X1 - linea(u).X2 + 2 * Picture2(0).Width) Image5(u).Visible = True Load Image1(u) Image1(u).Top = (linea(u).Y1 + linea(u).Y2 + Picture2(0).Height) / 2 Image1(u).Left = linea(u).X1 + Picture2(0).Width + Picture2(0).Width / 2 Image1(u).Height = linea(u).Y1 + Picture2(0).Height / 2 - (linea(u).Y1 + linea(u).Y2 + Picture2(0).Height) / 2 Image1(u).Visible = True Load Image3(u) Image3(u).Top = linea(u).Y2 + Picture2(0).Height / 2 Image3(u).Left = linea(u).X2 - Picture2(0).Width / 2 Image3(u).Height = linea(u).Y1 + Picture2(0).Height / 2 - (linea(u).Y1 + linea(u).Y2 + Picture2(0).Height) / 2 Image3(u).Visible = True Var = 0 End If Next u = matriz3(0).cont 'Carga el contador de los enlaces For i = 0 To matriz2(0).cont matriz(i) = matriz2(i) 'Guarda la informacion de los nodos Next ''''''''''''''''''''Carga nodos''''''''''''''''''''''''' For i = 1 To matriz2(0).cont Y1 = matriz2(i).Yn + Picture2(0).Width / 2 'Carga la posicion del X1 = matriz2(i).Xn + Picture2(0).Height / 2 'nodo Inp = matriz2(i).Input 'Guarda la informacion de las entradas Out = matriz2(i).Output 'Guarda la informacion de las salidas cont = i 'Carga el contador de los nodos If Inp = 1 Then Load Picture3(cont) Picture3(cont).Top = Y1 Picture3(cont).Left = X1 - Picture2(0).Width / 2 - Picture3(0).Width

Page 68: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

66

Picture3(cont).Visible = True End If If Inp = 0 Then Load Picture3(cont) Picture3(cont).Top = Y1 Picture3(cont).Left = X1 - Picture2(0).Width / 2 - Picture3(0).Width Picture3(cont).Visible = False End If If Out = 1 Then Load Picture6(cont) Picture6(cont).Top = Y1 Picture6(cont).Left = X1 + Picture2(0).Width / 2 Picture6(cont).Visible = True End If If Out = 0 Then Load Picture6(cont) Picture6(cont).Top = Y1 Picture6(cont).Left = X1 + Picture2(0).Width / 2 Picture6(cont).Visible = False End If Next ''''''''''''''''''''''''''''''''''''''''''''''' End Sub Private Sub Options_Click() 'Carga el cuadro de opciones frmOptions1.Visible = True 'Tiempo de simulacion, Capacidad requerida y Desviacion End Sub Private Sub Picture10_Click() 'Agregar nodo frmOptions2.Enabled = True frmOptions2.Visible = True estado = 1 End Sub

Page 69: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

67

Private Sub Picture11_Click() 'Agregar enlace Line_Click End Sub Private Sub Picture2_Click(Index As Integer) If Var = 2 Then 'Var = 0 indica el nodo final para unir u = u + 1 'Aumento del contador de lineas linea(u).X2 = Picture2(Index).Left linea(u).Y2 = Picture2(Index).Top linea(u).L = u linea(0).cont = linea(0).cont + 1 'En esta parte compara las posiciones de los elementos a unir 'para saber como unir los elementos. If linea(u).X1 < linea(u).X2 And linea(u).Y1 > linea(u).Y2 Then Load Image2(u) Image2(u).Top = linea(u).Y1 + Picture2(0).Height / 2 Image2(u).Left = linea(u).X1 + Picture2(0).Width Image2(u).Width = Abs(linea(u).X1 + Picture2(0).Width - linea(u).X2) / 2 + Image1(0).Width Image2(u).Visible = True Load Image4(u) Image4(u).Top = linea(u).Y2 + Picture2(0).Height / 2 Image4(u).Left = linea(u).X2 - Abs(linea(u).X1 + Picture2(0).Width - linea(u).X2) / 2 Image4(u).Width = Abs(linea(u).X1 + Picture2(0).Width - linea(u).X2) / 2 Image4(u).Visible = True Load Image5(u) Load Image1(u) Image1(u).Top = linea(u).Y2 + Picture2(0).Height / 2 Image1(u).Left = (linea(u).X1 + Picture2(0).Width + linea(u).X2) / 2 Image1(u).Height = Abs(linea(u).Y1 - linea(u).Y2) Image1(u).Visible = True Load Image3(u) Var = 0 End If If linea(u).X1 < linea(u).X2 And linea(u).Y1 < linea(u).Y2 Then Load Image2(u) Image2(u).Top = linea(u).Y1 + Picture2(0).Height / 2

Page 70: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

68

Image2(u).Left = linea(u).X1 + Picture2(0).Width Image2(u).Width = Abs(linea(u).X1 + Picture2(0).Width - linea(u).X2) / 2 + Image1(0).Width Image2(u).Visible = True Load Image4(u) Image4(u).Top = linea(u).Y2 + Picture2(0).Height / 2 Image4(u).Left = linea(u).X2 - Abs(linea(u).X1 + Picture2(0).Width - linea(u).X2) / 2 Image4(u).Width = Abs(linea(u).X1 + Picture2(0).Width - linea(u).X2) / 2 Image4(u).Visible = True Load Image5(u) Load Image1(u) Image1(u).Top = linea(u).Y1 + Picture2(0).Height / 2 Image1(u).Left = (linea(u).X1 + Picture2(0).Width + linea(u).X2) / 2 Image1(u).Height = Abs(linea(u).Y1 - linea(u).Y2) Image1(u).Visible = True Load Image3(u) Var = 0 End If If linea(u).X1 > linea(u).X2 And linea(u).Y1 < linea(u).Y2 Then Load Image2(u) Image2(u).Top = linea(u).Y1 + Picture2(0).Height / 2 Image2(u).Left = linea(u).X1 + Picture2(0).Width Image2(u).Width = Picture2(0).Width / 2 Image2(u).Visible = True Load Image4(u) Image4(u).Top = linea(u).Y2 + Picture2(0).Height / 2 Image4(u).Left = linea(u).X2 - Picture2(0).Width / 2 Image4(u).Width = Picture2(0).Width / 2 Image4(u).Visible = True Load Image5(u) Image5(u).Top = linea(u).Y2 + 3 / 2 * Picture2(0).Height Image5(u).Left = linea(u).X2 - Picture2(0).Width / 2 Image5(u).Width = Abs(linea(u).X1 - linea(u).X2 + 2 * Picture2(0).Width) Image5(u).Visible = True Load Image1(u) Image1(u).Top = linea(u).Y1 + Picture2(0).Height / 2 Image1(u).Left = linea(u).X1 + Picture2(0).Width + Picture2(0).Width / 2 Image1(u).Height = Abs(linea(u).Y1 - linea(u).Y2) + Picture2(0).Height Image1(u).Visible = True Load Image3(u) Image3(u).Top = linea(u).Y2 + Picture2(0).Height / 2 Image3(u).Left = linea(u).X2 - Picture2(0).Width / 2 Image3(u).Height = Picture2(0).Height Image3(u).Visible = True Var = 0

Page 71: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

69

End If If linea(u).X1 > linea(u).X2 And linea(u).Y1 > linea(u).Y2 Then Load Image2(u) Image2(u).Top = linea(u).Y1 + Picture2(0).Height / 2 Image2(u).Left = linea(u).X1 + Picture2(0).Width Image2(u).Width = Picture2(0).Width / 2 Image2(u).Visible = True Load Image4(u) Image4(u).Top = linea(u).Y2 + Picture2(0).Height / 2 Image4(u).Left = linea(u).X2 - Picture2(0).Width / 2 Image4(u).Width = Picture2(0).Width / 2 Image4(u).Visible = True Load Image5(u) Image5(u).Top = (linea(u).Y1 + linea(u).Y2 + Picture2(0).Height) / 2 Image5(u).Left = linea(u).X2 - Picture2(0).Width / 2 Image5(u).Width = Abs(linea(u).X1 - linea(u).X2 + 2 * Picture2(0).Width) Image5(u).Visible = True Load Image1(u) Image1(u).Top = (linea(u).Y1 + linea(u).Y2 + Picture2(0).Height) / 2 Image1(u).Left = linea(u).X1 + Picture2(0).Width + Picture2(0).Width / 2 Image1(u).Height = linea(u).Y1 + Picture2(0).Height / 2 - (linea(u).Y1 + linea(u).Y2 + Picture2(0).Height) / 2 Image1(u).Visible = True Load Image3(u) Image3(u).Top = linea(u).Y2 + Picture2(0).Height / 2 Image3(u).Left = linea(u).X2 - Picture2(0).Width / 2 Image3(u).Height = linea(u).Y1 + Picture2(0).Height / 2 - (linea(u).Y1 + linea(u).Y2 + Picture2(0).Height) / 2 Image3(u).Visible = True Var = 0 End If ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Var = 0 'Vuelve a cero la variable que implica no union linea(u).nodoj = Index 'Guarda el numero del nodo en la union frmOptions.Visible = True 'Carga el menu para las caracteristicas 'del enlace End If If Var = 1 Then 'Var = 1 indica el nodo inicial para unir linea(u + 1).X1 = Picture2(Index).Left 'Guarda la posicion linea(u + 1).Y1 = Picture2(Index).Top Var = Var + 1 linea(u + 1).nodoi = Index 'Guarda el numero del nodo en la union End If End Sub

Page 72: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

70

Private Sub Picture2_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer) 'Esta funcion se encarga de eliminar los nodos cuando se presiona la 'tecla suprimir Dim i, k, m, cuenta As Integer If KeyCode = vbKeyDelete Then 'Compara si la tecla presionada es 'Suprimir Unload Picture2(Index) 'Elimina las imagenes del nodo, Unload Picture3(Index) 'de las entradas y de las salidas Unload Picture6(Index) For i = 1 To matriz(0).cont If Index = i Then 'Guarda los datos en una matriz ntemp(i) = matriz(i) 'temporal sin contar el nodo eliminado End If Next matriz(0).cont = matriz(0).cont - 1 'Reduce en 1 la cantidad de nodos For i = 1 To matriz(0).cont matriz(i) = ntemp(i) 'Recupera la informacion a la matriz Next cont = cont - 1 'Reduce la cantidad de nodos For i = 1 To cont 'Elimina las lineas que estan unidas al 'nodo a eliminar If linea(i).nodoi = Index Or linea(i).nodoj = Index Then Unload Image1(linea(i).L) Unload Image2(linea(i).L) Unload Image3(linea(i).L) Unload Image4(linea(i).L) Unload Image5(linea(i).L) k = linea(0).cont 'Guarda el contador cuenta = 1 For m = 1 To k 'Guarda los datos en un temporal If m <> i Then ltemp(cuenta) = linea(m) cuenta = cuenta + 1 End If Next For m = 1 To k linea(m) = ltemp(m) 'Recupera la informacion

Page 73: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

71

ltemp(m).nodoi = 0 ltemp(m).nodoj = 0 Next k = k - 1 linea(0).cont = k 'Reduce el contador de las i = 1 'lineas tantas como sean eliminadas End If Next End If u = linea(0).cont 'Carga el contador de lineas End Sub Private Sub Save_Click() 'Funcion encargada de guardar la informacion de los nodos, lineas y sus 'respectivas caracteristicas (capacidades) matriz(0).cont = cont 'Guarda el contador de nodos en la matriz '''''''''''Crear un archivo'''''''''''''''''''''''''''' 'Funcion para crear un archivo y guardar la informacion de los nodos 'y enlces para el programa de Ford Fulkerson Dim fso, txtfile Dim i As Integer Set fso = CreateObject("Scripting.FileSystemObject") Set txtfile = fso.CreateTextFile("c:\mf.in", True) txtfile.WriteLine (cont & " " & u) For i = 1 To u txtfile.WriteLine (linea(i).nodoi - 1 & " " & linea(i).nodoj - 1 & " " & linea(i).cap) Next txtfile.Close ''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''Funcion para guardar los datos de las lineas y nodos'''''''''''' CommonDialog1.Filter = "Archivos de texto" CommonDialog1.ShowSave 'muestra el cuadro de diálogo Guardar If CommonDialog1.FileName <> "" Then Open CommonDialog1.FileName For Random As #1 Len = Len(matriz(0)) For i = 0 To cont Put #1, i + 1, matriz(i) 'Guarda la informacion de los nodos Next Close #1

Page 74: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

72

Open CommonDialog1.FileName & "2" For Random As #1 Len = Len(linea(0)) For i = 0 To u Put #1, i + 1, linea(i) 'Guarda la informacion de las lineas Next Close #1 'Cierra el archivo End If ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' End Sub Private Sub Simular_Click() 'Comando para simular If capreq = 0 Or desv = 0 Or nsim = 0 Then MsgBox "Ingrese a Tools - Options e ingrese los datos de simulacion" Else If u <> 0 Then 'Primero verifica que existan nodos para simular ProgressBar1.Visible = True 'Carga la barra de proceso Form1.MousePointer = 11 'Cambia el puntero del mouse a ocupado falla = 0 'inicia el contador de fallas Dim matrizValores(1 To 5) Dim i, j As Integer 'Se crea un enlace a una tabla de Excel Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets.Add Dim nodo_f(1 To 100) As Integer Set wkbObj = GetObject("C:\tesis.xls") 'Carga los datos de tesis.xls For i = 1 To nsim If i < u + 1 Then 'Escribe la informacion de las capacidades en la tabla de Excel wkbObj.Worksheets(1).Range("D" & (i + 1)).Value = "=" & linea(i).lambda wkbObj.Worksheets(1).Range("E" & (i + 1)).Value = "=" & linea(i).miu End If Next

Page 75: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

73

Dim vec(0 To 200) As Integer Dim kr, r, mayor As Integer mayor = 10000 For i = 1 To 200 vec(i) = 0 Next ProgressBar1.max = u For kr = 1 To u Step 1 ProgressBar1.Value = kr 'Guarda los tiempos de falla y reparacion para un nodo especifico vec(1) = wkbObj.Worksheets(1).Range(Chr(97) & Chr(100 + 2 * kr) & "21").Value vec(2) = vec(1) + wkbObj.Worksheets(1).Range(Chr(97) & Chr(101 + 2 * kr) & "21").Value For r = 3 To 100 Step 1 If r Mod 2 = 0 Then vec(r) = vec(r - 1) + wkbObj.Worksheets(1).Range(Chr(97) & Chr(101 + 2 * kr) & (20 + r / 2)).Value Else vec(r) = vec(r - 1) + wkbObj.Worksheets(1).Range(Chr(97) & Chr(100 + 2 * kr) & (20 + (r + 1) / 2)).Value End If Next r 'Escribe en una tabla nueva los estados de los nodos en el tiempo vec(0) = 0 For i = 1 To 200 Step 1 For j = vec(i - 1) To vec(i) If j = nsim Then i = 200 Else If i Mod 2 = 0 Then xlSheet.Cells(j + 1, kr).Value = 0 Else xlSheet.Cells(j + 1, kr).Value = 1 End If End If If mayor > vec(20) Then mayor = vec(20)

Page 76: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

74

End If Next j Next i Next kr '''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'Esta funcion se encarga de buscar los nodos que se van a eliminar 'y guardar los datos de esos nodos para luego correr la funcion 'de Ford Fulkerson y así obtener la capacidad máxima del sistema 'en cada instante del tiempo Dim contador, k, m As Integer ProgressBar1.max = nsim For i = 1 To nsim ProgressBar1.Value = i For j = 1 To u If xlSheet.Cells(i, j).Value = 0 Then eliminar(j) = 0 Else eliminar(j) = 1 End If Next contador = 1 For k = 1 To u If eliminar(k) = 1 Then ltemp(contador) = linea(k) contador = contador + 1 End If Next Dim fso, txtfile Set fso = CreateObject("Scripting.FileSystemObject") Set txtfile = fso.CreateTextFile("c:\mf.in", True) txtfile.WriteLine (cont & " " & contador - 1) For m = 1 To contador - 1 txtfile.WriteLine (ltemp(m).nodoi - 1 & " " & ltemp(m).nodoj - 1 & " " & ltemp(m).cap) Next txtfile.Close dato(c) = main() '''''''''''''''''''''''''''''''''''''''''''''''''''''''' If dato(c) < capreq Then falla = falla + 1 'Almacena el número de fallas para el 'caso deterministico End If

Page 77: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

75

xlSheet.Cells(c, u + 2) = dato(c) 'Guarda las capacidades 'disponibles en la tabla c = c + 1 Next total = 0 cporc(1, 1) = 0 cporc(1, 2) = 0 For i = 1 To c total = total + dato(i) Next For i = 1 To c cporc(i + 1, 1) = cporc(i, 1) + dato(i) / total cporc(i + 1, 2) = i Next 'Guardar la informacion en la tabla de resultados Set wkbObj = Nothing xlSheet.SaveAs "c:\Resultados.xls" xlBook.Close xlApp.Quit 'Elimina los enlaces con Excel Set xlApp = Nothing Set xlBook = Nothing Set xlSheet = Nothing Dim max, d(1 To 20), mini max = 0 mini = dato(1) 'Procesamiento de los datos de las capacidades 'Se guarda el dato mas grande For i = 1 To UBound(dato) If max < dato(i) Then max = dato(i) End If Next 'Se guarda el dato mas pequeño

Page 78: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

76

For i = 1 To nsim If mini > dato(i) Then mini = dato(i) End If Next Dim escala As Integer escala = 20 'Inicializa los datos a comparar para obtener porcentajes 'de ocurrencia For i = 1 To escala d(i) = 0 Next 'Se crean las divisiones entre el máximo y el mínimo For i = 1 To escala - 1 t(i) = mini + i * (max - mini) / escala Next t(escala) = max 'Se ubica el dato entre el maximo y el minimo 'y se asigna una probabilidad del evento contando 'la ocurrencia For i = 1 To nsim For j = 1 To escala If dato(i) < t(j) Then d(j) = d(j) + 1 'Ubica el dato en un espacio entre el 'máximo y el mínimo (cuenta) End If Next Next Form1.MousePointer = 0 'Vuelve el puntero a el estado normal 'Cálculo de las probabilidades acumulativas de las capacidades Dim f total2 = 0 For f = 1 To escala total2 = total2 + d(f) Next m_DataValues(1) = d(1) / total2 For f = 1 To escala - 1 m_DataValues(f + 1) = d(f) / total2 + m_DataValues(f) Next

Page 79: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

77

'Funcion para encontrar el area del producto de la funcion de densidad 'y la funcion de distribucion de las capacidades dadas. Dim area, exponencial(1 To 20) As Single datog = 0 area = 0 'Calcula el area de la exponencial para normalizar la función For i = 0 To 1000 area = area + (Exp(-(1 / 2) * ((i - capreq) / desv) ^ 2)) / (Sqr(2 * 3.1416) * desv) Next 'Calculo de los valores de la funcion exponencial en el intervalo 'donde la funcion de distribucion es diferente de cero 'Funcion exponencial entre 0(+) y 1(-) For i = 1 To 20 exponencial(i) = (Exp(-(1 / 2) * ((t(i) - capreq) / desv) ^ 2)) / (area * Sqr(2 * 3.1416) * desv) Next 'Calculo del area del producto de la exponencial (densidad) y los datos 'de las capacidades (distribucion) For i = 1 To 20 datog = datog + exponencial(i) * m_DataValues(i) Next 'Adicional, se calcula el area donde la funcion de distribucion es 1 ' y la de densidad toma diferentes valores For i = t(20) To 10000 datog = datog + (Exp(-(1 / 2) * ((i - capreq) / desv) ^ 2)) / (area * Sqr(2 * 3.1416) * desv) Next 'Muestra las gráficas de las simulaciones Dialog3.Visible = True Dialog.Visible = True 'Dialog2.Visible = True 'Borra la barra de progreso (simulando) ProgressBar1.Value = 0 ProgressBar1.Visible = False Else MsgBox "No hay nodos para simular" 'Si u=0 no hay nodos para simular End If End If

Page 80: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

78

End Sub DIALOG Option Explicit Private Sub CancelButton_Click() 'Funcion encargada de graficar la probabilidad acumulada en el tiempo Dim i As Integer MSChart1.ChartData = graf For i = 1 To nsim MSChart1.DataGrid.RowLabel(i, 1) = i Next MSChart1.DataGrid.RowLabel(nsim + 1, 1) = "t(años)" MSChart1.DataGrid.ColumnLabel(1, 1) = "Prob" End Sub Private Sub Form_Load() 'Funcion encargada de graficar la funcion de distribucion 'de probabilidad en funcion de la capacidad 'Se establecen los parametos que determinan los limites, la escala 'y ubicacion de la grafica Pic.ScaleLeft = LBound(m_DataValues) - 1 Pic.ScaleWidth = UBound(m_DataValues) - LBound(m_DataValues) + 1 Pic.ScaleTop = 1 Pic.ScaleHeight = -1 Dim i As Integer 'Datos por graficar en forma de columnas For i = LBound(m_DataValues) To UBound(m_DataValues) Pic.Line (i - 1, 0)-(i, m_DataValues(i)), QBColor(i Mod 16), BF Next i Pic.Visible = True 'Muestra la grafica despues de ingresados los valores Dim vecto(1 To 20) For i = 1 To 20 vecto(i) = i Next c1 = c

Page 81: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

79

ReDim graf(1 To c1, 1 To 1) For i = 1 To c1 graf(i, 1) = cporc(i, 1) 'Datos de la funcion en el tiempo Next c = 1 End Sub Private Sub OKButton_Click() Unload Me 'Cierra la ventana End Sub Private Sub Pic_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) Dim i As Integer i = Int(x) + 1 'Se muestran los valores de cada columna en un cuadro de mensaje MsgBox "Valor: " & i & " = " & m_DataValues(i) & " Cap:" & t(i) End Sub DIALOG1 Option Explicit Private Sub CancelButton_Click() Unload Me 'Cierra la aplicacion End Sub Private Sub OKButton_Click() 'Funcion encargada de eliminar un enlace 'al hacer click sobre la imagen del enlace Dim i, k As Integer Unload Form1.Image1(indx) 'Elimina cada uno de los elementos de Unload Form1.Image2(indx) 'los enlaces Unload Form1.Image3(indx) Unload Form1.Image4(indx) Unload Form1.Image5(indx) u = u - 1 'reduce en 1 los enlaces k = linea(0).cont 'Guarda el contador de las lineas en esta 'variable k For i = 1 To k If indx <> i Then ltemp(i) = linea(i) 'Guarda los datos en una matriz temporal End If Next

Page 82: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

80

k = k - 1 For i = 1 To k linea(i) = ltemp(i) 'vuelve a cargar los datos en la matriz 'de los enlaces Next linea(0).cont = k 'Guarda el contador de los enlaces Unload Me 'Cierra la aplicacion End Sub DIALOG2 Option Explicit Private Sub CancelButton_Click() Unload Me End Sub Private Sub Form_Load() 'Funcion encargada de mostrar la funcion de distribucion de probabilidad Dim i, cuenta, inicio, fin As Integer cuenta = 1 Dim datos_n() As Single ReDim datos_n(1 To 2 * desv, 1 To 1) inicio = capreq - desv fin = CInt(desv) + CInt(capreq) For i = inicio To fin datos_n(cuenta, 1) = (Exp(-(1 / 2) * ((i - capreq) / desv) ^ 2)) / (Sqr(2 * 3.1416) * desv) cuenta = cuenta + 1 Next MSChart1.ChartData = datos_n End Sub Private Sub OKButton_Click() Unload Me 'Cierra la aplicacion End Sub DIALOG3 Option Explicit Private Sub Form_Load() 'funcion encargada de mostrar los resultados finales de la simulacion Label2.Caption = nsim 'Tiempo de simulacion

Page 83: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

81

Label4.Caption = capreq 'Capacidad requerida Label6.Caption = desv 'desviacion estandar Label8.Caption = Abs(1 - datog) * 100 & "%" 'Confiabilidad Label10.Caption = falla / nsim * 100 & "%" 'Probabilidad 'deterministica End Sub Private Sub OKButton_Click() Unload Me 'Cierra la aplicacion End Sub FRMOPTIONS Option Explicit Private Sub cmdCancel_Click() Unload Me 'Cierra la aplicacion End Sub Private Sub cmdOK_Click() linea(u).cap = Text1.Text 'Guarda la informacion 'de la capacidad linea(u).lambda = Text3.Text 'Guarda la informacion 'de la tasa de fallas linea(u).miu = Text2.Text 'Guarda la informacion 'de la tasa de reparacion Unload Me 'Cierra la aplicacion End Sub Private Sub Form_Load() 'Centrar la ventada desde que se abre tbsOptions.Tabs.Item(1).Caption = "Enlace" Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2 End Sub FRMOPTIONS1 Option Explicit Private Sub Check1_Click() 'Al seleccionar se muestra u oculta las gráficas If Check1.Value = 1 Then 'Habilita las gráficas Dialog.Visible = True Else 'Cierra las gráficas Dialog.Visible = False

Page 84: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

82

End If End Sub Private Sub Check2_Click() If Check2.Value = 1 Then 'muestra la informacion de donde se guardan los resultados MsgBox "Archivo guardado en c:\Resultados.xls" End If End Sub Private Sub cmdCancel_Click() Unload Me 'Cierra la aplicacion End Sub Private Sub cmdOK_Click() 'Comprueba que se ingresen datos If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Then Else 'Guarda la informacion ingresada nsim = Text1.Text 'Tiempo de simulacion capreq = Text2.Text 'Capacidad requerida desv = Text3.Text 'Desviacion estandar Unload Me 'Cierra la aplicacion End If End Sub Private Sub Form_Load() 'Centrar desde que se carga Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2 End Sub FRMOPTIONS2 Option Explicit Private Sub cmdCancel_Click() Unload Me 'Cierra la aplicacion End Sub Private Sub cmdOK_Click() 'Almacena la informacion de las entradas y salidas 'Transicion Inp = 1 Out = 1 'Fuente

Page 85: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

83

If Combo1.Text = "Fuente" Then Inp = 0 Out = 1 'Sumidero ElseIf Combo1.Text = "Sumidero" Then Inp = 1 Out = 0 End If 'Guarda la informacion de entradas(Inp) y salidas (Out) matriz(cont + 1).Input = Inp matriz(cont + 1).Output = Out Unload Me 'Cierra la aplicacion End Sub Private Sub Form_Load() 'Desde el inicio se cargan las tres opciones de nodos Combo1.AddItem ("Fuente") 'Nodo Fuente Combo1.AddItem ("Transicion") 'Nodo Transicion Combo1.AddItem ("Sumidero") 'Nodo Sumidero 'Centrar la ventana Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2 End Sub DEFINICION DE VARIABLES – “MODULE1” Public Type nodos 'Matriz donde se guarda la informacion de los nodo Xn As Integer 'ubicación en x Yn As Integer 'ubicacion en y Nodo As Integer 'Numero del nodo Input As Integer 'Numero de entradas 0 o 1 Output As Integer 'Numero de salidas cont As Integer 'Numero total de nodos End Type Public Type unir 'Matriz donde se guarda la informacion de los enlaces X1 As Integer 'ubicación en x – primer punto Y1 As Integer 'ubicación en y – primer punto X2 As Integer 'ubicacion en x – segundo punto Y2 As Integer 'ubicación en y – segundo punto L As Integer 'Numero de la linea nodoi As Integer 'nodo inicio nodoj As Integer 'nodo final cap As Integer 'Capacidad del nodo miu As Double 'Tasa de reparaciones lambda As Double 'Tasa de fallas cont As Integer 'Numero total de enlaces

Page 86: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

84

End Type Public t(1 To 20), total2, u, c, capreq, Inp, Out, cont, X1, Y1, estado As Integer 'divisiones de las capacidades, total de capacidades acumulativas, temporal de cantidad 'de enlaces, contador del tiempo de simulacion, capacidad requerida, entradas, salidas, 'numero de nodos, ubicación x, ubicación y, estado de colocar nodo en pantalla Public desv, total, cporc(1 To 1000, 1 To 2) As Single 'Desviacion estandar, total

de 'capacidad y matriz de 'capacidades proporcionales

Public linea(0 To 40) As unir 'Matriz de enlaces Public matriz(0 To 40) As nodos 'Matriz de nodos Public ntemp(0 To 40) As nodos 'Matriz temporal de nodos Public ltemp(0 To 40) As unir 'Matriz temporal de enlaces Public m_DataValues(1 To 20) As Single 'Valores de las capacidades Public nsim As Integer 'Tiempo de simulacion Public indx, falla As Integer 'Indice de elemento a eliminar y fallas Public graf(), c1, datog As Single 'Variables par alas graficas EXAMPLE1.DLL Funcion que ejecuta Ford Fulkerson // example1.cpp #include "stdafx.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } #include <stdio.h> #define WHITE 0 #define GRAY 1 #define BLACK 2 #define MAX_NODES 100 #define oo 1000 int n; // Numero de nodos int e; // Numero de enlaces int capacity[MAX_NODES][MAX_NODES]; // Matriz de capacidad int flow[MAX_NODES][MAX_NODES]; // Matriz de flujos int color[MAX_NODES]; // caracteristicas de los nodos int pred[MAX_NODES]; // vector para almacenar los caminos de aumento

Page 87: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

85

int min1(int x, int y) { return x<y ? x : y; // Retorna el minimo entre x y y } int head,tail; int q[MAX_NODES+2]; void enqueue (int x) { q[tail] = x; tail++; color[x] = GRAY; } int dequeue () { int x = q[head]; head++; color[x] = BLACK; return x; } int bfs (int start, int target) { int u,v; for (u=0; u<n; u++) { color[u] = WHITE; } head = tail = 0; enqueue(start); pred[start] = -1; while (head!=tail) { u = dequeue(); // Busca todos los nodos blanco adjacentes v. Si la capacidad // de u a v en la red residual es positiva, pone en cola v. for (v=0; v<n; v++) { if (color[v]==WHITE && capacity[u][v]-flow[u][v]>0) { enqueue(v); pred[v] = u; } } } // Si el color del nodo objetivo es negro ahora, // esto significa que fue alcanzado return color[target]==BLACK; }

Page 88: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

86

int max_flow (int source, int sink) { int i,j,u; // Inicializa el flujo int max_flow = 0; for (i=0; i<n; i++) { for (j=0; j<n; j++) { flow[i][j] = 0; } } // Mientras exista un camino de aumento, // incrementa el flujo a traves de este camino while (bfs(source,sink)) { // Detemina la cantidad por la cual incrementamos el flujo int increment = oo; for (u=n-1; pred[u]>=0; u=pred[u]) { increment = min1(increment,capacity[pred[u]][u]-flow[pred[u]][u]); } // Incrementa el flujo. for (u=n-1; pred[u]>=0; u=pred[u]) { flow[pred[u]][u] += increment; flow[u][pred[u]] -= increment; } max_flow += increment; } // no hay mas caminos de aumento, devuelve el flujo maximo return max_flow; } void read_input_file() { int a,b,c,i,j; FILE* input = fopen("\\mf.in","r"); // lee el numero de nodos y enlaces fscanf(input,"%d %d",&n,&e); // inicializa la matriz de capcacidades for (i=0; i<n; i++) { for (j=0; j<n; j++) { capacity[i][j] = 0; } } // lee las capacidades de los enlaces for (i=0; i<e; i++) { fscanf(input,"%d %d %d",&a,&b,&c); capacity[a][b] = c; } fclose(input);

Page 89: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

87

} int main () { read_input_file(); return max_flow(0,n-1); }

Page 90: ANÁLISIS DE CONFIABILIDAD DE REDES DE …

IEL2-I-2004-38

88

10. LISTA DE FIGURAS Pág.

Figura 1. Isomorfismos 21

Figura 2. Grafo tipo árbol 22

Figura 3. Distancia entre nodos 22

Figura 4. Distribución Normal 24

Figura 5. Modelo Esfuerzo-Resistencia y Probabilidad de Falla 32

Figura 6. Graficas del simulador 37

Figura 7. Tabla de resultados del simulador 38

Figura 8. Ejemplo 1 39

Figura 9. Grafo esquemático del simulador 39

Figura 10. Resultados de la simulación 40

Figura 11. Ejemplo 2 40

Figura 12. Grafo esquemático del simulador 41

Figura 13. Resutados de la simulación 41