Está en la página 1de 10

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.

IX Congreso Internacional Interaccin, Albacete 9-11 de Junio de 2008


Grupo LoUISE-Universidad de Castilla-La Mancha

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

(a) Patrn delantero

(b) Asillas

425

(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 extragrande) 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 TwoDimensional 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 (ICAI'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-componentfactory-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.