JESS: Job Wanted

2007-09-08 Thread rand
For those of you who might be wondering, I have Ernest's explicit
permission to make this post to this group - so here goes.

My name is Rand Waltzman and I am currently Associate Professor of
Computer Science at the Royal Institute of Technology, Stockholm, Sweden. 
I am an American who has been living in Stockholm for most of the last 16
years.  I am now looking to return to the US and am actively seeking
employment.

I have a broad range of experience.  I was an early employee of
Teknowledge Inc. - the very first commercial AI company founded by Ed
Feigenbaum and others from Stanford in the early 80's.  In fact, while I
was there, I wrote the very first OPS5 tutorial, so my credentials in
rule-based programming go back quite a way.  I also was back at work for
Teknowledge recently for a period of 4 years working for Bob Balzer.  I
have done work in areas as diverse as dialog generation, geometric
reasoning, computer security, and deductive spreadsheets - all with heavy
rule-based programming components.  I also have program management
experience - I was a program manager at DARPA.  I managed the Image
Understanding program.  Basically, I have been around and could help out
in any number of ways ranging from actual system development, to project
management, to project formulation and proposal writing.  I am open to
anything in any geographical location in the US.

Attached you will find my resume.  Please do not hesitate to contact me
with any questions whatsoever about my background, interests, or for
references.

Regards,

Rand Waltzman


resume.pdf
Description: Adobe PDF document


Re: JESS: if operator

2007-03-06 Thread rand
 Hi,

 Its simple question but i cant find how:

 i have the following template:

 (deftemplate relation
 (slot r_id)
 (slot r_object)
 (slot r_relation)
 (slot r_subject)
 (slot r_is_visible)
 (slot r_makes_sound)
 (slot r_sound_volume)
 )

 and i want to define a rule like the following:
 (defrule fight-rule-8
 (if r_object == r_relation)
 =
 (assert (update-control 25))

Try:

(defrule fight-rule-8
(relation (r_object ?r) (r_relation ?r))
=
(assert (update-control 25))
)

Rand


 i tried:
 (if (relation (r_object = r_subject)))   but it doesnt work
 can someone help me?


 thanks in advance,
 M.Ismail

 _
 Profiteer van de nieuwe, fantastische voordelen van Live Mail!
 http://imagine-windowslive.com/mail/launch/default.aspx?Locale=nl-nl

 
 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]
 







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]




JESS: Commenting JESS files

2007-03-02 Thread rand
Greetings!

Is there any way to do Java style commenting in JESS files?  Like anything
after /* and before */ is ignored by the loader?  It would sure make
coding a lot easier than having to put a ; at the beginning of every
line.

Rand





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]




Re: JESS: Commenting JESS files

2007-03-02 Thread rand
Good news! Thanks. I just looked in the JESS in Action book and its not
there.  I didn't think to try the online version.  But I will double check
things next time.  I tend to be a little lazy with online version since
there is no index as there is with the book.  Guess I am a little old
fashioned that way.

Rand

 On Mar 2, 2007, at 3:31 PM, [EMAIL PROTECTED] wrote:


 Is there any way to do Java style commenting in JESS files?  Like
 anything
 after /* and before */ is ignored by the loader?  It would sure
 make
 coding a lot easier than having to put a ; at the beginning of every
 line.


 Jess 7 supports Java-style block comments; see http://
 www.jessrules.com/docs/70/basics.html#comments .

 In the IDE, there are commands to comment and uncomment a whole block
 of statements using ; .


 -
 Ernest Friedman-Hill
 Advanced Software Research  Phone: (925) 294-2154
 Sandia National LabsFAX:   (925) 294-2234
 PO Box 969, MS 9012 [EMAIL PROTECTED]
 Livermore, CA 94550 http://www.jessrules.com

 
 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]
 







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]




JESS: fact method on Token

2007-02-25 Thread rand
I have been trying to use the fact(i) method of the class Token. 
According to the API:

i - the index (0-based) of the fact to retrieve. More recent (later)
facts have larger indexes.

However, the second sentence does not seem to be true.  I have tried this
and it does not work.  I get facts that are less recent and with a larger
index than facts with a smaller index that are more recent.  Am I missing
something?

Thanks.

Rand





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]




JESS: Agenda Question

2007-02-25 Thread rand
I have done the following experiment and can't explain the results:

Try loading this file with batch from the jess prompt:

(clear)

(deffacts testfacts
(wme 2)
(wme 3)
)

(reset)

(defrule r1
(wme 2)
=
(printout t r1 rules crlf)
)

(defrule r2
(wme 2)
(wme 3)
=
(printout t r2 rules crlf)
)

I then do the following:

Jess (agenda)
[Activation: MAIN::r2  f-1, f-2 ; time=3 ; salience=0]
[Activation: MAIN::r1  f-1 ; time=2 ; salience=0]
For a total of 2 activations in module MAIN.
Jess (run)
r2 rules
r1 rules
2

So far so good.

Now I start over and batch this file:

(clear)

(deffacts testfacts
(wme 1)
(wme 2)
(wme 3)
)

(reset)

(defrule r1
(wme 2)
(wme 1)
=
(printout t r1 rules crlf)
)

(defrule r2
(wme 2)
(wme 1)
(wme 3)
=
(printout t r2 rules crlf)
)

I then get the following result:

Jess (agenda)
[Activation: MAIN::r2  f-2, f-1, f-3 ; time=4 ; salience=0]
[Activation: MAIN::r1  f-2, f-1 ; time=3 ; salience=0]
[Activation: MAIN::r1  f-2, f-1 ; time=3 ; salience=0]
For a total of 3 activations in module MAIN.
Jess (run)
r2 rules
r1 rules
r1 rules
3

