On Nov 16, 2007, at 7:40 AM, Ernest Friedman-Hill wrote:
Hi,
I'm not sure how this conversation drifted into a discussion of
*alternatives* to Jess; I don't see any problem with doing this
application in Jess itself.
Sorry, that was my fault... Apologies ;)
If you need to have properties like "service" come and go in a
running system, then the way to do that is the same way you'd do it
in any database-like system: make the property names into data. So,
for example
(deftemplate computer (slot name))
(deftemplate property (slot computer) (slot name) (slot value))
(deftemplate user-wants (slot name) (slot value))
(assert (computer (name A))
(property (computer A) (name RAM) (value 1GB))
(property (computer A) (name service) (value BLAST)))
The rules look a little different, but not much
(defrule find-something
(computer (name ?c))
(property (computer ?c) (name ?p) (value ?v))
(user-wants (name ?p) (value ?v))
=>
(printout t "Computer " ?c " fits the user criteria " ?p " = " ?v
crlf))
Jess lets you define new rules, and remove old ones, while a system
is running, and facts (like the "property" facts) can come and go
all the time, as well.
In a real system, you'd probably use multiple user-wants facts at a
time, and you could use the "forall" conditional element to match
computers which meet all of them.
On Nov 16, 2007, at 2:54 AM, Mohd. Noor wrote:
let me extend my example
say
> Computer A:
> CPu =100
> RAM = 1GB
> s/w = c++
> Computer B:
> CPU =20
> RAM = 512M
> S/w =spps
> Computer C
> CPU =12
> RAM = 2GB
> s/w = mathlab
>>> service = bioInformatic service(BLAST) - this is a new
service
with refers to Computer C, it just introduced/published in the
broker a new attribute/property namely service. I wonder how this
infrormation being made available in Jess/JHCR/any other
techniques on the fly- with that, the "user-wants" could be easily
satisfied.
in this case - user-wants might be "run my application with mathlab
and use the BLAST tools" - which not priory available on the
origional rules/facts declaration. My requirement is - my new
rules/facts must be able be updated and evaluated of there is any
request related at particular time.
Any ideas/comments are very much welcome.
mnoor
On Nov 15, 2007 11:15 PM, Hal Hildebrand <[EMAIL PROTECTED]
> wrote:
The rules are compiled into classes, so yes, they are hard coded in
that sense. But you can compile on the fly and create new systems
of rules.
However, the question comes down to what are the constraints you
are trying to solve? Is it true that the constraints are changing
and therefore you need to create a new system of constraints? Or
is the data changing and the system remains unchanged. If you do
have to change the constraint system/rules, then under what
conditions? Are you changing the constraint system when you could
be modeling this as data that the constraint system uses (thus
eliminating the need to change the constraints)? If not, then how
often does the constraint system change? For example, is it a time
based policy, like 8am - 4pm, these constraint rules are used, but
5pm - 7am, we use a different set? If so, then the life cycle
doesn't change - merely the equations/rules. You can therefore
create a model where you can switch in the constraint system to
satisfy.
You can also use object oriented techniques with constraints ( http://tinyurl.com/2rfdck
). This would allow you to subclass, use polymorphism, etc, which
may allow you to have an extensible system which doesn't require
changing the constraints.
There's a lot of modeling choices out there...
On Nov 15, 2007, at 2:46 PM, Mohd. Noor wrote:
Yes, - I noticed that we have to consider the state of resource at
certain point of time.
I go through the examples of JCHR, it look like that we have to
hardcoded the rules. Am I right/wrong?.
Cheers
On Nov 15, 2007 7:35 PM, Hal Hildebrand
<[EMAIL PROTECTED]> wrote:
There's a life cycle involved, so you're never going to get a
system with continuously varying state (nor would you really want
to), thus it has to be sampled discretely. The result is a system
which triggers when the sampled values change. Some values, like
hardware configuration, will change slowly. Others, like CPU
load, I/O utilization, etc, will change faster. But regardless,
the essential life cycle remains the same:
sample the data - event driven, perhaps
set up your equations - canned, template or rule driven
get your solutions - multiple solutions are possible
choose your solution - rule driven, perhaps
effect the system change based on the solution
Rinse and repeat.
On Nov 15, 2007, at 10:38 AM, Mohd. Noor wrote:
Dear All
Thanks for the kind replies
What I am concerned is, my rules is always dynamically changes
over time(e.g. CPU availability/utilisation) -with that, I cannot
hard coded on the programming coding.
Even their template/"deftemplate" might be changes( e.g. new
software properties/a totally new hardware-such as any new
instrument attached to the computer system)
Is that possible with JCHR?
Any suggestions are welcome
Cheers
mnoor
On Nov 15, 2007 5:09 PM, Hal Hildebrand
<[EMAIL PROTECTED]> wrote:
What you are describing is constraint programming. You can do
this with Jess, but it's not exactly the best (imho) tool for the
job due to what is involved. The combinatorics are nasty in all
but the simplest examples.
For a constraint solver that runs (with minor tweaks) in Jess,
see http://tinyurl.com/yvz98m
This technique might do what you want, but you might want to look
into constraint systems in Java like JCHR or even Genetic
Algorithms, which are particularly good at searching large sparse
spaces for solutions to constraints.
On Nov 15, 2007, at 8:45 AM, Mohd. Noor wrote:
let say the user want to select the computer (resources) in
which suite their requirement- in this case user wants to run
mathlab simulation in computer(clusters) that have more than 20
CPUs available. Let consider the attributes such as CPU and
software are treated differently(whereby we can migrate the
software and licenses to the node that most appropriate with
users' resources requirements- in this case;). This rules
(contains the node A, B and C's properties/attributes) suppose
made available in the brokerage level.
In this case the user may select the mathlab from node C and run
on node B.
How do we transform the resources properties into the rules?
How we are going to infer the rules?
How we can apply a forward chaining and backward chaining?
Cheers,
mnoor
On Nov 15, 2007 2:42 PM, Motaz K. Saad <[EMAIL PROTECTED]>
wrote:
Could you explain more!.
Do you want to make a rule to determine computer specifications
for a given software.?
On Nov 15, 2007 1:48 PM, Mohd. Noor < [EMAIL PROTECTED] > wrote:
dear jess
how to make a rule from this scenario
Computer A:
CPu =100
RAM = 1GB
s/w = c++
Computer B:
CPU =20
RAM = 512M
S/w =spps
Computer C
CPU =12
RAM = 2GB
s/w = mathlab
The user will request to run a software mathlab - how do the
rules look like
cHEERS
On Nov 15, 2007 11:44 AM, Mohd. Noor < [EMAIL PROTECTED]> wrote:
dear jess
how to make a rule from this scenario
Computer A:
--
Motaz K. Saad
Computer Science Dept.
College of IT
http://motaz.saad.googlepages.com
---------------------------------------------------------
Ernest Friedman-Hill
Informatics & Decision Sciences Phone: (925) 294-2154
Sandia National Labs FAX: (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]
--------------------------------------------------------------------