비즈니스 규칙 엔진과 제약 조건 프로그래밍 언어의 관계


20

Drools 또는 다른 규칙 엔진의 매뉴얼을 살펴보면 추가 가치를 보여주는 그림 중 하나가 Miss Manners 퍼즐 (Dools의 수동)과 같은 퍼즐을 푸는 것입니다. 이제 이러한 퍼즐은 자연스럽게 Prolog 또는보다 최근의 Constraint Programming 언어를 사용하여 공식화되고 해결되며, 왜 누군가가 Drools를 이러한 목적으로 사용할 것인지 궁금합니다. 이 경우 Prolog와 CPL이 제공하는 부가 가치는 퍼즐을 논리적 술어 세트로 자연스럽게 공식화하고 솔루션의 공간을 자동으로 검색하는 능력입니다 (이 점에서 CPL이 더 효율적 임). 그러나 Drools와 같은 제품의 부가 가치는 무엇입니까? (예를 들어 Excel 파일을 가져 와서 규칙 집합으로 변환하는 종과 호루라기 외에)?

보다 구체적으로, Prolog는 역 추적 검색을 구현하고, CLP는 구속 조건 전파를 사용하여 역 추적 검색을 구현하므로 개별 변수에 대한 전체 직교 공간 곱을 검색하는 대신이 제품 공간의 많은 부분을 제거합니다. 이것이 효과적이고 유용합니다. Prolog와 CLP는 모두 문헌에서 충분히 논의되었습니다.

반면 Rete 알고리즘은 일부 데이터 구조 형식으로 규칙 집합을 캐시하므로 입력 내용 중 일부가 변경된 경우 출력을 평가하는 것이 더 효과적입니다. 그리고 점진적인 변화를 위해이 데이터 구조를 효과적으로 업데이트 할 수있는 수단을 제공하고, 기본 아이디어를 이해하기가 더 어렵고, 그 효과가 무엇입니까 (Prolog와 CLP 비교)? 불행히도,이 넓은 맥락에서 Rete 알고리즘을 보는 좋은 참조를 찾기는 어렵습니다.

Drools의 문서는 불행히도 이와 관련하여 유익하지 않습니다. "Rete 알고리즘, Leaps 알고리즘 및 Drools 'Reteoo (및 Leaps)와 같은 하위 항목은 규칙 패턴을 도메인 개체 데이터에 매우 효율적으로 일치시키는 방법을 제공합니다. 규칙 엔진이 과거 경기를 기억할 수 있기 때문에 완전히 변경하지 마십시오.이 알고리즘은 전투에서 입증되었습니다. " 매우 효율적인-무엇에 비해? 입증 된 전투-실제 응용 프로그램을 가리킬 수 있습니까?

이 주제에 대해 더 많은 빛을 비추거나 유효한 참조를 할 수 있다면 감사하겠습니다.


1
이 질문은 약간 광범위하며 실제로 여기에 포함되지 않습니다 ...

3
글쎄, 난에 대한 것을 두려워 cstheory.stackexchange.com 너무 "산업 중심".. 비즈니스 규칙 엔진에 대한 기본 포인트가 무엇인지 정말 어떤 이해 관계 나이고 프롤로그 또는 CLP를 사용하는 것보다 그것들을 사용하는 것이 왜 더 adavantageous. 더 나은 장소를 게시하기위한 제안이 있으시면 기뻐할 것입니다.

답변:


7

포워드 체인 엔진 (예 : Drools)과 백 체인 (Prolog)을 사용하는 많은 상용 비즈니스 규칙 시스템에 대한 주장은 많은 "Joe 프로그래머"가 IF / THEN / ELSE 논리를 처리하는 데 사용된다는 것입니다. 대중에게 마케팅하기가 훨씬 쉽습니다. 나는 기술적 인 장점과 관련이 없다고 생각합니다.

나는 이것이 오히려 채색 된 의견이며 실제 답변이 아니기 때문에 이것을 커뮤니티 위키로 게시하고 있습니다.


4

Drools는 최근에 drl 언어에 완벽하게 역방향 체인을 추가했습니다. 이제 두 단어의 장점을 모두 누릴 수 있습니다.

