02 Sep

Flow Shop Scheduling

Flow Shop Scheduling

Recientemente trabajé en un proyecto con estudiantes de la universidad de Seúl (Korea) para desarrollar un simulador que pudiese implementar diferentes algoritmos de organización de la producción en un taller tipo Flow-Shop.

El modelo fue desarrollado en AnyLogic utilizando simulación a base de agentes. Los trabajos y las máquinas se representan por agentes y deben organizar la producción (secuencia de trabajos) según la metodología previamente definida. Estas metodologías pueden ser:

  • Alocación aleatoria
  • Organizado en forma ascendente por tiempo total de ciclo
  • Organizado en forma descendente por tiempo total de ciclo
  • NEH: Llamado así por sus autores Nawaz, Enscore y Ham, es tal vez el algoritmo mas eficiente par organizar talleres tipo flow shop. Parte de la organización iterativa de los trabajos comenzando por los tiempos de ciclo mayor, evaluando a cada iteración el makespan esperado y eligiendo el menor. Puede encontrar una explicación con ejemplos en el siguiente link
  • Secuenciación multi-etapa: Algoritmo propuesto por Modrák y Pandian (ver link) el cuál es una adaptación del famoso algoritmo de Johnson (1954) considerado como el mejor método de organización de 2 máquinas y n trabajos. Este algoritmo agrupa las m máquinas en dos grupos transformando el tiempo de trabajo de cada  unidad y a continuación aplica el método Johnson tradicional.

El modelo permite agregar variabilidad al tiempo de trabajo, lo que repercute en la organización original requiriendo que periódicamente los algoritmos deban ser re-ejecutados para evaluar el plan de trabajo.

Una etapa futura de este proyecto consiste en agregar múltiples máquinas por estación, almacenamientos temporales (buffers) y estratégias de re-organización que combinen las heurísticas descritas arriba con mecanismos de negociación entre los agentes de manera que las estaciones resuelvan horizontes relativamente cortos de planificación de manera autónoma.

Un video de este modelo se presenta a continuación.

14 May

Integrando AnyLogic y R: Gráfico de control

  • Intro
  • Modelo AnyLogic
  • Resultados
  • Qué hacer

Un concepto común en la ingeniería industrial es el control estadístico de procesos, el cuál consiste en la definición de un proceso a partir de rendimientos estándares de manera que el control de calidad de los productos no requiera de una precisa medición de cada unidad, sino de la revisión de los estadísticos del proceso. Si estos tuvieron alguna desviación frente a sus estándares (media y desviación típica), se sospecha que pueden haber fallas de calidad en los productos y solo entonces se procede a la revisión individual de los productos, lo que reduce sustancialmente los tiempos de ciclo en la producción (ver link).

Una herramienta fundamental para esto es el gráfico de control el cuál permite visualizar para una actividad o proceso específico, el histórico de tiempos de proceso en secuencia, de manera que se establezca el tiempo promedio y los límites superiores e inferiores del proceso. Estos límites marcan la frontera del control estadístico, así un ciclo cuyo tiempo esté por encima del límite superior o por debajo del inferior, se presume anómalo desde el punto de vista estadístico. Los administradores de procesos deciden entonces si se trata de un hecho puntual para una unidad atípica o si es una tendencia del proceso y por ende se requieren tomar medidas bien sea frente al lote de producción, al recurso (un operario fatigado o una máquina próxima a mantenimiento) o a la materia prima entre otras.

Los límites de control son usualmente definidos en función de la desviación estandar del proceso, en general tres desviaciones hacia arriba y hacia abajo son la norma, lo que entre otras es la base de la metodología six sigma.

El gráfico siguiente es una muestra de cómo luce un gráfico de control, donde se evidencia que los ciclos de 4:30 y 6:00 estan por encima del límite superior. Adicionalmente se evidencia que el proceso en general está aumentando su tiempo promedio de ciclo lo cuál puede ser debido a una fatiga del recurso y por tanto requiere de una acción preventiva.

qchart

En ocasiones los límites son controlados artificialmente para aumentar o reducir la variabilidad. Esto sucede cuando uno o varios componentes no son homogéneos o bien cuando se quieren fijar controles específicos (ejemplo reducir los límites a dos desviaciones estándares para los pedidos de un cliente específico o para los productos de exportación).

En este tutorial mostraremos cómo generar estos gráficos de manera automática en AnyLogic con la ayuda de R y cómo hacer uso de ellos para controlar un proceso.

El modelo a simular será una estación de trabajo con una fuente y una salida. El tiempo de procesamiento será una función que explicaremos mas adelante. Adicionalmente se requiere una imagen sin contenido, un dataset y combobox y dos sliders (ver imagen).

alscreenshot_qcc

Agregamos a la lista de dependencias del modelo la librería RCaller-2.5.jar

Rcaller_dependency

La siguiente es la función para controlar el tiempo de proceso tProc()

La cuál integramos en el servicio como tiempo de espera (ver imagen). Adicionalmente agregamos el código que permite actualizar el gráfico de control cada cierta cantidad de piezas procesadas (variable each)

delay_qcc

