具体实施方式
请参阅图1,提供一种实施例的基于K均值的电力用户聚类方法,包括如下步骤:
S110:获取电力用户在各预设时间点的用电负荷。
电力系统为电力用户供电,每个电力用户对应有各自的用电负荷,且电力用户在每个时刻有其对应的用电负荷,例如,电力用户A在某一天中的第一个预设时间点的用电负荷为10。在本实施例中,预设时间点的数量可为24,也就是说,各预设时间点可预先设置,例如,可选择一天中每个小时中的某一时刻作为预设时间点,从而可设置24个预设时间点。在本实施例中,通过获取电力用户在各预设时间点的用电负荷,也就即可获取到该电力用户在每个预设时间的用电负荷,例如,可获取电力用户A在一天中24个预设时间点对应的用电负荷,电力用户为多个时,即可获取每个电力用户在一天中24个预设时间点对应的用电负荷。其中,电力用户在各预设时间点的用电负荷包括了预设时间点的个数的用电负荷。
S120:根据预设排序规则,对各电力用户在每个预设时间点的用电负荷进行排序,获得各预设时间点对应的电力用户的用电负荷集。
由于各电力用户用电情况的不同,其对应的用电负荷不同,且同一电力用户在不同预设时间点的用电负荷也可能不同,从而,各电力用户在同一预设时间点的用电负荷可能不同,在本实施例中,根据预设排序规则,可对各电力用户在每个预设时间点的用电负荷进行排序,例如,对各电力用户在一天中某个预设时间点比如一天中第一个小时对应的第一个预设时间点对应的用电负荷进行排序,获得各预设时间点对应的电力用户的用电负荷集。例如,电力用户A在第一预设时间点对应的用电负荷为16,电力用户B在第一预设时间点对应的用电负荷为61,电力用户C在第一预设时间点的用电负荷为23,对上述三个电力用户在同一预设时间点的用电负荷进行排序,获得第一预设时间点对应的电力用户的用电负荷集。对各电力用户在每个预设时间点的用电负荷进行上述类似的排序过程,从而,可获得各预设时间点对应的电力用户的用电负荷集。每个用电负荷集中元素的数量为电力用户的数量。
S130:根据预设选择规则,获得预设聚类个数的排位数,从各用电负荷集中分别选取排位数对应的用电负荷,获得每个排位数对应的各用电负荷。
在对电力用户进行聚类时,预先设置有预设聚类个数,在获得各预设时间点对应的电力用户的用电负荷集后,需要从各预设时间点对应的电力用户的用电负荷集中分别选取排位数对应的用电负荷,例如,预设聚类个数为10,获取到10个排位数,比如10个排位数分别为8、17、26、35、44、53、62、71、80和89,首先从各用电负荷集中选择排位数为8的用电负荷,获得排位数8对应的各用电负荷,同理地,从各用电负荷集中选择其他9个排位数分别对应的各用电负荷,从而,获取到每个排位数对应的各用电负荷。单个排位数对应的各用电负荷的数量与预设时间点的个数相同。其中,预设排序规则可以为时间从小到大的排序规则,也可以为时间从大到小的排序规则。
S140:根据每个排位数对应的各用电负荷,分别构建预设聚类个数的在各预设时间点的新用电负荷。
单个在各预设时间点的新用电负荷中包括预设时间点的个数的用电负荷,由于在对用户聚类中,需要预先设置预设聚类个数,排位数的个数与预设聚类个数相同,从而,在获取到每个排位数对应的各用电负荷后,可构建预设聚类个数的在各预设时间点的新用电负荷。
S150:将预设聚类个数的在各预设时间点的新用电负荷分别初始化为预设聚类个数的聚类中心,根据电力用户在各预设时间点的用电负荷、聚类中心以及K均值聚类算法对各电力用户进行聚类,获得各电力用户的聚类结果。
获得预设聚类个数的排位数,可从各用电负荷集中获取排位数对应的各用电负荷,根据每个排位数对应的各用电负荷,可分别构建预设聚类个数的在各预设时间点的新用电负荷。利用K均值聚类算法进行聚类时,首先是需要初始化预设聚类个数的聚类中心,在本实施例中,将预设聚类个数的在各预设时间点的新用电负荷分别初始化为预设聚类个数的聚类中心,然后,利用K均值聚类算法对电力用户进行聚类获得聚类结果,其中,聚类时,采用的聚类特征是电力用户在各预设时间点的用电负荷。
上述基于K均值的电力用户聚类方法,获取电力用户在各预设时间点的用电负荷,根据预设排序规则,对各电力用户在每个预设时间点的用电负荷进行排序,获得各预设时间点对应的电力用户的用电负荷集,根据预设选择规则,获得预设聚类个数的排位数,从各用电负荷集中分别选取排位数对应的用电负荷,获得每个排位数对应的各用电负荷,根据每个排位数对应的各用电负荷,分别构建预设聚类个数的在各预设时间点的新用电负荷,将预设聚类个数的在各预设时间点的新用电负荷分别初始化为预设聚类个数的聚类中心,根据电力用户在各预设时间点的用电负荷、聚类中心以及K均值聚类算法对各电力用户进行聚类,获得各电力用户的聚类结果。通过上述基于K均值的电力用户聚类方法初始化预设聚类个数的聚类中心时,不再是随机在电力用户中选取在各预设时间点的用电负荷作为初始化聚类中心,而是根据每个所述排位数对应的各所述用电负荷,分别构建所述预设聚类个数的在各所述预设时间点的新用电负荷,并初始化为所述预设聚类个数的聚类中心,这样可合理地初始化预设聚类个数的聚类中心,在初始化聚类中心后根据K均值聚类算法对各电力用户进行聚类,可获得较为准确的聚类结果,提高聚类准确性。
在电力系统为用户提供电能过程中,不同电力用户用电情况可能不同,电力用户聚类结果对电力系统的经济分析、运行以及规划具有重要影响,从而,在对电力用户进行聚类获得聚类结果后,可根据电力用户的聚类结果,可对电力系统进行规划,例如,可为用电负荷较大的一类电力用户提供较大功率的电能。通过提高电力用户的聚类结果的准确性,从而可有效准确地对电力系统进行规划,使电力系统稳定运行。
在其中一个实施例中,将预设聚类个数的在各预设时间点的新用电负荷分别初始化为预设聚类个数的聚类中心,根据电力用户在各预设时间点的用电负荷、聚类中心以及K均值聚类算法对各电力用户进行聚类,获得各电力用户的聚类结果的步骤包括:
S251:预设聚类个数的在各预设时间点的新用电负荷分别初始化为预设聚类个数的聚类中心。
将预设聚类个数的在各预设时间点的新用电负荷分别初始化为预设聚类个数的聚类中心,即可获得预设聚类个数的聚类中心。
S252:分别计算电力用户在各预设时间点的用电负荷分别到各聚类中心的距离。
S253:将电力用户分别划分至距离最近的聚类中心,获得预设聚类个数的聚类类别。
电力用户在各预设时间点的用电负荷中包括了预设时间点个数的用电负荷,例如,预设时间点个数为24,分别为一天中每个小时中的某一个时刻,则电力用户在各预设时间点的用电负荷相当于一个具有24个元素的向量,其中,24个元素分别为24个预设时间点对应的用电负荷,每个聚类中心中也包括了预设时间个数的新用电负荷,也就是说,在预设时间点个数为24时,聚类中心中也是为包括了24个元素的向量,聚类中心中的24个元素为在24个预设时间点对应的新用电负荷。电力用户在各预设时间点的用电负荷中数量与聚类中心中的新用电负荷的数量是一样的,相当于两个元素数量相同的向量,在计算电力用户在各预设时间点的用电负荷分别到各聚类中心的距离时,相当于计算两个向量之间的距离。
由于聚类中心的数量有预设聚类个数,从而,需要计算电力用户在各预设时间点的用电负荷分别到各聚类中心的距离。然后,将电力用户分别划分至距离最近的聚类中心,获得预设聚类个数的聚类类别。
S254:计算各聚类类别中电力用户的用电负荷在各预设时间点对应的用电负荷均值。
将电力用户分别划分至距离最近的聚类中心,获得预设聚类个数的聚类类别后,每个聚类类别中可能包括多个电力用户,聚类类别的电力用户间的用电负荷可能不同,需要聚类列别中包括的电力用户在各预设时间点对应的用电负荷值,例如,一个聚类类别中包括电力用户A和电力用户B,电力用户A的用电负荷中,在第一个预设时间点的用电负荷为10,在第二个预设时间点的用电负荷为20,电力用户B的用电负荷中,在第一个预设时间点的用电负荷为16,在第二个预设时间点的用电负荷为18,聚类类别中电力用户的用电负荷在第一个预设时间点对应的用电负荷均值为18,聚类类别中电力用户的用电负荷在第二个预设时间点对应的用电负荷均值为19,对于其他聚类中心执行类似的操作,可获得各聚类类别中电力用户的用电负荷在各预设时间点对应的用电负荷均值。
S255:将电力用户所在聚类类别的聚类中心更新为聚类类别中电力用户在各预设时间点对应的用电负荷均值。
在获得各聚类类别中电力用户的用电负荷在各预设时间点对应的用电负荷均值后,需要更新每个聚类类别对应的聚类中心,即将聚类中心更新为聚类类别中电力用户在各预设时间点对应的用电负荷均值。例如,某一个聚类中心为第一预设时间点的用电负荷为10,第二预设时间点的用电负荷为20,聚类中心中包括电力用户A和电力用户B,该聚类类别中电力用户A和电力用户B的用电负荷在第一个预设时间点对应的用电负荷均值为18,在第二个预设时间点对应的用电负荷均值为19,在进行更新时,即将该聚类中心的第一预设时间对应的用电负荷更新为第一预设时间对应的用电负荷均值18,将该聚类中心的第二预设时间对应的用电负荷更新为在第二预设时间对应的用电负荷均值19,对每个聚类中心执行上述类似的更新动作,实现每个聚类中心的更新。
S256:根据更新后的聚类中心,计算各聚类类别对应的预设标准测度函数的目标值。
在进行聚类,且更新聚类中心后,需要计算每个聚类类别对应的预设标准测度函数的目标值,用做后续终止聚类的条件。在本实施例中,聚类类别对应的预设标准测度函数为聚类类别中各电力用户在各预设时间点的用电负荷到聚类中心的平方误差和,即通过公式可获得预设标准测度函数的目标值,其中,J为预设标准测度函数的目标值,i为1到n的整数,n为该聚类类别中电力用户的数量,Xi为第i个电力用户在个预设时间点的用电负荷,U为聚类中心。也就是说,聚类类别对应的预设标准测度函数为聚类类别中每个电力用户在各预设时间点的用电负荷到聚类中心的平方误差和,预设标准测度函数的目标值即为平方误差和值。
S257:判断预设标准测度函数的目标值是否小于预设值。
当预设标准测度函数的目标值小于预设值时,执行以下步骤:
S258:确定各电力用户的聚类结果为预设聚类个数的聚类类别。
当预设标准测度函数的目标值不小于预设值时,则返回分别计算电力用户在各预设时间点的用电负荷分别到各聚类中心的距离的步骤。
也就是说,在预设标准测度函数的目标值不小于预设值时,说明聚类还未满足用户想要的准确度,需要返回重新计算电力用户在各预设时间点的用电负荷分别到各更新后的额聚类中心的聚类,然后重新进行聚类获得新的聚类结果,断重复上述步骤,直到预设标准测度函数的目标值小于预设值,表示满足聚类终止条件,此时,即可确定获得的各电力用户的聚类结果为预设聚类个数的聚类类别。
在其中一个实施例中,根据预设选择规则,获得预设聚类个数的排位数包括:
根据以下公式获取预设聚类个数的排位数:
Ph=round(m/(K+1))*h-1。
其中,Ph为第h个排位数,1≤h≤K,K为预设聚类个数,m为电力用户的数量,round函数为四舍五入的函数。
下面以一具体实施例对上述基于K均值的电力用户聚类方法加以具体说明,具体地,假设需要聚类的电力用户的数量为100个,要聚成10类,即预设聚类个数K为10,预设时间点的数量为24,分别为一天24个小时中每个小时中对应的时刻,分别为时刻1,时刻2,…,,时刻24。具体聚类步骤如下:
(1)初始化10个聚类中心
(1.1)负荷值排序
对于所有进行聚类的电力用户的数据记录(电力用户在24个预设时间点的用电负荷),每一条数据记录对应一个电力用户在24个预设时间的用电负荷,即包含24个时刻的用电负荷,例如,包括时刻1的负荷值,时刻2的用电负荷,…,时刻24的用电负荷,对所有电力用户的数据记录的一个时刻的用电负荷(如时刻1的用电负荷)进行由小到大的排序,获得时刻1对应的电力用户的用电负荷集(集合1),排序后的结果具体为:{时刻1的用电负荷16,时刻1的用电负荷23,…,时刻1的用电负荷61},即是一个用电负荷由小到大排列的100个值组成的集合1。对所有电力用户的数据记录的在其他23个时刻的用电负荷进行上述类似的排序,得到集合2,集合3,…,集合24。
(1.2)确定选取的排位数
依据公式:round(m/(k+1))*h-1(注:round是四舍五入的函数,h=1,2,3,...k,k是预设聚类个数,m是聚类的样本数的个数即电力用户的数量)选取排位数,选取的排位数分别为8,17,26,35,44,53,62,71,80,89。
(1.3)初始中心点选取
分别从集合1,集合2,…,集合24中选取第8个元素,可获得24个用电负荷,获得排位数8对应的各用电负荷,包括时刻1的用电负荷,时刻2的用电负荷,…,时刻24的用电负荷,时刻1的用电负荷值为集合1中的第8个元素,时刻2的用电负荷为集合2中的第8个元素,…时刻24的用电负荷为集合24中第8个元素,组成一条新数据记录1,然后,同样的在这24个集合中再选取其他的排位数对应的各用电负荷,组成9条新的数据记录,从而可获得10条新的数据记录,即根据每个排位数对应的各用电负荷,分别构建的预设聚类个数的在各预设时间点的新用电负荷。
10条新的数据记录即为10个在24个预设时间点的新用电负荷,每个新用电负荷中包括24个时刻对应的用电负荷,以这10条新的数据记录初始化K-means聚类算法的聚类中心。
(2)进行第一次聚类
进行聚类时,分别计算电力用户在各预设时间点的用电负荷分别到各聚类中心的距离,将电力用户分别划分至距离最近的聚类中心,获得预设聚类个数的聚类类别,如此所有电力用户在各预设时间点的用电负荷找到自己对应的聚类中心进行聚类。
(3)更新聚类中心
计算同一类的所有电力用户的用电负荷在各预设时间点对应的用电负荷均值。以同一类中电力用户在各预设时间点对应的用电负荷均值更新聚类中心,其他所有的聚类类别进行相同的操作得到10个更新的聚类中心。
(4)持续聚类到收敛为止
以产生的10个更新的聚类中心,计算各聚类类别对应的预设标准测度函数的目标值,当预设标准测度函数的目标值不小于预设值时,返回分别计算电力用户在各预设时间点的用电负荷分别到各聚类中心的距离的步骤重新计算,选取最近的聚类中心作为其聚类中心,不断重复上面的步骤,直到预设标准测度函数的目标值小于预设值为止。
请参阅图3,本发明还提供一种实施例的基于K均值的电力用户聚类装置,包括:
负荷获取模块310,用于获取电力用户在各预设时间点的用电负荷。
排序模块320,用于根据预设排序规则,对各电力用户在每个预设时间点的用电负荷进行排序,获得各预设时间点对应的电力用户的用电负荷集。
选取模块330,用于根据预设选择规则,获得预设聚类个数的排位数,从各用电负荷集中分别选取排位数对应的用电负荷,获得每个排位数对应的各用电负荷。
构建模块340,用于根据每个排位数对应的各用电负荷,分别构建预设聚类个数的在各预设时间点的新用电负荷。
聚类模块350,用于将预设聚类个数的在各预设时间点的新用电负荷分别初始化为预设聚类个数的聚类中心,根据电力用户在各预设时间点的用电负荷、聚类中心以及K均值聚类算法对各电力用户进行聚类,获得各电力用户的聚类结果。
上述基于K均值的电力用户聚类装置,获取电力用户在各预设时间点的用电负荷,根据预设排序规则,对各电力用户在每个预设时间点的用电负荷进行排序,获得各预设时间点对应的电力用户的用电负荷集,根据预设选择规则,获得预设聚类个数的排位数,从各用电负荷集中分别选取排位数对应的用电负荷,获得每个排位数对应的各用电负荷,根据每个排位数对应的各用电负荷,分别构建预设聚类个数的在各预设时间点的新用电负荷,将预设聚类个数的在各预设时间点的新用电负荷分别初始化为预设聚类个数的聚类中心,根据电力用户在各预设时间点的用电负荷、聚类中心以及K均值聚类算法对各电力用户进行聚类,获得各电力用户的聚类结果。通过上述基于K均值的电力用户聚类装置初始化预设聚类个数的聚类中心时,不再是随机在电力用户中选取在各预设时间点的用电负荷作为初始化聚类中心,而是根据每个所述排位数对应的各所述用电负荷,分别构建所述预设聚类个数的在各所述预设时间点的新用电负荷,并初始化为所述预设聚类个数的聚类中心,这样可合理地初始化预设聚类个数的聚类中心,在初始化聚类中心后根据K均值聚类算法对各电力用户进行聚类,可获得较为准确的聚类结果,提高聚类准确性。
在其中一个实施例中,聚类模块包括:
初始化模块451,用于预设聚类个数的在各预设时间点的新用电负荷分别初始化为预设聚类个数的聚类中心。
距离计算模块452,用于分别计算电力用户在各预设时间点的用电负荷分别到各聚类中心的距离。
聚类类别获取模块453,用于将电力用户分别划分至距离最近的聚类中心,获得预设聚类个数的聚类类别。
均值计算模块454,用于计算各聚类类别中电力用户的用电负荷在各预设时间点对应的用电负荷均值。
更新模块455,用于将电力用户所在聚类类别的聚类中心更新为聚类类别中电力用户在各预设时间点对应的用电负荷均值。
目标值获取模块456,用于根据更新后的聚类中心,计算各聚类类别对应的预设标准测度函数的目标值。
判断模块457,用于判断预设标准测度函数的目标值是否小于预设值。
确定模块458,用于当预设标准测度函数的目标值小于预设值时,确定各电力用户的聚类结果为预设聚类个数的聚类类别。
在其中一个实施例中,上述基于K均值的电力用户聚类装置还包括:
返回模块459,用于当预设标准测度函数的目标值不小于预设值时,返回距离计算模块分别计算电力用户在各预设时间点的用电负荷分别到各聚类中心的距离的步骤。
在其中一个实施例中,聚类类别对应的预设标准测度函数为平方误差和。
在其中一个实施例中,选取模块还具体用于根据以下公式获取预设聚类个数的排位数:
Ph=round(m/(K+1))*h-1。
其中,Ph为第h个排位数,1≤h≤K,K为预设聚类个数,m为电力用户的数量,round函数为四舍五入的函数。
上述基于K均值的电力用户聚类装置为实现上述基于K均值的电力用户聚类方法的装置,技术特征一一对应,在此不再赘述。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。