Está en la página 1de 16

Interfaz Gráfica para la

Optimización de Procesos de
Producción.

Marlyth Leggs Romero
Matrı́cula 30138
Maestrı́a en Ciencias de la Ingenierı́a
Septiembre de 2015

Metodologı́a 4 5. Objetivo 3 3. Introducción 3 2. Resultados obtenidos 5 6. Anexos 13 CETYS Universidad 2 . Justificación 4 4.Índice 1. Conclusiones 11 7.

con la finalidad de encontrar las condiciones óptimas que permitan lo- grar el máximo rendimiento o el menor costo. Introducción Existen varios métodos muy eficaces que permiten hacer el estudio de maxi- mización y/o minimización de recursos y costos. 2. El proyecto presentado a continuación está enfocado en aquellos métodos que utilizan la programación lineal para resolver los problemas planteados. Resumen Este proyecto presenta el desarrollo de una herramienta sencilla y eficaz utili- zada para la optimización de procesos de producción. recursos y variables que integran el proceso. Sin embargo. los progra- mas que ofrecen este recurso generalmente son muy difı́ciles de manejar lo que dificulta aun más el análisis del problema para quienes no están familiarizados. ya sea. mediante métodos de programación lineal. SIMPLEX 1. problemas involucra- dos con procesos de producción para obtener un beneficios máximos o la reduc- ción de costos en la asignación de recursos en los problemas de transporte.El objetivo principal es desarrollar una interfaz en la que se pueda analizar detalladamente y de manera sencilla todas las actividades. Programación Lineal. Objetivo Crear una herramienta flexible que permita optimizar. siempre y cuando las problemáti- cas cumplan con las condiciones soportadas por el sistema programado. CETYS Universidad 3 . Los principales problemas a resolver serán aquellos que involucran maximización de utilidades o beneficios. la cual permitirá. la mayorı́a de las empresas tienen pocas nociones o simplemente no tienen ningun conocimiento de la existencia o el manejo de dichas herramientas. si será muy importante que el usuario logre definir la problemáti- ca a resolver mediante un modelo matemático que permita ser analizado por el sistema ha desarrollar. encontrar las condiciones óptimas que permitan lograr el máximo rendimiento y/o el menor costo. ası́ como la minimización de costos relacionados al problema de transporte. Sin embargo. Por otra parte. con el programa o con el método. Palabras Clave: Optimización.

Para lograr hacer que la interfaz gráfica arroje valores confiables será necesa- rio que primero se plantee un modelo matemático del problema. evaluar. CETYS Universidad 4 . que generalmente sólo está presentado de forma verbal. Una vez planteado el modelo y ya asignados los valores en las casillas de la interfaz. el programa procederá a resolver el problema mediante el método SIM- PLEX. 4. el cual es un método iterativo que consiste en evaluar la función objetivo en cada una de sus posibles soluciones hasta encontrar la solución óptima de maximización o minimización según sea el caso. Es importante mencionar que la codificación del sistema se hará a través del software matemático MATLAB versión R2010a. la cual representa la ecuación que se desea optimizar. los programas que existen para hacer estudios de opti- mización resultan ser bastante complejos para aquellas personas que no están familiarizados con estos sistemas. Los elementos básicos del modelo son la Función Objetivo. Justificación En la actualidad. 3. ya sea para maximizar o minimizar una función lineal. y optimizar procesos industriales a cual- quier persona que esté interesada en hacerlo. Es por ello que es necesario que en las empresas se cuente con un mecanismo sencillo que permita analizar. la cual es una técnica que tiene como objetivo asignar de la mejor forma posible los recursos limitados entre las acti- vidades que se involucran. Metodologı́a El presente proyecto está enfocado en resolver problemas los cuales estén relacionados con Programación Lineal. las va- riables que se involucran dentro del modelo y por último las restricciones de los recursos.

el algoritmo solo funcionará en aquellos problemas cuyas res- tricciones tengan un lı́mite superior (restrecciones con ”menor igual”) esto con el fin de evitar confuisones a aquellos usuarios que no estén relacionados con el planteamiento de los modelos matemáticos en el método SIMPLEX. Por cuestiones de capacidad. además. el software creado tiene como lı́mite el uso de un máximo de 8 variables y hasta 10 restricciones posibles. CETYS Universidad 5 . Para poder explicar mejor el uso de la interfaz. se presentará un problema planteado en el libro de Jimenez y Quesada [4]. 5. Figura 1: Ventana de inicialización. Resultados obtenidos Una vez iniciando el software matemático automaticamente se abrirá una ventana en la cual se deben introducir los datos del modelo matemático que re- presenta el problema a resolver.