La función updateControlChart() conecta AnyLogic con el ejecutable de R (RScript), transmite datos y realiza operaciones, en este caso crea el gráfico de control, el cuál se guarda en una dirección temporal del ordenador. La dirección es usada para cambiar periódicamente la fuente del objeto imagen lo que actializa el gráfico de control.

Esta función permite además identificar las piezas cuyo tiempo están por encima de los límites de control (variable violations). Si hay al menos una pieza en esta categoría, el ID de la pieza y el tiempo de proceso pueden ser conocidos haciendo click en el botón "Defectos". Los límites de control también pueden ser fijados haciendo click en el combobox "Fijar Límites" y variando los sliders.

El siguiente es un video demostrando el modelo de simulación en funcionamiento.

Los archivos pueden descarcarse en el siguiente link.

Este modelo fue hecho usando AnyLogic 7.3.3 y Microsoft R Open V 3.2.4, sin embargo como se muestra en el video, es posible cambiar el origen de RScript para usar el script original de R.

Este modelo es solo una muestra de las posibles aplicaciones que se pueden hacer integrando AnyLogic y R, sin embargo R cuenta con una serie de paquetes especializados en muchos campos que permiten ampliar la gama de aplicaciones. Un ejemplor puede ser utiizar paquetes de análisis estadístico (ejemplo MASS, statmod) para identificar distribuciones de probabilidad atípicas y generar predicciones sobre tiempos de operación en las estaciones para mejorar la alocación de tareas, o aplicar minería de datos  (paquetes car y caret) para clasificar actividades según rendimiento, o incluso utilizar aprendizaje autónomo (machine learning) para predecir comportamientos que mejoren la programación y sequenciación (nnet, neuralnet, RSNNS, deepnet, darch).

También es posible utilizar librerías especializadas para diseñar gráficos más avanzados que los suministrados por AnyLigic (ggplot).

En el próximo post de esta serie se explicará un ejemplo aplicando minería de datos y aprendizaje autónomo en R para optimizar un proceso de mediana complejidad.

 

07 Feb

IIE será ahora IISE

Esta semana el Instuto de Ingenieros Industriales (IIE por sus siglas en inglés) anunció su decisión de cambiar su nombre a Instituto de Ingenieros Industriales y de Sistemas IISE (ver anuncio).

 

IIE_to_IISE

El cambio era esperado y sorprende por qué tomó tanto para llegar a él dado que muchas voces reconocidas vienen solicitando esta adaptación hace años.

Autores como James Womack y Daniel Jones lo sugirieron en su libro "Lean Thinking: Banish Waste and Create Wealth in Your Corporation" (Simon & Schuster, New York 1996), y desde entonces muchas voces se han sumado a la misma iniciativa, como es el caso del libro "Handbook of Industrial Engineering: Technology and Operations Management" (John Wiley & Sons, New York 2001) editado Gavriel Salvendy donde en el capítulo 1 ("Full Potential Utilization of Industrial and Systems Engineering in Organizations") escrito por D. Scott Sink (Exchange Partners) David Poirier (Hudson’s Bay Company) y George Smith (The Ohio State University) proponen una definición clara de la ingeniería industrial y de sistemas así:

An Industrial and Systems Engineer is one who is concerned with the design, installation, and improvement of integrated systems of people, material, information, equipment, and energy by drawing upon specialized knowledge and skills in the mathematical, physical, and social sciences, together with the principles and methods of engineering analysis and design to specify, predict, and evaluate the results to be obtained from such systems.

Es decir, el ingeniero industrial y de sistemas es alguien quien se ocupa por el diseño, instalación y mejora de sistemas integrados de personas, materiales, información, equipos y energía, integrando conocimiento integrado y habilidades basadas en matemáticas, física y ciencias socieales, con principios y métodos de ingeniería para especificar, predecir y evaluar resultados obtenidos por estos sistemas.

En escencia esta definición no cambia la base de la ingeniería industrial, sin embargo implica un acercamiento mayor a los sistemas tanto en el conocimiento y manipulación de los mismos como en la integración de estos a los métodos tradicionales de la ingeniería industrial, lo que va en concordancia con las exigencias del mundo actual en el cuál conceptos como el Big Data o el Internet of Things han tomado total relevancia en las empresas y requiere de profesionales preparados para estos retos.

En otras palabras un buen ingeniero industrial (o ingeniero industrial y de sistemas) debe tener un conocimiento de sistemas avanzados incluyendo manejo avanzado de hojas de cálculo (incluyendo macros), programación (al menos un lenguaje), manipulación de bases de datos (MS Access, SQL, etc.), sistemas matemáticos y estadísticos (Matlab y/o cualquier otro softeare especializado), simulación (al menos un software o una librería de un lengaje reconocido), así como la integración de estos con los sistemas empresariales para la aplicación de los métodos tradicionales de ingeniería.

Esta nueva habilidad es definida por Sink, Poirier y Smith como Gestión de sistemas y se convierte en el cuarto pilar de la ingeniería industrial y de sistemas (ISE), como se muestra en la siguiente figura:

ISE Domain

 

En horabuena por esta iniciativa, esperemos las universidades adapten sus currículos de acuerdo a estos preceptos.

%d bloggers like this: