Update app.py
Browse files
app.py
CHANGED
|
@@ -27,23 +27,27 @@ def dynamic_huff_model(df_distances, df_attractiveness, alpha, beta, df_capacity
|
|
| 27 |
df_population_per_iteration = df_population / iterations
|
| 28 |
|
| 29 |
# Run the iterative distribution process
|
| 30 |
-
for
|
|
|
|
| 31 |
attractiveness = df_attractiveness.copy()
|
| 32 |
current_visitors = df_visitors.sum(axis=0)
|
| 33 |
|
| 34 |
# Calculate the decay based on the relative share of free capacity
|
|
|
|
| 35 |
relative_crowding = current_visitors / df_capacity
|
| 36 |
decay_factor = np.where(relative_crowding < crowding_threshold, 1, 1 - (relative_crowding - crowding_threshold) / (1 - crowding_threshold))
|
| 37 |
attractiveness *= decay_factor
|
| 38 |
|
| 39 |
# Calculate Huff model probabilities
|
|
|
|
| 40 |
distance_term = df_distances ** -beta
|
| 41 |
# If df_distances is a DataFrame and df_attractiveness is a Series, you might need an operation like:
|
| 42 |
numerator = df_distances.multiply(df_attractiveness, axis=0) # Adjust based on actual intent
|
| 43 |
|
| 44 |
denominator = numerator.sum(axis='columns')
|
| 45 |
probabilities = numerator.div(denominator, axis='index').fillna(0)
|
| 46 |
-
|
|
|
|
| 47 |
# Distribute visitors based on probabilities and population
|
| 48 |
visitors_this_iteration = probabilities.multiply(df_population_per_iteration, axis='index')
|
| 49 |
|
|
|
|
| 27 |
df_population_per_iteration = df_population / iterations
|
| 28 |
|
| 29 |
# Run the iterative distribution process
|
| 30 |
+
for i in range(int(iterations)):
|
| 31 |
+
print("iteration " + str(i) + "/"+str(int(iterations)))
|
| 32 |
attractiveness = df_attractiveness.copy()
|
| 33 |
current_visitors = df_visitors.sum(axis=0)
|
| 34 |
|
| 35 |
# Calculate the decay based on the relative share of free capacity
|
| 36 |
+
print(" Calculate the decay based on the relative share of free capacity")
|
| 37 |
relative_crowding = current_visitors / df_capacity
|
| 38 |
decay_factor = np.where(relative_crowding < crowding_threshold, 1, 1 - (relative_crowding - crowding_threshold) / (1 - crowding_threshold))
|
| 39 |
attractiveness *= decay_factor
|
| 40 |
|
| 41 |
# Calculate Huff model probabilities
|
| 42 |
+
print("Calculate Huff model probabilities")
|
| 43 |
distance_term = df_distances ** -beta
|
| 44 |
# If df_distances is a DataFrame and df_attractiveness is a Series, you might need an operation like:
|
| 45 |
numerator = df_distances.multiply(df_attractiveness, axis=0) # Adjust based on actual intent
|
| 46 |
|
| 47 |
denominator = numerator.sum(axis='columns')
|
| 48 |
probabilities = numerator.div(denominator, axis='index').fillna(0)
|
| 49 |
+
|
| 50 |
+
print("Distribute visitors based on probabilities and population")
|
| 51 |
# Distribute visitors based on probabilities and population
|
| 52 |
visitors_this_iteration = probabilities.multiply(df_population_per_iteration, axis='index')
|
| 53 |
|