corte 2D

10
IX Congreso Internacional Interacción, Albacete 9-11 de Junio de 2008 Grupo LoUISE-Universidad de Castilla-La Mancha Interfaz Gráfica de Usuario para el Problema de Corte Bidimensional: Una Aplicación al Traje Típico de las Islas Canarias Jesica de Armas, Coromoto Leon, Gara Miranda and Carlos Segura 1 Universidad de La Laguna. Dpto. Estadística, I.O. y Computación. Av. Astrofísico Fco. Sánchez, s/n, 38271 La Laguna, Spain {jdearmas,cleon,gmiranda,csegura}@ull.es http://nereida.deioc.ull Resumen. Este artículo presenta una interfaz gráfica de usuario para la resolución del problema de corte bidimendional. Es sistema está aplicado a la industria textil, permitiendo la definición y manipulación de los patrones que componen el traje tradicional de las Islas Canarias. A través de los menús, el usuario ha de seleccionar la prenda que quiere confeccionar, la cantidad y las tallas, así como la cantidad de material disponible. Partiendo de ello el sistema se encarga de colocar los patrones. También se admite la elección de patrones individuales. Internamente, el sistema implementa una variante del algoritmo de Viswanathan y Bagchi para la resolución del problema de corte bidimensional. La herramienta permite seguir la traza de todas las posibilidades que el algoritmo ha descartado en la búsqueda de la solución que propone, que es calculada de forma remota en un servidor dedicado. Dicha solución final podrá ser modificada por el usuario arrastrando los patrones con el ratón hacia la posición de la tela que desee. En la programación de la interfaz se ha utilizado el API Swing de Java y en el algoritmo de resolución C/C++. 1 Introducción El problema de corte bidimensional tiene multitud de aplicaciones en el campo de la industria. Este tipo de problema surge cuando se dispone de una pieza grande de material (vidrio, tela, plástico, madera, etc.) que se debe cortar en piezas más pequeñas. Realizar los cortes de manera óptima es crucial, por lo que el problema de corte ha sido ampliamente estudiado y se han desarrollado múltiples aproximaciones. El problema de corte bidimensional (2-Dimensional Cutting Stock Problem - 2DCSP) es una de las variaciones más interesantes de los problemas de corte. Para facilitar la 1 Este trabajo ha sido subvencionado con fondos FEDER y del Ministerio de Educación y Ciencia dentro del 'Plan Nacional de I+D+i' (TIN2005-08818-c04-04). El trabajo de J. de Armas se ha desarrollado con una beca CajaCanarias-Universidad de La Laguna y el de G. Miranda con la beca FPU-AP2004-2290.

description

problema de corte multidimentsional 2d

