Thanks for helping with this Ernest. Just a short note for Jess users who might
also use FuzzyJess.
I've retired and support for FuzzyJ/FuzzyJess will only be offered through the
National Research
Council for a little while longer. I'm waiting for a licence from NRC to allow
me make FuzzyJ/Fuzzy
You don't need to do anything to the arguments tab unless you want it to be
specifically
to run some program all the time. I was speculating that you might have done
this
since I didn't see any commands that you typed to load the program, reset, and
run, etc.
So what you are doing is fine.
As
n a file of Jess code
> and choose
> > "Run...", then create a "Jess Application" launch
> configuration, and
> > type "nrc.fuzzy.jess.FuzzyMain" as the "Main class"; the Jess code
> > will be run with FuzzyMain.
> >
> > I ha
That error usually means that you are not using the FuzzyJess Main class and
are still using the Jess Main
class.
>From the manual ...
How to use the Fuzzy Extensions with Jess
To use the extension with Jess is really quite simple. You need to have access
to the FuzzyJ Toolkit and FuzzyJess
Sorry for the delay in answering but I'm away on vacation (for another week or
so) .. but
the details are in the FuzzyJ User Guide ... see the chapter on FuzzyJess and
the section
How to use the Fuzzy Extensions with Jess
This is a Java problem but you must use the FuzzyJess Console of
This is a reasonable approach. You could also pass the input value to Jess
with store/fetch and create the fuzzy variable in Jess.
Bob Orchard
National Research Council Canada Conseil national de recherches Canada
Institute for Information Technology Institut de technologie de l'informatio
The solution is simple ... you need to use a FuzzyRete object and not a Rete
object ...
see the user guide FuzzyJess section ...
How to use the Fuzzy Extensions with Jess
To use the extension with Jess is really quite simple. You need to have access
to the FuzzyJ Toolkit and FuzzyJess packages
The tests require using a test construct ...
(defrule locality-street
(and (agreement (of-type "locality")(of-value ?ov)(with-type
"street")(with-value ?wv))
(potential-element (type "locality")(value ?locality))
(potential-element (type "street")(value ?street))
(test
You should be able to add fuzzy rules exactly the same as non-fuzzy rules from
Java.
You could use the Defrule class to create the rule from a text string and then
use
addRule method with your Rete (FuzzyRete) instance. You might also use the
batch method of your Rete (FuzzyRete) instance to load
As you've shown the second reset is causing an issue. The reset removes
all facts and asserts the
initial-fact and any facts that have been defined in your deffacts list
(none in this case).
So it still works correctly.
If you were to list the facts at the end of the 2nd example you'd see
that on
Your description of the problem is sparse so I won't make any
specific recommendations but with fuzzy systems you can certainly
construct rules like:
If there is a person holding a knife then aggression will be high.
When all of the rules fire the resultant measure of aggression is
automatically
Title: Message
There are no certainty or confidence factors implemented in Jess.
There is an extension
that
allows fuzzy reasoning to handle uncertainty, called FuzzyJess. If this
might
suit
your needs see:
http://www.iit.nrc.ca/IR_public/fuzzy/fuzzyJToolkit2.html
It is
mentioned in Jes
Take a look at where the quotes are in your category slot perhaps
(category "Desktop" | "videotape")
would be better for your problem. Also do you really want to do
an exact string match with a capital 'D' in desktop?
-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PR
) 993-8557
(613) 952-0215 Fax / télécopieur
[EMAIL PROTECTED]
Government of Canada | Gouvernement du Canada
> -Original Message-
> From: Orchard, Bob
> Sent: Monday, July 24, 2006 2:12 PM
> To: Orchard, Bob; 'jess-users@sandia.gov'
> Subject: RE: JESS: propaga
nt of Canada | Gouvernement du Canada
-Original Message-
From: Orchard, Bob
Sent: Tuesday, July 18, 2006 9:52 AM
To: 'jess-users@sandia.gov'
Subject: RE: JESS: propagation of FuzzyValue property changes
I'm not sure what your problem is exactly but I could suggest that
I'm not sure what your problem is exactly but I could suggest that you read
the FuzzyJ User guide ... chapter on FuzzyJess and especially the section
entitled ... Java Beans and Jess Shadow Facts with Fuzzy Slots - special
consideration.
If this doesn't help let me know. I'm on vacation and only
Glad to hear it worked out ... I'm on vacation and not reading email too often
at the moment.
Bob Orchard
National Research Council Canada Conseil national de recherches Canada
Institute for Information Technology Institut de technologie de l'information
1200 Montreal Road, Building M-50
See
the FuzzyJ Toolkit documentation ... chapter on Fuzzy Sets. Note that recently a
CenterOfArea defuzzification
was
also added.
To
supplement the documentation I should note that the 'moment' calculation for
each of the shapes that
might
make up the pieces of a fuzzy set are:
Give
It
sounds like your copy of the documentation was missing the appropriate diagrams.
Did
you try the on-line version of the manual to see if they are
showing?
http://www.iit.nrc.ca/IR_public/fuzzy/fuzzyJDocs/index.html
It is
possible that you have unpacked the documentation without
As Dave says it's not clear what you are trying to do but one rule could
do all
of this and I suspect there would be performance gains ...
(defrule oneRule
(R (a ?a) (_r ?o))
=>
(?o a (integer (sub-string 2 (str-length ?a) ?a)))
)
Simpler if slot 'a' contains an integer, then
(defru
You do a reset just before you do a run and after you've asserted
the fact (same fact asserted twice). The reset will remove the fact
that was asserted and the rule will not fire.
Bob Orchard
National Research Council Canada Conseil national de recherches Canada
Institute for Information Tech
You have an extra ')' on the end of the following four lines
...
((?*frame* getContentPane) add ?*nlabel*))((?*frame* getContentPane)
add ?*apane*))((?*frame* getContentPane) add ?*bpane*))((?*frame*
getContentPane) add ?*cpane*))
Bob Orchard National Research Council Canada
Cons
Some good advice from Jason. However, if your just trying to learn
how to do these things in Java/Jess then I did notice when trying to
execute your code that there was a spelling error (missing 's')
in GridBagConstraints in the line:
(defglobal ?*contraints* = (new GridBagContraints))
Al
I may have misinterpreted your problem with my last response. I assumed that
there
can be many of the same encodings with different qualities and you need the
best of
these. Correct?
Bob Orchard
National Research Council Canada Conseil national de recherches Canada
Institute for Information
Check your 'not' pattern. It does not restrict the matching to the
same encoding as the one matched in the previous patters. so it requires
that the
ranking be better than ANY encoding. Change as follows:
(defrule find-best-quality
(device
(encoding ?encoding))
(e
Notice the lack of a space before the '?' in:
Program text: ( defrule show-adv-attributes?fact <-
You failed the parse of the program because of this. It thinks your
rule name is show-adv-attributes?fact.
Bob Orchard
National Research Council Canada Conseil national de recherches Canada
I
Let me jump in just for fun here as well. The old ART (original
flavour of the mid 80's that Jason refers to) had something called
viewpoints that allowed one to explore multiple lines of reasoning
at once. It could, I imagine, have been suitable for today's
distributed computing environments or su
the array of set points. Also JOONE (Java Object Oriented
> Neural Engine)
> uses a matrix class (not JAMA) for calculations of its input-output
> weights. I intend to replace that matrix class with the one from JAMA.
>
> Perhaps , I can send you the files of the additonal operato
Can you identify the additions you made to FuzzyJ ... they might
be worth adding for everyone.
Thanks, bob.
Bob Orchard
National Research Council Canada Conseil national de recherches Canada
Institute for Information Technology Institut de technologie de
l'information
1200 Montreal Road, B
Something I forgot to add in the last message is that I'm surprised
that there would be so many museum visitors at the same time that this
is actually a problem.
Another solution might be to control the visitors so that only one
is being processed at a time. Create a queue and when the Z rule fi
Similar to Ernest's suggestion ... instead of creating separate
Rete objects you could create multiple rule sets within a single
Rete object. Let's assume that each visitor is given a unique
sequential integer id as they arrive at the museum ... first one
gets id 1, second 2, etc. your could duplic
What needs to happen for the fuzzy rules to operate is as follows:
1. the system determines the temperature on a floor (and the rate
of change of the temperature) and modifies the thermometer object
causing the Jess shadow facts for the object to be changed. This
would normally be done by
Does random return a number from 0.0 to 1.0 or from 0 to 65536?
If the latter then you could change pick-a-card to be:
(deffunction pick-a-card () (+ 1 (integer (* (/ (random) 65537)
52
Bob.
Bob Orchard
National Research Council Canada Conseil national de recherches Canada
Inst
Just a number of syntax errors ...
The one causing the immediate problem is relate to the if...then...else
construct. With multiple statements in a then or else part of an if
statement you must not enclose them in an extra set of
parentheses.
So: (if (< ?a ?b)
then
(bind ?x 5)
I've seen this happen when I do a 'watch rules' while the simulation
is running. It appears that the rules do not get fired as often as
the thread that is doing the simulation. So the decisions the rules
make are no longer 'timely'. In the simple simulator program the
threads all run about once a
I've made a few changes to the program provided with JIA for fuzzy control
to allow one to change the setpoint as well as the outside temperature.
In this case there will be 2 text boxes. The top one is the outside temp and
the bottom the setpoint temp. It involved small changes to 3 files that
are
I think you can expect some variation in the ability to control
the temperature at different outside temperatures. But as far as I
can see form the runs that I've done, it still does quite well
throughout the range. At 73F outside temp I don't see large
deviations from the setpoint (70F). It seems
I'll be happy to answer some questions about this but it may not be
for a day or two ... some other pressing things at the moment.
But as a quick note, Ernest is correct about the simulation being
limited in it's accuracy. But it is good for a simple demonstration
like this. There are a lot of s
Try the following:
(+ 3 (JoFi))
since you need to call the JoFi function.
Bob
> -Original Message-
> From: Sander Rensen [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, November 18, 2003 10:18 AM
> To: [EMAIL PROTECTED]
> Subject: JESS: Problem with math
>
>
>
> Hi all,
>
> I need a fu
Here are a couple of books and web sites that might help. The books aren't
necessarily elementary but they are very good.
Web sites:
1.
http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol1/sbaa/article1.html#Abst
ract
2. http://www.austinlinks.com/Fuzzy/
3. http://www.austinlinks.com/Fuzzy/tutori
You could do something like ...
call (new Integer ?int) byteValue)
Bob.
> -Original Message-
> From: jh398 [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, October 07, 2003 3:34 PM
> To: [EMAIL PROTECTED]
> Subject: JESS: how to call method of java.lang.Integer
>
>
> Hi,
> when i try
You seem to be missing a closing bracket in the 'act' pattern
in your rule.
e.g. (act (a ?x) (b ?y)) < need the extra ) here
Bob.
> -Original Message-
> From: Jeffrey Hau [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, September 30, 2003 12:48 PM
> To: [EMAIL PROTECTED]
> Subject: J
I don't know if it is suitable to publish a Call for Papers on this
list but the attached document describes a Call for Papers for:
The 17th International Conference on Industrial & Engineering
Applications of Artificial Intelligence & Expert Systems
May 17-20, 2004
Ottawa, Canada
Bob Orchard
Sorry about mixing the order in Alan's example and mine...
this would have been confusing.
> -Original Message-
> As you note, the per-pattern syntax could be ugly. Maybe PATTERN-SLOT
> patterns could be enclosed by square brackets instead of parentheses,
> or something like that? We're no
My 2 cents worth ...
First the 'single' slot activation is a bit mis-leading to me. I would
prefer to see it labelled 'any' slot activation since any slot that
is modifed can cause an activation (actually a 'match' of the pattern and
not necessarily an activation -- rules are activated). Following
The modified fact (rp-control (phase generate)) is being
passed through the rete net and is in fact causing activity
in another rule entirely. This 'activity' is in a rule that
has the comparison (< ?_5_fd ?f).
For example you could have a rule like:
(defrule test1
(factA (value ?fd))
(factB
I haven't received a copy yet...
Bob Orchard
National Research Council CanadaConseil national de recherches
Canada
Institute for Information TechnologyInstitut de technologie de
l'information
1200 Montreal Road, Building M-50 M50, 1200 chemin Montrial
Ottawa, ON, Canada K1A 0R6
Well, the code you showed doesn't appear to correspond to
the error message you get ...
but I suspect your problem is that tempFact should be
?tempFact. The <- construct requires a variable on the
left.
It's not clear how this 'exact same code' could have run on
Linux with such a syntax error.
looks like the URL to the docs should be
http://herzberg.ca.sandia.gov/jess/docs/manual.pdf
Bob Orchard
National Research Council CanadaConseil national de recherches
Canada
Institute for Information TechnologyInstitut de technologie de
l'information
1200 Montreal Road, Building M-50
Have you tried printing the value of the string being passed to
executeCommand to see that it has what you expect it to be:
e.g. System.out.println("(load-project " + Protegepath + ")");
Perhaps it will not be the same as the string:
"(load-project C:/dev/Protege-2000/projects/OrgOnt.pprj)"
The
In the FuzzyJess extension I added that function ... getCurrentActivation()
I stored the current activation when aboutToFire is called and reset it when
justFired is called. So when there is no executing rule it returns null.
Perhaps this can move to standard Jess in some compatible way and I can
My mistake ... should have said
(> 500 ?x) returns TRUE if ?x is < 500
Bob.
-Original Message-
From: Orchard, Bob [mailto:[EMAIL PROTECTED]]
Sent: Monday, December 02, 2002 8:04 AM
To: '[EMAIL PROTECTED]'
Subject: RE: JESS: What is the difference ?
You have t
You have the order of your arguments reversed.
(> 500 ?x) returns TRUE if ?x is <= 500
so you want to use (< 500 ?x)
Bob.
-Original Message-
From: vijaykrishna [mailto:[EMAIL PROTECTED]]
Sent: Monday, December 02, 2002 2:21 AM
To: [EMAIL PROTECTED]
Subject: JESS: What is the difference
I
believe you just want ONE sym-cat in your rule to concatenate ALL of
the
trimmed strings into a symbol
e.g.
(sym-cat (call (call
?action getHost) trim)
.(call
(call ?action getPort) trim))
. (call
(call ?action getActionInitiator) trim))
. ...
)
Please note that there is a new release of the
FuzzyJ Toolkit/FuzzyJess. This is version 1.3.
It contains some minor fixes and a few new
features. See the documentation for details
in the section labelled 'New Features, Changes
and Helpful Hints'.
Visit http://ai.iit.nrc.ca/IR_public/fuzzy/
and
The variable 'r' in your main method is a local variable so
the static variable 'r' has not been initialized.
Change your code to read:
r = new rete();
-Original Message-
From: Wang Shaowei [mailto:[EMAIL PROTECTED]]
Sent: Thursday, June 13, 2002 6:05 PM
To: [EMAIL PROTECTED]
Subjec
Title: RE: JESS: Foo bar
Take a look at this ...
http://info.astrian.net/jargon/terms/f/foo.html
Bob.
> -Original Message-
> From: Sander Faas [mailto:[EMAIL PROTECTED]]
> Sent: Monday, February 25, 2002 9:49 AM
> To: 'Jess users'
> Subject: JESS: Foo bar
>
>
> Hello,
?inRef1 <- (temp ?inFVal1)
> ?inRef2 <- (flow ?inFVal2)
> =>
> (bind ?hotValve-crist-output (?outFVal1 momentDefuzzify)) ;;defuzzify
> theoutput Fuzzy Value
> (store CRISP_HOTVALVE ?hotValve-crist-output);;store the crisp output
> forJava
> (store FUZZY_HOTVALVE ?outFVal1)
>
> (bind ?coldValve-cr
John,
When you use 'or' as you did in a rule, Jess actually
generates a rule for each of the or conditions. So in
your case if you executed the (rules) command you'd
see rules with names like:
gps1 and gps&1
The second rule is the 'missing' link. As you can see, if
you had a rule with 2
Sione,
The answer to all of your questions in 'no'. It might make an
intersting project but there are no plans that I know of to
do this.
Bob.
-Original Message-
From: S F Palu [mailto:[EMAIL PROTECTED]]
Sent: January 8, 2002 5:55 PM
To: [EMAIL PROTECTED]
Subject: JESS: Re: Any tools
Michael,
Let me try to clarify a bit more. I did miss an error in
your original example.
(defrule if-load-high-then-do-something
(currentLoad ?t&:(fuzzy-match ?t ?*resource-load* ))
=>
(printout t "rule ´high´ fired.")
(assert (output (new nrc.fuzzy.FuzzyValue ?*redelegation-capacity
Michael,
The process usually involves:
1 fuzzify your crisp value
2 do some fuzzy inferencing
3 defuzzify
All you are missing is the process of fuzzifying the
crisp value. There are many ways to do this, depending
on what your crisp value represents and the 'error'
or accuracy of it. For examp
Watch for Ernest's book on Jess ... to be published early next year.
-Original Message-
From: Oliver Hoffmann [mailto:[EMAIL PROTECTED]]
Sent: Sunday, September 23, 2001 12:29 PM
To: Jess Mailing List
Subject: Re: JESS: Re: Jess manual
At 08:44 AM 9/23/2001 -0700, [EMAIL PROTECTED] wrot
'calling' of the macro). I'm not sure I like
this idea ...
Anyhow, we're just throwing ideas into the wind at this
stage.
Bob.
-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]
Sent: Saturday, September 22, 2001 8:56 PM
To: Orchard, Bob
Cc: Jess Mai
My quick reaction to the suggestions for extensions
that "call one rule from another" is that:
1. in a 'pure' rule base system (whatever that is)
the rules are independent and this type of
tying rules together can lead to maintenance
problems. Consider Ernest's suggestion:
(defrul
The issue here seems to be that there is a subtle
difference between the 2 rules:
(defrule r1 (exists (a ?)) => )
and
(defrule r2 (a ?x) => )
If the facts (a b) (a c) and (a d) are asserted
before the reset is done the rule r2 will
result in 3 activations, whereas the rule r1
will not result
Finding facts requires a linear search through the list of facts.
Perhaps if the facts were contained in a hash table, indexed by
the fact's 'relation' name (1st element of the fact), the searching
for facts would be greatly improved.
Bob.
-Original Message-
From: Gyhra, Norman (Student
I forgot to record the URL for the FuzzyJ Toolkit in my last message.
For those who are interested check out:
http://www.iit.nrc.ca/IR_public/fuzzy/fuzzyJavaToolkit.html
Bob Orchard
National Research Council of Canada
Institute for Information Technology
Montreal Road, Building M-50
Otta
For those Jess users who are using the FuzzyJava/FuzzyJess extensions please
note the following things:
* A name change was required because Sun has a trademark on 'Java'.
>From now on the name will be FuzzyJ instead of FuzzyJava.
* I have decided to move from the beta 2 version to ve
69 matches
Mail list logo