Pola/pola apa yang paling cocok untuk mengembangkan mesin aturan/keputusan [tertutup]

Saya sedang mengerjakan mesin keputusan/mesin evaluasi aturan. Misalnya:

Input : Nasabah dan segala pelanggaran yang dilakukan nasabah

Keluaran: Akibat dari pelanggaran yang dilakukan

Contoh kasusnya adalah:

Masukan: Pelanggan (Jhonny Chimpo, 999-00-1111), Pelanggaran ( Pecahkan jendela, tampar bos, tendang pangkal paha pemimpin tim)

Keluaran: Mendapat slip merah muda

Jadi potongan kode yang ingin saya tulis mengevaluasi pelanggaran yang berbeda berdasarkan aturan untuk setiap pelanggaran dan gabungan pelanggaran. Kode saat ini hanyalah labirin pernyataan if dan else. Saya yakin masalah bisnis seperti itu biasa terjadi. Pola desain/perusahaan apa yang biasanya digunakan untuk menyelesaikan masalah seperti ini?

Apakah ini pola spesifikasinya? Saya ingin kodenya terbuka untuk ekstensi, bersih dan fleksibel.


person Perpetualcoder    schedule 24.01.2010    source sumber
comment
Apakah Anda ingin menulisnya? Anda dapat melihat Jess jessrules.com   -  person Joe    schedule 24.01.2010


Jawaban (6)


Pada dasarnya aturan bisnis terlihat seperti itu

forall rules:
  if <condition> then doAction();

Bagaimana dengan mengkategorikan semua pelanggaran berdasarkan tingkat keparahan menggunakan skor, mungkin bonus tambahan untuk "pelaku kejahatan" yang sering terjadi, beberapa pelanggaran mungkin dibatasi waktu dan apa pun yang diperlukan.

Maka rancangan kasar suatu algoritma dapat berupa:

  • Jumlah seluruh skor pelanggan (tertimbang)
  • bandingkan dengan maksimal

Ini akan langsung menggunakan struktur data daripada banyak hal (mungkin sangat bersarang) if..then..else.

person stacker    schedule 24.01.2010
comment
kode saat ini yang kita miliki adalah labirin loop if-else - person Perpetualcoder; 25.01.2010

Saya dapat menyarankan Anda alat yang kami gunakan untuk memecahkan masalah serupa.

Lihatlah JBoss Drools: http://www.jboss.org/drools/

Ini adalah BRMS: Sistem Manajemen Aturan Bisnis

Ini dia video perkenalannya: http://www.jboss.com/products/platforms/brms/

person Andrea Zilio    schedule 24.01.2010
comment
Saya mencoba mengembangkan di platform .net +1 untuk menyebutkan produk hebat - person Perpetualcoder; 25.01.2010

Saya tidak yakin jawaban di atas bermanfaat.

Saya telah menulis komponen serupa menggunakan pohon ekspresi. Anda dapat membuat ekspresi lambda yang mewakili predikat, mengompilasi dan mengeksekusinya, semuanya secara dinamis, lalu memicu beberapa tindakan sebagai respons. Pendekatan ini kuat, fleksibel, dan menghilangkan semua kengerian if/else (yang jelas bukan cara yang tepat).

Namun, yang sebenarnya Anda bicarakan adalah pemrograman logika. Ada banyak implementasi Prolog melalui .NET. Prolog adalah bahasa berbasis logika, yang banyak digunakan untuk aplikasi AI, yang mulai menjadi sangat kuat setelah Anda memahami paradigmanya.

Coba lihat beberapa di antaranya..

person flesh    schedule 08.02.2010
comment
ini adalah sesuatu yang sangat menarik. Saya juga bukan penggemar mesin aturan bisnis di luar sana - person Perpetualcoder; 08.02.2010
comment
tapi..:)...Saya juga bukan penggemar Prolog..saya hanya menganggapnya luar biasa :) - person Perpetualcoder; 08.02.2010

Anda dapat mencoba sesuatu yang mirip dengan mesin aturan "berbasis peristiwa" ini

person Nick Miller    schedule 06.03.2010

Saya pikir Mesin Aturan berbasis Algoritma RETE apa pun akan berfungsi untuk kasus Anda. Anda bisa mencoba ngiler.

person Mervin Yan    schedule 17.05.2010

Saya pikir Anda sedang mencoba mengembangkan sistem pakar. Anda dapat memeriksa istilahnya dan kemudian memeriksa bahasa pemrograman yang sesuai seperti prolog dll.

person Aykut Akıncı    schedule 24.01.2010
comment
Saya tidak mencoba membangun sistem pakar. - person Perpetualcoder; 25.01.2010
comment
@Perpetualcoder sebenarnya yang Anda daftarkan justru merupakan sistem pakar. - person Nick Larsen; 29.01.2010
comment
bukankah sistem pakar juga merupakan mesin pembelajaran untuk melakukan pekerjaan tertentu? - person Perpetualcoder; 29.01.2010