1. 引言
能源作为战略资源,是国民经济的基础和命脉,也是社会全面发展的重要物质资源。节能降耗对于解决现阶段我国存在的能源危机具有重要的现实意义。随着新一代信息技术与能源系统建设的融合,智慧能源 [1] 毫无疑问地成为现阶段的能源发展新方向。为了保证智慧能源系统的科学合理性,通过建立评估指标体系进行综合评价,可以从客观上保证其正确的发展方向。智慧能源系统尚处于研究阶段,对于智慧能源的评价体系还未建立一个统一的标准。在此背景下,本文基于层次分析法和模糊综合评价法,使用B/S架构设计了一套用于智慧能源系统评价的Web系统,可以方便地对各个城市的智慧能源系统进行评价,为后续的发展提供参考。
2. 评价方法选型
2.1. 层次分析法 [2]
层次分析法(AHP)是一种灵活实用的多维度层次权重决策分析方法。AHP的主要优点是同时对数据进行定性和定量、主观和客观的分析,在满足客观性的条件下结合专家主观的意见使得数据更真实,同时主观的判断存在可以使权重系数的分配更加灵活。层次分析法的主要步骤如下:
1) 首先对评价对象进行分析,明确指标,建立层次结构树;
2) 将同一层次各个指标按相对重要性两两进行比较,构建判断矩阵;
3) 计算判断矩阵的特征向量、特征值、一致性检验指标;
4) 如果一致性检验通过,则特征向量即为各因素的权重系数,否则重新两两比较。
本文所研究的对象智慧能源系统的层次模型如图1所示,对智慧能源系统的经济效益性、环境友好型、互动化水平、信息化水平、自动化水平、安全可靠性六方面进行评价 [3]。

Figure 1. Hierarchical model of smart energy system
图1. 智慧能源系统层次模型
2.2. 模糊综合评价法 [4]
模糊综合评价法是基于模糊数学理论的评价方法。模糊综合评价法适合于处理定性指标,根据模糊数学的隶属度理论和模糊统计方法把定性评价转为定量评价,解决了指标边界不清晰的问题。模糊综合评价的步骤如下:
1) 层次分析法确定权重系数向量A;
2) 确定对象的指标集合和评语集合;
3) 多位专家为系统的各个指标进行评价,得到模糊评价矩阵R;
4) 利用矩阵的模糊乘法得到综合模糊评价向量B;
5) 对B进行归一化,加权得到评分。
3. 系统设计
3.1. 功能模块
本文设计的评价系统的功能模块划分如图2所示,主要分为用户管理、指标管理、综合评价三个大模块。本系统主要实现三个模块功能:
1) 用户登录注册,管理员对用户的角色及权限进行管理;
2) 管理员可以对需要评价的指标进行增加、删除、修改,并且使用层次分析法对指标进行赋权;
3) 多位专家对智慧能源系统进行评分,使用模糊评价法对各个城市不同年份的智慧能源系统进行综合评价,最后对评价结果进行分析,利用图表的形式展示结果。
3.2. 体系架构
本文设计的智慧能源评价系统由前端、服务器、数据库三层结构组成,如图3所示。前端分为手机客户端和电脑浏览器端,基于BootStrap + jQuery + ECharts框架开发。后端基于SpringBoot + Mybatis框架,去除繁琐的XML配置,简化开发,前后端的交互采用Ajax [5] 技术实现前后端分离,使用Tomcat作为后端服务器。静态资源的服务器使用Nginx [6] 搭建,同时利用Nginx的反向代理功能,实现后端服务器的负载均衡。数据库方面采用MySQL服务器存储元数据,采用主从备份的方式持久化,进行容灾备份,同时采用Redis作为缓存服务器以存储热点数据。
3.3. 数据存储
3.3.1. 常规MySQL数据库
动态网站必定离不开数据的交互,MySQL是使用最广泛、最适合网站开发的关系型管理系统。MySQL把数据存储在多个表格中,这样有益于查询速度的提高和灵活性的增强。本系统涉及多个数据模型,因此需要根据需求有效地设计数据表并对其结构优化,用E-R图 [7] 直观地呈现数据模型中的关联关系,本系统的E-R图如图4所示。如E-R所示,每个用户都基于角色做权限管理,用户与角色是多对一的关系,一个用户只对应于一个角色,但是一个角色可对应于多个用户,角色与权限是多对多的关联关系,一个角色可拥有多个权限,同时一个权限也能被多个角色拥有;用户、智慧能源系统、指标三者之间都是多对多的关系,三者可唯一确定一个评价,用一张表来表示三者的关联关系。
3.3.2. Redis缓存数据库
Redis [8] 是基于内存的高速缓存数据库,支持String、List、Hash、Set、Sorted Set五种数据类型,key-value的存储方式使得查询性能极高。本系统的热点数据是指标的信息,用户查询热点数据的示意图如图5所示,当客户端发起查询请求时,后端服务器首先查询Redis缓存中是否存在所需数据,如果查到了则直接返回,如果缓存中不存在待查询数据则去查询Mysql服务器,并将查到的数据置入Redis缓存,同时设置过期时间。当需要更新指标数据时,缓存数据也需要随之更新,否则会破坏数据一致性。本系统采用的缓存更新策略是先更新MySQL,再删除Redis缓存,保证数据的最终一致性。

