Trabajo Final

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 10

Facultad de Ingeniería

Programa: Ingeniería Industrial


Asignatura: Programación I

Trabajo Final – Análisis de Situaciones e implementación con AppDesigner.


Docente: KAREN BUELVAS FERREIRA
Fecha: 25 de mayo y 1 de junio de 2024
Descripción del Ejercicio:
Trabajo de discusión colectiva pero entrega individual
Reto de programación:
Usted es contratado para diseñar la logística de una empresa de transporte de mercancías. Sin embargo,
la gerencia tiene especial preocupación por optimizar el servicio de transporte de última milla, por lo cual
le pidió diseñar un programa que simule el proceso de entregas para 3 ciudades capitales de la costa:
Santa Marta, Barranquilla y Cartagena, además de simular el proceso para Bogotá. Posteriormente,
deberá comparar el resultado del proceso para cada ciudad de la costa con la de la capital para identificar
cuál resultó adecuada. Para realizar la simulación, se instala un sensor en uno de los camiones de cada
ciudad para monitorear el tiempo de entrega de cada pedido. Se guarda la información del tiempo en
minutos y los metros de recorrido cada vez que se entrega un pedido en vectores nombrados por cada
ciudad. Cada camión entregará la misma cantidad de pedidos. También se debe registrar el tiempo en
minutos que el camión estuvo detenido en cada entrega y verificar, si el tiempo supera los 5 minutos, se
debe enviar un mensaje al transportista para verificar para que reporte el estado, si el tiempo supera los
10 min y no se recibe respuesta del mensaje enviado al transportista, se debe llamar para constatar la
integridad del transportista y de la carga, en caso de no recibir respuesta a la llamada y el tiempo supere
los 15 min, se deberá llamar a la policía para que atiendan el suceso.

Para comparar los resultados de la simulación, se graficarán los datos de todas las ciudades en dos
gráficas: una para los tiempos de entrega y otra para los metros recorridos.

Use App Designer para realizar el proyecto.


Facultad de Ingeniería
Programa: Ingeniería Industrial
Asignatura: Programación I

classdef DeliverySimulationApp < matlab.apps.AppBase

% Properties that correspond to app components

properties (Access = public)

UIFigure matlab.ui.Figure

StartSimulationButton matlab.ui.control.Button

UIAxes1 matlab.ui.control.UIAxes

UIAxes2 matlab.ui.control.UIAxes

AlertsTextAreaLabel matlab.ui.control.Label

AlertsTextArea matlab.ui.control.TextArea

ResultsTextAreaLabel matlab.ui.control.Label

ResultsTextArea matlab.ui.control.TextArea

end

properties (Access = private)

% Data properties

numDeliveries = 10; % Number of deliveries per city

cities = {'Santa Marta', 'Barranquilla', 'Cartagena', 'Bogotá'};

times

distances

stopTimes

end

methods (Access = private)


Facultad de Ingeniería
Programa: Ingeniería Industrial
Asignatura: Programación I

function simulateDeliveries(app)

% Initialize the vectors

app.times = containers.Map();

app.distances = containers.Map();

app.stopTimes = containers.Map();

for i = 1:length(app.cities)

city = app.cities{i};

app.times(city) = randi([20, 60], 1, app.numDeliveries); % Random times in minutes

app.distances(city) = randi([5, 20], 1, app.numDeliveries); % Random distances in km

app.stopTimes(city) = randi([0, 20], 1, app.numDeliveries); % Random stop times in minutes

end

end

function monitorStopTimes(app)

alerts = '';

for i = 1:length(app.cities)

city = app.cities{i};

stopTimes = app.stopTimes(city);

for j = 1:length(stopTimes)

stopTime = stopTimes(j);

if stopTime > 5 && stopTime <= 10


Facultad de Ingeniería
Programa: Ingeniería Industrial
Asignatura: Programación I

alerts = sprintf('%s%s Delivery %d: Stop time %.2f min. Send message to driver.\n', alerts,
city, j, stopTime);

elseif stopTime > 10 && stopTime <= 15

alerts = sprintf('%s%s Delivery %d: Stop time %.2f min. Call driver.\n', alerts, city, j,
stopTime);

elseif stopTime > 15

alerts = sprintf('%s%s Delivery %d: Stop time %.2f min. Call police.\n', alerts, city, j,
stopTime);

end

end

end

app.AlertsTextArea.Value = alerts;

end

function plotResults(app)

% Clear previous plots

cla(app.UIAxes1);

cla(app.UIAxes2);

% Plot delivery times

hold(app.UIAxes1, 'on');

for i = 1:length(app.cities)

city = app.cities{i};

plot(app.UIAxes1, 1:app.numDeliveries, app.times(city), '-o', 'DisplayName', city);

end
Facultad de Ingeniería
Programa: Ingeniería Industrial
Asignatura: Programación I

hold(app.UIAxes1, 'off');

legend(app.UIAxes1);

title(app.UIAxes1, 'Delivery Times');

xlabel(app.UIAxes1, 'Delivery Number');

ylabel(app.UIAxes1, 'Time (minutes)');

% Plot delivery distances

hold(app.UIAxes2, 'on');

for i = 1:length(app.cities)

city = app.cities{i};

plot(app.UIAxes2, 1:app.numDeliveries, app.distances(city), '-o', 'DisplayName', city);

end

hold(app.UIAxes2, 'off');

legend(app.UIAxes2);

title(app.UIAxes2, 'Delivery Distances');

xlabel(app.UIAxes2, 'Delivery Number');

ylabel(app.UIAxes2, 'Distance (km)');

end

function compareResults(app)

results = '';

for i = 1:length(app.cities)-1

cityCoastal = app.cities{i};

cityCapital = app.cities{end};
Facultad de Ingeniería
Programa: Ingeniería Industrial
Asignatura: Programación I

avgTimeCoastal = mean(app.times(cityCoastal));

avgTimeCapital = mean(app.times(cityCapital));

avgDistanceCoastal = mean(app.distances(cityCoastal));

avgDistanceCapital = mean(app.distances(cityCapital));

results = sprintf('%s%s vs %s:\n', results, cityCoastal, cityCapital);

results = sprintf('%s Average Time: %.2f min vs %.2f min\n', results, avgTimeCoastal,
avgTimeCapital);

results = sprintf('%s Average Distance: %.2f km vs %.2f km\n\n', results, avgDistanceCoastal,


avgDistanceCapital);

end

app.ResultsTextArea.Value = results;

end

end

% Callbacks that handle component events

methods (Access = private)

% Button pushed function: StartSimulationButton

function StartSimulationButtonPushed(app, event)

app.simulateDeliveries();

app.monitorStopTimes();

app.plotResults();

app.compareResults();
Facultad de Ingeniería
Programa: Ingeniería Industrial
Asignatura: Programación I

end

end

% Component initialization

methods (Access = private)

% Create UIFigure and components

function createComponents(app)

% Create UIFigure and hide until all components are created

app.UIFigure = uifigure('Visible', 'off');

app.UIFigure.Position = [100 100 800 600];

app.UIFigure.Name = 'MATLAB App';

% Create StartSimulationButton

app.StartSimulationButton = uibutton(app.UIFigure, 'push');

app.StartSimulationButton.ButtonPushedFcn = createCallbackFcn(app,
@StartSimulationButtonPushed, true);

app.StartSimulationButton.Position = [50 550 100 22];

app.StartSimulationButton.Text = 'Start Simulation';

% Create UIAxes1

app.UIAxes1 = uiaxes(app.UIFigure);

title(app.UIAxes1, 'Title')
Facultad de Ingeniería
Programa: Ingeniería Industrial
Asignatura: Programación I

xlabel(app.UIAxes1, 'X')

ylabel(app.UIAxes1, 'Y')

app.UIAxes1.Position = [50 300 350 200];

% Create UIAxes2

app.UIAxes2 = uiaxes(app.UIFigure);

title(app.UIAxes2, 'Title')

xlabel(app.UIAxes2, 'X')

ylabel(app.UIAxes2, 'Y')

app.UIAxes2.Position = [400 300 350 200];

% Create AlertsTextAreaLabel

app.AlertsTextAreaLabel = uilabel(app.UIFigure);

app.AlertsTextAreaLabel.HorizontalAlignment = 'right';

app.AlertsTextAreaLabel.Position = [50 250 46 22];

app.AlertsTextAreaLabel.Text = 'Alerts';

% Create AlertsTextArea

app.AlertsTextArea = uitextarea(app.UIFigure);

app.AlertsTextArea.Position = [111 150 639 100];

% Create ResultsTextAreaLabel

app.ResultsTextAreaLabel = uilabel(app.UIFigure);

app.ResultsTextAreaLabel.HorizontalAlignment = 'right';
Facultad de Ingeniería
Programa: Ingeniería Industrial
Asignatura: Programación I

app.ResultsTextAreaLabel.Position = [50 100 46 22];

app.ResultsTextAreaLabel.Text = 'Results';

% Create ResultsTextArea

app.ResultsTextArea = uitextarea(app.UIFigure);

app.ResultsTextArea.Position = [111 50 639 50];

% Show the figure after all components are created

app.UIFigure.Visible = 'on';

end

end

% App initialization and construction

methods (Access = public)

% Construct app

function app = DeliverySimulationApp

% Create UIFigure and components

createComponents(app)

% Register the app with App Designer

registerApp(app, app.UIFigure)
Facultad de Ingeniería
Programa: Ingeniería Industrial
Asignatura: Programación I

if nargout == 0

clear app

end

end

% Code that executes before app deletion

function delete(app)

% Delete UIFigure when app is deleted

delete(app.UIFigure)

end

end

end

También podría gustarte