干式变压器的优化设计研究
发布时间:2019-07-13 17:18:19来源:
关键字标准棋板库干式交压优化煽程1前言干式变压器在耐火能力、适应环境能力和环保能力方面与传统的油浸式变压器相比有突出优点,它具有适应环境能力强、超铭牌额定值运行能力强、局放低、环保性好、生产无须浇注设备与模具及初期投资低等特点,己基本上在室内配电中取代油浸式变压器。
为了提高经济效益,节约用料,比较大限度降低成本,必须对干式变压器的设计作优化。传统的手工优化计算效率低,耗费的时间长,且很多地方依赖经验数据,覆盖面小,容易遗漏比较优方案。软件实现优化工作就可以弥补上述缺点,做到真正的快速、比较优。把手工计算与软件相结合,可以验证手工计算方案的准确性,评估比较优程度,另一方面也减少了软件优化设计的时间。
本文介绍了干式变压器优化设计软件开发过程中通过采用标准模板库来封装数据存储细节,减轻编程工作量,缩短程序运行时间,使软件开发者可以集中精力于变压器优化设计本身。
2干式变压器优化的特点干式变压器工作原理与油浸式变压器并无区别,差异在于使用的绝缘材料、采用的绝缘结构、制造工艺,且结构更简单。
干式变压器的优化设计是一个离散的非线性规划问铨,一般采用循环迪历法进行优化设计,即把各变童、各结构的所有可能的取值进行排列组合,用循环的办法对所有可能的组合进行可行性判断,再对满足可行性要求的点计算目标函数,根据目标函数的大小进行筛选。从而得到比较优解循环迪历法需要对所有可能的组合进行计算、存储并比较判断,所以非常耗时间*在设计过程中,循环变童的选取、循环上下界的确定、技术数据的计算过程中会处理到大量的表或者以表的形式反映的知识关系。这些表中元素可能是实数、实数关系、函数表达式;表中元素的下标索引不仅仅是连续的自然数序列,也可以是一组数据:表不是满的,即其中存在空元素w.另外在设计中,要存储很多种类的数童难以事先确定的自定义对象,例如变压器绕组、一定条件下线可行结构*对这些问题一般不采用数组存储而是采用动态内存分配和链表相结合的办法m,它能灵活而不失效率地解决数目在运行期才能确定的对象存储问题,但是编程的工作量大,且容易造成内存泄漏。频繁的分配释放内存还会造成大量内存碎片,降低了程序执行的效率。另外,若存储的是一组对象的映射,采用链表实现比较复杂,且操作不方便,例如:在存储导线标准数据时,链表中的每个元素又包含了三个子元素:若要对递增不均匀的导线厚度进行循环,就要增加一个导线厚度序号的量,通过导线厚度序号的循环实现导线厚度的循环这样处理既不直观又降低了效率。
3基于STL的优化程序设计3.1标f模板库简介templatelibrary,简称STL〉是C++标准函数库的一部如所示它广泛使用泛型技术,并基于通用性和效率性的基本思想,实现了与类型无关的容器、与容器无关的算法。
种据构各数结种用法各通k容器算法迭代器:容器、算法和迭代器的关系在STL中,容器分为两类:序列、关联容器。前者包括向量类、链表类、双向队列类等;后者包括映射类、集合类等。其中的每个都是模板类,可以存储自定义类型的对象。各个容器实现下标操作、插入删除、压入弹出等公共操作的复杂度不一样,效率也不尽相同。各个容器还提供了针对自己的特殊操作。效率和特殊操作的需要是选取使用何种容器的标准。
通用算法是一组可以作用在不同容器上的模板函数它为容器提供遍历、复制、排序、找、确定大小等基本操作。通用算法使用函数对象141作为参数,函数对象定制了算法对容器中元素所采取的操作。
迭代器是连接容器和通用算法的纽带,是指向容器中元素指针的一种抽象,如所示*通过迭代器使用通用算法时就不必关心容器中具体的数据类型,实现了算法和数据结构相分离,增强了标准模板库的通用性。
map容器及其继承与应用以map容器的形式存储在优化设计中涉及的表格形式数据,具有高效、简单的优点。
nap容器map容器属于关联容器,又称为关联数组,保存的是类型为Key的关键码和类型为T的映射值的对偶。
map中的关键码Key具有唯一性,通过关键码的比较来保持内部元素的有序性,且提供了基于关键码的元素快速提取*码执行关联找,返回与之对应的映射值。
如果不存在这个关键码,一个具有该关键码的默认map元素被初始化。
插入删除操作,能灵活地插入一个元素或者插入另一个容器中的一组元素,删除一个或者一个区间或全部的元素。
容器内部会自动根据当前容器的大小进行内存调整,不需要程序干预,因而:map容器具有比数组、链表更先进的数据存储机制,而且存储的对象的类型是广义的,选用map容器作为变压器设计中的各种表的实现是合适的。
但是如前所述,map容器的下标操作、插入操作与我们通常意义上的这些操作有区别:而且在变压器的设计中涉及的表操作除了根据关键码询映射值,还要求直接对己存在的关键码询,判断一个值是否是关键码;若反映的是离散关系,则要寻找与所给值比较近的关键码,若反映的是连续关系,则要用插值法计算对应的映射值。因此有必要以map容器为基类,派生出满足上述功能的新的容器类TranTable.结合关联容器map,可以这样描述变压器设计中的表:表是关键码和其映射值的集合,是一个二维表,且具有以下的特性:*关键码的元素可以是一个数值,也可以是一组数值,表的一个完整的关键码所含数值元素的个数称为表的维数;*映射值的元素可以是数值、函数关系或者其他对*个完整的映射值也可以多* *根据关键码可以找到对应的映射值。
变压器设计中所有的数据关系表都可以转化为二维表。其中,一维表是二维表的特例,即令二维表中的任一维为常量,二维表就退化为一维表:超过二维以上的多维表可以对其关键码作适当的分割,使之转换为多个二维表的组合,根据上述要求由map容器派生一模板类TranTable下面是TranTable类的声明部分的主要代码://表的关键码类型tablekey //表的映射值类型Val作为模板参数//存放第一维键//重载下标操作符//插入操作//判别该关键码存在否bool //关键码是否在己存在的关键码范围内//寻找与该关键码比较接近的关键码//根据关键码插值寻找映射值(Insert)、删除(Erase)搡作:在选择合适的标准模板库算法的基础上,能对表进行灵活的询操作;并且重载了〉>和<〈运算符,封装了对其元素对象必要的磁盘操作功能,实现了容器中的数据与数据文件或数据库的串行化*设计中涉及的各种类型的表。
例1:定义导线标准它恰好是二维表,其关键码(线厚a、线宽b)是一对浮点数,映射值(导线截面积s)是一个浮点数。定义导线标准表如下:3.1vector容3及其应用统的链表和数组。存储优化过程的中间结果。
可以看作对C++数组的扩展。其特出优点是:*高效的元素随机访问操作;变化。
使用vector容器://m是容器初始大小可以代替链表结构存储变压器设计中动态产生的各中间方案。
在一个电磁方案计算完毕后,只要使用vector的成员函数pushback(),该方案就会被添加到容器末尾*与此同时vector容器会在内部自动改变容器的大小,不必手动动态分配、释放内存*为了在内存管理上兼顾效率,不必每次增加一个元素就触发vector分配一个元素大小的内存,替代办法是:在到达vectoi容器容ft的上界时一次分配多个元素大小的内存,resize(n)://n是一次增加的大小减少频繁的内存分纪操作,以小的空间的损失换取大的效率提高。
当可行方案计算完毕后,要对它们按设定的目标函数:原材料成本MaterialCost、运行效率、十年变电成本采取加权进行排序。权重的分配在于各目标函数在总体评估中的重要程度。利用标准模板库算法,结合实现比较功能的函数对象对加权后的总体评估排序:其中,3个目标函数分得的权重分别为:1、0、0,即只按原材料成本进行优化排序。比较函数对象objFunLess定义如下://各个目标函数的权值表丨:结果比较厂方数据优化数据国标数据硅钢片重4算例SG10-630/10干式变压器性能优化设计在结构上,高压线圈采用连续式,低压线圈采用箔式。优化中的循环变量总个数为14,各变置可能的变化取值从2个到22个不等。优化中遍历的数据维数很大。
(1)对导线数据进行遍历在优化设计时,使用迭代器实现。首先分离TranTable 代器在导线宽度范围确定之后就可以对该范围内的导线宽循环:卜……//§关作丨使用迭代器可以直接对线宽循环,否则不得不增加一个导线宽度序号的临时变量;通过灵活组合使用STL算法,可以实现复杂的找、排序、复制等通用操作。避免我们编写相对低效的这些函数,(2)方案选择对计算出的所有可行方案按铜线和硅钢片的总价格排序,表1是比较优方案数据与原厂方使用方案数据以及国标数据的比较:Pentium4主频为1.6GHz的PC机上对vector序列mT中存储的7000多个初步可行方案排序,通过嵌入汇编的办法多次测量该过程耗费的时间求平均,仅经历1.310 X109个时钟周期,耗时819毫秒。使用标准模板库算法,只要提供一个实现比较功能的函数对象。就能实现完整高效的排序功能。可见在变压器设计中采用STL是高效的、可行的。 5结论在面向对象的变压器优化设计软件开发中,使用标准模板库容器可以大大减轻程序中数据管理的工作,使我们能更好地致力于变压器优化设计本身的研究。 在构建实现具体操作的函数对象的基础上,使用合适的标准模板库算法。能灵活地对容器中的元素进行各种操作,提高了程序运行的效率和程序的可读性,减少了软件开发的周期。此算法可以推广到其他涉及大量数据表格的应用中。