JESS: Job Wanted
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
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
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
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
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
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
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
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
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
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
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]