| import os |
| import sys |
| import numpy as np |
| import networkx as nx |
|
|
| from network_generator import NetworkGenerator |
| from visualizer import get_sorted_nodes |
|
|
| def create_renovation_dataset(): |
| print("Generating 10 graphs. Accepting any valid room count...") |
| |
| all_distance_matrices = [] |
| all_coord_matrices = [] |
| |
| success_count = 0 |
| |
| while success_count < 10: |
| sys.stdout.write('.') |
| sys.stdout.flush() |
| |
| try: |
| |
| |
| gen = NetworkGenerator( |
| width=8, |
| height=8, |
| variant="Custom", |
| topology="highly_connected", |
| node_drop_fraction=0.2, |
| target_edges=75 |
| ) |
| G = gen.generate() |
| |
| sorted_nodes = get_sorted_nodes(G) |
| num_nodes = len(sorted_nodes) |
| |
| |
| coords = np.array(sorted_nodes, dtype=np.float32) |
| dist_matrix = np.zeros((num_nodes, num_nodes), dtype=np.float32) |
| |
| for u, v in G.edges(): |
| idx_u = sorted_nodes.index(u) |
| idx_v = sorted_nodes.index(v) |
| dist = np.sqrt((u[0] - v[0])**2 + (u[1] - v[1])**2) |
| dist_matrix[idx_u][idx_v] = dist |
| dist_matrix[idx_v][idx_u] = dist |
| |
| all_coord_matrices.append(coords) |
| all_distance_matrices.append(dist_matrix) |
| |
| success_count += 1 |
| print(f"\n✅ Graph {success_count} generated with {num_nodes} rooms!") |
| |
| except Exception as e: |
| |
| continue |
|
|
| |
| |
| os.makedirs("dataset", exist_ok=True) |
| np.savez_compressed( |
| "dataset/renovation_data.npz", |
| distances=np.array(all_distance_matrices, dtype=object), |
| coords=np.array(all_coord_matrices, dtype=object) |
| ) |
| |
| print("\n🎉 Done! Data saved to dataset/renovation_data.npz") |
|
|
| if __name__ == "__main__": |
| create_renovation_dataset() |