public class GKRuleSystem extends NSObject
Each time a fact is added to the system, the set of rules are evaluated in order and their actions executed in the system if their predicates are true. Rules can be fuzzy, allowing predicates and facts to be asserted to a degree of confidence instead of just boolean on/off.
The facts can be any kind of objects as long as they correctly determine equality using isEqual: The simplest approach is to use strings or dictionaries as they provide the most flexibility in defining facts, but user defined classes work just as well and may describe the problem space better.
The fact set is at all times a fuzzy set, as defined by fact membership in the set being modulated by their grade of membership. The rules may use the grade of membership to predicate their actions and in such a manner create fuzzy logic. The fuzzy logic Zadeh operators are available on the system itself in order to query multiple facts for combined membership grade.
NSObject.Function_instanceMethodForSelector_ret, NSObject.Function_methodForSelector_ret| Modifier | Constructor and Description |
|---|---|
protected |
GKRuleSystem(org.moe.natj.general.Pointer peer) |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
accessInstanceVariablesDirectly() |
void |
addRule(GKRule rule)
Adds a rule to the system.
|
void |
addRulesFromArray(NSArray<? extends GKRule> rules)
Adds rules to the system.
|
NSArray<? extends GKRule> |
agenda()
The current set of rules to be evaluated, in salience order, where if the salience is equivalent
the order of insertion into the agenda is used to decide which is first.
|
static GKRuleSystem |
alloc() |
static GKRuleSystem |
allocWithZone(org.moe.natj.general.ptr.VoidPtr zone) |
void |
assertFact(NSObject fact)
Asserts a fact with membership grade of 1.0.
|
void |
assertFactGrade(NSObject fact,
float grade)
Asserts a fact with the supplied membership grade.
|
static boolean |
automaticallyNotifiesObserversForKey(java.lang.String key) |
static void |
cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget) |
static void |
cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget,
org.moe.natj.objc.SEL aSelector,
java.lang.Object anArgument) |
static NSArray<java.lang.String> |
classFallbacksForKeyedArchiver() |
static org.moe.natj.objc.Class |
classForKeyedUnarchiver() |
static java.lang.String |
debugDescription_static() |
static java.lang.String |
description_static() |
void |
evaluate()
Explicitly evaluate the agenda of the rule system based on the current state and the current set of facts.
|
NSArray<? extends GKRule> |
executed()
The current set of rules that have already executed.
|
NSArray<?> |
facts()
The current set of facts.
|
float |
gradeForFact(NSObject fact)
Returns the current membership grade for the given fact, which is 0.0 if the fact
is not a member of the current set of facts.
|
static long |
hash_static() |
GKRuleSystem |
init()
Initializes a clean rule system with no state, rules or facts.
|
static NSObject.Function_instanceMethodForSelector_ret |
instanceMethodForSelector(org.moe.natj.objc.SEL aSelector) |
static NSMethodSignature |
instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector) |
static boolean |
instancesRespondToSelector(org.moe.natj.objc.SEL aSelector) |
static boolean |
isSubclassOfClass(org.moe.natj.objc.Class aClass) |
static NSSet<java.lang.String> |
keyPathsForValuesAffectingValueForKey(java.lang.String key) |
float |
maximumGradeForFacts(NSArray<?> facts)
Returns the maximum membership grade for the any one of the given facts.
|
float |
minimumGradeForFacts(NSArray<?> facts)
Returns the combined membership grade for the all the given facts.
|
static GKRuleSystem |
new_objc() |
void |
removeAllRules()
Removes all rules from the system.
|
void |
reset()
Clears the agenda and executed sets and removes all facts currently in the system.
|
static boolean |
resolveClassMethod(org.moe.natj.objc.SEL sel) |
static boolean |
resolveInstanceMethod(org.moe.natj.objc.SEL sel) |
void |
retractFact(NSObject fact)
Retracts a fact, setting its membership grade to 0, which also removes it from the fact set.
|
void |
retractFactGrade(NSObject fact,
float grade)
Retracts a fact, reducing its membership grade by the supplied grade.
|
NSArray<? extends GKRule> |
rules()
The current set of rules that will be used to set the agenda when rules are first added to the system.
|
static void |
setVersion_static(long aVersion) |
NSMutableDictionary<?,?> |
state()
The implementation-defined state.
|
static org.moe.natj.objc.Class |
superclass_static() |
static long |
version_static() |
accessibilityActivate, accessibilityActivationPoint, accessibilityAssistiveTechnologyFocusedIdentifiers, accessibilityAttributedHint, accessibilityAttributedLabel, accessibilityAttributedUserInputLabels, accessibilityAttributedValue, accessibilityContainerType, accessibilityCustomActions, accessibilityCustomRotors, accessibilityDecrement, accessibilityDragSourceDescriptors, accessibilityDropPointDescriptors, accessibilityElementAtIndex, accessibilityElementCount, accessibilityElementDidBecomeFocused, accessibilityElementDidLoseFocus, accessibilityElementIsFocused, accessibilityElements, accessibilityElementsHidden, accessibilityFrame, accessibilityHint, accessibilityIncrement, accessibilityLabel, accessibilityLanguage, accessibilityNavigationStyle, accessibilityPath, accessibilityPerformEscape, accessibilityPerformMagicTap, accessibilityRespondsToUserInteraction, accessibilityScroll, accessibilityTextualContext, accessibilityTraits, accessibilityUserInputLabels, accessibilityValue, accessibilityViewIsModal, addObserverForKeyPathOptionsContext, attemptRecoveryFromErrorOptionIndex, attemptRecoveryFromErrorOptionIndexDelegateDidRecoverSelectorContextInfo, autoContentAccessingProxy, awakeAfterUsingCoder, awakeFromNib, class_objc, classForCoder, classForKeyedArchiver, copy, dealloc, debugDescription, description, dictionaryWithValuesForKeys, didChangeValueForKey, didChangeValueForKeyWithSetMutationUsingObjects, didChangeValuesAtIndexesForKey, doesNotRecognizeSelector, fileManagerShouldProceedAfterError, fileManagerWillProcessPath, finalize_objc, forwardingTargetForSelector, forwardInvocation, hash, indexOfAccessibilityElement, isAccessibilityElement, isEqual, isKindOfClass, isMemberOfClass, isProxy, methodForSelector, methodSignatureForSelector, mutableArrayValueForKey, mutableArrayValueForKeyPath, mutableCopy, mutableOrderedSetValueForKey, mutableOrderedSetValueForKeyPath, mutableSetValueForKey, mutableSetValueForKeyPath, observationInfo, observeValueForKeyPathOfObjectChangeContext, performSelector, performSelectorInBackgroundWithObject, performSelectorOnMainThreadWithObjectWaitUntilDone, performSelectorOnMainThreadWithObjectWaitUntilDoneModes, performSelectorOnThreadWithObjectWaitUntilDone, performSelectorOnThreadWithObjectWaitUntilDoneModes, performSelectorWithObject, performSelectorWithObjectAfterDelay, performSelectorWithObjectAfterDelayInModes, performSelectorWithObjectWithObject, prepareForInterfaceBuilder, provideImageDataBytesPerRowOrigin_Size_UserInfo, removeObserverForKeyPath, removeObserverForKeyPathContext, replacementObjectForCoder, replacementObjectForKeyedArchiver, respondsToSelector, self, setAccessibilityActivationPoint, setAccessibilityAttributedHint, setAccessibilityAttributedLabel, setAccessibilityAttributedUserInputLabels, setAccessibilityAttributedValue, setAccessibilityContainerType, setAccessibilityCustomActions, setAccessibilityCustomRotors, setAccessibilityDragSourceDescriptors, setAccessibilityDropPointDescriptors, setAccessibilityElements, setAccessibilityElementsHidden, setAccessibilityFrame, setAccessibilityHint, setAccessibilityLabel, setAccessibilityLanguage, setAccessibilityNavigationStyle, setAccessibilityPath, setAccessibilityRespondsToUserInteraction, setAccessibilityTextualContext, setAccessibilityTraits, setAccessibilityUserInputLabels, setAccessibilityValue, setAccessibilityViewIsModal, setIsAccessibilityElement, setNilValueForKey, setObservationInfo, setShouldGroupAccessibilityChildren, setValueForKey, setValueForKeyPath, setValueForUndefinedKey, setValuesForKeysWithDictionary, shouldGroupAccessibilityChildren, superclass, validateValueForKeyError, validateValueForKeyPathError, valueForKey, valueForKeyPath, valueForUndefinedKey, willChangeValueForKey, willChangeValueForKeyWithSetMutationUsingObjects, willChangeValuesAtIndexesForKeypublic static boolean accessInstanceVariablesDirectly()
public static GKRuleSystem alloc()
public static GKRuleSystem allocWithZone(org.moe.natj.general.ptr.VoidPtr zone)
public static boolean automaticallyNotifiesObserversForKey(java.lang.String key)
public static void cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget)
public static void cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget,
org.moe.natj.objc.SEL aSelector,
java.lang.Object anArgument)
public static NSArray<java.lang.String> classFallbacksForKeyedArchiver()
public static org.moe.natj.objc.Class classForKeyedUnarchiver()
public static java.lang.String debugDescription_static()
public static java.lang.String description_static()
public static long hash_static()
public static NSObject.Function_instanceMethodForSelector_ret instanceMethodForSelector(org.moe.natj.objc.SEL aSelector)
public static NSMethodSignature instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector)
public static boolean instancesRespondToSelector(org.moe.natj.objc.SEL aSelector)
public static boolean isSubclassOfClass(org.moe.natj.objc.Class aClass)
public static NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey(java.lang.String key)
public static GKRuleSystem new_objc()
public static boolean resolveClassMethod(org.moe.natj.objc.SEL sel)
public static boolean resolveInstanceMethod(org.moe.natj.objc.SEL sel)
public static void setVersion_static(long aVersion)
public static org.moe.natj.objc.Class superclass_static()
public static long version_static()
public void addRule(GKRule rule)
public void addRulesFromArray(NSArray<? extends GKRule> rules)
public NSArray<? extends GKRule> agenda()
This is at all times the difference between the rules and executed sets.
rules,
executed,
resetpublic void assertFact(NSObject fact)
This will cause the current rules to be evaluated, which may in turn assert or retract more facts or change the state of the system.
This is shorthand for calling assertFact:grade: with a grade of 1.0
assertFact:grade:,
evaluate,
NSObject.isEqual:public void assertFactGrade(NSObject fact, float grade)
This will cause the current rules to be evaluated, which may in turn assert or retract more facts or change the state of the system.
evaluatepublic void evaluate()
This may in turn assert or retract more facts or change the state of the system, including activating more rules in the agenda.
public NSArray<? extends GKRule> executed()
This is at all times the difference between the rules and agenda sets.
rules,
agenda,
resetpublic NSArray<?> facts()
gradeForFact:public float gradeForFact(NSObject fact)
public GKRuleSystem init()
public float maximumGradeForFacts(NSArray<?> facts)
This performs the logical OR operation between the given facts.
public float minimumGradeForFacts(NSArray<?> facts)
This performs the logical AND operation between the given facts.
public void removeAllRules()
public void reset()
rules,
factspublic void retractFact(NSObject fact)
This will cause the current rules to be evaluated, which may in turn assert or retract more facts or change the state of the system.
This is short hand for calling retractFact:grade: with a grade of 1.0
retractFact:grade:,
evaluatepublic void retractFactGrade(NSObject fact, float grade)
This will cause the current rules to be evaluated, which may in turn assert or retract more facts or change the state of the system.
evaluatepublic NSArray<? extends GKRule> rules()
This is at all times the union of the agenda and executed sets.
agenda,
executedpublic NSMutableDictionary<?,?> state()
evaluate