Spaces:
Sleeping
Sleeping
Update solver.py
Browse files
solver.py
CHANGED
|
@@ -45,37 +45,37 @@ def parse_uploaded_csv(file) -> pd.DataFrame:
|
|
| 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 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
|
| 80 |
|
| 81 |
|
|
|
|
| 45 |
|
| 46 |
|
| 47 |
|
| 48 |
+
def generate_random_instance(
|
| 49 |
+
n_clients=15,
|
| 50 |
+
n_vehicles=4,
|
| 51 |
+
capacity=7,
|
| 52 |
+
spread=10, # smaller city area
|
| 53 |
+
demand_min=1,
|
| 54 |
+
demand_max=3,
|
| 55 |
+
seed=42,
|
| 56 |
+
):
|
| 57 |
+
rng = np.random.default_rng(seed)
|
| 58 |
+
xs = rng.uniform(-spread, spread, size=n_clients)
|
| 59 |
+
ys = rng.uniform(-spread, spread, size=n_clients)
|
| 60 |
+
demands = rng.integers(demand_min, demand_max + 1, size=n_clients)
|
| 61 |
+
|
| 62 |
+
# realistic and tight time windows
|
| 63 |
+
tw_start = rng.integers(0, 40, size=n_clients)
|
| 64 |
+
tw_end = tw_start + rng.integers(15, 25, size=n_clients)
|
| 65 |
+
|
| 66 |
+
# short service time (1 minute)
|
| 67 |
+
service = np.ones(n_clients, dtype=int)
|
| 68 |
+
|
| 69 |
+
df = pd.DataFrame({
|
| 70 |
+
"id": [f"C{i+1}" for i in range(n_clients)],
|
| 71 |
+
"x": xs,
|
| 72 |
+
"y": ys,
|
| 73 |
+
"demand": demands,
|
| 74 |
+
"tw_start": tw_start,
|
| 75 |
+
"tw_end": tw_end,
|
| 76 |
+
"service": service
|
| 77 |
+
})
|
| 78 |
+
return df
|
| 79 |
|
| 80 |
|
| 81 |
|