资源描述
Click to edit the title text format,Click to edit the outline text format,Second Outline Level,Third Outline Level,Fourth Outline Level,Fifth Outline Level,Sixth Outline Level,Seventh Outline Level,Eighth Outline Level,Ninth Outline Level,Click to edit the title text format,Abstract,An intelligent agent operating in a complex world cannot base its decisions solely on the worlds objective and preprogrammed rules.Rather,the agent may need to gather information in order to determine its next action.Programming such an agent must be knowledge-based in the sense that the agent must be capable of gathering required information,integrating that information into its knowledge-base,and acting upon both new and prior knowledge.GOLOG is a high-level rule-based programming language that allows knowledge-based programming.A testbed for developing and running GOLOG programs has been developed.This testbed allows GOLOG programs,representing agents,to communicate with external programs representing the outside world.This approach is illustrated with several examples of communication between GOLOG agents and GUI-driven Java programs.,Introduction,In addition to the standard cases of true and false,a knowledge-based agent must consider a third case:There is not enough information to answer the query.Such an agent not only needs to,know,information,but needs to know,whether,it knows the information.In general,knowledge-based agents will not have complete information about the world.Even in a restricted domain,a truly knowledge-based system will not be fed information regarding a domain;formalism is used to distinguish between the two.The information must trickle in via sensing actions,then must be integrated into the agents knowledge base to allow for reasoning based on the new information.Knowledge-based programming attempts to codify logical constructs such as knows and Kweather,as well as sensing axioms,into a programming language.Knowledge-based agents must communicate with the outside world in order to build their knowledge bases,either through user input or by communicating with other agents.The situation calculus,a predicate calculus formalization of states,actions,and effects developed by McCarthy and Hayes in 1969,is an ideal system of logic to implement knowledge-based programming.,A testbed for abstraction,Knowledge-based programming demands a unique type of abstraction:For an agent to be truly knowledge-based,it must be cut off from the world,given only a restricted set of fluents that it can sense and change.We have designed a network-transparent system(that is,a system in which it makes no difference whether an agent is local or remote)in which an omniscient graphical interface,written in Java,is presented to the user.A knowledge-based agent,written in GoLog,communicates with the world using a predefined network protocol and a restricted set of interfaces.Whenever the GoLog agent senses,a message representing the sensing action is sent to the Java program,which sends back the sensing result.Ultimately,this result is integrated into the GoLog agents knowledge-base,allowing inferences to be drawn based on the new data.If the GoLog agent performs an action that will change the state of the world,the action is sent to the Java program,which checks the validity of the action that the agent is performing and responds with an affirmative or negative confirmation.If the action succeeds,the information displayed to the user will be updated.,GoLog,GoLog,an acronym for“ALGOL in Logic,is a high-level logic-based programming language that implements the situation calculus.It has predefined constructs for the implementation of logical axioms,such as successor-state and sensing axioms,that are found in the situation calculus.There are many implementations of GoLog,typically built upon the Prolog rule-based programming language.Among the most popular of these implementations are Incremental-Deterministic GoLog(IndiGoLog),a very mature implementation that allows concurrency and deterministic reasoning,and an implementation of GoLog with extensive knowledge-based reasoning capabilities defined by Raymond Reiter(henceforth referred to as KGoLog).Some important GoLog constructs are:,poss(action):-condition Defines a precondition for a given action.,prim_fluent(fluent)Defines a new fluent.,prim_action(action)Defines a primitive action.,senses(action,fluent)Defines action as a sensing action that will modify fluent.,proc(body)Defines a complex procedure.,causes_val(axiom,fluent,newval)Defines a successor-state axiom that modifies fluent.,initially(fluent,value):-condition Sets a fluent to an initial value,binding it to a condition,in s0.,pi(var,domain)Iterates a variable over all values in a domain,checking a condition.,Communications,With the GoLog foundation in place,we required a method to link Java and GoLog together.Additionally,we wanted to ensure network-transparency between the Java agents themselves.This allowed us to constr
展开阅读全文