Hi Jason, Please bear in mind that the following is a "thinking out loud" exercise.
Given that we want to use a rule engine as a main component, we would (probably) need to use different rules engineering approach (1) to determine which objects the rule in question is matching on. (2) and use Java reflection to list the object methods used for the predicates. (3) then retrieve from within some repository all the objects that fit (1) and (2), and assert them into working memory. For (1), if we use a class-based approach to encapsulate the rule logic, i.e., the conditional tests being performed on the different objects, then we could certainly identify the objects being tested. For (2), Java reflection on the objects being tested in (1) would give us a list of the methods used for the predicates, what parameters are supplied to them and their potential values. The values give us a range of cases to look for that are "testable" by the given rules. Ironically, rules that are written in a parameterized manner do NOT have this limitation - the rules are NOT hardcoded with specific test values and they can be supplied with almost any parameter values that you want. In this case, the parameter "specifications" that the rules match on have to be examined to determine actual values. For (3), we would want to find within the repository all the (data) objects that are "testable" and assert them into working memory. Obviously, we could bring back a set of objects with a wide range of values, but since the goal is to find "something close" this is all right. And, different combinations of objects represent different cases. Last, but not least, remains the problem of trying to (dynamically) modify the rule in hopes of getting a hit by the rule matching some case. A combination of class-based rule programming with parameterized rules would give us this capability. At some point in the future, I'm going to look at Aspect-oriented programming again to see where the dynamic modification (for class-based rules) fits in. Thanks, Rich Halsey ----- Original Message ----- From: "Jason Morris" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Friday, February 27, 2004 6:04 PM Subject: RE: JESS: Case Based Reasoning with Rules > Hi Rich, > > Hybrid (case-based/rule-based) systems are an absolutely fascinating > concept, and I have been wondering about their implications and > possibilities for some time also. > > My original interest in expert systems came by way of involvement in > developing online performance-support tools for mid-range, computer-aided > design software. My though was: Why can't CAD software really help an > engineer do "engineering" while he or she is creating geometry. Right now, > CAD tools are reaching a feature-functionality parity where they basically > do all the same things inside the same performance envelope. I was looking > for innovative product differentiators, and I saw an opportunity to add real > design intelligence to the tools. > > As an example, picture a CAD tool that could: > > [] Interactively and in real-time monitor your geometry creation and point > out potential stress concentrations, point out violations of ASME or > company standards, or other conflicts with other design constraints not > related to geometry. > > [] Apply "design patterns" from existing designs or "best-practices" (use > cases), or compare geometry creation intent to standard > design-for-manufacturing (DFM) or design-for-assembly (DFA) principles to > catch problems before they occur, or deduce a best design approach given > company standards and methods (use rules). > > Does this sound too far fetched? I didn't think so then... and with tools > like Jess and FuzzyJess, I certainly don't now. Is it a big undertaking? > Without question! I have no illusions about how huge this would be to do. > > Management will always say, "That's cool, but what's the business case? > What customer problem are you trying to solve?" I think that one could > claim that such a system, by folding actual engineering knowledge into the > geometry creation process and leveraging accumulated corporate knowledge, > would: > > * Reduce time-to-market by collapsing the overall time to design and > prototype a viable system (promote design reuse). > * Reduce manufacturing and assembly costs by catching conflicts before they > hit the production floor. > * Push risky processes further up the development process where they can be > caught and eliminated quickly before they cause problems down-stream. > > Given the esoteric and very non-conventional nature of the proposal, > convincing management about the ROI enough that it ever got funded as a > project was impossible. I hate to accuse management of being narrow-minded, > but as in most industries, there are long-established ways of doing things > in CAD, and the powers that be were (and are) loath to deviate from > following them. > > So, at the time, I didn't have the programming or knowledge engineering > experience to even prototype such a system, but now I do. I'd give my > eye-teeth to work on such a project! I'd be very interested to hear your > further thoughts as well as anyone else's on the general hybrid subject. > > Q. What companies are applying hybrid systems to mechanical design? Does > anyone have some examples? > > BTW - thanks for all your replies on other threads so far. > > -JM > ------ > Jason Morris > Morris Technical Solutions > [EMAIL PROTECTED] > www.morristechnicalsolutions.com > fax/phone: 503.692.1088 > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Behalf Of Rich Halsey > Sent: Friday, February 27, 2004 8:51 AM > To: [EMAIL PROTECTED] > Subject: JESS: Case Based Reasoning with Rules > > > Hi All, > > I have been thinking about Case Based Reasoning (CBR) and it would seem that > if a rule-based system could (1) determine which objects it was matching on, > (2) use Java reflection to list the object methods used for the predicates, > and (3) retrieve within some repository all the objects that fit (1) and > (2) and assert them into working memory, then CBR would be a natural > extension of a rule-based system. > > Any thoughts ?? > > Rich Halsey > > -------------------------------------------------------------------- > 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] --------------------------------------------------------------------
