C++高级编程语言实现,在Windows下使用Intel C++编译器编译。 表2~4,分别列出了手动编程,一般算法和改进算法的执行速度。 A. 不同的目标函数
首先测试基于AD技术的内点法在不同目标函数最小化问题中的灵活性(目标函数1燃料成本;目标函数 2:系统有功网损;目标函数 3:系统无功网损)仿真结果见表2~4.所有表均给出了不同目标函数所对应的迭代次数和CPU周期。
一般算法和改进算法的性能比较总结如Fig.8。图中Y轴单位定义如下:
Percent?%??Ca?C0?100% (14) C0其中C00为手动编程的CPU周期,Ca为AD技术的CPU周期。 从Fig.8可看出一般算法的计算时间为手动编程的2~3倍,改进算法约为手动编程的1.2~1.3倍。因此,基于AD的改进算法显著的提高了计算效率。
B. 新控制设备
在III-D中,我们已经知道如何用AD技术和(12)处理新控制设备。为了测试改进算法OPF程序的灵活性,对IEEE-118算例进行如下修改并加以测试:增加、修改、删除一个约束;加入一台静止无功补偿器(SVC);加入一台可控串连补偿器(TCSC);加入移相器。目标函数为燃料成本最小化。测试结果如表4。表 4列出了迭代数,CPU周期和最优数值。可见,基于AD的改进算法可以高效处理原OPF算例的多种变型,具有良好的鲁棒性和灵活性。
总之,对于新设备,添加原理如例(12),添加的jacobian和hessian矩阵可由AD计算得出,于是我们可以方便的加入新的控制设备。
C. 与【10】中算法比较
在【10】中,采用了基于MINOS的OPF算法,它运用ADIFOR来计算Jacobian和Hessian矩阵。虽然与本文提出的改进算法都是基于AD技术,但还是有很多区别。见表 5.由于采用的算法和AD技术不同,所以很难准确公平的比较这两种方法孰优孰劣。通常,内点法在处理大规模OPF问题中要比MINOS方法快很多,而且基于操作符重载的改进算法ADC比ADIFOR更具灵活性。此外,本文提出的改进算法的关键贡献在于:其可以通过AD工具识别出一阶和二阶导数矩阵中的不变元素并在迭代程序前生产常数列表。在程序迭代中,只需更新变动的导数
因此,本文提出的改进算法要优于【10】。
为了与【10】做比较,测试方法同表 1中所用方法。测试在同样的机子和windows系统上进行;采用ADIFOR2.0和MINOS5.5软件。最大CPU周期设为1000s。测试结果见表 6.“/”表示运行溢出。从表 6可知,基于MINOS-ADIFOR的算法要比基于AD的内点法慢很多。 5 结语
内点法已被证明是一个成功的最优潮流算法。在内点法中,计算Jacobian和Hessian矩阵时一项特别容易出错的工作。自动微分方法为 Jacobian和Hessian矩阵的计算提供了简洁的编码和灵活性。然而,现存的AD方法在处理大规模系统时比手动编程慢很多。为了将AD方法应用于大规模系统,本文提出了一种高效的改进算法成功的解决了此问题,其主要特点如下:
1) 因为其有效地运用了ADC,使得改进的AD方法在保持灵活性
的同时具有与手动编程一样的计算效率。算例测试表明一般算法的计算时间为手动编程的2~3倍,改进算法约为手动编程的1.2~1.3倍。因此,基于AD的改进算法显著的提高了计算效率。
2) 改进的AD算法在系统要加入新设备时无需对已知和未知的目
标函数,约束条件和用户自定义设备重新编程,具有良好的灵活性和高效性。
3) 改进算法采用基于C++高级编程语言中的操作符重载方法替代