Instituto Superior Politécnico de Tecnologias e Ciências – ISPTEC
Valor global definido pela organização, atualizado periodicamente.
Exemplos:
Determinado por GPS entre o ponto de recolha e o destino.
Duração total da viagem (em minutos).
| 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 |
Os pesos determinam a influência de cada variável no 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))
{
"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
}
}
dados.json
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
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")
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
Perguntas?