es momento ahora de introducir todos los datos a la interfaz gráfica. Para su venta se hacen dos lotes A y B. El lote A contiene 1 kg de naranjas. sabemos que el lı́mite del almacén es de 800 kg de naranjas. El beneficio por kg que se obtiene con el lote A es de $1200 M. entonces la Función Objetivo quedará de la siguiente manera: M axZ = 1200XA + 1400XB (1) El siguiente paso es representar las restricciones a manera de ecuación. 2 kg de manzanas y 1 kg de plátanos. XB ≥ 0 (5) Con la ecuación anterior se ha terminado de plantear el modelo. con el lote B. el lote A se compone de 1 kg de naranjas. dichas ecuaciones se enumeran como sigue: 2XA + XB ≤ 800 (3) XA + XB ≤ 500 (4) Una condición importante en el análisis del método SIMPLEX. 1 kg de manzanas y 1 kg de plátanos. 800 kg de manzanas y 500 kg de pl átanos. CETYS Universidad 6 . Determinar cuántos kilogramos de cada tipo se necesitan para obtener un beneficio máximo. el lote B se compone de 2 kg de naranjas. Según el problema. Sabiendo que las utilidades son de $1200 y $1400 respectivamente. el lote B se compone de 2 kg. Lo primero que hay que hacer para poder plantear al modelo matemático es definir las variables: XA : Número de lotes tipo A por formar. N y de $1400 M. es decir: XA . XB : Número de lotes tipo B por formar. En un almacén de frutas hay 800 kg de naranjas. es que las variables nunca deben ser negativas. por lo que dicha destricción se puede escribir de la siguiente forma: XA + 2XB ≤ 800 (2) Análogamente para las condiciones de manzanas y plátanos. y a su vez. es por ello que se establece la condición de la no negatividad. N.

CETYS Universidad 7 . se debe especificar el cálculo deseado (Maximización o Minimización). una vez ejecutado el algoritmo se abrirá una nueva ventana en donde aparecerán los valores de la solución óptima del modelo. Una vez seleccionando el número de variables y restricciones se deben colocar solamente los coeficientes que corresponden a cada variable del modelo matemáti- co tal como se muestra en la Figura 2. de lo contrario los resultados que arroje el sistema serán poco confiables y/o el modelo no arrojará ninguna solución. Posteriormente. Figura 2: Representación del modelo matemático en el sistema Es importante tomar en cuenta que la colocación de los datos debe ser precisa.

Con lo anterior se concluye que. el almacén debe vender 200 lotes de tipo A y 300 lotes de tipo B para alcanzar un total de beneficios de $ 600.000 M. Figura 3: Ventana de resultados. para lograr el beneficio máximo. N. CETYS Universidad 8 .

será necesario que los coeficientes de la función objetivo aparezcan con el signo contrario. Donde el modelo matemático representado en la Figura 4 esta dado por la ecuación: M inZ = 4000X1 + 3000X2 (6) CETYS Universidad 9 . en el caso de que se desee hacer una minimización del modelo. Un ejemplo de ello se muestra en la siguiente imagen: Figura 4: Problema de minimización. esto se debe al acomodo de las celdas en el algoritmo de programación. Por otra parte.

una vez ejecutado el algoritmo se obtienen como resultados X1 =5. X2 =5 y Z=35. X2 ≥ 0 Del cual.000. CETYS Universidad 10 . sujeto a: X1 ≤ 6 2X2 ≤ 10 (7) 15X1 + 5X2 ≤ 100 X1 .

Sin embargo. los resultados arrojados fueron acertados y contundentes. sin lugar a dudas. 6. CETYS Universidad 11 . una vez logrado lo anterior y cumpliendo con los requerimientos básicos del sistema. las principales dificultades a la hora de la utilización de la herramienta fue. con el fin de brindarle al usuario mayor capacidad de respuesta en problemas que imploquen una mayor dificultad. Por otra parte. Es importante mencionar que an se sigue trabajando en la mejora del algoritmo de solución. Conclusiones Después de ejecutar el programa a prueba y error varios ejercicios se comprobó que los resultados que arroja el software efectivamente son los óptimos por lo que dicha herramienta demuestra ser lo suficientemente con- fiable para su uso e implementación en problemas de optimización. lograr que el usuario transformara la problemática a tratar en un modelo matemático acertado.

