改进求解约束满足问题粗粒度弧相容算法
自适应约束优化混合粒子群算法

自适应约束优化混合粒子群算法龚国斌【摘要】A hybrid Particle Swarm Optimization algorithm is proposed for solving constrained optimization problems. The primary features of the algorithm proposed are as follows. As for search mechanism, chaotic initialization is introduced to improve the quality of initial population. The Cauchy mutation operator is introduced which can expand the search range. The simplex cross-over operator is used to enrich the exploratory and exploitative abilities of the algorithm proposed. As for constraint-handling technique, a new individual comparison criterion is proposed, which can adaptively select different individual comparison crite-ria according to the proportion of feasible solution in current population. The proposed algorithm is tested on several well-known benchmark problems, and the results show that it is effective.% 提出一种混合粒子群优化算法用于求解约束优化问题。
非线性优化与约束优化问题的求解方法

非线性优化与约束优化问题的求解方法非线性优化问题是在目标函数和约束条件中包含非线性项的优化问题。
约束优化问题是在目标函数中加入了一些约束条件的优化问题。
解决这些问题在实际应用中具有重要意义,因此研究非线性优化和约束优化问题的求解方法具有重要的理论和实际意义。
一、非线性优化问题的求解方法非线性优化问题的求解方法有很多,下面介绍几种常见的方法:1. 黄金分割法:黄金分割法是一种简单但有效的搜索方法,它通过不断缩小搜索范围来逼近最优解。
该方法适用于目标函数单峰且连续的情况。
2. 牛顿法:牛顿法利用目标函数的一阶和二阶导数信息来逼近最优解。
该方法收敛速度较快,但在计算高阶导数或者初始点选取不当时可能产生不稳定的结果。
3. 拟牛顿法:拟牛顿法是对牛顿法的改进,它通过逼近目标函数的Hessian矩阵来加快收敛速度。
拟牛顿法可以通过不同的更新策略来选择Broyden-Fletcher-Goldfarb-Shanno(BFGS)方法或者DFP方法。
4. 全局优化方法:全局优化方法适用于非凸优化问题,它通过遍历搜索空间来寻找全局最优解。
全局优化方法包括遗传算法、粒子群优化等。
二、约束优化问题的求解方法约束优化问题的求解方法也有很多,下面介绍几种常见的方法:1. 等式约束问题的拉格朗日乘子法:等式约束问题可以通过引入拉格朗日乘子来转化为无约束优化问题。
通过求解无约束优化问题的驻点,求得原始约束优化问题的解。
2. 不等式约束问题的罚函数法:不等式约束问题可以通过引入罚函数来转化为无约束优化问题。
罚函数法通过将违反约束条件的点处添加罚项,将约束优化问题转化为无约束问题。
3. 逐次二次规划法:逐次二次规划法是一种常用的求解约束优化问题的方法。
该方法通过依次处理逐个约束来逼近最优解,每次处理都会得到一个更小的问题,直至满足所有约束条件。
4. 内点法:内点法是一种有效的求解约束优化问题的方法。
该方法通过向可行域内部逼近,在整个迭代过程中都保持在可行域内部,从而避免了外点法需要不断向可行域逼近的过程。
求解约束优化问题的几种智能算法

求解约束优化问题的几种智能算法求解约束优化问题是现代优化领域中的一个重要研究方向。
约束优化问题存在多个约束条件的约束,如不等式约束和等式约束。
在实际应用中,约束优化问题广泛存在于工程、经济、生物、物理等领域,如最优化生产问题、投资组合优化问题和机器学习中的优化问题等。
对于约束优化问题的求解,传统的数学优化方法往往面临着维数高、非线性强等困难。
因此,智能算法成为了求解约束优化问题的重要手段之一。
智能算法是通过模仿生物进化、神经系统或社会行为等自然现象来解决问题的一类方法。
常见的智能算法包括遗传算法、粒子群优化算法、模拟退火算法等。
这些算法通过自适应搜索的方式,能够在解空间中寻找全局最优解或接近最优解的解。
下面将介绍几种常见的智能算法在求解约束优化问题中的应用。
首先是遗传算法。
遗传算法是基于生物演化理论的一种优化算法。
它通过模拟自然遗传的过程,包括选择、交叉和变异等操作,来搜索解空间中的最优解。
在求解约束优化问题中,遗传算法通过将问题的解表示为染色体编码,并利用适应度函数评估每个个体的适应度,然后根据选择、交叉和变异等操作,在搜索空间中寻找最优解。
遗传算法能够有效克服问题的维数高、非线性强等困难,适用于求解复杂的约束优化问题。
其次是粒子群优化算法。
粒子群优化算法是基于鸟群觅食行为的一种优化算法。
它通过模拟多个粒子在解空间中搜索目标的过程,来寻找最优解。
在求解约束优化问题中,粒子群优化算法通过将问题的解表示为粒子的位置,并利用适应度函数评估每个粒子的适应度,然后根据粒子的速度和位置更新规则,在搜索空间中寻找最优解。
粒子群优化算法具有收敛速度快、易于实现等优点,适用于求解中等规模的约束优化问题。
再次是模拟退火算法。
模拟退火算法是基于固体退火原理的一种全局优化算法。
它通过模拟固体退火时渐冷过程中原子的运动来进行优化。
在求解约束优化问题中,模拟退火算法通过随机选择初始解,并利用目标函数评估解的质量,然后接受较差的解以避免陷入局部最优,并逐渐降低温度以使搜索逐渐趋向全局最优解。
求解约束优化问题的改进灰狼优化算法

