Has anybody tried using enums as shadow facts? I've been getting some apparently bizarre results. Forgive me for showing actual code, but I don't understand the problem well enough to produce a simple example.

Producers have activities that produce waste of various kinds. There is an enum WastePackagingMaterials defined as follows:

public enum WastePackagingMaterial {
paper_board(.49, 5), glass(.24, 7), steel(.05, 3), aluminium(.01, 9), plastic(.09, 10), wood(.12, 6);
...


Each activity of each producer produces one unit of one of these types of waste.

A rule has the following RHS

(assert
       (packaging-waste-produced
           (wpm ?wpm)
           (quantity ?level)
           (activity ?activity)
           (timestep ?t)
           (clauseOwner ?producer)
           (tickStamp ?t)))

A second rule  fires once for each producer and has the following RHS

(bind ?wpm-list (create$ (call WastePackagingMaterial values)))
   (foreach ?wpm ?wpm-list
       (printout t (?wpm toString) crlf)
       (bind ?quantity (total-packaging-waste ?producer ?wpm))
           (assert
               (total-packaging-waste-produced
                   (wpm ?wpm)
                   (quantity ?quantity)
                   (timestep ?t)
                   (clauseOwner ?producer)
                   (tickStamp ?t))

where total-packaging-waste is a function that calls the following defquery:

(defquery waste-packaging-material-query
   (declare (max-background-rules 100000)(variables ?producer ?wpm))
    (packaging-waste-produced
           (wpm ?wpm)
           (quantity ?quantity)
           (activity ?activity)
           (timestep ?)
           (clauseOwner ?producer)
           (tickStamp ?)))

This defquery calls the relevant instantiations from the first rule except -- and this is what seems bizarre -- it gets the facts for the first constant of the enum for the first rule instantiation only but it gets all of the facts for all of the other constants (i.e., all but paper_board) for all of the producers.

If there is some stupid bug in my code, then I shall be as grateful as I will be ashamed if someone could point it out to me. If it isn't my bug, then there is a problem with using enums in the current (b6) version of Jess7.


--
Professor Scott Moss
Centre for Policy Modelling
Manchester Metropolitan University
Aytoun Building
Manchester M1 3GH
UNITED KINGDOM

telephone: +44 (0)161 247 3886
mobile: +44 (0)7740 942564
fax: +44 (0)161 247 6802

http://cfpm.org/~scott

--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]
--------------------------------------------------------------------

Reply via email to