-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
72 lines (58 loc) · 2.65 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import os
from datetime import datetime
from BD import RegistroMH
from Problema import LectorProbOpt
from Problema import ProblemaFactory
from MH import MHFactory
from Solver.GenericSolver import GenericSolver
from DTO import EstadoExperimento
from Agente import AgenteFactory
from MH.Metaheuristica import Metaheuristica as MH
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-E", "--experimento", help="Nombre del experimento, almacenado en BD", required=True)
ARGS = parser.parse_args()
C_PROBLEM = '.Problema/Instancias'
if __name__ == "__main__":
nomExperimento = ARGS.experimento
#print(f"args.experimento {ARGS.experimento}")
#exit()
inicio = datetime.now()
cont = 0
#SOLO PARA PRUEBAS
#RegistroMH.insertDummyExp(nomExperimento)
RegistroMH.insertDummyExpPSO(nomExperimento)
for _ in range(100):
experimento = RegistroMH.obtenerExperimento(nomExperimento)
if experimento is None: break
try:
parametros = experimento.getParametros()
if parametros.getInstProblema() is not None:
problema = ProblemaFactory.crearConParams(parametros.getNomProblema(), parametros.getInstProblema())
else:
problema = ProblemaFactory.crear(parametros.getNomProblema())
print(f"nombre del problema {problema.getNombre()}")
#if parametros.getInstProblema() is not None:
# problema.leer(os.path.join(C_PROBLEM, parametros.getNomProblema(), parametros.getInstProblema()))
mh = MHFactory.crear(parametros.getNomMH())
mh.setProblema(problema)
mh.setParametros(parametros.getParametrosMH())
agente = AgenteFactory.crear(parametros.getNomAgente())
agente.setParametrosAutonomos(parametros.getParametrosAgente())
agente.setTotIter(mh.getParametros()[MH.NUM_ITER])
solver = GenericSolver()
solver.setMH(mh)
solver.setAgente(agente)
resultado = solver.resolverProblema(experimento.getId())
experimento.setResultado(resultado)
experimento.setEstado(EstadoExperimento.TERMINADO)
fin = datetime.now()
RegistroMH.guardarExperimento(experimento, inicio, fin)
cont += 1
except Exception as ex:
experimento.setEstado(EstadoExperimento.PENDIENTE)
fin = datetime.now()
RegistroMH.guardarExperimento(experimento, inicio, fin)
raise ex
fin = datetime.now()
print(f"fin, {cont} experimentos ejecutados, tiempo de ejecución: {fin-inicio}")