Beruflich Dokumente
Kultur Dokumente
Optimizacion de Procesos de
Produccion.
2. Objetivo 3
3. Justificacion 4
4. Metodologa 4
5. Resultados obtenidos 5
6. Conclusiones 11
7. Anexos 13
CETYS Universidad 2
Resumen
Este proyecto presenta el desarrollo de una herramienta sencilla y eficaz utili-
zada para la optimizacion de procesos de produccion, la cual permitira, mediante
metodos de programacion lineal, encontrar las condiciones optimas que permitan
lograr el maximo rendimiento y/o el menor costo.
1. Introduccion
Existen varios metodos muy eficaces que permiten hacer el estudio de maxi-
mizacion y/o minimizacion de recursos y costos. Sin embargo, la mayora de las
empresas tienen pocas nociones o simplemente no tienen ningun conocimiento
de la existencia o el manejo de dichas herramientas. Por otra parte, los progra-
mas que ofrecen este recurso generalmente son muy difciles de manejar lo que
dificulta aun mas el analisis del problema para quienes no estan familiarizados,
ya sea, con el programa o con el metodo.
Sin embargo, si sera muy importante que el usuario logre definir la problemati-
ca a resolver mediante un modelo matematico que permita ser analizado por el
sistema ha desarrollar. Los principales problemas a resolver seran aquellos que
involucran maximizacion de utilidades o beneficios, as como la minimizacion de
costos relacionados al problema de transporte, siempre y cuando las problemati-
cas cumplan con las condiciones soportadas por el sistema programado.
2. Objetivo
Crear una herramienta flexible que permita optimizar, problemas involucra-
dos con procesos de produccion para obtener un beneficios maximos o la reduc-
cion de costos en la asignacion de recursos en los problemas de transporte.
CETYS Universidad 3
3. Justificacion
En la actualidad, los programas que existen para hacer estudios de opti-
mizacion resultan ser bastante complejos para aquellas personas que no estan
familiarizados con estos sistemas.
Es por ello que es necesario que en las empresas se cuente con un mecanismo
sencillo que permita analizar, evaluar, y optimizar procesos industriales a cual-
quier persona que este interesada en hacerlo.
4. Metodologa
El presente proyecto esta enfocado en resolver problemas los cuales esten
relacionados con Programacion Lineal, la cual es una tecnica que tiene como
objetivo asignar de la mejor forma posible los recursos limitados entre las acti-
vidades que se involucran, ya sea para maximizar o minimizar una funcion lineal.
Para lograr hacer que la interfaz grafica arroje valores confiables sera necesa-
rio que primero se plantee un modelo matematico del problema, que generalmente
solo esta presentado de forma verbal. Los elementos basicos del modelo son la
Funcion Objetivo, la cual representa la ecuacion que se desea optimizar, las va-
riables que se involucran dentro del modelo y por ultimo las restricciones de los
recursos.
CETYS Universidad 4
5. Resultados obtenidos
Una vez iniciando el software matematico automaticamente se abrira una
ventana en la cual se deben introducir los datos del modelo matematico que re-
presenta el problema a resolver. Por cuestiones de capacidad, el software creado
tiene como lmite el uso de un maximo de 8 variables y hasta 10 restricciones
posibles, ademas, el algoritmo solo funcionara en aquellos problemas cuyas res-
tricciones tengan un lmite superior (restrecciones con menor igual) esto con
el fin de evitar confuisones a aquellos usuarios que no esten relacionados con el
planteamiento de los modelos matematicos en el metodo SIMPLEX.
CETYS Universidad 5
En un almacen de frutas hay 800 kg de naranjas, 800 kg de manzanas y 500
kg de pl atanos. Para su venta se hacen dos lotes A y B. El lote A contiene 1
kg de naranjas, 2 kg de manzanas y 1 kg de platanos; el lote B se compone de 2
kg de naranjas, 1 kg de manzanas y 1 kg de platanos. El beneficio por kg que se
obtiene con el lote A es de $1200 M. N y de $1400 M. N. con el lote B. Determinar
cuantos kilogramos de cada tipo se necesitan para obtener un beneficio maximo.
Lo primero que hay que hacer para poder plantear al modelo matematico es
definir las variables:
XA , XB 0 (5)
CETYS Universidad 6
Una vez seleccionando el numero de variables y restricciones se deben colocar
solamente los coeficientes que corresponden a cada variable del modelo matemati-
co tal como se muestra en la Figura 2.
Es importante tomar en cuenta que la colocacion de los datos debe ser precisa,
de lo contrario los resultados que arroje el sistema seran poco confiables y/o
el modelo no arrojara ninguna solucion. Posteriormente, se debe especificar el
calculo deseado (Maximizacion o Minimizacion), una vez ejecutado el algoritmo
se abrira una nueva ventana en donde apareceran los valores de la solucion optima
del modelo.
CETYS Universidad 7
Figura 3: Ventana de resultados.
CETYS Universidad 8
Por otra parte, en el caso de que se desee hacer una minimizacion del modelo,
sera necesario que los coeficientes de la funcion objetivo aparezcan con el signo
contrario, esto se debe al acomodo de las celdas en el algoritmo de programacion.
Un ejemplo de ello se muestra en la siguiente imagen:
CETYS Universidad 9
sujeto a:
X1 6
2X2 10 (7)
15X1 + 5X2 100
X1 , X2 0
Del cual, una vez ejecutado el algoritmo se obtienen como resultados X1 =5,
X2 =5 y Z=35,000.
CETYS Universidad 10
6. Conclusiones
Despues de ejecutar el programa a prueba y error varios ejercicios se
comprobo que los resultados que arroja el software efectivamente son los
optimos por lo que dicha herramienta demuestra ser lo suficientemente con-
fiable para su uso e implementacion en problemas de optimizacion.
CETYS Universidad 11
Referencias
[1] Prawda, J. (2004) Metodos y modelos de investigacion de operaciones
I: Modelos determinsticos. Ed. Limusa, Mexico.
[2] Hamdy, T. (2004) Investigacion de Operaciones. 7a. Edicion. Pearson
Educacion, Mexico.
[3] Mocholi, M.; Sala, R. (1993) Programacion Lineal: Metodologa y pro-
blemas. Editorial Tebar Flores, S. L.
[4] Jimenez, G.; Quesada, V. (2006) Cien problemas de programacion li-
neal. Manizales, Colombia.
[5] Render, B; Stair, R.; Hanna, M. (2012) Metodos cuantitativos para los
negocios. 11a. edicion, Pearson Educacion, Mexico.
CETYS Universidad 12
7. Anexos
A continuacion se presenta el algoritmo codificado en MATLAB R2010a.
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;
g u i S t a t e = s t r u c t ( gui Name , mfilename , . . .
gui Singleton , gui Singleton , . . .
gui OpeningFcn , @INTERFAZ OpeningFcn , . . .
gui OutputFcn , @INTERFAZ OutputFcn , . . .
gui LayoutFcn , [] , ...
gui Callback , []);
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 . gui Callback = str2func ( varargin {1});
end
i f nargout
[ varargout {1: nargout } ] = gui mainfcn ( gui State , varargin { : } ) ;
else
gui mainfcn ( gui State , varargin { : } ) ;
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 u n c t i o n INTERFAZ OpeningFcn ( hObject , e v e n t d a t a , h a n d l e s , v a r a r g i n )
h a n d l e s . o ut pu t = hObject ;
h a n d l e s . numVar=2;
h a n d l e s . numRest =2;
h a n d l e s . t i p o =1;
s e t ( h a n d l e s .TEXTO, S t r i n g , ) ;
% 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 , h a n d l e s ) ;
ancho=g e t ( h a n d l e s . tablaVAR , P o s i t i o n ) ;
ancho =(276)/ l e n g t h ( columnas ) ;
s e t ( h a n d l e s . tablaVAR , ColumnWidth , { ancho } ) ;
s e t ( h a n d l e s . tablaVAR , ColumnWidth , { ancho } ) ;
s e t ( h a n d l e s . tablaVAR , RowName , f i l a s ) ;
s e t ( h a n d l e s . tablaVAR , ColumnName , columnas ) ;
s e t ( h a n d l e s . tablaVAR , ColumnEditable , t r u e ) ;
CETYS Universidad 13
s e t ( h a n d l e s . tablaVAR , ColumnFormat , { numeric } ) ;
s e t ( h a n d l e s . tablaVAR , Data , z e r o s ( 1 , h a n d l e s . numVar ) ) ;
g u i d a t a ( hObject , h a n d l 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 , 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 .
f u n c t i o n botVARIABLES CreateFcn ( hObject , e v e n t d a t a , h a n d l e s )
% E x e c u t e s on s e l e c t i o n change i n botRESTRICCIONES .
f u n c t i o n botRESTRICCIONES Callback ( hObject , e v e n t d a t a , h a n d l e s )
h a n d l e s . numRest=g e t ( hObject , Value ) ;
c o l=g e t ( h a n d l e s . botVARIABLES , Value ) ;
columnas = { } ;
f i l a s ={ };
f o r i =1: c o l
columnas ( i )={ s p r i n t f ( x\ %d , i ) } ;
end
orden=s i z e ( columnas ) ;
columnas ( orden (2)+1)={ R e s t r i c c i n } ;
l e t r a =a ;
f o r i =1: h a n d l e s . numRest
f i l a s ( i )={ s p r i n t f ( \ % c , l e t r a ) } ;
l e t r a=l e t r a +1;
end
orden=s i z e ( f i l a s ) ;
ancho=g e t ( h a n d l e s .TABLA, P o s i t i o n ) ;
ancho =(276)/ l e n g t h ( columnas ) ;
s e t ( h a n d l e s .TABLA, ColumnWidth , { ancho } ) ;
s e t ( h a n d l e s .TABLA, ColumnWidth , { ancho } ) ;
s e t ( h a n d l e s .TABLA, RowName , f i l a s ) ;
s e t ( h a n d l e s .TABLA, ColumnName , columnas ) ;
s e t ( h a n d l e s .TABLA, ColumnEditable , t r u e ) ;
s e t ( h a n d l e s .TABLA, ColumnFormat , { numeric } ) ;
s e t ( h a n d l e s .TABLA, Data , z e r o s ( h a n d l e s . numRest , c o l + 1 ) ) ;
g u i d a t a ( hObject , h a n d l 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 , 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 .
f u n c t i o n botRESTRICCIONES CreateFcn ( hObject , e v e n t d a t a , h a n d l 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 , 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 .
f u n c t i o n tablaVAR CreateFcn ( hObject , e v e n t d a t a , h a n d l e s )
s e t ( hObject , ColumnName , { } ) ;
s e t ( hObject , RowName , { } ) ;
s e t ( hObject , Data , [ ] ) ;
% 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 , 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 .
f u n c t i o n TABLA CreateFcn ( hObject , e v e n t d a t a , h a n d l e s )
s e t ( hObject , ColumnName , { } ) ;
CETYS Universidad 14
s e t ( hObject , RowName , { } ) ;
s e t ( hObject , Data , [ ] ) ;
% E x e c u t e s on s e l e c t i o n change i n TIPO .
f u n c t i o n TIPO Callback ( hObject , e v e n t d a t a , h a n d l e s )
h a n d l e s . TIPO=g e t ( hObject , Value ) ;
g u i d a t a ( hObject , h a n d l e s ) ;
i f h a n d l e s . TIPO==1
s e t ( h a n d l e s .TEXTO, S t r i n g , 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 .TEXTO, S t r i n g , )
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 , 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 .
f u n c t i o n TIPO CreateFcn ( hObject , e v e n t d a t a , h a n d l e s )
% E x e c u t e s on bu tt on p r e s s i n botOPTIMIZAR .
f u n c t i o n botOPTIMIZAR Callback ( hObject , e v e n t d a t a , h a n d l e s )
A=g e t ( h a n d l e s . tablaVAR , Data ) ;
B=g e t ( h a n d l e s .TABLA, Data ) ;
s i m p l e x =[B ; A 0 ] ;
s i m p l e x = [ [ s i m p l e x ( : , 1 : h a n d l e s . numVar ) , [ e y e ( h a n d l e s . numRest ) ;
z e r o s ( 1 , h a n d l e s . numRest ) ] ] , s i m p l e x ( : , h a n d l e s . numVar + 1 ) ] ;
orden=s i z e ( s i m p l e x ) ;
b a s e =( z e r o s ( 1 , h a n d l e s . numVar ) ) ;
s i g n o =1;
i f h a n d l e s . TIPO==2
s i g n o =1;
end
CETYS Universidad 15
end
x =1;
p i v o t e=s i m p l e x ( 1 , orden ( 2 ) ) / s i m p l e x ( 1 , y ) ;
f o r i =2:( orden ( 1 ) 1 ) ;
i f s i m p l e x ( i , y)>0
aux=s i m p l e x ( i , orden ( 2 ) ) / s i m p l e x ( i , y ) ;
i f p i v o t e <0 | | aux<p i v o t e
p i v o t e=aux ;
x=i ;
end
end
end
b a s e ( y)=x ;
f o r i =1: orden ( 1 ) ;
i f i =x
aux = ( 0 ) ;
f o r j =1: orden ( 2 ) ;
aux ( j )= s i m p l e x ( i , j ) s i m p l e x ( i , y ) s i m p l e x ( x , j ) ;
end
s i m p l e x ( i , : ) = aux ;
end
end
end
disp ( simplex ) ;
disp ( base ) ;
aux= SOLUCI N : ;
f o r i =1: h a n d l e s . numVar
i f b a s e ( i )=0
aux=s p r i n t f (\ % s \n x\ %d = \ %. f , aux , i , s i m p l e x ( b a s e ( i ) , orden ( 2 ) ) ) ;
else
aux=s p r i n t f (\ % s \n x\ %d = \ %. f , aux , i , 0 ) ;
end
end
CETYS Universidad 16