Figure 5. Schematic diagram of system hot data cache
图5. 系统热点数据缓存示意图
4. 系统功能实现与测试
4.1. 用户管理
用户管理模块主要包括两个小模块:登录注册、权限管理。
1) 登录注册子模块主要实现的功能包括登录、注册、找回密码,具体流程如图6所示,未注册用户可通过邮箱来进行注册,注册之后可以通过用户名和密码进行登录,如果用户忘记密码可通过邮箱进行找回密码。考虑到数据库如果明文存储密码是不安全的,因此对密码用了md5 + salt [9] 的方式进行加密,并且在前端和后台两次加密,加强了系统对密码的保护能力。登录、注册、找回密码三个功能的效果如图7所示。

Figure 6. Login and registration process
图6. 登录注册流程
2) 出于安全的考虑,对用户进行权限管理,不同的角色拥有不同的操作权限,管理员对用户进行管理,主要涉及用户的角色更改和角色所对应的权限更改。本文所设计的系统中,指标信息的更改和用户权限的更改只允许管理员操作,专家调查表只允许角色是专家的用户填写并提交,权限管理页面如图8所示。
4.2. 指标管理
本模块由两个功能组成:指标的增加、删除以及修改,指标权重的计算。管理员登陆后点击“指标管理”,可看到当前各指标的信息,可对指标的信息进行修改,如果需要重新赋权,则管理员输入判断矩阵,后台对输入的矩阵数据进行校验后会自动计算出所需的结果,包括判断矩阵的最大特征值以及归一化后的特征向量,同时会进行一致性检验,最终得到赋权结果,指标管理页面如图9所示。
4.3. 综合评价
建立了评价模型之后,用模糊综合评价法对智慧能源系统进行评价。该模块主要分为两部分:专家评分和评价结果分析。专家评分功能需要做一份调查表,提供给各位专家做评价,利用权限控制使得只有角色是专家的用户才能使用此功能,完成的功能效果如图10所示。
多位专家各自打完分后,后台会基于模糊综合评价法计算该系统总体得分,同时把分数持久化到数据库方便查询,功能效果如图11所示,表格显示各个城市不同年份的评分,同时用曲线图直观地表示各个城市智慧能源系统的差距以及每个城市不同年份的变化。
5. 系统性能测试
5.1. 并发负载测试
为了保证系统的稳定性,需要对系统进行并发负载测试,测试系统在瞬时大流量的冲击下的性能。本次使用ContiPerf进行Mock测试,ContiPerf是一款基于JUnit 4的轻量级测试工具,对后台的接口指定线程数量和调用次数,同时可以限制最大执行时间、平均执行时间来方便测试。
智慧能源评价系统基于ContiPerf并发负载测试的步骤如下:
1) 在test环境下引入ContiPerf依赖包;
2) 单元测试类里面使用@Rule注解激活ContiPerf;
3) 使用@PerfTest注解指定调用次数和线程数量,@Required注解指定最大执行时间,平均执行时间等;
4) 执行测试之后,访问本地的target/contiperf-report/index.html,得到可视化的执行结果。
本次测试报告如图12所示,设置1000次请求,同时开启40个线程,throughput显示吞吐量是每秒1769次请求,average latency显示平均响应时间为21毫秒,性能满足系统需求。
5.2. 数据库性能测试
本节选用Apache JMeter [10] 对数据库进行压力测试,JMeter是基于Java的一款压力测试工具,可以对HTTP服务器、FTP服务器和数据库服务器进行压测,功能全面且使用简单。
使用JMeter进行数据库压测的步骤如下:
1) 新建测试计划,添加线程组,同时设置线程数;
2) 新建JDBC配置,设置数据库配置信息;
3) 新建JDBC请求,编写sql语句;
4) 执行测试,查看结果树和聚合报告。
本次测试的聚合报告如图13所示,总请求数是254万,平均响应时间23毫秒,错误率1.05%,吞吐量每秒638次,能满足系统所需的并发要求。
6. 结束语
本文基于B/S架构实现了针对智慧能源系统的评价系统,融入层次分析法和模糊综合评价法,可以科学合理地对智慧能源系统做出客观评价,直观比较不同的智慧能源系统发展的差距,为各个智慧能源系统的建设和长期发展提供科学依据。本文设计也有不足之处,层次分析法和模糊综合评价法是偏向主观的评价方法,在后续的设计中会加入客观的评价方法,使得评价结果在融合了专家经验的基础上,加入现实数据的客观性。
基金项目
国家电网有限公司总部科技项目:城市智慧能源体系典型设计与运行服务研究资助。