From ade1d6c0353df918da943f25173d981ff391d0ac Mon Sep 17 00:00:00 2001 From: Kento HASEGAWA Date: Wed, 21 Aug 2019 02:07:33 +0900 Subject: [PATCH] Make it possible to load existing solutions on starting --- utils/data.py | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/utils/data.py b/utils/data.py index 8e33a9c..ab14147 100644 --- a/utils/data.py +++ b/utils/data.py @@ -1,4 +1,5 @@ import datetime +import glob import json import math import os @@ -26,6 +27,14 @@ class Problem(object): self.block_groups = list() self._load_problem(problem_path) + + if not self.solution_path is None: + solution_files = glob.glob(f'{self.solution_path}/{self.name}/*.json') + for v in solution_files: + solution = Solution(solution_file=v) + solution_id = solution.get_id() + print(f'I: Put a solution: {solution_id}') + self.solutions[solution_id] = solution @property def size_str(self): @@ -336,7 +345,11 @@ class Problem(object): class Solution(object): - def __init__(self, data): + def __init__(self, data=None, solution_file=None): + + if not solution_file is None: + with open(solution_file, 'r') as fp: + data = json.load(fp) self.problem = data['problem'] self.request_id = data['request_id'] @@ -344,15 +357,21 @@ class Solution(object): self.elapsed_time = data['elapsed_time'] self.solution = data['solution'] self.status = data['status'] + self.size = (None, None) self.map = None self.block = dict() - self.timestamp = time.time() - self._id = str(uuid.uuid4()) + if solution_file is None: + self.timestamp = time.time() + self._id = str(uuid.uuid4()) + + else: + self.timestamp = data['timestamp'] + self._id = data['id'] self._parse_solution() - + def _parse_solution(self): if self.status != 'done': @@ -429,7 +448,8 @@ class Solution(object): 'worker': self.worker, 'elapsed_time': self.elapsed_time, 'problem': self.problem, - 'solution': self.solution + 'solution': self.solution, + 'status': self.status } def get_d3json(self): -- 2.22.0