-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmodels.py
More file actions
50 lines (42 loc) · 1.6 KB
/
models.py
File metadata and controls
50 lines (42 loc) · 1.6 KB
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
import numpy as np
import hygese as hgs
from collections import OrderedDict
from tools import write_vrplib, read_vrplib
from solver import oml_solver
from dynamic_solve import oml_local_search, lazy_pickup
import json
class HGS_Solver():
def __init__(self, data):
self.input_data = data
self.instance_name = data['instance_name']
self.instance = read_vrplib(self.instance_name)
# print(self.instance)
hgs_data = OrderedDict()
hgs_data['distance_matrix'] = self.instance['duration_matrix']
hgs_data['num_vehicles'] = self.instance['vehicle_count']
hgs_data['depot'] = 0
hgs_data['demands'] = self.instance['demands']
hgs_data['vehicle_capacity'] = self.instance['capacity']
hgs_data['service_times'] = self.instance['service_times']
self.data = hgs_data
self.timeLimit = data['epoch_tlim']
self.ap = hgs.AlgorithmParameters(timeLimit=self.timeLimit)
self.hgs_solver = hgs.Solver(parameters=self.ap, verbose=True)
def solve_cvrp(self):
result = self.hgs_solver.solve_cvrp(self.data)
return result
class OML_Solver():
def __init__(self, data):
self.data = data
self.oml_solver = oml_solver
def solve(self):
result = self.oml_solver(self.data)
return result
class Dynamic_Solver():
def __init__(self, data):
self.data = data
self.dynamic_local_search = oml_local_search
self.lazy_pickup = lazy_pickup
def local_search_solve(self):
result = self.dynamic_local_search(self.data)
return result