• [^] # Re: Programmation par contraintes

    Posté par . En réponse au message Générer un tableau à partir de contraintes. Évalué à 2.

    c'est pour m'aider dans des prises de décisions complexes incluant un grand nombre de facteurs dans mon boulot.
    C'est vague, mais ça sonne bien comme ce qui est effectivement un domaine de prédilection de la programmation par contraintes. Un aspect dont je n'ai pas parlé, mais qui est lié, c'est que bien souvent le but réel d'un programme par contraintes n'est pas trouver toutes les solutions possibles, mais plutôt une solution optimale selon un certain critère. Par exemple, on aurait pu chercher une solution minimisant la somme de toutes les variables :
    probleme(M,S) :-
    	% on impose des contraintes
    	contraintes(M),
    	% et on cherche une solution minimisant la somme des variables
    	variables(M,V),
    	sigma(V,S),
    	min_max(labeling(V),S).
    
    Qui nous donne :
    ?- probleme(M, S).
    M = []([](1, 3, 2, 4, 9), [](4, 1, 2, 3, 5), [](5, 1, 2, 3, 4))
    S = 49
    Yes (0.71s cpu)
    
    C'est le genre de truc qui est utilisable dans plein de domaines, que ce soit de l'ingénierie, de la finance, de la logistique, etc., souvent avec en tête de minimiser un coût, une durée, etc. Et les problèmes de la vraie vie mettent facilement en jeu des milliers de variables et dix ou cent fois plus de contraintes encore, sans que ce soit forcement une difficulté si le problème s'y prête bien.
    Si c'est réellement du niveau 1er lab de TD, je devrais effectivement pouvoir faire ça moi-même.
    J'en ai peut-être rajouté un tout petit peu : disons que ça peut être un premier TP contraintes pour des gens qui aurait déjà des notions de Prolog. Je dis ça parce que là il n'y a pas d'écueuil, juste des contraintes simples sur des variables ("machin ne vaut pas truc") ou listes de variables ("tous les éléments de cette listes sont différents"). Le plus compliqué dans mon programme vite fait, c'est finalement la manipulation du tableau (récupérer une colonne, etc.), mais ça c'est du Prolog tout court, ça n'est pas spécifique à la programmation par contraintes.