2019/8/1史忠植高级人工智能1高级人工智能第三章约束推理史忠植中国科学院计算技术所2019/8/1史忠植高级人工智能2第三章约束推理3.1概述3.2回溯法3.3约束传播3.4回跳法3.5约束推理系统COPS3.6ILOGSOLVER2019/8/1史忠植高级人工智能33.1概述最优化问题经济学所推崇的帕累托最优:几个人拎着水桶在一个水龙头前面排队打水,水桶有大有小。他们怎样排队,才能使得总的排队时间最短。这是一个寻求“最优化”的题目,目标是节省总的排队时间,达到最优。2019/8/1史忠植高级人工智能43.1概述优化问题运筹学遗传算法神经网络约束推理2019/8/1史忠植高级人工智能5运筹学的工作步骤1)提出和形成问题,2)建立模型,3)求解,4)解的检验,5)解的控制,6)解的实施。2019/8/1史忠植高级人工智能6线性规划问题•例1(广告方式的选择)中华家电公司推销一种新型洗衣机,有关数据见下表.销售部第一月的广告预算为20000元,要求至少有8电视商业节目,15家报纸广告/电视广告费不得超过12000元,电台广播至少隔日有一次.现问该公司销售部应当采用怎样的广告宣传计划,才能取得最好的效果?2019/8/1史忠植高级人工智能7表1广告方式广告费用(元/次)可用最高次数/月期望的宣传效果/单位电视台a(白天,1分钟)5001650电视台b(晚上,30钞)10001080每日晨报/(半版)1002430星期日报/(半版)300440广播电台/(1分钟)8025152019/8/1史忠植高级人工智能8解:设54321,,,,xxxxx分别是第一个月内电视台a,电视台b,每日晨报,星期日报,广播电台进行广告宣传的次数,则其数学模型为:max543211540308050xxxxxs.t..0,,,,,2515,4,24,10,16,120001000500,15,8,20000803001001000500543215432121432154321xxxxxxxxxxxxxxxxxxxxx2019/8/1史忠植高级人工智能9线性规划问题(LP)的一般形式为:min(max)2211xcxcz…nnxcs.t.212111xaxa…11),(bxann222121xaxa…22),(bxann……2211xaxamm…mnmnbxa),(,2,1,0jxj……n2019/8/1史忠植高级人工智能10线性规划问题的标准形式为:minXCzTs.t.0XbAX(假定b为非负)注:任何形式的线性规划问题均可化为标准型2019/8/1史忠植高级人工智能11求解--单纯形法•将所给问题化为标准形•找出一个初始可行基,建立初始单纯形表•检查所有检验数(若全为非负,则已得到最优解,计算停止.否则继续下一步)•考察是否无解(若是,计算停止,否则继续下一步)•确定入基变量,出基变量•对初始单纯形表进行单纯形变换2019/8/1史忠植高级人工智能123.1概述一个约束满足问题(ConstraintSatisfactionProblem,简称CSP)包含一组变量与一组变量间的约束。▪变量表示领域参数,每个变量都有一个固定的值域。一个变量的值域可能是有限的,例如一个布尔变量的值域包含两个值;也可能是离散无限的,如整数域;也可能是连续的,如实数域。{x1,x2,…xn},{D1,D2,…Dn},.{4,5,6,7}red,green,blue}2019/8/1史忠植高级人工智能133.1概述▪约束可用于描述领域对象的性质、相互关系、任务要求、目标等。约束满足问题的目标就是找到所有变量的一个(或多个)赋值,使所有约束都得到满足。一元谓词。序关系语言,只包含偏序关系或实变量上的大小关系。形如“x-yc”的方程。单位系数的线性方程与不等式,即所有的系数为-1,0,1。任意系数的线性方程与不等式。约束的布尔组合。代数与三角方程。2019/8/1史忠植高级人工智能143.1概述约束表示易于理解、编码及有效实现,它具有以下优点:约束表示允许以说明性的方式来表达领域知识,表达能力较强,应用程序只需指定问题的目标条件及数据间的相互关系。因而具有逻辑表示的类似性质。约束表示允许变量的域包含任意多个值,而不像命题只取真假二值。所以它保存了问题的一些结构信息,如变量域的大小、变量间的相关性等,从而为问题求解提供启发式信息。易于并行实现。因为约束网络上的信息传播可以认为是同时的。适合于递增型系统。约束可以递增式地加入到约束网络。易于与领域相关的问题求解模型相衔接。各种数学规划技术,方程求解技术等,都可以自然地嵌入约束系统。2019/8/1史忠植高级人工智能153.1约束推理约束搜索约束搜索主要研究有限域上的约束满足。对有限域而言,约束满足问题一般情况下是一个NP问题。约束语言2019/8/1史忠植高级人工智能163.1约束搜索回溯法。约束传播。智能回溯与真值维护。可变次序例示。局部修正法。2019/8/1史忠植高级人工智能17约束语言CONSTRAINTSCHIPCOPSILOG2019/8/1史忠植高级人工智能18CONSTRAINTS约束语言CONSTRAINTS是一个面向电路描述的约束表示语言。作为一个约束表示语言,它使用了符号处理技术来求解数学方程。在CONSTRAITS中,物理部件的功能及器件的结构都用约束表示。这些约束一般是线性方程与不等式,也包括条件表达式。约束变量一般是表示物理量的实变量。也有一些取离散值的变量。如开关的状态、三极管的工作状态等。系统采用表达式推理与值推理。并实现相关制导的回溯。2019/8/1史忠植高级人工智能19CONSTRAINTS约束语言CONSTRAINTS的一个优点是在类型层次中表示约束,用约束来表示物理对象的功能与结构。其缺点是该语言缺乏类似于面向对象语言中的方法那样的成分,不能定义特定于某个类的概念。同时,约束传播方法比较单一,既缺乏实域上的区间传播机制,也缺乏有限域上的域传播机制。2019/8/1史忠植高级人工智能20约束逻辑程序设计语言CHIPCHIP(ConstrainthandlinginProlog)就是这样较有影响一个约束逻辑程序设计语言,其目的是简便、灵活而有效地解决一大类组合问题。它通过提供几种新的计算域而增强逻辑程序设计的能力;有限域、布尔项及有理项,对于每个计算域,都提供有效的约束求解技术,即有限域上的一致性技术,布尔域的布尔合一技术及有理数域上的单纯型法。除此以外,CHIP还包含一个一般的延迟计算机制。CHIP主要应用于两个领域:运筹学与硬件设计。CHIP缺乏类型机制,而这种机制对于表达领域概念是极其重要的。2019/8/1史忠植高级人工智能21面向对象约束语言COPSCOPS系统利用面向对象技术,将说明性约束表达与类型层次结合起来。在形式上吸收了常规语言,主要是面向对象的程序设计语言的基本形式。内部求解时采用约束推理机制,使说明性约束表达式与类型层次相结合,实现知识的结构化封装,充分发挥两者的优点,力图实现一个具有较强表达能力和较高求解效率的约束满足系统。2019/8/1史忠植高级人工智能22面向对象约束语言COPSCOPS的设计考虑了软件工程的应用要求,尽量将一个不确定问题确定化:它允许条件语句与循环语句,而不是单纯以递归的形式来实现迭代计算;通过类方法的重栽实现同一约束的不同实现,提高了程序的执行效率。COPS系统同时是一个渐增式的开放系统,用户能通过类型层次定义,实现新的数据类型和新的约束关系。约束语言COPS具有许多人工智能程序设计语言的特点,如约束传播、面向目标和数据驱动的问题求解、有限步的回溯、对象分层中的继承等。2019/8/1史忠植高级人工智能23在实际应用中,算法的表现形式千变万化,但是算法的情况也和数据结构类似,许多算法的设计思想具有相似之处,我们可以对它们分类进行学习和研究。常用的算法大致有如下一些:•贪心法•分治法:如二分法检索•回溯法•动态规划法•局部搜索法•分支限界法2019/8/1史忠植高级人工智能24算法分析评价一个程序优劣的重要依据是看这个程序的执行需要占用多少机器资源。人们最关心的就是程序所用算法运行时所要花费的时间代价和程序中使用的数据结构占有的空间代价。算法的空间代价(或称空间复杂性):当被解决问题的规模(以某种单位计算)由1增至n时,解该问题的算法所需占用的空间也以某种单位由f(1)增至f(n),这时我们称该算法的空间代价是f(n)。算法的时间代价(或称时间复杂性):当问题规模以某种单位由1增至n时,对应算法所耗费的时间也以某种单位由g(1)增至g(n),这时我们称算法的时间代价是g(n)。2019/8/1史忠植高级人工智能25穷尽搜索方法穷尽搜索方法即产生所有可能的树,然后根据评价标准选择一棵最优的树。Exhaustive-Search-Top(P){wherePisaCSPoftheform(V,D,C)}1.f:=thenullassignment2.returnExhaustive-Search(f,P)2019/8/1史忠植高级人工智能26穷尽搜索方法Exhaustive-Search(f,P)1.iffisatotalassignmentofthevariablesinP2.iffsatisfiestheconstraintsinP3.answer:=f4.else5.answer:=Unsat6.else7.v:=somevariableinPthatisnotyetassignedavaluebyf8.answer:=Unsat9.foreachvaluewhileanswer=Unsat10.f(v):=11.answer:=Exhaustive-Search(f,P)12.returnanswer2019/8/1史忠植高级人工智能27贪心法贪心法把构造可行解的工作分阶段来完成。在各个阶段,选择那些在某些意义下是局部最优的方案,期望各阶段的局部最优的选择带来整体最优。例:Dijkstra的最短路径算法、Kruskal的求最小生成树算法、信号灯问题2019/8/1史忠植高级人工智能28回溯算法有些问题需要彻底的搜索才能解决问题,然而,彻底的搜索要以大量的运算时间为代价,对于这种情况可以通过回溯法来去掉一些分支,从而大大减少搜索的次数。•八皇后问题•迷宫问题•深度优先周游树或图2019/8/1史忠植高级人工智能29回溯算法Backtracking-Top(P)1f:=thenullassignment2returnBacktracking(f,P)2019/8/1史忠植高级人工智能30回溯算法Backtracking(f,P)1iffisatotalassignmentofthevariablesinP2answer:=f3else4v:=somevariableinPthatisnotyetassignedavaluebyf5answer:=Unsat6foreachvaluewhileanswer=Umsat7f(v):=x8iffsatisfiestheconstraintsinP9answer:=Backtracking(f,P)10returnanswer2019/8/1史忠植高级人工智能31回溯算法尽管回溯法好于生成测试法,但对于非平凡问题仍然是低效的。其原因在于搜索空间中不同路径的搜索重复相同的失败子路径。一些研究者认为,造成这种反复的原因是所谓的局部不一致性。最简单的情形是所谓的结点不一致性。对一个变量vi的一个一元约束。存在域中一个值vi不满足该约束。这样,每当vi取到a时就会出现不一致性。另一种重复的情形是所谓的弧不一致性。2019/8/1史忠植高级人工智能323.3约束传播CONSTRAINTPROPAGATION(red,green)(red,blu