Site hosted by Angelfire.com: Build your free website today!

 

 

Simulación de vida anaquel de alimentos

 

La generación de números aleatorios es una de las herramientas que se puede utilizar para reproducir el comportamiento variable de algún fenómeno o proceso. En este ejercicio se generan números aleatorios para simular la puesta en el mercado de un alimento cuya caducidad obedece una distribución de probabilidad Weibul. Este alimento debe retirarse de los lugares en que está a la venta, antes de que su calidad desmerezca demasiado. Sin embargo, se pretende también evitar que se desperdicie demasiado alimento que no ha sido vendido, así que no es deseable desde el punto de vista del productor que el tiempo en que permanece en exhibición sea muy corto. El tiempo que tarda un producto en ser vendido también se ha tomado como una variable aleatoria que sigue una distribución de Weibul.

 

En este ejercicio se le proporciona el listado de un programa para Matlab que encuentra los parámetros de distribuciones de Weibul que mejor se ajustan a datos medidos de aceptabilidad de un producto y a datos de tiempos de venta de una muestra al azar de los productos ofrecidos al público.

 

Los datos de aceptabilidad (arreglo ‘t’) han sido tomados de un artículo en el cual se encontró la siguiente tabla que resume los resultados de un panel de pruebas organolépticas (de degustación). El signo + indica si la muestra probada en determinado tiempo por el panelista es aceptable. El número atravesado por una raya horizontal  indica rechazo. Se puede ver que una de las muestras ya fue rechazada a los 10 días de la prueba. El número indica el rango, el cual se otorga en forma inversa al orden de rechazo(el procedimiento de ajuste usado en el artículo es más complicado que el usado en este ejercicio y requiere el rango).

 

 

 

 

 

 

 

Los datos de tiempos de venta (arreglo ‘v’) fueron inventados.

 

El programa genera n números aleatorios para simular los tiempos de caducidad y venta de n muestras  para un número seleccionado de ciclos (constante ‘ciclos’) cu  y comparando esos tiempo con  un tiempo de exhibición seleccionado por el usuario (contante ‘tiempo’),  determina cuántas muestras en cada ciclo siguen en buen estado, y cuántas se ha vendido y por ende cuántas debe retirar al término de ese tiempo de exhibición. Asimismo presenta una gráfica de muestras en buen estado (azul) y muestras por retirar (verde) contra el tiempo total que corresponde a cada ciclo.

 

En este ejercicio se le pide lo siguiente:

 

a)      Haga una recomendación al supuesto productor de qué tiempo de exhibición es el más adecuado. Puede presentar gráficas para apoyar su recomendación y argumentar a favor de esta. 

b)      Varíe las característica de los datos de tiempos de venta (arreglo ‘v’ ) y comente sobre el efecto de este cambio en el comportamiento del producto.

 

c)      Indique que otros cálculos pudiera hacer el programa que serían de interés para el productor.

 

d)      Explique como se utilizan los comandos weibfit  y weibrnd de Matlab.

 

 

 

Listado del programa (puede copiarlo (son dos páginas)y pegarlo en la ventana generada por las opciones file , new y m file del menú de Matlab y ejecutarlo con debug y run) :

 

%Programa que calcula numero de muestras en buen estado y muestras que no han %

% sido vendidas al final de un tiempo de exposicion %

 

%aqui se dan los datos de tiempos de aceptabilidad de las muestras en la prueba de degustacion%

t=[10 59 59 70 70 90 90 98 98 98 98 104 104 104 104 104 104 104 104 104 104];

%aqui se calculan los parametros de ajuste.  par(1) y par(2) son los parametros usados%

%para la distribucion de Weibul para el tiempo de caducidad%

[par,ic]=weibfit(t);

% estos son los 'datos' de tiempos de venta'%

v=[5 10 10 30 30 40 80 60 30 20 30]; 

%aqui se hace el ajuste. parv(1) y parv(2) son los valores encontrados de los parametros%

[parv,icv]=weibfit(v);

%aqui se especifica el tiempo de exhibicion%

tiempo=50;

%numero de muestras puestas en venta%

n=100;

%numero de ciclos para la simulacion%

ciclos=6;

% inicializacion de los arreglos :    %

% si bien(j)  = 1 la muestra j esta en buen estado. De otra forma bien(j)=0 %

% mbien(i) = numero de muestras en buen estado, en el ciclo i    %

% si ventas(j) = 1 la   muestra  j ha sido vendida. De otra manera ventas(j)=0 %

% vendidas(i)= numero de muestras vendidas en el ciclo i               %

% retiradas(i) = numero de muestras por retirarse en el ciclo i         %

bien=linspace(1,1,n);

mbien=linspace(1,1,ciclos);

vendidas=linspace(1,1,ciclos);

retiradas=linspace(1,1,ciclos);

ventas=linspace(1,1,n);

% inician ciclos de calculo %

 

for i=1:1:ciclos

    % generacion de numeros aleatorios para cada ciclo %

    % muestras = n numeros aleatorios de tiempos de caducidad para n muestras %

    % muestrav = n numeros aleatorios de tiempos de venta para n nuestras %

    muestras=weibrnd(par(1),par(2),1,n);

    muestrasv=weibrnd(parv(1),parv(2),1,n);

    for j=1:1:n

        % criterio para decidir si la muestra j esta bien ( tiempo de caducidad mayor que tiempo %

        % de exhibicion %

        if muestras(j)> tiempo

            bien(j)=1;

        else

            bien(j)=0;

        end

        % criterio para decidir si la muestra j se ha vendido (tiempo de venta menor que tiempo %

        % de exhibicion  %

        if muestrasv(j)<tiempo

           ventas(j)=1;

       else

           ventas(j)=0;

       end

    end

    %calculo de muestras vendidas al final de ciclo i , sum(x) suma el valor de los elementos del %

    %arreglo . Muestras retiradas: diferencia entre n muestras exhibidas y las vendidas en el ciclo i%

    mbien(i)=sum(bien);

    vendidas(i)=sum(ventas);

    retiradas(i)=n-vendidas(i);

    t2=tiempo*(1:1:ciclos);

   

end

%graficacion %

plot(t2,mbien,t2,retiradas)