Creación de estructuras de datos con Arrays

Arrays son estructuras de datos que le permiten modelar vectores o matrices. Son particularmente útiles para el modelado, ya que pueden incorporar rápidamente nuevas dimensiones o categorías en el modelo, por ejemplo: los clientes de inicio se pueden dividir entre jóvenes y adultos, género, ingresos familiares, etc.

Un problema clásico de la dinámica de sistemas es la predicción del crecimiento de la población. En su versión más simple, sólo considera la población actual, la tasa de fertilidad y la tasa de mortalidad. Una posible representación del diagrama de stock y flujo para el problema sería:

En 2007, por ejemplo, la población mundial era de 6.600 millones de personas, la tasa de natalidad era de 21 personas/1.000 habitantes y la tasa de mortalidad de 9 personas/habitante. La pregunta que surge es: y si ¿La tasa de mortalidad es diferente entre hombres y mujeres?

Para entender la estructura de Array, debemos ir más allá del modelo básico: considerar que las tasas de mortalidad son diferentes para cada género (masculino/femenino).

Crea un modelo en AnyLogic con el nombre Populacao y con unidad de tiempo years:

Con lo que ya sabe sobre AnyLogic, construya el modelo básico, sin considerar el género todavía. Adoptar:

  • Población = 6600000 (Nota: 3 ceros más y AnyLogic arrojaría un error de tamaño de número entero. Para evitar este problema, encierre el número con el "punto" indicativo de punto flotante, es decir: 6600000000.0);

  • Fertilidad = 0,021;

  • Mortalidad = 0,009.

Construido en AnyLogic, el modelo debe verse como el de la figura:

Simule y compare con el siguiente resultado:

Considere que la tasa de mortalidad es diferente cuando se captura por género, siendo 0.0085 para mujeres y 0.0095 para hombres, respectivamente 8.5 muertes/1000 habitantes y 9.5 muertes/1000 habitantes.

Para tratar con diferentes categorías (o índices) AnyLogic tiene el elemento Dimension, en la paleta de dinámica de sistemas. Crear una "dimensión" Genero, haciendo clic y arrastrando el elemento Dimension para la pantalla:

Modificar el parámetro mortalidade para reflejar la diferencia de género:

  • Seleccione la opción System dynamic array el parámetro;

  • Selecciona la Dimension deseado (Genero no caso);

  • Actualice los valores predeterminados (si lo desea) usando el botón Edit o incluso escribiendo directamente el Array “{valor1, valor2}”.

Todas las ecuaciones deben reflejar la dimensión Genero. Empieza en Stock Populacao:

Con el Stock Populacao el parámetro mortalidade ya tiene la dimensión definida, ahora puede actualizar la ecuación en Flow mortes. En esta parte, AnyLogic es muy democrático en sus opciones, permitiéndote trabajar individualmente con cada categoría o genéricamente con ambas, simplemente usando el subíndice correcto - [Masculino], [Femenino] o [Género].

En el flujo fallecidos, comienza seleccionando la opción Formación y estableciendo Dimensiones de la matriz por Género

Ahora viene la mejor parte: define una ecuación para cada género, observa cómo AnyLogic facilita la elección de cada categoría:

Como resultado, las propiedades de flujo fallecidos debería verse así:

Llegamos al último y definitivo paso: la ecuación del nacimiento. En este caso, la fecundidad es la misma para hombres y mujeres (50/50) y por tanto la ecuación sería la misma. Puede, como en el caso anterior, crear una ecuación para cada género o detenerse y usar el subíndice [Genero] lo que equivale a aplicar la misma ecuación a ambas categorías:

Como resultado, el flujo nacimientos él es:

¡Ahora puedes simular!

Observe cómo dentro de cada bloque (Stock, Flow e parameter) los resultados ya están separados por género, siendo AnyLogic el encargado de componer toda la ecuación del modelo. Desde el punto de vista de la práctica del modelado, hay una consecuencia natural de esta característica en AnyLogic: centrarse, inicialmente, en el modelo, stocks y flujos. Con algo funcional en la mano, dedíquese a la eventual necesidad de usar índices para categorizar flujos específicos a través de Arrays.

Atualizado

Isto foi útil?