아직 프롤로그의 모든 기능을 갖추고 있지는 않습니다 (예 : '컷'없음). 그러나 통일 및 파생 트리 결과는 사람들이 예상하는대로 즉, 폐쇄적 인 클로저에 대한 완전한 지원으로 작동합니다. 또한 표 작성, 잘라 내기, 표현 통일 지원과 같은 기능이 계속 커질 것입니다.

정방향 "반응 적"또는 역방향 "조회"규칙을 개별적으로 사용하거나 함께 사용할 수 있습니다. 반응 규칙이 쿼리 결과와 결합 될 수 있습니다.

우리가 추가 한 한 가지는 쿼리가 반응 형 뷰로 완전히 구체화 될 수 있다는 것입니다. 따라서 대중 교통 폐쇄 쿼리를 호출 할 수 있으며 쿼리를 다시 폴링하지 않고도 반응 형 방식으로 개방 상태를 유지하고 기초 데이터의 변화에 ​​대응할 수 있습니다.

"역방향 체인"이 추가 된시기에 대한 New & Noteworth 섹션을 참조하십시오 : http://blog.athico.com/2012/05/drools-540final-released.html

그래서 Drools와 같은 하이브리드 추론 시스템을 사용할 때 귀하의 질문에 더 나은 표현이 필요할 것입니다. 왜 다른 것을 사용하고 싶습니까? http://blog.athico.com/2012/05/drools-54-artificial-intelligence.html


3

프롤로그가 Drools보다 강력하다는 데 동의합니다. 그러나 Drools는 다른 유명한 엔터프라이즈 응용 프로그램과의 멋진 프런트 엔드 도구 및 통합으로 인해 엔터프라이즈 클라이언트에게 호소력이 있다고 생각합니다. 그런 다음이 규칙은 많은 Drools 엔진이 즉시 사용할 수있는 데이터베이스에 유지된다고 생각합니다.

런타임 동안 규칙을 변경하는 것은 Drools 엔진을 사용하는 매우 역동적 인 방법이며 지원됩니다. 나는 Prolog 비슷한 시스템을 가질 있다고 생각 하지만 AFAIK는 존재하지 않습니다. 이 규칙 또는 편집 된 규칙은 어디로 갈까요? 프로그램의 DB에 주장? 다시 시작하면 이러한 규칙이 손실됩니다. 공유 데이터베이스에 유지 한 다음 필요에 따라 프로그램에 삽입합니까? 프롤로그를 사용할 수는 있지만 Drools는 이미 엔터프라이즈 응용 프로그램 스택에 잘 통합되어 있습니다. 왜 재미를 제외하고 자신을 미치게합니까?


"Prolog가 Drools보다 강력하다는 데 동의합니다. Drools는 다른 대중적인 엔터프라이즈 응용 프로그램과의 멋진 프론트 엔드 도구 및 통합으로 인해 엔터프라이즈 클라이언트에게 호소력이 있다고 생각합니다."

위에서 언급 한 것처럼 Drools는 이제 Prolog와 같은 방식으로 목표 기반 파생 트리를 구현합니다. 또한 Drools는 대부분의 다른 Prolog 시스템으로는 할 수없는 디비 네이션 트리를 사용하여 어느 정도 작업을 수행 할 수 있습니다. Drools는 파생 트리를 뷰로 구체화하고 기본 용어가 변경 될 때 반응 업데이트를 수신 할 수 있습니다.


2
@MarkProctor, 일반적으로 수정에 반대하는 반대 의견은 일반적으로 다른 사람의 답변 내용을 편집하는 것과 달리 주석 처리 및 (잠재적으로) 하향 조정을 통해 수행해야합니다.
Charles Duffy

2

Drools는 CLIPS를 기반으로 시작했습니다 . CLIPS는 오래된 " 생산 시스템 " 이었으며 모든 생산 시스템과 마찬가지로 포워드 체인 시스템입니다. 창립자가 알고리즘이 지적 재산 인 회사를 위해 일하게되자 Rete에 대한 많은 연구가 "어두워졌다". Rete 버전 3은 FICO 점수를 얻은 사람들이 소유하고 있으므로 "전투가 입증되었습니다".

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.