diff --git a/AgentPPO/actor.pth b/AgentPPO/actor.pth index 857688d..aa3238d 100644 Binary files a/AgentPPO/actor.pth and b/AgentPPO/actor.pth differ diff --git a/AgentPPO/loss_data.pkl b/AgentPPO/loss_data.pkl index a019fe1..0a336c8 100644 Binary files a/AgentPPO/loss_data.pkl and b/AgentPPO/loss_data.pkl differ diff --git a/AgentPPO/reward_data.pkl b/AgentPPO/reward_data.pkl index d420577..2e333f7 100644 Binary files a/AgentPPO/reward_data.pkl and b/AgentPPO/reward_data.pkl differ diff --git a/AgentPPO/test_data.pkl b/AgentPPO/test_data.pkl index 5148691..1dfc983 100644 Binary files a/AgentPPO/test_data.pkl and b/AgentPPO/test_data.pkl differ diff --git a/tools.py b/tools.py index e18d793..824e9c7 100644 --- a/tools.py +++ b/tools.py @@ -46,39 +46,38 @@ def optimization_base_result(env, month, day, initial_soc): m = gp.Model("UC") - # set system variables + # 设置系统变量 on_off = m.addVars(NUM_GEN, period, vtype=GRB.BINARY, name='on_off') gen_output = m.addVars(NUM_GEN, period, vtype=GRB.CONTINUOUS, name='output') - # set constrains for charge/discharge + pv = m.addVars(period, vtype=GRB.CONTINUOUS, lb=0, name='pv') + # 设置充放电约束 battery_energy_change = m.addVars(period, vtype=GRB.CONTINUOUS, lb=env.battery.max_discharge, ub=env.battery.max_charge, name='battery_action') - # set constrains for exchange between external grid and distributed energy system + # 设置外部电网与能源系统交换约束 grid_energy_import = m.addVars(period, vtype=GRB.CONTINUOUS, lb=0, ub=env.grid.exchange_ability, name='import') grid_energy_export = m.addVars(period, vtype=GRB.CONTINUOUS, lb=0, ub=env.grid.exchange_ability, name='export') soc = m.addVars(period, vtype=GRB.CONTINUOUS, lb=0.2, ub=0.8, name='SOC') - # 1. add balance constrain + # 1. 添加平衡约束 m.addConstrs(((sum(gen_output[g, t] for g in range(NUM_GEN)) + pv[t] + wind[t] + grid_energy_import[t] >= load[t] + battery_energy_change[t] + grid_energy_export[t]) for t in range(period)), name='powerbalance') - # 2. add constrain for pmax pmin + # 2. 添加发电机最大/最小功率约束 m.addConstrs((gen_output[g, t] <= on_off[g, t] * p_max[g] for g in range(NUM_GEN) for t in range(period)), 'gen_output_max') m.addConstrs((gen_output[g, t] >= on_off[g, t] * p_min[g] for g in range(NUM_GEN) for t in range(period)), 'gen_output_min') - # 3. add constrain for ramping up ramping down + # 3. 添加上升和下降约束 m.addConstrs((gen_output[g, t + 1] - gen_output[g, t] <= ramping_up[g] for g in range(NUM_GEN) for t in range(period - 1)), 'ramping_up') m.addConstrs((gen_output[g, t] - gen_output[g, t + 1] <= ramping_down[g] for g in range(NUM_GEN) for t in range(period - 1)), 'ramping_down') - # 4. add constrains for SOC + # 4. 添加电池容量约束 m.addConstr(battery_capacity * soc[0] == battery_capacity * initial_soc + (battery_energy_change[0] * battery_efficiency), name='soc0') m.addConstrs((battery_capacity * soc[t] == battery_capacity * soc[t - 1] + (battery_energy_change[t] * battery_efficiency) for t in range(1, period)), name='soc update') - # 5. add constrain for pv output - m.addConstrs((pv[t] >= 0 for t in range(period)), name='pv_output_min') - # set cost function - # 1 cost of generator + # 设置成本函数 + # 发电机成本 cost_gen = gp.quicksum( (a_para[g] * gen_output[g, t] * gen_output[g, t] + b_para[g] * gen_output[g, t] + c_para[g] * on_off[g, t]) for t in range(period) for g in range(NUM_GEN))