This I find very surprising.  Can anybody tell me why I get two activation
of r1 in this case?  And activations with exactly the same wmes no less!

Any light anybody can shed on this would be greatly appreciated.

Rand







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]




Re: JESS: fact method on Token

2007-02-25 Thread rand
Thanks for the clarification.

Rand


 On Feb 25, 2007, at 6:30 PM, [EMAIL PROTECTED] wrote:

 I have been trying to use the fact(i) method of the class Token.
 According to the API:

 i - the index (0-based) of the fact to retrieve. More recent (later)
 facts have larger indexes.

 This is some very unfortunate wording. It doesn't mean later in the
 sense that they were added to the working memory at a later time; it
 means later as in farther down on the rule LHS. The fact that
 matches the first pattern is fact(0); the next is fact(1), etc. I
 should definitely clarify the language in the manual.

 -
 Ernest Friedman-Hill
 Advanced Software Research  Phone: (925) 294-2154
 Sandia National LabsFAX:   (925) 294-2234
 PO Box 969, MS 9012 [EMAIL PROTECTED]
 Livermore, CA 94550 http://www.jessrules.com

 
 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]
 







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]




JESS: Conflict Resolution Stragegy

2007-01-29 Thread rand
Greetings.

I would still like to know if there is any way to see the actual time tags
of the wmes while debugging and to know exactly how the conflict
resolution strategy works in detail.

Thanks.

Rand




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]




Re: JESS: Conflict Resolution Stragegy

2007-01-29 Thread rand
Thanks.  That is very helpful.  I will look into it.

Rand


 On Jan 29, 2007, at 11:08 AM, [EMAIL PROTECTED] wrote:

 Greetings.

 I would still like to know if there is any way to see the actual
 time tags
 of the wmes while debugging and to know exactly how the conflict
 resolution strategy works in detail.

 You can get the time tag for a fact by calling getTime() on the
 jess.Fact object.

 The built-in depth and breadth strategies work the same way, just in
 opposite senses. Remember that the conflict resolution strategy is
 comparing activations: a tuple containing a rule and a list of facts
 that activate it. They first compare salience; for rules of equal
 salience, they then compare the most recent time stamp of all the
 facts in each token.

 If those are also equal, what happens next has varied in different
 versions of Jess. In Jess 7, they then compare the sum of all the
 time stamps for all the facts in each token. If those are equal, the
 order is arbitrary.

 You can implement your own strategies in Java; the manual now
 contains a reasonable description of how to do this, and there are
 some better examples in the Wiki (www.jessrules.com/jesswiki ).

 -
 Ernest Friedman-Hill
 Advanced Software Research  Phone: (925) 294-2154
 Sandia National LabsFAX:   (925) 294-2234
 PO Box 969, MS 9012 [EMAIL PROTECTED]
 Livermore, CA 94550 http://www.jessrules.com

 
 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]
 







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]




Re: JESS: Conflict Resolution Question

2007-01-25 Thread rand
Thanks for the response.  When it comes to both writing and debugging
code, I rely very heavily on a clear understanding of the conflict
resolution strategy.  So, I have 3 questions.

(1) How can you see the pseudo-time tags.  I can't imagine debugging
without being able to see how the system is actually resolving conflicts.

(2) Suppose two rules become activated at the same time.  How does the
depth strategy decide what to do?  Does it take the instantiation with a
binding to the next highest pseudo-time tag (like OPS5)?

(3) Do you have a detailed description of how the pseudo-time tags are
used in the conflict resolution strategy (short of looking at your code,
that is)?  I would really like to see that.

Thanks again.

Rand

 On Jan 24, 2007, at 9:15 PM, [EMAIL PROTECTED] wrote:

 I
 only include their numbers because I believe that is all that is
 important
 - maybe that is my problem

 Indeed. In OPS5 and in systems like CLIPS, the fact number is
 directly related to the recency of a fact. If you modify a fact in
 CLIPS, the old fact is removed and a new one, with a new fact number,
 is asserted.

 Jess has a more object-oriented approach; a fact's fact number is a
 constant and doesn't change when the fact is modified. This lets you
 use those IDs as links between facts that survive property
 modifications. Therefore there isn't necessarily any relationship
 between the recency of a fact and the fact number. Each fact contains
 a pseudo-time value, basically a tag that identifies the order of
 events that happen in the engine. The agenda ordering is based on
 these pseudo-time tags. The default strategy is called depth, and
 it orders activations according to the recency of their facts,
 weighted so that activations that include more facts are given some
 preference.

 -
 Ernest Friedman-Hill
 Advanced Software Research  Phone: (925) 294-2154
 Sandia National LabsFAX:   (925) 294-2234
 PO Box 969, MS 9012 [EMAIL PROTECTED]
 Livermore, CA 94550 http://www.jessrules.com

 
 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]
 







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]




JESS: Conflict Resolution Question

2007-01-24 Thread rand
I have two rule instances on the agenda with the following bindings (I
only include their numbers because I believe that is all that is important
- maybe that is my problem):

Rule1: f-24, f-61, f-23, f-1, f-42
Rule2: f-24, f-61, f-23, f-43

I am old OPS5 hacker and cannot for the life of me understand why the
conflict resolution strategy should choose rule 1 over rule 2.  Is there
some issue of specificity?  If there is, I sure don't see it.

Any help would be greatly appreciated.

Rand






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]