If more rules are applicable, in general it is possible to use an arbitrary rule from the set of applicable rules. On the other hand, these rules can differ from one another by their priority. Another possibility is to define an additional parameter which guarantees that only one rule from a group of rules can be fired (the used rule sets this parameter in such a way that the condition parts of the other rules from the group are not satisfied any more).
The rules of this task try to maximize or minimize some variable
which can be (but it is not a rule) represented by a parameter.
Since the value of this parameter does not make sense in the
previous tasks, the parameter has not been active until now. Thus, it
is time to activate it:
This rule has to be fired as the first rule within the task (it
is
given by its high priority). To compute the value of the param
optim
there should be a rule which is fired if this parameter is
activated or if the solution is changed. Thus this rule has the
form:
=>
(job optimize)
)
which first computes the values of those parameters on which the
parameter optim depends and then computes the value of
the
parameter optim and assigns this value to the slot
param-value
of
the parameter optim.
=>
(job optimize)
(object (is-a parameter)
(param-name optim)
(active yes))
...
)