齐云飞,胡 凡
(1.辽宁省水利水电勘测设计研究院规划分院,沈阳110006;2.辽宁省东水西调工程建设局,沈阳110003)
基于Fortran与VB混编的水库群联合优化调度系统研究
齐云飞1,胡 凡2
(1.辽宁省水利水电勘测设计研究院规划分院,沈阳110006;2.辽宁省东水西调工程建设局,沈阳110003)
介绍了Visual Basic与Fortran两种语言混合编程的基本方法,研究并解决了两种语言之间结构体数组传递的技术关键。建立基于Fortran语言的水库群联合优化调度模型,并采用粒子群优化算法进行求解。最后结合了VB人机交互界面的优点和Fortran在数值运算方面的长处,实现水库群联合优化调度计算数据输入输出的可视化。
Fortran语言;Visual Basic语言;水库群联合调度;粒子群优化算法;系统开发
Fortran编程语言具有数值计算与数学分析能力强的特点,并且结构层次清楚、运行计算稳定可靠,在数学与工程计算领域得到广泛应用。但是,可视化编程对于Fortran编程语言始终存在难度较大的问题。Visual Basic编程语言在可视化编程方面较为简单,容易实现,编制的人机交互界面友好并且有效,在Windows系统下的可视化界面设计应用较为广泛。Fortran和Visual Basic一样来自微软公司开发的编程环境,两种语言混合编程具有较好的基础。
因此,两者结合,在Windows系统下对Visual Basic和Fortran进行混合编程,既可以利用VB界面设计和图形开发功能设计的优势,设计出出友好的数据输入界面平台,又可以利用该界面在计算水库兴利调节时调用Fortran程序进行科学计算,将计算结果以可视化数据及图形的形式显示在Visual Basic开发界面上,通过数值计算、交互式数据输入、输出和可视化功能所集成的混合编程技术,建立水库群联合优化调度系统。
1.1 利用visual fortran建立DLL
Visual Basic设计界面程序,调用Fortran语言程序编译的动态链接库(DLL,Dynamic-Link Library)。Fortran程序编译的动态链接库,通过参数传递,从而实现数据的变换。新建以工程命名的工程,类型为Dynamic-Link Library0。将原Fortran编写的源程序插入工程,或者在工程中加入一个只含有函数或子程序的Fortran程序,编译并生成DLL。生成的函数或子程序如被调用,必须加以声明,从而标识在生成的DLL中,这些函数或子程序可被调用。
1.2 利用VB调用Fortran DLL
Visual Basic设计界面程序调用动态链接库可以采用上述方法,也可使用其他方法。在调用Fortran语言中的动态链接库前,被调用的动态链接库需要被声明。调用过程中需要保证传递参数类型的一致性,这样才能保证Fortran DLL被Visual Basic设计界面正确调用。因为Fortran和Visual Basic两种语言在定义数据类型时,存在不一致性,所以需要将Fortran程序的参数类型在Visual Basic的Declare语句中的参数列表中,与Visual Basic实现正确对应。传递数组参数时,还需要在Visual Basic参数列表的对应位置放上数组的第一个元素作为参数[1]。
2.1 粒子群优化算法基本原理
粒子群优化算法模型里的每个粒子都有位置和速度这两个因素。每个粒子对当前的最优粒子具有一个趋势,并在解空间中进行搜索。粒子群优化算法中的每次迭代的过程不是随机进行的,而是根据较优的解对最优解进行搜索。
搜索过程中粒子的速度和位置按公式(1)和(2)进行更新:
式中:i=1,2,…,m,m为种群中粒子个数;j=1,2,…,n,n为空间向量的维数;c1,c2为学习因子,均为非负实数通常令C1=C2=2;r1,r2为[0,1]区间内的随机数;vij为粒子i的速度,vij∈[-vimax,vimax]。
粒子当前的位置需要通过修正最大速度vmax来实现,粒子可能因为vmax过大而错过最优解;相反可能会因为vmax过小,而使整体算法搜索速度降低,影响算法效率,尤其当粒子处于某一局部最优解附近时,可能因为vmax过小而于陷入局部最优解,粒子群算法的流程如图1:
图1 粒子群算法流程图
2.2 联合调度规则
水库在供水的同时,需要保证水库下游河道的最小生态流量要求,在满足最小环境流量的前提下进行水库直供及下游供水。水库各项供水保证率及最大破坏深度见表1。
表1 各供水用户供水保证率及破坏深度
各水库在联合调度时,按照供水调度图及调水调度图进行调度,以水库时段初的蓄水位S(t)所在调度图区域为依据,判断当前时段水库应该加大供水、限制供水、正常供水或弃水。
2.3 目标函数与决策变量
水库联合优化调度模型以多年平均供水量最大且缺水量和弃水量最小为目标函数,各供水用户需满足供水保证率及破坏深度要求。模型应以各用户
的供水限制线及调水限制线为决策标量,在满足上述调度规则的前提下进行优化实现。
3.1 系统组成
水库群联合调度系统由人机交互界面、调度模型库和数据库组成。系统组成示意图见图2:
图2 北线水库群联合调度系统组成示意图
数据库为调度计算提供基本数据资料,计算最终结果也保存其中。水库基本资料数据库包括:水位~库容曲线、水位~面积曲线、水库特征水位参数表、蒸发渗漏损失系数等;水文径流数据库存储各流域各区间天然径流长系列值及位置示意图;用水户需水数据库存储各流域区间用水户的蓄水量及要求的供水保证率;调度数据库存储优化后的水库调度图以及水库群模拟优化调度的结果[2]。
3.2 建立优化调度模型库
根据不同要求,选取不同目标的权重,建立数学模型,并采用PSO优化求解方法,用以水库调度图的寻优计算,进行水库群联合优化模拟调度,并输出各流域各用水户的供水状态以及水库的水位状态,供研究人员对整个供水系统进行综合效益分析,指导规划人员进行方案的比选,对供水系统内部水库的运行参数进行调整,以获得最优方案。
3.3 人机交互式界面
通过界面可以导入流域的径流及需水量资料,并修改水库的特征水位、各用水户的用水保证率、已经PSO粒子群算法的优化参数,通过水库调度计算,在界面输出各水库优化调度图,并可打印输出水库供水多年平均成果统计表。系统运行于Windows操作系统之上,由菜单栏、工作区、状态栏等组成,界面如图3所示:
图3 水库群联合供水调度系统界面
菜单栏包括水库调度规则优化、水库优化调度模拟、打印、帮助、退出五个一级菜单。“水库调度规则优化”菜单用于对水库调度图进行优化计算;“水库优化调度模拟”菜单用于水库采用已优化的调度图进行长系列模拟优化调度;“帮助”菜单提供调度帮助文本;“退出”菜单用于程序的退出。
1)研究过程中发现,粒子群算法能以较高效率搜索函数的全局最优解;本联合调度系统中以调度图中的供水调度线和调水控制线为决策变量,采用粒子群算法,得到最优的水库群联合调度图,较传统的调度图算法,无需进行重复计算及经验修正。在综合利用水库的调度中,能搜索得出调度图的非劣解集,兼顾多个调度目标。
2)调度系统充分利用Fortran在数值计算方面和VB在可视化方面的优势,实现程序资源的共享和可视化,节约时间和提高效率。原始数据由VB界面直接输人或更改(前处理),通过调用Fortran动态链接库实现计算功能(后台处理),将计算成果传回VB程序并且利用VB可视化功能直观显示和分析。
3)结合实际算例的研究表明:基于VB与Fortran混合编程的水库群调度系统有一定的实用性,且在数据输入/输出和处理方面具有相当的优势。
[1]李学哲,白云,陈国新.Fortran 90与VB混合编程技术的研究与实现[J].苏州科技学院学报,2008(04):76-80.
[2]杜文娟,李建东.用VB和Fortran语言混合编程开发气象软件[J].气象与环境科学,2007(04):88-90.
Research on Optimal Scheduling System based on Fortran and VB Combined w ith Reservoir Group
QIYun-fei1and HU Fan2
(1.Planning Institute of LiaoningWater Conservancy&Hydroelectric Power Investigation,Design and Research Institute,Shenyang 110006,China;2.Liaoning ProvincialWater from East to West Project Construction Bureau,Shenyang 110003,China)
The basic method to mix programming in two languages of Visual Basic and Fortran is introduced in the paper,researching and solving the technological key of array transfer of structures between two languages.A optimal schedulingmodel combined with reservoir based on Fortran language is founded and the particle swarm optimization algorithm is adopted to solve.Finally,the advantage of human-computer interaction interface of VB and the strongpoint of numerical calculation of Fortran are combined,realizing the visualization of optimal scheduling calculation data input and output joint with reservoir group.
Fortran language;Visual Basic language;combined scheduling of reservoir group;particle swarm optimization algorithm;system development
TV697.12
B
2014-10-31
齐云飞(1978-),男,满族,辽宁开原人,高级工程师,从事规划、水资源配置与水利经济专业;胡凡(1956-),男,广西桂林人,高级工程师。
1007-7596(2015)06-0001-03