9 research outputs found

    Counting solutions of knapsack constraints.

    Get PDF
    Abstract. This paper furthers the recent investigation of search heuristics based on solution counting information, by proposing and evaluating algorithms to compute solution densities of variable-value pairs in knapsack constraints. Given a domain consistent constraint, our first algorithm is inspired from what was proposed for regular language membership constraints. Given a bounds consistent constraint, our second algorithm draws from discrete uniform distributions. Experiments on several problems reveal that simple search heuristics built from the information obtained by these algorithms can be very effective

    Counting and enumerating feasible rotating schedules by means of Gröbner bases

    Get PDF
    This paper deals with the problem of designing and analyzing rotating schedules with an algebraic computational approach. Specifically, we determine a set of Boolean polynomials whose zeros can be uniquely identified with the set of rotating schedules related to a given workload matrix subject to standard constraints. These polynomials constitute zero-dimensional radical ideals, whose reduced Gröbner bases can be computed to count and even enumerate the set of rotating schedules that satisfy the desired set of constraints. Thereby, it enables to analyze the influence of each constraint in the same.Junta de Andalucía P09-TEP-502

    XCSP3-core: A Format for Representing Constraint Satisfaction/Optimization Problems

    Full text link
    In this document, we introduce XCSP3-core, a subset of XCSP3 that allows us to represent constraint satisfaction/optimization problems. The interest of XCSP3-core is multiple: (i) focusing on the most popular frameworks (CSP and COP) and constraints, (ii) facilitating the parsing process by means of dedicated XCSP3-core parsers written in Java and C++ (using callback functions), (iii) and defining a core format for comparisons (competitions) of constraint solvers.Comment: arXiv admin note: substantial text overlap with arXiv:1611.0339

    Implementation and Evaluation of Counting-Based Search for Table Constraints in the OscaR Solver

    Get PDF
    Dans ce mémoire, nous allons nous intéresser à la programmation par contraintes, un outil efficace en ce qui concerne la résolution de problèmes combinatoires. Nous allons nous intéresser aux problèmes utilisant les contraintes table et plus particulièrement leur implémentation compacte qui a été grandement améliorée par l’utilisation de la structure de données «sparse bit set» réversible. Nous contribuerons en créant une heuristique de recherche basée sur le dénombrement utilisant l’information sur les supports des contraintes table. Nous allons implémenter puis évaluer un algorithme de dénombrement sur Oscar, une librairie de résolution de problèmes par contraintes créée pour résoudre les problèmes combinatoires. Nous définirons alors un algorithme pour obtenir les supports et un algorithme pour réaliser une heuristique de recherche utilisant les informations précédentes. Tous ces algorithmes ont un but commun, mettre en place une recherche basée sur le dénombrement. Nous allons expliquer les modifications faites à Oscar et les heuristiques de recherche que nous avons créées dans Oscar. Finalement, nous présenterons nos résultats sur différents exemplaires de problèmes et nous analyserons les résultats comparés à l’état de l’art pour en déduire les améliorations apportées. Nous utiliserons pour cela les algorithmes suivants: dom et dom/deg. L’expérience montrera que notre recherche basée sur le dénombrement est compétitive pour les exemplaires complexes mais qu’elle coûte plus de temps dans certains cas, même si nous avons moins d’échecs.----------ABSTRACT: In this thesis, we work on constraint programming, an efficient approach to solve combinatorial problems. We consider problems using table constraints and in particular the compact table implementation. Reversible sparse bit sets have been used for the compact table implementation recently, and it improves its efficiency. We contribute by making the heuristic search more efficient for such problems by using counting-based search. Counting-based search uses the supports information from the reversible sparse bit set data structure (used to maintain supports in the table constraints). We implement and evaluate our contribution in Oscar, a constraint programming solver to solve combinatorial problems. We explain the modifications we made in Oscar and the heuristic searches we created in Oscar. We define an algorithm to get the supports from table constraints, a variable ordering heuristic search, and a value ordering heuristic search. All of these algorithms work toward the same goal, counting-based search. Finally, we present our results on different instances of problems and analyze the results and improvements. We compare our methods with dom and dom/deg. The experiment shows counting-based search is competitive if the instances are hard and it costs more time in some instances even if we have fewer failures

    Improvement and Integration of Counting-Based Search Heuristics in Constraint Programming

    Get PDF
    Ce mémoire s’intéresse à la programmation par contraintes, un paradigme pour résoudre des problèmes combinatoires. Pour la plupart des problèmes, trouver une solution n’est pas possible si on se limite à des mécanismes d’inférence logique; l’exploration d’un espace des solutions à l’aide d’heuristiques de recherche est nécessaire. Des nombreuses heuristiques existantes, les heuristiques de branchement basées sur le dénombrement seront au centre de ce mémoire. Cette approche repose sur l’utilisation d’algorithmes pour estimer le nombre de solutions des contraintes individuelles d’un problème de satisfaction de contraintes. Notre contribution se résume principalement à l’amélioration de deux algorithmes de dénombrement pour les contraintes alldifferent et spanningTree; ces contraintes peuvent exprimer de nombreux problèmes de satisfaction, et sont par le fait même essentielles à nos heuristiques de branchement. Notre travail fait également l’objet d’une contribution à un solveur de programmation par contraintes open-source. Ainsi, l’ensemble de ce mémoire est motivé par cette considération pratique; nos algorithmes doivent être accessibles et performants. Finalement, nous explorons deux techniques applicables à l’ensemble de nos heuristiques: une technique qui réutilise des calculs précédemment faits dans l’arbre de recherche ainsi qu’une manière d’apprendre de nouvelles heuristiques de branchement pour un problème.=----------ABSTRACT: This thesis concerns constraint programming, a paradigm for solving combinatorial problems. The focus is on the mechanism involved in making hypotheses and exploring the solution space towards satisfying solutions: search heuristics. Of interest to us is a specific family called counting-based search, an approach that uses algorithms to estimate the number of solutions of individual constraints in constraint satisfaction problems to guide search. The improvements of two existing counting algorithms and the integration of counting-based search in a constraint programming solver are the two main contributions of this thesis. The first counting algorithm concerns the alldifferent constraint; the second one, the spanningTree constraint. Both constraints are useful for expressing many constraint satisfaction problems and thus are essential for counting-based search. Practical matters are also central to this work; we integrated counting-based search in an open-source constraint programming solver called Gecode. In doing so, we bring this family of search heuristics to a wider audience; everything in this thesis is built upon this contribution. Lastly, we also look at more general improvements to counting-based search with a method for trading computation time for accuracy, and a method for learning new counting-based search heuristics from past experiments

    PYCSP3: Modeling Combinatorial Constrained Problems in Python

    Full text link
    In this document, we introduce PYCSP33, a Python library that allows us to write models of combinatorial constrained problems in a simple and declarative way. Currently, with PyCSP33, you can write models of constraint satisfaction and optimization problems. More specifically, you can build CSP (Constraint Satisfaction Problem) and COP (Constraint Optimization Problem) models. Importantly, there is a complete separation between modeling and solving phases: you write a model, you compile it (while providing some data) in order to generate an XCSP3 instance (file), and you solve that problem instance by means of a constraint solver. In this document, you will find all that you need to know about PYCSP33, with more than 40 illustrative models

    Algorithmes de dénombrement d'extensions linéaires d'un ordre partiel et application aux problèmes d'ordonnancement disjonctif

    Get PDF
    RÉSUMÉ En programmation par contraintes, une contrainte de ressource unaire est un ensemble de permutations valides des activités chacune avec une fenêtre de temps et une durée. Cette contrainte est généralisée si on considère des préséances entre activités données sous la forme d’un ensemble partiellement ordonné. Un problème d’ordonnancement disjonctif peut être modélisé par une ou plusieurs contraintes de ressource unaire auxquelles s’ajoutent des contraintes supplémentaires telles que des disjonctions entre activités de différentes ressources ou des contraintes de séquences. La recherche d’une solution au problème se fait par une série de décisions de la position relative d’une paire d’activités associées à une contrainte dont l’ordre n’est pas encore connu. L’algorithme utilisé dans le choix de la paire ainsi que la position relative est appelé heuristique de branchement. Dans le contexte de l’heuristique maxSD, il s’agit de calculer les densités de solutions de toutes les assignations de paires d’activités à un ordre et ensuite de brancher sur celle de densité maximum. Pour adapter cette heuristique aux problèmes d’ordonnancement avec contraintes de ressource unaire, on considérera les densités de permutations dans lesquelles une activité est placée avant l’autre dans l’ordre partiel associé à chaque contrainte. Pour ce faire, on propose deux algorithmes exact et heuristique pour le calcul des densités de permutations dans un ensemble partiellement ordonné. Ces algorithmes sont utilisés dans l’heuristique de branchement pour résoudre la version de satisfaction de contraintes du problème Job-Shop, un cas typique d’ordonnancement avec ressources unaires.----------ABSTRACT In constraint programming a unary resource constraint is a set of valid permutations of activities each with a time window and a duration. This constraint is generalized if we consider precedence constraints between activities given by a partially ordered set. A disjunctive scheduling problem can be stated as a combination of one or more such constraints for which some additional constraints such as disjunction or sequence of activities on different resources may be added. In this model, a solution is found by a series of decisions on the relative po- sition of a pair of activities on a same resource and for which the order is unknown. The algorithm used to select the pair and the order is called a branching heuristic. In the context of maxSD, densities of all assignments of pairs and order are computed and the assignment of maximum density is selected. In order to adapt this heuristic for scheduling problems with unary resources, we will consider the permutations of the partial order in which the rank of an activity is superior to another. For that, we propose exact and heuristic algorithms that compute the density of permutations in a partially ordered set. These algorithms are then used in branching to solve the constraint satisfaction version of the Job-Shop scheduling problem, a typical use case of scheduling with unary resource constraints

    Counting Solutions of Knapsack Constraints

    No full text
    corecore