import pandas as pd class pv_config: def __init__(self, capacity, cost_per_kW, lifetime, loss): self.capacity = capacity self.cost_per_kW = cost_per_kW self.lifetime = lifetime self.loss = loss def get_cost(self): return self.capacity * self.cost_per_kW def get_cost_per_year(self): return self.capacity * self.cost_per_kW / self.lifetime class ess_config: def __init__(self, capacity, cost_per_kW, lifetime, loss, charge_power, discharge_power): self.capacity = capacity self.cost_per_kW = cost_per_kW self.lifetime = lifetime self.loss = loss self.storage = 100 self.charge_power = charge_power self.discharge_power = discharge_power def get_cost(self): return self.capacity * self.cost_per_kW def get_cost_per_year(self): return self.capacity * self.cost_per_kW / self.lifetime class grid_config: def __init__(self, capacity, grid_loss, sell_price): # self.price_schedule = price_schedule self.loss = grid_loss self.sell_price = sell_price self.capacity = capacity def get_price_for_time(self, time): hour, minute = map(int, time.split(':')) total_minutes = hour * 60 + minute for _, row in self.price_schedule.iterrows(): start_hour, start_minute = map(int, row['time_start'].split(':')) end_hour, end_minute = map(int, row['time_end'].split(':')) start_total_minutes = start_hour * 60 + start_minute end_total_minutes = end_hour * 60 + end_minute if start_total_minutes <= total_minutes < end_total_minutes: return row['price'] return 0.1 # 默认电价,以防万一没有匹配的时间段