Saltar al contenido principal
LibreTexts Español

16.2: Simulación de dinámicas en redes

  • Page ID
    115693
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Debido a que NetworkX adopta diccionarios simples como su estructura de datos principal, podemos agregar fácilmente estados a los nodos (y bordes) y actualizar dinámicamente esos estados iterativamente. Se trata de una simulación de dinámicas en redes. Esta clase de modelos de red dinámica describe los cambios de estado dinámicos que tienen lugar en una topología de red estática. Muchas redes dinámicas del mundo real entran en esta categoría, entre ellas:

    • Relaciones reguladoras entre genes y proteínas dentro de una célula, donde los nodos son genes y/o proteínas y los estados nodulares son sus niveles de expresión.
    • Interacciones ecológicas entre especies en un ecosistema, donde los nodos son especies y los estados nodulares son sus poblaciones.
    • Infección por enfermedades en redes sociales, donde los nodos son individuos y los estados nodulares son sus estados epidemiológicos (por ejemplo, susceptibles, infectados, recuperados, inmunizados, etc.).
    • Propagación de información/cultura en redes organizativas/sociales, donde los nodos son individuos o comunidades y los estados nodulares son sus estados informativos/culturales.

    La implementación de modelos de simulación para dinámicas en redes es sorprendentemente similar a la de CA. Puede que le resulte aún más fácil en las redes, debido a la definición directa de “vecinos” en las redes. Aquí, trabajaremos en una regla de mayoría local simple en una red social, con los siguientes supuestos:

    • Los nodos representan individuos y los bordes representan sus conexiones simétricas para compartir información
    • Cada individuo toma 0 o 1 como su estado.
    • Cada individuo cambia su estado a una elección mayoritaria dentro de su vecindario local (es decir, el individuo él o ella misma y los vecinos conectados con él o ella). A este barrio también se le llama la red de ego del individuo focal en ciencias sociales.
    • La actualización estatal se lleva a cabo simultáneamente en todas las personas de la red.
    • Los estados de los individuos son inicialmente aleatorios.

    Sigamos usando pycxsimulator.py e implementemos el código del simulador definiendo tres componentes esenciales: inicialización, observación y actualización.

    La parte de inicialización es crear un modelo de red social y luego asignar estados aleatorios a todos los nodos. Aquí propongo realizar la simulación en nuestro gráfico favorito de Karate Club. Al igual que la simulación de CA, necesitamos preparar dos objetos de red, uno para el paso de tiempo actual y el otro para el siguiente paso de tiempo, para evitar conflictos durante el proceso de actualización de estado. Aquí hay un ejemplo de la parte de inicialización:

    Código 16.1.png

    Aquí, precalculamos las posiciones de los nodos usando spring_layout y almacenamos los resultados bajo g como un atributo g.pos. Python es tan flexible que puedes agregar dinámicamente cualquier atributo a un objeto sin declararlo de antemano; utilizaremos este truco más adelante en el modelado basado en agentes también. g.pos se utilizará en la visualización para que los nodos no salten cada vez que dibujes la red.

    El comando g.nodes_iter () utilizado en el bucle for anterior funciona esencialmente de la misma manera que g.nodes () en este contexto, pero es mucho más eficiente en la memoria porque no genera una lista real completamente deletreada, sino que genera una mucho más compacta representación llamada iterador, un objeto que puede devolver los siguientes valores iterativamente. También hay g.edges_iter () para fines similares para bordes. Generalmente es una buena idea usar nodes_iter () y edges_iter () en bucles, especialmente si tu red es grande. Por último, en la última línea, se utiliza el comando copy para crear una copia duplicada de la red.

    La parte de observación se trata de dibujar la red. Ya lo hemos hecho muchas veces, pero aquí hay un nuevo reto: Necesitamos visualizar los estados de los nodos además de la topología de red. Podemos usar la opción node_color para este propósito:

    código 16.2.png

    código 16.2 pt2.png

    Las opciones vmin/vmax son usar un rango fijo de valores de estado; de lo contrario matplotlib ajustaría automáticamente las asignaciones de color, lo que a veces causa una visualización engañosa. También tenga en cuenta que estamos usando g.pos para mantener los nodos en posiciones precalculadas.

    La parte de actualización es bastante similar a lo que hicimos para CA. Solo necesitas barrer todos los nodos, y para cada nodo, barres a sus vecinos, contando cuántos 1 tienes en el vecindario local. Aquí hay un código de muestra:
    Código 16.3.PNG

    Creo que esta parte merece alguna explicación en profundidad. El primer bucle for para i es barrer el espacio, es decir, toda la red. Para cada nodo, i, el recuento de variables se inicializa primero con el propio estado del nodo i. Esto se debe a que, a diferencia de las implementaciones anteriores de CA, el nodo i en sí no está incluido en sus vecinos, por lo que tenemos que contarlo manualmente primero. El segundo bucle for para j es barrer los vecinos del nodo i. La función g.neighbors (i) de NetworkX da una lista de los vecinos de i, que es mucho más simple que el barrido de vecindarios en CA; no tenemos que escribir bucles anidados para dx y dy, y no tenemos que preocuparnos por las condiciones de contorno en absoluto. Los vecinos son vecinos, periodo.

    Una vez realizado el barrido de vecindad local, se calcula la relación de estado dividiendo el conteo por el número de nodos contados (= el grado de nodo i más 1 para sí mismo). Si la relación estatal es superior a 0.5, la mayoría local es 1, por lo que el siguiente estado del nodo i será 1. Si está por debajo de 0.5, la mayoría local es 0, por lo que el siguiente estado será 0. Además, dado que esta dinámica se está dando en una red, existe la posibilidad de un empate (que nunca ocurre en CA con los barrios de von Neumann o Moore). En el ejemplo anterior, solo incluí un lanzamiento de monedas desempate, para ser justos. Y el último swap de g y nextg es algo con lo que ya estamos familiarizados.

    Todo el código de simulación se ve así:

    Código 16.4 pt1.PNG

    Código 16.4 pt2.PNG

    Código 16.4 pt 3.PNG

    Código 16.4 pt4.PNG

    ParseError: invalid XmlAttribute (click for details)
    Callstack:
        at (Matematicas/Computacion_Cientifica_Simulaciones_y_Modelado/Libro:_Introducción_al_Modelado_y_Análisis_de_Sistemas_Complejos_(Sayama)/16:_Redes_Dinámicas_I_-_Modelado/16.02:_Simulación_de_dinámicas_en_redes), /content/body/pre, line 1, column 12
    

    Ejecuta este código y disfruta de tu primera simulación dinámica de red. Notarás que la red a veces converge a un estado homogéneo, mientras que en otras ocasiones permanece en una condición dividida (Fig. 16.2.1). ¿Se pueden identificar las áreas donde tienden a formarse los límites entre los diferentes estados?

    Higo 16.1.PNG
    Figura\(\PageIndex{1}\): Salida visual de Código 16.4. En este ejemplo, se han formado dos grupos de diferentes estados.
    Ejercicio\(\PageIndex{1}\)

    Revisar el modelo de red dinámica de la regla mayoritaria desarrollado anteriormente para que cada nodo flete estocásticamente su estado con cierta probabilidad. Luego simule el modelo y vea cómo se ve afectado su comportamiento.

    En lo que sigue, veremos algunos ejemplos más de dos categorías de dinámicas en modelos de redes: modelos discretos de estado/tiempo y modelos continuos de estado/tiempo. Discutiremos dos modelos ejemplares en cada categoría.

    Modelos discretos de estado/tiempo (1): Modelo de votante

    El primer ejemplo es una revisión del modelo de red dinámica de regla mayoritaria desarrollado anteriormente. Se ha estudiado un modelo muy similar de dinámica de opinión abstracta en física estadística, que se denomina modelo elector. Al igual que en el modelo anterior, cada nodo (“elector”) toma uno de los estados discretos finitos (digamos, blanco y negro, o rojo y azul, podrías verlo como una opinión política), pero la regla de actualización es diferente. En lugar de que todos los nodos actualicen sus estados simultáneamente en base a las elecciones de mayoría local, el modelo de elector considera solo un evento de transferencia de opinión a la vez entre un par de nodos conectados que se eligen aleatoriamente de la red (Fig. 16.2.2). En este sentido, se trata de un modelo de red dinámica asincrónica.

    Higo 16.2.PNG
    Figura\(\PageIndex{2}\): Ilustración esquemática del modelo de elector. Cada vez que se selecciona aleatoriamente un par de nodos conectados (círculo verde claro), el estado del nodo altavoz (izquierda) se copia al nodo oyente (derecha).

    Hay tres variaciones menores de cómo se eligen esos nodos:

    • Versión original (“pull”): Primero, se elige aleatoriamente un nodo “oyente” de la red, y luego se elige aleatoriamente un nodo “orador” de los vecinos del oyente.
    • Versión invertida (“push”): Primero, se elige aleatoriamente un nodo “orador” de la red, y luego se elige aleatoriamente un nodo “oyente” de los vecinos del hablante.
    • Versión basada en bordes (simétrica): Primero, se elige aleatoriamente un borde de la red, y luego los dos puntos finales (nodos) del borde se asignan aleatoriamente para que sean un “orador” y un “oyente”.

    En cualquier caso, el nodo “oyente” copia el estado del nodo “orador”. Esto se repite varias veces hasta que toda la red alcanza un consenso con un estado homogeneizado.

    Si piensa detenidamente en estos supuestos del modelo, puede notar que los dos primeros supuestos no son simétricos con respecto a la probabilidad de que un nodo sea elegido como “orador” o “oyente”. La probabilidad en realidad depende de cuán popular sea un nodo. Específicamente, la versión original tiende a elegir nodos de mayor grado como orador con más frecuencia, mientras que la versión inversa tiende a elegir nodos de mayor grado como oyente con más frecuencia. Esto se debe a la famosa paradoja de la amistad, un hecho contrario a la intuición reportado por primera vez por el sociólogo Scott Feld en la década de 1990 [68], que es que un vecino seleccionado aleatoriamente de un nodo seleccionado al azar tiende a tener un grado mayor que el promedio. Por lo tanto, se espera que la versión original del modelo elector promueva la homogeneización de opiniones ya que da más tiempo de conversación a los nodos populares, mientras que la versión invertida daría la misma oportunidad de hablar a todos por lo que la homogeneización de opinión sería mucho más lenta, y la basada en bordes versión estaría en algún punto intermedio. Podemos verificar estas predicciones mediante simulaciones por computadora.

    La buena noticia es que el código de simulación del modelo de elector es mucho más sencillo que el del modelo de red de reglas mayoritarias, debido a la asincronía de la actualización estatal. Ya no necesitamos usar dos estructuras de datos separadas; podemos seguir modificando directamente un solo objeto Graph. Aquí hay un código de muestra para la versión original “pull” del modelo de elector, nuevamente en la gráfica de Karate Club:

    código 16.5.PNG

    Código 16.5 pt2.PNG

    código 16.5 pt3.PNG

    ¡Mira lo sencilla que es la función de actualización! Esta simulación toma muchos más pasos para que el sistema alcance un estado homogéneo, ya que cada paso involucra solo dos nodos. Probablemente sea una buena idea establecer el tamaño del paso a 50 bajo la pestaña “Configuración” para acelerar las simulaciones.

    Ejercicio\(\PageIndex{2}\)

    Revise el código anterior para que pueda medir cuántos pasos tomará hasta que el sistema alcance un consenso (es decir, estado homogeneizado). Luego, ejecute múltiples simulaciones (simulaciones de Monte Carlo) para calcular el tiempo promedio necesario para la formación de consenso en el modelo original de votantes.

    Ejercicio\(\PageIndex{3}\)

    Revisar aún más el código para implementar (1) los modelos de votantes invertidos y (2) los modelos de votantes basados en bordes. Luego realice simulaciones de Monte Carlo para medir el tiempo promedio necesario para la formación de consenso en cada caso. Compara los resultados entre las tres versiones.

    Modelos discretos de estado/tiempo (2): Modelo epidémico

    El segundo ejemplo de modelos discretos de redes dinámicas de estado/tiempo es el modelo epidémico en una red. Aquí consideramos el modelo Susceptible-Infectado-Susceptible (SIS), que es incluso más simple que el modelo SIR que discutimos en el Ejercicio 7.3. En el modelo SIS, solo hay dos estados: Susceptible e Infectado. Un nodo susceptible puede infectarse de un nodo vecino infectado con probabilidad de infección\(p_i\) (por vecino infectado), mientras que un nodo infectado puede recuperarse de nuevo a un nodo susceptible (es decir, sin inmunidad adquirida) con probabilidad de recuperación\(p_r\) (Fig. 16.2.3). Esta configuración todavía pone todo en estados binarios como en los ejemplos anteriores, para que podamos reciclar sus códigos desarrollados anteriormente.

    Higo 16.3.PNG
    Figura\(\PageIndex{3}\): Ilustración esquemática de la regla de transición de estado del modelo SIS

    En cuanto al esquema de actualización, creo que probablemente le gustó la simplicidad de la actualización asincrónica que usamos para la odel elector, así que vamos a adoptarla también para este modelo del SIS. Primero elegiremos un nodo al azar, y si es susceptible, entonces elegiremos aleatoriamente a uno de sus vecinos; esto es similar a la versión original “pull” del modelo de elector. Todo lo que necesitas es revisar solo la función de actualización de la siguiente manera:

    código 16.6.PNG

    código 16.6 pt1.PNG

    Nuevamente, debes establecer el tamaño del paso en 50 para acelerar las simulaciones. Con estos ajustes de parámetros (\(p_i = p_r = 0.5\)), probablemente encontrarás que la enfermedad (estado 1 = nódulos negros) muere rápidamente y desaparece de la red, a pesar de que la mitad de la población inicial está infectada al principio. Esto significa que para estos valores de parámetros particulares y topología de red, el sistema puede suprimir con éxito una pandemia sin tomar ninguna acción especial.

    Ejercicio\(\PageIndex{4}\)

    Realizar simulaciones del modelo SIS con cualquiera\(p_i\) o\(p_r\) variadas sistemáticamente, mientras que el otro se fija en 0.5. Determinar el padecimiento en el que ocurre una pandemia (es decir, la enfermedad persiste por un periodo de tiempo indefinidamente largo). ¿La transición es gradual o aguda? Una vez que obtenga los resultados, intente variar el otro parámetro también.

    Ejercicio\(\PageIndex{5}\)

    Genere una red aleatoria mucho más grande de su elección y realice la misma simulación del modelo SIS en ella. Vea cómo la dinámica se ve afectada por el cambio de tamaño de red y/o topología. ¿Seguirá persistiendo la enfermedad en la red?

    Modelos continuos de estado/tiempo (1): Modelo de difusión

    Hasta el momento, no hemos visto ninguna ecuación en este capítulo, porque todos los modelos discutidos anteriormente fueron descritos en reglas algorítmicas con factores estocásticos involucrados. Pero si son deterministas, los modelos de red dinámica no son fundamentalmente diferentes de otros sistemas dinámicos convencionales. De hecho, cualquier modelo dinamico determinista de una red compuesta por\(n\) nodos puede describirse en una de las siguientes formulaciones estandar usando un estado vectorial\(n\) -dimensional\(x\),

    \[x_{t} =F(x_{t-1}, t) \qquad{ \text{(for discrete-time models)} } \label{(16.1)} \]

    o

    \[\frac{dx}{dt} =F(x, t) \qquad{ \text{(for continuous-time models)}} \label{(16.2)} \]

    Si función representa\(F\) correctamente las interrelaciones entre los diferentes componentes de\(x\). Por ejemplo, el modelo de red de reglas de mayoría local que discutimos anteriormente en este capítulo es completamente determinista, por lo que su comportamiento puede capturarse completamente en un conjunto de ecuaciones de diferencia en forma de Ecuación\ ref {(16.1)}. En esta y siguientes subsecciones, discutiremos dos ejemplos ilustrativos de la versión de ecuación diferencial de la dinámica en modelos de redes, es decir, el modelo de difusión y el modelo de oscilador acoplado. Ambos son ampliamente estudiados en ciencia de redes.

    La difusión en una red puede ser una generalización de modelos de difusión espacial en topologías espaciales no regulares y no homogéneas. Cada nodo representa un sitio local donde se pueden acumular algunas “cosas”, y cada borde simétrico representa un canal a través del cual las cosas pueden ser transportadas, de una manera u otra, impulsadas por el gradiente de su concentración. Esto puede ser un modelo útil de migración de especies entre hábitats geográficamente semiaislados, flujo de moneda entre ciudades a través de una nación, difusión de la cultura organizacional dentro de una empresa, etc. La suposición básica es que el flujo de las cosas está determinado por la diferencia en su concentración a través del borde:

    \[\frac{dc_{i}}{dt} =\alpha{\sum_{j\epsilon_{N_{i}}}} {(c_{i}-c_{i})} \label{(16.3)} \]

    Aquí\(c_i \) está la concentración de las cosas en el nodo\(i\),\(α\) es la constante de difusión, y\(N_i\) es el conjunto de vecinos\(i\) del nodo. Dentro de los paréntesis (\(c_{j} −c_{i}\)) representa la diferencia en la concentración entre nodo\(j\) y nodo\(i\) a través del borde\((i,j)\). Si vecino\(j\) tiene más cosas que nodo\(i\), hay un influx de\(j\) a\(i\), causando un efecto positivo en\(dc_{i}/dt\). O si vecino\(j\) tiene menos de nodo\(i\), hay un outflux de\(i\) a\(j\), causando un efecto negativo en\(dc_i/dt\). Esto tiene sentido.

    Obsérvese que la ecuación anterior es un sistema dinámico lineal. Entonces, si representamos la lista completa de estados de nodo por un vector de estado\( c = (c_1 c_2 ... c_n)^T\), la Ecuación\ ref {(16.3)} puede escribirse como

    \[\frac{dc}{dt} =-\alpha{Lc}, \label{(16.4)} \]

    donde\(L\) es lo que se llama una matriz laplaciana de la red, que se define como

    \[L= D-A, \label{(16.5)} \]

    donde\(A\) es la matriz de adyacencia de la red, y\(D\) es la matriz de grados de la red, es decir, una matriz cuyo\(i\) -ésimo componente diagonal es el grado de nodo\(i\) mientras que todos los demás componentes son 0. Un ejemplo de esas matrices se muestra en la Fig. 16.2.4.

    Espera un minuto. Ya escuchamos “laplacianos” muchas veces cuando discutimos sobre las PDE. El operador laplaciano (\(∇^2\)) apareció en ecuaciones de difusión espacial, mientras que esta nueva cosa matriz laplaciana también aparece en una ecuación de difusión basada en red. ¿Están relacionados? La respuesta es . De hecho, son (casi) operadores lineales idénticos en cuanto a su papel. Recuerde que cuando discretizamos operadores laplacianos en PDEs para simular usando CA (Eq. 13.5.21), aprendimos que una versión discreta de un Laplaciano se puede calcular por el siguiente principio:

    Fig 16.4 pt1.PNG

    Fig 16.4 pt2.PNG
    Figura\(\PageIndex{4}\): Relación entre una matriz de grados, una matriz adyacente y una matriz Laplaciana.

    “Mide la diferencia entre tu prójimo y tú mismo, y luego suma todas esas diferencias”.

    ¡Tenga en cuenta que esto es exactamente lo que hicimos en una red en la Ecuación\ ref {(16.3)}! Entonces, esencialmente, la matriz laplaciana de una gráfica es un equivalente discreto del operador laplaciano para el espacio continuo. La única diferencia, lo cual es bastante lamentable en mi opinión, es que se definen con signos opuestos por razones históricas; comparar el primer término de la Ec. 13.4.4 y la Ec. \ ref {(16.4)}, y verás que la matriz laplaciana no absorbió el signo menos dentro de ella. Entonces, conceptualmente,

    \[\nabla^{2} \Leftrightarrow -L. \label{(16.6)} \]

    Siempre he pensado que este desajuste de signos era tan confuso, pero ambos “laplacianos” ya están plenamente establecidos en sus respectivos campos. Entonces, solo tenemos que vivir con estas inconsistentes definiciones de “laplacianos”.

    Ahora que tenemos las ecuaciones matemáticas para difusión en una red, podemos discretizar el tiempo para simular su dinámica en Python. La ecuación\ ref {(16.3)} se convierte en

    \[c_{i}(t+ \Delta{t}) \begin{align}=c_{i}t +[\alpha \sum_{j \epsilon{N_{i}}}{(c_{j}(t) -c_{i} (t))}] \Delta{t} \label{(16.7)} \\[4pt] =c_{i}(t) + \alpha[(\sum_{j\epsilon{N_{i}}} {c_{j}(t) }) -c_{i}(t) \deg{(i)}]\Delta{t}. \label{(16.8)}\end{align} \]

    O, equivalentemente, también podemos discretizar el tiempo en la Ecuación\ ref {(16.4)}, es decir,

    \[c(t +\Delta{t}) \begin{align}=c(t) -\alpha{LC(t)} \Delta{t} \label{(16.9)} \\[4pt] =(I - \alpha{L\Delta{t}})c(t), \label{(16.10)} \end{align} \]

    donde\(c\) es ahora el vector de estado para toda la red, y\(I\) es la matriz de identidad. Eqs. \ ref {(16.8)} y\ ref {(16.10)} representan exactamente la misma dinámica de difusión, pero usaremos la ecuación\ ref {(16.8)} para la simulación en lo siguiente, ya que no requerirá representación matricial (que podría ser ineficiente en términos de uso de memoria si la red es grande y dispersa).

    Podemos reutilizar el Código 16.4 para esta simulación. Solo necesitamos reemplazar la función de actualización por lo siguiente:

    Código 16.7.PNG

    Código 16.7 pt2.PNG
    Y luego podemos simular un agradable proceso de difusión suave en una red, como se muestra en la Fig. 16.2.5, donde los estados continuos de los nodos están representados por tonos de gris. Se puede ver que la difusión hace que toda la red converja a una configuración homogénea con el estado promedio del nodo (alrededor de 0.5, o medio gris) en todas partes.
    Higo 16.5.PNG

    Figura\(\PageIndex{5}\): Salida visual de Código 16.7. El tiempo pasa de izquierda a derecha.

    Ejercicio\(\PageIndex{6}\)

    Este modelo de difusión conserva la suma de los estados de nodo. Confirme esto revisando el código para medir la suma de los estados de los nodos durante la simulación.

    Ejercicio\(\PageIndex{7}\)

    Simule un proceso de difusión en cada una de las siguientes topologías de red y luego discuta cómo la topología de red afecta la difusión en ella. Por ejemplo, ¿hace que la difusión sea más rápida o más lenta?

    • gráfico aleatorio
    • gráfico de barra
    • gráfico en forma de anillo (es decir, gráfico regular de grado 2)

    Modelos continuos de estado/tiempo (2): modelo de oscilador acoplado

    Ahora que tenemos un modelo de difusión en una red, naturalmente podemos extenderlo también a la dinámica de reacción-difusión, tal como lo hicimos con las PDE. Su formulación matemática es bastante sencilla; solo necesitas agregar un término de reacción local a la Ecuación\ ref {(16.3)}, para obtener

    \[\frac{dc_{i}}{dt} =R_{i} (c_{i}) +\alpha\sum_{j\epsilon{N_{i}}} (c_{j} -c_{i}) \label{(16.11)} \]

    Se puede lanzar cualquier dinámica local al término de reacción\(R_i\). Si cada nodo toma estados con valores vectoriales (como los sistemas de reacción-difusión basados en PDE), entonces también puede tener diferentes constantes de difusión (\(α_1\)\(α_2\),,...) que corresponden a múltiples dimensiones del espacio de estados. Algunos investigadores incluso consideran diferentes topologías de red para diferentes dimensiones del espacio estatal. Dichas redes hechas de topologías de red superpuestas se denominan redes multiplex, lo que es un tema muy candente que se estudia activamente en este momento (a partir de 2015), pero no lo cubrimos en este libro de texto.

    Por simplicidad, aquí limitamos nuestra consideración solo a estados de nodo de valor escalar. Incluso con estados de valor escalar, existen algunos modelos dinámicos de red muy interesantes. Un ejemplo clásico son los osciladores acoplados. Supongamos que tiene un montón de osciladores, cada uno de los cuales tiende a oscilar a su propia frecuencia inherente de forma aislada. Esta frecuencia inherente es ligeramente diferente de oscilador a oscilador. Pero cuando se conectan entre sí en una determinada topología de red, los osciladores comienzan a influir en las fases de oscilación de los demás. Una pregunta clave que se puede responder usando este modelo es: ¿Cuándo y cómo se sincronizan estos osciladores? Este problema sobre la sincronización del colectivo es un problema interesante que surge en muchas áreas de sistemas complejos [69]: patrones de disparo de fuegos distribuidos espacialmente, patrones de excitación de neuronas y comportamiento de los comerciantes en los mercados financieros. En cada uno de esos sistemas, los comportamientos individuales tienen naturalmente algunas variaciones inherentes. Sin embargo, si las conexiones entre ellos son lo suficientemente fuertes y cumplen ciertas condiciones, esos individuos comienzan a orquestar sus comportamientos y pueden mostrar un comportamiento globalmente sincronizado (Fig.16.6), que puede ser bueno o malo, dependiendo del contexto. Este problema se puede estudiar utilizando modelos de red. De hecho, abordar este problema fue parte de la motivación original para el artículo de “mundo pequeño” de Duncan Watts y Steven Strogatz publicado a finales de la década de 1990 [56], uno de los documentos históricos que ayudaron a crear el campo de la ciencia de redes.

    Higo 16.6.PNG
    Figura\(\PageIndex{6}\): Ilustración esquemática de osciladores acoplados. Las bombillas que cambian la intensidad de la luz periódicamente a diferentes frecuencias (izquierda) pueden sincronizarse globalmente si están conectadas (derecha).

    La representación del comportamiento oscilatorio requiere de forma natural dos o más variables dinámicas, como aprendimos antes. Pero la oscilación puramente armónica puede reducirse a un simple movimiento lineal con velocidad constante, si el comportamiento se interpreta como una proyección de movimiento circular uniforme y si el estado se describe en términos de ángulo\(θ\). Esto convierte el término de reacción en la Ecuación\ ref {(16.11)} en solo una velocidad angular constante\(ω_i\). Mientras tanto, esta representación también afecta al término de difusión, porque la diferencia entre dos θ ya no es computable por simple resta aritmética como\(θ_j −θ_i\), porque hay infinitamente muchos\(θ\)'s que son equivalentes (e.g., 0,\(2π\),\(−2π\),\(4π\),\(−4π\), etc.). Entonces, la diferencia entre los dos estados en el término de difusión tiene que ser modificada para enfocarse únicamente en la “diferencia de fase” real entre los dos nodos. Se pueden imaginar soldados marchando sobre una pista circular como ejemplo visual de este modelo (Fig. 16.2.7). Dos soldados que están muy separados en realidad\(θ\) pueden estar cerca uno del otro en el espacio físico (es decir, fase de oscilación). El modelo debe ser configurado de tal manera que intenten acercarse el uno al otro en el espacio físico, no en el espacio angular.

    Para representar este tipo de interacción basada en fases entre osciladores acoplados, un físico japonés Yoshiki Kuramoto propuso el siguiente modelo matemático muy simple y elegante en la década de 1970 [70]:

    \[\frac{d\theta_{i}}{dt} =w_{i}+\alpha\frac{\sum_{j\epsilon{N_{i}}} \sin{(\theta_{j} -\theta{i})}}{|N_{i}|} \label{(16.12)} \]

    La parte de diferencia angular fue reemplazada por una función sinusoidal de diferencia angular, que se vuelve positiva si\(j\) está físicamente por delante de\(i\), o negativa si\(j\) está físicamente detrás\(i\) de la pista circular (porque sumar o restar\(2π\) dentro\(sin\) no afectará el resultado). Estas fuerzas que el soldado\(i\) recibe de sus vecinos serán promediadas y utilizadas para determinar el ajuste de su movimiento. El parámetro\(α\) determina la resistencia de los acoplamientos entre los soldados. Tenga en cuenta que el modelo original de Kuramoto utilizó una topología de red completamente conectada, pero aquí estamos considerando la misma dinámica en una red de una topología no trivial.

    Hagamos algunas simulaciones para ver si nuestros soldados conectados en red pueden autoorganizarse para marchar sincronizados. Podemos tomar el código anterior para difusión en red (Código 16.7) y revisarlo para este modelo de Kuramoto. Hay varios cambios que necesitamos implementar. En primer lugar, cada nodo necesita no sólo su estado dinámico (\(θ_i\)) sino también su velocidad estática preferida (\(ω_i\)), la última de las cuales debe ser inicializada para que haya algunas variaciones entre los nodos. Segundo, la función de visualización debe convertir los estados en algunos valores acotados, ya que la posición angular θi aumenta continuamente hacia el infinito. Podemos utilizar\(\sin(θ_i)\) para este propósito de visualización. Tercero, la regla de actualización necesita ser revisada, por supuesto, para implementar la Ecuación\ ref {(16.12)}.

    Higo 16.7.PNG
    Figura\(\PageIndex{7}\): Soldados marchando sobre una vía circular, como representación visual de osciladores acoplados descritos en el espacio angular, donde se ilustran el soldado 1 y sus vecinos en la red (2,3,4). Cada soldado tiene su propia velocidad preferida (\(ω_i\)). La proximidad física de los vecinos (no necesariamente su proximidad angular; ver\(θ_1\) y\(θ_4\)) debe usarse para determinar en qué dirección se ajusta la velocidad angular del soldado 1.

    Aquí hay un ejemplo del código revisado, donde también cambié el mapa de colores a cm.hsv para que el estado se pueda visualizar de una manera más cíclica:

    Código 16.8.PNG

    Código 16.8 pt2.PNG

    Código 16.8 pt3.PNG

    Código 16.8 pt4.PNG
    La Figura 16.2.8 muestra una ejecución típica de simulación. La dinámica de esta simulación se puede visualizar mejor si se aumenta el tamaño del paso a 50. Ejecutarlo usted mismo y vea cómo los nodos inherentemente diversos se autoorganizan para iniciar la marcha asincronizada. ¿Ves algún patrón espacial ahí?

    Higo 16.8.PNG
    Figura\(\PageIndex{8}\): Salida visual de Código 16.8. El tiempo pasa de izquierda a derecha.
    Ejercicio\(\PageIndex{8}\)

    Se sabe que el nivel de sincronización en el modelo Kuramoto (y muchos otros modelos de osciladores acoplados) se puede caracterizar por la siguiente medición (llamada coherencia de fase):

    \[r= |\frac{1}{n} \sum_{i}{e^{i \theta_{i}}} | \label{(16.13)} \]

    Aquí\(n\) está el número de nodos,\(θ_i\) es el estado de nodo\(i\), y\(i\) es la unidad imaginaria (para evitar confusiones con el índice de nodo\(i\)). Esta medición se convierte en 1 si todos los nodos están en perfecta sincronización, o 0 si sus fases son completamente aleatorias y distribuidas uniformemente en el espacio angular. Revisar el código de simulación para que pueda medir y monitorear cómo cambia esta coherencia de fase durante la simulación.

    Ejercicio\(\PageIndex{9}\)

    Simule el modelo de Kuramoto en cada una de las siguientes topologías de red:

    • gráfico aleatorio
    • gráfico de barra
    • gráfico en forma de anillo (es decir, gráfico regular de grado 2)

    Discutir cómo la topología de red afecta a la sincronización. ¿Hará que la sincronización sea más fácil o más difícil?

    Ejercicio\(\PageIndex{10}\)

    Realizar simulaciones del modelo de Kuramoto aumentando sistemáticamente la cantidad de variaciones de\(ω_i\) (actualmente establecida en 0.05 en la función de inicialización) y ver cuándo/cómo ocurre la transición del comportamiento del sistema.

    Aquí algunos ejercicios más de dinámica sobre modelos de redes. ¡Que te diviertas!

    Ejercicio\(\PageIndex{11}\): Hopfield network (a.k.a. attractor network)

    John Hopfield propuso un modelo de red dinámica de estado/tiempo discreto que puede recuperar arreglos memorizados de estados a partir de condiciones iniciales incompletas [20, 21]. Este fue uno de los trabajos pioneros de la investigación de redes neuronales artificiales, y sus principios básicos todavía se utilizan activamente hoy en día en diversas aplicaciones de inteligencia computacional. Estas son las suposiciones típicas hechas en el modelo de red Hopfield:

    • Los nodos representan neuronas artificiales, que toman -1 o 1 como estados dinámicos.
    • Su red está completamente conectada (es decir, una gráfica completa).
    • Los bordes son ponderados y simétricos.
    • Los estados de nodo se actualizarán sincrónicamente en pasos de tiempo discretos de acuerdo con la siguiente regla:

    \[s_{t}(t+1) =sign{(\sum{w_{ij}s_{j}(t)})} \label{(16.14)} \]

    Aquí,\(s_{i}(t)\) es el estado de nodo\(i\) en el tiempo\(t\),\(w_{ij}\) es el peso de borde entre los nodos\(i\) y\(j\) (\(w_{ij} = w_{ji}\)debido a la simetría), y\(sign{(x)}\) es una función que da 1 si\(x > 0\), -1 si\(x < 0\), o 0 si\(x = 0\).

    • No hay auto-bucles (\(w_ii\)= 0 para todos\(i\)).

    Lo que Hopfield mostró es que uno puede “imprimir” un número finito de patrones predeterminados en esta red diseñando cuidadosamente los pesos de borde usando la siguiente fórmula de codificación simple:

    \[w_{ij} =\sum{s_{i,k}s_{j,k}}_{k} \label{(16.15)} \]

    Aquí\(s_{i,k}\) está el estado de nodo\(i\) en el\(k\) -ésimo patrón que se va a imprimir en la red. Implemente un simulador del modelo de red Hopfield y construya los pesos\(w_{ij}\) de borde a partir de algunos patrones de estado de su elección. Luego simule la dinámica de la red a partir de una condición inicial aleatoria y vea cómo se comporta la red. Una vez que su modelo demuestre con éxito la recuperación de patrones impresos, intente aumentar el número de patrones a imprimir y vea cuándo y cómo la red pierde la capacidad de memorizar todos esos patrones.

    Ejercicio\(\PageIndex{12}\): Cascading failure

    Este modelo es un modelo de red dinámica de estado continuo y tiempo discreto que representa cómo una falla funcional de un componente en una red de infraestructura puede desencadenar fallas posteriores y causar una falla sistémica a gran escala de toda la red. A menudo se utiliza como un modelo estilizado de apagones masivos de poder, catástrofes financieras y otros eventos sociotecnológicos y socioeconómicos (indeseables).

    Estas son las suposiciones típicas hechas en el modelo de falla en cascada:

    • Los nodos representan un componente de una red de infraestructura, como transmisores de energía o instituciones financieras. Los nodos toman números reales no negativos como sus estados dinámicos, que representan la cantidad de carga o carga que están manejando. Los nodos también pueden tomar un estado especialmente designado “muerto”.
    • Cada nodo también tiene su propia capacidad como propiedad estática.
    • Su red puede estar en cualquier topología.
    • Los bordes pueden ser dirigidos o no dirigidos.
    • Los estados de nodo se actualizarán de forma sincrónica o asincrónica en pasos de tiempo discretos, de acuerdo con las siguientes reglas simples:
      • Si el nodo está muerto, no pasa nada.
      • Si el nodo no está muerto pero su carga excede su capacidad, se volverá a un estado muerto, y la carga que manejaba se distribuirá uniformemente a sus vecinos que aún están vivos.

    Implementar un simulador del modelo de falla en cascada, y simular la dinámica de la red a partir de una condición inicial que se construye con cargas y capacidades asignadas aleatoriamente, con un nodo inicialmente sobrecargado. Intente aumentar el nivel de carga promedio en relación con el nivel de capacidad promedio y vea cuándo y cómo la red comienza a mostrar una falla en cascada. Investigar qué nodo tiene el impacto más significativo cuando está sobrecargado. También pruebe varias topologías de red diferentes para ver si la topología afecta la resiliencia de las redes.

    Ejercicio\(\PageIndex{13}\)

    Crear un modelo continuo de red de estado/tiempo de osciladores acoplados donde cada oscilador intente desincronizar de sus vecinos. Se puede modificar el modelo de Kuramoto para desarrollar dicho modelo. Luego simule la red a partir de una condición inicial donde las fases de los nodos sean casi las mismas, y demuestre que la red puede diversificar espontáneamente las fases de los nodos. Discutir las posibles áreas de aplicación para dicho modelo.


    This page titled 16.2: Simulación de dinámicas en redes is shared under a CC BY-NC-SA 3.0 license and was authored, remixed, and/or curated by Hiroki Sayama (OpenSUNY) via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.