Projeto Abílio

Algoritmo de Simulação de Cálculo de Preço
para Táxi Particular

Instituto Superior Politécnico de Tecnologias e Ciências – ISPTEC

ISPTEC

1. Variáveis Principais

  • Custo por quilômetro
  • Distância percorrida
  • Tempo de viagem
  • Período do dia
  • Número total de motoristas
  • Número de motoristas disponíveis
  • Fatores de multiplicação (F1, F2, F3, F4)

1.1 Custo por Quilômetro

Valor global definido pela organização, atualizado periodicamente.

Exemplos:

  • 1.000 Kzs/km
  • 700 Kzs/km

1.2 Distância Percorrida

Determinado por GPS entre o ponto de recolha e o destino.

  • Gamek → ISPTEC = 10 km
  • Lubango → ISPTEC = 900 km

1.3 Tempo de Viagem

Duração total da viagem (em minutos).

  • Gamek → ISPTEC = 15 minutos
  • Lubango → ISPTEC = 384 minutos

1.4 Período do Dia

Intervalo Descrição Multiplicador
00:00 - 05:59 Madrugada 1.2
06:00 - 09:59 Pico da manhã 1.5
10:00 - 11:59 Manhã normal 1.0
12:00 - 14:59 Almoço 1.2
15:00 - 17:59 Pico da tarde 1.5
18:00 - 20:59 Início da noite 1.3
21:00 - 23:59 Noite 1.4

2. Pesos do Algoritmo

Os pesos determinam a influência de cada variável no preço final.

  • Peso 1: Custo e distância
  • Peso 2: Tempo e eficiência
  • Peso 3: Período do dia
  • Peso 4: Oferta e procura

3. Fórmula do Preço Final

O preço é a soma ponderada de todos os pesos:

PreçoFinal = Peso1 + Peso2 + Peso3 + Peso4

De forma expandida:

PreçoFinal = (CustoPorKm × Distância) × (F1 +
    (Distância/Tempo × F2) +
    (MultiplicadorPeríodo × F3) +
    (MotoristasDisponíveis / TotalMotoristas × F4))

4. Estrutura do Ficheiro JSON

{
  "custo_por_km": 900,
  "distancia": 12.5,
  "tempo": 25,
  "periodo": "18:45",
  "total_motoristas": 20,
  "motoristas_disponiveis": 8,
  "fatores": {
    "f1": 1.0,
    "f2": 0.5,
    "f3": 1.2,
    "f4": 0.8
  }
}

5. Fluxo do Algoritmo

  1. Ler o ficheiro dados.json
  2. Converter os dados para variáveis internas
  3. Determinar o período do dia e multiplicador
  4. Calcular os pesos (P1 a P4)
  5. Somar para obter o preço final
  6. Exibir ou guardar o resultado

6. Código em Python


import json
from datetime import datetime

def calcular_peso1(custo_km, distancia, f1):
    return (custo_km * distancia) * f1

def calcular_peso2(distancia, tempo, peso1, f2):
    if tempo <= 0:
        raise ValueError("Tempo inválido.")
    return (distancia / tempo) * peso1 * f2
        

Funções de Apoio e Execução


def obter_multiplicador_periodo(periodo_str):
    hora = datetime.strptime(periodo_str, "%H:%M").hour
    if 0 <= hora <= 5: return 1.2
    elif 6 <= hora <= 9: return 1.5
    elif 10 <= hora <= 11: return 1.0
    elif 12 <= hora <= 14: return 1.2
    elif 15 <= hora <= 17: return 1.5
    elif 18 <= hora <= 20: return 1.3
    else: return 1.4

def main():
    with open("dados.json", "r", encoding="utf-8") as f:
        dados = json.load(f)
    # cálculos...
    print("💰 Preço final:", round(preco_final, 2), "Kzs")
        

Objetivo do Projeto Abílio

Simular de forma realista o preço de uma viagem particular, considerando fatores económicos, temporais e operacionais. O modelo permite ajustes dinâmicos conforme a realidade do mercado.

Projeto académico desenvolvido no ISPTEC

Obrigado!

Perguntas?

ISPTEC