Re: Version ASP (Answer Set Programming)

publicité
Retourneraucontenuassocié(journal:Résolutionnaïved'unjeudesociété)
Re:VersionASP(AnswerSetProgramming)
Postépareingrossfiloule21/07/15à01:25.EnréponseaujournalRésolutionnaïved'unjeudesociété.
Évaluéà3(+3/-0).
JeneconnaissaitpasASP,maisaprèsunerapiderecherche,c'estpurementdéclaratif,etdoncc'est«l'interpréteur»
quis'occupedefairelavéritableexplorationsij'aibiencompris,alorsquemonobjectifétaitdefaireunparcoursen
largeuràgroscoupdeconcat.map.
C'estàpeuprèsça,mêmesionvadirequeladéfinitionfrançaiseproposéeparWikipédiaesttrèslimitée.La
versionanglaise Westmieux.
L'idée ici était surtout de te proposer une autre manière de rechercher des solutions à ricochet robots
(essentiellement à des fin de comparaison, mais aussi parce ricochet robots c'est cool et qu'il n'y a pas
beaucoupd'IApourcejeu)
ASPestunformalismequipermetdefairedelaprogrammationparcontrainteetdel'optimisationautravers
de la programmation logique. Généralement, on s'en sert pour résoudre de problème NP-complet. Ton
programmeASPestunedescriptiondetonproblèmesousformelogique.Ensuitecherchedessolutionsàton
problème en utilisant un solveur auquel tu donneras la définition du problème, les données, et
éventuellementunestratégiederecherche(commeunparcoursenlargeurouenprofondeurdel'espacede
rechercheparexemple).
Silesujett'intéressedavantage,tupourrasconsulterlescoursdisponiblesiciquandsourceforgetomberaen
marche.
Ducoup,quelestl'avantaged'ASPparrapportàunebibliothèquederésolutionenpythonparexemple?Parcequ'ily
aquandmêmedesdésavantages:
ASP est prévu pour faire de la programmation logique, comme python est prévu pour faire de la
programmationimpérative.Enfonctiondecequetucherchesàfaire,l'unestplusadaptéquel'autre,mais
rien ne t'empêche de faire un solveur en python (ou haskell), c'est un bon exercice. D'ailleurs je trouve ta
démarchesuperbien.
1. Pasd'interactionutilisateurpossibleenrestantdéclaratif
Alors,çac'esthorsdelapartierésolutionduproblème.Généralement,tubrancheslesolveuràautrechose.
ParexempletupeuxutiliserASP(gringoetclasp)avecpython.Après,enfonctiondetonsolveur,tuasdes
fonctionsdecontrôlepourinteragiraveclesolveurlui-même(parexempleinterromprelecalculouobtenirun
résultatintermédiairesuboptimal)
1. Ledebugduprogrammesefaitvialesoptionsfourniespasl'interpréteur
Normalement, ton programme est un ensemble de définitions mathématiques. Pour vérifier que tout
fonctionnebien,tufaisdespreuves.Aupiretuutilisesdesexemplesreprésentatifsdetesdifférentscasde
figure.Situasunsoucisaveclesrésultats,c'estsoitquequ'ilyaunproblèmedanstesdéfinitions,soitquele
solveurcontientuneerreur.Ilarriveaussiquetuteplantesdanslerésultatattendud'undetesexemples.
1. Quiddel'intégrationdansunvéritableprogramme(parexempleentantqu'IAdansunjeuinteractif)?
Làencore,çanedépendquedecommenttumodélisestonIA.Lesolveurestjusteunebriqueàlaquelletute
branchesàl'aidedebibliothèquesoudewrappersetàlaquelletuvafairedes"requêtes".Enfonctiondetes
contraintes,tuchoisirasunsolveurplutôtqu'unautre.Danslecasdericochetrobots,tupeuxvisezunsolveur
qui,pourchaquecible,tedonnesuneréponse(1)optimalequandilaparcourutoutl'espacederechercheou
(2) une réponse suboptimale (et peut-être optimale) quand tu lui demandes (comme au bout des 50
secondesaprèslaréponsedupremierjoueur).
Tupeuxaussienvisagerquetonsolveurneparcourspastoutl'espacederecherche,maisparcoursjusteton
espacederecherchedefaçonaléatoire.Danscecas,tunepourrasjamaisdirequ'iln'apasdesolution,mais
danslecasdericochetrobots,ilmesemblequ'ilexistetoujoursunesolution.
J'espèrequec'estassezclair.
Téléchargement