Initial project import
This commit is contained in:
63
scripts/09_testar_instalacao.py
Normal file
63
scripts/09_testar_instalacao.py
Normal file
@@ -0,0 +1,63 @@
|
||||
"""Teste rapido de instalacao do Planejador Missao.
|
||||
|
||||
Entradas:
|
||||
Ambiente Python atual, dependencias instaladas e arquivos em dados/.
|
||||
|
||||
Saidas:
|
||||
Diagnostico amigavel no terminal e log em logs/execucao.log.
|
||||
|
||||
Papel no pipeline:
|
||||
Permite verificar rapidamente se o computador esta pronto para executar o
|
||||
planejador e o solver HiGHS/scipy.optimize.milp.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import importlib
|
||||
import sys
|
||||
|
||||
import numpy as np
|
||||
from scipy.optimize import Bounds, LinearConstraint, milp
|
||||
|
||||
config = importlib.import_module("01_config")
|
||||
io_utils = importlib.import_module("02_io_utils")
|
||||
|
||||
|
||||
def testar_solver_minimo() -> None:
|
||||
"""Resolve um MILP minimo para comprovar que scipy.optimize.milp funciona."""
|
||||
c = np.array([-1.0, -2.0])
|
||||
integrality = np.ones(2)
|
||||
bounds = Bounds([0, 0], [1, 1])
|
||||
constraints = [LinearConstraint([[1, 1]], -np.inf, 1)]
|
||||
result = milp(c=c, integrality=integrality, bounds=bounds, constraints=constraints)
|
||||
if not result.success:
|
||||
raise RuntimeError(f"Erro: teste minimo do solver falhou: {result.message}")
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""Executa todas as verificacoes de ambiente."""
|
||||
logger = io_utils.configurar_logger("teste_instalacao")
|
||||
print(f"Python encontrado: {sys.version.split()[0]}")
|
||||
|
||||
for pacote in ["pandas", "numpy", "openpyxl", "scipy"]:
|
||||
importlib.import_module(pacote)
|
||||
print(f"Biblioteca OK: {pacote}")
|
||||
|
||||
config.garantir_diretorios()
|
||||
for diretorio in [config.DADOS_DIR, config.RESULTADOS_DIR, config.SRC_DIR, config.LOGS_DIR, config.TEMP_DIR]:
|
||||
if not diretorio.exists():
|
||||
raise RuntimeError(f"Erro: diretorio obrigatorio ausente: {diretorio}")
|
||||
print(f"Diretorio OK: {diretorio.name}")
|
||||
|
||||
cadastro = config.ARQUIVO_CADASTRO_LOCAL if config.ARQUIVO_CADASTRO_LOCAL.exists() else config.ARQUIVO_CADASTRO_ORIGINAL
|
||||
io_utils.exigir_arquivos([cadastro, *config.ARQUIVOS_ENTRADA_OBRIGATORIOS])
|
||||
print("Arquivos de entrada OK")
|
||||
|
||||
testar_solver_minimo()
|
||||
print("Solver scipy.optimize.milp/HiGHS OK")
|
||||
logger.info("Teste de instalacao concluido com sucesso.")
|
||||
print("Ambiente OK para executar o Planejador Missao.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user