update env logic
This commit is contained in:
parent
0192a10874
commit
406f86c7dd
|
@ -22,6 +22,9 @@ class WgzGym(gym.Env):
|
|||
self.episode_length = 24
|
||||
self.penalty_coefficient = 50 # 约束惩罚系数
|
||||
self.sell_coefficient = 0.5 # 售出利润系数
|
||||
self.a = 0.5
|
||||
self.b = 0.3
|
||||
self.c = 0.2
|
||||
self.EC_parameters = kwargs.get('EC_parameters', EC_parameters) # 电解水制氢器
|
||||
self.HST_parameters = kwargs.get('dg_parameters', dg_parameters) # 储氢罐
|
||||
|
||||
|
@ -69,13 +72,13 @@ class WgzGym(gym.Env):
|
|||
current_obs = self._build_state()
|
||||
self.EC.step(action[0]) # 执行状态转换,电池当前容量也改变
|
||||
self.HST.step(action[1])
|
||||
self.dg2.step(action[2])
|
||||
self.grid.step(action[2])
|
||||
price = current_obs[1]
|
||||
temper = current_obs[2]
|
||||
solar = current_obs[3]
|
||||
load = current_obs[4]
|
||||
heat = current_obs[5]
|
||||
gym_to_grid = solar + self.EC.get_hydrogen() - load
|
||||
gym_to_grid = solar + self.HST.get_power() - self.EC.current_power - load
|
||||
|
||||
# reward = 0.0
|
||||
sell_benefit, buy_cost = 0, 0
|
||||
|
@ -90,8 +93,11 @@ class WgzGym(gym.Env):
|
|||
hst_cost = self.HST.get_cost()
|
||||
ec_cost = self.EC.get_cost(price)
|
||||
solar_cost = solar # 待补充
|
||||
reward = - (hst_cost + ec_cost + solar_cost
|
||||
+ excess_penalty + deficient_penalty - sell_benefit + buy_cost)
|
||||
|
||||
economic_cost = hst_cost + ec_cost + solar_cost - sell_benefit + buy_cost
|
||||
demand_cost = excess_penalty + deficient_penalty
|
||||
eco_benifit = 0
|
||||
reward = - self.a * economic_cost - self.b * demand_cost + self.c * eco_benifit
|
||||
|
||||
self.unbalance = gym_to_grid
|
||||
final_step_outputs = [self.HST.current_soc, self.EC.current_power, self.grid.current_power]
|
||||
|
|
|
@ -25,6 +25,9 @@ class EC:
|
|||
def get_carbon(self):
|
||||
return self.current_power * self.carbon_reduce
|
||||
|
||||
def get_power_max(self):
|
||||
return self.power_max
|
||||
|
||||
def reset(self):
|
||||
self.current_power = 0
|
||||
|
||||
|
@ -32,14 +35,16 @@ class EC:
|
|||
class HST:
|
||||
def __init__(self, params):
|
||||
self.current_soc = None
|
||||
self.hydrogen_change = None
|
||||
self.hydrogen_charge = None
|
||||
self.capacity = params['capacity']
|
||||
self.min_soc = params['min_soc']
|
||||
self.max_soc = params['max_soc']
|
||||
self.ramp = params['ramp']
|
||||
self.lifetime = params['lifetime']
|
||||
self.equipment_cost = params['equipment_cost']
|
||||
self.efficiency = params['efficiency']
|
||||
self.charge_efficiency = params['charge_efficiency']
|
||||
self.generate_efficiency = params['generate_efficiency']
|
||||
self.lower_heating_value = params['lower_heating_value']
|
||||
|
||||
'''
|
||||
储氢罐的充气速率 = 电解水制氢速率 (电解水制氢放的热会满足热水需求?)
|
||||
|
@ -49,11 +54,17 @@ class HST:
|
|||
def step(self, action_hst):
|
||||
energy = action_hst * self.ramp
|
||||
updated_soc = max(self.min_soc, min(self.max_soc, (self.current_soc * self.capacity + energy) / self.capacity))
|
||||
self.hydrogen_change = (updated_capacity - self.current_soc) * self.capacity
|
||||
self.hydrogen_charge = (updated_soc - self.current_soc) * self.capacity
|
||||
self.current_soc = updated_soc
|
||||
|
||||
def get_power(self):
|
||||
if self.hydrogen_charge > 0:
|
||||
return self.hydrogen_charge * self.lower_heating_value * self.charge_efficiency * self.generate_efficiency
|
||||
else:
|
||||
return 0
|
||||
|
||||
def get_cost(self):
|
||||
cost = self.equipment_cost / self.lifetime * abs(self.hydrogen_change)
|
||||
cost = self.equipment_cost / self.lifetime * abs(self.hydrogen_charge)
|
||||
return cost
|
||||
|
||||
def reset(self):
|
||||
|
@ -63,10 +74,13 @@ class HST:
|
|||
class Grid:
|
||||
def __init__(self):
|
||||
self.delta = 1
|
||||
self.exchange_ability = 100
|
||||
self.trade_energy = None
|
||||
|
||||
def get_cost(self, current_price, energy_exchange):
|
||||
return current_price * energy_exchange * self.delta
|
||||
def step(self, action_grid):
|
||||
self.trade_energy = (action_grid + 1) / 2 * EC.get_power_max() # 反标准化
|
||||
|
||||
def get_cost(self, price):
|
||||
return price * self.trade_energy * self.delta
|
||||
|
||||
def retrieve_past_price(self):
|
||||
result = []
|
||||
|
|
|
@ -15,5 +15,7 @@ HST_parameters = {
|
|||
'max_soc': 0.9,
|
||||
'lifetime': 6000, # hour
|
||||
'equipment_cost': 10000, # yuan
|
||||
'efficiency': 0.95,
|
||||
'charge_efficiency': 0.95,
|
||||
'generate_efficiency': 0.6,
|
||||
'lower_heating_value': 33.33,
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue