Optimización de Líneas de Producción: Implementación de Algoritmos en MATLAB/Octave
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 7,69 KB
Gestión y Optimización de Líneas de Producción con MATLAB/Octave
Requisitos del Ejercicio
Se solicita desarrollar un conjunto de funciones para la gestión y el procesamiento de datos de producción, siguiendo las siguientes especificaciones:
- Identificar las líneas que, durante la mayor cantidad de días, tuvieron una producción menor a 10 unidades.
- Generar un reporte de producción, ordenado por mayor producción mensual descendente. Este reporte debe contener el número de las líneas de producción.
Consideraciones de Implementación
- La carga de la plantilla de producción debe realizarse mediante una función, y los datos deben ser generados al azar.
- Todos los cálculos deben ser implementados en funciones.
- Para su resolución, se deben usar vectores (arreglos unidimensionales) o, si se desea, matrices (arreglos bidimensionales).
Implementación en MATLAB/Octave
Carga de Datos y Ejecución Principal
A continuación, se presenta el código principal que simula la carga de datos de producción para cinco líneas (A, B, C, D, E) durante 30 días, y luego procesa esta información para cumplir con los requisitos establecidos.
Función cargar
: Carga de Líneas de Producción
Esta función genera datos de producción aleatorios para 30 días, simulando la actividad de una línea de producción.
% Cargar las líneas de producción durante 30 días
function V=cargar()
for i=1:30
V(i)=fix(rand()*(25-5+1)+5);
end
Ejecución Principal del Programa
Este bloque de código orquesta la carga de datos, el cálculo de días con baja producción, la producción total y el ordenamiento de las líneas.
% Ejercicio tipo parcial
clc
clear all
A=cargar();
B=cargar();
C=cargar();
D=cargar();
E=cargar();
diasa=cantidad(A);
diasb=cantidad(B);
diasc=cantidad(C);
diasd=cantidad(D);
diase=cantidad(E);
V=vector(diasa,diasb,diasc,diasd,diase);
mayordias(V);
prodtotala=produccion(A);
prodtotalb=produccion(B);
prodtotalc=produccion(C);
prodtotald=produccion(D);
prodtotale=produccion(E);
P=vector(prodtotala,prodtotalb,prodtotalc,prodtotald,prodtotale);
[L,K]=descendente(P)
% El vector L representa las líneas de producción
% El vector K representa la producción total (en forma descendente) de cada línea
Funciones Auxiliares
Función cantidad
: Contar Días con Baja Producción
Esta función cuenta la cantidad de días en que la producción de una línea fue menor a 10 unidades.
% Cuenta la cantidad de días con producción menor a 10
function dias=cantidad(A)
dias=0;
for i=1:length(A)
if A(i) < 10 % Asumiendo que la condición incompleta era 'menor a 10'
dias=dias+1;
end
end
Función vector
: Convertir Valores a Vector
Esta función agrupa los valores individuales de días con baja producción o producción total en un único vector.
% Convierte valores individuales en un vector
function V=vector(diasa,diasb,diasc,diasd,diase)
V(1)=diasa;
V(2)=diasb;
V(3)=diasc;
V(4)=diasd;
V(5)=diase;
Función mayordias
: Identificar Líneas con Más Días de Baja Producción
Esta función determina y muestra qué líneas tuvieron la mayor cantidad de días con producción inferior a 10 unidades.
% Devuelve las líneas con mayor cantidad de días de producción menor a 10
function mayordias(V)
mayor=V(1);
for i=1:length(V)
if V(i)>mayor
mayor=V(i);
end
end
for j=1:length(V)
if V(j)==mayor
fprintf('La línea %d tuvo producción menor a 10 unidades durante la mayor cantidad de días.\n', j);
end
end
Función produccion
: Calcular Producción Total por Línea
Esta función suma la producción de todos los días para una línea específica, obteniendo su producción total.
% Devuelve la producción total de cada línea
function prodtotal=produccion(V)
prodtotal=0;
for i=1:length(V)
prodtotal=prodtotal+V(i);
end
Función descendente
: Ordenar Líneas por Producción Total
Esta función ordena las líneas de producción de forma descendente según su producción total, manteniendo un registro de los índices originales de las líneas.
% Ordena las líneas de producción y sus totales de forma descendente
function [H,V]=descendente(V)
H=1:length(V);
for i=1:length(V)
for j=1:length(V)-1
if V(j) < V(j+1) % Asumiendo que la condición incompleta era para orden descendente
aux=V(j);
V(j)=V(j+1);
V(j+1)=aux;
aux=H(j);
H(j)=H(j+1);
H(j+1)=aux;
end
end
end
Funciones Repetidas en el Documento Original
El documento original incluye varias funciones repetidas. A continuación, se presentan tal como fueron proporcionadas, con las correcciones gramaticales y de formato aplicadas, para cumplir con la instrucción de no eliminar contenido.
Función cantidad
(Repetición 1)
% Cuenta la cantidad de días con producción menor a 10
function dias=cantidad(A)
dias=0;
for i=1:length(A)
if A(i) < 10 % Asumiendo que la condición incompleta era 'menor a 10'
dias=dias+1;
end
end
Función mayordias
(Repetición 1)
% Devuelve las líneas con mayor cantidad de días de producción menor a 10
function mayordias(V)
mayor=V(1);
for i=1:length(V)
if V(i)>mayor
mayor=V(i);
end
end
for j=1:length(V)
if V(j)==mayor
fprintf('La línea %d tuvo producción menor a 10 unidades durante la mayor cantidad de días.\n', j);
end
end
Función vector
(Repetición 1)
% Convierte valores individuales en un vector
function V=vector(diasa,diasb,diasc,diasd,diase)
V(1)=diasa;
V(2)=diasb;
V(3)=diasc;
V(4)=diasd;
V(5)=diase;
Función produccion
(Repetición 1)
% Devuelve la producción total de cada línea
function prodtotal=produccion(V)
prodtotal=0;
for i=1:length(V)
prodtotal=prodtotal+V(i);
end
Función descendente
(Repetición 1)
% Ordena las líneas de producción y sus totales de forma descendente
function [H,V]=descendente(V)
H=1:length(V);
for i=1:length(V)
for j=1:length(V)-1
if V(j) < V(j+1) % Asumiendo que la condición incompleta era para orden descendente
aux=V(j);
V(j)=V(j+1);
V(j+1)=aux;
aux=H(j);
H(j)=H(j+1);
H(j+1)=aux;
end
end
end
Función vector
(Repetición 2)
% Convierte valores individuales en un vector
function V=vector(diasa,diasb,diasc,diasd,diase)
V(1)=diasa;
V(2)=diasb;
V(3)=diasc;
V(4)=diasd;
V(5)=diase;
Función produccion
(Repetición 2)
% Devuelve la producción total de cada línea
function prodtotal=produccion(V)
prodtotal=0;
for i=1:length(V)
prodtotal=prodtotal+V(i);
end
Función descendente
(Repetición 2)
% Ordena las líneas de producción y sus totales de forma descendente
function [H,V]=descendente(V)
H=1:length(V);
for i=1:length(V)
for j=1:length(V)-1
if V(j) < V(j+1) % Asumiendo que la condición incompleta era para orden descendente
aux=V(j);
V(j)=V(j+1);
V(j+1)=aux;
aux=H(j);
H(j)=H(j+1);
H(j+1)=aux;
end
end
end