求解约束优化问题的改进灰狼优化算法作者:龙文等来源:《计算机应用》2015年第09期摘要:针对基本灰狼优化(GWO)算法存在求解精度低、收敛速度慢、局部搜索能力差的问题,提出一种改进灰狼优化(IGWO)算法用于求解约束优化问题。
该算法采用非固定多段映射罚函数法处理约束条件,将原约束优化问题转化为无约束优化问题,然后利用IGWO算法对转换后的无约束优化问题进行求解。
在IGWO算法中,引入佳点集理论生成初始种群,为算法全局搜索奠定基础;为了提高局部搜索能力和加快收敛,对当前最优灰狼个体执行Powell 局部搜索。
采用几个标准约束优化测试问题进行仿真实验,结果表明该算法不仅克服了基本GWO的缺点,而且性能优于差分进化和粒子群优化算法。
关键词:灰狼优化算法;约束优化;非固定多段映射罚函数法;佳点集0 引言在科学研究、工程应用、经济、管理等领域中的许多问题可转化为求解一个非线性约束优化问题。
不失一般性,一个含有等式约束、不等式约束和界约束的非线性约束优化问题可描述为:min f(x)s.t. gj(x)≤0; j=1,2,…,phj(x)=0; j=p+1,p+2,…,mli≤xi≤ui; i=1,2,…,d(1)其中: f(x)为目标函数,gj(x)为不等式约束条件,hj(x)为等式约束条件,li和ui 分别为变量xi的上界和下界。
群体智能优化算法源于对自然界中生物群体行为机制的模拟,近年来得到了快速的发展。
由于不需要优化问题的目标函数或约束连续、可微等条件,因此,群智能优化算法具有较好的适用性,成为国际上优化领域的研究热点之一[1-2]。
灰狼优化(Grey Wolf Optimization,GWO)算法是Mirialili等[3]于2014年提出的一种新型群体智能优化算法,它源于对灰狼群体捕食行为的模拟,通过狼群跟踪、包围、追捕、攻击猎物等过程实现优化的目的。
GWO算法具有原理简单、需调整的参数少、易于实现、全局搜索能力强等特点,在函数优化方面,已被证明在收敛速度和求解精度上均优于粒子群优化算法[3]。
约束最优化方法

约束最优化方法
约束最优化方法是指通过给定约束条件,寻找目标函数的最优解。
以下是一些常用的约束最优化方法:
1. 拉格朗日乘子法:将约束最优化问题转化为无约束最优化问题,通过求解无约束最优化问题得到原问题的最优解。
2. 罚函数法:将约束条件转化为罚函数项,通过不断增加罚函数的权重,使目标函数逐渐逼近最优解。
3. 梯度下降法:通过迭代计算目标函数的梯度,沿着梯度的负方向搜索目标函数的最优解。
4. 牛顿法:通过迭代计算目标函数的Hessian矩阵,使用Hessian矩阵的逆矩阵乘以梯度向量来逼近最优解。
5. 遗传算法:模拟自然界的遗传机制,通过种群迭代的方式搜索最优解。
6. 模拟退火算法:模拟物理退火过程,通过随机搜索的方式搜索最优解。
7. 蚁群算法:模拟蚂蚁觅食行为,通过模拟蚂蚁的信息素传递过程来搜索最优解。
8. 粒子群算法:模拟鸟群、鱼群等群集行为,通过模拟粒子间的相互作用来搜索最优解。
这些方法各有优缺点,应根据具体问题选择合适的方法进行求解。
求解约束优化问题的改进灰狼优化算法

A b s t r a c t :T h e s t a n d a r d G r e y Wo l f O p t i mi z a t i o n( G WO )a l g o r i t h m h a s a f e w d i s a d v a n t a g e s o f l o w s o l v i n g p r e c i s i o n ,s l o w
龙 文 , 赵 东泉 , 徐松金。
( 1 . 贵州省经济系统仿真重点实验室( 贵州财经大学) , 贵阳5 5 0 0 0 4 ; 2 . 枣庄科技职业学院 机械工程系, 山东 滕州 2 7 7 5 0 0 ; 3 . 铜仁学院 数学科学学院, 贵州 铜仁 5 5 4 3 0 0 ) ( 通信作者电子邮箱 1 w 7 7 0 4 5 7 @1 6 3 . c o n) r
c o n v e r g e n c e ,a n d b a d l o c a l s e a r c h i n g a b i l i t y .I n o r d e r t o o v e r c o me t h e s e d i s a d v a n t a g e s o f G WO ,a n I m p r o v e d G WO ( I G WO )
优于差分进化和粒子群优化算法。 关键词 : 灰狼 优 化 算 法 ; 约束优化 ; 非 固定 多段 映 射 罚 函数 法 ; 佳 点集
中图分类号 : T P 3 0 1 . 6
文献标志码 : A
I mp r o v e d g r e y wo l f o pt i mi z a t i o n a l g o r i t h m f o r c o n s t r a i n e d o p t i mi z a t i o n pr o b l e m
m5-cspII

