64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
"""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()
|