使用jess或剪辑查找平均值

时间:2015-07-26 18:45:47

标签: average clips jess

这是剪辑代码,以找到平均...但它不起作用...任何人都知道如何解决它?

(deftemplate fact (slot name) (slot value))
    (deftemplate avg (slot result))
    (deffacts data
       (fact (name data-1) (value 3))
       (fact (name data-2) (value 1))
       (fact (name data-3) (value 2))
       (fact (name data-4) (value 2))
       (fact (name data-5) (value 4))
       (fact (name data-6) (value 3)))

    (deffact sum (avg (result 0))

    (defrule find-avg
       (fact (name ?name1) (value ?value1))  
       (avg (modify (result (+ result ?value1))
       ))

    (defrule finding-avg
        (avg (modify (result (/ result 6)))
    ))

2 个答案:

答案 0 :(得分:1)

在CLIPS中,您可以使用事实查询功能来执行此操作:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"application/json",nil];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSDictionary *parameters = @{@"new": self.enter.text};
NSData *imageData = UIImageJPEGRepresentation(self.uploadImage.image, 0.5);
[manager POST:@"http://emily-ip.com/write.php" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
            [formData appendPartWithFileData:imageData name:@"image" fileName:@"photo.jpg" mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

答案 1 :(得分:0)

您必须使用accumulate对所有value个事实中的fact个广告位进行计数和汇总。

(defrule find-avg
    ?avg <- (accumulate
            (progn (bind ?sum 0)(bind ?count 0))
            (progn (bind ?sum (+ ?sum ?value))(++ ?count))
            (/ ?sum ?count)
            (fact (value ?value)))
=>
    (printout t "average " ?avg crlf)
)
分组函数调用需要

progn。函数prognbind等以及accumulate都在Jess手册中有详细记录,因此我不打算在此重复。