Transcript of corte 2D

  • IX Congreso Internacional Interaccin, Albacete 9-11 de Junio de 2008 Grupo LoUISE-Universidad de Castilla-La Mancha

    Interfaz Grfica de Usuario para el Problema de Corte Bidimensional: Una Aplicacin al Traje Tpico de las Islas

    Canarias

    Jesica de Armas, Coromoto Leon, Gara Miranda and Carlos Segura1

    Universidad de La Laguna. Dpto. Estadstica, I.O. y Computacin.

    Av. Astrofsico Fco. Snchez, s/n, 38271 La Laguna, Spain {jdearmas,cleon,gmiranda,csegura}@ull.es

    http://nereida.deioc.ull

    Resumen. Este artculo presenta una interfaz grfica de usuario para la resolucin del problema de corte bidimendional. Es sistema est aplicado a la industria textil, permitiendo la definicin y manipulacin de los patrones que componen el traje tradicional de las Islas Canarias. A travs de los mens, el usuario ha de seleccionar la prenda que quiere confeccionar, la cantidad y las tallas, as como la cantidad de material disponible. Partiendo de ello el sistema se encarga de colocar los patrones. Tambin se admite la eleccin de patrones individuales. Internamente, el sistema implementa una variante del algoritmo de Viswanathan y Bagchi para la resolucin del problema de corte bidimensional. La herramienta permite seguir la traza de todas las posibilidades que el algoritmo ha descartado en la bsqueda de la solucin que propone, que es calculada de forma remota en un servidor dedicado. Dicha solucin final podr ser modificada por el usuario arrastrando los patrones con el ratn hacia la posicin de la tela que desee. En la programacin de la interfaz se ha utilizado el API Swing de Java y en el algoritmo de resolucin C/C++.

    1 Introduccin

    El problema de corte bidimensional tiene multitud de aplicaciones en el campo de la industria. Este tipo de problema surge cuando se dispone de una pieza grande de material (vidrio, tela, plstico, madera, etc.) que se debe cortar en piezas ms pequeas. Realizar los cortes de manera ptima es crucial, por lo que el problema de corte ha sido ampliamente estudiado y se han desarrollado mltiples aproximaciones. El problema de corte bidimensional (2-Dimensional Cutting Stock Problem - 2DCSP) es una de las variaciones ms interesantes de los problemas de corte. Para facilitar la

    1 Este trabajo ha sido subvencionado con fondos FEDER y del Ministerio de Educacin y

    Ciencia dentro del 'Plan Nacional de I+D+i' (TIN2005-08818-c04-04). El trabajo de J. de Armas se ha desarrollado con una beca CajaCanarias-Universidad de La Laguna y el de G. Miranda con la beca FPU-AP2004-2290.

  • 424 J. de Armas, C. Leon, G. Miranda, C. Segura

    visualizacin de las soluciones aportadas por el 2DCSP se ha desarrollado una interfaz grfica de usuario adaptada a la industria textil.

    Figura. 4.Interaccin entre el usuario y el sistema resolutor.

    Se han propuesto diversos algoritmos [1][2][3][4][5] para la resolucin del problema

    de corte. Sin embargo, las herramientas que los implementan suelen proporcionar la solucin en formato de texto. Lo ideal sera contar con una representacin grfica de la misma de forma que se pueda visualizar la disposicin final de las piezas [6]. En este trabajo, el sistema implementa una variante del algoritmo de Viswanathan y Bagchi [1] y representa la solucin de forma grfica (Figura 1). Adems, proporciona la posibilidad de seguir la traza de todas las posibilidades que el algoritmo ha descartado en la bsqueda de la solucin final. Dicha solucin final podr ser modificada por el usuario arrastrando los patrones con el ratn hacia la posicin de la tela que desee. En la programacin de la interfaz se ha utilizado el API Swing de Java y en el algoritmo de resolucin C/C++.

    Concretamente se ha implementado una interfaz de usuario para un sistema informtico que resuelve el problema de corte de las piezas del traje regional de mujer de la Orotava, localidad de la isla Canaria de Tenerife. El usuario ha de elegir de entre el conjunto de opciones disponibles las prendas en las que est interesado (falda, chaleco, camisa, etc.), la talla de las mismas y las dimensiones del material sobre el que se desea distribuir los patrones. Todo el trabajo de distribucin de los patrones se realiza automticamente, esto es, la herramienta lo que permite es simular en el ordenador el trabajo antes de llevarlo a cabo manualmente.

    Como ejemplo se considerar el Chaleco del traje tpico de la Orotava (Figura). Cada chaleco est compuesto de varios patrones de tela roja: dos hojas delanteras (Figura 3-a), dos asillas (Figura 3-b) y un patrn trasero que consta de una sola pieza (Figura 3-c). Para simplificar el problema, se puede aproximar cada una de las plantillas anteriores necesarias para elaborar un chaleco, por un patrn rectangular. De

    (a) Parte delantera del chaleco (b) Parte trasera del chaleco

    Figura 2. Chaleco del traje tpico de la Orotava

  • Interfaz grfica de usuario para el problema de corte bidimensional 425

    (a) Patrn delantero (b) Asillas (c) Patrn trasero

    Figura 3. Aproximacin de los patrones del chaleco

    esta forma, se ahorran muchos clculos (ya que, manejar piezas irregulares es mucho ms complejo) y el desperdicio introducido por ello es casi inapreciable. Hay que tener en cuenta que para cada uno de los chalecos a confeccionar se debe distribuir sobre la tela los cuatro patrones que lo conforman (dos hojas delanteras, dos asillas y una parte trasera). As pues, el problema consiste en distribuir un nmero determinado de piezas sobre la tela, de forma que el desperdicio obtenido de dicha tela sea el mnimo posible.

    Se trata de un proyecto innovador, puesto que en el campo acadmico y utilizando Java no se han encontrado programas de este tipo. El software al que se puede acceder normalmente es propietario y comercial. Dentro el mbito acadmico se han podido consultar diversos programas, y ninguno de ellos cumple con las cualidades de este. Por ejemplo, el marco de clases [7] desarrollado en Java resuelve el problema de corte para una sola dimensin, mientras que en este trabajo se resuelve para dos dimensiones. En [8] se explica el funcionamiento de una interfaz para la resolucin del problema de corte bidimensional de guillotina, pero se ha desarrollado en Visual Basic y Prolog, con los consecuentes inconvenientes de este software propietario. Finalmente, en [9] se pueden resolver on-line ejemplos de corte bidimensional de guillotina mediante una aplicacin de la que no se especifica el lenguaje de desarrollo. Aunque ofrece un resultado en formato de texto y grfico, para la recogida de datos es necesario construir y enviar un archivo usando un editor que hay que descargar, con lo que se vuelve menos cmodo e intuitivo el proceso. Adems no permite seguir la traza para la construccin de la solucin.

    El resto del artculo se organiza de la siguiente forma: En la seccin 2 se describe formalmente el problema de corte bidimensional. La descripcin del entorno de trabajo se realiza en la seccin 3. La seccin 4 se dedica a los detalles de implementacin. Finalmente se presentan las conclusiones y los trabajos futuros.

    2 El problema de corte bidimensional

    El 2DCSP es una de las variantes ms interesantes del problema de corte.Su definicin formal es la siguiente: Considere que se dispone de una superficie S de tamao L x A de un material determinado (Figura 4). Se cuenta adems con un conjunto de n patrones distintos, cada uno de dimensiones li x ai y con un beneficio

  • 426 J. de Armas, C. Leon, G. Miranda, C. Segura

    Figura 4. Elementos del Problema de Corte Bidimensional

    asociado ci. Sean bi el nmero de piezas del tipo i disponibles y xi el nmero de piezas del tipo i empleadas. El problema consiste en encontrar la distribucin del conjunto de patrones sobre la superficie S que haga que el beneficio obtenido sea mximo y el desperdicio de material sea mnimo, esto es:

    Maximizar n i=1 cixi sujeto a {R}

    donde R es un conjunto de restricciones especficas. Segn la definicin de este conjunto de restricciones se tendr un tipo de problema de corte particular. En el caso que nos ocupa, se trabajar con el denominado problema de corte guillotina, en el que todos los cortes son ortogonales a uno de los ejes.

    El sistema de resolucin automtica est implementado en C y C++.Se cuenta con implementaciones secuenciales y paralelas. Para utilizar estas ltimas es necesario tener acceso al hardware adecuado, por ello se ha optado por proporcionar un servicio remoto. El algoritmo de resolucin est basado en el de Viswanathan y Bagchi [1] (que usa una bsqueda primero-el-mejor) e incluye mejoras en el clculo de las cotas [11]. Para este algoritmo cualquier solucin se puede obtener como la combinacin de distintas disposiciones de piezas tanto en horizontal como en vertical. Una disposicin horizontal de dos rectngulos T1 y T2 de dimensiones x1 x y1 y x2 x y2 es un rectngulo de dimensiones (x1 + x2) x mx{y1, y2}. Por otro lado, una disposicin vertical de los mismos rectngulos es un rectngulo de dimensiones mx{y1, y2} x (x1 + x2) (Figura5).

    Figura 5. Construccin Vertical y Horizontal

  • Interfaz grfica de usuario para el problema de corte bidimensional 427

    Figura 6. Ejemplos de construcciones Verticales y Horizontales

    En la Figura 6 se muestran algunos ejemplos, ntese que las reas sombreadas

    representan desperdicio. Las soluciones factibles se representan mediante la frmula (T2|T3)|(T1-T2), o incluso mejor, se utiliza la notacin postfija para eliminar la necesidad de los parntesis y obtener una representacin ms compacta de la misma: T2 T3 | T1 T2 - |. Esta ltima notacin es la que utiliza el sistema de resolucin para devolver la solucin y para realizar la representacin grfica.

    3 Interfaz grfica de usuario

    La interfaz de usuario se muestra en la Figura 7. El entorno cuenta con una barra de mens en la parte superior, una barra de botones de acceso directo y una zona principal constituida por dos pestaas: Datos de Entrada y Datos de Salida.

    Datos de Entrada: es la pestaa activa por defecto y en ella se especifican los datos de entrada del problema a resolver (Figura 7-a). Los datos que se han de definir en esta pestaa son los relativos al tipo de material (tela), las prendas o patrones y la ejecucin. En cuanto a la tela, el usuario podr escoger entre Fieltro Rojo, Fieltro Verde, Tela Blanca y Tela a Rayas. Adems, se ha de fijar el alto y ancho del material elegido. En funcin del tipo de material elegido se habilitar un grupo de prendas y patrones que se pueden confeccionar con l. Para cada prenda se ha de especificar la talla (pequea, mediana, grande o extra-grande) y cantidad que se necesita. Para que el conjunto de patrones que conforman la prenda escogida se almacene en la Tabla de patrones es necesario SXOVDU HO ERWyQ ,QWURGXFLU de la seccin. De igual manera, si se desean introducir patrones individuales en lugar de prendas completas, se podrn seleccionar indicando su alto, ancho, cantidad y beneficio. Por ltimo, en la ]RQDGH(MHFXFLyQ se definen las opciones con las que el sistema

  • 428 J. de Armas, C. Leon, G. Miranda, C. Segura

    (a) Pestaa de datos de entrada

    (b) Pestaa de datos de salida

    Figura 7.Interfaz grfica de usuario

    resolver el problema especificado. Se ha de asignar un nombre a la instancia del SUREOHPD HQ HO FDPSR GH WH[WR $UFKLYR GH HQWUDGD. Adems el usuario puede escoger si desea que se muestre la traza de todas las posibilidades que el algoritmo ha descartado en la bsqueda de la solucin, seleccionando la casilla 7UD]D. Para obtener la VROXFLyQVHKDGHSXOVDUHOERWyQ(MHFXWDU o acceder a HVWDRSFLyQDWUDYpVGHOPHQ~+HUUDPLHQWDV. Datos de Salida: en esta pestaa se le presenta al usuario la disposicin de los patrones propuesta por el sistema (Figura7-b). Se puede comprobar el estado en que se encuentra la ejecucin. Una vez el sistema haya terminado de resolver el pUREOHPD VH KDELOLWDUi HO ERWyQ Ver SolXFLyQ. Cuando el usuario lo pulse se presentar la solucin en la zona de la izquierda.

    La BaUUD GH PHQ~V FRQVWD GH XQ PHQ~ Archivo', que proporciona las opciones

    relativas a la carga y almacenamiento de archivos con los datos de entrada a un problema. (OPHQ~(GLWDU proporciona las opciones de cortar, copiar y pegar distinto tipo de informacin y modificacin de los beneficios asociados por defecto a cada

  • Interfaz grfica de usuario para el problema de corte bidimensional 429

    prenda y talla. (O PHQ~ +HUUDPLHQWDV posibilita la ejecucin de un problema y visualizacin de la solucin, as como la manipulacin de la informacin que se agrega en la tabla de patrones. (OPHQ~$\XGD permite desplegar informacin acerca del uso del entorno grfico.

    Se dispone ademV GH XQ ERWyQ (MHFXWDU HQ OD Barra de AcFHVR 'LUHFWR que permite obWHQHU OD VROXFLyQ DO SUREOHPD XQ ERWyQ /LPSLDU 7DEOD que permite eliminar el contenido de la tabla de patrones y un bRWyQ(OLPLQDU)LODV con el que se eliminan las filas de la tabla de patrones que se encuentren seleccionadas.

    4 Detalles de la implementacin

    Cuando el usuario ha especificado el problema a resolver y pulsa el botn de ejecucin, se comprueba si ya se dispone del archivo de la solucin en el directorio correspondiente a los ejemplos. Si es la primera vez que se ejecuta la instancia es necesario invocar al servicio remoto para obtener la solucin. Este servicio se encuentra implementado como un servlet que se encarga de recibir el archivo con la informacin del problema e invocar al algoritmo de resolucin. Para la transmisin de los datos de entrada a dicho servlet se ha utilizado la clase MultiPartFormOutputStream. El hilo correspondiente queda a la espera de obtener la solucin, que ser almacenada en otro archivo. El archivo de salida sigue una sintaxis especfica que permite representar la traza de todas las posibilidades que el algoritmo ha descartado o directamente la solucin final. La notacin utilizada [10] para representar la solucin permite definir la forma en la que hay que colocar los patrones para obtener la representacin grfica de la misma. Haciendo uso de ella y de la informacin asociada a cada uno de los patrones, se crea una pila de objetos (Figura 8). Esta pila representa el dibujo de uno o varios patrones distribuidos vertical u horizontalmente. Cuando la solucin est analizada completamente, en la cima de la pila se encontrar el objeto con el GeneralPath correspondiente a la distribucin final de los patrones [12]. Cada patrn consta de un conjunto de lneas y arcos en unas disposiciones concretas, que se van concatenando hasta obtener la forma completa. El objeto final de tipo ClaseGraficoPatrones se aade a la lista de patrones, se le agrega su ndice en la lista y se inserta en la pila. Los dos objetos de la pila situados en la cima sern los que se concatenen vertical u horizontalmente segn indique la notacin de la solucin y el resultado se insertar a su vez en la cima de la pila.

    En la Figura 9 se muestra el cdigo correspondiente a la distribucin horizontal de objetos. La vertical es similar. Como se puede observar, se extraen los dos objetos que se encuentran en la cima de la pila y mediante una transformacin afn (AffineTransform) se desplaza la posicin de los atributos de tipo GeneralPath del primero de ellos para finalmente concatenrselos a los correspondientes atributos del segundo objeto. Para realizar una concatenacin en horizontal es necesario desplazar

  • 430 J. de Armas, C. Leon, G. Miranda, C. Segura

    Figura 8. Ejemplo de funcionamiento de la pila

    la posicin en el eje x de un patrn tanto como indique el atributo posX del objeto con el que se desea concatenar, mientras que en el eje y se dejar como estaba originalmente. En cambio, para realizar una concatenacin en vertical la posicin en el eje x no se cambia y para el eje y se hace uso del atributo posY del objeto con el que se desea concatenar. Para finalizar se han de actualizar correctamente los nuevos atributos posX y posY del objeto correspondiente a la concatenacin e introducirlo en la cima de la pila.

    Una vez que el sistema ha realizado la propuesta de disposicin de patrones sobre la tela, el usuario podr modificarla arrastrando los patrones con el ratn. Para hacer esto posible se ha creado la clase ListaPatrones. Dicha clase consta de un atributo de tipo java.util.Vector y un conjunto de mtodos para manejarlo. Se trata de una lista formada por el conjunto de patrones que el usuario ha seleccionado para colocar sobre la tela. Cada elemento de la lista ser del tipo ClaseGraficoPatrones que contendr los dibujos (GeneralPath) de dichos patrones en las posiciones que les corresponda. La clase ListaPatrones posee adems un mtodo que, dado un punto y una lista de patrones, devuelve el primer patrn que contiene el punto. La clase AreaCorte dispone de cdigo donde se determina el patrn que se est intentando desplazar, se mueve a la nueva posicin mediante una transformacin afn y se actualiza el dibujo. En el cdigo mostrado en la Figura 9 se observa que a la hora de realizar una concatenacin en horizontal o vertical, se obtiene el listado de patrones de los que consta la composicin que se ha llevado hasta el momento y se desplaza cada uno de ellos a la posicin correspondiente. El atributo indicesListaP de la clase ClaseGraficoPatrones es el que se utiliza para almacenar los ndices de los patrones que conforman un grfico. Esto es necesario para poder disponer de la localizacin de cada patrn cuando se desea realizar un desplazamiento con el ratn. Si el usuario desea volver a ver la propuesta de disposicin de patrones que realiza el sistema, ha de volver a pulsar los botones de ejecucin y visualizacin.

    int indice; ClaseGraficoPatrones gr1 = (ClaseGraficoPatrones) SolStack.pop(); ClaseGraficoPatrones gr2 = (ClaseGraficoPatrones) SolStack.pop(); GeneralPath p1 = gr1.getPath(); GeneralPath pbg1 = gr1.getPathbg();

  • Interfaz grfica de usuario para el problema de corte bidimensional 431

    if (!ficticia) { AffineTransform af = new AffineTransform(); af.translate(gr2.getPosX(), 0); for (int i = 0; i < gr1.getSizeVector(); i++) { indice = (Integer) gr1.getIndice(i); ClaseGraficoPatrones gr3 = (ClaseGraficoPatrones)listaP.getObj(indice); gr3.getPath().transform(af); gr3.getPathbg().transform(af); listaP.insertObjAt(gr3,indice); gr2.insertIndice(indice); } gr2.addShape(p1); gr2.addShapebg(pbg1); } ficticia = false; // Actualizar posicion posX y posY gr2.setPosX(gr2.getPosX() + gr1.getPosX()); int altura = gr1.getPosY(); if (altura < gr2.getPosY()) gr2.setPosY(altura); SolStack.push(gr2);

    Figura 9. Concatenacin horizontal

    5 Conclusiones

    Se ha presentado una interfaz grfica de usuario que permite la definicin y manipulacin de los patrones que componen el traje regional de la Villa de la Orotava en las Islas Canarias. La herramienta proporciona de forma automtica una disposicin visual de los patrones de las prendas elegidas sobre el material seleccionado, haciendo uso de la solucin en formato de texto que propone el sistema de resolucin. De este modo se consigue que el desperdicio de tela sea inferior al que producira una persona especializada en la correspondiente etapa de produccin (en este caso textil), con el consecuente ahorro de personal y tiempo empleado en estas labores.

    Actualmente se est profundizando en una mejora de la representacin de la solucin. Asimismo, se pretende trabajar en las implementaciones paralelas del algoritmo de resolucin para que se pueda escoger entre llevar a cabo una invocacin de estas versiones en OpenMP y MPI, y la versin secuencial.

    Referencias

    1. Viswanathan, K. V. , Bagchi, A. (1993). Best-First Search Methods for Constrained Two-Dimensional Cutting Stock Problems. Operations Research, vol.41, n.4, p.768--776.

    2. Hifi, M. (1997). An Improvement of Viswanathan and Bagchi's Exact Algorithm for Constrained Two-Dimensional Cutting Stock. Computer Operations Research, vol.24, n.8, p.727--736.

  • 432 J. de Armas, C. Leon, G. Miranda, C. Segura

    3. Wang, P. Y. (1983). Two Algorithms for Constrained Two-Dimensional Cutting Stock Problems. Operations Research, vol.31, n.3, p.573--586.

    4. Burke, E., Kendall, G. (1999). Applying Simulated Annealing and the No Fit Polygon to the Nesting Problem. Proceedings of the International Conference on Artificial Intelligence (IC-AI'99), vol.1, p.51--57.

    5. Maouche, S., Bounsaythip, C. (1996). Optimizing Textile Shape Placement by Tree Genetic Annealing}.Proceedings of the Society for Computer Simulation Conference (SCSC'96).

    6. Shneiderman, B., Plaisant, C. (2006). Diseo de Interfaces de Usuario. Estrategias para una Interaccin Persona-Computador Efectiva. Pearson Education.

    7. BEA WebLogic Catalog. http://www.componentsource.com/beasv/products/it-component-factory-guillo\-tine-cutting-stock-problem-solver/summary.html

    8. Mc Hale, M. L., Shah, R. P. http://www.amzi.com/articles/papercutter.htm 9. Guillotina/GPC. http://optimos1.diinf.usach.cl/guillotina/index.php 10. Len, C.; Miranda, G.; Rodrguez, C. and Segura, C.} (2007) 2D Cutting Stock Problem: A

    New Parallel Algorithm and Bounds. In Proceedings of the Euro-Par 2007, Parallel Processing, 13th International Euro-Par Conference, LNCS 4641, p.795804.

    11. Miranda, G. , Len, C. (2005). Bsquedas A*: Un Esqueleto Paralelo. In Actas de las XVI Jornadas de Paralelismo, Granada. Thompson p.503510.

    12. Horstmann, C., Cornell, G.(2002). JAVA 2. Caractersticas Avanzadas. Prentice Hall.