Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -45,15 +45,18 @@ def held_karp_tsp(dist_matrix):
|
|
| 45 |
tour = [0]
|
| 46 |
bits = (2 ** n - 1) - 1
|
| 47 |
for _ in range(n - 1):
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
break
|
| 52 |
-
next_city = min(
|
| 53 |
-
[(memo[(bits, k)] + dist_matrix[k][last_city], k) for k in range(n) if (bits, k) in memo],
|
| 54 |
-
key=lambda x: x[0],
|
| 55 |
-
)[1]
|
| 56 |
-
last_city = next_city
|
| 57 |
|
| 58 |
tour.append(0)
|
| 59 |
return min_tour_cost, tour
|
|
@@ -97,6 +100,9 @@ def plot_route(map_obj, coordinates, route):
|
|
| 97 |
# Streamlit UI
|
| 98 |
st.title("Traveling Salesman Problem Solver")
|
| 99 |
|
|
|
|
|
|
|
|
|
|
| 100 |
# Input kota
|
| 101 |
st.subheader("Pilih Kota")
|
| 102 |
city_count = st.number_input("Jumlah kota", min_value=2, step=1)
|
|
@@ -128,4 +134,5 @@ if st.button("Optimasi Rute"):
|
|
| 128 |
plot_route(map_obj, valid_coordinates, optimal_route)
|
| 129 |
|
| 130 |
# Render map
|
| 131 |
-
|
|
|
|
|
|
| 45 |
tour = [0]
|
| 46 |
bits = (2 ** n - 1) - 1
|
| 47 |
for _ in range(n - 1):
|
| 48 |
+
if last_city is not None:
|
| 49 |
+
tour.append(last_city)
|
| 50 |
+
bits &= ~(1 << last_city)
|
| 51 |
+
if bits == 0:
|
| 52 |
+
break
|
| 53 |
+
next_city = min(
|
| 54 |
+
[(memo[(bits, k)] + dist_matrix[k][last_city], k) for k in range(n) if (bits, k) in memo],
|
| 55 |
+
key=lambda x: x[0],
|
| 56 |
+
)[1]
|
| 57 |
+
last_city = next_city
|
| 58 |
+
else:
|
| 59 |
break
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
|
| 61 |
tour.append(0)
|
| 62 |
return min_tour_cost, tour
|
|
|
|
| 100 |
# Streamlit UI
|
| 101 |
st.title("Traveling Salesman Problem Solver")
|
| 102 |
|
| 103 |
+
# Create map
|
| 104 |
+
map_obj = folium.Map(location=[0, 0], zoom_start=2)
|
| 105 |
+
|
| 106 |
# Input kota
|
| 107 |
st.subheader("Pilih Kota")
|
| 108 |
city_count = st.number_input("Jumlah kota", min_value=2, step=1)
|
|
|
|
| 134 |
plot_route(map_obj, valid_coordinates, optimal_route)
|
| 135 |
|
| 136 |
# Render map
|
| 137 |
+
st.markdown("### Rute Optimal")
|
| 138 |
+
st_folium = st.components.v1.html(folium.Map._repr_html_(map_obj), width=800, height=600)
|