Ed. Hanna. Limusa. (2004) Métodos y modelos de investigación de operaciones I: Modelos determinı́sticos. [5] Render. G. M. Quesada. México.. México. Pearson Educación. (2006) Cien problemas de programación li- neal.. J. México. L. T. M. Edición. B.. (2012) Métodos cuantitativos para los negocios. Manizales. [3] Mocholi. Editorial Tébar Flores. Colombia. Stair. 11a. Pearson Educación. CETYS Universidad 12 . 7a. S. V. R. R. (2004) Investigación de Operaciones. Sala. edición. Referencias [1] Prawda. [2] Hamdy. (1993) Programación Lineal: Metodologı́a y pro- blemas. [4] Jiménez.

. tablaVAR . . s e t ( h a n d l e s . f u n c t i o n v a r a r g o u t = INTERFAZ OutputFcn ( hObject . .. e v e n t d a t a . ancho =(276)/ l e n g t h ( columnas ) . f i l a s ) . . tablaVAR . h a n d l e s . ’ ’ ) . ’ ColumnWidth ’ . f i l a s ( 1 ) = { ’Z ’ } . orden=s i z e ( f i l a s ) . h a n d l e s ) h a n d l e s . []). @INTERFAZ OpeningFcn . ’ gui OpeningFcn ’ . s e t ( h a n d l e s . varargin { : } ) . ’ P o s i t i o n ’ ) . f u n c t i o n botVARIABLES Callback ( hObject . . s e t ( h a n d l e s . l e t r a =’a ’ . tablaVAR . tablaVAR . . . h a n d l e s ) % Get d e f a u l t command l i n e ou tp ut from h a n d l e s s t r u c t u r e v a r a r g o u t {1} = h a n d l e s . . ’ gui Singleton ’ . end orden=s i z e ( columnas ) . 7. tablaVAR . v a r a r g i n ) h a n d l e s . e v e n t d a t a . gui Callback = str2func ( varargin {1}). h a n d l e s . %−−− Outputs from t h i s f u n c t i o n a r e r e t u r n e d t o t h e command l i n e . ’ Value ’ ) . ’ ColumnEditable ’ . . columnas ) . % Update h a n d l e s s t r u c t u r e g u i d a t a ( hObject . numVar columnas ( i )={ s p r i n t f ( ’ x\ %d ’ . s e t ( h a n d l e s . ’ gui OutputFcn ’ . end i f nargout [ varargout {1: nargout } ] = gui mainfcn ( gui State . ’ ColumnWidth ’ . { ancho } ) . CETYS Universidad 13 . @INTERFAZ OutputFcn .TEXTO. ’ ColumnName ’ . ’ RowName ’ . e v e n t d a t a . o ut pu t = hObject . else gui mainfcn ( gui State . t i p o =1. f i l a s ={1}.. f u n c t i o n v a r a r g o u t = INTERFAZ( v a r a r g i n ) clc gui Singleton = 1. varargin { : } ) . mfilename . columnas = { ’ ’ } . f u n c t i o n INTERFAZ OpeningFcn ( hObject . tablaVAR . { ancho } ) . ou tp ut . gui Singleton . ’ S t r i n g ’ . . t r u e ) . numVar=2. numRest =2. g u i S t a t e = s t r u c t ( ’ gui Name ’ . ’ gui LayoutFcn ’ . s e t ( h a n d l e s . Anexos A continuación se presenta el algoritmo codificado en MATLAB R2010a. . end %−−− E x e c u t e s j u s t b e f o r e INTERFAZ i s made v i s i b l e . . . f o r i =1: h a n d l e s . numVar=g e t ( hObject . h a n d l e s . ’ gui Callback ’ . [] . h a n d l e s ) . i ) } . s e t ( h a n d l e s . i f n a r g i n && i s c h a r ( v a r a r g i n { 1 } ) gui State . h a n d l e s . ancho=g e t ( h a n d l e s .

s e t ( h a n d l e s . numRest=g e t ( hObject . tablaVAR . c o l=g e t ( h a n d l e s . g u i d a t a ( hObject . h a n d l e s ) s e t ( hObject . { } ) . { ’ numeric ’ } ) . s e t ( h a n d l e s . end orden=s i z e ( columnas ) . { } ) . t r u e ) . ’ Value ’ ) . ’ P o s i t i o n ’ ) .TABLA. ’ d e f a u l t U i c o n t r o l B a c k g r o u n d C o l o r ’ ) ) s e t ( hObject . [ ] ) . ’ b l u e ’ ) . g e t ( 0 . h a n d l e s . f u n c t i o n botRESTRICCIONES CreateFcn ( hObject . ’ ColumnFormat ’ . h a n d l e s ) .TABLA. ancho =(276)/ l e n g t h ( columnas ) . s e t ( h a n d l e s .TABLA. s e t ( hObject . ’ b l u e ’ ) . a f t e r s e t t i n g a l l p r o p e r t i e s .TABLA. h a n d l e s ) if i s p c && i s e q u a l ( g e t ( hObject . f i l a s ) . end %−−− E x e c u t e s d u r i n g o b j e c t c r e a t i o n . s e t ( h a n d l e s . ’ BackgroundColor ’ . ancho=g e t ( h a n d l e s .TABLA. e v e n t d a t a . ’ Data ’ . h a n d l e s ) if i s p c && i s e q u a l ( g e t ( hObject . l e t r a ) } . s e t ( h a n d l e s . a f t e r s e t t i n g a l l p r o p e r t i e s . %−−− E x e c u t e s d u r i n g o b j e c t c r e a t i o n . z e r o s ( 1 . ’ BackgroundColor ’ ) . numVar ) ) . columnas ( orden (2)+1)={ ’ R e s t r i c c i n ’ } . l e t r a =’a ’ . ’ ColumnWidth ’ . %−−− E x e c u t e s d u r i n g o b j e c t c r e a t i o n . end orden=s i z e ( f i l a s ) . ’ Data ’ . c o l + 1 ) ) .TABLA. numRest f i l a s ( i )={ s p r i n t f ( ’\ % c ’ . end %−−− E x e c u t e s on s e l e c t i o n change i n botRESTRICCIONES . e v e n t d a t a . ’ Value ’ ) . { } ) . s e t ( h a n d l e s . f i l a s ={ ’ ’}. columnas ) . f o r i =1: c o l columnas ( i )={ s p r i n t f ( ’ x\ %d ’ . ’ BackgroundColor ’ . a f t e r s e t t i n g a l l p r o p e r t i e s . %−−− E x e c u t e s d u r i n g o b j e c t c r e a t i o n . { ancho } ) . f o r i =1: h a n d l e s . s e t ( hObject . h a n d l e s ) h a n d l e s . ’ ColumnWidth ’ .TABLA. CETYS Universidad 14 . s e t ( h a n d l e s . h a n d l e s ) . ’ BackgroundColor ’ ) . l e t r a=l e t r a +1. z e r o s ( h a n d l e s . ’ ColumnName ’ . h a n d l e s ) s e t ( hObject . columnas = { ’ ’ } . a f t e r s e t t i n g a l l p r o p e r t i e s . g u i d a t a ( hObject . e v e n t d a t a . ’ ColumnName ’ . ’ Data ’ . f u n c t i o n TABLA CreateFcn ( hObject . ’ ColumnFormat ’ . { ’ numeric ’ } ) . e v e n t d a t a . s e t ( h a n d l e s . ’ ColumnEditable ’ . ’ RowName ’ . tablaVAR . ’ ColumnName ’ . g e t ( 0 . ’ d e f a u l t U i c o n t r o l B a c k g r o u n d C o l o r ’ ) ) s e t ( hObject .TABLA. f u n c t i o n tablaVAR CreateFcn ( hObject . i ) } . s e t ( h a n d l e s . e v e n t d a t a . numRest . ’ RowName ’ . f u n c t i o n botVARIABLES CreateFcn ( hObject . { ancho } ) . botVARIABLES . f u n c t i o n botRESTRICCIONES Callback ( hObject .

%−−− E x e c u t e s when e n t e r e d data i n e d i t a b l e c e l l ( s ) i n TABLA. i ) . numVar ) . a f t e r s e t t i n g a l l p r o p e r t i e s . ’ RowName ’ . { ’ Minimizar ’ . end w h i l e mean ( ( s i m p l e x ( orden ( 1 ) . CETYS Universidad 15 . I n d i c e s ( 2 ) ) ) i ( eventdata . s e t ( hObject . numRest ) . I n d i c e s (1) . i ) . i f isnan ( i ( eventdata . e v e n t d a t a . eventdata . I n d i c e s (2))=0.TABLA. h a n d l e s ) h a n d l e s . eventdata . g u i d a t a ( hObject . numVar + 1 ) ] . e v e n t d a t a . s e t ( hObject . I n d i c e s (1) . 1 : orden ( 2 ) − 1 ) ) . s e t ( hObject . [ e y e ( h a n d l e s . I n d i c e s (1) . end %−−− E x e c u t e s on s e l e c t i o n change i n TIPO . h a n d l e s ) i=g e t ( hObject . i f h a n d l e s . ’ ’ ) end %−−− E x e c u t e s d u r i n g o b j e c t c r e a t i o n . y]=max( s i m p l e x ( orden ( 1 ) . ’ d e f a u l t U i c o n t r o l B a c k g r o u n d C o l o r ’ ) ) s e t ( hObject . end s e t ( hObject . end %−−− E x e c u t e s when e n t e r e d data i n e d i t a b l e c e l l ( s ) i n tablaVAR . s e t ( hObject . ’ Data ’ ) . h a n d l e s ) if i s p c && i s e q u a l ( g e t ( hObject . : ) ∗ s i g n o )>=0)˜=1 disp ( simplex ) . s i m p l e x =[B . ’ Value ’ ) . e v e n t d a t a . ’ Data ’ ) . f u n c t i o n TIPO Callback ( hObject . y]=min ( s i m p l e x ( orden ( 1 ) . eventdata . e v e n t d a t a . 1 : h a n d l e s . ’ S t r i n g ’ . numVar ) ) . ’ Data ’ .TEXTO. h a n d l e s ) A=g e t ( h a n d l e s . [ ] ) . ’ BackgroundColor ’ . TIPO=g e t ( hObject . { } ) . z e r o s ( 1 . orden=s i z e ( s i m p l e x ) . ’ Maximizar ’ } ) . f u n c t i o n t a b l a V A R C e l l E d i t C a l l b a c k ( hObject . h a n d l e s ) i=g e t ( hObject . TIPO==1 s e t ( h a n d l e s . g e t ( 0 . A 0 ] . b a s e =( z e r o s ( 1 . h a n d l e s . h a n d l e s ) . 1 : orden ( 2 ) − 1 ) ) . ’ S t r i n g ’ . i f isnan ( i ( eventdata . eventdata . numRest ) ] ] . h a n d l e s . ’ white ’ ) .TEXTO. I n d i c e s (2))=0. ’ C o l o c a r s i g n o s n e g a t i v o s en l a F u n c i n O b j e t i v o ’ ) else s e t ( h a n d l e s . I n d i c e s ( 2 ) ) ) i ( eventdata . h a n d l e s . s i g n o =1. B=g e t ( h a n d l e s . ’ Data ’ ) . i f h a n d l e s . ’ BackgroundColor ’ ) . ’ Data ’ ) . TIPO==2 s i g n o =−1. ’ S t r i n g ’ . i f h a n d l e s . I n d i c e s (1) . s i m p l e x ( : . f u n c t i o n botOPTIMIZAR Callback ( hObject . tablaVAR . %−−− E x e c u t e s on bu tt on p r e s s i n botOPTIMIZAR . ’ Data ’ . ’ else [ ˜ . e v e n t d a t a . s i m p l e x = [ [ s i m p l e x ( : . TIPO==1 [ ˜ . ’ Data ’ . f u n c t i o n TABLA CellEditCallback ( hObject . f u n c t i o n TIPO CreateFcn ( hObject .

end x =1. x=i . numVar i f b a s e ( i )˜=0 aux=s p r i n t f (’\ % s \n x\ %d = \ %. i f p i v o t e <0 | | aux<p i v o t e p i v o t e=aux . msgbox ( aux .:)= simplex (x . aux . simplex (x . orden ( 2 ) ) / s i m p l e x ( 1 . end end end disp ( simplex ) . orden ( 2 ) ) ) ) . CETYS Universidad 16 . else aux=s p r i n t f (’\ % s \n x\ %d = \ %. 0 ) . aux ( j )= s i m p l e x ( i . i . f o r i =2:( orden ( 1 ) − 1 ) . disp ( base ) . s i m p l e x ( b a s e ( i ) . y)>0 aux=s i m p l e x ( i . i f i ˜=x aux = ( 0 ) . aux . f ’ . j )− s i m p l e x ( i . end end end b a s e ( y)=x . y ) . p i v o t e=s i m p l e x ( 1 . f ’ . f o r j =1: orden ( 2 ) . orden ( 2 ) ) / s i m p l e x ( i . aux . y ) . y ) ∗ s i m p l e x ( x . end s i m p l e x ( i . aux=’ SOLUCI N : ’ . orden ( 2 ) ) ) . j ) . ’ R e s u l t a d o s ’ ) . end end aux=s p r i n t f (’\ % s \n Z = \ %. i f s i m p l e x ( i . : ) / simplex (x . f o r i =1: orden ( 1 ) . abs ( s i m p l e x ( orden ( 1 ) . f o r i =1: h a n d l e s . y ) . : ) = aux . f ’ . i .