update heat and grid part
This commit is contained in:
parent
d318e26e25
commit
fb89548c37
|
@ -20,7 +20,7 @@ class WgzGym(gym.Env):
|
|||
self.TRAIN = True
|
||||
self.current_time = None
|
||||
self.episode_length = 24
|
||||
self.penalty_coefficient = 50 # 约束惩罚系数
|
||||
self.penalty_coefficient = 10 # 约束惩罚系数
|
||||
self.sell_coefficient = 0.5 # 售出利润系数
|
||||
self.a = 0.5
|
||||
self.b = 0.3
|
||||
|
@ -67,7 +67,8 @@ class WgzGym(gym.Env):
|
|||
|
||||
obs = np.concatenate((np.float32(time_step), np.float32(price), np.float32(temper),
|
||||
np.float32(solar), np.float32(load), np.float32(heat),
|
||||
np.float32(people), np.float32(ec_out), np.float32(hst_soc), np.float32(grid_ex)), axis=None)
|
||||
np.float32(people), np.float32(ec_out), np.float32(hst_soc), np.float32(grid_ex)),
|
||||
axis=None)
|
||||
return obs
|
||||
|
||||
def step(self, action):
|
||||
|
@ -82,17 +83,26 @@ class WgzGym(gym.Env):
|
|||
load = current_obs[4]
|
||||
heat = current_obs[5]
|
||||
|
||||
gym_to_grid = solar + self.HST.get_power() - self.EC.current_power - load
|
||||
heat_penalty = 0
|
||||
power_gap = solar + self.HST.get_power() - self.EC.current_power - load
|
||||
heat_gap = self.HST.get_heat() + self.EC.get_heat() - heat
|
||||
|
||||
# reward = 0.0
|
||||
sell_benefit, buy_cost = 0, 0
|
||||
# power_penalty = 0
|
||||
if gym_to_grid >= 0: # 过剩
|
||||
sell_benefit = self.grid.get_cost(price, gym_to_grid) * self.sell_coefficient
|
||||
if power_gap >= 0: # 过剩
|
||||
sell_benefit = self.grid.get_cost(price, power_gap) * self.sell_coefficient
|
||||
power_gap = 0
|
||||
power_penalty = 0
|
||||
else: # 缺少
|
||||
buy_cost = self.grid.get_cost(price, abs(gym_to_grid))
|
||||
power_penalty = abs(gym_to_grid) * self.penalty_coefficient
|
||||
power_gap = abs(power_gap)
|
||||
buy_cost = self.grid.get_cost(price, power_gap)
|
||||
power_penalty = power_gap * self.penalty_coefficient
|
||||
|
||||
if heat_gap >= 0:
|
||||
heat_gap = 0
|
||||
heat_penalty = 0
|
||||
else:
|
||||
heat_gap = abs(heat_gap)
|
||||
heat_penalty = heat_gap * self.penalty_coefficient
|
||||
|
||||
hst_cost = self.HST.get_cost()
|
||||
ec_cost = self.EC.get_cost(price)
|
||||
|
@ -100,10 +110,10 @@ class WgzGym(gym.Env):
|
|||
|
||||
economic_cost = hst_cost + ec_cost + solar_cost - sell_benefit + buy_cost
|
||||
demand_cost = self.heat_a * heat_penalty + self.power_a * power_penalty
|
||||
eco_benifit = 0
|
||||
eco_benifit = self.EC.less_carbon() - self.grid.get_carbon()
|
||||
reward = - self.a * demand_cost - self.b * economic_cost + self.c * eco_benifit
|
||||
|
||||
self.unbalance = gym_to_grid
|
||||
self.unbalance = power_gap + heat_gap
|
||||
final_step_outputs = [self.HST.current_soc, self.EC.current_power, self.grid.current_power]
|
||||
self.current_time += 1
|
||||
finish = (self.current_time == self.episode_length)
|
||||
|
|
|
@ -25,7 +25,7 @@ class EC:
|
|||
def get_heat(self):
|
||||
return self.current_power * (1 - self.electricity_efficiency)
|
||||
|
||||
def get_carbon(self):
|
||||
def less_carbon(self):
|
||||
return self.current_power * self.carbon_reduce
|
||||
|
||||
def get_power_max(self):
|
||||
|
@ -84,6 +84,7 @@ class HST:
|
|||
class Grid:
|
||||
def __init__(self):
|
||||
self.delta = 1
|
||||
self.carbon_increace = 0.9
|
||||
self.trade_energy = None
|
||||
|
||||
def step(self, action_grid):
|
||||
|
@ -92,6 +93,9 @@ class Grid:
|
|||
def get_cost(self, price):
|
||||
return price * self.trade_energy * self.delta
|
||||
|
||||
def get_carbon(self):
|
||||
return self.trade_energy * self.carbon_increace
|
||||
|
||||
def retrieve_past_price(self):
|
||||
result = []
|
||||
# 过去24小时的价格起始、结束索引
|
||||
|
|
|
@ -6,7 +6,7 @@ EC_parameters = {
|
|||
'lifetime': 6000, # hour
|
||||
'equipment_cost': 10000, # yuan
|
||||
'electrolysis_efficiency': 0.8,
|
||||
'carbon_reduce': 1,
|
||||
'carbon_reduce': 0.9,
|
||||
}
|
||||
|
||||
HST_parameters = {
|
||||
|
|
Loading…
Reference in New Issue