Mối quan hệ giữa Công cụ Quy tắc Kinh doanh và Ngôn ngữ lập trình ràng buộc


20

Nếu một người nhìn vào hướng dẫn sử dụng (có lẽ cũ hơn) của Drools hoặc một số công cụ quy tắc khác, một trong những minh họa về giá trị gia tăng của họ là giải các câu đố như câu đố Miss Manners (hướng dẫn sử dụng của Drools). Giờ đây, những câu đố như vậy được hình thành và giải quyết một cách tự nhiên bằng cách sử dụng Prolog hoặc các ngôn ngữ Lập trình ràng buộc gần đây hơn, và người ta tự hỏi tại sao mọi người sẽ sử dụng Drools cho mục đích này. Giá trị gia tăng mà Prolog và CPL đưa ra trong trường hợp này là khả năng của họ tự nhiên hình thành câu đố dưới dạng tập hợp các vị từ logic và tự động tìm kiếm không gian của các giải pháp (với CPL hiệu quả hơn về mặt này). Nhưng giá trị gia tăng của sản phẩm như Drools là gì (ý tôi là ngoài tiếng chuông và tiếng huýt sáo, ví dụ, một tệp Excel và dịch nó thành một bộ quy tắc)?

Cụ thể hơn, Prolog thực hiện tìm kiếm backtrack, CLP thực hiện tìm kiếm backtrack với lan truyền ràng buộc và do đó, thay vì tìm kiếm, có thể nói, toàn bộ sản phẩm của Cartesian cho các biến riêng lẻ, họ cắt bỏ phần lớn không gian sản phẩm này. Điều này làm cho chúng hiệu quả và hữu ích. Cả Prolog và CLP đều được thảo luận về amply trong tài liệu.

Mặt khác, trong khi rõ ràng thuật toán Rete lưu trữ bộ quy tắc dưới dạng một số cấu trúc dữ liệu, do đó (theo cách hiểu của tôi) giúp đánh giá đầu ra hiệu quả hơn nếu một số đầu vào thay đổi, và đưa ra phương tiện để cập nhật toàn diện cấu trúc dữ liệu này cho những thay đổi gia tăng, đối với tôi, thật khó để hiểu được ý tưởng cơ bản, và thậm chí còn hơn thế, tính linh hoạt của nó (so với những gì? với Prolog? với CLP)? Thật không may, thật khó để tìm thấy các tài liệu tham khảo tốt xem thuật toán Rete trong bối cảnh rộng hơn này.

Rất tiếc, tài liệu của Drools không có nhiều thông tin về mặt này. Cái tôi có thể tìm thấy nhiều nhất là "Thuật toán Rete, thuật toán Leaps và hậu duệ của nó như Reteoo (và Leaps) của Drools, cung cấp các cách rất hiệu quả để khớp các mẫu quy tắc với dữ liệu đối tượng miền của bạn. Chúng đặc biệt hiệu quả khi bạn có bộ dữ liệu không thay đổi hoàn toàn (vì công cụ quy tắc có thể nhớ các trận đấu trong quá khứ). Các thuật toán này đã được chứng minh trong trận chiến ". Rất hiệu quả - so với những gì? Trận chiến đã được chứng minh - một điểm có thể đến các ứng dụng trong thế giới thực?

Tôi sẽ đánh giá cao nếu người ta có thể đưa ra một số ánh sáng hơn về chủ đề này hoặc đưa ra một tài liệu tham khảo hợp lệ.


1
Câu hỏi này hơi rộng và không thực sự 'thuộc về' ở đây ...

3
Chà, tôi e rằng đối với cstheory.stackexchange.com thì nó quá "định hướng theo ngành" .. Điều gì thực sự khiến tôi quan tâm đến điểm cơ bản của các công cụ quy tắc kinh doanh là gì và tại sao sử dụng chúng lại có lợi hơn so với sử dụng Prolog hay CLP. Nếu bạn có một gợi ý cho một nơi tốt hơn để đăng nó, tôi sẽ rất vui khi nghe nó.

Câu trả lời:


7

Tôi nghĩ rằng lập luận cho nhiều Hệ thống Quy tắc Kinh doanh thương mại sử dụng các công cụ xâu chuỗi phía trước (ví dụ: Dropols) so với chuỗi ngược (Prolog) là nhiều "lập trình viên Joe" được sử dụng để xử lý logic IF / THEN / ELSE - và điều này làm cho nó trở nên hoàn chỉnh dễ dàng hơn nhiều để thị trường cho công chúng. Tôi không nghĩ rằng công đức kỹ thuật có bất cứ điều gì để làm với nó.

Tôi đang đăng bài này dưới dạng wiki cộng đồng vì đó là ý kiến ​​khá màu mè của tôi và không phải là một câu trả lời thực sự.


