• Ingen resultater fundet

Auxillery Definitions

3.2.2 Coherence and Reason Maintenance

By default belief revision is done with reason maintenance but plans with a label annotated withcohperforms belief revision with coherence.

Using coherence makes literals independent if they lose all dependencies during the belief revision. This is useful if an inconsistency of one belief does not require beliefs derived from it to be removed.

The style is stored in therevisionStyle boolean.

3.3 Auxillery Definitions

The belief revision based on contraction uses a few important auxillery defini-tions that are defined in the BRAgent class.

3.3.1 Independency

In the paper they present independent beliefs as beliefs with a single justifica-tion with an empty support list. Such could be percepts that does not depend on any other beliefs to be derived but there is no definition of which beliefs are independent. A particular agent using belief revision may want to make other kinds of beliefs independent.

To control this behaviour I define an independency-function that defines whether or not a Literal should get an independent justification. Again this is not in-troduced in the original paper but I will refer to Literals that fall within this definition as independent Literals and those that does not as dependent Liter-als.

I have implemented it as a function that tests if the Literal l is independent when added with Intention i. In the default BRAgent all Literals not added with a declarative-rule plan are independent.

independent(l, i) :Literal ∗Intention →boolean

The way this function is used is shown in figure 3.2 although setup does not exist as an actual method in the code.

setup(add, i)

independent (add, i)?

Make add

inde-pendent.

addJustif(add,support(i)) finish true

false

Figure 3.2: Adding a justification will update the justifies and dependencies lists of the literals in the justification using the internal mappings. Making a literal independent removes any previous justifications.

3.3.2 Reliability

The programmer of a domain specific agent might want to customize what should start the belief revision. To control this the BRAgent defines a reliability-function such that a belief revision occurs after adding an unreliable Literal.

This is not introduced in the original paper but it adds further control of the belief revision.

I have implemented it as a function that tests if the Literall is unreliable when added with intention i. In the default BRAgent all dependent Literals and all communicated Literals are unreliable.

unreliable(l, i) :Literal ∗Intention →boolean

This function is not related to the worth of a literal presented in the paper or the trust-function which the agent uses to decide whether or not to ignore tell-messages from other agents. More about the trust-function can be found in [2].

3.3 Auxillery Definitions 23

Figure 3.3: An example of a declarative-rule plan and the results.

3.3.3 Declarative-Rule Plans

As pointed out in the paper, declarative-rule plans used in belief revision must have a certain format such that the context is a conjunction of positive liter-als. In my implementation a declarative-rule plan that should use belief revi-sion when adding or deleting a Literal must have a label annotated with drp.

The added/deleted Literal is dependent and unreliable and an added Literal gets justifications according to the plan context and trigger event. The con-text is grounded with the unification applied by Jason. The result of using a declarative-rule plan is illustrated in figure 3.3.

Every belief is annotated with the time it was added. This annotation is updated if the belief is added later again.

3.3.4 Debugging

Plans with a label debug annotation showBRF prints the Literals in the belief base and their justifications before and after any belief revision in the plan. This printout represents the belief nodes and their justifications such as those in the graph of figure2.2in the analysis. It can be used to check the belief revision at run-time. An example of the debug output is shown in figure 3.4.

Any plan can be annotated with this label no matter if it is a declarative-rule

@start[drp,showBRF] +!start : a & b <- +c.

Belief base of agent before revision +c/{}

[agent] a[BBTime(1),source(self)], ([[]], []) b[BBTime(2),source(self)], ([[]], [])

Belief base of agent after revision +c/{} using reason-maintenance [agent] a[BBTime(1),source(self)], ([[]], [c])

b[BBTime(2),source(self)], ([[]], [c]) c[BBTime(3),source(self)], ([[a,b]], [])

---Figure 3.4: The result of applying this plan with debugging. It is assumed the agent is calledagent. Before the revisiona andbare independent beliefs and has a single justification with an empty support list while the list of justified literals is empty. After the revision, c occurs in both of their lists of justified literals whilechas a single dependency with the support list [a,b]

plan or not.

It is also possible to annotate a belief withshowBRFto show the results of that particular belief revision.

There is also an internal action that prints out this info but it can not show the belief base just before the revision with the new literal added.

3.3.5 Belief Preference w(s)

This function finds the least preferred Literal, in the list of literalss. It is used in the contraction algorithm to select a Literal to contract. The default definition selects the one with lowest rank.

1. Percepts have the highest rank

2. Mental notes have a higher rank than Literals with other sources except percepts

3. If the source of two Literals have the same rank, newer literals have a higher ranking than old literals.