Commit ade1d6c0 authored by Kento HASEGAWA's avatar Kento HASEGAWA

Make it possible to load existing solutions on starting

parent b3919864
import datetime import datetime
import glob
import json import json
import math import math
import os import os
...@@ -27,6 +28,14 @@ class Problem(object): ...@@ -27,6 +28,14 @@ class Problem(object):
self._load_problem(problem_path) 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 @property
def size_str(self): def size_str(self):
return f'{self.size[0]}X{self.size[1]}' return f'{self.size[0]}X{self.size[1]}'
...@@ -336,7 +345,11 @@ class Problem(object): ...@@ -336,7 +345,11 @@ class Problem(object):
class Solution(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.problem = data['problem']
self.request_id = data['request_id'] self.request_id = data['request_id']
...@@ -344,13 +357,19 @@ class Solution(object): ...@@ -344,13 +357,19 @@ class Solution(object):
self.elapsed_time = data['elapsed_time'] self.elapsed_time = data['elapsed_time']
self.solution = data['solution'] self.solution = data['solution']
self.status = data['status'] self.status = data['status']
self.size = (None, None) self.size = (None, None)
self.map = None self.map = None
self.block = dict() self.block = dict()
if solution_file is None:
self.timestamp = time.time() self.timestamp = time.time()
self._id = str(uuid.uuid4()) self._id = str(uuid.uuid4())
else:
self.timestamp = data['timestamp']
self._id = data['id']
self._parse_solution() self._parse_solution()
def _parse_solution(self): def _parse_solution(self):
...@@ -429,7 +448,8 @@ class Solution(object): ...@@ -429,7 +448,8 @@ class Solution(object):
'worker': self.worker, 'worker': self.worker,
'elapsed_time': self.elapsed_time, 'elapsed_time': self.elapsed_time,
'problem': self.problem, 'problem': self.problem,
'solution': self.solution 'solution': self.solution,
'status': self.status
} }
def get_d3json(self): def get_d3json(self):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment