◇ OpenCyber Academy
Técnico · Capítulo 7 · Português

Capítulo 7 — Viagens sem contagem

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 7 — Viagens sem contagem

Mapa da aula

Aula 07 publicada. Mapa, exemplo, EX025.

flowchart TD
  N0["7.1 A verificação"]
  N1["7.2 Resultados"]
  N2["7.3 Encontrando a causa"]
  N3["7.4 Relatório"]
  N0 --> N1 --> N2 --> N3
  N3 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX025"]

Desenho lógico

flowchart LR
  N0["7.1 A verificação"]
  N1["7.2 Resultados"]
  N2["7.3 Encontrando a causa"]
  N3["7.4 Relatório"]
  N0 --> N1 --> N2 --> N3 --> Q["EX025"]
[7.1 A verificação]
    |
    v
[7.2 Resultados]
    |
    v
[7.3 Encontrando a causa]
    |
    v
[7.4 Relatório]
    |
    v
[Exemplo resolvido] --> [Exercício EX025]

Objetivos de aprendizagem

Você vai (1) comparar as contagens com a tabela de horários; (2) encontrar as linhas com contagens ausentes; (3) relatar o problema à pessoa certa.

7.1 A verificação

Marta escreve uma verificação que compara a tabela de horários com os registros de contagem. Toda viagem programada deve ter um registro de contagem. As viagens sem registro são listadas por linha. Ela explica que essa verificação de completude é a que mais importa para o financiamento, porque a autoridade de transporte paga as linhas financiadas com base nos passageiros informados, e uma contagem ausente registra zero passageiro naquela viagem. Ela executa a verificação em um mês de dados sintéticos de três linhas. Salva a verificação na pasta compartilhada, junto com seus outros scripts, e descreve o propósito no leia-me.

"""Find scheduled bus trips with no passenger count record, by route (stdlib only)."""
import random
random.seed(12)
miss = {"Route 1": 0.01, "Route 4": 0.02, "Route 7": 0.09}
tot = 0
for r, p in miss.items():
    m = sum(random.random() < p for _ in range(1200))
    tot += m
    print(f"{r}: 1200 trips scheduled, {m} without counts ({100*m/1200:.1f}%)")
print(f"all routes: {tot} of 3600 missing ({100*tot/3600:.1f}%)")

Execute com python3 lab_trips.py. Saída verificada:

Route 1: 1200 trips scheduled, 12 without counts (1.0%)
Route 4: 1200 trips scheduled, 10 without counts (0.8%)
Route 7: 1200 trips scheduled, 122 without counts (10.2%)
all routes: 144 of 3600 missing (4.0%)

7.2 Resultados

O laboratório confere mil e duzentas viagens programadas em cada uma de três linhas. A Linha 1 (Route 1 na saída) tem 12 viagens sem contagem, 1,0 por cento. A Linha 4 tem 10, ou 0,8 por cento. A Linha 7 tem 122, ou 10,2 por cento. Nas três linhas, faltam 144 de 3.600 viagens, 4,0 por cento. Marta observa que o número geral esconde o problema real: a maior parte das contagens ausentes está na Linha 7, muito pior do que as outras duas. Ela escreve os resultados em uma pequena tabela com uma linha por rota, para que a diferença fique evidente até para gestores pouco acostumados a dados.

7.3 Encontrando a causa

Marta compartilha o resultado com o Sr. Hughes. Ele verifica quais ônibus rodam na Linha 7 e descobre que dois ônibus mais antigos dessa linha têm sensores que muitas vezes não salvam os dados. A Linha 7 é a do hospital, que a autoridade financia em parte. Contagens ausentes ali podem reduzir o financiamento de uma linha da qual muitos pacientes e funcionários dependem. O Sr. Hughes pede à manutenção que conserte os sensores e que, enquanto isso, coloque ônibus mais novos na Linha 7. Marta registra a causa e as ações no caderno e planeja conferir a Linha 7 de novo depois dos consertos.

7.4 Relatório

Marta escreve um relatório curto: o que conferiu, os resultados por linha, a causa provável, a ação tomada e o plano de repetir a verificação no mês seguinte. Ela o envia ao Sr. Hughes, que o encaminha ao gerente de operações. O Sr. Osei observa que relatar por linha, e não com um único número geral, tornou o problema visível, e que os técnicos devem sempre procurar onde os problemas se concentram, em vez de olhar só os totais. O gerente de operações agradece a Marta e pede a mesma verificação todo mês, com os resultados enviados também aos planejadores.

Exemplo resolvido

Marta compara a tabela de horários com as contagens, encontra 144 de 3.600 viagens sem contagem (4,0 por cento), com a Linha 7 em 10,2 por cento, identifica os sensores dos ônibus mais antigos como causa e relata por linha, com um plano de nova verificação.

Caso sintético. As viagens são sintéticas; as saídas vêm de lab_trips.py.

Erros e limites

Porcentagens gerais escondem as linhas em que os problemas se concentram.

Exercícios

Continue estudando — aula 07 (capítulo 07 de 18)

← Capítulo 06 · Índice das aulas · Capítulo 08 →

Continue para a próxima aula já escrita.