《《约束推理》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《约束推理》PPT课件.ppt(65页珍藏版)》请在三一办公上搜索。
1、2023/7/28,史忠植 高级人工智能,1,高级人工智能,第三章 约束推理 史忠植 中国科学院计算技术所,2023/7/28,史忠植 高级人工智能,2,第三章 约束推理,3.1 概述3.2 回溯法 3.3 约束传播 3.4 回跳法 3.5 约束推理系统COPS 3.6 ILOG SOLVER,2023/7/28,史忠植 高级人工智能,3,3.1 概述,最优化问题经济学所推崇的帕累托最优:几个人拎着水桶在一个水龙头前面排队打水,水桶有大有小。他们怎样排队,才能使得总的排队时间最短。这是一个寻求“最优化”的题目,目标是节省总的排队时间,达到最优。,2023/7/28,史忠植 高级人工智能,4,3
2、.1 概述,优化问题 运筹学 遗传算法 神经网络 约束推理,2023/7/28,史忠植 高级人工智能,5,运筹学的工作步骤,1)提出和形成问题,2)建立模型,3)求解,4)解的检验,5)解的控制,6)解的实施。,2023/7/28,史忠植 高级人工智能,6,线性规划问题,例1(广告方式的选择)中华家电公司推销一种新型洗衣机,有关数据见下表.销售部第一月的广告预算为20000元,要求至少有8电视商业节目,15家报纸广告/电视广告费不得超过12000元,电台广播至少隔日有一次.现问该公司销售部应当采用怎样的广告宣传计划,才能取得最好的效果?,2023/7/28,史忠植 高级人工智能,7,表1,20
3、23/7/28,史忠植 高级人工智能,8,2023/7/28,史忠植 高级人工智能,9,2023/7/28,史忠植 高级人工智能,10,2023/7/28,史忠植 高级人工智能,11,求解-单纯形法,将所给问题化为标准形找出一个初始可行基,建立初始单纯形表检查所有检验数(若全为非负,则已得到最优解,计算停止.否则继续下一步)考察是否无解(若是,计算停止,否则继续下一步)确定入基变量,出基变量对初始单纯形表进行单纯形变换,2023/7/28,史忠植 高级人工智能,12,3.1 概述,一个约束满足问题(Constraint Satisfaction Problem,简称CSP)包含一组变量与一组变
4、量间的约束。变量表示领域参数,每个变量都有一个固定的值域。一个变量的值域可能是有限的,例如一个布尔变量的值域包含两个值;也可能是离散无限的,如整数域;也可能是连续的,如实数域。x1,x2,xn,D1,D2,Dn,.4,5,6,7 red,green,blue,2023/7/28,史忠植 高级人工智能,13,3.1 概述,约束可用于描述领域对象的性质、相互关系、任务要求、目标等。约束 满足问题 的目标就是找到所有变量的一个(或多个)赋值,使所有约束都得到满足。一元谓词。序关系语言,只包含偏序关系或实变量上的大小关系。形如“x-y c”的方程。单位系数的线性方程与不等式,即所有的系数为-1,0,1
5、。任意系数的线性方程与不等式。约束的布尔组合。代数与三角方程。,2023/7/28,史忠植 高级人工智能,14,3.1 概述,约束表示易于理解、编码及有效实现,它具有以下优点:约束表示允许以说明性的方式来表达领域知识,表达能力较强,应用程序只需指定问题的目标条件及数据间的相互关系。因而具有逻辑表示的类似性质。约束表示允许变量的域包含任意多个值,而不像命题 只取真假二值。所以它保存了问题的一些结构信息,如变量域的大小、变量间的相关性等,从而为问题求解提供启发式信息。易于并行实现。因为约束网络上的信息传播可以认为是同时的。适合于递增型系统。约束可以递增式地加入到约束网络。易于与领域相关的问题求解模
6、型相衔接。各种数学规划技术,方程求解技术等,都可以自然地嵌入约束系统。,2023/7/28,史忠植 高级人工智能,15,3.1 约束推理,约束搜索约束搜索主要研究有限域上的约束满足。对有限域而言,约束满足问题一般情况下是 一个 NP 问题。约束语言,2023/7/28,史忠植 高级人工智能,16,3.1 约束搜索,回溯法。约束传播。智能回溯与真值维护。可变次序例示。局部修正法。,2023/7/28,史忠植 高级人工智能,17,约束语言,CONSTRAINTSCHIPCOPSILOG,2023/7/28,史忠植 高级人工智能,18,CONSTRAINTS约束语言,CONSTRAINTS是一个面向
7、电路描述的约束表示语言。作为一个约束表示语言,它使用了符号处理技术来求解数学方程。在CONSTRAITS中,物理部件的功能及器件的结构都用约束表示。这些约束一般是线性方程与不等式,也包括条件表达式。约束变量一般是表示物理量的实变量。也有一些取离散值的变量。如开关的状态、三极管的工作状态等。系统采用表达式推理与值推理。并实现相关制导的回溯。,2023/7/28,史忠植 高级人工智能,19,CONSTRAINTS约束语言,CONSTRAINTS 的一个优点是在类型层次中表示约束,用约束来表示物理对象的功能与结构。其缺点是该语言缺乏类似于面向对象语言中的方法那样的成分,不能定义特定于某个类的概念。同
8、时,约束传播方法比较单一,既缺乏实域上的区间传播机制,也缺乏有限域上的 域传播机制。,2023/7/28,史忠植 高级人工智能,20,约束逻辑程序设计语言CHIP,CHIP(Constraint handling in Prolog)就是这样较有影响一个约束逻辑程序设计语言,其目的是简便、灵活而有效地解决一大类组合问题。它通过提供几种新的计算域而增强逻辑程序设计的能力;有限域、布尔项及有理项,对于每个计算域,都提供有效的约束求解技术,即有限域上的一致性技术,布尔域的布尔合一技术及有理数域上的单纯型法。除此以外,CHIP还包含一个一般的延迟计算机制。CHIP 主要应用于两个领域:运筹学与硬件设计
9、。CHIP 缺乏类型机制,而这种机制对于表达领域概念是极其重要的。,2023/7/28,史忠植 高级人工智能,21,面向对象约束语言COPS,COPS系统利用面向对象技术,将说明性约束表达与类型层次结合起来。在形式上吸收了常规语言,主要是面向对象的程序设计语言的基本形式。内部求解时采用约束推理机制,使说明性约束表达式与类型层次相结合,实现知识的结构化封装,充分发挥两者的优点,力图实现一个具有较强表达能力和较高求解效率的约束满足系统。,2023/7/28,史忠植 高级人工智能,22,面向对象约束语言COPS,COPS的设计考虑了软件工程的应用要求,尽量将一个不确定问题确定化:它允许条件语句与循环
10、语句,而不是单纯以递归的形式来实现迭代计算;通过类方法的重栽实现同一约束的不同实现,提高了程序的执行效率。COPS系统同时是一个渐增式的开放系统,用户能通过类型层次定义,实现新的数据类型和新的约束关系。约束语言COPS具有许多人工智能程序设计语言的特点,如约束传播、面向目标和数据驱动的问题求解、有限步的回溯、对象分层中的继承等。,2023/7/28,史忠植 高级人工智能,23,在实际应用中,算法的表现形式千变万化,但是算法的情况也和数据结构类似,许多算法的设计思想具有相似之处,我们可以对它们分类进行学习和研究。常用的算法大致有如下一些:贪心法分治法:如二分法检索回溯法动态规划法局部搜索法分支限
11、界法,2023/7/28,史忠植 高级人工智能,24,算法分析 评价一个程序优劣的重要依据是看这个程序的执行需要占用多少机器资源。人们最关心的就是程序所用算法运行时所要花费的时间代价和程序中使用的数据结构占有的空间代价。算法的空间代价(或称空间复杂性):当被解决问题的规模(以某种单位计算)由1增至n时,解该问题的算法所需占用的空间也以某种单位由f(1)增至f(n),这时我们称该算法的空间代价是f(n)。算法的时间代价(或称时间复杂性):当问题规模以某种单位由1增至n时,对应算法所耗费的时间也以某种单位由g(1)增至g(n),这时我们称算法的时间代价是g(n)。,2023/7/28,史忠植 高级
12、人工智能,25,穷尽搜索方法,穷尽搜索方法 即产生所有可能的树,然后根据评价标准选择一棵最优的树。Exhaustive-Search-Top(P)where P is a CSP of the form(V,D,C)1.f:=the null assignment2.return Exhaustive-Search(f,P),2023/7/28,史忠植 高级人工智能,26,穷尽搜索方法,Exhaustive-Search(f,P)1.if f is a total assignment of the variables in P2.if f satisfies the constraints
13、in P3.answer:=f4.else 5.answer:=Unsat6.else 7.v:=some variable in P that is not yet assigned a value by f8.answer:=Unsat9.for each value while answer=Unsat10.f(v):=11.answer:=Exhaustive-Search(f,P)12.return answer,2023/7/28,史忠植 高级人工智能,27,贪心法,贪心法把构造可行解的工作分阶段来完成。在各个阶段,选择那些在某些意义下是局部最优的方案,期望各阶段的局部最优的选择带
14、来整体最优。例:Dijkstra的最短路径算法、Kruskal的求最小生成树算法、信号灯问题,2023/7/28,史忠植 高级人工智能,28,回溯算法,有些问题需要彻底的搜索才能解决问题,然而,彻底的搜索要以大量的运算时间为代价,对于这种情况可以通过回溯法来去掉一些分支,从而大大减少搜索的次数。八皇后问题迷宫问题深度优先周游树或图,2023/7/28,史忠植 高级人工智能,29,回溯算法,Backtracking-Top(P)1 f:=the null assignment2 return Backtracking(f,P),2023/7/28,史忠植 高级人工智能,30,回溯算法,Backt
15、racking(f,P)1 if f is a total assignment of the variables in P2 answer:=f3 else 4 v:=some variable in P that is not yet assigned a value by f5 answer:=Unsat6 for each value while answer=Umsat7 f(v):=x8 if f satisfies the constraints in P9 answer:=Backtracking(f,P)10 return answer,2023/7/28,史忠植 高级人工智
16、能,31,回溯算法,尽管回溯法好于生成测试法,但对于非平凡问题仍然是低效的。其原因在于搜索空间中不同路径的搜索重复相同的失败子路径。一些研究者认为,造成这种反复的原因是所谓的局部不一致性。最简单的情形是所谓的结点不一致性。对一个变量vi的一个一元约束。存在域中一个值vi不满足该约束。这样,每当vi取到 a 时就会出现不一致性。另一种重复的情形 是所谓的弧不一致性。,2023/7/28,史忠植 高级人工智能,32,3.3 约束传播CONSTRAINT PROPAGATION,弧一致性Arc consistency,2023/7/28,史忠植 高级人工智能,33,弧一致性,Arc consiste
17、ncy 如果对vi 的当前域中的所有值x,存在vj的当前域中的某值y使得 vi=x和vj=y是vi与vj之间的约束所允许的,则弧(vi,vj)是弧一致的。弧一致性的概念是有向的。即(vi,vj)是弧一致的并不自动地意味着(vj,vi)是一致的。,2023/7/28,史忠植 高级人工智能,34,3.3 CONSTRAINT PROPAGATION,All of the Mackworth algorithms make use of a Revise procedure.Let Dv be the current domain of v,Let Dw be the current domain
18、of w,Let P be the constraint predicate that holds between v and w,then Revise updates Dv as follows:,2023/7/28,史忠植 高级人工智能,35,CONSTRAINT PROPAGATION,Mackworth 1977 AC-1 AC-2 AC-3,2023/7/28,史忠植 高级人工智能,36,约束传播修改算法,REVISE(Vi,Vj)1 DELETE false;2 for each x Di do 3 if there is no such yj Dj4such that(x,yj
19、)is consistent,5 then 6 delete x from Di;7 DELETE true;8 endif 9 endfor 10 return DELETE;11 end REVISE,2023/7/28,史忠植 高级人工智能,37,AC-1,1 Q;2 repeat 3 CHANGE false;4 for each(Vi,Vj)Q do5 CHANGE REVISE(Vi,Vj)CHANGE;6 endfor;7 until not(CHANGE);8 end AC-1,2023/7/28,史忠植 高级人工智能,38,AC-3,1 Q;2 While Q not emp
20、ty 3 Select and delete any arc(Vk,Vm)from Q;4 If(REVISE(Vk,Vm)Then Q(Vi,Vk)such that(Vi,Vk)arcs(G),ik,im;6 endfor;7 endwhile;8 end AC-3,2023/7/28,史忠植 高级人工智能,39,Backjumping,Backjumping-Top(P)1 f:=the null assignment2:=Backjumping(f,P)3 return answer,2023/7/28,史忠植 高级人工智能,40,Backjumping,Backjumping(f,P
21、)1 if f is a total assignment of the variables in P2 answer:=3 else 4 v:=some variable in P that is not yet assigned a value by f5 answer:=Unsat6 conflict-set:=7 for each value 8 f(v):=x9 if f satisfies the constraints in P10:=Backjumping(f,P),2023/7/28,史忠植 高级人工智能,41,Backjumping,11 else12 new-confli
22、cts:=the set of variables in a violated constraint13 if answer Unsat14 return 15 else if v new-conflicts16 return 17 else 18 conflict-set:=conflict-set(new-conflicts v)19 return,2023/7/28,史忠植 高级人工智能,42,COPS,Constraint:predicate expressionP(t1,.,tn)where P is built in function,such as sum times eq(eq
23、ual)neq(not equal)ge(great than or equal to)gt(great than)also can be defined by users,2023/7/28,史忠植 高级人工智能,43,COPS,Conditional constraint condition1:constraint1;.conditionn:constraintn where condition1,.,conditionn are boolean expressions.constraint1,.constraintn are constraints or contraints table
24、.,2023/7/28,史忠植 高级人工智能,44,COPS,RULE Rule is used to define new function,method,predicate,or add new constraint into object.RULE class:predicate(varibles)(boolean expression)constraint_1;constraint_n;CASEboolean expression_1:constraint_1;boolean expression_m:constraint_m;,2023/7/28,史忠植 高级人工智能,45,COPS
25、,For example:RULE multiple(INTEGER:*x,INTEGER:y,INTEGER:z)(neq(y,0)equal(x,divide(z,y);z=x*y,2023/7/28,史忠植 高级人工智能,46,COPS,CLASS class_name:superclass_name/attributes definition date type:attribute_name;./rule definition rule_name;./function definition function_name;./method definition method_name;.,
26、2023/7/28,史忠植 高级人工智能,47,COPS,Implementation Program written by COPS consists of classes and rules.COPS constraint programming language is a declarative language,providing classes,methods which are exist in object oriented language.It is similar with C+.COPS has the features:constraint object oriente
27、d logic programming production system,2023/7/28,史忠植 高级人工智能,48,COPS,COPS_Compiler1 2 Call yacc to parse the program and 3 to generate internal structures.4 Initializatiion5 Create Cops Constant trueNode;6 Allocate memories for global variables.,2023/7/28,史忠植 高级人工智能,49,COPS,7 Interprte the program wit
28、h the internal structures.8 Constraint networks are built up for Unsolved 9 constraints and variables.10 while some constraints in the constraint networks are triggered,11 inteprete the triggered constraints.12,2023/7/28,史忠植 高级人工智能,50,COPS,Interpreter:1 2 switch(constraint type)3 case Constant:4 ret
29、urn Constant:5 case global variable:6 interprete global variable:7 case local variable or argument:8 interprete local variable or argument:9 case object-attribute pair;10 interprete object-attribute pair:11 case function call:,2023/7/28,史忠植 高级人工智能,51,COPS,12 interprete function call:13 case method c
30、all:14 interprete method call:15 case CASE expression:16 interprete CASE expression:17.18 default:20 report error21,2023/7/28,史忠植 高级人工智能,52,ILOG SOLVER,Combines object oriented programming with constraint logic programming,containing logic variables,incremental constraint satisfaction and backtracki
31、ng.variables:C+object integer variable CtIntVar floating variable CtFloatVar boolean variable CtBoolVarMemory Management new:delete:,2023/7/28,史忠植 高级人工智能,53,ILOG SOLVER,Constraints CtTell(x=(y+z);Basic constraints:=,+,-,*,/,subset,superset,union,intersection,member,boolean or,boolean and,boolean not
32、,boolean xor,CtTell(x=0)|(y=0);CtIfThen(x 100,x=x+1);Search,2023/7/28,史忠植 高级人工智能,54,ILOG SOLVER,CTGOALn:how to execute CTGOAL1(CtInstantiate,CtIntVar*x)CtInt a=x-chooseValue();CtOr(Constraint(x=a),CtAnd(Constraint(x!=a),CtInstantiate(x);,2023/7/28,史忠植 高级人工智能,55,ILOG Schedule 1.0,Schedule CtSchedule
33、class Global object:time original-tineMin time horizon-timeMax,2023/7/28,史忠植 高级人工智能,56,ILOG Schedule 1.0,Resources CtResource CtDiscreteResource CtUnaryResource CtDiscreteEnergy CtStateResource,2023/7/28,史忠植 高级人工智能,57,ILOG Schedule 1.0,Activities CtActivity class CtIntervalActivity An activity is de
34、fined by its start time,end time and duration Activities require,provide,consume and produce resources,2023/7/28,史忠植 高级人工智能,58,Scheduling Problem,Prices paid as tasks begin$1000 per day Availability:Day 0:$20000,Day 15:+$9000,2023/7/28,史忠植 高级人工智能,59,Constraints,/To create a schedule with origin 0 an
35、d given horizon.CtSchedule*schedule=new CtSchedule(0,horizon);/To create an activity with the given duration.CtIntervalActivity*act=new CtIntervalActivity(schedule,duration);/To post a precedence constraint between act1 and act2.act2-startsAfterEnd(act1,0);,2023/7/28,史忠植 高级人工智能,60,Constraints,/To cr
36、eate a total budget of limited capacity(here 29000).CtDiscreteResource*res=new CtDiscreteResource(schedule,CtRequiredResource,capacity);/To state that only cap(here 20000)is available prior to a/given date(here 15).res-setCapacityMax(0,date,cap);/To state that an activity act consumes c units of res
37、.act-consumes(res,c);,2023/7/28,史忠植 高级人工智能,61,Algorithm Program,CtBoolean IsUnScheduled(CtActivity*act)/Return true if act does not have a fixed start time.if(act-getStartVariable()-isBound()return CtFalse;else return CtTrue;,2023/7/28,史忠植 高级人工智能,62,Algorithm Program,CtBoolean IsMoreUrgent(CtActivit
38、y*act1,CtActivity*act2)/Returns true if act1 is more urgent than act2./Returns true if act2 is unbound(=0)if(act2=0)return CtTrue;else if(act1-getStartMax()getStartMax()return CtTrue;else return CtFalse;,2023/7/28,史忠植 高级人工智能,63,Algorithm Program,CtActivity*SelectActivity(CtSchedule*schedule)/Returns
39、 the unscheduled activity with the smallest latest/statrt time.Returns 0 if all activities are scheduled.CtActivity*bestActivity=0;/Creates an iterator to iterate on all activities.CtActivityIterator*iterator(schedule);CtActivity*newActivity;while(iterator.next(newactivity)if(IsUnScheduled(newActivi
40、ty),2023/7/28,史忠植 高级人工智能,64,Algorithm Program,void SolveProblem(CtSchedule*schedule)/Solve the problem assuming constraints have been posted.CtActivity*act=SelectActivity(schedule);while(act!=0)act-setStartTime(act-getStartMin();act=SelectActivity(schedule);,2023/7/28,史忠植 高级人工智能,65,Optimal Solution to the Scheduling Problem,