Commit ade1d6c0 authored by Kento HASEGAWA's avatar Kento HASEGAWA
Browse files

Make it possible to load existing solutions on starting

parent b3919864
Loading
Loading
Loading
Loading
+22 −2
Changes for utils/data.py: 22 added lines, 2 removed lines.
Original line number Diff line number Diff line
import datetime
import glob
import json
import math
import os
@@ -27,6 +28,14 @@ class Problem(object):

        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):
        return f'{self.size[0]}X{self.size[1]}'
@@ -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,13 +357,19 @@ 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()

        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):
@@ -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):