并行优化(共8篇)
并行优化 篇1
电子商务是近年来最成功的商务形式,它的快速发展在给人们带来便捷的同时,也降低了商家的销售成本并扩大了利润。但是网络销售有其特有的形式,如何维持高的客户满意度和扩大客源是最核心的问题。由于不同于传统的店面模式,在网络条件下用户的流失率非常高,因此为客户提供更加个性化的服务成为电子商务营销面临的最重要问题。
本文首先简要介绍了电子商务个性化推荐技术。然后通过对自然免疫学和人工免疫学理论的研究,在Steve算法问题的基础上,着重讨论了该算法的可并行性问题,提出了算法的并行化版本———并行免疫推荐算法(PINR)。
1电子商务个性化推荐
所谓个性化服务就是指,根据用户的不同情况提供有针对性的服务,使得每个用户都有是该网站唯一用户的感觉。个性化服务需要获取有关用户的知识,建立用户的信息需求模型。利用有关用户的知识,有针对性地获取或帮助用户筛选信息资源,并能够逐渐学习用户需求的变化[1]。
高质量的个性化推荐服务包括如下内涵,推荐的准确性;推荐响应的及时性;以用户为中心。
2人工免疫理论
人工免疫算法是生物免疫理论与计算机科学相结合的产物,生物的自然免疫系统是人工免疫系统的结构和工作原理的重要思想来源[2]。
2.1自然免疫机理
免疫系统最重要的生理功能就是对“自己”(体细胞)和“非己”(抗原分子)的识别和应答。这种识别作用是由免疫细胞完成的。免疫细胞对抗原分子的识别、活化、分化和产生抗体的过程,称为免疫应答。
自然免疫系统是生物进化形成的具有高智能性的防御系统,它具有分布性、并行性和自适应性等许多特性,这些特性能广泛的应用于多个领域。
2.2人工免疫理论的形态空间模型
为了定量地描述免疫系统并将其应用于其他领域,如计算机算法,Perelson和Oster于1979年提出了形态空间理论,指出所有的免疫事件都在形态空间(Shape space)S中发生。这是一个多维空间,每个轴表示一个物理化学的测量方法,用该方法可以描述一个分子形态。分子结构表示成一个点,因而在L维空间(形态空间)中,可将一个点定为抗体-抗原相互作用的特征集。数学上,这种形态被描述成L维字符串或向量。
形态空间是指抗体(Antibody)和与之结合的分子之间的结合程度,以及描述抗原(Antigen)可能性区域的高维空间。形态空间本质上是免疫系统所确认的属性的抽象,通过它能建立和评价免疫系统的简单模型。在形态空间的每一个抗原都有一个特定位置,而且抗原的细微变异都会改变它在形态空间中的位置,所以免疫细胞要发挥作用,就必须在形态空间覆盖足够大的区域,使大多数的变异无法规避。免疫细胞在形态空间覆盖的区域有时被称为刺激球体,因为它能识别形态空间一定区域内的抗原。
2.3推荐问题的形态空间解释
借鉴人工免疫理论中的形态空间模型,可将个性化推荐问题用形态空间的方法加以解释,进而采用人工免疫理论研究的现有成果来对经典的协同过滤算法进行改进。
个性化推荐问题可以借用形态空间模型描述为:目标用户c的所有候选邻居用户U作为抗体决定簇,而兴趣作为抗原决定基。每一个用户u(u∈U)在形态空间中的位置都准确地代表了他的兴趣,抗体识别区域Vε表示用户u(u∈U)可以代表在此区域内的兴趣(该区域不一定是球形)。因为每个用户评价过的项目数量不同,所以其所能代表的兴趣也不一样多,因而识别区域的大小不同;并且由于存在用户评价项目的数量和评分值相似的情况,所以模型中也会存在较多的重叠的情况,即两个用户u1,u2在形态空间中的位置基本一致,代表的区域基本重合。由于目标用户c(可视为抗原)曾经的评价行为存在于推荐系统中,所以c也会在形态空间中有一个位置,但是这个位置不能准确地表征他的兴趣,而仅仅是作为他以前行为的一个兴趣代表点,是一个“临时”的位置。因此要实现向用户c进行推荐的目的,就必须找准他在形态空间中的位置点。采用的方法就是计算空间中每个抗体(用户u)和抗原(用户c)的亲和力,并且认为抗体与抗原“临时”位置点之间的距离越近其亲和力越高,从这些数据中排列出用户c的邻居用户集合,再根据这些邻居来预测出c在空间中的位置,据此进行推荐。
3并行免疫推荐算法
3.1独特性人工免疫网络模型
独特性人工免疫网络,由Jerne于1974年首先提出,该理论在人工免疫基础上将免疫系统视为相互影响和制约的网络[3]。抗原能够被抗体所识别并施加影响,同时抗体之间的作用也影响到各自在免疫网络中的浓度。由于考虑了抗体之间的影响,所以该网络模型能够最大限度的保证免疫系统的多样性,提高系统对抗原的识别率。同时,即使没有抗原的存在,抗体之间的作用网依然存在,从而保证了网络的稳定性。
3.2免疫推荐算法
Steve等人在仔细研究了独特性免疫网络的Farmer的模型基础上,对Farmer的微分方程进行了改进,提出的修正方程并使之可以应用于电子商务个性化推荐算法中[4]。
k1是刺激率,k2是抑制率,k3是死亡率,mi是该抗体和抗原的相似度,xi是该抗体的浓度,mij是抗体之间的相似度,n是网络中抗体数量。
但是由于该算法对于每个目标用户都要进行抗体网络的迭代学习运算,所以算法的响应速度是它最主要的缺陷,因此如何快速找到目标用户的最近邻用户组,进而改善算法的实时响应速度就成为一个重要的改进方向。
3.3算法的可并行性分析
并行算法是一些可同时执行的进程的集合,这些进程互相作用和协调动作从而达到给定问题的求解。在实际应用中,要使其中的若干个程序段能够并行执行,必须使得每段程序与其他各段程序不相关———相关性主要是指数据相关性、控制相关性和资源相关性。
1966年,Bernstein教授提出了一种条件集合的概念,来判断两个进程是否可并行执行[5]。
对于两个进程S1和S2,设R(Si)为Si(i=1,2)的读子集,其值是Si中被引用的变量的集合;W(Si)为Si的写子集,其值是Si中被改变的变量的集合。对于这两个进程S1和S2而言,如果此两个进程互不相关,并且不会产生混沌的输出,那么可以将这些条件形式化表示成如下等式(称为Bernstein条件)
对于多个进程,如果Bernstein条件能够两两成立,那么这组进程就能够并行执行。
3.4并行免疫推荐算法的基本思想
因为Steve的算法中的计算量主要集中在抗原与抗体以及抗体之间的亲和力和抗体浓度的迭代计算上,而计算的本质就是对用户-项目矩阵进行向量间的计算,其间进程之间不需要通信,只是在计算结束后将各个进程的计算结果进行汇总,另外每个进程计算的最终结果存在各自独立的空间中,它们之间也没有并发访问冲突的问题。所以根据Bernstein条件,该问题非常适合于并行化操作,同时还不会对结果的准确性造成任何影响。
鉴于以上分析,本文将Steve算法进行并行化的改进,提出并行免疫推荐算法(Parallel Immune Network Recommendation,PINR)。在算法的设计方面,由于该问题可以十分方便地划分成若干子问题,所以本文采用划分方法中的均匀划分技术设计该问题的并行算法。
具体做法是为抗体网络中的每一个抗体建立子进程,该子进程负责计算该抗体和其他抗体的匹配值(亲和度),以及和抗原的匹配值,在抗体浓度迭代计算时仍然按照该方法进行处理。
3.5算法描述
输入:目标用户描述,所有候选邻居用户的描述。
输出:目标用户的最近邻居集合。
算法将所有候选邻居用户(除去组成初始抗体网络的m个用户)分成K个组,每组为Tlen个用户,每次将一个组的用户加入到抗体网络中进行迭代计算。S1~E1和S2~E2两个阶段是并行计算阶段,其并行度均为All。S1~E1阶段是两步计算,首先是计算抗原(目标用户)与抗体网络中所有抗体(候选邻居用户)的亲和度,其次是计算抗体之间的亲和度,该阶段时间复杂度为O(1+All)=O(All)。S2~E2阶段是进行抗体网络内各个抗体浓度的迭代计算,根据计算公式要求这一步对每个并发的子进程来说都是一个O(All)级的操作。
3.6算法复杂度分析
假设N代表候选邻居用户数量,m是免疫网络的规模,迭代次数为n,K是指定的分组数目,Tlen是每一分组的用户数量,All为在计算中的任意时刻抗体网络中存在的抗体数量。
那么Steve算法的时间复杂度为Ο(Nnm2)。PINR算法时间复杂度为:K(1+All+nAll)(S1~E1和S2~E2程序段是并发执行,其时间复杂度均为O(All)),其中All=Tlen+m,因此上式可简化为K(1+All+n×All)≈K(Tlen+m)n;又因为KTlen=N-m(系统中所有的用户除去抗体网络的初始用户,即为分散在K个分组中的用户),并且当K的值不大时,每个分组的用户数量就会比较多,因而Tlen+m与Tlen相当,所以本算法是Ο(Nn)级的算法。该算法时间复杂度与抗体网络的规模无关,这将对Steve的算法有很大的改进,因此PINR是一种具有很好实时响应度和扩展性的算法。
4实验设计与结果分析
4.1实验环境和数据
机器硬件配置:CPU Intel 2.8 GHz,2 GB内存,320 Gb硬盘;软件环境:操作系统为Linux,用Java编程实现。
采用来自Minnesota大学提供的MovieLens数据集作为检验本文改进算法的实验数据集,数据集包含943个用户对1 682部影片的100 000个评分数据。
4.2实验结果
实验是Steve算法和本文改进的PINR算法的响应时间比较,以Steve算法响应时间作为基准(值为1)。实验中的一些参数和前一个实验设置相同。PINR算法分别使用Java的多线程模拟并行化,和真实集群环境(2台机器)进行的实验。
如图所示,可以看到PINR的响应时间低于Steve算法,特别是使用真实集群环境的结果几乎比原算法快了一倍的速度。
5 结论
本文提出的并行化免疫推荐算法,在不降低推荐质量的基础上极大地缩短了算法的运行时间,并且根据文中的算法可并行化分析方法可以得出,在一定的范围内(与集群中通信量和串行代码长度有关)进一步加大集群的机器数量会进一步降低算法运行时间[6]。
下一步工作的研究重点是完善用户建模技术,降低数据稀疏性,加大用户模型的“维”,从而使得亲和力的计算公式能得到更加准确的结果,进一步提高推荐质量。
参考文献
[1] Adomavicius G.Recommendation technologies:survey of currentmethods and possible extensions.Information Systems Working Pa-pers Series,2004;3(1):1—40
[2]李涛.计算机免疫学.北京:电子工业出版社,2004:30—58
[3] Jerne N K.Towards a network theory of the immune system.AnnualImmunology,1974;1(125):373—389
[4] Cayzer S,Aickelin U.A recommender system based on the immunenetwork.Proceedings Congress on Evolutionary Computation(CEC2002),2002;5(1):807—813
[5] Bernstein A.Analysis of programs for parallel processing.IEEE Trans-actions on Electronic Computers EC-15,1966;10(1):757—763
[6]陈国良.并行算法的设计与分析.北京:高等教育出版社,2009:44—47
并行优化 篇2
基于并行子系统的飞行器多学科稳健优化设计
研究了并行子系统稳健优化设计方法在飞行器设计中的应用.分别采用并行子系统稳健优化设计、系统分析和并行子系统分析3种不同方法进行了计算,得出的稳健结果表明并行子系统稳健优化设计方法优于其它2种方法.该方法主要有3大改进:一是在MDO环境中,增加了不确定性的分析;二是允许系统层使用离散变量;三是在系统协调过程中,采用人工神经网络的`响应面提供定量的近似信息.
作 者:续斌 张恒喜 马利 解江 XU Bin ZHANG Heng-xi MA Li XIE Jiang 作者单位:空军工程大学,工程学院,陕西,西安,710038刊 名:空军工程大学学报(自然科学版) ISTIC PKU英文刊名:JOURNAL OF AIR FORCE ENGINEERING UNIVERSITY(NATURAL SCIENCE EDITION)年,卷(期):8(6)分类号:V222关键词:并行子系统稳健优化设计 飞行器设计 多学科设计优化
并行优化 篇3
一、教师要转变教学观念, 激发学生的学习兴趣
无论是什么学科, 课堂上的时间永远是最重要的, 课堂教学的有效性对学生的学习效果有着直接影响, 在课堂上取得良好的学习效果对学好这门学科来说是非常重要的。所以, 教师在初三化学教学中应该转变观念, 不能片面追求进度, 也不能只是一味应付考试, 应该时刻谨记提高课堂的有效性。在教学的过程中, 让学生对学习化学产生极大的兴趣, 能够以一种积极、主动的心态来学习, 那么教学就会产生事半功倍的效果。所以, 教师要改变 “填鸭式” 的教学方式, 在课堂上营造出轻松、和谐的氛围, 尽自己最大的努力激发出学生学习化学的兴趣。比如说, 借助生活中的某些化学现象来激发学生的好奇心, 引导学生动手实验, 激发出他们的主动探索精神和求知欲。教师要多鼓励学生自己动手、动脑, 与学生形成良好的互动, 这对提高化学课堂教学的有效性是非常重要的一个环节。如边讲边实验法, 在教师的指导下, 让学生亲手做实验, 去验证课堂教学的结论, 探索和发现其中的问题, 这样使学生体会到身临其境的感觉, 比教师单纯在讲台上教授效果要好多了。
二、重视实验, 提高实验技能
学习化学的一个重要途径是实验, 通过实验以及对实验现象的观察、记录和分析等, 可以发现和验证化学原理, 学习科学探究的方法并获得化学知识。
第一, 教材中演示实验, 老师尽可能做完, 一边做一边讲解, 注重操作要点和步骤, 学生更能理解化学基本概念和原理。
第二, 学生实验集中训练, 并且按基本操作要求进行规范操作, 引导学生观察和思考, 透过现象探究物质的相关性质及变化规律。
第三, 中考化学实验无论是气体制取、性质验证, 还是实验设计、评价和探究, 都源于书中实验或是书中实验的变形、组合、改进和创新。所以, 复习时要认真对待书中的每个实验 ( 学生实验、演示实验、家庭实验) , 对书中的重要实验, 要亲自动手做一做, 要注重实验细节, 要多问几个为什么。通过多角度、多层次的分析、探究, 逐步学会装置的选择与组合, 实验现象的观察与表述、数据的分析与处理, 结论的归纳与总结、实验的设计与评价, 进而培养和提高学生的实验能力。
三、在教学中适当 “提前讲解”, 减轻学生负担
化学用语是学生学习化学的重要工具, 是学好化学的关键之一。但由于化学用语本身具有抽象、难记忆的特点, 对化学用语的记忆就需要通过反复、多次的去接触、书写。再加之化学概念较多而抽象, 如果将二者加在一起让学生记忆, 日久会凸显其枯燥、乏味, 甚至会降低学生学习化学的热情。考虑到这一实际情况, 我认为让学生从学习化学开始就应对化学用语适当 “超前消费”, 这不仅有助于学生的记忆和掌握, 也体现了认识事物的一般规律性。我从绪言教学起就有意识让学生逐渐接触、记忆我们喝的水、吃的食盐、吸的氧气、呼出的二氧化碳等一些常见物质的化学式; 在学习实验基本操作时, 我又安排学生熟悉、记忆常见元素的元素符号, 当然这样的记忆是不牢固的, 还必须在以后的教学中多次的、反复的引导学生去熟悉、接触元素符号以加深印象。通过这种 “提前讲解” 分散教学, 不仅降低了学习难度, 还平添了几分乐趣, 更为后面知识的介绍做下了铺垫。
四、走进实践, 合理运用现代教育技术
要想针对初三化学知识进行教学创新, 就要充分运用陶行知教育理论的指导, 让化学走进学生生活, 更加贴近学生的想法, 走进社会, 走进实践。教师在教授实验课程时, 可以针对简单的实验布置相应的家庭实验, 比如小苏打在分解过程中产生二氧化碳这一现象就可以作为学生的家庭实验进行教学, 因为蒸馒头过程中需要放入小苏打, 小苏打加热会产生二氧化碳, 而馒头蒸熟之后会出现很多小孔, 这些小孔就是二氧化碳造成的。这样的教学方法不仅会让学生感到有兴趣, 而且加深了学生对实验问题的印象, 达到了教学的目的, 学生产生了学习兴趣。比如, 在设计二氧化碳与水反应的习题时, 我选择了下面一道题: 下列哪些能让石蕊试液变红? ①把用石蕊浸泡过的滤纸制成的干花上滴几滴稀盐酸;②把干花放入一瓶二氧化碳气体中; ③把干花上滴几滴水; ④把干花用水润湿后, 伸入一瓶二氧化碳气体中。通过这道题让学生认识到酸能使石蕊变红, 二氧化碳和水都不能使石蕊变红, 而湿润的二氧化碳能使石蕊变红, 说明二氧化碳与水反应生成了酸, 学生在做题的过程中, 不仅学到了知识, 而且了解科学探究的过程和方法, 还提高了解题能力。类似的试题还很多, 如探究钢铁生锈的条件, 酸中哪种微粒能使石蕊变红, 燃烧条件的探究, 金属与酸的反应速率与哪些因素有关等, 只要教师善于精心设计和选择这方面的试题, 通过精讲精练, 化学学习就会取得事半功倍的效果。提高课堂有效性, 现代教育技术能够为教师和学生提供更加广阔的平台与信息来源。在化学教学中, 教师可以应用多媒体、计算机网络等技术来创设学习情境, 将书本上的知识转化为与生活息息相关的内容, 使课堂教学回归生活, 帮助学生了解知识。还可以通过视频、动画等技术强化教学内容, 加深学生对知识点的印象, 再配以合理的课后练习来巩固学生所学的知识。教师要重视学生的化学实验能力, 安排一定的实验课, 将学生带到实验室, 让他们切身体会化学的奥妙, 进而加深他们对化学知识的理解。
总之, 要提高课堂教学效率, 就要深入到学生当中, 深入了解学生在学习过程中存在的问题有针对性解决。要提高初三化学教学的有效性, 教师一定要重视并逐步转变观念与方式, 使学生能够真正热爱化学, 积极探索化学, 从而实现素质教育。
摘要:化学是中考必考的科目之一, 而在初三这一特殊而且重要的学段, 化学教师的教学任务更加繁重而艰巨。在保证课堂教学有效进行、学习任务快速达成的基础上, 化学教师还要帮助学生巩固以往所学知识, 查漏补缺, 进行系统的、整体的化学复习。
并行数据库系统的查询优化研究 篇4
现在的主流并行数据库都是基于无共享架构, 在制定查询计划阶段, 是采用完全相同的模式, 不同之处是查询优化的策略和路径生成过程中所考虑的代价模型不相同。在制定好查询计划后, coordinator需要将查询计划发送给需要执行的节点进行查询的执行, 此时两种策略的执行方式不同, 但对结果的回收机制相同:各节点完成自身的查询计划后, 会将结果返回给coordinator进行最后的汇总。
通过分析, 发现根据查询计划的发送方式不同, 在制定查询计划时存在的问题:采用将SQL语句重写后发送的方式, 优点是各节点是一个独立的数据库在运行, 各节点接收到完整的SQL语句 (多条子语句) , 会遵循处理一条SQL语句的标准流程执行, 即对子SQL语句进行编译、优化和路径生成, 这样一来对单节点来说所制定出查询计划是最优的, 而coordinator上所制定的全局查询计划则会被改变, 即实际运行在各个节点上的查询相对于全局很可能不是最优的, 因为各节点无法知道全局节点的信息, 在制定本节点的查询计划时自然不会考虑与其他节点的通信代价, 即使考虑与其他节点的通信代价, 也无法将不与它通信的节点的通信代价考虑在内, 因此基于这个问题进行了调查。
2. 通信代价的分析
2.1 并行数据库的通信种类
在并行数据库系统下, 节点间通信包括以下三种情景:coordinator向各节点发送查询计划、各节点之间的join操作, 各节点向coordinator返回查询结果。
Coordinator向各节点发送查询计划和对结果的回收是在查询结果的执行前和查询结果的生成后, 这部分的通信对查询计划的优化没有任何影响, 因此通信的重点是如何优化join连接操作的通信代价。
在并行数据库系统下, 数据的存储策略主要包括Hash划分策略、Range划分策略以及round-bin (循环) 分区策略, 部分并行数据库系统支持局部划分策略。由于采用局部划分策略, 相当于在单节点的数据库上执行SQL命令, 没有并行因素, 与所研究的问题无关, 这里不做考虑。若采用Hash、Range和round-bin划分策略, 每个节点都存放数据表的一部分数据, 当并行执行时, 每个节点只对本节点上的数据进行操作, 当需要进行join操作时, 需要保证join操作的两个表中至少有一个是完整表, 而由于数据库本身的数据划分策略, 每个节点上的数据都不是完整的, 因此必须进行数据的迁移操作, 及各节点之间需建立通信并发送数据, 保证建立一个完整的数据表。
2.2 Join代价评估
在不同的参考文献和书中, 对join方法都各自的描述, 下面将这些方面描述如下:在并行数据系统下, 两节点的join操作通常包括两部分:发送端的代价和接受端的代价。
在一次通信过程中, 对数据的发送者既需要计算传输的启动代价也要计算数据的传输代价, 而对数据的接收者只需计算传输启动的代价。传输代价包括两个参数mp和ml, 它们参数都基于page level。mp表示启动报文传输的时间代价, ml表示报文传输的时间代价。
计算发送者的总代价的方法为:
为描述并行数据库系统的信息, [1]通过建立一个Libraries存储环境变量, 主要包括四种环境变量:Architecture Library数据库系统的硬件环境、System Library模拟操作和事物系统、Opetator and Access Method Library模拟算法、Data Base Profile Libaray管理数据库调度策略。将代价分为三部分:CPU时间代价、内存时间代价和网络通信时间代价, 并将网络代价的计算包含:发送包的时间 (Smt) 、接收包的时间 (Rmt) 和传输包的时间 (Ptt) , 但是并没有提出如何评估这些时间代价。[2]提出一种并行数据库系统下的代价估计模型, 将查询优化划分为两部分:the metrics和the libraries部分。在计算反应时间上定义了四种类型:local response time, effective time, distribution (partition) time, communication time, 其目的是根据并行数据库的分布策略, 在计算join操作时可能只计算几类反应时间, 本文这样分类的目的应该是对计算的细化。通过阅读以上的代表性的书籍和论文, 发现在并行数据库系统下, 将通信代价考虑在查询优化中已被多处提出, 但现有的开源数据库系统Gridsql和Postgres-xc都没有实现 (此点已被确认) ;但是现有文章都没有提出一个具体的通信代价计算模型, 论文中对这一部分的计算都是提出要考虑的变量, 打算做的工作就是提出一种数学模型计算各节点之间的通信代价。
3. 解决思路
对于问题一将SQL语句分解而无法计算通信时间的问题, 需要在coordinator节点上建立全局信息表, 全局信息表除了要包含并行架构下的硬件资源外还要记录当前运行事物的状态, 即每个事物开始和结束后都要向coordinator提交一个请求用来修改全局表中当前事物的运行状态。
结合问题一和问题二提出一种并行数据库系统下的优化方法, 该方法满足不论是将SQL语句分开发送还是以执行树的形式发送都适用。具体工作如下:
(1) 建立一个全局信息表。该表主要包含3部分:全局硬件信息、全局网络构建、各节点状态信息。硬件信息用来估算各节点的处理延迟, 全局网络用来计算通信时的代价, 各节点状态信息用来描述当前系统中运行事物的状态。
(2) 选择概率统计模型。概率统计模型用来计算当处理多个写事物时, 写写之间发生冲突的概率。使用概率分布模型统计出在当前系统下, 发生n次写冲突的概率, 对于不同的冲突次数, 应该在coordinator节点上估计出处理这些冲突所需要的等待时间, 将这部等待的代价加入查询优化的代价估计中。
(3) 当发生冲突后, 根据步骤2中概率的大小, 和全局信息表中硬件信息估算出处理冲突的时间, 将这部时间加入到查询路径的生产阶段, 此部分的代价可能改变执行树的结构, 从而达到优化的效果。
4. 结论
本文通过分析并行数据库系统的查询优化的制订, 指出存在的弊端, 提出对应问题的解决方案, 为今后查询优化的制订提出技术支持。
参考文献
[1]F.Andrès et al.“A Multi-Environment Cost Evaluator for Parallel Database Systems”, 2nd Intl.Symp.on Database Systems for Advanced Applications, DASFAA’91, Tokyo, April 1991.
面向AVS2的并行优化设计方法 篇5
AVS 2 (Audio Video Standard) 国家标准《信息技术高效多媒体编码》是AVS1之后的新一代的标准。AVS2对于常规视频的编码效率与最新国际标准HEVC/H.265相当, 比上一代国家标准AVS1以及国际标准AVC/H.264的压缩效率提高1倍;对于监控视频类视频, AVS2压缩效率达到AVC/H.264的4倍[1], 其性能已经达到一个新的层次。但其性能的提示也带来了其较高的计算复杂度。经实验测试:在参考软件RD11.0中D1 All Intra、QP为45配置下编码一帧图像需要花费大约11秒时间。因此, 对AVS2的并行加速优化研究显得尤为重要。
本文目标通过研究AVS2的标准编解码代码, 对其实施适应性改造, 使之能运用于实时的视频传输和播放。
1 All Intra配置编码端算法简化
1.1 四叉树深度优先搜索的简化
编码部分因为时间效率低下作为系统优化的重点研究对象。如图1所示, 在All Intra配置下, AVS2视频编码中默认的递归四叉树结构:深度为4, 最大编码单元 (Largest Code Unit, LCU) 的尺寸为64×64。意味着LCU具有4个层次, 共有85个结点需要遍历。事实上, 编码中LCU、32×32 CU主要是改进帧间编码的性能, 节省多余的比特数。与帧间编码相比, 帧内编码对较大尺寸块不是很敏感。因此, 采用较大的块对帧内编码性能影响很小。所以, 本文修改配置文件中的参数:LCU大小设为16×16, 其深度为2 (根是16×16, 叶子是8×8) 。即目前编码单元 (CU) 只有两种16×16、8×8, 这在一定程度上简化了编码结构。
设置测试环境如下:测试编码端D1 ALL Intra配置、Intel Core i5-2320@3.00GHz、RAM4GB、OS64Windows64位旗舰版、基于RD7.0视频编码代码。测试结果如表1所示。实验结果表明编码时间缩减了约30%, 但是对图像质量几乎没有影响。
1.2 CU编码比特率统计
帧内编码选择合适编码参数之后, 采用率失真模型选择CU块。对于16×16 CU, 预测单元PU类型如下:16×16、8×8、4×16、16×4;8×8 CU, PU只有两种类型8×8、4×4。如果编码器可以预测当前PU进一步划分成其他模式后性能几乎没有改善, 那么立即结束遍历其余模式, 节省遍历的时间。因此有必要设置一个阈值来判定当前PU模式的性能是不是达到一定要求, 是否有必要进一步遍历其他模式。
同理, 8×8 CU编码中首先编码8×8 PU接着再判决是否需要编码4×4PU。从码率角度定义了以下准则:若Bit PU定义为编码当前PU所需要的比特数。8×8 CU中Bit PU分布直方图如图2所示:对于一个CU, 编码所需要的比特数越小, 其图像越平滑。一般而言, 较大尺寸的CU更适合较平滑的区域, 反之则反。所以, 如果Bit PU足够小, 没有必要对当前块的PU模式进行进一步的遍历, 减少遍历次数。实际判断伪代码如下:
对于8×8 CU, 8×8 PU编码之后
if Bit PU<12,
那么停止对其模式4×4 PU的遍历
表2描述了8×8 CU采用提前终止方法对编码时间的影响。从表2可以看出小分辨率视频序列采用终止条件算法, 几乎不影响图像质量, 编码时间稍微有所增加;大分辨率的序列在保证视频质量的条件下, 编码时间有0.5%~2.8%的减少。
1.3 CU模式选择的固定化尝试
CU的模式选择模块是最消耗时间的模块, 本文尝试了将CU的选择固定为第一种模式 (程序中的直接做法是将模式选择的循环次数直接改成1) , 不再进行复杂的RDO选择, 这样的改动导致编码的模式不是最优选择, 所以带来的直接问题是码率增加, 除此之外, 还造成了不可接受的图像质量损失。
在亮度预测的角度预测中加入预处理操作, 只选出一种亮度预测模式进入最后的残差计算和重建过程。如果单独实施这项修改, D1配置下编码一帧效率提高了大约40%。尽管这个方法确实大幅地降低了编码时间, 但是如果以项目要求的标准来衡量的话, 这个改进方式不可取。
2 RDO计算中熵编码的码率估计算法
在视频编码中, 率失真优化技术 (Rate Distortion Optimization, RDO) 指导着编码器中模式判决和码率控制这两个重要模块的运行, 以保证编码模式的选择、量化参数的确定和码率的分配更加地合理高效。在计算RDO的过程中:通过J=D+lamada*R来算率失真时, 需要计算每一种模式的码率, 并通过比较获得最小率失真, 码率R的计算需要对每种模式进行熵编码, 由于此处只要需要获得其码率并不需要获得其熵编码的后的具体编码码流, 因此采用码率估计的方式来取代原有的熵编码部分, 对每种语法元素进行码率估计, 最后将计算出的码率返回给J, 并由此获得最小率失真, 省略了二进制算术编码上下文模型更新等部分。实施这种改进可以减少了RDcost中计算码率42%的时间, 整体时间节约5%左右, 且PSNR最高下降0.13d B。
3 并行化编码方案设计
整个AVS2编码标准代码都采用了串行执行的方式, 为了尽可能地提高编码时间效率, 对编码端提出了四种潜在的并行化方案:
1) 基于最简单的Tiles级别 (树编码单元的矩形网格) 并行处理。
因为AVS2的帧内预测模式通过参考左、左上、右、右上的像素来重建图像, 所以Tiles的并行会导致边界的像素不能参考原来可以参考的重建像素, 从而产生条纹效应。
2) 在RDO模式选择循环处实现多线程。RDO模式选择是整个编码模块中耗时最为集中的部分, AVS2耗时测试如表3所示。标准的AVS2编码是设置一个min_rdcost初值, 然后依次计算9种模式的rdcost, 用新的较小的min_rdcost替换之前的。所以如果要在这里实现多线程, 存在一个多个线程之间的“交流问题”, 主线程要能够知道哪个模式的rdcost最小。
因此, 提出的算法在程序中设置一个大小为9的数组, 分别记录9种模式下的rdcost值, 当前线程数变成1 (主线程) 时, 表示一个宏块的9种模式的rdcost都计算完毕 (多线程方式) , 再从数组中找出最小值, 得到模式选择的结果。
3) 宏块之间的多线程
就是多个编码单元并行编码, 但是由于宏块的划分和编码在AVS2源代码中是高度耦合而且是递归实现的, 所以这种多线程的方式比前一种要复杂很多, 甚至有可能需要修改标准AVS2的编码方法, 所以这个方案的实现很困难。
4) 利用GPU多线程编程加速Hadamard变换模块。
在帧内预测编码RMD的过程中, 需要计算在33种预测模式下得到的残差的Hadamard, 在目前的的RD11.0的代码中, 这部分的实现是串行执行, 而整个处理过程所用的时间百分比为10%。这个RMD的过程中数据互不相干, 前后的处理结果也没有相应的影响, 完全可以用并行的方式同时对33种下得到的残差进行Hardamard变换。
在理论分析下, 如果对33种模式实现完全的并行对该部分可以提速33倍。假如当前的串行执行的时候RMD需要330ms, 如果在并行方式下理论上可以只用10ms。但是这只是理论分析, 实际过程在其他的方面还需要占用时间, 例如数据的copy, 电脑内存向显卡内存的copy, 以及得到的数据的回传等。整体估计, 如果在33种模式下的残差进行完全并行的情况下可以提高20倍左右。但是由于并行化分析提速效果离项目目标要求太远, 并且GPU不适合整数运算, 更加适合浮点运算, 而AVS2编码都是整数运算, 因此GPU尝试动力不足。
经上述分析, 本文采取第二种多线程实施方案, 由于这种并行方案会非常频繁地创建和销毁线程, 而每个线程的生存周期不是很长, 可能会出现大量无关编码的操作占用大量系统时间的情况。
4 编码端变换模块的汇编语言加速
变换、反变换是整个编码过程中一直重复调用的底层函数, 所以, 通过可以使用汇编语言改写的方式在底层提升编码效率。完整的变换反变换模块包括64*64、32*32、16*16、8*8四种CU共8个代码模块, 汇编代码完成后调试, 其中两个模块始终不能正确替换。将其修改正确后, 能够正确进行编码。
5 结果分析和结论
AVS2实时编码优化的难点还是在编码端的效率上, 单线程在接受图像质量下降和码率增加的情况下可以达到1.3-1.5秒/帧。通过CU模式固定化、RDO多线程优化和变换编码汇编语言优化, 在D1配置下编码效率可以实现到15帧/s。AVS2作为我国新一代视频编码标准, 本研究有助于该标准的进一步推广和实施。
摘要:AVS 2 (Audio Video Standard) 新一代的国家音视频标准。AVS2实时编码优化的难点还是在编码端的效率上, 本文通过CU模式固定化、RDO多线程优化和变换编码汇编语言优化等方法对AVS2编码框架进行实施优化, 在D1配置下编码效率可以实现到15帧/s, 本研究有助于该标准的进一步推广和实施。
并行优化 篇6
1 并行程序的计算时间设计
在计算机数据通信的并行程序设计中, 确定并行计算程序的计算时间是非常关键的。这是因为在并行程序的运行中, 不同的处理器之间需要实现数据通信的同步进行, 以保证数据通信的实时性。而要达到这种同步传输要求, 就必须要正确精准的计算并行程序的计算时间。通常认为并行程序的计算时间是由同步时间、通信时间和聚合操作时间组成。基于本文主要探讨的是计算机并行程序的执行模型, 因而在此重点分析并行操作时间中的同步时间和聚合操作时间。
同步时间是不同计算机进程间的同步计算时间, 在实现点对点的通信过程中, n个节点要实现同步要经过logn步通信, 在第k步通信中, 进程i发送给消息给进程 (i+2k) %n, 并接收从进程 (i-2k+n) %n发来的消息。其同步操作的性能是由点对点通信的性能和所使用的算法以及通信拓扑结构共同决定的。而聚合时间也是指点对点通信的实现时间。这些聚合操作的性能也是由点对点通信的性能和其算法所使用的通信拓扑结构来决定的。因而可以说, 同步时间和聚合操作时间都可以认为是点对点通信时间, 因此在并行程序的执行模型设计中, 应当重点优化点对点通信时间的设计。
2 并行计算程序的数据通信过程
在并行程序的执行模块设计中, 我们可以将数据通信过程中的所有环节分为三个阶段, 即数据准备阶段、通信准备阶段和数据传输阶段。其各自的设计内容分别如下所示:
2.1 数据准备阶段
该阶段所包含的主要执行环节有数据筛选、数据压缩、发送空间或接收空间的申请、数据在内存间的拷贝过程等几个环节。在并行计算程序的数据通信优化设计中, 数据筛选环节可以通过对所需要传输的数据库进行筛选, 去掉冗余部分, 再巧妙设计数据传输顺序来实现数据通信的优化效果。数据压缩环节中, 需要重点对压缩速度与压缩强度进行优化设计, 以达到提高数据通信效率的目的。发送空间或接收空间的申请环节中, 可以通过减少系统内存申请函数的调用频率来实现数据通信的优化。而数据内存间的拷贝环节中, 则可以通过尽量减少拷贝次数来避免出现重复作业, 从而提高数据通信系统的运行速度。
2.2 通信准备阶段
通信准备过程包含了套接字的初始化以及设置过程, 通信信道以及通信拓扑的建立过程, 通信信道以及通信拓扑的管理等。
程序在进行通信之前需要对通信信道进行初始化, 这在不同的网络设备/网络协议下其过程和操作也不一样, 例如在以太网TCP/IP环境下, 就需要首先建立套接字, 并设置套接字的各种属性 (发送/接收的buffe:大小, 是否禁用Nagle算法以及是否非阻塞模式等) 。另外上文已经提到, MPI程序中经过TCP三路握手之后并不代表这个信道已经建立好了, 因为在MPI程序中是使用进程编号值而不是IP地址或主机名来标示每个进程, 因此监听在端口上的接收方只知道对方的IP地址或主机名, 并不知道对方的进程编号, 因此通信发起的一方还需要再发送其进程编号给接收方。
此外, 通信信道的管理也是相当重要的一个方面, 因为程序在运行时, 其通信拓扑会随着其通信操作的不同而变化, 因此每个进程都有可能会与其它任意结点进行直接通信, 在大规模并行系统上每个结点潜在的通信对象就会高达数万甚至数十万, 因此如何高效的管理这些结点也是并行计算的研究内容之一。
2.3 数据传输阶段
数据传输过程的性能牵涉到系统的I/O多路复用的效率, readv/writev函数的效率, 网卡驱动/内核的效率, 网络协议, 路由协议以及网络设备硬件等性能。因为牵涉到许多软件、硬件以及软硬件之间的交互, 因此整个数据传输过程是极其复杂和难以预测的。
I/O多路复用的效率严重影响着整个传输的效率, 在同时管理多个网络连接的时候, I/0多路复用很大程度上决定着网络连接的延迟, MPICH2实现中的连接状态机能高效运行的前提便是其poll函数能快速的响应各套接字的状态变化。在不同的平台上, 系统的I/O多路复用函数也不一样, 当然其效率也各有差别, 选择一个高效的I/0多路复用函数也是MPI实现的前提保障, 例如Open MPI中, 使用了epoll而不是poll来提高管理大量套接字的响应时间, 是考虑了在结点数目巨大, 每个结点需要管理很多套接字时, epoll的效率要远远高于poll的效率。
另外, ready/writev函数的效率以及内核的效率也毋庸置疑的影响着传输的效率。进程在内核态与用户态之间过度的交替必然导致传输效率的低下, 网卡的驱动程序也是影响着整个传输的重要因素。需要一些策略来进行拼包处理, 否则必然导致整个机器性能的下降。这些策略以及实现都是由网卡驱动和系统内核来实现的, 这也是影响数据传输性能的重要原因。
3 结论
总之, 计算机并行程序的数据通信系统本身就是一个具有较高复杂性的系统, 在其数据通信的优化过程中, 首先需要注重对其并行时间的合理设计和计算, 以保证点与点之间的通信效率。另外还要分别从数据准备阶段、通信准备阶段和数据传输阶段等整个数据通信的全过程中的每个环节出发, 积极找出提高数据通信效率和可靠性的优化方法, 以此来综合提升数据通信优化的并行程序执行效果。当然, 面向数据通信的并行程序执行模型设计优化过程中还有很多问题需要解决, 本文只是简单研究了其中的一部分问题, 还有很多实质性问题需要在具体案例中进行针对性分析, 因此数据通信的优化问题还需要我们继续研究和探索。
参考文献
[1]吕海.多核处理器芯片计算平台中并行程序性能优化的研究[D].北京:北京工业大学, 2012.
[2]胡悦.并行计算时间与存储空间关系研究[D].上海:上海大学, 2011.
并行优化 篇7
随着社会经济的不断发展,电力负荷不断增加,远方电源供电比重增大,以致在负荷高峰期传输容量有可能接近极限,增加了出现电压崩溃并发展成为全网性事故的可能性。因此,以维持电压合理水平,降低网络损耗和确保系统电压稳定的多目标无功优化已成为自动电压控制系统的发展趋势。迄今,国内外学者已在这方面取得了大量有价值的研究成果[1,2,3,4,5,6,7,8,9,10,11,12,13]。文献[1]提出了一种同时考虑系统动态、静态稳定特性的协同控制方法,对静态电压的评估采用特征值法;文献[2-5]用不同的多目标优化算法求解综合无功优化问题,并且都采用常规收敛潮流雅可比矩阵的最小奇异值(MSV)评估系统的静态电压稳定情况;文献[6]利用专家系统在综合无功优化中实现提升系统电压稳定裕度的目的;文献[7-8]则应用粒子群算法求解综合无功优化问题;文献[6-8]评估系统电压稳定采用的都是L指标。文献[1-8]的综合无功优化都可归入采用状态指标评估系统的电压稳定程度,具有实现简便,计算快速的优点,但状态指标仅能反映系统当前状态的稳定水平,却无法反映实际电力系统在运行点改变后,系统是否还能保持稳定;文献[9-10]的无功优化模型计算出系统在某种负荷增长模式下的功率裕度,以此为基础进行无功优化或规划,简化了计算,但缺乏应对系统变化的灵活性,所采用的负荷增长模式可能与实际情况相差较大,同时计算效率不够高,难以实行实时控制;文献[11-13]分层处理优化网损和提高稳定裕度目标,首先以降低网损为目标得到优化解集,再采用连续潮流法或优化算法评估所得到解的电压稳定裕度,选取其中稳定裕度最大的解作为最终解,此方法具有工程上易于实现的优点,但根据多目标寻优理论可知,其解实际上是在前一层所得解集中的局部寻优,很可能不是多目标优化的Pareto最优解,另外计算效率也有待提高。
本文提出根据系统短时负荷预测得到系统可能的负荷变化趋势,由此计算系统负荷稳定裕度作为综合无功优化的电压稳定评估指标;同时,针对由于负荷裕度的引入导致计算耗时过多,提出的基于ε-支配域的并行算法,具有实现简便,便于扩展的特点。
1 电压稳定指标分析
目前综合无功优化采用的状态指标主要包括:常规收敛潮流雅可比矩阵的最小奇异值(MSV)和L指标。用Kessel提出的L指标[14]和A.Tiranuchit等人提出的最小奇异值指标[15]评估系统静态电压稳定水平时,都只需用到系统当前运行状态的信息,计算量小,应用方便,但线性性不理想,对电压崩溃点的预测精度也不够精确。图1显示了分别用L指标,最小奇异值法求解IEEE14、IEEE30节点系统电压稳定的情况,计算采用恒功率负荷模型,负荷增长方式采用恒功率因数增长。由图1可见,L指标和MSV线性性都不太理想,当系统负荷较轻时,计算结果变化不大,但靠近临界点时值却迅速变化。其中,MSV指标靠近临界点处,值出现“跃变”,这是因为MSV对矩阵的维数敏感,当发电机达到无功出力极限时,PV节点转化为PQ节点,相应的潮流方程的雅可比矩阵将会增加一行和一列。另一方面,虽然L指标的稳定性要优于MSV指标,但由L指标的定义可以推导出:当以L指标评估电压稳定水平求取多目标优化问题的Pareto解集时,所得到的解会使全网电压普遍靠近上限运行(详细推导参见附录)。这样,当希望系统稳定裕度尽量大,同时又希望电网电压维持在适中的水平时,不适合应用L指标。
考虑到实际系统负荷是不断变化的,因此希望无功优化用到的电压稳定性指标应具有能够表示系统负荷的变化即运行点变化的能力,相对于上述状态指标,功率裕度指标不仅由于其线性性好,能提供一种直观的表征系统电压崩溃程度的度量,同时还能够跟踪负荷变化给出系统的电压稳定裕度,因此受到广泛的重视。本文采用文献[16]的负荷裕度指标评估系统的电压稳定程度。根据文献[16],无论是鞍结分岔还是极限诱导分岔,静态电压稳定裕度都可归结为以下的优化问题:
式中:λ∈R1为反应负荷水平的参数;yd∈Rm为负荷变化方向,m为等式约束数目;f(x,λ)=[f1(x),…,fm(x)]T为扩展潮流方程;x∈Rn为状态参数;h(x)为常规潮流方程。G(x)=[G1(x),…,Gr(x)]T为系统不等式约束,包括电压约束和发电机节点有功、无功约束,共r个。(l,u)∈Rr为松弛变量。式(1)中设λ=0,对应于初始运行点,显然式(1)的解λ反映系统的稳定裕度的大小,也对应着分岔。由式(1)的KKT条件和采用文献[17]的数据格式,式(1)可用式(2)迭代求解:
式中
其中:▽2hi(x)与▽2Gi(x)为hi(x)与Gi(x)的Hessian矩阵;(L,U,Z,W)∈Rr×r,为对角元素为(l,u,z,w)的对角阵;E=[1…1]T∈Rr。详细的求解过程参见文献[16,17],求出崩溃点后可用以下判据来确定系统的分岔类型:1)如果系统中所有发电机在分岔处都不满足式(3),则为鞍结分岔;2)如果系统中至少有1台发电机在分岔处满足式(3),则为极限诱导分岔。式(3)中,Qlim,i,Vs,i分别为发电机节点i的无功极限和端电压设定值。
2 综合无功优化模型设计
2.1 ε-支配域并行计算算法
由于负荷裕度的计算量相对于状态指标而言大大增加,因此还鲜有研究将其直接用作多目标优化的适应度评估函数。本文将基于ε-支配域的eMOEA算法[2,18]改进为并行算法,来解决引入负荷裕度计算的时间瓶颈问题。eMOEA算法能在大幅提高多目标优化速度的同时得到良好分布的Pareto优化结果。其思想是:在寻优空间中对两个解进行支配关系比较时,当两个解的第i维目标之差小于εi时,认为这两个解对目标i而言没有差异。如图2,假设有一二维目标矢量a(f1,f2),由ε支配域思想aε-支配于空间AUB,而由普通支配域定义,矢量a支配于空间B。显然,ε-支配域目标空间的复杂度要低于普通支配域的目标空间复杂度。从物理意义上解释,εi反映了对目标函数fi的“容忍度”。
eMOEA算法的比较复杂度为O(2MN)[2],但当优化目标或约束条件本身计算很复杂时,算法整体计算复杂度也将增加,由于eMOEA算法采用“串行”计算模式,其计算复杂度将是每个目标适应度计算的叠加。因此,将算法适应度计算改为“并行”计算模式,则该部分的计算复杂度将仅等于适应度计算中复杂度最大的一项。针对本文应用,实现并行计算需解决几个关键问题:1)尽量简化共享数据规模,简少数据交互负担;2)尽量均衡分配各并行计算线程计算量;3)保证各并行计算线程数据和结果时间上同步。
当负荷裕度计算采用直角坐标扩展潮流方程时,▽2hi(x)与▽2Gi(x)都是仅与电网结构有关的高度稀疏的常数对称矩阵,因此可采用稀疏存储技术保存上三角阵的元素,不用每次迭代重新计算。这样,负荷裕度目标的计算量得到减少,可以用两个线程分别计算负荷裕度和网损。线程间只共享母线、线路和发电机等系统参数,数据交互由全局变量完成,只有两个线程都执行完成时主程序才继续执行,避免了大量的数据通讯,保证了线程数据和结果的同步。并行计算流程图如图3。
并行计算中,加速比和效率是对并行方案和程序进行评价的重要指标。加速比定义为:单个节点上的运行时间和P个节点上运行时间的比;并行效率的定义为:加速比和计算节点个数之比[19]。因此可推得本文算法并行效率的近似公式(4)。其中,R是与数据交互和计算速度有关的比例常数;p是CPU处理器核数;n为系统规模;s是参与计算矩阵的稀疏度。因此,在CPU核数一定时,系统规模越大,并行效率越高。
并行eMOEA算法流程为:
1)载入电网参数及eMOEA算法参数;
2)生成初始种群P,并行计算每个个体的目标函数值;并将P的ε-非支配集作为初始存档种群E;
3)从P中随机选出两个个体(优化解),将其中占支配地位的个体与从E中随机选择的个体进行交叉,生成子代个体c,再并行计算c的目标函数值;
4)将c与P中的每个个体进行比较,如果c支配于任一个体,则用c替换该个体,否则不接收c;同时,将c与E中的每个个体进行比较,如果cε-支配于任一个体,则用c替换该个体,否则不接收c;
5)如果未达到迭代次数,则到步骤2),否则输出E。
2.2 模型数学表达式
本文综合无功优化模型如式(5)。
式中:Ploss为系统有功网损;Fv为节点电压偏差指标,数学表达式如式(6);λ为负荷裕度。其中yd为式(7)所示的负荷变化矢量,反映了系统负荷在t时刻可能的变化趋势,Pf(t+Δt)为系统在t+Δt时刻的负荷矢量,其值可由短时负荷估计等方式得到,P(t)为当前时刻负荷实际值,为了保证算法的收敛性,Δt不宜取太大;h(x)为潮流方程约束,f(x,λ)为扩展潮流方程约束,g(x)为不等式约束,包括变压器档位限制,节点电压幅值限制,发电机无功出力限制,补偿电容器无功容量以及发电机端电压限制,详细表述同文献[2]。
其中,
3 算例分析
由于本文方法求解的是Pareto近似解集,单独比较单个解的值不能反映所用方法对优化结果的影响,所以设计以下四种算法(表1),其中方法A为本文所采用方法,并比较其Pareto解集各目标的平均值和标准方差,优化目标重要程度关系根据“安全第一、经济第二”的原则依次为:1)负荷裕度;2)电压偏差;3)网损。
在IEEE14,30,118节点系统上进行计算,系统各节点负荷特性分为四类:①行政办公、商业金融、文化娱乐、体育用地;②医疗卫生、教育科研;③居住用地;④工业;典型曲线如图4所示。本文中在每整点算法计算一次,实际应用中可根据需要灵活设定计算间隔,每次计算采用超短期或短期负荷预测的结果作为下一时刻负荷量。并行eMOEA算法各参数取值同文献[2],εi=0.001(i=1,2,3),进化代数2 000,参与比较的算法采用的随机数Rn列于表格左上角。所有算法用VC++6.0环境编写,所用计算机CPU为双核2.2 GHz,3 G内存。表2列出了IEEE30节点系统用方法A,C,D在11点的优化结果,为了便于比较,每个解都计算了L指标。每列中第一项数据为平均值,第二项为标准差,黑体字标出的是各项指标的最优值。
由表2可见,电压稳定裕度和电压偏差量两项指标使用方法A所得结果都是最好的;方法C所得到的网损最小但电压偏差度最差,并且解集节点电压普遍靠电压上限,加大的设备的绝缘要求及老化程度。根据各目标的重要程度关系,方法A的优化结果综合性能更好,并且结合公式(3)可以判定系统可能的分岔是鞍结分岔。表3,4是1 1点时IEEE14,1 18节点系统的计算结果,方法A的优化结果都要好于方法C、D,并且方法A对负荷裕度优化的同时,L指标也得到了优化,而方法C、D优化了L指标,却有可能降低系统的负荷裕度。24个时刻的计算结果表明,方法A都是优于另两种方法,因此可以认为负荷裕度指标更适合用于考虑电压稳定的综合无功优化Pareto解集的求取。
图5是A、B两种方法计算时间的比较。方法A与方法B相比在计算速度上的提升是明显的,前者计算时间分别为后者的85.5%,63.2%,47.2%,随着系统规模的增加,并行算法计算效率的提高也随之增大,这与公式(4)结果是相符的。
4 结论
(1)目前在多目标无功优化中广泛应用的电压稳定状态指标(最小奇异值和L指标),由于线性性不理想,难以准确估计崩溃点,Pareto寻优能力不强。特别是L指标得到的解会使全网电压普遍靠近上限运行。
(2)本文采用的考虑负荷变化影响的综合无功优化模型所得的结果既能考虑系统当前电压稳定性,又能反映实时负荷增长方式下系统的负荷裕度和可能崩溃类型。
并行优化 篇8
依据水库优化调度的基本约束条件和最优原则,其基本任务就是使水库在一定时期内,制定和实现符合实际情况较优的运行方式[1]。然而水库发电优化调度是一个具有较多约束条件、动态的复杂非线性优化问题,目前,国内外学者们对其研究方法主要分为两类:一类是以线性规划法、非线性规划法、动态规划法[2]、逐次逼近法[3]、逐步优化法[4]等为典型代表的传统方法,这些方法的主要缺点是多约束条件难以处理、算法复杂、计算时间较长等;另一类是以遗传算法[5]、蚁群算法[6]、粒子群算法[7]、模拟退火算法[8]、人工神经网络算法[9]等为典型代表的具有启发式特点的智能方法,虽然这类方法同样可以对水库运行进行优化,然而存在诸如收敛不稳定、容易陷入局部最优解的特点。
随着人工智能学科的飞速发展,2002年,李晓磊[10]等提出了人工鱼群算法(Artificial Fish Swarm Algorithm,AFSA)。目前,关于AFSA的研究已经渗透到水库及水库群优化调度领域,并且取得了丰硕的科研成果,已成为水库及水库群优化调度领域的研究热点之一。
这种算法具备天然的自组织特征,是通过分析鱼类的活动作为出发点进行寻优的,是基于动物行为的人工智能方法之一。作为一种新型的仿生优化算法,在空间搜索相关问题上具有一定的自适应能力,对参数和初值的设定不过于苛刻,鲁棒性强、简单并易于实现,并且具有并行处理问题的能力。但是该算法后期的寻优精度不高,容易陷入求得局部极值的状况,并且随着搜索盲目性扩大,搜索速度变慢,耗费时间较多。
针对AFSA后期搜索易陷入局部极值的问题,结合混沌优化算法[11](Chaos Optimization Algorithm,COA),黄锋[12]在2014年提出了混沌人工鱼群算法(Chaos Artificial Fish Swarm Algorithm,简称CAFSA)。因为COA具有较为精致的内在结构,能把系统内部运动束缚在一定的范围内,根据自身规律可以不重复的遍历各种状态,有力克服AFSA后期出现“早熟现象”的缺点。然而结合混沌遍历后计算耗时在原有基础上有所增加。如何应用并行计算[13]有效减少计算耗时是本文的研究重点。并行计算是根据多核计算机或计算机群可以同一时刻处理多任务的特点,研究设计如何将一个应用分解成多个可以并行处理的子任务,并分配给多核单机或是机群的不同处理器,之后各处理器之间相互协调,同一时刻并行处理各子任务,从而达到加快求解速度的目的。AFSA中各人工鱼具备自身独立处理任务的特点,另从张志新[14]的研究中可认知COA并行化的基本思想,为本文水库发电优化调度双层并行计算架构设计奠定了基础。
本文在CAFSA基础上,结合双层并行计算模式,对水库发电优化调度问题进行求解,将此称为混沌人工鱼群并行算法(Chaos Artificial Fish Swarm Parallel Algorithm,简称CAFS-PA)。基于双层并行计算架构设计的实例计算结果表明该算法能获得较好的优化性能以及运行效率,为水库发电优化调度计算提供一种可行的研究方向。
1 混沌人工鱼群并行算法(CAFSPA)原理
1.1 基本人工鱼群算法(AFSA)
AFSA基本思想源自鱼群的觅食行为。在某一水域,个体鱼能够通过自行或尾随其他鱼的方式,找到营养物质丰富的地方,因此鱼群聚数目最多。根据这一特点,可以通过构造人工鱼来模拟鱼群的觅食、聚群、追尾及随机行为来实现寻优目的[15]。在人工鱼群算法中主要研究如何利用简便有效的方式来构造并实现这些行为。
人工鱼是真实个体鱼的虚拟实体,内部封装了一系列的行为和自身参数数据,通过感官参数接收环境刺激信息,并通过人工鱼的控制参数做出相应的行为活动。问题的解空间和其他人工鱼的状态构成了某条人工鱼所在的环境。而该条人工鱼目前的自身状态和所处环境为其下一刻的行为决定做出前提条件,同时,该条人工鱼通过自身行为活动影响环境以及其他同伴的行为活动。
公告板的作用是记录最优人工鱼的个体状态,每条人工鱼执行完一次迭代后会把自身当前状态与公告板的数据进行比较,若优于公告板中记录的数据则会用当前的状态更新公告板,否则公告牌数据保持不变。解决问题时通常采用的是选择最优行为执行和选择较优方向两种方式评价,最后通过连续多次所得值的均方差是否小于允许误差等方法来终止算法的迭代。等整个算法数次迭代结束后,输出公告板的值便是所求最优值。
1.2 混沌优化算法(COA)
非线性系统中的混沌运动,表面上看似运动混乱,但实际上是有章可循的,是一种无固定周期的循环行为[16]。该混沌现象的独特性可归纳如下:①随机性,即具有随机变量杂乱表现。②遍历性,即可以在一定的状态空间中不重复的经历所有状态。③规律性,即此混沌运动可以应用确定性的数学迭代表达式进行描述。
其中第二点是本文研究与应用COA的重要特点。
COA的基本思想是构造混沌变量序列,通过函数形式把混沌变量映射到优化变量的取值范围内,充分利用混沌变量的遍历性这一主要特点来寻求全局最优解。
在COA中最经典模型之一便是Logistic模型,表达式如下:
式中U作为控制参数,取值范围[0,1]。当U=4时,系统便处于混沌状态。取任意初始点,即得Xi在(0,1)区间上的遍历点列。
1.3 AFSA存在问题与解决方案
在水库发电优化调度计算中,基于原有AFSA,结合COA的遍历特性,学者黄锋提出的CAFSA,有效控制了AFSA在后期搜索中容易陷入求得局部极值的局面。然而AFSA后期搜索盲目性扩大、速度变慢,从而导致耗费时间较多的局面并未改观,另外COA进一步增加了一定的寻优计算耗时。为了进一步提高优化解的精度,可增加人工鱼群的种群数,但是此举也会增加一定计算耗时。
并行算法是基于多核计算机或是多台互联的计算机群,对问题进行联合求解的方法和步骤。其基本思想是将待解决问题分解成若干个尽量相互独立的子任务,然后使用多核计算机或多台互联计算机群同时求解这些被分解的子任务,最终求得原问题的整体优化解[17]。并行计算主要目的是为了充分利用闲置有效的计算资源,尽量缩减原问题的计算耗时,提高解决问题的工作效率。因此在水库发电优化调度中并行化处理CAFSA是解决计算耗时问题的有效途径。
1.4 混沌人工鱼群并行算法(CAFSPA)
并行计算基本思想是实现分解后子任务各自计算时间的相互重叠。在CAFSA中,每条人工鱼的自身条件和周围环境决定了其具体行为,因此算法的灵活性比较强,设计思路中必须考虑如何利用鱼群协作来进行全局寻优,然而个体人工鱼具体行为运动是相互独立的,以此可作为并行计算的必要条件之一。CAFSA中具备COA中Logistic映射产生的序列,能不重复遍历一定范围内的所有点[18]。张志新[14]应用COA求解时,为了提高寻优精度,设置了多个混沌初始值进行计算,其中各初始值作为起点计算是相互独立的,从而提出的COA并行化,为本文并行计算提供了一定的思考方向。
因此可以采用互联的多核计算机群来模拟各个体人工鱼寻优的子任务,结合并行算法设计在同一时刻解决多子任务可以较大提高求最优解效率。
基于黄锋的CAFSA,在水库发电优化调度计算中提出了CAFSPA即混沌人工鱼群并行算法,具有效率高、收敛快、结果精度高等优点。CAFSPA首先也采用两种集成模式:一是通过Logistic映射产生的序列,放大到决策变量的取值空间,然后以此作为AFSA的初始解,这将有助于提高求解质量。二是通过人工鱼群中各个体鱼Xi(i=1,2,…Np)进行能量判定之后,执行某个移动,例如觅食、群聚、追尾或随机等行为动作,便得到相应的Xinext,对Xinext的每个分量zit,next(t=1,2,…,T)可以进行一次混沌优化搜索,将此视同对混沌优化计算附上不同的初始值,可对各自独立计算进行并行化处理。根据机群中工作计算机数目M,将人工鱼群分成M个子鱼群,分配到对应的多核计算机进行计算,实现各子鱼群的并行计算,相互之间通过MPI进行数据通信。每条人工鱼的行为动作以及每个Xinext分量的混沌优化搜索,可以采用所在多核计算机的OpenMP进行并行计算处理。这样人工鱼群内外双层并行混沌搜索的随机性、遍历性既可以避免鱼群陷入局部最优,又能提升收敛速度,充分利用闲置资源,有效减少计算耗时。
2 基于CAFSPA的水库发电优化调度
2.1 水库发电优化调度模型建立
本文主要研究的是水库发电优化调度,可以采用水库在整个调度期限内的总电能最大作为优化调度准则,优化调度模型建立如下:
其中约束条件为:
各式中变量含义解释如下:
式(2)中:F为发电量最大值;T为年调节水库中划分的时段总数(一般取值12);K为出力系数(取常数值);qt为第t个时段的发电流量;ht为第t个时段发电平均水头;Δt为一个时段的计时,s。
式(3)中:Vtmin和Vtmax分别表示为水库第t个时段库容上限和下限;Vt表示为水库第t个时段的初库容。其中Vtmin取值为死水位相应库容,在汛期时,Vtmax取值为防洪限制水位的相应库容,非汛期时Vtmax取值为正常蓄水位相应库容。
式(4)中:Qtmin和Qtmax分别为水库第t个时段的最小和最大放水量;Qt则为第t个时段的放水量,其中包括发电流量qt,也有可能包括弃水。
当水库放水量都用来发电时,Qt=qt;当水库放水量大于水库发电流量,就会产生弃水,此时Qt>qt。式(2)作为目标函数是以发电为目标,故用qt表示;约束条件中,放水量可能包括弃水,故用Qt表示。
式(5)中:Ntmin和Ntmax分别为第t个时段水库的最小出力和最大出力;Nt则为第t个时段的出力。
式(6)中:Vt-1和Vt分别为第t个时段水库的初、末库容大小;It为第t个时段的入库流量;Qt为第t个时段的出库流量。
式(8)中:z1,z(T+1)分别为第一个时段初和最后一个时段末的水位值;CZ1,CZ(T+1)都为常数(取水库死水位值)。
2.2 基于CAFSPA水库发电优化调度的求解步骤
据水库发电优化调度特点,参考黄锋的CAFSA,CAFSPA即混沌人工鱼群并行算法的计算步骤如下:
(1)划分年调水库调度期为T=12时段,决策变量为各时段的初水库水位,取值空间设为[Ztmin,Ztmax],即在水库第t个时段库容下限值Vtmin和上限值Vtmax之间。
(2)设定算法中各主要参数值,如确定整个算法的最大迭代次数,以MaxNumber表示;人工鱼群规模,以Np表示;人工鱼的视野范围,以Visual表示;移动步长,以step表示;拥挤度因子,以δ表示;最大尝试次数,以TryNumber表示。
(3)每条人工鱼的混沌初始化。为便于区分每条人工鱼,可对人工鱼进行编号,命名为n(n∈[1,Np]),令某条人工鱼编号为n=1,由调度期内被划分的时段数,可随机生成T个初始值xnt(t=1,2,…,T),并令X1=(x11,x12,…,x1T),即为该条编号为n=1的人工鱼。X1代入式(1)后,可迭代成系列混沌向量,其中Xn=(xn1,xn2,…,xnT),即是人工鱼群中其他编号的个体人工鱼。
将此系列混沌向量,依据式(9)被放大至决策变量取值空间[Ztmin,Ztmax],可以得到初始的决策变量。此时第n号个体人工鱼表示为,其中znt(t=1,2,…,T)表示为第n号个体人工鱼在第t时段的初水位。其实一条人工鱼表示的就是水库发电调度的一种运行决策。可以不断调整混沌人工鱼的水位值,以致满足各约束条件,最终目的是使得每条混沌人工鱼都是满足此水库发电调度的可行范围之内,同时也可以加快算法收敛速度。
为了满足水量平衡方程,决策变量的取值空间可以由以下方法来确定:
关注某时段t,其水量平衡方程为Vt+1=Vt+(It+1-Qt+1)Δt,由式(8)可知,Vt为一个固定值,再根据约束条件V(t+1)min<Vt+1<V(t+1)max,Qt的取值范围可以确定为:
上界:
下界:
Vt+1的取值范围由此可以被确定,根据库容特征曲线便可求出相应的水位取值范围[Z(t+1)min,Z(t+1)max]。由此得到的初始种群必满足各约束条件。
(4)根据计算机群中单机的数目M,按个体混沌人工鱼的总数Np和各自编号n,将混沌人工鱼群平均分成M个混沌人工鱼子群(除最后一个子群其他每个子群中单体混沌人工鱼的数目为Np/M的整数位,即[Np/M],最后一个子群中单体混沌人工鱼的数目为Np-(M-1)·[Np/M],作为进程,被分配到对应的不同编号多核计算机中,通过MPI传输协议实时传递各处理机的有效数据。这样便可实现不同处理机同一时刻处理不同子任务,即外层并行计算。
在各处理机中,计算各单体混沌人工鱼的能量值,将最好的单体混沌人工鱼的状态及能量值记录在公告板上。
单体混沌人工鱼能量值的计算步骤归纳如下:①准备好水库库容特征曲线、下游水位流量关系曲线;②根据水库库容特征曲线,求出各时段如第t时段初库容值Vnt,其中第(t+1)时段的初库容值Vn(t+1)亦是第t时段的末库容值,之后可以根据式(6)水量平衡方程计算得出下泄流量Qnt。第t时段下游平均水位便可根据下游水位流量关系曲线将下泄流量Qnt代入计算得出;③第n条单体混沌人工鱼在第t时段对应的净水头可由以下公式计算得出,其中ΔH表示的是水头损失,见式(12)。④根据式(2)计算得出第n条单体混沌人工鱼Xn的能量值F(Xn)。
(5)初始化参数j,表示单体混沌人工鱼序号,其中j为正整数。对于第一号处理机中单体人工鱼的起始序号为j=1(j∈[1,[Np/M]]);第二号处理机中单体人工鱼的起始序号为j=[Np/M]+1(j∈[[Np/M]+1,2[Np/M]]);依次类推,直至第M号处理机中单体人工鱼的起始序号为j=(M-1)·[Np/M]+1(j∈[(M-1)·[Np/M]+1,Np])。
(6)对于每条混沌人工鱼的个体行为及其分量的混沌优化搜索都是相互独立的,因此混沌人工鱼子群进程中的可并行部分可以通过OpenMP随机分配到不同线程上计算,即可被较均匀地分配到处理机的多核中,实现至少有两个单体混沌人工鱼同一时刻进行个体行为及其分量的混沌优化搜索的内层并行计算,如图1、图2。
每条混沌人工鱼通过比较自身的能量值选择符合自身的个体行为,为寻优做准备。以混沌人工鱼群的平均能量值Fave作为基准,若单体混沌人工鱼Xj的能量值F(Xj)<Fave,则该鱼执行聚群行为;若F(Xj)>Fave,则该鱼执行追尾行为;若该鱼的聚群行为和追尾行为都不成功,则执行觅食行为。行为结束后,便得到该单体混沌人工鱼Xj的另一个新状态,表达式可记为Xjnext=(zj1next,zj2next,…,zjTnext)。
(7)对单体混沌人工鱼的新状态,可以通过Logistic映射产生混沌随机变量,进行混沌优化搜索。步骤如下:
①t∈[1,T],由第j条混沌人工鱼在第t时段的水位zjtnext,按式(13)可计算得到混沌映射的初始变量值,各时段计算是相互独立的,可由OpenMP组件分配到单机不同处理器计算,组成内层并行计算可行条件之一,如图1。
②将式(13)的计算结果s0,由式(1)计算出混沌随机变量sjt=4s0(1-s0)。之后由式(14)将sjt(区间为[0,1])转换为混沌随机变量s*jt(区间为[-1,1])。
③可将式(14)求得的混沌随机变量s*jt代入式(15),计算得出新的库水位z*jt。
其中step为搜索步长,取值范围通常为0.001~0.1,同时需要检查是否满足边界约束条件。
④计算混沌优化搜索后单体混沌人工鱼的能量值F(Xopt),若F(Xopt)>F(Xj),则可令zjt=z*jt。
(8)执行混沌优化搜索后的单体混沌人工鱼Xj的最终状态,若优于公告板状态则取代之,否则保持公告板的状态不变。
之后令j=j+1,如果前(M-1)个处理机中均满足j>[Np/M]且第M个处理机中满足j>Np-(M-1)·[Np/M]条件,转到步骤(9);若其中某个或多个处理机未达到此条件,则未达到此条件的处理机转向步骤(6),其他已达条件的处理机等待。
(9)寻优次数若达到最大迭代次数MaxNumber,则输出最优结果,否则转到步骤(5),开始新一轮的混沌人工鱼群并行寻优。
基于CAFSPA的水库发电优化调度程序流程,如图2,多核单机内子群的混沌优化搜索模块可参考图1。
3 实例计算与分析
为更好的比较CAFSPA相对于黄锋CAFSA在计算时间上的优越性,选取文献[12]中相同水库在某年的径流资料,以相同的目标函数和约束表达式作为基本条件。在该库的中长期发电优化调度中,比较分析了在标准动态规划算法(DP)、COA、AFSA、黄锋的CAFSA以及本文重点研究的CAFSPA等各算法下对应的发电量结果和计算时间。其中对于智能优化算法COA、AFSA、CAFSA、CAFSPA,为减小随机性对各算法结果产生的影响,可以进行仿真模拟计算150次,并将计算出的最优值作为实例的仿真结果。
从被选取的资料可知,该实验水库的正常蓄水位库容为2.41亿m3,有效库容为1.35亿m3,死库容为1.05亿m3。该水库的保证出力为0.233亿W,装机容量为2×0.61亿W,设计年发电量为5 010亿kWh,同时具有不完全年调节作用的性质。该水库的水头损失系数为0.000 086 81,最大水头损失为5.61m,出力系数为8.3。该水库的死水位为819m,正常蓄水位837m,其中6月-10月汛期水位为820m。
5种优化算法都基于visual studio 2010软件开发平台采用C++语言编程。其中针对CAFSPA,为了体现其并行处理问题的特点,硬件设备采用两台互联的双核计算机,参照上文的算法步骤,将混沌人工鱼群平分于两台计算机上进行计算,应用MPI组件处理两台计算机之间的数据传输,实现外层并行计算;并同时应用OpenMP组件控制单机中多线程促使双处理器的工作时间重叠,实现内层并行计算。其他算法没有进行并行设计,只需在单机上运行即可。
在CAFSPA中,设定整个算法的最大迭代次数MaxNumber=50,混沌人工鱼群的规模,Np=50,单体混沌人工鱼的视野范围Visual=5.0,拥挤度因子δ=0.618,移动步长step=1.0,搜索步长α=0.01,最大尝试次数TryNumber=5。为了便于数据的可靠性比较,COA、AFSA、CAFSA的最大迭代次数也定为MaxNumber=50(图3源自黄锋[12]的研究,由此可知3种智能算法迭代次数为35以上时,最优值基本趋于稳定状态),并且基本AFSA、CAFSA其他参数设定与CAFSPA一致。5种算法最优发电量和运算时间值,见表1。
由表1结果可知,CAFSA与CAFSPA的最优发电量的计算结果基本一致,因为CAFSPA是在CAFSA的基础上增加了双层并行计算处理,实现各子任务在计算时间上的重叠,数据运算方式是一致的,如图3。在运算时间上CAFSPA接近于CAFSA算法的1/4,因为两台双核计算机,通过双层并行计算,把混沌人工鱼群的计算平均分到4个处理器,在同一时刻进行工作,充分利用了闲置资源,实现各子任务处理时间的重叠。CAFSPA保持了CAFSA的寻优质量上的优势,与单一的COA和AFSA相比,最优发电量分别提升了1 102.67、1 939.65万kWh。CAFSA的计算时间比AFSA略多0.1s,是因为对单体人工鱼多了混沌优化搜索的计算时间,然而经过双层并行计算后,运算时间明显减少。CAFSPA的最优发电量比标准动态规划算法(DP)少了75.89万kWh,但缩小幅度仅为0.158%,计算时间却是DP的8%。可见,本文研究的CAFSPA在收敛速度、寻优质量以及运算时间等综合因素上与其他算法相比都占了很大的优势,尤其是在减少运算时间上优势更为突出。各算法的计算结果对比充分验证了CAFSPA应用于水库中长期发电优化调度中的可行性和高效性。
除DP外各智能算法150次仿真模拟计算的发电量与运算时间平均值如表2所示。
由表2中数据可知,CAFSPA与CAFSA的150次发电量平均值基本一致,而CAFSPA的平均运算时间接近CAFSA的1/4;这两种算法的150次发电量平均值都高于AFSA和COA;4种算法的150次发电量平均值比表1中对应的发电量最优值分别减少了0.88%、0.89%、3.91%、1.18%,其中CAF SPA的发电量平均值是表1中DP发电量最优值的98.96%。为进一步验证CAFSPA的稳定性,分别将CAFSPA、CAFSA、AFSA、COA的150次仿真模拟计算结果存储在计算机中,对各算法对应发电量进行方差分析,经计算,对应的各方差比值是0.582 633 4∶0.595 950 6∶10.591 044 4∶1。从中可以发现CAFSPA与CAFSA的150次发电量求解稳定性基本一致,比COA的稳定性略强,但都比AFSA的稳定性强许多。由此可见在算法稳定性上CAFSPA与CAFSA的优越所在。
通过以上分析可以得出结论如下3点:①CAFSPA继承了CAFSA,充分结合了AFSA操作简单的特点以及COA的全局搜索能力,提高了该水库发电量寻优计算的稳定性、搜索精度以及结果质量,达到了预期效果;②CAFSPA与CAFSA一致,充分融合了COA遍历性特点,提高了计算后期的搜索效率,有效解决了AFSA后期搜索的盲目性以及计算的停滞,避免AF-SA陷入求得局部最优值的困境;③CAFSPA充分利用AFSA中单体人工鱼寻优并行化的特点,将人工鱼群分成多个子群,并均分到不同的处理单元进行并行计算,以及个体人工鱼行为分量混沌优化搜索的并行化处理,充分利用闲置资源,实现子群计算时间的重叠,相对较大幅度减少了运行时间。
4 结语