2013-7-5
人工智能AI - 约束可满足性
3
弧相容
最简形式的传播保证每个弧相容consistent X Y 相容 当且仅当
对于X的每个值x,存在某个允许值y
如果X 失去某值, X 的邻居需要重新检查
人工智能AI - 约束可满足性 4
2013-7-5
弧相容
在弧相容与n相容之间有很多中间层! (如路径相容)
人工智能AI - 约束可满足性 9
2013-7-5
顺序:最小可取余值
最小可取余值Minimum Remain Value:
选择具有最小合法取值的变量
最大受限变量Most constrained variable: 为什么取最小,而不是最大呢? “快速”失效的排序- 约束可满足性 2013-7-5 人工智能AI
取值使得冲突的约束最少 即, 对h(n) = 不满足约束的总数爬山
人工智能AI - 约束可满足性 18
2013态: 4 皇后 4 列 (44 = 256 states) 行为: 移动某列的皇后 目标测试: 无攻击 评估: h(n) = 攻击个数
给定随机初始状态, 对任意n,有很高的概率在几乎常时间下求 解n = 10,000,000) 2013-7-5 -皇后问题 (如, n 人工智能AI - 约束可满足性 19
人工智能AI - 约束可满足性 14
2013-7-5
树结构CSP
为何可行? 说明: 在左边的每个结点都处理后, 右边的所有结点 都可以被设定成与其父结点相容. 证明: 对位置归纳
此算法对有圈图为什么不适用? 注: 我们将在Bayes网中再次看到此思想
约束优化问题的修正选择粒子群优化算法

u emo iid fa i it - a e u et p a et eidvd a x r m u a d go a x r m u t u d h n s df e sbl y b s d r l o u d t h i iu l te m n lb l te m og iet ei— e i n e e dvd a a tcef ot efa il e in a o na o sb e iiu l ril l t h e sb erg o ss o sp si l.Ta n t o sd r to h fu n e0 l一 p y kig i oc n iea in t ei le c f 0 n n
优化、 车间调 度等 问题 , 但这 些 大多是 无约束 优化 问
题改 进 的粒 子群 优 化算 】本
罚 函数 方法 是求解 约束 ( 极小 ) 优化 问题 的一类 较好 的算 法. 其基 本思 想是 : 根据 约束 的特点构 造某
种惩 罚 函数 , 并把 惩罚 函数 加到 目标 函数 上去 , 从而
法 求解 非线性 约束 优 化 问题 . 先 使 用 动态 多 阶段 首 罚 函数 法将 约束优 化 问 题转 化 为 无 约束 优 化 问 题 , 并 放 宽选 择机 制 , 违 反 约 束 度在 容 忍 度 以 内把 不 将 可行个 体 和可行个 体 同等对 待 , 出一 种线 性 递 减 给 违反 约束 的修正可行 基选 择策 略来 引导粒 子 的个 体 极值 和全局 极值 , 在进 化 的过 程 中尽 可 能 到达 可 行 的 区域 , 以增 加种群 的多样性 和提高 全局 搜索能 力 ; 然后 考虑 到粒子群 中每 个粒子 周 围的局部 信息 对它 未来 飞行 的影响 , 对基 本 粒 子 群优 化 的速 度方 程 进 行修 正. 算 法 与 算 法 HM 、 CHE S 该 AS A、 AVP 0 S
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件学报ISSN 1000-9825, CODEN RUXUEW E-mail: jos@Journal of Software,2012,23(7):1816−1823 [doi: 10.3724/SP.J.1001.2012.04129] +86-10-62562563 ©中国科学院软件研究所版权所有. Tel/Fax:∗改进求解约束满足问题粗粒度弧相容算法李宏博1,2, 李占山1,2+, 王涛31(吉林大学计算机科学与技术学院,吉林长春 130012)2(吉林大学符号计算与知识工程教育部重点实验室,吉林长春 130012)3(长春工业大学计算机科学与工程学院,吉林长春 130012)Improving Coarse-Grained Arc Consistency Algorithms in Solving Constraint SatisfactionProblemsLI Hong-Bo1,2, LI Zhan-Shan1,2+, WANG Tao31(College of Computer Science and Technology, Jilin University, Changchun 130012, China)2(Key Laboratory of Symbolic Computation and Knowledge Engineering of Ministry of Education, Jilin University, Changchun 130012,China)3(School of Computer Science and Engineering, Changchun University of Technology, Changchun 130012, China)+ Corresponding author: E-mail: zslizsli@Li HB, Li ZS, Wang T. Improving coarse-grained arc consistency algorithms in solving constraint satisfactionproblems. Journal of Software, 2012,23(7):1816−1823 (in Chinese). /1000-9825/ 4129.htmAbstract: Constraint satisfaction problems have been widely investigated in artificial intelligence area. This paperinvestigates whether the coarse-grained maintaining arc is consistent, which is used to solve CSPs. The study hasfound that during the search for a solution, there are ineffective revisions, which revise the arcs that point toassigned variables. This study has proved that such revisions are redundant and proposed a method to avoid suchredundant revisions. The paper gives the improved basic frame for the coarse-grained arc consistency algorithms,named AC3_frame_ARR. The new frame can be applied to improve all the coarse-grained AC algorithms. Theexperimental results show that the improved algorithms can save at most 80% revisions and 40% CPU time.Key words: constraint satisfaction problem; maintaining arc consistency; coarse-grained algorithm; revision摘要: 约束满足问题在人工智能领域有着广泛的应用.研究了约束满足问题的粗粒度维持弧相容求解算法,发现在求解过程中,对于指向已赋值变量的弧存在无效的修正检查,证明了这类修正检查是冗余的.提出一种方法避免这类冗余的修正检查,给出改进后的粗粒度弧相容算法的基本框架AC3_frame_ARR,该改进框架可用于改进所有粗粒度弧相容算法.实验结果表明,经过AC3_frame_ARR改进后的算法最多可以节省80%的修正检查次数和40%的求解耗时.关键词: 约束满足问题;维持弧相容;粗粒度算法;修正检查中图法分类号: TP18文献标识码: A∗基金项目: 国家自然科学基金(60773097, 60873148, 60973089); 吉林省自然科学基金(201101039, 20071106, 20080107); 国家教育部博士点专项基金(20100061110031)收稿时间:2011-06-29; 定稿时间: 2011-10-08李宏博等:改进求解约束满足问题粗粒度弧相容算法1817约束满足问题(constraint satisfaction problem,简称CSP)[1]在人工智能领域有着广泛的应用,许多实际问题可以应用约束满足问题建模,如配置问题、调度问题等.约束满足问题可以分为二元约束满足问题和多元约束满足问题,其中,多元约束满足问题可以转化为等价的二元约束满足问题,因此,二元约束满足问题一直是该领域研究的热点.寻找一个约束满足问题的解是NP-难问题[1].尽管如此,目前仍存在很多优秀的CSP求解算法.在众多求解算法中,基于回溯思想的BT算法[2]是一种完备的核心算法.但基本的BT算法效率较低,为了提高BT 算法的求解效率,通常要在BT搜索过程中嵌入约束传播技术[3].约束传播技术主要利用约束与变量之间的制约关系,删除那些一定不在解中的变量值,缩小搜索空间.约束传播技术分为很多种,如弧相容(arc consistency,简称AC)[4,5]、singleton弧相容(简称SAC)[6,7]、路径相容(path consistency,简称PC)[3]、k-相容[8]等等.在已有的约束传播技术中,弧相容(AC)在求解中应用得最为成功,目前已有很多优秀的弧相容算法,如AC3[4],AC4[5],AC6[9], AC3.1[10],AC3rm[11]等.弧相容算法根据其约束传播类型分为粗粒度算法和细粒度算法[10]两类,其中,粗粒度算法是在弧上进行约束传播,而细粒度算法是在变量值之间进行约束传播.在BT算法中,通过AC算法进行约束传播的约束求解算法称为维持弧相容算法(maintaining arc consistency,简称MAC)[12].MAC算法是目前求解难解的约束满足问题应用最广泛的算法.MAC算法的效率主要受两个因素影响:一是所采用的AC算法本身的效率,另一个是在求解过程中需要维持的数据结构的复杂程度.细粒度算法虽然在执行单独的弧相容过程中效率优于粗粒度算法,但其本身使用精细的数据结构,使得在求解中维持这些数据结构消耗了更多的时间.因此在求解中,粗粒度算法的应用更加广泛.AC3是1977年由Mackworth提出的经典的粗粒度算法[4],它给出了粗粒度算法的框架,即粗粒度算法主要由基本框架和修正检查两部分构成.AC3的最坏时间复杂度为O(ed3).为了优化时间复杂度以及减少弧相容过程中执行的约束检查次数,在AC3提出后的很长一段时间内,国内外学者们将研究重点放在了细粒度算法中,因为细粒度算法,如AC4,AC6,AC7[13]等具有最坏时间复杂度O(ed2),尤其是AC7通过引入约束的双向支持的特性,大幅度减少了约束检查的次数.但是由于其本身的数据结构较为复杂,因此在求解中的应用不是很广泛.2001年,Bessiere提出了AC3.1,它是AC3的优化版本,通过记录值在弧上最后的一个支持改进了AC3算法的修正检查过程,具有最坏时间复杂度O(ed2).其数据结构比细粒度算法简单,因此求解效率高于细粒度算法.至此,人们又将研究重点转移到粗粒度算法上.在AC3.1的基础上,Lecoutre于2003年将约束双向支持的特性引入到粗粒度算法中,提出了AC3.2[14]和AC3.3[14],改进了AC3.1的revise过程,AC3.2和AC3.3比AC3.1执行更少的约束检查,但最坏时间复杂度未得到改进.2007年,Lecoutre又提出了AC3rm,利用约束的双向支持特性实现了残留支持的思想.AC3rm虽然最坏时间复杂度为O(ed3),但其实际求解效率优于之前的其他算法,并且执行的约束检查次数也较少.这些具有代表性的AC3的改进算法都只是改进了算法的修正检查过程,并没有改进算法的基本框架.执行一次修正检查的最坏时间复杂度是O(d2).因此,减少修正检查的次数可以提高AC算法的效率.2005年,Mehta和Dongen提出了一种修正检查条件(revision condition,简称RC)[15],可以减少求解初期阶段无效的修正检查.除此以外,Wallace[16]和Dongen[17]的工作在从待传播队列中选择下一条执行修正检查的弧时,使用了一些启发式规则,对更有可能导致失败的弧优先执行修正检查.以上两种方法都对粗粒度算法的基本框架进行了改进.本文分析了粗粒度求解算法的执行过程,发现其中对于指向已赋值的变量的弧存在无效的修正检查.证明了这类修正检查是冗余的.这种冗余的修正检查在弧相容预处理过程中很少出现,而在求解过程中出现得较为频繁.我们提出一种方法avoid_redundant_revisions(ARR),避免了这类冗余的修正检查,给出改进后的粗粒度算法的基本框架AC3_frame_ARR,这一修正框架可以用于改进目前所有的粗粒度MAC算法.除此以外,ARR和修正检查条件(RC)不同,避免的不是同一类型的修正检查,因此,ARR可以和RC结合使用.最后,我们将这一方法应用到目前国际上流行的粗粒度求解算法MAC3rm中,实验结果显示,经过ARR单独改进后的算法最多可节省80%的修正检查次数,最高可提高40%的求解效率.ARR和RC结合使用,可以更好地改进MAC3rm.1 背景知识定义1(约束满足问题constraint satisfaction problem(CSP)). 一个约束满足问题P由3部分组成:P=〈X,D,1818 Journal of Software 软件学报 V ol.23, No.7, July 2012C 〉.其中,X ={x 1,x 2,…,x n }是一个有限的变量集合;D ={D 1,D 2,…,D n },其中,D i ∈D 对应x i ∈X ,是变量x i 的有限值域; C ={c 1,c 2,…,c k }是一个有限约束集合,其中,任意c j ∈C 表示变量取值之间的制约关系.如果C 中所有约束包含的变量个数都小于等于2,称P 为二元约束满足问题.本文主要讨论二元约束满足问题.一个约束满足问题的解是为每个变量在其值域中选择一个值构成集合S ,使得S 中的所有变量取值满足C 中所有约束.我们用P 表示一个约束满足问题,S 表示P 的一个解,P .X 表示P 的变量集,P .C 表示P 的约束集,X (c )表示c 中包含所有变量的集合,(x ,a )表示x 的取值为a .在二元约束满足问题中,如果存在一条约束c xy ,则(x ,c xy )称为一条弧,表示的是约束c xy 对x 取值的制约.一条弧由3部分构成,其中,x 为这条弧指向的变量,y 是这条弧出发的变量,c xy 是x 和y 之间的约束.弧的描述(x ,c xy )只体现了x 和c xy ,,y 可以由这二者隐含指定.在二元CSP 中,一条约束对应两条弧.性质1(约束的双向支持性[13]). 给定一条约束c xy ,如果(x ,a ),(y ,b )满足c xy ,则(y ,b )是(x ,a )在弧(x ,c xy )上的一个支持,(x ,a )也是(y ,b )在弧(y ,c xy )上的一个支持.定义2(弧相容,arc consistency (AC ))[4]. 给定一个二元约束满足问题P ,对于P 中的某一条弧(x ,c xy ),如果x 值域中的每一个值a 都能在y 的值域中找到一个值b ,使得(a ,b )满足c xy ,那么称弧(x ,c xy )是弧相容的.一个CSP 是弧相容的,当且仅当它的每一条弧都是弧相容的.对于问题P ,在进行弧相容检查时,要将那些在相邻弧上找不到支持的值删除.如果检查过程中发现某一变量的值域中的值被全部删除,则此问题P 无解,返回弧相容检查失败.维持弧相容(maintaining arc consistency,简称MAC)算法[12]是一种高效的求解CSP 问题的回溯搜索算法. MAC 算法是在BT 算法框架下嵌入AC 算法,在搜索过程中维持弧相容的状态,每次变量赋值后利用AC 算法进行约束传播,如果得到一个弧相容的状态,则赋值成功;否则,赋值失败,选择下一个赋值或者发生回溯.目前流行的MAC 算法是由Lecoutre 于2007年提出的MAC3rm 算法,MAC3rm 是一种粗粒度算法,由于篇幅有限,这里不介绍MAC3rm 的算法描述,有兴趣的读者可以参考文献[11].除了在求解过程中利用AC 算法进行约束传播外,在求解前还要通过AC 算法执行预处理.AC3给出了粗粒度算法的经典框架[4],这一框架一直沿用至今.图1所示为粗粒度算法的基本框架,常见的粗粒度算法,如AC3,AC3.1,AC3.3,AC3rm 等都是基于这一框架的.其中,Q 是待传播队列,保存所有需要执行修正检查的弧;initialize Q 是初始化待传播队列,如果AC 算法用于求解前预处理阶段,则要将问题中所有的弧加入Q 来实现initialize Q .在弧相容检查过程中,如果有变量的值域改变,则将从这个变量发出的所有弧加入Q ,对这些弧重新执行修正检查.如果检查过程中发现某一个变量值域为空,则返回弧相容,检查失败;否则,当Q 为空时,弧相容检查成功.图2中的revise 函数是粗粒度算法的修正检查过程,其中,D x 是x 的有限值域,Revise (x ,c )是为x 值域中所有未被删除的值寻找在这条弧上的支持.下面提到的AC 算法都是指粗粒度弧相容算法.Fig.1 Basic frame for coarse-grained AC algorithms Fig.2 Revision for coarse-grained AC algorithms图1 粗粒度AC 算法基本框架 图2 粗粒度AC 算法的修正检查2 冗余检查在MAC 算法求解开始之前,要通过AC 算法执行一次弧相容预处理.如果预处理失败,则问题无解;否则,开 AC3_framebegin initialize Q ; while Q is not empty doselect and remove the arc (x i ,c ) from Q ; if Revise (x i ,c ) thenif D i =∅ then return fail; else for each c ′ such that x i ,x j ∈X (c ′) if c ′≠c thenQ ←Q ∪(x j ,c ′); return success; end procedure Revise (x ,c ) begin change ←false; for each v ∈D x do If v has no support on c then remove v from D x ; change ←true; return change; end李宏博 等:改进求解约束满足问题粗粒度弧相容算法 1819始回溯搜索.因此在开始回溯搜索之前,问题是一个弧相容的状态.而每次赋值后,都要通过AC 算法执行约束传播,如果AC 算法执行成功,则进行下一次赋值;否则,发生回溯.可见,在MAC 算法搜索过程中,每次赋值之前,问题一定是弧相容的状态.为变量x 赋值a ,相当于将x 值域中除a 以外的其他值全部删除.因此每次赋值后,只有当前赋值变量的值域发生了改变.所以,为变量x 赋值后,只需用从x 发出的所有弧来初始化待传播队列Q ,然后执行AC 算法进行约束传播.图3和图4中,椭圆表示对应变量的初始值域,值之间的连线表示这两个值满足这条约束.在求解前,弧相容预处理的结果如图3所示.假设求解过程中我们首先将x 赋值为1,要将(y ,c xy )加入Q 后执行AC 算法,执行revise (y ,c xy )后,y 的值域没有改变,因此没有将其他弧加入Q .此时,Q 为空,没有变量值域为空,AC 算法停止,(x ,1)赋值成功.下一步赋值(z ,1),赋值后将(y ,c yz )加入Q 后执行AC 算法,执行revise (y ,c yz )后,D y 中的3被删除,值域改变,因此将从y 发出且约束不是c yz 的所有弧加入Q .此时Q 中包含(x ,c xy ),各变量值域和值之间的支持如图4所示.下次执行revise (x ,c xy )时,就是一次无效的修正检查.这是由于在为x 赋值1后,执行弧相容算法成功,(x ,1)是y 值域中所有未被删除的值在(y ,c xy )上的支持.由于约束的双向支持性,y 值域中所有未删除的值也一定都是(x ,1)在(x ,c xy )上的支持.因此,只要y 的值域不空,(x ,1)在弧(x ,c xy )上就一定存在支持,弧相容算法只要确定值(x ,1)在弧(x ,c xy )上存在支持即可,不必知道到底是哪个值支持.所以,revise (x ,c xy )就是无效的修正检查.但这种情况只适用于x 的值域大小为1的情况,如果x 的值域大小大于2,则当y 的值域发生改变时,无法确认刚被删除的值是x 值域中哪个值的支持,因此需要执行revise (x ,c xy ),重新为x 值域中所有值寻找支持.Fig.3 Domains after AC pre-processing Fig.4 Domains after x and z have been assigned图3 弧相容预处理后的值域 图4 x ,z 赋值成功后的值域定理1. 在粗粒度MAC 算法求解过程中,对指向一个已赋值变量的弧执行的修正检查是冗余的.证明:在粗粒度AC 算法执行过程中,对一条弧执行修正检查的前提是这条弧在待传播队列中,而将一条弧加入到待传播队列的前提条件是这条弧的出发变量的值域发生了改变.在求解过程中,每次为变量x 赋值后要将从x 出发的所有弧加入到待传播队列.在将这些从x 出发的弧执行完修正检查后,如果没有变量值域为空,则说明x 的当前赋值是那些从x 发出的弧指向变量的值域中剩余所有值在对应弧上的支持.由于约束具有双向支持性,因此,所有指向x 的弧的出发变量值域中剩余的所有值也都是x 的当前赋值在对应弧上的支持.因此,当指向已赋值变量x 的弧的出发变量值域发生改变时,如果出发变量值域不为空,则x 的当前赋值一定在对应弧上存在支持;如果出发变量值域为空,则直接返回弧相容失败,因此无需对指向已赋值变量x 的弧执行修正检查. □根据定理1,我们应该避免对那些指向已赋值变量的弧执行修正检查.对弧执行修正检查的前提条件是这条弧要被加入到待传播队列Q 中,因此,在将弧加入到待传播队列Q 中之前,先判断这条弧指向的变量是否已赋值:如果已赋值,则不加入Q ;否则,加入Q .这样,就可以避免这类冗余的修正检查.我们称这一方法为avoid_ redundant_revisions,简称ARR.图5给出了改进后的粗粒度算法框架.2 13 213 213121 11820 Journal of Software软件学报 V ol.23, No.7, July 2012 AC3_frame_ARRbeginQ←{(x i,c)|c∈C,x i∈X(c)};while Q is not empty doselect and remove the arc(x i,c) from Q;if Revise(x i,c) thenif D i=∅then return fail;else for each c′ such that x i,x j∈X(c′)if x j has not been assigned and c′≠c thenQ←Q∪(x j,c′);return success;endFig.5 Improved basic frame for coarse-grained AC algorithms图5 改进的粗粒度AC算法基本框架3 相关工作讨论2005年的IJCAI会议上,Mehta和Dongen提出了修正检查条件revision condition(RC),通过减少修正检查次数改进了粗粒度算法的基本框架.本文提出的ARR和RC方法类似,都可以避免那些无效的修正检查,但二者避免的是两种不同类型的修正检查.RC方法通过为x的值域中所有值记录其在(x,c xy)上的支持个数,进而得到D x中所有值在(x,c xy)上最少的支持个数Min-Support-Count.当需要将弧(x,c xy)加入到待传播队列中时,如果当前y值域中被删除的值Current-Delete-Count小于Min-Support-Count,则说明当前x值域中所有的值都可以在y 的值域中找到至少一个支持.因此,这条弧(x,c xy)当前无需执行修正检查,不加入到待传播队列.只有那些Min- Support-Count小于等于Current-Delete-Count的弧才需要执行修正检查,被加入到待传播队列.RC方法通过这一判断减少了粗粒度算法在执行过程中的revise调用次数,但RC方法的缺点在于,初始时需要计算每条弧上的最小支持个数,在问题容易解决的情况下,可能计算每条弧最小支持的耗时就已经超过求解耗时.RC在回溯搜索过程刚开始时效果较明显,因为这一阶段已赋值变量较少,其他未赋值变量的值域中被删除的值也较少,因此不满足修正检查条件的弧较多,可以避免无效的修正检查.ARR是在已赋值变量较多的情况下更有效,因为我们避免的就是对已赋值变量执行修正检查.ARR在求解过程中的应用效果比在弧相容预处理过程中要明显,因为在执行弧相容预处理过程中,变量值域大小为1的情况很少,而在求解过程中,通过变量赋值导致的变量值域大小为1的情况较多,可以明显减少冗余的修正检查次数.ARR和RC都是改进粗粒度算法的框架,可以应用于所有的粗粒度算法,并且二者可以结合使用.除此以外,我们于2011年提出的一种基于环切割的方法Cycle_Cut_Search(简称CCS)[18]改进了MAC3rm 算法,将MAC3rm的回溯搜索过程分为两个阶段,其中,第1阶段是通过MAC3rm为环切割集中变量赋值,第2阶段通过无回溯树搜索算法为剩余变量赋值.可见,CCS的第1阶段也是粗粒度MAC算法,因此,ARR同样可以用于改进CCS的第1阶段.4 实验结果为测试ARR方法对粗粒度算法效率的改进,我们共采用4种不同的算法进行测试.基础算法采用目前国际上流行的粗粒度算法Mac3rm;Mac3rm_RC是在Mac3rm的基础上增加了RC技术的改进算法;Mac3rm_ARR 是用ARR改进MAC3rm,也就是用AC3_frame_ARR框架改进Mac3rm基础框架后的新算法;Mac3rm_ARR_RC 是将RC和ARR结合使用改进MAC3rm后得到的新算法.测试用例采用随机问题和标准库测试用例benchmark,测试的数据指标为CPU耗时和修正检查次数.由于变量赋值顺序的启发式规则对MAC算法的求解效率影响很大,我们采用目前最流行的Dom/Wdeg启发式规则[19].测试环境为Intel Core2 Duo CPU E7400 2.8GHz/1G RAM,JDK 1.6.4.1 随机问题测试我们选择二元随机约束满足问题经典模型Model B[20]进行测试.Model B问题模型由4个参数控制:〈n,m,p1,李宏博 等:改进求解约束满足问题粗粒度弧相容算法 1821p 2〉,其中,n 是问题中的变量个数;m 是每个变量的值域大小,其中每个变量的值域大小都是相同的;p 1表示约束密度,即在所有变量之间随机选择p 1×n ×(n −1)/2条约束;p 2表示约束松紧度,对于每条约束,随机选择p 2×m ×m 个值对作为满足这条约束的值对.我们选取n =30,m =30,p 1=0.5的问题进行测试,p 2从0.1~0.9,每组连续测试50次求平均值,其中,p 2从0.1~0.54和p 2从0.66~0.9的随机问题都是容易解的问题,我们没有给出这两个区间的测试结果,图6和图7给出了难解问题,即p 2在0.55~0.65区间内耗时和修正检查次数的比较情况.Fig.6 Time results on random instances 图6 随机问题耗时结果Fig.7 Revision results on random instances图7 随机问题修正检查结果在图6和图7的每组问题结果中,从左到右4个矩形依次代表Mac3rm,Mac3rm_ARR,Mac3rm_RC,Mac3rm_ ARR_RC 的测试结果.数据显示,Mac3rm_ARR 和Mac3rm_ARR_RC 对Mac3rm 的改进效果较为明显,而Mac3rm_RC 几乎对Mac3rm 没有改进.Mac3rm_ARR 大约提高10%的求解效率,节省大约20%的修正检查.我们的原始数据显示,Mac3rm_ARR 减少的修正检查和Mac3rm_RC 减少的修正检查次数之和,恰好接近于Mac3rm_ARR_ RC 减少的修正检查次数,这也验证了之前提到的,二者避免的是不同类型的修正检查.4.2 Benchmark 测试Benchmark 是目前国际通用的测试CSP 求解器效率的标准库测试用例,本文选取的测试用例源文件全部来自2005年国际CP 程序竞赛(http://cpai.ucc.ie/05/Benchmarks.html).我们在其中选取两组较难解的问题进行测试.表1给出了frb 问题[21]的测试结果.2005年CP 竞赛提供的frb 测试用例每组问题中包含5个子问题,每组子问题的规模相同,难度接近.因此,表1给出的是每组问题的平均测试结果.鸽巢问题是一组实际应用问题,鸽巢问题中两个子问题相差一个变量可能导致耗时相差10倍以上.为避免规模较大问题对规模较小问题的测试结果产生影响,我们在表2中分别给出了5个子问题的测试结果.0.550.560.570.580.590.600.610.620.630.640.65p 2耗时(s ) 3.50.550.560.570.580.590.600.610.620.630.640.65p 2修正检查次数(×108) Mac3rm Mac3rm_ARR Mac3rm_RC Mac3rm_ARR_RC 3.02.52.01.51.00.50.01822 Journal of Software软件学报 V ol.23, No.7, July 2012Table 1Test results on frb instances表1 frb问题测试结果测试指标CPU time Revision测试算法Mac3rm Mac3rmARRMac3rmRCMac3rmARR_RCMac3rmMac3rmARRMac3rmRCMac3rmARR_RCfrb30-15 0.29 0.27 0.27 0.25 964 346 775 695 834 789 663 933 frb35-17 3.57 3.27 3.29 3.01 11 553 0879 229 506 9 954 083 7 862 752 frb40-19 17.95 16.30 16.99 15.43 55 743 21543 866 54449 809 579 38 729 393 frb45-21 245.67 222.67 237.86214.70 737 302 771573 016 169677 728 915 521 052 867Table 2Test results on pigeon instances表2鸽巢问题测试结果测试指标CPU time Revision测试算法Mac3rm Mac3rmARRMac3rmRCMac3rmARR_RCMac3rmMac3rmARRMac3rmRCMac3rmARR_RCpigeons9 0.28 0.17 0.21 0.14 1 574 445465 713 793 354 219 192pigeons10 3.01 1.70 2.14 1.44 15 861 760 4 181 5327 991 611 1 972 809pigeons11 34 19 25 16 1.768E+08 4.194E+078.886E+071.973E+07pigeons12 419 227 304 195 2.136E+09 4.614E+08 1.071E+09 2.170E+08pigeons13 5 580 2 966 4 080 2 577 2.798E+10 5.540E+09 1.402E+10 2.604E+09 frb问题的测试结果显示:Mac3rm_ARR和Mac3rm_RC都改进了接近10%的求解效率;Mac3rm_ARR的效率略高于Mac3rm_RC,二者结合使用可以改进10%以上的求解效率.鸽巢问题的测试结果显示:Mac3rm_ARR 改进了大约40%的求解效率;Mac3rm_RC改进了大约20%的求解效率;Mac3rm_ARR的效率明显高于Mac3rm_RC,二者结合使用可以改进50%以上的求解效率.Mac3rm_ARR和Mac3rm_RC都节省了一些修正检查,但Mac3rm_ARR比Mac3rm_RC节省更多的修正检查.在鸽巢问题中,Mac3rm_ARR最多节省了超过80%的修正检查,这也说明,在某些问题的求解过程中,存在着大量的冗余修正检查.frb问题和鸽巢问题的修正检查次数统计结果又一次验证了二者避免的是不同类型的修正检查,Mac3rm_ARR减少的修正检查和Mac3rm_RC减少的修正检查次数之和,接近于Mac3rm_ARR_RC减少的修正检查次数.5 结论修正检查是粗粒度弧相容算法必不可少的核心部分,执行一次修正检查的最坏时间复杂度为O(d2),因此,避免无效的修正检查可以提高算法的求解效率.粗粒度算法的研究一直集中在对修正检查部分的改进上,对于算法框架的改进工作则较少.本文研究了粗粒度维持弧相容求解算法的执行过程,发现其中存在一些无效的修正检查,这类修正检查主要是对指向已赋值变量的弧执行的修正检查.我们证明了这类修正检查是冗余的,给出一种方法ARR避免这类冗余的修正检查,并且给出修正后的粗粒度算法框架AC3_frame_ARR,这一框架可以用于改进目前所有基于AC3的粗粒度算法.除此以外,ARR还可以和另一种改进方法RC相结合,二者避免了两种不同类型的冗余修正检查.我们的实验结果显示,ARR除了自身可以改进目前流行的粗粒度MAC求解算法以外,与RC方法结合共同改进粗粒度MAC算法的效果更好.References:[1] Freuder EC, Mackworth AK. Constraint satisfaction: An emerging paradigm. Rossi F, van Beek P, Walsh T, eds. Handbook ofConstraint Programming. Amsterdam: Elservier, 2006. 13−27. [doi: 10.1016/S1574-6526(06)80006-4][2] van Beek P. Backtracking search algorithms. In: Rossi F, van Beek P, Walsh T, eds. Handbook of Constraint Programming.Amsterdam: Elservier, 2006. 85−134. [doi: 10.1016/S1574-6526(06)80008-8][3] Bessière C. Constraint propagation. Rossi F, van Beek P, Walsh T, eds. Handbook of Constraint Programming. Amsterdam:Elservier, 2006. 29−84.[4] Mackworth AK. Consistency in networks of relations. Artificial Intelligence, 1977,8(1):99−118. [doi: 10.1016/0004-3702(77)90007-8][5] Mohr R, Henderson TC. Arc and path consistency revised. Artificial Intelligence, 1986,28(2):225−233. [doi: 10.1016/0004-李宏博等:改进求解约束满足问题粗粒度弧相容算法18233702(86)90083-4][6] Debruyne R, Bessière C. Some practicable filtering techniques for the constraint satisfaction problem. In: Pollack ME, ed. Proc. ofthe IJCAI’97. Morgan Kaufmann Publishers, 1997. 412−417. http://www.emn.fr/z-info/rdebruyn/ijcai97.pdf[7] Bessière C, Cardon S, Debruyne R, Lecoutre C. Efficient algorithms for singleton arc consistency. Constraints, 2011,16(1):25−53.[doi: 10.1007/s10601-009-9080-5][8] Freuder EC. A sufficient condition for backtrack-free search. Journal of ACM, 1982,29(1):24−32. [doi: 10.1145/322290.322292][9] Bessière C. Arc-Consistency and arc-consistency again. Artificial Intelligence, 1994,65(1):179−190. [doi: 10.1016/0004-3702(94)90041-8][10] Bessière C, Regin JC, Yap RHC, Zhang YL. An optimal coarse-grained arc consistency algorithm. Artificial Intelligence, 2005,165(2):165−185. [doi: 10.1016/j.artint.2005.02.004][11] Lecoutre C, Hemery F. A study of residual supports in arc consistency. In: Veloso MM, ed. Proc. of the IJCAI 2007. AAAI Press,2007. 125−130. https:///Papers/IJCAI/2007/IJCAI07-018.pdf[12] Sabin D, Freuder EC. Contradicting conventional wisdom in constraint satisfaction. In: Cohn AG, ed. Proc. of the 11th EuropeanConf. on Artificial Intelligence. Amsterdam: John Wiley & Sons, 1994. 125−129.[13] Bessière C, Freuder EC, Régin JC. Using constraint metaknowledge to reduce arc consistency computation. Artificial Intelligence,1999,107(1):125−148. [doi: 10.1016/S0004-3702(98)00105-2][14] Lecoutre C, Boussemart F, Hemery F. Exploiting multidirectionality in coarse-grained arc consistency algorithms. In: Francesca R,ed. Proc. of the CP 2003. Springer-Verlag, 2003. 480−494. http://www.cril.univ-artois.fr/~lecoutre/research/publications/2003/ CP2003.pdf[15] Mehta D, van Dongen MRC. Reducing checks and revisions in coarse-grained MAC algorithms. In: Kaelbling LP, ed. Proc. of theIJCAI 2005. Professional Book Center, 2005. 236−241. /papers/0820.pdf[16] Wallace RJ, Freuder EC. Ordering heuristics for arc consistency algorithms. In: Proc. of the 9th Canadian Conf. on ArtificialIntelligence. Vancouver, 1992. 163−169. http://4c.ucc.ie/web/upload/publications/misc/wallace92ordering.pdf[17] van Dongen MRC. Saving support checks does not always save time. Artificial Intelligence Review, 2004,21(3-4):317−334. [doi:10.1023/B:AIRE.0000007389.67810.17][18] Li ZS, Li HB, Zhang YG, Wang ZW. An approach of solving constraint satisfaction problem based on cycle-cut. Chinese Journal ofComputers, 2011,34(8):1528−1535 (in Chinese with English abstract). [doi: 10.3724/SP.J.1016.2011.01528][19] Boussemart F, Hemery F, Lecoutre C, Sais L. Boosting systematic search by weighting constraints. In: Saitta L, ed. Proc. of the16th European Conf. on Artificial Intelligence. IOS Press, 2004. 146−150. http://www.cril.univ-artois.fr/~lecoutre/research/ publications/2004/ECAI2004.pdf[20] Smith BM, Dyer ME. Locating the phase transition in binary constraint satisfaction problems. Artificial Intelligence, 1996,81(1):155−181. [doi: 10.1016/0004-3702(95)00052-6][21] Xu K, Li W. Exact phase transitions in random constraint satisfaction problems. Journal of Artificial Intelligence Research,2000,12(3-4):93−103.附中文参考文献:[18] 李占山,李宏博,张永刚,王孜文.一种基于环切割的约束满足问题求解算法.计算机学报,2011,34(8):1528−1535. [doi: 10.3724/SP.J.1016.2011.01528]李宏博(1985-),男,吉林公主岭人,博士生,主要研究领域为约束问题求解.王涛(1969-),女,讲师,主要研究领域为约束问题求解.李占山(1966-),男,博士,教授,CCF会员,主要研究领域为基于模型的诊断,智能规划与调度,约束问题求解.。