Ernest,
Thanks a lot for helping me here! Let me clarify what I try to do: The internal state of the global veriable(fuzzyVariable) is keep changing because the defination of the fuzzy term gets changed according to the external input. My code is like, ----------- WorkingMemoryMark marker; engine = new FuzzyRete(); Defglobal dg; FuzzyVariable var = new FuzzyVariable ("value" 0 100 "percentage"); engine.reset(); marker = engine.mark(); while( input){ var.addTerm("low", ZFuzzySet(input); var.addTerm("high", SFuzzySet(input); dg = new Defglobal("*v*", new Value(var)); engine.addDefglobal(dg); engine.batch("x.clp"); //x.clp will reference the global variable if (engine.run() >1){ //do something } engine.clearStorage(); engine.resetToMark(marker) } ---------- Will the defglobal part work? Thanks a lot! Andrew > From: ejfr...@gmail.com > To: jess-users@sandia.gov > Subject: Re: JESS: Defglobal function. > Date: Wed, 3 Mar 2010 07:08:56 -0500 > > Hi Andrew, > > I'm not sure how subtle your question actually is, because there may > be a major issue with accomplishing what you're after here. The > initial value of a defglobal is stored exactly as it appears in the > definition of the defglobal; if the initial value is a function call, > then that function call itself is stored. This is so that when you > call (reset), the function call can be invoked to initialize the > defglobal to an appropriate new value at that time. > > In any case, the point is that the function call has to be stored as > Jess code, so the code that creates the FuzzyVariable itself has to be > expressed as a Jess function call no matter what. If you want to > express exactly what you've shown here without any Jess code, then I'm > afraid you're out of luck! > > If, on the other hand, it's OK for the initial value of the defglobal > to be one, specific object created in Java, then you could just create > the FuzzyVariable in Java (including the "addTerm" calls) and then > call something like > > FuzzyRete engine = ... > FuzzyVariable var = ... > Defglobal dg = new Defglobal("*v*", new Value(var)); > engine.addDefglobal(dg); > > On Mar 2, 2010, at 11:09 PM, Andrew Meng wrote: > > > Hello, > > > > I try to follow a fuzzyJess example. It does something(in Jess only) > > like: > > > > (defglobal ?*v* = (new FuzzyVariable "value" 0 100 "percentage")) > > > > then > > (?*v* addTerm "low", (new TriangleFuzzySet (...)) > > > > I am wondering how I could do the same thing totally from Java using > > Jess API. > > > > --------------------------------------------------------- > Ernest Friedman-Hill > Informatics & Decision Sciences, Sandia National Laboratories > PO Box 969, MS 9012, Livermore, CA 94550 > http://www.jessrules.com > > > > > > > > -------------------------------------------------------------------- > To unsubscribe, send the words 'unsubscribe jess-users y...@address.com' > in the BODY of a message to majord...@sandia.gov, NOT to the list > (use your own address!) List problems? Notify owner-jess-us...@sandia.gov