Soddisfazione di vincoli aperti o interattivi


17

In passato, ho implementato modelli di coordinamento utilizzando SAT e la soddisfazione dei vincoli regolari come cavallo di battaglia principale nei loro motori. Continuando in questa linea di lavoro, vorrei rendere i modelli più interattivi e il modo migliore che vedo di fare questo è quello di aprire il risolutore di vincoli in modo che non sia più una scatola nera.

Pertanto, sono interessato a saperne di più sulla soddisfazione dei vincoli in cui i vincoli hanno quelle che chiamerò variabili esterne , predicati e funzioni , ovvero il linguaggio dei vincoli può avere predicati come che possono essere soddisfatti solo consultando alcuni agente esterno al solutore, quindi solo quando è a terra. Uno scenario in cui ciò è utile è quando corrisponde ad un processo decisionale esterno che non può essere incorporato nel risolutore di vincoli. Tali risolutori di vincoli potrebbero essere definiti aperti (poiché i vincoli non sono del tutto noti) o interattiviP(X)XP (poiché è necessaria l'interazione per procedere con la soddisfazione del vincolo).

Mi piacerebbe sapere entrambi:

  • ricerca teorica condotta in questa direzione
  • strumenti o librerie che implementano i risolutori di vincoli che consentono l'interazione con il mondo esterno durante il processo di risoluzione dei vincoli.

Risposte:


9

Non sono del tutto convinto dal precedente lavoro sui vincoli aperti e interattivi.

Un tentativo di studiare le domande sulla tracciabilità è stato:

anche se questo documento lascia senza risposta alcune importanti domande. L'approccio tramite i propagatori in questo documento è strettamente correlato alle implementazioni esistenti del risolutore di vincoli.

Penso che anche il lavoro su SMT (teorie del modulo di soddisfacibilità) sia strettamente legato alla tua domanda. Le teorie SMT sono spesso motivate da problemi derivanti dalla verifica di software e hardware, ma esistono teorie con un sapore AI. Non vedo l'ora di avere più applicazioni sviluppate con SMT come tecnologia di base e di lavorare di più per i vincoli che applicano idee da SMT.


1
Quel documento sembra sicuramente interessante. Non ho mai pensato ai risolutori SMT come a fare ciò di cui ho bisogno. È certamente una strada da esplorare.
Dave Clarke,

Sono confuso dall'ultimo commento. I risolutori SMT sono per logiche e teorie, non predicati specifici. Le persone sono invitate a contribuire con nuove teorie e parametri di riferimento. So che gli sviluppatori di MathSAT hanno studiato AI e problemi di pianificazione.
Vijay D,

@Vijay D: hai ragione, questa frase è indebitamente distorta e la rivedrò. Un'implementazione efficiente di INJECTIVE come teoria SMT è stata pubblicata nel 2010 da Banković e Marić ( argo.matf.bg.ac.rs/publications/2010/alldiff-smt2010.pdf ).
András Salamon,

7

Leggendo la tua domanda, concordo anche nel dire che le teorie Modulo di soddisfazione sono strettamente correlate alle tue esigenze. Vorrei suggerire di leggere il libro Procedures Decision - An Algorithmic Point of View .


Quanto è correlato / utile il libro Il calcolo della computazione: procedure decisionali con domande di verifica di Aaron R. Bradley e Zohar Manna? So dov'è una copia di ciò che è raggiungibile a piedi.
Dave Clarke,

@Dave: Disclaimer: la mia esperienza personale su SMT è solo all'inizio ;-) Ho appena guardato il Sommario di quel libro; sembra esserci un grande incrocio tra esso e quello che ho indicato. In quest'ultimo caso, ciò che chiamate funzioni esterne viene chiamato lì funzioni non interpretate ed è ampiamente trattato. Non sono stato in grado di trovare funzioni non interpretate nel sommario delle procedure decisionali con domande di verifica ; tuttavia, sembra essere un ottimo libro e forse può rivelarsi utile.
Giorgio Camerani,

@Dave: In questi giorni sto leggendo le procedure decisionali - Un punto di vista algoritmico . Non ho ancora raggiunto il capitolo sulle funzioni non interpretate , ma se non sbaglio le formule con funzioni non interpretate vengono convertite in formule nella Teoria dell'uguaglianza. È il caso che la teoria dell'uguaglianza sia trattata nelle procedure decisionali con domande di verifica (capitolo 9).
Giorgio Camerani,

1
Penso che Amazon stia chiamando.
Dave Clarke,

@Dave: OK, eccellente! ;-)
Giorgio Camerani,


4

Sono un po 'confuso riguardo al termine interattivo. Entrerò in contatto con gli altri e aggiungerò che un risolutore SMT potrebbe essere utile. Per aggiungere al commento di Walter Bishop, sono disponibili diapositive per il libro sulle procedure decisionali (Kroening e Strichman). Anche il trattamento approfondito di John Harrison nel Manuale di logica pratica e ragionamento automatico può interessarti. Il codice di esempio è disponibile online.

Philipp Ruemmer's Princess supporta l'aritmetica con predicati non interpretati, che potrebbero adattarsi a ciò che intendi per open. È scritto in Scala, utilizza la corrispondenza elettronica nella gestione della quantificazione e fornisce interpolanti.


0

Che dire degli strumenti, se decidi tu Prolog come lingua di scelta, posso suggerire alcuni approcci di implementazione:

  • GNU Prolog con è la libreria di programmazione C. Puoi chiamare le funzioni C da Prolog e Prolog da C. Questo ti apre molte possibilità di estendere la funzionalità. Pro: Gnu Prolog è uno dei compilatori Prolog più veloci disponibili gratuitamente. Nota: alcune persone si lamentano della mancanza di alcuni predicati incorporati ... in realtà la maggior parte di essi può essere implementata, controlla i livelli di compatibilità di Prolog @SO
  • SWI-Prolog ha un'interessante libreria di programmazione, tra cui comunicazione di rete, supporto buffer protocollo ecc. Ed è abbastanza popolare.
  • XSB Prolog alcune persone sostengono che sia il progetto più interessante in termini di interoperabilità - tra cui: interfacce di database ecc.

Prolog è un linguaggio di programmazione, adatto per eseguire molti tipi di solutori (e la maggior parte di essi ha i solutori di domini finiti).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.