Initial project import
This commit is contained in:
56
scripts/04_gerar_colunas_candidatas.py
Normal file
56
scripts/04_gerar_colunas_candidatas.py
Normal file
@@ -0,0 +1,56 @@
|
||||
"""Geracao das colunas candidatas viaveis.
|
||||
|
||||
Entradas:
|
||||
Bases preparadas por 03_preparar_dados.py.
|
||||
|
||||
Saidas:
|
||||
DataFrame em que cada linha representa uma escala possivel: rota acionada,
|
||||
missao local ou sobreaviso, com dupla, aeronave, score, custo e metadados.
|
||||
|
||||
Papel no pipeline:
|
||||
Materializa o espaco de decisoes do MILP. A compatibilidade de aeronave,
|
||||
indisponibilidade, qualificacao e regra de instrucao ja sao filtradas aqui.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import importlib
|
||||
|
||||
preparar = importlib.import_module("03_preparar_dados")
|
||||
io_utils = importlib.import_module("02_io_utils")
|
||||
|
||||
|
||||
def gerar_colunas_do_dia(bases: dict):
|
||||
"""Gera colunas candidatas para a data e parametros informados nas bases."""
|
||||
from src.planejador_missao.candidates import gerar_colunas
|
||||
|
||||
parametros = bases["parametros"]
|
||||
# Cada coluna candidata equivale a uma variavel x_j do MILP.
|
||||
# As regras de dupla, qualificacao, instrucao e indisponibilidade sao
|
||||
# aplicadas antes do solver para reduzir o modelo a alternativas viaveis.
|
||||
return gerar_colunas(
|
||||
parametros["data_planejamento"],
|
||||
bases["rotas"],
|
||||
bases["aeronaves"],
|
||||
bases["cadastro"],
|
||||
bases["indisponibilidades"],
|
||||
bases["progresso"],
|
||||
bases["catalogo"],
|
||||
bases["disponiveis"],
|
||||
parametros["criterio_missao"],
|
||||
parametros["criterio_sbv"],
|
||||
)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""Executa diagnostico da geracao de colunas."""
|
||||
logger = io_utils.configurar_logger("gerar_colunas")
|
||||
bases = preparar.carregar_bases()
|
||||
colunas = gerar_colunas_do_dia(bases)
|
||||
logger.info("Colunas candidatas geradas: %s", len(colunas))
|
||||
if colunas.empty:
|
||||
logger.warning("Nenhuma coluna candidata viavel foi gerada.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user