11 Feb

Integrando AnyLogic y R Parte 1

Como se explicó en el post anterior, R es un poderoso lenguaje de programación especializado en el análisis y manipulación de datos, gratuito y de gran popularidad a nivel mundial (ver post). Por su parte AnyLogic es un software de simulación cuyo lenguaje de base es Java lo que permite la integracion de librerias externas (ver wiki).

Al combinar ambos sistemas es posible aprovechar de las funcionalidades de cada uno como gráficos, analisis y minería de datos, pronósticos, etc.

En este post explicaremos cómo llamar R a partir de AnyLogic utilizando dos diferentes librerías: AJAL Data Exporter y RCaller (se utilizan por separado y segun el caso se utiliza una u otra).

integratingALR

AJAL Data Exporter

Librería desarrollada por Winchell Qian de la universidad de Saskatchewan que permite crear una conexión entre AnyLogic y R a través de un puerto virtual (socket). Una vez finalizada la simulación los datos tipo Array disponibles en AnyLogic (que son almacenados en estadísticas y datasets), son transferidos automáticamente a R. El usuario puede entonces aplicar todo tipo de estudios desde la consola de R o de un IDE como RStudio. Este método es muy eficiente para análisis posteriores a la simulación ya que la comunicación es de una sola vía y no transfiere resultados de R a AnyLogic.

El siguiente video es un demo de como configurar y utilizar esta librería:

AJAL Data Exporter es gratuito y puede ser descargado en los siguientes links:

Los links incluyen documentación y un modelo de ejemplo.

 

RCaller

RCaller es una librería desarrollada por Mehmet Hakan Satman de la universidad de Estambul que permite llamar una instancia virtual de R desde AnyLogic lo que permite transferir datos, manipular y realizar análisis en tiempo real, así como acceder a la línea de comandos y los gráficos de R (ver articulo).

La librería puede ser descargada en el siguiente link.

 

Cuál utilizar?

Como se infiere de las anteriores descripciones, AJAL Data Exporter es útil cuando se planea utilizar R luego de ejecutar la simulación, por ejemplo para exploración y manipulación de datos donde el proceso de análisis no está definido. Por el contrario, si se desea hacer manipulación de datos en tiempo real, bien sea para insertar gráficos avanzados o para elaborar análisis en R que requieren ser utilizados durante la simulación, es mejor usar RCaller.

 

Ejemplo

A continuación se presenta un sencillo ejemplo de la integración de R con AnyLogic utilizando la librería RCaller (también se encuentra un ejemplo con AJAL Data Exporter en el link de descarga). En un siguiente post se presentará un caso más complejo aplicando técnicas de control de procesos y arboles de clasificación.

En primer lugar se crea un nuevo modelo de AnyLogic (en este ejemplo se llama PLE 72 RCaller Test1.alp), el cuál requiere importar RCaller a la lista de clases.

importRCaller

A continuación se importan rcaller y las demás librerías necesarias para ejecutar el modelo

JavaImportRCaller

Una vez adentro de Main, creamos un botón desde la paleta de controles y lo llamamos R Plot (ver imagen)

rplotButton

En las sección de acción al pulsar el botón escribimos el siguiente código:

Explicación del código: Primero se crea el objeto RCaller, luego se indica la ubicación del ejecutable de R, en este caso C:/Program Files/R/R-3.2.3/bin/x64/Rscript.exe. Luego se inicia un nuevo código (tipo RCode) el cuál almacenará todos los datos, comandos y gráficos de R. Luego se crean los vectores y matrices a transferir y luego se inicia un objeto tipo File que contendrá los resultados de R.

Finalmente se ejecuta el experimento y una vez inicia se presiona el botón R Plot creando una ventana adicional con un gráfico generado por R (ver imagen)

rCallerExample1

El archivo puede ser descargado en el siguiente link.

 

La gama de aplicaciones al combinar estos dos programas es muy amplia en todos los campos (ciencias sociales, ingeniería, economía, etc.). Espere nuestro próximo post donde explicaremos ejemplos mas avanzados.

 

Nota final: Existen otros paquetes como JRI que permiten comunicar Java con R desde ejecición de simples comandos como la inserción de todo el script en la máquina virtual de Java. Este paquete puede ser consultado en el siguiente link https://rforge.net/JRI

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: