TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Python Case Resolution

Por:   •  9/4/2019  •  Ensaio  •  2.719 Palavras (11 Páginas)  •  147 Visualizações

Página 1 de 11

Programação 1 (LTI), 2015/2016

Projeto

(este enunciado tem 10 páginas)

tacoAtaco

Contexto

Para aumentar a qualidade do ambiente urbano, relativamente ao ruído e à poluição atmosférica, uma decisão recente da Câmara Municipal de Lisboa determina que a partir de uma data próxima todos os tuk tuks a circular na cidade sejam movidos por motores eléctricos. Adicionalmente, para aumentar a segurança dos passageiros, determina-se que seja limitado o número de horas acumuladas que um condutor pode estar a conduzir um destes veículos.

Enquanto esta medida trará benefícios à cidade e ao sector do turismo, a mesma vem colocar novos desafios à empresa Taco-a-Taco. Esta empresa explora uma frota de tuk tuks e adaptou o modelo de negócio da UBER ao seu universo de operação, sendo que as reservas de tuk tuks são todas feitas remotamente, via internet ou telefone.

[pic 3]

A par dos custos acrescidos que a substituição dos tuk tuks vai envolver, o grande problema que resta em aberto é como explorar de forma eficaz a frota perante as novas condicionantes:

[pic 4][pic 5]

Cada condutor tem de terminar a sua jornada de trabalho antes de ultrapassar o limite diário de tempo acumulado de condução; por outro lado, por serem eléctricos, os veículos têm uma autonomia mais reduzida tendo de ser recarregados com frequência e tomando essa recarga mais tempo do que era o caso com o abastecimento de gasolina para os antigos motores de combustão.


  1. Aplicação a desenvolver

Objetivo

Com uma finalidade pedagógica, usando Python 2.7, neste projeto vai implementar o software tacoAtaco. É um software que apoia a gestão de uma frota de veículos e vai ser usado pela empresa Taco-a-Taco para gerir os seus tuk tuks e a sua equipa de condutores.

Funcionalidade

O seu programa recebe listagens dos condutores, dos veículos e dos serviços relativos a um período. Recebe ainda uma lista de reservas de serviços para serem realizados logo que for possível, a partir do início do período imediatamente a seguir.

O seu programa entrega uma lista atualizada, incluindo a indicação de que condutores e veículos foram atribuídos a que clientes, entre outros elementos. O objectivo é minimizar o tempo de espera dos clientes pelo serviço contratado, assegurar o maior número de horas de atividade ao maior número de colaboradores na equipa, evitar entrar em contravenção (i.e. ter condutores a conduzir para lá do limite de horas permitido), e evitar incumprimento dos serviços (i.e. que um serviço termine intempestivamente antes do final programado por falta de carga na bateria).

Entrada

O programa recebe ficheiros com uma estrutura interna para arrumação de informação similar à dos seguintes exemplos fragmentários:

drivers1315.txt Company:[pic 6]

taco-a-taco

Day: 09:11:2015

Period:

13:00 - 15:00

Drivers:

Ana Tavares, 09:25, 04:50

Catarina Correia, 12:00, 01:45

...

Steven Neale, 09:00, 02:25


vehicles1315.txt Company:[pic 7]

taco-a-taco

Day: 09:11:2015

Period:

13:00 - 15:00

Vehicles:

  1. BB-99, lambretta GX, 175, 70

17-GD-86, lambretta GX, 175, 15

...

  1. BH-87, piaggio LT, 130, 80

services1315.txt Company:[pic 8]

taco-a-taco

Day: 09:11:2015

Period:

13:00 - 15:00

Services:

Daniel Pereira, 17-GD-86, Stephan Khal, 12:30, 13:15, alfama, 50, charges Steven Neale, 05-BB-99, Giorgio Rossi, 13:00, 13:30, baixa, 25, standby

...

Nuno Sousa, 17-GD-87, Charles Simpson, 14:45, 17:15, sintra, 80, standby

reservations1517.txt Company:[pic 9]

taco-a-taco

Day: 09:11:2015

Period:

15:00 - 17:00

Reservations:

Conchita Suarez, 15:00, 15:45, baixa, 25

Franz Muller, 15:15, 16:45, belem, 40

...

John Stuart, 16:00, 16:05, castelo, 20

Saída

O programa produz um ficheiro de output com estrutura interna similar ao exemplo services1315.txt acima com uma listagem de serviços atualizada para o período a que dizem respeito as reservas e de acordo com a especificação geral abaixo e com os contratos das funções.


Especificação geral

  • O horário diário de funcionamento dos serviços prestados pela companhia é das 9h00 às 21h00.
  • Para um dado condutor, 5 horas acumuladas de condução é o máximo diário permitido.
  • Um condutor mantém um mesmo veículo até sair de serviço nesse dia.
  • Para um dado veículo, o tempo de duração da sua bateria quando totalmente carregada depende do seu modelo e é um dos elementos indicados na listagem de veículos.
  • Para qualquer veículo, 1 hora é o tempo invariável necessário para o seu condutor encontrar um ponto de recarga, recarregar totalmente a sua bateria e estar de novo ao serviço.
  • As diferentes listagens (condutores, veículos, serviços, reservas) são guardadas em ficheiros.
  • Cada listagem diz respeito a um período de 2 horas.
  • Cada listagem começa com um cabeçalho que contém a indicação da empresa, do dia da operação e do período da operação, como neste exemplo:

Company: taco-a-taco Day: 09:11:2015

Period:

13:00 - 15:00

  • Na listagem de condutores, a seguir ao cabeçalho, cada linha corresponde a um condutor (cujos elementos informativos estão separados por vírgulas) estando a listagem ordenada por ordem alfabética do nome do condutor. Cada condutor é caracterizado pelo nome (e.g. Daniel Pereira), hora de início da atividade nesse dia (e.g. 09:15), e tempo acumulado de atividade, já incluindo todo o tempo de atividade que lhe estiver atribuído a partir do início do período em causa (e.g. 04:15), como ilustrado no seguinte exemplo:

Daniel Pereira, 09:15, 04:15

Toma-se por garantido que na listagem de condutores não há mais condutores que veículos na frota.

  • Na listagem de veículos, a seguir ao cabeçalho, cada linha corresponde a um veículo (cujos elementos informativos estão separados por vírgulas) estando a listagem ordenada por ordem alfabética da matrícula do veículo. Cada veículo é caracterizado pela matrícula (e.g. 05-BB-99), modelo (e.g. lambretta GX), autonomia em quilómetros para uma carga completa da bateria (e.g. 175), quilómetros percorridos desde a última carga completa da bateria, já incluindo todos os quilómetros a partir do início do período em causa (e.g. 55), como ilustrado no seguinte exemplo:

05-BB-99, lambretta GX, 175, 55


  • Na listagem de serviços, a seguir ao cabeçalho, cada linha corresponde a um serviço (cujos elementos informativos estão separados por vírgulas) estando a listagem ordenada por ordem crescente da hora de fim dos serviços. Cada serviço é caracterizado pelo nome do condutor (e.g. Ana Tavares), matrícula do veículo (e.g. 45-CH-70), nome do cliente (e.g. Jack Wilson), hora de início do serviço (e.g. 13:10), hora de fim do serviço (e.g. 14:10), circuito (e.g. castelo), quilómetros a percorrer no serviço (e.g. 45), e a indicação de standby vs. charges vs. terminates se ao final desse serviço, respetivamente, o condutor aguarda serviço (standby), o condutor e o veículo devem sair de serviço temporariamente para a bateria ser carregada (charges), ou o condutor termina a sua atividade nesse dia (terminates), como ilustrado no seguinte exemplo:

Ana Tavares, 45-CH-70, Jack Wilson, 13:10, 14:10, castelo, 45, terminates

Marisa Campos, 39-TX-28, _no_client_, 14:35, 14:35,

_no_circuit_, 0, standby

O regresso à atividade de um condutor e seu veículo depois de recarga da bateria é representada como no seguinte exemplo:

Marisa Campos, 39-TX-28, _no_client_, 14:35, 14:35,

...

Baixar como (para membros premium)  txt (18.8 Kb)   pdf (192.6 Kb)   docx (75.4 Kb)  
Continuar por mais 10 páginas »
Disponível apenas no TrabalhosGratuitos.com