4

Drools gần đây đã thêm chuỗi ngược, liên tục vào ngôn ngữ drl. Vì vậy, bây giờ bạn có được lợi ích của cả hai từ.

Nó không hoàn toàn có tất cả các tính năng của prolog, ví dụ như không 'cắt'. Nhưng kết quả của cây thống nhất và dẫn xuất sẽ hoạt động như mọi người mong đợi, tức là hỗ trợ đầy đủ cho việc đóng cửa quá cảnh. Và các tính năng sẽ tiếp tục phát triển, chẳng hạn như hỗ trợ cho tab, cắt, thống nhất trên các biểu thức.

Bạn có thể sử dụng riêng các quy tắc "truy vấn" hoặc "truy vấn" ngược hoặc sử dụng chúng cùng nhau; trong đó quy tắc phản ứng có thể tham gia với kết quả của một truy vấn.

Một điều chúng tôi đã thêm là các truy vấn của chúng tôi có thể được cụ thể hóa hoàn toàn dưới dạng xem phản ứng. Vì vậy, bạn có thể gọi một truy vấn đóng quá cảnh và nó sẽ mở theo cách phản ứng và phản hồi để thay đổi dữ liệu dưới mặt đất - mà không phải thăm dò lại truy vấn.

Xem phần Mới & Đáng chú ý khi "chuỗi ngược" được thêm vào: http://blog.athico.com/2012/05/drools-540final-release.html

Vì vậy, tôi nghĩ rằng câu hỏi của bạn sẽ được diễn đạt tốt hơn, tại sao bạn muốn sử dụng bất cứ điều gì khác, khi bạn có Hệ thống Lý luận Lai như Giọt nước? http://blog.athico.com/2012/05/drools-54-art bát-intellect.html


3

Tôi đồng ý với bạn rằng Prolog mạnh hơn Drools. Nhưng tôi nghĩ rằng Drools đang hấp dẫn khách hàng doanh nghiệp vì các công cụ và tích hợp mặt trước ưa thích mà Drools có với các ứng dụng doanh nghiệp phổ biến khác. Tôi nghĩ rằng các quy tắc này sau đó được duy trì cho cơ sở dữ liệu nơi nhiều công cụ của Dropols có thể sử dụng chúng ngay lập tức.

Thay đổi quy tắc trong thời gian chạy là một cách khá năng động khi sử dụng công cụ Drools và nó được hỗ trợ. Tôi tin rằng Prolog có thể có một hệ thống tương tự, nhưng điều này không tồn tại AFAIK. Những quy tắc hoặc quy tắc chỉnh sửa sẽ đi về đâu? khẳng định trong db của chương trình? Khi khởi động lại, các quy tắc này sẽ bị mất. Chúng tôi sẽ duy trì chúng theo một db được chia sẻ và sau đó xác nhận chúng vào chương trình khi cần? Prolog có thể được sử dụng, nhưng Drools đã được tích hợp tốt vào ngăn xếp ứng dụng doanh nghiệp, vậy tại sao lại khiến bản thân trở nên điên rồ (ngoại trừ niềm vui)?


"Tôi đồng ý với bạn rằng Prolog mạnh hơn Drools. Nhưng tôi nghĩ rằng Drools hấp dẫn khách hàng doanh nghiệp vì các công cụ và tích hợp giao diện người dùng lạ mắt mà Drools có với các ứng dụng doanh nghiệp phổ biến khác"

Theo nhận xét của tôi ở trên, Drools hiện thực hiện các cây phái sinh dựa trên mục tiêu theo cách tương tự như Prolog. Những giọt nước khác có thể làm gì đó với cây khử mùi mà hầu hết các hệ thống Prolog khác không thể. Các giọt có thể cụ thể hóa cây phái sinh thành một khung nhìn và nhận các cập nhật phản ứng khi các điều khoản nhóm cơ bản thay đổi.


2
@MarkProctor, nói chung, những điều phản đối trái ngược với sửa chữa thường nên được thực hiện thông qua nhận xét và (có khả năng) hạ cấp, trái ngược với việc chỉnh sửa nội dung câu trả lời của người khác.
Charles Duffy

2

Drools bắt đầu bằng cách dựa trên CLIPS . CLIPS là một " hệ thống sản xuất " cũ hơn , và giống như tất cả các hệ thống sản xuất là một hệ thống xích phía trước. Rất nhiều nghiên cứu về Rete đã "trở nên tối tăm" khi người sáng lập cuối cùng sẽ làm việc cho các công ty nơi algoritms là tài sản trí tuệ. Rete phiên bản 3 được sở hữu bởi những người tạo ra điểm số FICO , vì vậy, đó là "trận chiến đã được chứng minh".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.