21 Aug

SimOpti: Video

En Stream Systems hemos diseñado un nuevo producto llamado SimOpti, un simulador en línea destinado a terminales de petróleo que permite analizar diversos escenarios y optimizar la configuración de tanques, rutas, oleoductos entre otros en un ambiente seguro, confiable y eficiente. El siguiente es un video tipo tablero (white board) que explica con un sencillo ejemplo el tipo de aplicaciones que se pueden resolver con este sistema.

El lanzamiento de este producto esta planeado para el 28 de septiembre de 2016.

16 Aug

Introducción a HeuristicLab

heuristic1

Recientemente he comenzado a trabajar con HeuristicLab (HL), un software de optimización heurística desarrollada por un grupo de colaboradores del Laboratorio de Algoritmos Heurísticos y Evolutivos (HEAL) de la Universidad de ciencias aplicadas de Viena.

HeuristicLab permite desarrollar una gran variedad de modelos, desde algoritmos de búsqueda y análisis hasta aplicaciones industriales, pasando por problemas de optimización combinatoria (VRP,  job shop, knapsack, etc.), modelos de clasificación, e incluso puede ser integrado con aplicaciones externas tales como Matlab, AnyLogic, Scilab, etc., para la generación de escenarios, el análisis de resultados y la optimización de problemas complejos.

HL comenzó en el año 2002 y ha sido desarrollado en Microsoft .NET y C#, siempre con enfoque principal en la educación e investigación.

HeuristicLab es un software gratuito (licencia GNU del Free Software Foundation) y sus librerías pueden ser distribuídas e integradas en otros programas.

HL cuenta además con una interfaz bastante sencilla que permite ejecutar los modelos de muestra, modificarlos e incluso crear nuevos algoritmos bien sea por código o utilizando la funcionalidad gráfica que permite arrastrar y conectar elementos para controlar el flujo del proceso de decisión.

Finalmente, HL puede ser utilizado para procesamiento paralelo en modelos de gran demanda computacional.

Una lista mas completa de las funcionalidades de HL puede ser consultada en el siguiente flyer.

 

Para mayor información los invito a visitar el sitio web de HeuristicLab en el siguiente link, particularmente la sección de documentación.

Así mismo, los invito a ver el siguiente video que presenta las principales funcionalidades de HeuristicLab.

Próximamente estaré publicando otros posts con aplicaciones de HeuristicLab, particularmente en integración con AnyLogic.

16 Aug

Cuándo usar Java Class y cuándo Agentes en AnyLogic

class vs agent

Para aquellos familizarizados con la programación, es común la utilización de clases en la manipulación de objetos. Una clase en términos generales es una plantilla de código donde se crean los objetos del programa. Los objetos son entidades personalizadas con atributos y operaciones específicas (para entender con mayor detalle el concepto de clases y objetos sugiero leer los siguientes artículos: conceptos y ejemplo sencillo ).

Un concepto similar a una clase es un agente. Los agentes son plantillas genéricas que permiten capturar atributos (parámetros, variables, colecciones, etc.), realizar calculos, gráficos, animaciones e incluso incrustar grupos de agentes adicionales. Todas estas funcionalidades son igualmente posibles en una clase Java, así que porqué utilizar una u otra figura?

Desde el punto de vista de complejidad y curva de aprendizaje, el agente es mejor opción ya que todas sus propiedades son creadas con solo arrastrar el ícono del elemento requerido. Por ejemplo, si se quiere agregar una variable, se arrastra el ícono correspondiente, se cambia el tipo de valor (doble, string, etc.) y se re-nombra. Igual con colecciones, poblaciones, estadísticas, etc. (ver animación).

agent ex

La misma operación en una clase requiere de cierto conocimiento de programación para poder definir correctamente las variables, tipo de acceso, funciones, etc. En otras palabras, todo debe hacerse mediante código (ver animación).

class ex

Una clase puede volverse confusa para un usuario si desde su diseño no ha sido bien estructurada. Una práctica recomendada por muchos usuarios es utilizar agentes de manera general, incluso convertir las clases Java en agentes (AnyLogic ofrece esa posibilidad como se observa en la imagen siguiente)

convert_class

Otro beneficio relacionado con el uso de agentes es las poblaciones. Grupos de agentes pueden ser almacenados y manipulados en poblaciones, las cuales tienen incluso funciones pre-definidas que permiten organizar, filtrar, etc. Las clases Java no pueden almacenarse igual y deben ser (si se requiere) añadidas a colecciones.

Cuando usar clases?

A pesar de ser recomendados los agentes, dado que se pueden realizar las mismas actividades existen casos en los que es mejor utilizar clases, a continuación algunos ejemplos:

  1. Almacenamiento de información: En muchos modelos se requiere almacenar información (local o global) que no requiere ser manipulada, solo creada y consultada. Un ejemplo muy común es la creación de órdenes o pedidos, o la lista de pasajeros de un vuelo, o los registros de mediciones de un evento. La clase Java Pedido puede ser la lista de ítems requeridos con cantidad. Se crea periódicamente y se envía a una gente para que aliste los productos en una bodega cuyo contenido es una lista con objetos (agentes o simplemente números).
  2. Cálculos o Elementos que requieren ser transportados entre diferentes softwares: Cuando se trabaja en equipos de desarrollo, es común que partes del mismo programa sean desarrollados por diferentes personas o equipos. Los cálculos  son generalmente desarrollados por especialistas en el mismo o diferente software y luego enviados a los modeladores para ser incorporados. Las clases son ideales para esto pues son transportables y pueden ser validadas en otros ambientes (tests funcionales y control de cambios).
  3. Limitación de agentes: Ciertas versiones de AnyLogic como la PLE tienen limitaciones en cuanto al número de agentes a utilizar y por ende si el modelo es complejo se requiere combinar clases con agentes (ver comparación de ediciones, sección tamaño del modelo).

 

Editions

%d bloggers like this: