İş Kuralları Motorları ve Kısıt Programlama dilleri arasındaki ilişki


20

Birisi Drools veya diğer bazı kural motorlarının kılavuzlarına (belki de daha eski) bakarsa, katma değerlerinin çizimlerinden biri Miss Manners bulmaca (Drools kılavuzu) gibi bulmacaları çözmektir. Şimdi, bu tür bulmacalar Prolog veya daha yeni Kısıtlama Programlama dilleri kullanılarak doğal olarak formüle edilir ve çözülür ve biri neden Drools'u bu amaçla kullanacağını merak eder. Prolog ve CPL'nin bu durumda verdiği katma değer, bulmacayı doğal olarak bir dizi mantıksal tahminler olarak formüle etme ve çözüm uzayını otomatik olarak arama yetenekleri (CPL bu açıdan daha verimli). Ama Drools gibi ürünün katma değeri nedir (örneğin, bir Excel dosyasını alıp bir dizi kurala çevirmek için çanlar ve ıslıkların yanı sıra)?

Daha spesifik olarak, Prolog backtrack araması uygular, CLP kısıt yayılımı ile backtrack araması uygular ve bu nedenle, tek tek değişkenler için alanların tüm Kartezyen ürününü aramak yerine, bu ürün alanının büyük bölümlerini budanırlar. Onları etkili ve kullanışlı kılan budur. Hem Prolog hem de CLP literatürde geniş ölçüde tartışılmaktadır.

Öte yandan, Rete algoritmasının bazı veri yapıları biçimindeki kuralları kümesini önbelleğe aldığı açıktır, bu nedenle (benim görüşüme göre) bazı girdiler değiştiğinde çıktıyı değerlendirmeyi daha etkili hale getirir, ve bu veri yapısını artımlı değişiklikler için etkin bir şekilde güncellemek için araçlar vererek, temel fikri anlamak daha zordur (ve benim için daha da etkilidir) (Prolog? ndan CLP'ye?)? Ne yazık ki, bu daha geniş bağlamda Rete algoritmasını görüntüleyen iyi referanslar bulmak zor.

Drools'un dokümantasyonu maalesef bu konuda çok bilgilendirici değil. Bulabildiğim en fazla şey "Rete algoritması, Sıçramalar algoritması ve Drools 'Reteoo (ve Sıçramalar) gibi torunları, etki alanı nesne verilerinizle kural kalıplarını eşleştirmenin çok etkili yollarını sağlar. Bunlar, özellikle veri kümeleriniz olduğunda etkili olur. tamamen değişmeyin (kural motoru geçmiş eşleşmeleri hatırlayabildiğinden). Çok verimli - neye kıyasla? Savaş kanıtlanmış - gerçek dünya uygulamalarına bir nokta olabilir mi?

Bu konuya biraz daha ışık tutabileceği veya geçerli bir referans verebileceği için minnettar olurum.


1
Bu soru biraz geniş ve gerçekten buraya 'ait değil' ...

3
Korkarım ki cstheory.stackexchange.com için çok "endüstri odaklı". İşimi ilgilendiren iş motorları ile ilgili temel nokta nedir ve bunları neden Prolog ya da CLP kullanmaktan daha avantajlıdır. Eğer göndermek için daha iyi bir yer için bir öneriniz varsa, duymak mutluluk duyacağız.

Yanıtlar:


7

Ben ileri zincirleme motorları (örn. Drools) vs geri zincirleme (Prolog) kullanarak birçok ticari İş Kuralları Sistemleri için argüman birçok "Joe programcı" IF / THEN / ELSE mantığı ile uğraşmak için kullanılan olduğunu düşünüyorum - ve bu bir bütün yapar kitlelere pazarlamak çok daha kolay. Teknik değerin onunla bir ilgisi olduğunu düşünmüyorum.

Bunu topluluk wiki'si olarak gönderiyorum çünkü gerçek bir cevabım değil, oldukça renkli düşüncem.


4

Drools son zamanlarda drl diline sorunsuz bir şekilde geriye doğru zincirleme ekliyor. Şimdi her iki kelimenin de avantajlarını elde edersiniz.

Prolog'un tüm özelliklerine henüz sahip değil, örneğin 'kesim' yok. Ancak bu birleşme ve türetme ağacı sonuçları, prologların beklediği gibi çalışacaktır, yani geçişli kapanışlar için tam destek. Ve tablolama, kesme, ifadelerde birleştirme gibi özellikler büyümeye devam edecektir.

İleri "reaktif" veya geri "sorgu" kurallarını ayrı ayrı kullanabilir veya birlikte kullanabilirsiniz; burada reaktif kural bir sorgunun sonuçlarıyla birleştirilebilir.

Eklediğimiz bir şey, sorgularımızın reaktif bir görünüm olarak tam olarak gerçekleştirilebilmesidir. Böylece transititve kapatma sorgusunu çağırabilirsiniz ve bu, reaktif bir şekilde açık kalacaktır ve sorguyu yeniden sorgulamak zorunda kalmadan, temeldeki verilerdeki değişikliğe yanıt verecektir.

"Geriye zincirleme" eklendiğinde yeni ve dikkat çekici bölümlere bakın: http://blog.athico.com/2012/05/drools-540final-released.html

Bu yüzden sorunuzun daha iyi ifade edileceğini düşünüyorum, neden Drools gibi Hibrid Akıl Yürütme Sisteminiz olduğunda neden başka bir şey kullanmak istesiniz? http://blog.athico.com/2012/05/drools-54-artificial-intelligence.html


3

Prolog'un Drools'tan daha güçlü olduğunu kabul ediyorum. Ancak Drools'un, fantezi ön uç araçları ve Drools'un diğer popüler kurumsal uygulamalarla yaptığı entegrasyonlar nedeniyle kurumsal müşteriye çekici geldiğini düşünüyorum. Bence bu kurallar birçok Drools motorunun derhal kullanabileceği veritabanında kalıyor.

Çalışma zamanı sırasında kuralları değiştirmek, Drools motorunu kullanmanın oldukça dinamik bir yoludur ve desteklenir. Prolog'un benzer bir sistemi olabileceğine inanıyorum , ancak bu AFAIK mevcut değil. Bu kurallar veya düzenlenen kurallar nereye gider? programın db iddia? Yeniden başlatma sırasında bu kurallar kaybolacaktır. Onları paylaşılan bir db'ye devam edip sonra programa gerektiği gibi aktarabilir miyiz? Prolog kullanışlı olabilir, ancak Drools zaten kurumsal uygulama yığınına iyi entegre edilmiştir, bu yüzden neden kendinizi çılgın hale getirin (eğlence hariç)?


"Prolog'un Drools'tan daha güçlü olduğuna katılıyorum. Ama Drools'un, Drools'un diğer popüler kurumsal uygulamalarla süslü ön uç araçları ve entegrasyonları nedeniyle kurumsal müşteriye çekici geldiğini düşünüyorum."

Yukarıdaki yorumuma göre, Drools artık hedef tabanlı türev ağaçlarını Prolog ile aynı şekilde uygulamaktadır. Daha fazla Drool, diğer Prolog sistemlerinin yapamayacağı deivasyon ağacıyla bir şey yapabilir. Drools, türetme ağacını bir görünümde gerçekleştirebilir ve temeldeki terimler değiştikçe reaktif güncellemeler alabilir.


2
@MarkProctor, genel olarak, düzeltmelere karşı itiraz olan şeyler, başka birinin cevabının içeriğini düzenlemenin aksine, genellikle yorumlama ve (potansiyel olarak) alçalma yoluyla yapılmalıdır.
Charles Duffy

2

Tarafından başladı Drools dayalı olan KLİPLER . CLIPS daha eski bir " üretim sistemi " idi ve tüm üretim sistemleri gibi ileri bir zincirleme sistemidir. Rete ile ilgili bir çok araştırma "yaratıcı" algoritmaların fikri mülkiyet olduğu şirketler için işe yaramasıyla sonuçlandı. Rete sürüm 3 FICO skorları yapan milletlere aittir , bu yüzden evet "savaş kanıtlanmış".

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.