改进求解约束满足问题粗粒度弧相容算法
自适应约束优化混合粒子群算法
自适应约束优化混合粒子群算法龚国斌【摘要】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
【软件学报】_约束求解_期刊发文热词逐年推荐_20140727
推荐指数 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2010年 序号 1 2 3 4 5 6 7 8 9
科研热词 链路分离路径 遗传算法 网络可靠性 服务质量路由 最优解 度约束最小生成树 嫁接 多约束路由 剪接
推荐指数 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2013年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
科研热词 长度约束 自适应网格 能量优化 约束求解 程序分析 模式匹配 总变差 局部极小点 字符串分析 子网树 图像适应 图像编辑 刚性变换 全局优化 一般间隙 string analysis program analysis g-度量 constraint solving
科研热词 高动态范围图像 遗传算法 进化算法 近似算法 资源复用 调度算法 色调映射 自动协商 能量最小化 约束处理技术 约束优化进化算法 约束优化 电子商务 概率模型 景物提取 支持向量回归 拉普拉斯正则化 局部学习 多跳中继 多目标优化 图论模型 协商决策模型 半监督学习 修复 低动态范围图像 二次优化 不完整数据库 不一致数据 不一致性 一致的查询回答 xml数据清洗
2008年 序号 1 2 3 4 5 6 7 8 9 10
科研热词 马尔可夫链 频繁项集 隐私保护 约束优化 知识隐藏 多目标优化 反向挖掘 克隆选择 pareto-支配 fp树
推荐指数 1 1 1 1 1 1 1 1 1 1
2009年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
人工智能05约束满足问题
CSP:
state is defined by goal test is a set of
vcaorniasbtrlaeisnXtsi
wspitehcivfayilnugesafllroowmadbolemcaoimn(bin值at域ion)s Doif
values
for subsets of variables
Binary CSP: 每个约束与2个变量有关 约束图: 节点是变量, 边是约束
General-purpose CSP algorithms(通用CSP算法) use the graph structure to speed up search.
E.g., Tasmania is an independent subproblem!
每个约束包括一些变量的子集,并指定这些子集的值之间允许进行的
合并
Simple example of a formal representation language(形式化表示方法) Allows useful general-purpose(通用的,而不是问题特定的) algorithms with more power than standard search algorithms
Minimum remaining values
Minimum remaining values 最少剩余值(MRV): 选择“合法”取值最少的变量
Why min rather than max? 被称为“最受约束变量” 或“失败优先”启发式
Degree heuristic(度启发式)
在MRV无法抉择时启动度启发式 度启发式:
Depth-first search for CSPs with single-variable assignments is called backtracking search
参数化弧相容约束传播
b K yLb rt yo y oi C mp tinadK o ldeE g er gf ns yo d ct n J i U i ri ,C agh n10 1 ,C ia . e aoao f mb l o ua o nweg ni e n rMiir f u ao , in nv sy hn eu 3 0 2 hn ) r S c t n n i o t E i l e t
摘要 : 为进一步提高约束满 足问题求解算法 的效率 , 约束传 播过程 进行 了分析 ,并使用 变量 论域缩 减 比例 对 对弧相容传播 深度进行参数化描述 ,同时提 出了一个约束传 播程度 可 以控 制 的弧 相容传 播算 法 ,研究 了在不 同参数 下约束求 解算法的效率 。该算法在 “ 月 10 架构 下实 现。实验 结果表 明 ,约束 传播程 度是影 响算 明 .”
维普资讯
第2 5卷 第 2期 20 0 7年 3月
吉 林 大 学 学 报 ( 息 科 学 版) 信
Junl f inU i r t Ifr a o c neE io ) ora o l nv sy(n m t nSi c dt n Ji ei o i e i
引 言
作为人工智能领域 中的一 个重要 问题 ,约束满足 问题 ( S :C nt i as co rb m)是近 C P osa t tf tnPol r n S ia i e 年来一 个非 常 活跃 的研究 方 向。实 践证 明 ,大量 现实 世 界 中的 问题 都 可 转 化 为 C P求 解 ,如 调度 、规 S 划和产品配置等 。C P ] S 包括有限变量集 、每个变量 的有 限论域和有限约束集 。每条约束限制 了变量集 赋值的组合。C P的解是为每个变量赋一个对应论域上的值 ,使之满足所有 的约束 ,C P的目标是找到 S S 个解 或所 有解 。C P求 解方 法包 括 系统 化 的搜索方 法 ,如遍 历部 分解 空 间 的回溯方 法 ;相 容性 检 查 S
求解约束优化问题的新方法
证 了算 法 的 有 效 性 。
关键词 : 约束优化 问题 ; 电磁机制算法; 类 适应度 函数 ; 惩罚 函数 D :03 70i n10 .3 1 0 1 40 5 文章编号 :0 28 3 (0 12 .0 1 3 文献标识码 : 中图分类号 :P 0 OI1 . 8 .s.028 3 . 1. .1 7 s 2 2 10 .3 12 1 )40 5 . 0 A T 31
C m ue n ier ga dA p i t n 计算机工程与应用 o p tr gnei n p l ai s E n c o
求解 约 束优 化 问题 的新 方 法
郭 鹏 , 福庆 宋
.
GUO Pe g, n SONG Fu i q ng
安阳师范学院 数学与统计学 院 , 河南 安 阳 4 5 0 500
n s u ci n i o s u t d b sn e at u ci n, n h o s e s fn t s c n t ce y u ig p n l fn t o r y o a d t e c n  ̄Mn d o t z t n p o l m s t n f r d i t a n o - e p i a i r b e i r so me n o n u c n mi o a s an d o t z t n p o lm . s d o h h r ce it s f E t o a p o e o a e r h s h me i e i n d a c r i g r t i e p i a i r b e Ba e n t e c a a trsi o M me h d, r p r l c l s a c c e s d sg e c o d n mi o c t t e p o e t o e o sr i e p i z t n r b e , n e o mu a f r a c lt g h p ri l h r e n d o r e a e o h r p ry f t c n ta n d o t h mi ai p o lms a d t f r l s o c lu ai t e atce c ag a f c r o h n
一种基于预处理技术的约束满足问题求解算法
第31卷 第6期2008年6月计 算 机 学 报C HIN ESE J OU RNAL OF COM PU TERSVol.31No.6J une 2008收稿日期:2007207212;最终修改稿收到日期:2008204211.本课题得到国家自然科学基金项目“扩展规则推理方法研究”(60773097)资助.孙吉贵,男,1962年生,教授,博士生导师,主要从事人工智能、约束程序设计、决策支持系统研究.朱兴军,男,1983年生,硕士研究生,主要从事约束程序研究.E 2mail :zhu_xing_jun @.张永刚,男,1975年生,博士,讲师,主要从事约束程序研究.李 莹,女,1985年生,硕士研究生,主要从事自动推理研究.一种基于预处理技术的约束满足问题求解算法孙吉贵1),2) 朱兴军1),2) 张永刚1),2) 李 莹1),2)1)(吉林大学计算机科学与技术学院 长春 130012)2)(吉林大学符号计算与知识工程教育部重点实验室 长春 130012)摘 要 相容性技术作为约束满足问题的一种有效求解技术,不论是在求解前的预处理过程中,还是在搜索过程中,都扮演着极为重要的角色.文中对预处理阶段的相容性技术进行改进和信息抽取,提出两种应用于搜索过程中的新算法Pre 2AC 和Pre 2AC 3,并嵌入到B T 框架中,形成新的搜索算法B T +MPAC 和B T +MPAC 3,给出了其正确性证明,通过复杂性分析得到Pre 2AC 和Pre 2AC 3的时间复杂度分别是O (nd )和O (ed 2),明显低于目前最流行的弧相容技术的时间复杂度O (ed 3).实验测试结果表明:对于不同类别的用例,新算法的执行效率是弧相容维护算法的2~50倍.关键词 约束满足问题;弧相容技术;singleton 弧相容;pre 2弧相容中图法分类号TP18An Approach of Solving Constraint S atisfaction Problem B ased on PreprocessingSUN Ji 2Gui1),2) ZHU Xing 2J un 1),2) ZHAN G Y ong 2Gang 1),2) L I Y ing 1),2)1)(College of Com puter S cience and Technolog y ,J ilin Universit y ,Changchun 130012)2)(Key L aboratory of S y mbolic Com putation and Know led ge Engineering of Ministry of Education ,J ilin University ,Changchun 130012)Abstract As an effective technology for solving const raint satisfaction problem ,consistencytechnology plays an important role not only in p reprocessing ,but also in searching.Firstly ,t his paper p ropo ses two new consistency algorit hms called Pre 2AC and Pre 2AC 3applied during searching ,which are based on t he performance on an imp rovement of consistency during prep ro 2cessing and information ext raction.Secondly t his paper p resent s two new searching algorit hms called B T +M PAC and B T +M PAC 3by embedding t ho se two consistency algorit hms into t he B T framework respectively.Thirdly ,after proving t he correct ness of Pre 2AC and Pre 2AC 3,t his pa 2per analyzes t heir time complexity.It is evidently t hat t he complexities of Pre 2AC and Pre 2AC 3are O (nd )and O (ed 2)respectively ,which are apparently lower t han O (ed 3),t he complexity of arc consistency algorit hm.In t he experiment s on several kinds of instances ,efficiency of t he pro 2posed algorit hms is 2~50times higher of t hat of maintaining arc consistency.K eyw ords const raint satisfaction problem ;arc consistency ;singleton arc consistency ;pre_arc consistency1 引 言约束满足问题(Constraint Satisfaction Problem ,CSP )是人工智能研究领域的一个重要分支,现实生活中的很多问题,都可以用约束满足问题来建模,如视觉(visio n )、调度中的资源分配(resource alloca 2tion )、时序推理(temporal reasoning )等.约束满足问题通常都是N P难问题,在其众多求解算法中,基于回溯的搜索算法(Backt racking algorit hm,B T)是一个完备的核心算法.该算法在选择实例化变量时,采用深度优先策略,若相容性检查失败则启动回溯机制,并通过引入展望(look2ahead)和回顾(look2 back)两种模式,显著地提高了搜索效率[1].基于冲突的向后跳转[2]和动态的回溯算法[3]等是回顾模式类的搜索算法;基于相容性技术的算法是展望模式类的搜索算法.而弧相容(Arc Consistency,AC)则是众多相容性算法中一个高效的相容性技术[4],如算法AC3[5]、AC4[6]、AC2001[7]等.由于弧相容维护(Maintaining Arc Consistency,MAC)具有高效的求解效率和低额空间代价的特点,所以MAC是目前求解约束满足问题的一个主流搜索技术.弧相容技术的研究工作主要有两个方面:一方面是在原有算法上的改进,如文献[527];另一方面,在问题求解之前,进行一定的预处理,这对问题以后的求解是十分有意义的.因此,弧相容技术也广泛地应用在预处理步骤中[8211].在近期的研究工作中, singleton弧相容算法(Singleto n Arc Consistency, SAC)是时间和空间都比较理想的一种相容性技术.在Debruyne等人于1997年提出的SAC1算法[9]基础上,2004年~2005年,Bart k和Bessière相继提出基于AC4和AC2001的SAC算法[10211],这一系列算法是从执行效率的角度上对原有算法的一种改进.而文献[12213]是对SAC理论和技术方面的一些研究.虽然SAC技术在预处理阶段中起到的作用十分显著,但如果要在搜索过程中维持SAC这一相容性,所需要的时间和空间仍然是不可忽视的.尤其是对规模和难度都比较大的问题,时间和空间已经成为它们广泛应用的瓶颈[10,14],主要问题在于先前的研究工作中,预处理过程和搜索过程中的相容性技术都是彼此独立的,且是无信息交流的.基于此,本文首次在预处理阶段和搜索过程中的相容性技术之间,建立起信息交流的关系,打破以往彼此独立的模式.在研究预处理阶段的相容性技术的同时,通过对预处理阶段的SAC算法进行改进,有效地利用其中的信息,提出了两种新相容性算法Pre2AC和Pre2AC3,并将其嵌入到B T算法框架中,形成新的搜索求解算法B T+M PAC和B T+ M PAC3.在搜索过程中,Pre2AC和Pre2AC3对问题压缩并不需要约束传播,因此,效率上要高于目前应用的弧相容技术.我们给出了算法的正确性证明和复杂性分析,分析结果表明:本文提出的Pre2AC 和Pre2AC3的时间复杂度分别是O(nd)和O(ed2),明显低于弧相容技术的复杂度(其时间复杂度是O(ed3))[15].实验测试结果也表明:本文提出的求解算法在搜索效率上是目前流行搜索算法MAC的2~50倍.2 约束满足问题和相容性技术约束满足问题(Constraint Satisfaction Problem, CSP)通常表示成一个三元组P=(X,D,C),其中X 是一个变量的有限集合,表示成X={i|(1ΦiΦn)};D是一个函数,它将每一个变量映射到一个有限的论域上.用D i来表示变量i的论域;C是一个有限约束集合,而且在约束中出现的变量只能是X中的变量.其解是为变量集中的每个变量从有限论域中寻找一个值,使得所有的约束都被满足.通常为了提高效率,在求解过程中积极地使用约束,删除变量中的一些肯定不参与解的值.这个过程通常称为约束传播、域过滤或者相容性技术.它在搜索过程中有效地删除许多不相容的值,压缩问题的搜索空间,从而达到提高效率的目的.而这一技术最为有效的是弧相容技术,对于二元CSP的约束图中的某一个弧(i,j),称它是弧相容的(Arc Consistency,AC),当且仅当对于i论域中能满足i上一元约束的每一个值a,都在j的论域中存在一个值b,使得b满足j 上一元约束,并且(a,b)满足i和j上的二元约束C(i,j).一个CSP是弧相容的,当且仅当它的约束图中的每一条弧是弧相容的.文献[16]给出了其详细概念和相关术语.图1 二元约束问题例子以著名的地图着色问题为例.图1是该问题的约束图,图中数字表示约束满足问题中的变量,字母表示变量的论域.变量之间的连线代表二元约束关系,其含义是这两个变量不能取相同的值.图2和图3中的F和S分别代表问题求解失败和求解成功.图3所示的是没有相容性检查的搜索树,扩展分支数目是14.图2所示的是带有弧相容性检查的搜029计 算 机 学 报2008年索树,扩展分支数仅是6个,而展开的节点数目也相应减少,进而提高了搜索效率.对于规模大的问题,相容性技术的优点将更为明显.在弧相容技术的基础上,文献[9211]引入singleton 弧相容的概念.问题P 是singleton 弧相容的,当且仅当对于Πi ∈X ,Πa ∈D i ,P |i =a是弧相容的.其中P |i =a是将原问题P 中的变量i 的论域D i 用单独的{a}进行替换.此后满足SAC 的一系列算法也相应地出现.SAC1算法[9]并没有利用专门的数据结构来为每个值存储原CSP 问题中所有与它弧相容的值,这就迫使在SAC1执行过程中,每当某个值被删除时,算法都要为所有值重新进行一次相容性传播.这样,大量的重复工作导致算法的效率很低.因此,即使空间复杂度很理想,但其高额的时间代价,使得它在实际应用中使用得较少.SAC2[10]是一个基于AC4思想的算法,它使用大量的数据结构来避免重复的相容性传播.首先将原问题的论域复制nd 次(其中,n 是CSP 问题中变量的个数,d 是变量论域的大小),每个值对(i ,a )都对应一个原问题的论域.通过维持这些数据结构可以在相容性传播过程中降低时间复杂度,避免重复的传播处理,进而提高算法SAC 的效率.SAC 2SDS[11]是一个基于AC2001的算法,它和AC2001都是以牺牲最优时间复杂度来节省空间,但也维持一些必要的结构来避免重复的检查操作,这样能在算法的时间和空间上都达到一个比较理想的情况.文献[11]对该算法进行了描述,其思想是为每一个(i ,a )存储一个局部约束传播等待队列Q [i ,a]和一个弧相容的论域,算法中用数据结构su p port [i ,a]表示.利用这一结构,能知道当某个值被移走时,哪些值不再是singleton 弧相容的,哪些论域需要做约束传播处理,同时它也能记录最后一次传播过程的结果.相应的局部约束传播等待队列Q [i ,a]记录了导致这次传播发生的那些变量,利用这一结构,能高效地实现弧相容算法的约束传播过程.此外,算法用结构队列Pendi ngL ist 来维持singleton 弧相容性的传播过程,当算法达到一个稳定点时,该队列为空.队列Pendi ngL ist 中的值对(i ,a ),表示此时与其对应的s u p port [i ,a]论域不是singleton 弧相容的,需要进行约束传播处理.因此,放到这个队列中等待传播.对于子程序propagateAC ,执行了一个原始的弧相容约束传播过程,它可以根据不同的弧相容性机制,选用不同的约束传播过程,如AC3、AC4、AC2001等.而另外一个子程序p ropagatesubAC 的执行过程与propagateAC 相同,只是它不需要调用updatesubp roblems 子过程.up datesubp roblems 的作用是避免对所有的子问题都做约束传播处理,只是对那些由于某些值被移走后,导致不再是singleton 弧相容的子问题进行传播.算法SAC 2SDS 的时间复杂度是O (end 4),空间复杂度是O (n 2d 2)[11].3 Pre 2AC 和Pre 2AC 3算法本节中,我们先给出一个改进的B T 算法框架B T 2framework ;之后对预处理阶段的SAC 算法修改,提出改进的SAC 算法;最后,在此基础上提出两个新的相容性算法Pre 2AC 和Pre 2AC 3.B T 算法框架是在经典回溯算法的基础上,添加了一个预处理过程(pre 2process )和一个局部相容性处理过程(local consistency ).这两个过程都能加快B T 算法的搜索效率.改进的B T 算法框架B T 2framework 如下:BT 2frame w ork 算法.B T 2f ramework (CSP :P ) P ′←pre_process (P ); /3pre 2process phase 3/if (isnosolution (P ′))then return nosolution ;f reevariables ←P.X ;while (not empty (f reevariables ))do/3bt solve phase 3/1296期孙吉贵等:一种基于预处理技术的约束满足问题求解算法 select a variable x and a value v for x ;x ←v ;f reevariables ←f reevariables —{x };push (P ′);P ′←localconsistency (P ′);/3local consistency 3/if (isnosolution (P ′))then P ′←pop (P ′); f reevariables ←f reevariables ∪{x };return the assignments ;B T 算法的执行流程如图4所示,其中lc 代表局部相容性技术(local consistency ),目前效率比较高的是弧相容技术.搜索过程大体如下:首先对于初始问题P 0进行预处理操作,得到新的问题P 1,对问题P 1将变量X 1实例化为a ,得到新的子问题P ′1,再调用lc 使之满足某种相容性,得到一个新的子问题P 2,而后对这个子问题进行求解,依此类推,如果提前确定该子问题没有解,则立即回溯.图4 回溯算法执行过程利用预处理阶段中SAC 的机制,在预处理时保留一些必要的信息.在给出算法Pre 2AC 之前,我们先对SAC 算法进行修改,称为改进的SAC ,首先引入一个新的结构:deleteS A C [i ,a],它与原数据结构su p port [i ,a]相对应,在预处理过程中,对于Π(i ,a )∈D ,都有D =deleteS A C [i ,a]∪sup port [i ,a].即在算法SAC 执行的过程中,每当从su p port [i ,a]中移出一个值,都要把这个值添加到集合deleteS A C [i ,a]中.假设对于原问题P 0做预处理后得到的新问题P 1=S A C (P 0),对于Π(i ,a )∈D ′(D ′是问题P 1的论域),集合deleteS A C [i ,a]所存储信息的含义是:对问题P 1,变量i 实例化a 后所得到新问题为P ′1,这时需将集合deleteS A C [i ,a]中的值依次从P ′1中移走,这才能保证问题P ′1是弧相容的.因此我们对原SAC 算法中的过程修改,如下所示.其中集合deleteS A C [i ,a]初始化为空(这里只给出SAC 算法的主要函数).R evised 2SAC 算法.functionpropagatesubAC (in (X ;D;C ),in Q ,k ,c ):booleanwhile pop j f rom Q dofor each (i ,a )∈D such that ϖC i j ∈C doif not ϖb ∈D j and C i j (a ,b )then D i ←D i \{a};deleteS A C[k ,c]←deleteS A C[k ,c]∪{(i ,a )};Q ←Q ∪{i};if D i = then return false ;return true ;procedure updatesubproblems (in (i;a ):Value )for each (j ,b )∈D such that (i ,a )∈sup port [j ,b]do su p port [j ,b]←sup port [j ,b]\{(i ,a )};deleteS A C[j ,b]←deleteS A C[j ,b]∪{(i ,a )};Q [j ,b]←Q [j ,b]∪{i};PendingL ist ←PendingL ist ∪{(j ,b )};上述算法中的函数propagatesubAC ,添加新参数(k ,c )作为索引,用来确定与当前函数使用的论域D 相对应的deleteS A C.在改进的SAC 算法中,每当从su p port [i ,a ]中移出值时,就将该值加入到deleteS A C [i ,a ]中.算法的第6、13行实现这个过程.通过利用deleteS A C 存储的信息,我们给出的新局部相容性算法Pre 2AC 的思想为:每当变量i 实例化为值a 时,都要将deleteS A C [i ,a]中的值依次从问题中移出,这样就达到了对搜索树剪枝的目的,从而提高求解效率.如果在移出值的过程中发现某个变量的论域变成空,则返回假,迫使B T 算法启动回溯机制进行回溯处理,重新进行求解.伪码如下所示.Pre 2AC 算法.functionPre 2AC (in P :Problem.(i ,a ):Value ):boolean for each (j ,b )∈D such that (j ,b )∈deleteS A C [i ,a]do D j ←D j \{b}; if D j = then return false ;return true ;Pre 2AC 相容性技术是利用预处理阶段的信息,将待求解问题的规模进行压缩,即在搜索过程中起到高效地剪枝作用,这样就能减少问题的搜索空间,进而提高搜索效率.虽然当今许多相容性技术都能实现这一功能,如弧相容技术、路径相容技术等,但它们没有充分地利用预处理阶段的信息,更重要的是它们需要做大量的、高代价的约束传播,而我们的Pre 2AC 算法并不需要进行约束传播,这样就能避免高额的时间开销.将Pre 2AC 嵌入到前述改进的B T 框架中得到的新搜索求解算法我们称之为B T +M PAC.有时候维持Pre 2AC 不能够像维持弧相容性那样,移走更多的冗余值,如图5为变量X 和Y 之间229计 算 机 学 报2008年的二元约束关系.图5 X ,Y 之间的约束关系图5中的数字代表变量的论域,它们之间的连线代表变量X 和Y 满足约束关系的值对集合.现在设某一变量Z 1被实例化,这时按Pre 2AC 算法,假设Y 中的值1被移走,而此时X 中的所有值在Y 中仍然都能够得到支持,所以X 的论域不会变化.之后变量Z 2又被实例化,执行Pre 2AC 算法,假设Y 中的值2也被移走,由于Pre 2AC 所维持的是原问题的弧相容性,因此仍可认为X 中的值2在Y 中存在一个支持(Y 中的值1),所以X 的论域没有变化.但事实上,变量X 中的值2在Y 中已经不存在支持(因为Y 中的1在上一次Pre 2AC 算法执行时已经被删除).由此,我们可以在Pre 2AC 算法上对相容性做进一步的检查,若某个变量的论域在Pre 2AC 处理之后发生变化,则就像传统的弧相容算法那样,将所有和这个变量存在约束关系的其它变量都作相应的检查,但是并不做更深一层的传播处理.这样可以在搜索时间和相容性算法的执行时间上达到一个比较理想的效果.我们把这种检查方法称为Pre 2AC 3算法,算法如下.Pre 2AC 3算法.functionPre 2AC 3(in P ,(i ,a )):booleanfor each (j ,b )∈D such that (j ,b )∈deleteS A C[i ,a]doD j ←D j \{b};if D j = then return false ;Q ←Q ∪{j};while pop j from Q dofor each i ∈X such that ϖC i j ∈C dofor each a ∈D i do if not ϖb ∈D j and C i j (a ,b )then D i ←D i \{a};if D i = then return false ;return true ;4 复杂性和正确性分析为了更好地衡量上节所提出的相容性算法Pre 2AC 和Pre 2AC 3的性能,本节对这两个算法的空间复杂度和时间复杂度进行分析,同时对它们的正确性也给出证明.定理1. 算法Pre 2AC 和Pre 2AC 3的最坏空间复杂度是O (n 2d 2)(n 代表变量的个数,d 代表变量论域的大小,下同).证明. 对于算法Pre 2AC 本身只用到一个数据结构deleteS A C ,每个变量在最坏情况下,至多只存储其它所有变量的整个论域,所以它所消耗的空间是O (nd ),而这样的结构一共存在n d 个,所以算法的最坏空间复杂度是O (n 2d 2).而算法Pre 2AC 3只比原算法Pre 2AC 多使用一个等待队列Q ,它的空间大小是O (n ),故此Pre 2AC 3的最坏空间复杂度也是O (n 2d 2).证毕.定理2. 算法Pre 2AC 的最坏时间复杂度是O (nd ),算法Pre 2AC 3的最坏时间复杂度是O (ed 2)(其中的e 代表约束网络中的边的个数).证明. 在算法Pre 2AC 的一次执行中,可以看出每次都要从deleteS A C [i ,a]中读取一个值对,每一个变量的每个值在这个集合中至多出现一次,并只能读取一次,所以它的最坏时间复杂度是每个deleteS A C[i ,a]的空间大小O (nd ).而算法Pre 2AC3要比算法Pre 2AC 做更进一步地约束传播处理,它从等待队列Q 中依次取变量进行检查,对于每一个有向弧,至多进行一次约束检查,在这一次约束检查过程中,对任意一个变量的一个值都要从另一个变量中寻找支持,这一过程所用的时间是O (d ).而对于每个弧,要为一个变量的d 个值寻找支持,所以它耗用的时间是d ×O (d ),即O (d 2).原问题中一共有2e 条有向弧,因此算法Pre 2AC 3的最坏时间复杂度是2e ×O (d 2),即O (ed 2).证毕.下面我们对算法Pre 2AC 和Pre 2AC 3的正确性进行证明,证明过程用到了文献[9211,15]的结果:算法SAC 和算法AC 的执行过程都是正确的.定理3. 算法Pre 2AC 和Pre 2AC 3是正确的.证明. 相容性算法的正确性是指在相容性检查过程中,对于任何一个被移走的值,它都一定不会在原问题的解中出现,即被移走的值将来不可能被扩展成原问题的解.因此对于算法Pre 2AC 的正确性证明,只需证任意阶段P ′i 到P i +1这一相容性处理过程中的正确性即可(P ′i 是对变量X i 实例化为a i 后得到新的子问题.P i +1是对P ′i 进行相容性处理得到的问题).现在假设在这个阶段进行相容性检查时,存在某个变量的某个值被删除,并且这个值在将来能够扩展成原来问题的一个解.不失一般性,设这个3296期孙吉贵等:一种基于预处理技术的约束满足问题求解算法变量和值分别是X j和a j.由于这个值在子问题P′i中能够扩展成一个解,即当X i实例化为a i且X j实例化为a j的时候,这个子问题至少存在一个解,而这个子问题和原问题的约束关系是不变的,所以这个解也是原问题的一个解.这样由SAC算法和AC 算法的正确性可以保证(X j,a j)∈s u p port[i,a i].现在由于这个值被算法Pre2AC所删除,因此(X j, a j)∈deleteS A C[i,a i],进而可以得出(X j,a j)| su p port[i,a i],产生矛盾.由此得出算法Pre2AC是正确的.算法Pre2AC3的正确性同理可证.证毕.5 实验结果这里使用了三大类测试用例,分别是随机的约束满足问题、经典图着色问题,还有一些标准的测试用例(benchmark).通过对这些例子的测试,可以看出新的相容性算法比原有MAC在效率上有着不同程度的提高.在下面的图表中:B T+MAC代表在经典的回溯算法中弧相容维护技术,B T+M PAC和B T+M PAC3分别表示在搜索过程中维持Pre2AC 相容性和Pre2AC3相容性.这三种搜索算法在测试的程序中都使用最小论域启发式策略.使用C++语言在“明月”[17]平台上编写程序,测试环境为:硬件DELL Intel PⅣ310GHz CPU/512MB RAM;软件Windows XP Professional SP2/Visual C++610.其中每个用例测试10次取平均值作为最后结果.(1)随机约束满足用例随机问题产生器随机地生成二元约束满足问题(http://www.lirmm.fr/bessiere/generator.html),问题的难度和规模可以根据参数的设置来控制,由于问题具有随机性,所以绝大部分通用约束求解算法和通用启发式策略都采用这种测试方法[18].二元随机约束满足问题有4个描述参数〈n,m,p1,p2〉,其中n代表变量的个数,m代表变量论域的大小(这里假设所有变量的论域大小相同),p1代表此约束满足问题的密度,即约束图中边的个数和n×(n-1)/2 (完全图中边的个数)的比值,p2为每个二元约束的松紧度.本文对问题规模为n=m=30,约束密度为0140,p2介于0140~0161之间的用例进行测试,实验结果如图6和图7.从图6(p2介于0140~0150之间)可以看出,我们的B T+MPAC和B T+MPAC3在算法的执行效率上是算法B T+MAC的约2~4倍.而对于图7(p2介于0151~0161之间),B T+MPAC 和B T+M PAC3算法的执行效率是算法B T+ MAC的4~9倍.(2)经典图着色问题图着色问题是一个非常经典的图论问题,也是约束满足问题中极其具有代表性的问题.通过随机生成图着色测试样例(http://ai.uwaterloo.ca/~vanbeek/software/csplib.tar.gz),分别测试四着色和五着色两类问题,其中每类问题都含有200个顶点、4975条边.并把每一类问题都分为有解的和无解的两种情况(由于随机生成的图有可能是一个非平面图,所以存在没有解的可能性),分别进行测试和比较.如表1中的数据所示,每类问题前列是没有解的情况,后列是有解的情况.从表1可以清晰地看出,对于没有解的情况,#4color问题,我们的B T+ M PAC算法和B T+M PAC3算法的执行效率是原始算法B T+MAC的10倍;而对#5color问题而言,B T+M PAC算法和B T+M PAC3算法的执行效率是B T+MAC算法的50倍.而对有解的例子,无论是#4color问题还是#5color问题,算法B T+ M PAC和B T+M PAC3的执行效率都是算法B T+ MAC的2倍.429计 算 机 学 报2008年表1 #4color和#5color图着色问题算法#4color问题问题无解问题有解时间/s时间/s#5color问题问题无解问题有解时间/s时间/sB T+MAC213910012708241658 015015B T+MPAC012097011923015173013014B T+MPAC3012114011920015251013045(3)标准库的测试用例(benchmark)此外我们还测试了一些标准库中的测试样例(http://cpai.ucc.ie/05/Benchmarks.ht ml),从中随机选取了两类问题,一类是f rb问题,对这类问题进行求解一般来说比较困难.文献[19220]对这类问题进行了详细的研究.另一类是著名的“鸽巢问题(pigeons)”,在测试这组例子的过程中,我们使用二元约束关系,没用使用全局的alldifferent约束,并且没有考虑问题本身的对称性和问题固有特点.测试结果见表2.表2 标准库中的测试用例算法Frb30215时间/sFrb35217时间/sFrb40219时间/spigeons时间/sB T+MAC1012031916434915110872B T+MPAC3123451501671671620B T+MPAC33176661441261034716从表2中可以看出对于不同规模的f rb问题,新的B T+M PAC算法和B T+M PAC3算法在效率上是B T+MAC算法的3倍.对于pigeons问题, B T+M PAC算法的执行效率大约是B T+MAC算法的7倍,B T+M PAC3算法的执行效率是B T+ MAC算法的2倍.6 结 语相容性技术是求解约束满足问题的一个重要技术,无论是应用在求解问题前的预处理阶段还是在搜索过程中保持相容性都已经被证明是一个十分有效的手段.但是在先前的研究工作中,这两个阶段的相容性技术都是彼此独立的,即它们之间没有信息交流.本文对预处理阶段中的SAC算法进行了改进,提出了一种利用预处理阶段信息的新相容性算法Pre2AC和Pre2AC3,它们打破以往与预处理阶段的相容性技术独立的模式,在搜索中能够积极地利用预处理中的信息来提高求解效率.并将它们嵌入到B T算法框架中,形成新的搜索算法B T+ M PAC和B T+M PAC3.尽管Pre2AC和Pre2AC3削减冗余值的能力要比AC算法弱,实验结果证实B T+M PAC大多数情况下明显比B T+MAC展开的节点数多,B T+M PAC3展开的节点数略多于B T+MAC展开的节点数,但文献[16]中已经明确指出,削减冗余值能力的强弱和搜索算法的执行效率并不是一个简单的线性关系.因此,我们的两种算法都是在取得最好的时间效率条件下的相容性检查与搜索空间的折衷.理论分析表明Pre2AC 和Pre2AC3的时间复杂度分别是O(nd)和O(ed2),明显低于弧相容技术(其时间复杂度是O(ed3)),实验结果也表明我们的算法在性能上明显优于目前主流的求解技术MAC.参考文献[1]Rina Dechter.Constraint Processing.Morgan Kauf mann,2003[2]Patrick Prosser.Hybrid algorit hms for t he constraint satis2faction putational Intelligence,1993,9(3):2682299[3]G insberg M L.Dynamic backtracking.Artificial Intelli2gence,1993,1:25246[4]Sabin Daniel,Freuder E C.Contradicting conventional wis2dom in constraint satisfaction//Borning Alan.Proceedings oft he2nd International Workshop on Principles and Practice ofConstraint A,1994:10220[5]Mackwort h A K.Consistency in networks of relations.Arti2ficial Intelligence,1977,8(1):992118[6]Mohr R,Henderson T C.Arc and pat h consistency revised.Artificial Intelligence,1986,28(2):2252233[7]Bessière Christian,Régin J ean Charles.Refining t he basicconstraint propagation algorit hm//Proceedings of t he17t hInternational Joint Conference on Artificial Intelligence.Se2attle WA,Morgan Kaufmann,2001:3092315[8]Lecoutre Christophe,Cardon Stéphane,Vion J ulien.Con2servative dual consistency//Proceedings of t he22nd Confer2ence on Artificial Intelligence.Vancouver,Canada,2007:2372242[9]Debruyne R,Bessière C.Some practical filtering techniquesfor t he constraint satisfaction problem//Proceedings of t heI J CAI′97.Japan,1997:4122417[10]Bart k Roman,Erben Radek.A new algorit hm for singletonarc consistency//Proceedings of t he FLAIRS.Florida,USA,2004:2572262[11]Bessière Christian,Debruyne Romuald.Optimal and subop2timal singleton arc consistency algorit hms//Proceedings oft he I J CAI.Edinburgh,Scotland,Professional Book Center,2005:54259[12]Bessière Christian,Debruyne Romuald.Theoretical analysisof singleton arc consistency//Proceedings of t he ECAI′04Workshop on Modeling and Solving Problems wit h Con2straint s.Valencia,Spain,2004:202295296期孙吉贵等:一种基于预处理技术的约束满足问题求解算法[13]van Dongen M R C.Beyond singleton arc consistency//Pro 2ceedings of t he 17t h European Conference on Artificial Intel 2ligence.Garda ,Italy ,2006:1632167[14]Lecout re Christophe ,Prosser Patrick.Maintaining singleton arc consistency//Proceedings of t he 3rd International Work 2shop on Constraint Propagation and Implementation Held wit h CP ′2006.Nantes ,France ,2006:47261[15]Bessi ère Christian ,R égin J ean Charles ,Yap Roland H C ,Zhang Yuanlin.An optimal coarse 2grained arc consistency algorit hm.Artificial Intelligence ,2005,165(2):652185[16]Tsang Edward.Foundations of Constraint Satisfaction.Lon 2don and San Diego :Academic Press Limited ,1993[17]Sun Ji 2Gui ,Jing Shen 2Yan.Solving non 2binary constraint satisfaction problem.Chinese Journal of Computers ,2003,26(12):174621752(in Chinese )(孙吉贵,景沈艳.非二元约束满足问题求解.计算机学报,2003,26(12):174621752)[18]Gent Ian P ,Macintyre Ewan ,Prosser Patrick ,Smit h Barba 2ra M ,Walsh Toby.Random constraint satisfaction flaws and structure.Journal of Constraint s ,2001,6(4):3452372[19]Xu Ke ,Li Wei.Exact phase transitions in random constraint satisfaction problems.Journal of Artificial Intelligence Re 2search ,2000,12:932103[20]Xu Ke ,Boussemart Frederic ,Hemery Fred ,Lecoutre Chris 2tophe.A simple model to generate hard satisfiable in 2stances//Proceedings of t he I J CAI.Edinburgh ,Scotland ,2005:3372342SUN Ji 2G ui ,born in 1962,pro 2fessor ,Ph.D.supervisor.His research interests include artificial intelligence ,constraint programming and intelligence information processing.ZHU Xing 2Jun ,master candidate.His main research in 2terest is constraint programming.ZHANG Yong 2G ang ,Ph.D.,lecturer.His main re 2search interest is constraint programming.L I Ying ,master candidate.Her main research interest is automated reasoning.B ackgroundCSP is an important researching area in artificial intelli 2gence.However ,it is the N P 2complete task of determining whether a given CSP instance has a solution.As an effective technology for solving CSP instance ,consistency technology plays an important role not only in preprocessing ,but also in searching.However these two phases are separated as far as we know.So the efficiency of solving problems is not satis 2fied.This paper proposes two new consistency algorithms applied during searching based on preprocessing and embed 2ded into B T f ramework to form two searching algorithms.The authors analyze the time and space complexity and provecorrectness of them theoretically.Besides ,experiments show that the proposed algorithms have a better performance.All our algorithms mentioned in this paper were implemented in C ++and embedded into the constraint solving platform "Ming Yue 110"designed by the authors.The idea of this paper is inspiring since it does not follow the traditional mode.Moreover it exploits the information enough in pre 2processing to reduce the search space and speed up solving process by removing the inconsistent values.This paper was supported by the National Natural Science Foundation of Chi 2na (grant No 160773097).629计 算 机 学 报2008年。
求解约束优化问题的改进樽海鞘算法
Advances in Applied Mathematics 应用数学进展, 2023, 12(5), 2128-2137 Published Online May 2023 in Hans. https:///journal/aam https:///10.12677/aam.2023.125216求解约束优化问题的改进樽海鞘算法李端洋*,史兰艳北京建筑大学理学院,北京收稿日期:2023年4月9日;录用日期:2023年5月3日;发布日期:2023年5月12日摘要针对约束优化问题,提出了一种运用改进樽海鞘算法求解约束优化问题的方法。
通过外点法将约束优化问题转化为一系列无约束优化问题,然后运用双领导者结合败者淘汰策略的樽海鞘算法(DLSSA),并对所得界约束优化问题进行求解以获得约束问题的解。
利用6个约束优化基准测试问题对所得算法进行数值实验,实验结果表明,对于所有问题算法,PF-DLSSA 所求解均优于算法PF-SSA 所求解,即实验所得的最优值及其他数据都优于对比算法PF-SSA 所求,所得算法能够有效地求解约束优化问题,且比对比算法效果要好。
关键词约束优化问题,外点罚函数法,樽海鞘算法,双领导者策略,败者淘汰策略,数值实验An Improved Salp Swarm Algorithm for Constrained Optimization ProblemsDuanyang Li *, Lanyan ShiSchool of Science, Beijing University of Civil Engineering and Architecture, BeijingReceived: Apr. 9th , 2023; accepted: May 3rd , 2023; published: May 12th , 2023AbstractAiming at the constrained optimization problem, an improved salp swarm algorithm was pro-posed to solve the constrained optimization problem. The constrained optimization problem is transformed into a series of unconstrained optimization problems by the outer point method, and then the salp swarm algorithm (DLSSA), which combines the two-leader and loser elimination strategy, is used to solve the unconstrained optimization problem to obtain the solution of the*通讯作者。
基于启发式的约束满足问题AC系列算法改进研究
基于启发式的约束满足问题AC 系列算法改进研究蒋李鸣,吕佳宇,何哲华,冯泽斌(吉林大学软件学院,吉林 长春 130012)摘 要:约束满足问题是人工智能领域中一个重要的研究方向,其研究结果在符号推理、系统诊断、真值维护系统、资源分配和产品配置等问题中有广泛的应用。
局部相容性定义了约束满足问题在约束传播过程中必须满足的性质,是约束传播发展的主要方向。
而对于较为复杂的相容性问题中的AC系列算法的改进可谓难上之难。
本文围绕着以弧相容、Singleton弧相容为代表的相容性技术和求解算法展开,主要针对AC-2001算法、SAC算法等进行优化改进,重点基于启发式进行改进,使之获得了更快的筛选速度。
尤其对于SAC算法,大大减少了约束检查次数,获得了较为成功的基于启发式的改进结果。
关键词:人工智能;约束满足问题;启发式;AC系列算法;约束检查次数中图分类号:TP3-0 文献标识码:AHeuristic Algorithm Based Improvement of AC Algorithms ofConstraint Satisfaction ProblemsJIANG Liming,Lv Jiayu,HE Zhehua,FENG Zebin(College of Software ,Jilin University ,Changchun 130012,China )Abstract:In the field of artificial intelligence,the Constraint Satisfaction Problem (CSP) is an important research direction,whose study results are widely used in Symbolic Reasoning,System Diagnosis,Truth Maintenance System,Resource Allocation,and Product Configuration and so on.Local consistency,which defines the properties that CSP must satisfy in the process of constraint propagation,is the main development direction of constraint propagation.It is much more difficult to improve the performance of the complex series of AC algorithms about consistency problems.Based on the algorithms and consistency technology represented by arc consistency and singleton arc consistency,the paper focuses on the improvement of AC-2001 algorithm and SAC algorithm.The improvement is based on the heuristic algorithm to achieve higher filtering speed.Especially,the improvement of SAC algorithm is quite successful because of its obvious reduction of constraint checking times.Keywords:artificial intelligence;Constraints Satisfaction Problem;heuristic;AC algorithms;constraint checking times文章编号:2096-1472(2018)-02-30-04DOI:10.19644/ki.issn2096-1472.2018.02.010软件工程 SOFTWARE ENGINEERING 第21卷第2期2018年2月V ol.21 No.2Feb. 2018注:本论文属吉林大学“大学生创新创业训练计划”创新训练项目。
混合粗粒度遗传算法在约束最优化问题中的应用
其中: f ( X ) 是目标函数, g i ( X ) 是不等式约束; h i ( X ) 是 等式约束; m 和
i = 1, 2 , Λ , m
p
分别是不等式约束和等式约束的个数; 的确定采用各分组互不相同的方法。由
h j ( X ) = 0,
X ∈ Ω
j = 1, 2 , Λ , p
(1)
λ 是惩罚系数, λ
(2)
0, 若 hi ( X ) = 0 ui ( hi ) = 1, 若 hi ( X ) ≠ 0 0, 若 g i ( X ) ≤ 0 ui ( gi ) = 1, 若 g i ( X ) > 0
i = 1, 2,L , m i = m + 1, m + 2,L , p
(3)
(4)
g 5 ( X ) = 8 x 1 − 2 x 2 − 5 x 9 + 2 x 10 + 12 ≥ 0 ,
g 6 ( X ) = − 5 x 12 − 8 x 2 − ( x 3 − 6 ) 2 + 2 x 4 + 40 ≥ 0 , g 7 ( X ) = 3 x 1 − 6 x 2 − 12 ( x 9 − 8 ) 2 + 7 x 10 ≥ 0 ,
2 算例
个 体 迁 移
同种互斥和最优解保留策略
下面通过前人的粗粒度遗传算法(CGGA)和本文的混合 粗粒度遗传算法(HCGGA) 对约束最优化问题求解的对比, 来验证本文提出的混合粗粒度遗传算法。 2.1 函数F极小化函数
2 F ( X ) = x 12 + x 2 + x 1 x 2 − 14 x 1 − 16 x 2 + ( x 3 − 10 ) 2
Knapsacks约束的弧相容改进算法
Knapsacks约束的弧相容改进算法黄蔚;付兴宇;李占山【期刊名称】《吉林大学学报(理学版)》【年(卷),期】2017(55)1【摘要】通过修改背包约束弧相容算法的数据结构,将点阵图改为有向图,解决了原背包约束弧相容算法中存在冗余计算和无效操作的问题,加快了算法对问题的求解效率.对比实验结果表明:在面对同一类问题时,因为数据结构更复杂,改进算法的初始化时间虽增加,但求解时间提高了20%~50%;在面对求解难度较高的问题时,改进算法能更好地缩减求解问题的时间.%By modifying the data structure of arc consistency algorithm of Knapsacks constraints,we transformed the bitmap to a directed graph,which solved the problem of redundant computation and invalid operation in the arc consistency algorithm of the original knapsack constraint,and accelerated the algorithm to solve the problem of parative experimental results show that in the face of the same kind of problem,the initialization time of the improved algorithm is increased because the data structure is more complex,but the solution time is improved by 20%—50%.The improved algorithm can reduce the time of solving the problem in the face of the high difficulty of solving the problem.【总页数】8页(P95-102)【作者】黄蔚;付兴宇;李占山【作者单位】吉林大学计算机科学与技术学院,长春 130012;吉林大学软件学院,长春 130012;吉林大学计算机科学与技术学院,长春 130012;吉林大学软件学院,长春 130012【正文语种】中文【中图分类】TP18【相关文献】1.约束满足问题并行弧相容算法 [J], 孙伟;马绍汉2.基于GPU的约束网络模型和并行弧相容算法 [J], 李哲;李占山;李颖3.负表约束的简单表缩减广泛弧相容算法 [J], 李宏博;梁艳春;李占山4.改进求解约束满足问题粗粒度弧相容算法 [J], 李宏博;李占山;王涛5.改进遗传算法对带服务时间约束的弧路径问题的求解 [J], 徐凯;朱征宇因版权原因,仅展示原文概要,查看原文内容请购买。
约束满足问题
第五章约束满足问题教学内容:本章我们将看到不把状态仅仅当作小黑盒子,如何能引导设计出更强有力的新搜索方法,以及对问题的结构和复杂性有更深的理解教学重点:1•约束满足问题的定义。
2•搜索算法求解大型问题。
3•问题分解的办法。
教学难点:1 •约束满足问题2. CSP的回溯搜索和局部搜索5.1约束满足问题约束满足问题,简称CSP。
由一个变量集合Xi和一个约束集合Ci定义的, 每个约束Ci包括一些变量的子集,这些子集的值之间允许合并。
CSP问题中的状态表示是符合一个标准模式的,后继函数和目标测试能够以适用于所有CSP的普遍方式写出。
举例:地图染色和它的约束图5.1.1不同的CSP1、离散变量(1)有限值域AT曲1也(2)无限值域2、连续变量3、一元约束:只限单个变量的取值4、二元约束:与两个变量有关5、高阶约束:涉及三个或更多的变量举例:一个密码算术游戏T W 0 -h T WQ FOUR5.1.2现实世界的CSP(1)分配问题(2)时间表问题(3)交通调度(4)工厂调度5.1.3标准搜索表述CSP问题可以向标准搜索问题一样给出如下的增量形式化:(1)初始状态:空的赋值(2)后继函数:给任何未赋值的变量赋一个值(3)目标测试:检查当前的赋值是否完全5.2 CSP的回溯搜索CSP搜索算法生成后继时,在搜索树的每个节点上只考虑单个变量的可能赋值。
提出问题:(1)下一个该给哪个变量赋值?(2)当前变量赋值对其他未赋值的变量意味着什么?(3)可否避免重复失败?最少约束值:优先选择的值是在约束图中排除邻居变量的可选知最少的5.2.1 前向检验概念:(1)记录那些未赋值的变量的变量值(2)当任何的变量没有合法取值的时候停止搜索举例:用前向检验方法解决地图染色搜索的进程。
5.2.2约束传播虽然前向检验能检验出许多矛盾,它还是不能检验出所有的矛盾。
约束传播一一将一个变量的约束内容传播到其他变量上的一般术语。
弧相容:(1)该思想提供了一个实际比前向检查更强的约束传播的快速方法。
粗粒度区化算法
粗粒度区化算法粗粒度区化算法(Rough Set)是一种基于数学理论的数据处理方法,它能够通过对数据集对象之间的关系进行分析,从而得出一些重要的结论和规律,从而帮助人们在决策和数据分析方面取得更好的效果。
粗粒度区化算法首先是由波兰数学家Pawlak于1982年提出,他认为在现实情况下,数据处理是一个不可避免的过程,而其中最关键的问题就是如何处理那些缺失或不确定的数据,同时根据样本进行分类以及提取特征也是非常重要的,于是他就提出了粗粒度区化算法。
这种算法严格按照数学公式进行计算和推理,具有较高的精度和可靠性,在实际应用中得到了广泛的应用。
粗粒度区化算法的核心思想是将数据对象划分成较大的等价类,使得每个等价类中的对象具有相同的性质,同时在不同的等价类之间又具有明显的区别,通过对不同等价类之间的属性进行比较和分析,从而找出其中的规律和特征。
具体来说,粗粒度区化算法主要有以下几个基本步骤:1. 数据预处理:将原始数据进行清洗和过滤,去除不必要的数据和噪声,同时将数据进行标准化和归一化处理,以便后续的分析和建模。
2. 等价类划分:将数据对象根据其属性值进行划分和分类,使得每个等价类中的对象具有相同的性质,同时在不同等价类之间也有明显的差异,从而实现数据对象的粗粒度区化。
3. 特征提取:从不同等价类之间的属性值中提取出特征,找出其中的规律和差异,从而确定哪些属性对数据对象的分类和判断具有重要的影响。
4. 等价类合并:如果数据对象之间的差异较小,可以将不同等价类进行合并,从而提高数据对象之间的相似度和一致性。
5. 分类和预测:通过对数据集中的样本进行分类和预测,可以得出新数据对象的类别和特征,从而实现数据对象的分类和判断。
总之,在数据处理和分析中,粗粒度区化算法是一种非常有用和有效的工具,它可以对数据进行粗粒度的区化和分类,从而找出其中的规律和特征,帮助人们进行更加准确和可靠的预测和决策。
虽然该算法在一些实际应用中的准确度和可靠性还存在一定的局限性,但是随着数据处理和分析的不断发展和进步,相信粗粒度区化算法会有更加广泛和深入的应用。
- 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会员,主要研究领域为基于模型的诊断,智能规划与调度,约束问题求解.。