2009-12-17 35 views
7

Tôi đang tìm một công cụ quy tắc trong C hoặc Python, nhưng nếu bạn biết một công cụ quy tắc được triển khai bằng ngôn ngữ khác, tôi sẽ rất vui khi biết về nó.Quy tắc Engine trong C hoặc Python

Động cơ sẽ được sử dụng như cách để tự động hóa ngôi nhà, như tắt đèn khi ai đó rời khỏi phòng vv Vì vậy, không có quy tắc "văn phòng" ở đó (còn bạn có quy tắc trong Excel hay không).

Tôi đã xem xét Jess và Drools trong Java và làm một công việc hoàn hảo. Tôi muốn biết người khác và có thể sử dụng ít bộ nhớ hơn Java. Tôi đã nghe nói về RuleCore trong Python nhưng không thể tìm thấy bất kỳ tài liệu nào về nó (phiên bản 1.0 có sẵn tại SourceForge nhưng có vẻ như họ đang bán phiên bản 2.0).

EDIT: Bằng công cụ quy tắc (công cụ suy luận), tôi có nghĩa là triển khai RETE hoặc tương đương.

+0

http://stackoverflow.com/questions/467738/implementing-a-rules-engine-in-python http://www.google.com/search?client=safari&rls=vi&q=python+rule+ engine & ie = UTF-8 & oe = UTF-8 –

+0

Cảm ơn, tôi đã nhìn thấy câu hỏi này và tôi không tìm cách triển khai một công cụ quy tắc mới. Nhưng tôi không thấy tham chiếu đến CLIPS lần đầu tiên :) – Yanik

Trả lời

5

Khi bạn tìm kiếm công cụ quy tắc dựa trên RETE bằng Python, hoặc Pyke hoặc PyCLIPS có thể là công cụ bạn muốn sử dụng.

PS: Tôi đã để lại nhận xét cho câu trả lời của S.Lott về Pyke. Tôi đã đăng một câu trả lời riêng theo đề xuất của anh ta và cũng để cho người đọc khác dễ dàng biết rằng công cụ quy tắc được đề cập trong câu trả lời này có thể là một lựa chọn có thể xảy ra nếu họ đang tìm kiếm.

+0

PyCLIPS nó được. Và thật dễ dàng để dịch các quy tắc Jess của tôi thành CLIPS. – Yanik

1

ruleby là công cụ quy tắc được viết bằng ruby. Đó là chủ đề của một bài thuyết trình tại rubyhoedown 2008: ruleby-the-rule-engine-for-ruby

+0

Nice :) (Tôi là fan của Ruby) và cảm ơn video. – Yanik

1

Pychinko đã được khoảng một thời gian. Tôi đã không bao giờ sử dụng nó trong sản xuất, nhưng điều tra nó cho ứng dụng sản xuất có thể một trong khi trở lại. Có vẻ như nó có các tính năng khá tốt và cộng đồng người dùng phong nha.

http://www.mindswap.org/~katz/pychinko/

+1

Cảm ơn. Bạn có biết bất kỳ danh sách gửi thư hoặc kênh irc nào cho cộng đồng không? Nó không giống như nó được duy trì nữa .. Và bạn đã nghe nói về pyCLIPS (tôi vừa phát hiện ra)? – Yanik

0

Trong thực tế, Python một động cơ quy tắc.

"Động cơ sẽ được sử dụng như cách để tự động hóa ngôi nhà, như tắt đèn khi ai đó rời khỏi phòng ..."

Bạn cần cảm biến và bộ điều khiển. Bạn viết "quy tắc" của bạn như là các đối tượng Python bình thường.

"Chương trình" chính của bạn thu thập các sự kiện từ các cảm biến của bạn và gửi các sự kiện đến bộ điều khiển của bạn.

Nếu bạn có thể đọc từ cảm biến thông qua USB thông thường, điều đó thậm chí còn tốt hơn. Ngành hàng hải sử dụng một vài tiêu chuẩn liên quan chặt chẽ như NMEA 0183 và NMEA 2000 để xác định lưu lượng truy cập trên xe buýt từ bộ cảm biến đến bộ điều khiển.

Bạn không cần ngôn ngữ quy tắc khác. Bạn có Python.

+2

Tôi không chắc chắn ý của bạn là gì, nhưng tôi nghĩ bạn có thể nói rằng bất kỳ ngôn ngữ hoàn chỉnh nào của Turing thực ra là một công cụ quy tắc. Tôi có lẽ đã đề cập đến thuật toán RETE thực hiện nhanh hơn nhiều so với việc kiểm tra thực tế chống lại mọi quy tắc. Vì tôi không phải là chuyên gia về Python, tôi không chắc chắn bạn sẽ làm điều này như thế nào. Bạn có liên kết nào được giải thích không? – Yanik

+0

@Yanik: Nếu suy luận là một phần của không gian vấn đề, thì hãy cập nhật câu hỏi để bao gồm thực tế này. Quy tắc phải xử lý không liên quan đến suy luận. Nếu bạn cần suy luận, hãy cập nhật câu hỏi của bạn, vui lòng nêu rõ điều này. –

+1

Nếu bạn đang tìm kiếm suy luận về các quy tắc của mình thì hãy xem Pyke [http://pyke.sourceforge.net/] sẽ hữu ích – ardsrk

2

Bạn có thể xem CLIPS như đã được đề xuất hoặc nếu bạn muốn trả tiền hoặc cần số Rete2. Tôi đã sử dụng CLIPS trong quá khứ trên Unix và đã nhúng thành công nó vào các ứng dụng khác.

Hy vọng điều này sẽ hữu ích.

0

Rulecore thực sự được viết một phần bằng Python. Nhưng nó không thực sự quan trọng. Bạn là người dùng sẽ không thấy bất kỳ chi tiết triển khai nào trong số này.

Các quy tắc hoàn toàn là khai báo và được xác định bằng XML. XML được gửi vào ruleCore CEP Server dưới dạng các sự kiện bằng cách sử dụng một dịch vụ web hoặc JMS hoặc các giao thức khác.

0

Tôi biết quy tắcCó một số phần được viết bằng Python. Nhưng API sử dụng XML và ActiveMQ hoặc WebServices để nó ở mức trừu tượng cao hơn.

0

Nebri là cách dễ nhất để viết quy tắc cho tự động hóa tại nhà VÀ các phần mềm/máy khác. Dưới đây là ví dụ để hoàn thành việc tắt đèn:

class high_temp_shutdown(NebriOS): 
    listens_to == ['shared.pebble_location'] 


    def check(self): 
     # if pebble dongle is out or room, return true 
     return shared.pebble_location > 3 # in meters 

    def action(self): 
     smartthings.lights(2,"off") 

Đây là công cụ hoàn hảo để tự động hóa ngôi nhà của bạn vì bạn có thể cài đặt các thư viện hiện có để sử dụng trong tập lệnh. Nest, SmartThings, Sen.se và vân vân. Nó chỉ là Python!

Và để có giải thích đầy đủ hơn về lý do tại sao Python không phải là công cụ quy tắc, xem this article. Chỉ vì chính Python có thể thực hiện các quy tắc, bạn không có một công cụ quy tắc trên tay. Đó là một sự thay đổi kiến ​​trúc lớn trong thực tế.

Các vấn đề liên quan