Autor Tema: Cómo calcular el número total de posibles estados?

0 Usuarios y 1 Visitante están viendo este tema.

27 Noviembre, 2020, 01:10 pm
Leído 1081 veces

Kruiz

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 44
  • Karma: +0/-0
  • Sexo: Masculino
Estoy trabajando en un programa de aprendizaje por refuerzo en el que me sería de gran ayuda saber a priori el número posible de estados que una red puede tener. Lo he intentado de varias maneras pero siempre me surge la misma duda, así que voy a plantearlo de la forma más sencilla posible.

Tengo una red con:

  • 4 nodos origen, desde donde la información sólo sale del nodo
  • 3 nodos destino, desde donde la información sólo entra al nodo
  • 4 enlaces principales
Cualquier estado en la red viene predeterminado por:

\( S_t\longrightarrow{}(VNF_{req}, NET_{status}) \)

Donde:

\( VNF_{req} \) se compone de \( (Bs_{id}, CPU_{req}, Bw_{req}) \)

Los valores que \( (Bs_{id}, CPU_{req}, Bw_{req}) \) pueden adoptar están discretizados y representan peticiones de servicio en la red que se crean de manera aleatoria.:

  • \( Bs_{id}: \) 4 posibles valores \( (B1, B2, B3, B4) \) que representan los nodos origen.
  • \( CPU_{req}: \)3 posibles valores \( (2, 4, 6) \) representan el número de CPUs que necesitan del nodo destino.
  • \( Bw_{req}: \)3 posibles valores \( (100, 500, 1000)  \) representan el coste que necesitan de cada enlace desde el nodo origen al nodo destino
Se inicializan todos con el valor 0.

\( NET_{status} \) se compone de \( (M1_{cpu},M1_{used-cpu}, M2_{cpu}, M2_{used-cpu}, M3_{cpu},M3_{used-cpu}, L1_{Bw}, L1_{used-Bw}, L2_{Bw}, L2_{used-Bw}, L3_{Bw}, L3_{used-Bw}, L4_{Bw}, L4_{used-Bw}) \)

Los valores que \( (Mi_{cpu},Mi_{used-cpu}, Li_{Bw}, Li_{used-Bw}) \) representan el estado de la red en cada momento. En el estado inicial de la red se inician con los siguientes valores:

  • \( (Mi_{cpu},Mi_{used-cpu}): M_i \) representa el nodo destino y \( (cpu, used-cpu) \)  representan el número de CPUs disponibles y el numero de CPUs en uso y se inicializan con valores (10, 0), respectivamente.
  • \( (Li_{Bw}, Li_{used-Bw}): Li \) representan cada uno de los enlaces principales y \( (Li_{Bw}, Li_{used-Bw}): Li \) representan el ancho de banda que disponen y el que ya están en uso, respectivamente. Se inicializan con los valores (5000, 0).

Por lo tanto ya podemos afirmar que un posible estado será:

\( \begin{pmatrix}(Bs_{id}, CPU_{req}, Bw_{req}), (M1_{cpu},M1_{used-cpu}, M2_{cpu}, M2_{used-cpu}, M3_{cpu},M3_{used-cpu}, L1_{Bw}, L1_{used-Bw}, L2_{Bw}, L2_{used-Bw}, L3_{Bw}, L3_{used-Bw}, L4_{Bw}, L4_{used-Bw})\end{pmatrix}\longrightarrow{}\begin{pmatrix}0, 0, 0, 10, 0, 10, 0, 10, 0, 5000, 0, 5000, 0, 5000, 0, 5000, 0\end{pmatrix} \)

que corresponde al estado inicial de la red donde se han inicializado los valores de los enlaces y donde no hay ninguna petición de servicio a la red.

De la red descrita al principio el número total de posibles caminos desde los nodos origen a los nodos destino es de 21.

Supongamos que después de haber inicializado la red llega la primera petición de servicio (recordemos que sus valores están discretizados y se eligen de manera aleatoria) de forma que tenemos:

\( S_t (inicial)\rightarrow{}\begin{pmatrix}(0, 0, 0), (10, 0, 10, 0, 10, 0, 5000, 0, 5000, 0, 5000, 0, 5000, 0)\end{pmatrix} \)
\( S_{t+1}\rightarrow{}\begin{pmatrix}(B1, 2, 100), (8, 2, 10, 0, 10, 0, 4900, 100, 5000, 0, 5000, 0, 5000, 0 )\end{pmatrix} \)

Como se puede ver la petición del servicio solicitaba que algún nodo destino sirviera desde el nodo origen B1 2 CPUs y que de los posibles enlaces hasta el nodo destino alojasen 100 cada uno de ellos. ¿Qué o quién determina que nodo destino responde a la petición de servicio? Bueno, pues lo gestiona el programa de inteligencia artificial en el que estoy trabajando, un agente inteligente determina en función del estado actual de la red qué nodo destino debe responder a la petición de servicio con el objetivo de balancear los recursos de la red.

En el ejemplo anterior ya tendríamos dos posibles estados. Yo sé que por ejemplo para el mismo camino entre un nodo origen y un nodo destino voy a tener:

\( nodo_{origen} * 3 (valores_{CPU}) * 3 (valores_{Bw}) * nodo_{destino} = 9  \) posibles combinaciones, lo que dan lugar a 9 posible estados. Por lo tanto, sería correcto decir que por cada petición de servicio \( S_t\longrightarrow{}(VNF_{req}) \) tendría un total de \( 3 (valores_{CPU}) * 3 (valores_{Bw})  * 21 (posibles_{caminos}) = 189 \) posibles estados?
 


Teniendo en cuenta que no en cada nuevo estado debe llegar una petición de servicio si no que las peticiones van llegando de manera aleatoria, mi pregunta es cuántos posibles estados puedo llegar a tener teniendo en cuenta que la distribución de las peticiones de servicio son aleatorias y que además éstas sólo existen durante un determinado número de estados para luego morir y devolver sus valores \(  CPU y\; Bw \) de nuevo a los nodos destino y enlaces respectivamente?


Siento la chapa del mensaje.