Di masa lalu, saya menerapkan model koordinasi menggunakan SAT dan kepuasan kendala reguler sebagai pekerja keras inti di mesin mereka. Melanjutkan pekerjaan ini, saya ingin membuat model lebih interaktif, dan cara terbaik yang saya lihat untuk melakukannya adalah dengan membuka pemecah kendala sehingga tidak lagi menjadi kotak hitam.
Jadi, saya tertarik untuk mempelajari lebih lanjut tentang kepuasan kendala di mana kendala memiliki apa yang saya sebut variabel eksternal , predikat dan fungsi , yaitu bahasa kendala mungkin memiliki predikat seperti yang hanya dapat puas dengan berkonsultasi dengan beberapa agen eksternal ke pemecah, dan kemudian hanya ketika adalah tanah. Skenario di mana ini berguna adalah setiap kali sesuai dengan beberapa proses keputusan eksternal yang tidak dapat dimasukkan ke dalam pemecah kendala. Pemecah kendala seperti itu bisa disebut terbuka (karena kendala tidak sepenuhnya diketahui) atau interaktif (karena interaksi diperlukan untuk melanjutkan dengan kepuasan kendala).
Saya ingin tahu keduanya:
- penelitian teoritis dilakukan ke arah ini
- alat atau perpustakaan yang menerapkan pemecah kendala yang memungkinkan interaksi dengan dunia eksternal selama proses penyelesaian kendala.
Membaca pertanyaan Anda, saya juga setuju untuk mengatakan bahwa Teori Kepuasan Modulo terkait erat dengan kebutuhan Anda. Saya akan menyarankan untuk membaca buku Prosedur Keputusan - Sudut Pandang Algoritma .
sumber
sumber
Saya agak bingung dengan istilah interaktif. Saya akan berpadu dengan yang lain dan menambahkan bahwa pemecah SMT mungkin membantu. Untuk menambah komentar Walter Bishop, slide untuk buku Prosedur Keputusan (Kroening dan Strichman) tersedia. Perawatan menyeluruh John Harrison dalam Buku Pegangan Logika Praktis dan Penalaran Otomatis juga mungkin menarik bagi Anda. Kode contoh tersedia online.
Putri Philipp Ruemmer mendukung aritmatika dengan predikat yang tidak diinterpretasikan, yang mungkin sesuai dengan yang Anda maksud dengan terbuka. Ini ditulis dalam Scala, menggunakan E-matching dalam menangani kuantifikasi dan menyediakan interpolant.
sumber
Bagaimana dengan alat, jika Anda memutuskan untuk Anda Prolog sebagai bahasa pilihan, saya dapat menyarankan beberapa pendekatan implementasi:
Prolog adalah bahasa pemrograman, yang cocok untuk melakukan banyak jenis solver (dan kebanyakan dari mereka memiliki solver domain yang terbatas).
sumber