这是剪辑代码,以找到平均...但它不起作用...任何人都知道如何解决它?
(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)))
))
答案 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
。函数progn
,bind
等以及accumulate
都在Jess手册中有详细记录,因此我不打算在此重复。