目前的能源系统结构主要由太阳能发电站、风能发电站、发电机和电池模块通过电力网与住宅相连接。以下是中文和符号的对照：
As：电池的充电状态动作；Ag1：发电机1的功率动作；Ag2：发电机2的功率动作；Ag3：发电机3的功率动作；Av：太阳能的电压动作；
Sp：电价状态；Sc：电池荷电状态；Sl：住宅负载状态；Sg1：发电机1功率状态；Sg2：发电机2功率状态；Sg3：发电机3功率状态；St：温度状态；Si：太阳辐射度状态；Sw：风速状态；
Pc：电池充放电功率；Pg1：发电机1功率；Pg2：发电机2功率；Pg3：发电机3功率；Pso：太阳能功率；Pw：风能功率；
Cb：电池成本；Cg1：发电机1成本；Cg2：发电机2成本；Cg3：发电机3成本；Cs：太阳能成本；Cw：风能成本；Rs：销售收入；Cp：购买成本；Ee：过剩能源；Es：短缺能源；Pe：过剩惩罚；Ps：短缺惩罚。
一、控制方案和目标：
1、优先使用太阳能和风能发电，当无法满足满负荷时，请使用发电机和电池供电。
2、在供电时考虑多种供电来源（太阳能、风能、发电机和电池），综合每个发电模块的成本，需满足下一时刻的住宅用电负载，且使供需差异最小化。
3、减少超过公网交易限额的交易，以避免公共电网波动影响住宅用电的稳定性。
4、最大化奖励函数并最小化能源不平衡。
二、连续状态空间：是一个长度为9的向量，包含以下部分：
Sp：由数据提供；Sc：初始为0.4，始终介于0.2和0.8；Sl：由数据提供；
Sg1：初始功率为0；Sg2：初始功率为0；Sg3：初始功率为0；
St：由数据提供；Si：由数据提供；Sw：由数据提供。
其中Sc，Sg1、Sg2和Sg3始终不小于0。
三、连续动作空间：一个长度为5的向量，x表示当前时间的取值, 其范围从-1到1，每个时刻的值都是在上一时刻基础上进行变化的，Ag1、Ag2和Ag3分别表示相对于各自最大瞬时功率100、100和200的变化值。
1、Ac：电池总容量为500，初始电池容量为500*0.4=200，电池容量变化100*x；
2、Ag1：发电量变化100*x；
3、Ag2：发电量变化100*x；
4、Ag3：发电量变化200*x；
5、Av：太阳能电压变为(1+x)倍。
可根据需求通过改变功率控制发电机的开关，当关闭时保持Sg=0，当打开时需满足Pg约束。根据成本，通常前一台发电机的最大功率不足以满足剩余负荷时，才开启后续发电机。
四、发电量计算公式
1、Pc = max(0.2, min(0.8, Sc + 0.2 * action[0] * 0.9))，其中0.8和0.2为电池荷电状态上下限；
2、Pg1 = max(0, min(150, 100 * action[1] + Sg1))，其中150和0为发电机1开启时发电量上下限；
3、Pg2 = max(0, min(375, 100 * action[2] + Sg2))，其中375和0为发电机2开启时发电量上下限；
4、Pg3 = max(0, min(500, 200 * action[3] + Sg3))，其中500和0为发电机2开启时发电量上下限；
5、Pso = max(0, (0.2 * Si + 0.05 * St - 9.25) * (1 + action[4]))，其中太阳能发电功率不小于0。
6、Pw：与Ws有关
if 3 <= Ws < 8, Pw = Ws^3 * 172.2625 / 1000
elif 8 <= Ws < 12, Pw = 64 * 172.2625 / 125
else Pw = 0
五、成本和能源平衡计算
P = Pc + Pg1 + Pg2 + Pg3 + Pso + Pw
if P >= Sl , Ee = P – Sl, else Es = Sl - P
1、Cb = 0.01 * Asoc + 0.1 * Sc
2、Cg1 = 0.0034 * Pg1^2 + 3 * Pg1 + 30
3、Cg2 = 0.001 * Pg2^2 + 10 * Pg2 + 40
4、Cg3 = 0.001 * Pg3^2 + 15 * Pg3 + 70
5、Cs = 0.01 * Pso
6、Cw = 0.01 * Pw
7、Rs = 0.5 * Sp * Ee
8、Cp = Sp * Es
9、Pe = (Ee - 100) * 50
10、Ps = (Es - 100) * 50
因为Rs、Pe和Cp、Ps对应能源过剩和能源短缺情况，只能同时存在一组。
六、奖励函数
Reward = - (Cb + Cg1 + Cg2 + Cg3 + Cs + Cw + Pe + Ps - Rs + Cp) / 1000
七、请求动作数据
读取数据并使用上述公式计算每个时刻的状态，请你使用最合适的优化方法，给出每个时刻的动作控制方案，每小时计算一次并生成一个长度为5的数组，表示Ac、Ag1、Ag2、Ag3和Av的动作决策。返回的数据应为以下Json格式：[{x1, x2, x3, x4, x5}, {x1, x2, x3, x4, x5}, ..., {x1, x2, x3, x4, x5}]
