Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -58,8 +58,10 @@ def held_karp_tsp(dist_matrix):
|
|
58 |
else:
|
59 |
break
|
60 |
|
61 |
-
tour
|
62 |
-
|
|
|
|
|
63 |
|
64 |
# Mendapatkan koordinat kota dari nama
|
65 |
def get_coordinates(city_name):
|
@@ -75,7 +77,7 @@ def create_distance_matrix(coordinates):
|
|
75 |
valid_coordinates = [c for c in coordinates if c is not None]
|
76 |
n = len(valid_coordinates)
|
77 |
if n < 2:
|
78 |
-
return [],
|
79 |
dist_matrix = np.zeros((n, n))
|
80 |
for i in range(n):
|
81 |
for j in range(i + 1, n):
|
@@ -126,13 +128,16 @@ if st.button("Optimasi Rute"):
|
|
126 |
min_cost, optimal_route = held_karp_tsp(dist_matrix)
|
127 |
|
128 |
# Tampilkan hasil
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
|
|
|
|
|
|
|
58 |
else:
|
59 |
break
|
60 |
|
61 |
+
if len(tour) == n + 1:
|
62 |
+
return min_tour_cost, tour
|
63 |
+
else:
|
64 |
+
return inf, []
|
65 |
|
66 |
# Mendapatkan koordinat kota dari nama
|
67 |
def get_coordinates(city_name):
|
|
|
77 |
valid_coordinates = [c for c in coordinates if c is not None]
|
78 |
n = len(valid_coordinates)
|
79 |
if n < 2:
|
80 |
+
return np.array([]), valid_coordinates
|
81 |
dist_matrix = np.zeros((n, n))
|
82 |
for i in range(n):
|
83 |
for j in range(i + 1, n):
|
|
|
128 |
min_cost, optimal_route = held_karp_tsp(dist_matrix)
|
129 |
|
130 |
# Tampilkan hasil
|
131 |
+
if min_cost == float('inf'):
|
132 |
+
st.write("Tidak ada rute optimal yang dapat ditemukan.")
|
133 |
+
else:
|
134 |
+
st.write(f"Biaya total minimum: {min_cost:.2f} km")
|
135 |
+
st.write("Rute optimal:", " -> ".join([city_names[i] for i in optimal_route]))
|
136 |
+
|
137 |
+
# Buat peta
|
138 |
+
map_obj = folium.Map(location=valid_coordinates[0], zoom_start=5)
|
139 |
+
plot_route(map_obj, valid_coordinates, optimal_route)
|
140 |
+
|
141 |
+
# Render map
|
142 |
+
st.markdown("### Rute Optimal")
|
143 |
+
st_folium = st.components.v1.html(folium.Map._repr_html_(map_obj), width=800, height=600)
|