CN108932588A - 一种前后端分离的水电站群优化调度系统及方法 - Google Patents

一种前后端分离的水电站群优化调度系统及方法 Download PDF

Info

Publication number
CN108932588A
CN108932588A CN201810698716.1A CN201810698716A CN108932588A CN 108932588 A CN108932588 A CN 108932588A CN 201810698716 A CN201810698716 A CN 201810698716A CN 108932588 A CN108932588 A CN 108932588A
Authority
CN
China
Prior art keywords
group
data
power station
hydropower stations
scheduling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810698716.1A
Other languages
English (en)
Other versions
CN108932588B (zh
Inventor
莫莉
廖想
高新稳
彭璐
邹义博
舒生茂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201810698716.1A priority Critical patent/CN108932588B/zh
Publication of CN108932588A publication Critical patent/CN108932588A/zh
Application granted granted Critical
Publication of CN108932588B publication Critical patent/CN108932588B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/06Energy or water supply

Landscapes

  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Engineering & Computer Science (AREA)
  • Economics (AREA)
  • Strategic Management (AREA)
  • Theoretical Computer Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Health & Medical Sciences (AREA)
  • Marketing (AREA)
  • General Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • Public Health (AREA)
  • Primary Health Care (AREA)
  • Water Supply & Treatment (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • General Health & Medical Sciences (AREA)
  • Game Theory and Decision Science (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明属于水利信息化领域,公开了一种前后端分离的水电站群优化调度系统及方法。方法有水电站群的生成:首先生成机组对象;然后生成电站对象,机组对象作为电站对象的一个属性保存电站对象中;最后根据电站拓扑结构生成有向无环图,组成水电站群对象;后端专注于服务层,进行数据的传递;前端专注于UI层,进行前端页面的控制、渲染逻辑和系统交互。本发明提取出公共方法设计了相应的接口,新的模型算法只需在此基础上扩展即可,极大地增强了程序的灵活性;本发明实现了前后端分离,结构清晰、扩展方便,具有简单性、可伸缩性和松耦合等优点。

Description

一种前后端分离的水电站群优化调度系统及方法
技术领域
本发明属于水利信息化领域,尤其涉及一种前后端分离的水电站群优化调度系统及方法。具体涉及一种基于REST架构风格、前后端分离的水电站群优化调度系统设计。
背景技术
目前,业内常用的现有技术是这样的:
采用浏览器/应用服务器(B/S)架构构建应用系统,在系统开发过程中,利用Java跨平台语言并结合JavaScript、JSP、WebService等技术设计开发服务器端应用程序与客户端图形用户界面,并以MySQL和Tomcat作为数据库服务器与Java Web应用服务器。对于客户端用户来说,只需安装浏览器与Java运行环境即可操作该系统,而升级与日常维护等工作均在服务器端完成,与客户端无关,减少了用户工作量。
随着我国水电建设的迅猛发展,水利事业的现代化和信息化进程全面推进,水电调度需要承担更复杂的调度任务,处理日益复杂的调度关系。水电站群优化调度系统是十分复杂的大型应用软件,涉及电站生产运行所需的水雨情测报、发电计划编制、运行结果分析评价等各个方面,其功能需求涵盖众多应用模块,如:基础信息管理、水文特性分析、降雨和径流预报、长中短期优化调度、厂内经济运行等。每一个应用模块与各种模型算法紧密相连,而每一个算法又与大量的业务信息相关联,不同应用模块的业务信息又存在不同程度的交叉。
综上所述,现有技术存在的问题是:
(1)传统的水电站群优化调度系统通常采用MVC架构模式,即将模型(Model)、视图(View)、控制器(Controller)三者分离,便于应用程序的设计和管理。但随着系统规模的不断扩大,视图依赖于模型的问题越来越突出,前端代码越来越复杂,充满了各种约定,导致前后端高度耦合,无法统一协作。前端受限于后端的开发过程,在后端视图层高度耦合导致业务逻辑散落在应用中,从而使得前后端分工不明确,沟通成本大大提高。
(2)水电站群优化调度系统的结构极其复杂,设计到的对象和参数众多,相互之间联系非常紧密,在实体类、模型算法的设计上不够灵活,无法通过封装、继承、重载和多态等技术进行扩展,难以满足大规模水电站群优化调度系统的系统性和可伸缩性要求。
(3)前端采用Java Swing和JSP进行开发,技术相对落后,且采用JSP存在增大了服务器的压力、前端与后端未脱离,拖慢开发进度、过于依赖java运行环境、复用率较低等缺点,无法满足水电站群优化调度系统界面友好、响应式布局的要求。
解决上述技术问题的难度和意义:
解决上述技术问题的难度在于需要运用面向对象的设计思想对流域水电站群联合优化调度有关的各类实体、模型与算法进行抽象,设计出满足封装性、可扩展性的实用类库;同时需要进行良好的前后端分离设计,以满足水电站群联合优化调度系统高内聚、松耦合的要求。
意义:(1)结合后端Spring Boot微框架和前端React框架,设计了一种基于前后端分离技术的REST系统总体架构,并依据现有的先进系统集成技术构建满足实际工程需求的软件设计模式,具有一定的工程实用价值。
(2)基于上述架构,实现了一种基于REST的前后端分离的调度系统,该系统具有数据采集维护、方案制定与仿真、成果管理与分析等功能。
(3)构建了具有广泛的通用性、灵活性、智能性和可扩展性的大规模水电系统,且能切实服务于生产调度的需要。
发明内容
针对现有技术存在的问题,本发明提供了一种前后端分离的水电站群优化调度系统及方法。
本发明是这样实现的,一种前后端分离的水电站群优化调度方法,所述前后端分离的水电站群优化调度方法包括:
水电站群的生成:首先将与水电站群优化调度相关的基础数据保存在数据库中,数据存储按照不同用途进行分类。生成水电站群对象封装create()方法中,传入一个无序的电站名称数组,即可完成对象的创建,其具体步骤包括:首先调用机组工厂类生成机组对象,然后调用电站工厂类生成电站对象,电站包括一种或几种机组类型,每一种类型的机组只保留一个实体;依次遍历数组,直到所有电站生成完毕,再按照电站的拓扑结构构造有向无环图,组成水电站群对象。
前后端分离:后端以Spring Boot微框架为基础,专注于服务层,涉及到数据库交互、实体的抽象与构建、模型算法的编写以及权限认证、日志管理等众多复杂且相互耦合的业务模块。具体地,采用Spring Data JPA进行数据库的连接,只需编写持久层接口,简单的查询可通过解析方法名创建;调度实体、模型与算法的编写以面向对象程序设计为指导,其创建由Spring IOC容器统一管理,按需分配,从而降低对象之间的依赖关系;用户认证和用户授权通过Spring Security提供的用户登录认证和访问控制等方法实现,包括密码加密,页面权限等等;日志倾向于门面模式的Slf4j框架,并通过Spring AOP面向切面编程,把分散在各个应用模块的日志记录功能统一处理。
前端为单页面应用程序,在启动时只加载单个HTML页面,并通过动态更新完成与用户的交互任务。采用React、Dva以及Ant Design的技术栈,专注于UI层,即前端页面的控制和渲染逻辑、系统交互和用户体验。具体地,利用React声明式的、基于组件的特点,进行前端页面的开发,并通过其虚拟DOM、反应式的单向数据绑定提高效率;采用Dva管理状态,解决从状态到组件的单向数据流转问题,从而使得数据流向清晰简明;基于Ant Design确定和自然的设计价值观和模块化的解决方案,采用Ant Design of React开箱即用的高质量组件,简化前端开发的工作。
后端在服务器上运行,提供数据、处理业务逻辑;前端在浏览器上运行,用于接收数据、返回数据,处理渲染逻辑。前后端是两个独立的程序,互不影响,只通过RESTful API进行交互,是一种真正意义上的前后端分离。
进一步,水电站群的生成中,还需先进行数据库的创建;
(1)数据收集与整理。收集电站基础数据、运行数据等,按照不同类型、不同用途进行分类,整理并保存在Excel中备用。
(2)数据库设计。依据存储数据的用途,将所有库表分为四大类:基础数据存储表(以“basic_”开头)、实际运行数据存储表(以“real_”开头)、方案结果存储表(以“result_”开头)和用户及其他信息存储表(以“other_”开头)。这种设计既满足数据库表的设计规范要求,也有利于库表的快速查询与维护。
(3)数据导入。利用Navicat等数据库管理软件,将整理好的数据导入到数据库中,完成数据库的创建。导入前反复检查数据格式是否符合要求,否则需在Excel中调整。
进一步,水电站群生成步骤包括:
(1)根据调度模型的不同,提取出所涉及的电站名称,将其保存在电站枚举类数组或列表中。电站的顺序不作要求,以增强程序的灵活性。
(2)水电站群对象生成过程封装在水电站群工厂类的create()方法中,将步骤一中数组或列表传入即可。具体的,首先调用机组工厂类生成机组对象,然后调用电站工厂类生成电站对象,电站包括一种或几种机组类型,每一种类型的机组只保留一个实体;依次遍历数组,直到所有电站生成完毕,再按照电站的拓扑结构构造有向无环图,组成水电站群对象。
(3)水电站群类中包含灵活易用的API,包括获取水电站群的计算次序的方法getAllStations(),依次遍历列表即可;获取某一电站的直接上游电站的方法getUpStations(),一般用于计算该电站的入库,因为入库与直接上游电站的出库有关;获取某一电站影响的下游电站的方法getDownStations(),一般用于逐步优化算法的迭代过程。
进一步,前后端分离的方法包括:首先需要在后端创建RESTful API,用以提供数据和处理业务逻辑,数据格式一般为JSON;前端访问某一RESTful API即可得到数据,通过一定的处理渲染在页面上。以获取某一电站的水位库容曲线为例,后端通过@GetMapping注解生成一个RESTful API,返回数据点的列表,Spring自动将转换为JSON数据格式,访问URL
“http://localhost:8080/api/zv/{id}”就能得到数据;在前端页面创建一个曲线,通过URL与后端进行交互,将数据传入曲线的data属性就生成了水位库容曲线。
本发明的另一目的在于提供一种实现所述前后端分离的水电站群优化调度方法的计算机程序。
本发明的另一目的在于提供一种实现所述前后端分离的水电站群优化调度方法的信息数据处理终端。
本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述的前后端分离的水电站群优化调度方法。
本发明的另一目的在于提供一种实现述前后端分离的水电站群优化调度方法的前后端分离的水电站群优化调度系统,所述前后端分离的水电站群优化调度系统包括:
后端单元,后端以Spring Boot微框架为基础,专注于服务层,涉及到数据库交互、实体的抽象与构建、模型算法的编写以及权限认证、日志管理等众多复杂且相互耦合的业务模块。具体地,采用Spring Data JPA进行数据库的连接,只需编写持久层接口,简单的查询可通过解析方法名创建;调度实体、模型与算法的编写以面向对象程序设计为指导,其创建由Spring IOC容器统一管理,按需分配,从而降低对象之间的依赖关系;用户认证和用户授权通过Spring Security提供的用户登录认证和访问控制等方法实现,包括密码加密,页面权限等等;日志倾向于门面模式的Slf4j框架,并通过Spring AOP面向切面编程,把分散在各个应用模块的日志记录功能统一处理。
前端单元,前端为单页面应用程序,在启动时只加载单个HTML页面,并通过动态更新完成与用户的交互任务。采用React、Dva以及Ant Design的技术栈,专注于UI层,即前端页面的控制和渲染逻辑、系统交互和用户体验。具体地,利用React声明式的、基于组件的特点,进行前端页面的开发,并通过其虚拟DOM、反应式的单向数据绑定提高效率;采用Dva管理状态,解决从状态到组件的单向数据流转问题,从而使得数据流向清晰简明;基于AntDesign确定和自然的设计价值观和模块化的解决方案,采用Ant Design of React开箱即用的高质量组件,简化前端开发的工作。
进一步,后端单元包括:
数据库,包括:数据库,依据存储数据的用途,将所有库表分为四大类,分别为以“basic_”开头的基础数据存储表,用于存储电站、机组的基础数据,包括但不限于水位库容曲线、尾水位下泄流量曲线、机组NHQ曲线等;以“real_”开头的实际运行数据存储表,用于存储电站机组实际运行的数据,以月、日或小时进行分类,分别存储;以“result_”开头的方案结果存储表,用于存储调度结果;以“others”开头的用户及其他信息存储表,用于存储调度系统用户信息及其他信息。这种设计既满足数据库表的设计规范要求,也有利于库表的快速查询与维护。
Spring模块,采用依赖注入的方式进行资源集中管理,通过内置Tomcat、Jetty容器,利用Java配置方式,进行开箱即用、自动配置;
机组模块,用于按照类型进行分类,每种类型只产生一个共享对象;机组对象中含有NHQ曲线、预想出力曲线的基础数据;
电站与电站群模块,通过有向无环图(Directed Acyclic Graph)对混联水电站群进行拓扑结构排序,给出获取直接上游电站、下游相关电站的方法,
模型算法模块,包括:
优化问题类模块,用于定义问题方法名称、决策变量、目标函数以及约束条件的个数基本信息,并提供产生结果(createSolution)和适应度评价(evaluate)的方法。还用于创建长期优化调度问题(LongtermProblem)和短期优化调度问题(ShorttermProblem);
计算结果类模块,用于定义设置和获取变量值、目标函数值的方法,还用于提供拷贝的方法;在数学规划法计算时,作为初始解或者最终解;智能算法求解时,Solution的大小由种群的规模决定;还用于提供长期调度结果(LongtermSolution)与短期调度结果(ShorttermSolution);
前端单元,包括:
SPA模块,只包含单个页面的应用程序,用于启动时只加载单个HTML页面,并通过动态更新来完成与用户的交互任务;
React模块,
用于以某种方式组织代码,进行预测、调试;还用于通过组合的方式创建更复杂的应用;还用于利用Node.js在服务端重用代码,或者通过React Native创建移动端手机应用;
Dva模块,用于解决组件之间的通信、数据与视图的串联、路由与数据的绑定、异步逻辑的编写等React未解决的问题,易学易用,使用elm概念组织model,具有插件机制。
Ant Design模块,基于Ant Design确定和自然的设计价值观和模块化的解决方案,采用Ant Design of React开箱即用的高质量组件,简化前端开发的工作。
本发明的另一目的在于提供一种搭载有所述前后端分离的水电站群优化调度系统的水利信息调度平台。
综上所述,本发明的优点及积极效果为
本发明目的在于提出一种基于REST架构风格、前后端分离的水电站群优化调度系统设计方法,将系统分为相互独立的两个部分,其中后端以Spring Boot微框架为基础,专注于服务层,包括数据库连接、模型算法的抽象与实现以及数据的处理;前端采用React、Dva以及Ant Design的技术栈专注于UI层,即前端页面的控制和渲染逻辑、系统交互和用户体验。以此构建具有通用性、灵活性、智能性和可扩展性的大规模水电系统,服务于生产调度的需要。
本发明的优点还有:
已有优化调度的模型算法结构混乱,未进行良好的面向对象程序设计,需求变化后往往要进行大量重构。本发明将算法(Algorithm)、问题(Problem)、结果(Solution)和算子(Operator)等进行抽象,提取出公共方法设计了相应的接口,新的模型算法只需在此基础上扩展即可,极大地增强了程序的灵活性。
已有水电站群优化调度系统多采用MVC模式,每次请求必须经过“控
制器-模型-视图”这个流程,过程复杂,视图依赖于模型,且渲染视图的过程是在服务端完成的,最终呈现给浏览器的是带有模型的视图页面,性能无法得到很好的优化。借助于REST架构模式,本发明实现了前后端分离,结构清晰、扩展方便,具有简单性、可伸缩性和松耦合等优点。
附图说明
图1是本发明实施例提供的水电站群优化调度系统前后端分离的REST架构模式图。
图2是本发明实施例提供的水电站群优化调度系统主要数据库关系表。
图3是本发明实施例提供的混联水电站群的拓扑结构及其变形图。
图4是本发明实施例提供的水电站群优化调度系统模型算法的UML类图。
图5是本发明实施例提供的水电站群的生成过程示意图。
图6是本发明实施例提供的溪洛渡水电站水位库容曲线的前台展示页面图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
传统的水电站群优化调度系统通常采用MVC架构模式,即将模型(Model)、视图(View)、控制器(Controller)三者分离,便于应用程序的设计和管理。但随着系统规模的不断扩大,视图依赖于模型的问题越来越突出,前端代码越来越复杂,充满了各种约定,导致前后端高度耦合,无法统一协作。前端受限于后端的开发过程,在后端视图层高度耦合导致业务逻辑散落在应用中,从而使得前后端分工不明确,沟通成本大大提高。
下面结合具体分析对本发明作进一步描述。
本发明提出一种基于REST架构风格、前后端分离的水电站群优化调度系统设计方法,将系统分为相互独立的两个部分,其中后端以Spring Boot微框架为基础,专注于服务层,包括数据库连接、模型算法的抽象与实现以及数据的处理;前端采用React、Dva以及AntDesign的技术栈专注于UI层,即前端页面的控制和渲染逻辑、系统交互和用户体验。以此构建具有通用性、灵活性、智能性和可扩展性的大规模水电系统,服务于生产调度的需要。如图1所示。
(1)数据库设计
水电站群优化调度系统涉及庞大的数据存储量,其中既包含基本不变的电站基础特征曲线,又包括大小逐渐增加的调度方案结果和电站实际运行数据,还需要把用户信息等其它数据保存起来。调度方案结果和电站实际运行数据通常涉及到成千上万条数据,数据量很大,对数据的保存、查询与备份提出了很高的要求。为提高系统的整体开发与维护效率,依据存储数据的用途,将所有库表分为四大类:基础数据存储表(以“basic_”开头)、实际运行数据存储表(以“real_”开头)、方案结果存储表(以“result_”开头)和用户及其他信息存储表(以“other_”开头),这种设计既满足数据库表的设计规范要求,也有利于库表的快速查询与维护。为清楚反应主要数据库表的内部结构及其他们之间的相互关联关系,
图2列出了系统各类信息主要数据库表的E-R图。
很显然,水电站编号(station_id)是联结基础数据表、实际运行数据表和调度方案表这三类库表的纽带,在整个库表设计中有着关键的作用。
对于长期保留的数据,汇总表也会越来越大,可以根据需要采用数据库分布式等。同时一定要规划的数据的存储,可以根据数据的重要程度,分级存储,对不用的历史数据及时下线存储,以为生产提供空间。另外,制定合理的满足需求的数据库备份,备份和恢复要平和考虑。
有了数据库,就会涉及到数据库的连接。系统采用Spring Data JPA来简化数据持久化的开发。使用Spring Data JPA进行持久层开发只需要两个步骤:①定义实体类对象,与数据库中的表一一对应;②编写持久层接口,在接口中声明需要的业务方法。简单的查询可通过解析方法名创建,而无需显式地书写SQL语句。另外它也提供了对事务的支持。
(2)后端设计
后端开发是水电站群优化调度与决策支持系统的关键,其中涉及到数据库交互、实体的抽象与构建、模型算法的编写以及权限认证、日志管理等众多复杂且相互耦合的高级业务模块。如何在满足优化调度与决策支持应用要求的前提下,设计和开发出一套灵活易用、高内聚低耦合的系统,是实际工作中必须要解决的问题。
(2.1)Spring
一般企业应用以管理信息系统为主,工作流驱动、业务需求复杂等特点导致其开发难度大且维护困难。为了解决该问题,Spring应运而生,它是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架,相比于EJB,具有简单灵活、可测试性和松耦合的优势,极大了简化了应用程序的开发。
Spring采用依赖注入(Dependency Injection)的方式实现了资源集中管理,从而降低了使用资源双方的耦合度。随着应用软件规模的扩大,对象之间依赖关系复杂,经常出现多重依赖性关系的情况,导致系统耦合度过高。使用Spring框架,将对象的控制权交给Spring容器,“统一管理,按需分配”,有利于系统的解耦。比如业务需要进行数据库操作,直接通过构造器注入与数据库交互相关的Repository即可。另外,电站也作为Bean来设计,容器初始化过程中自动装配电站Bean,模型计算时可以直接从Spring容器中获取,提高了后续开发的效率。
传统的软件设计思想是面向对象编程(OOP),它封装了业务处理过程中的各类实体,强调整体性的概念。而AOP是对OOP的有益补充,通过横切的概念把散落在核心业务中的一些逻辑封装起来,进一步降低了模块之间的耦合度。例如水库群优化调度系统中的事务控制、日志记录、权限管理等特殊业务,可以灵活运用Spring AOP以及Java语言本身的动态代理、拦截器等技术完成。
为提高Spring项目的开发效率,Spring Boot应运而生。Spring Boot不是一个全新的框架,它通过内置Tomcat、Jetty等容器,利用更加优雅的Java配置方式,提供了开箱即用、自动配置的依赖模块,实现了对Spring功能上的增强,为基于Spring的开发提供更快的入门体验。
(2.2)机组、电站与电站群
机组是电站的重要组成部分,一个电站通常包含多台机组,这些机组的类型可能相同,也可能不完全相同。为了减少机组对象的创建,降低程序的内存消耗,可将机组按照类型进行分类,每种类型只产生一个共享对象。另外,机组对象中含有NHQ曲线、预想出力曲线等基础数据。
电站是水库优化调度的基本单元,模型计算时直接操作电站对象,它关系到程序的操作性与扩展性,必须进行合理、灵活的设计。每一个电站具有电站名称、电站基础信息、水位库容曲线、尾水位下泄流量曲线、多台机组等属性,机组与电站通过组合的方式联系起来,构成了一个完整的电站实体。
随着流域大规模水电站群的不断开发,水库优化调度逐步从单一水库发展为流域梯级水库群,更有大型流域混联水库群的联合优化调度。为了便于联合优化调度的计算,本发明设计了由一系列水力相关的水电站组成的水电站群类(MultiStation),通过有向无环图(Directed Acyclic Graph)对混联水电站群进行拓扑结构排序,并给出了获取直接上游电站、下游相关电站等方法,有效克服了在模型算法编写过程中处理电站间相关关系的难题。
由于水流的单向性,混联水电站群只需稍加变形即可用有向无环图表示,然后利用成熟有效的排序算法获取其计算顺序。为清晰地描述该过程,这里以长江干支流控制性混联水库群为例进行说明,其拓扑结构见图3左。通过支流后移的方法,图3左的拓扑结构可转化为图3右的拓扑结构,这样就形成了一个有向无环图。如此一来,只需要知道每座电站的直系下游电站,并提前保存在数据库中,使用时传入电站数组,就能够按照相应的顺序自动装配MultiStation对象,然后利用有向无环图的数据结构完成相应方法的编写。
(2.3)模型算法
模型与算法是水库群优化调度系统的核心。混联水电站群联合优化调度问题是一类典型的非线性强耦合的约束优化问题,模型具有不同的目标函数以及各类等式、不等式约束条件,逻辑结构较为复杂;求解算法包含数学规划法和智能算法,智能算法又可细分为单目标和多目标算法,继承体系庞大,对程序的灵活性、可扩展性要求高。本发明在详细分析水库群优化调度计算相关业务流程的基础上,实现了模型与算法分离的计算模式,有效降低了系统的耦合度。具体分为优化问题类、计算结果类以及算法类。
优化问题类实则为一个接口,其中定义了问题方法名称、决策变量、目标函数以及约束条件的个数等基本信息,并提供产生结果(createSolution)和适应度评价(evaluate)等方法。其中计算结果由计算结果类(Solution)表示。在此基础上,能够创建长期优化调度问题(LongtermProblem)和短期优化调度问题(ShorttermProblem)等,后续可以方便的对其他具体问题进行扩展。
计算结果类也是一个接口,其中定义了设置和获取变量值、目标函数值的方法,同时,也提供了拷贝的方法。数学规划法计算时,可以作为初始解或者最终解,此时Solution只有一个;智能算法求解时,由于存在种群的概念,Solution的大小由种群的规模决定。相应地,提供了长期调度结果(LongtermSolution)与短期调度结果(ShorttermSolution)的实现。
同样,算法也作为一个接口来设计,它继承自DescribedEntity、Runnable以及Serializable接口,以实现算法的描述、多线程和序列化等特性。算法包括传统数学规划法和现代智能算法,每种算法都必须实现算法计算(run)和结果获取(getResult)等方法。模型算法的UML类图见图4。
(3)前端设计
SPA(Single Page Application),顾名思义,是指只包含单个页面的应用程序,它在启动时只加载单个HTML页面,并通过动态更新来完成与用户的交互任务。相比传统的B/S架构,SPA具有即时性、用户体验好、对服务器压力小等优点,且能与REST面向服务架构一起使用,使得良好的前后端分离架构成为可能,是近年来逐渐流行的一种Web应用模式。水电站群优化调度系统使用React、Dva和Ant Design的技术栈进行单页面应用程序的开发工作。
(3.1)React
React是一款相当流行的JavaScript类库,具有以下三个特点:①声明式的,它以某种方式组织代码,使得代码更加可预测、更容易调试;②基于组件的,每一个组件都有自己的状态,可以通过组合的方式创建更复杂的应用;③能够利用Node.js在服务端重用代码,或者通过React Native创建丰富的移动端手机应用。另外,React利用虚拟DOM提升性能,且其反应式的单向数据绑定更简单。
(3.2)Dva
React简单易用,但是只能把它看作一个UI组件,等同于传统MVC模式中的View层。随着SPA越来越复杂,JavaScript需要管理的状态也越来越多,要想搭建一个大型应用,需要使用Flux、Redux这样的框架以解决从state到component的单向数据流转问题。受Elm语言和Choo框架的启发,蚂蚁金服前端团队在没有引入任何概念的基础上对Redux、Redux-Saga和React-Router等现有应用架构进行了一层轻量级的封装,开发出了数据流向清晰简明的Dva框架。
(3.3)Ant Design
Ant Design是一个面向企业级产品的设计和编码规范,基于确定、自然和模块化的理念提高了开发的效率与质量。官方实现的Ant Design of React,提供了按钮、栅格、下拉菜单、日期选择框、表格、对话框等一系列高质量的React组件,开箱即用,极大的简化了前端开发的工作。另外,众多中后台管理控制台的脚手架可以帮助我们快速搭建水库群优化调度系统的原型。
下面结合具体实施例对本发明做进一步描述。
(1)水电站群的生成方式
(1.1)按照图2的E-R图进行数据库的创建。水电站群生成需要用到基础数据存储表,即以“basic_”开头的表,其中basic_station_info保存电站基础信息,包括电站名称、所属流域、特征水位等;basic_station_zv保存电站水位库容曲线数据;basic_statoin_zq保存电站尾水位下泄流量曲线数据;basic_station_topology保存电站拓扑结构,每一行存储一个电站及其直接下游电站;basic_unit_type保存各电站机组的类别,同一类型的机组具有相同的type,以减少机组对象的产生;basic_unit_nhq保存机组的NHQ曲线数据。其它数据可以按照上述表结构进行相应扩展。
(1.2)水电站群的拓扑结构如图3所示,其生成步骤见图5。机组、电站和水电站群实体类都有各自的工厂类,分别为UnitFactory、StationFactory和MultiStationFactory。其中实体类的作用域为prototype,每次请求都会产生一个bean实例,相当于一个new操作,以对应各个电站及其机组;工厂类的作用域为singleton,Spring IOC容器中只存在一个共享的bean实例,这一单一实例会被存储到单例缓存中,所有针对该bean的后续请求和引用都将返回被缓存的对象实例。
水电站群对象的生成方式被封装到create()方法中,首先调用UnitFactory生成机组对象;然后调用StationFactory生成电站对象,机组对象作为电站对象的一个属性保存其中;最后MultiStationFactory根据电站拓扑结构生成有向无环图,组成一个真正的水电站群对象。另外,MultiStation还提供了获取单个电站、直接上游电站和下游相关电站的方法,如下代码所示:
(2)前后端分离
前后端分离的REST架构,后端以Spring Boot微框架为基础,专注于服务层,通过@GetMapping、@PostMapping等注解与合理的RESTful API进行数据的传递;前端采用React、Dva以及Ant Design的技术栈专注于UI层,即前端页面的控制、渲染逻辑和系统交互。
这里以获取某一水电站的水位库容曲线数据为例进行说明,首先需要在后端创建RESTful API,如getZv()方法所示,该方法返回数据点的List,Spring自动将其转换为JSON数据格式,这样访问URL“http://localhost:8080/api/zv/{id}”就能得到数据。在前端页面创建一个曲线,通过该URL与后端进行交互,将数据传入曲线的data属性即可生成水位库容曲线,结果如图6所示。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种前后端分离的水电站群优化调度系统,其特征在于,所述前后端分离的水电站群优化调度系统包括:
后端单元,在服务器上运行,用于提供数据、处理业务逻辑;以Spring Boot微框架为基础,专注于服务层,涉及到数据库交互、实体的抽象与构建、模型算法的编写以及权限认证、日志管理的众多复杂且相互耦合的业务模块;采用Spring Data JPA进行数据库的连接,只编写持久层接口进行查询;调度实体、模型与算法的编写以面向对象程序设计为指导,由Spring IOC容器统一管理,按需分配;用户认证和用户授权通过Spring Security提供的用户登录认证和访问控制方法进行密码加密,页面权限;日志倾向于门面模式的Slf4j框架,并通过Spring AOP面向切面编程,把分散在各个应用模块的日志记录功能统一处理;
前端单元,在浏览器上运行,用于接收数据、返回数据,处理渲染逻辑;在启动时只加载单个HTML页面,并通过动态更新完成与用户的交互任务;采用React、Dva以及Ant Design的技术栈,专注于UI层,前端页面的控制和渲染逻辑、系统交互和用户体验;利用React声明式的、基于组件的特点,进行前端页面的开发,并通过虚拟DOM、反应式的单向数据绑定;采用Dva管理状态,从状态到组件的单向数据流转。
2.如权利要求1所述的前后端分离的水电站群优化调度系统,其特征在于,后端单元包括:
数据库,依据存储数据的用途,将所有库表分为四大类,分别为以“basic_”开头的基础数据存储表,用于存储电站、机组的基础数据,包括但不限于水位库容曲线、尾水位下泄流量曲线、机组NHQ曲线等;以“real_”开头的实际运行数据存储表,用于存储电站机组实际运行的数据,以月、日或小时进行分类,分别存储;以“result_”开头的方案结果存储表,用于存储调度结果;以“others”开头的用户及其他信息存储表,用于存储调度系统用户信息及其他信息。这种设计既满足数据库表的设计规范要求,也有利于库表的快速查询与维护。
Spring模块,采用依赖注入的方式进行资源集中管理,通过内置Tomcat、Jetty容器,利用Java配置方式,进行开箱即用、自动配置;
机组模块,用于按照类型进行分类,每种类型只产生一个共享对象;机组对象中含有NHQ曲线、预想出力曲线的基础数据;
电站与电站群模块,通过有向无环图(Directed Acyclic Graph)对混联水电站群进行拓扑结构排序,给出获取直接上游电站、下游相关电站的方法,
模型算法模块,包括:
优化问题类模块,用于定义问题方法名称、决策变量、目标函数以及约束条件的个数基本信息,并提供产生结果和适应度评价的方法;还用于创建长期优化调度问题和短期优化调度问题;
计算结果类模块,用于定义设置和获取变量值、目标函数值的方法,还用于提供拷贝的方法;在数学规划法计算时,作为初始解或者最终解;智能算法求解时,Solution的大小由种群的规模决定;还用于提供长期调度结果与短期调度结果;
前端单元,包括:
SPA模块,只包含单个页面的应用程序,用于启动时只加载单个HTML页面,并通过动态更新来完成与用户的交互任务;
React模块,
用于以某种方式组织代码,进行预测、调试;还用于通过组合的方式创建更复杂的应用;还用于利用Node.js在服务端重用代码,或者通过React Native创建移动端手机应用;
Dva模块,用于解决组件之间的通信、数据与视图的串联、路由与数据的绑定、异步逻辑的编写等React未解决的问题,易学易用,使用elm概念组织model,具有插件机制。
Ant Design模块,基于Ant Design确定和自然的设计价值观和模块化的解决方案,采用Ant Design of React开箱即用的高质量组件,简化前端开发的工作。
3.一种搭载有权利要求1~2任意一项所述前后端分离的水电站群优化调度系统的水利信息调度平台。
4.一种利用权利要求1所述前后端分离的水电站群优化调度系统的前后端分离的水电站群优化调度方法,其特征在于,所述前后端分离的水电站群优化调度方法包括:
前端在浏览器上接收数据、返回数据,处理渲染逻辑;采用React、Dva以及Ant Design的技术栈,专注于UI层,前端页面的控制和渲染逻辑、系统交互和用户体验;
后端在服务器上运行数据和业务逻辑处理,以Spring Boot微框架为基础,专注于服务层,进行数据库交互、水库调度实体的抽象与构建、模型算法的编写以及权限认证、日志管理的众多复杂且相互耦合。
5.如权利要求4所述的前后端分离的水电站群优化调度方法,其特征在于,
进行对象的创建中,具体步骤包括:首先调用机组工厂类生成机组对象,然后调用电站工厂类生成电站对象,电站包括一种或几种机组类型,每一种类型的机组只保留一个实体;
水电站群的生成中,还需先进行数据库的创建,其具体步骤包括:
(1)数据收集与整理,收集电站基础数据、运行数据等,按照不同类型、不同用途进行分类,整理并保存在Excel中备用;
(2)数据库设计,依据存储数据的用途,将所有库表分为四大类:基础数据存储表、实际运行数据存储表、方案结果存储表和用户及其他信息存储表;
(3)数据导入,利用Navicat数据库管理软件,将整理好的数据导入到数据库中,进行数据库的创建;导入前反复检查数据格式是否符合要求,否则需在Excel中调整。
6.如权利要求4所述的前后端分离的水电站群优化调度方法,其特征在于,水电站群生成步骤包括:
(1)根据调度模型的不同,提取出所涉及的电站名称,将其保存在电站枚举类数组或列表中;
(2)水电站群对象生成过程封装在水电站群工厂类的create()方法中,将步骤一中数组或列表传入;具体包括,首先调用机组工厂类生成机组对象,然后调用电站工厂类生成电站对象,电站包括一种或几种机组类型,每一种类型的机组只保留一个实体;依次遍历数组,直到所有电站生成完毕,再按照电站的拓扑结构构造有向无环图,组成水电站群对象;
(3)水电站群类中包括API,包括获取水电站群的计算次序的方法getAllStations();依次遍历列表,获取某一电站的直接上游电站的方法getUpStations(),获取某一电站影响的下游电站的方法getDownStations()。
7.如权利要求4所述的前后端分离的水电站群优化调度方法,其特征在于,前后端分离的方法进一步包括:首先需要在后端创建RESTful API,用以提供数据和处理业务逻辑,数据格式一般为JSON;前端访问某一RESTful API得到数据,处理后渲染在页面上。
8.一种实现权利要求4~7任意一项所述前后端分离的水电站群优化调度方法的计算机程序。
9.一种实现权利要求4~7任意一项所述前后端分离的水电站群优化调度方法的信息数据处理终端。
10.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求4-7任意一项所述的前后端分离的水电站群优化调度方法。
CN201810698716.1A 2018-06-29 2018-06-29 一种前后端分离的水电站群优化调度系统及方法 Active CN108932588B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810698716.1A CN108932588B (zh) 2018-06-29 2018-06-29 一种前后端分离的水电站群优化调度系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810698716.1A CN108932588B (zh) 2018-06-29 2018-06-29 一种前后端分离的水电站群优化调度系统及方法

Publications (2)

Publication Number Publication Date
CN108932588A true CN108932588A (zh) 2018-12-04
CN108932588B CN108932588B (zh) 2021-04-02

Family

ID=64447328

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810698716.1A Active CN108932588B (zh) 2018-06-29 2018-06-29 一种前后端分离的水电站群优化调度系统及方法

Country Status (1)

Country Link
CN (1) CN108932588B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110209534A (zh) * 2019-06-14 2019-09-06 四川长虹电器股份有限公司 自动备份mysql数据库的系统及方法
CN111310936A (zh) * 2020-04-15 2020-06-19 光际科技(上海)有限公司 机器学习训练的构建方法、平台、装置、设备及存储介质
CN111580941A (zh) * 2020-03-27 2020-08-25 东方电气风电有限公司 一种多端口解决风电场数据上传地址不够的方法
CN111913701A (zh) * 2020-06-30 2020-11-10 傲普(上海)新能源有限公司 基于前后端分离的erp管理系统、方法、介质和计算机设备
CN111949719A (zh) * 2020-08-20 2020-11-17 深圳天顺智慧能源科技有限公司 一种电力系统的组态工具实现方法、装置及相关组件
CN112527439A (zh) * 2020-12-17 2021-03-19 上海数依数据科技有限公司 一种前端展示数据虚拟替换方法
CN113222535A (zh) * 2021-04-30 2021-08-06 中核武汉核电运行技术股份有限公司 组织机构选择方法、装置、设备及存储介质
CN113568606A (zh) * 2021-07-09 2021-10-29 猪八戒股份有限公司 基于Web前端开发的日报简表网页设计方法及系统
CN116542580A (zh) * 2023-07-03 2023-08-04 长江勘测规划设计研究有限责任公司 一种基于可变业务矩阵的水利业务系统搭建方法及系统
CN116738081A (zh) * 2023-08-08 2023-09-12 贵州优特云科技有限公司 一种前端组件绑定方法、装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105225017A (zh) * 2015-10-30 2016-01-06 南京南瑞集团公司 一种多Agent的水电站群短期优化调度方法
CN105302575A (zh) * 2015-11-19 2016-02-03 中国移动通信集团广东有限公司汕头分公司 一种基础开发框架

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105225017A (zh) * 2015-10-30 2016-01-06 南京南瑞集团公司 一种多Agent的水电站群短期优化调度方法
CN105302575A (zh) * 2015-11-19 2016-02-03 中国移动通信集团广东有限公司汕头分公司 一种基础开发框架

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘桥: "基于微信公众号的血糖血压管理系统的设计与实现", 《中国优秀硕士学位论文全文数据库 医药卫生科技辑》 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110209534B (zh) * 2019-06-14 2022-09-16 四川长虹电器股份有限公司 自动备份mysql数据库的系统及方法
CN110209534A (zh) * 2019-06-14 2019-09-06 四川长虹电器股份有限公司 自动备份mysql数据库的系统及方法
CN111580941A (zh) * 2020-03-27 2020-08-25 东方电气风电有限公司 一种多端口解决风电场数据上传地址不够的方法
CN111310936A (zh) * 2020-04-15 2020-06-19 光际科技(上海)有限公司 机器学习训练的构建方法、平台、装置、设备及存储介质
CN111310936B (zh) * 2020-04-15 2023-06-20 光际科技(上海)有限公司 机器学习训练的构建方法、平台、装置、设备及存储介质
CN111913701A (zh) * 2020-06-30 2020-11-10 傲普(上海)新能源有限公司 基于前后端分离的erp管理系统、方法、介质和计算机设备
CN111949719A (zh) * 2020-08-20 2020-11-17 深圳天顺智慧能源科技有限公司 一种电力系统的组态工具实现方法、装置及相关组件
CN111949719B (zh) * 2020-08-20 2024-05-07 深圳天顺智慧能源科技有限公司 一种电力系统的组态工具实现方法、装置及相关组件
CN112527439A (zh) * 2020-12-17 2021-03-19 上海数依数据科技有限公司 一种前端展示数据虚拟替换方法
CN113222535A (zh) * 2021-04-30 2021-08-06 中核武汉核电运行技术股份有限公司 组织机构选择方法、装置、设备及存储介质
CN113568606A (zh) * 2021-07-09 2021-10-29 猪八戒股份有限公司 基于Web前端开发的日报简表网页设计方法及系统
CN116542580A (zh) * 2023-07-03 2023-08-04 长江勘测规划设计研究有限责任公司 一种基于可变业务矩阵的水利业务系统搭建方法及系统
CN116542580B (zh) * 2023-07-03 2023-09-26 长江勘测规划设计研究有限责任公司 一种基于可变业务矩阵的水利业务系统搭建方法及系统
CN116738081A (zh) * 2023-08-08 2023-09-12 贵州优特云科技有限公司 一种前端组件绑定方法、装置及存储介质
CN116738081B (zh) * 2023-08-08 2023-10-27 贵州优特云科技有限公司 一种前端组件绑定方法、装置及存储介质

Also Published As

Publication number Publication date
CN108932588B (zh) 2021-04-02

Similar Documents

Publication Publication Date Title
CN108932588A (zh) 一种前后端分离的水电站群优化调度系统及方法
CN110989983B (zh) 一种零编码的应用软件快速构建系统
Zheng et al. Real-time big data processing framework: challenges and solutions
CN105024865B (zh) 云联合即服务
CN104156216B (zh) 一种面向云计算的异构存储管理系统及方法
CN109067890A (zh) 一种基于docker容器的CDN节点边缘计算系统
Saxena et al. Practical real-time data processing and analytics: distributed computing and event processing using Apache Spark, Flink, Storm, and Kafka
CN106453618A (zh) 基于G‑Cloud云计算的遥感图像处理服务云平台系统
US11321749B2 (en) Metering based on application code complexity
Sharma et al. Modeling cloud SaaS with SOA and MDA
CN109977510B (zh) 一种基于gis技术的水文模型网络发布方法
CN103488697A (zh) 能自动收集和交换碎片化商业信息的系统及移动终端
Liang et al. Resource virtualization model using hybrid-graph representation and converging algorithm for cloud computing
Vidhyalakshmi et al. Design comparison of traditional application and SaaS
CN101582153A (zh) 电网资源管理方法及系统
Liu et al. HydroMP–a computing platform for hydrodynamic simulation based on cloud computing
CN109597611A (zh) 前端数据流控制组件开发系统、方法、设备及存储介质
Anshina Agile Architecture for Digital Enterprises
Wu et al. Research and application of SOA and cloud computing model
Zhu et al. Validation of pervasive cloud task migration with colored petri net
Park et al. Development of HLA-DDS wrapper API for network-controllable distributed simulation
Chen et al. Fog computing support scheme based on fusion of location service and privacy preservation for QoS enhancement
Qiang et al. Open ICT‐PaaS platform enabling 5G network slicing
Pop et al. A cyber-physical systems oriented platform using web services
CN115857915B (zh) 面向元宇宙系统开发的物对象数字化方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant