Untitled
unknown
plain_text
a year ago
1.7 kB
10
Indexable
# Define the functions with adjustments to find the optimal control center location
def calculate_distance(x1, y1, x2, y2):
"""Calculates the Manhattan distance between two points."""
return abs(x1 - x2) + abs(y1 - y2)
def calculate_total_cost(wind_farms, control_center):
"""Calculates the total cost of connecting all wind farms to a control center."""
total_cost = 0
for farm in wind_farms:
distance = calculate_distance(control_center[0], control_center[1], farm[0], farm[1])
cost = distance * farm[2]
total_cost += cost
return total_cost
# Optimal control center finder using the weighted median method
def find_optimal_control_center(wind_farms):
# Separate x, y, and weights (premium)
x_coords = [farm[0] for farm in wind_farms]
y_coords = [farm[1] for farm in wind_farms]
weights = [farm[2] for farm in wind_farms]
# Helper function to find the weighted median
def weighted_median(coordinates, weights):
data = sorted(zip(coordinates, weights))
total_weight = sum(weights)
cumulative_weight = 0
for coord, weight in data:
cumulative_weight += weight
if cumulative_weight * 2 >= total_weight:
return coord
return data[-1][0]
# Find weighted medians for x and y coordinates
optimal_x = weighted_median(x_coords, weights)
optimal_y = weighted_median(y_coords, weights)
# Calculate the total cost with the optimal control center
optimal_control_center = (optimal_x, optimal_y)
total_cost = calculate_total_cost(wind_farms, optimal_control_center)
return total_cost
Editor is loading...
Leave a Comment