4 research outputs found

    Méthodes de décomposition pour la parallélisation du simplexe en nombres entiers

    Get PDF
    RÉSUMÉ: Le SPP est un problème de la programmation linéaire en nombres entiers qui est utilisé pour modéliser des problèmes industriels dans de nombreux domaines comme la planification des horaires du personnel, la logistique et la reconnaissance de formes. Dans l’industrie de transport, il consiste à partitionner un ensemble de tâches (ex : vols d’avion, segments de trajet d’autobus...) en sous-ensembles (routes de véhicules ou rotations de personnel navigant) de sorte que les sous-ensembles sélectionnés aient un coût total minimal et que chaque tâche appartienne à un seul et unique sous-ensemble. Souvent, il est résolu par la méthode ”branch and bound” ou ses variantes. Ces méthodes s’avèrent lentes dans le cas de problèmes denses de grande taille. Cependant, en industrie, il est apprécié d’avoir une solution rapidement et de tenir compte des informations disponibles telles que l’existence d’une solution initiale notamment lors de la ré-optimisation par exemple. Cet aspect est fourni aisément par les méthodes primales qui, à partir d’une solution initiale, produisent une suite de solutions à coûts décroissants qui converge vers une solution optimale. L’algorithme du simplexe en nombres entiers avec décomposition (ISUD) est une méthode primale qui, à chaque itération, décompose le problème original en deux sous-problèmes. Un premier sous-problème, appelé problème réduit, qui ne considère que les colonnes dites compatibles avec la solution courante, i.e., s’écrivant comme combinaison linéaire de colonnes/variables non dégénérées de la solution courante. Un deuxième sous-problème, appelé problème complémentaire, qui contient seulement les colonnes incompatibles avec la solution courante. Le problème complémentaire permet de trouver une direction de descente composée de plusieurs variables garantissant une solution meilleure, mais pas nécessairement entière. Dans le cas de solutions fractionnaires, un branchement en profondeur permet souvent d’aboutir rapidement à une solution entière. De nos jours, l’informatique connaît des évolutions frappantes. Les transformations que connaît le matériel informatique en termes de vitesse et de puissance sont impressionnantes : un ordinateur portable contemporain est l’équivalent des plus grosses machines des années 1970. Cette évolution induit une transformation du logiciel et des algorithmes aussi profonde, en termes de qualité et de complexité. Par conséquent, la tendance actuelle est de produire des processeurs multicoeurs assimilables à des machines parallèles et de concevoir et implémenter des algorithmes parallèles. L’objectif général de cette thèse est d’étudier les apports du parallélisme à l’algorithme d’ISUD. Le but est de proposer des implémentations parallèles d’ISUD afin d’améliorer ses performances et tirer profit des évolutions contemporaines de l’informatique. Pour concevoir ces algorithmes parallèles, nous avons exploité le parallélisme à l’intérieur d’ISUD et nous avons introduit des décompositions spécifiques au SPP. Dans un premier temps, notre démarche est de grouper les colonnes de la solution courante en clusters afin de décomposer le problème initial en sous-problèmes indépendants. Ces derniers sont résolus en parallèle afin d’améliorer la solution courante par combinaison des solutions optimales des sous-problèmes. Pour cela, nous construisons un graphe dont les noeuds sont les colonnes de la solution courante. Nous attribuons aux arêtes des poids calculés par des fonctions de densité qui utilisent les informations issues du problème original comme le nombre de colonnes qui couvrent des tâches des colonnes Ai et Aj de la solution courante. Le graphe construit est scindé en sous-graphes et par la suite nous obtenons des clusters de la solution courante. Ainsi, nous avons ajouté une deuxième décomposition dynamique à celle qui est déjà intrinsèque à ISUD. Le résultat est un algorithme parallèle, le simplexe en nombres entiers avec double décomposition, baptisé ISU2D. Nous avons testé ce nouvel algorithme sur des instances d’horaires de chauffeurs d’autobus ayant 1600 contraintes et 570000 variables. L’algorithme réduit le temps d’exécution d’ISUD par un facteur de 3, voire 4 pour certaines instances. Il atteint la solution optimale, ou une solution assez proche, pour la majorité de ces instances en moins de 10 min alors que le solveur commercial CPLEX ne parvient pas à trouver une solution réalisable avec un gap moins de 10% après une durée de plus d’une heure d’exécution. L’algorithme ISU2D, dans sa première version, représente une première implémentation parallèle de l’algorithme du simplexe en nombres entiers. Cependant, ISU2D souffre encore de la limitation qui est l’utilisation d’une seule décomposition de la solution courante à la fois. Dans un deuxième temps, nous améliorons ISU2D en généralisant certains aspects de son concept. Notre objectif dans cette étape est d’utiliser plusieurs décompositions dynamiques simultanément. Nous proposons un algorithme, nommé DISUD, distribué à base d’ISUD et du paradigme du système multi-agent (SMA). Chaque agent est une entité qui est, au moins partiellement, autonome et caractérisée par la décomposition dynamique de la solution courante qu’elle applique. Les agents peuvent être indépendants ou coopérants suivant la stratégie adoptée. Ainsi, nous augmentons les performances d’ISU2D et nous tirons profit d’avantage des nouveautés en matériel informatique. Les tests faits sur des instances issues de l’optimisation des horaires du personnel navigant de compagnies aériennes montrent que DISUD fonctionne mieux que DCPLEX, la version distribuée du solveur commercial de pointe CPLEX. Il atteint des solutions de qualité meilleure que le DCPLEX en réduisant le temps d’exécution par un facteur de 4 en moyenne. De plus, il a résolu des instances de grande taille que le DCPLEX n’a pu amélioré après une heure d’exécution. Dans un troisième travail, nous réalisons l’objectif d’intégrer le DISUD dans un environnement de génération de colonnes (GC). Ce choix se justifie par le fait que l’intégration de la méthode de génération de colonnes avec les méthodes d’énumération telle le ”branch and price” est largement utilisé dans l’industrie. ISUD présente du potentiel pour remplacer les méthodes d’énumération usuelles pour résoudre le SPP. Par conséquent, il y a du potentiel à intégrer GC et DISUD pour traiter des problèmes de l’industrie. Nous développons donc DICG la version distribuée de génération de colonnes qui utilise DISUD. Les résultats que nous avons obtenus lors de nos tests ont montré que DICG permet d’avoir des solutions de bonne qualité et réduit le temps de calcul d’un facteur de 2 voire 4 par comparaison avec la DRMH, version distribuée de ” Restricted Master Heuristic”. Avec ces trois travaux, nous pensons avoir réalisé des apports intéressants et amélioré les performances d’ISUD. En outre, nous ouvrons la voie pour des travaux futurs afin d’élargir les utilisations de la version distribuée d’ISUD comme par exemple, rendre les agents plus intelligents via des algorithmes d’apprentissage.----------ABSTRACT: SPP is an integer linear programming problem that is used to model many industrial problems such as personnel scheduling, logistics and pattern recognition. In the transport industry, it consists of partitioning a set of tasks ( plane flights, bus itinerary segments, ...) into subsets (rotation of navigating personnel) so that the selected subsets have a minimum total cost and each task belongs exactly to one subset. Usually, SPP is solved by the branch and bound method or its variants. These methods are known to be slow in the case of large and difficult problems. However, in industry it is appreciated to have a solution as quickly as possible and to consider available information such as the existence of an initial solution, especially in the re-optimization case. This aspect is easily provided by the primal methods which from an initial solution produce a sequence of decreasing cost solutions that converge towards an optimal or near optimal solution. The Integral Simplex Using Decomposition, ISUD, is a primal method dedicated to solve SPP. At each iteration, it decomposes the original problem into two sub-problems. The first, called the reduced problem (RP), only considers the so-called compatible columns with the current solution. The second, called the complementary problem (CP), deals only with the columns that are incompatible with the current solution. The complementary problem makes it possible to find a descent direction composed of several variables that could be fractional or integer solution. In the case of fractional solutions, a branching often leads to an integer solution. Nowadays, computing science evolves impressively. The transformation of computer hardware into speedy machines is spectacular : a current laptop is equivalent to the 1970s biggest machines. The current trend is to produce multi-core processors and to design and implement parallel computing techniques. The general objective of this thesis is to study and apply parallel computing techniques to ISUD.We propose parallel implementations of ISUD in order to improve its performances and to profit from the contemporary evolution of the computer science. To design these algorithms we have exploited parallelism within ISUD and introduced specific decompositions. At first, we group the columns of the current solution into clusters in order to decompose the initial problem into independent sub-problems. These will be solved in parallel to get an improving solution by combining the sub-problems optimal solutions. To do so, we construct a graph whose nodes are the current solution columns. The edge (i, j) weight is computed by weighting functions that use the information from the original problem such as the number of columns that span two columns Ai and Aj of the current solution. Then, the constructed graph is split into sub graphs and as a result to a set of the current solution clusters. Thus, we add a second dynamic decomposition to the RP-CP one which is intrinsic to ISUD.We obtain a parallel algorithm, The Integral Simplex Using Double Decomposition, called ISU2D. We tested it on instances of bus drivers having up to 1600 constraints and 570000 variables. The ISU2D reduces the computing time of ISUD by a factor of 3, even 4 for some instances. It reaches an optimal or near optimal solution for the majority of these instances in less than 10 min while the commercial solver CPLEX cannot even find a feasible solution with a gap that is less than 10 % after a one-hour time limit. But, ISU2D suffers of the limitation which is the use of a single decomposition of the current solution at a time. In a second step, we improve our algorithm by generalizing the second decomposition concept. Indeed, our goal is to use multiple dynamic decompositions simultaneously. We propose an algorithm, called DISUD, a distributed algorithm based on ISUD and the multi-agent system (MAS). Each agent is an entity that is, at least partially, autonomous and characterized by the dynamic decomposition that it applies. We implemented two variants where agents can be independent or cooperating according to the strategy adopted. Thus, we increase the performance of ISU2D and benefit more from computing hardware evolution. We tested DISUD on airplane flight scheduling problems. The obtained results show that DISUD is better than DCPLEX, the distributed version of the advanced CPLEX commercial solver on our test instances. It achieves better quality solutions than the DCPLEX and reduces the computing time by an average factor of 4 to 5 for some instances. In addition, it solved large instances that the DCPLEX could not improve after a one-hour time limit. In a third work, we integrate the DISUD in a column generation context (GC). This choice is justified by the fact that the coupling of the method of generating columns with enumeration methods such as branch and price is widely used in industry. ISUD has potential to replace the usual enumeration methods to solve the SPP. As a result, there is potential to integrate GC and DISUD to address industry issues. We develop DICG a column generation algorithm which uses DISUD instead of enumeration methods. The results that we obtained during our tests showed that DICG solutions are of good quality (less than 1%). Moreover, it reduces the time of computation by a factor of 2 or even 4 compared to the DRMH, a distributed version of the Restricted Master heuristic. Thus, we have contributed to ISUD evolution. In addition, we improved the performances of ISUD and reduced its computing time. Furthermore, we paved the way for future work to expand the uses of the distributed version of ISUD

    Algorithme du simplexe en nombres entiers avec décomposition

    Get PDF
    RÉSUMÉ : L’objectif général de cette thèse est de développer un algorithme efficace pour la résolution du problème de partitionnement d’ensemble (SPP : Set Partitioning Problem). Le SPP est un problème très connu de la programmation linéaire en nombres entiers. Il consiste à partitionner un ensemble de tâches (ex : vols d’avion, segments de trajet d’autobus, ...) en sous-ensembles (routes de véhicules ou suites de tâches effectuées par une personne) de sorte que les sous-ensembles sélectionnés aient un coût total minimum tout en couvrant chaque tâche exactement une et une seule fois. Le SPP est en général résolu par la méthode branch-and-price. Cette méthode peut être excessivement lente dans le cas de problèmes difficiles de très grande taille. Le paradigme derrière la méthode est “dual” ou “tout ou rien” dans le sens où une solution entière du problème est en général obtenue très tard ou à la fin de la résolution pour les problèmes pratiques. Avoir une solution entière rapidement est très apprécié en pratique. En plus, il est très fréquent, en pratique, de vouloir optimiser un problème pour lequel on connaît déjà une solution avec une bonne information primale que l’on veut, au moins, améliorer. La méthode branch-and-price n’est pas adaptée pour tirer avantage d’une telle situation. Une approche “primale” est mieux appropriée pour la résolution du SPP (ex : planification d’horaires de chauffeurs d’autobus). L’approche, en question, s’appelle l’algorithme du simplexe en nombres entiers et consiste à commencer d’une solution initiale connue et effectuer une série de petites améliorations de façon à produire une suite de solutions présentant des coûts décroissants et convergeant vers une solution optimale. Plusieurs auteurs ont proposé par le passé des algorithmes pour résoudre le SPP d’une façon primale. Malheureusement, aucun de ces algorithmes n’est assez efficace pour être utilisé en pratique. Le principal facteur derrière cela est la nature fortement dégénérée du SPP. Pour chaque solution, il y a un très grand nombre de bases permettant d’identifier des mouvements vers des solutions voisines. Le phénomène de la dégénérescence implique qu’il est difficile, et même combinatoire, de passer d’une solution entière à une autre ; mais ces algorithmes ne proposent pas de techniques efficaces pour pallier ce phénomène. Donc, plus précisément, l’objectif de cette thèse est de proposer une implémentation de l’algorithme du simplexe en nombres entiers pratique et efficace contre la dégénérescence. C’est-à-dire que l’implémentation recherchée doit être capable de résoudre des SPPs de grande taille ; et elle doit aussi être en mesure d’exploiter une solution initiale donnée et produire, itérativement et dans des temps raisonnablement courts, des solutions améliorées. Pour ce faire, nous commençons, dans un premier travail, par l’exploitation des idées d’un algorithme appelé simplexe primal amélioré (IPS : Improved Primal Simplex). Cet algorithme cerne efficacement le phénomène de la dégénérescence lors de la résolution d’un programme linéaire quelconque. Ainsi, nous proposons un algorithme inspiré par IPS et adapté au contexte du SPP (nombres entiers). L’algorithme, baptisé simplexe en nombres entiers avec décomposition, commence à partir d’une solution initiale avec une bonne information primale. Comme dans IPS, il améliore itérativement la solution courante en décomposant le problème original en deux sous-problèmes : un premier sous-problème, appelé problème réduit, qui est un petit SPP, permet d’améliorer la solution en ne considérant que les colonnes dites compatibles avec la solution courante. Un deuxième sous-problème, appelé problème complémentaire, ne considérant que les colonnes incompatibles avec la solution courante, permet de trouver une direction de descente combinant plusieurs variables qui garantit d’avoir une meilleure solution, mais pas nécessairement entière. Le domaine réalisable du problème complémentaire, relaxé de toute contrainte d’intégralité, représente un cône des directions réalisables. Une contrainte supplémentaire, appelée contrainte de normalisation, lui est ajoutée pour assurer qu’il soit borné. Les directions qu’il trouve ont la caractéristique d’être minimales dans le sens où elles ne contiennent aucune sous-direction réalisable. Cette caractéristique, accompagnée d’une technique de pricing partiel (partial pricing) appelée multi-phase, fait que, dans la majorité des itérations, le problème complémentaire trouve directement des directions qui mènent vers des solutions entières. Dans le restant des cas, où les directions trouvées mènent vers des solutions fractionnaires, un branchement en profondeur permet souvent d’aboutir rapidement à une solution entière. Nous avons testé ce nouvel algorithme sur des instances d’horaires de chauffeurs d’autobus ayant 1600 contraintes et 570000 variables. L’algorithme atteint la solution optimale, ou une solution assez proche, pour la majorité de ces instances ; et ceci dans un temps qui représente une fraction de ce qu’aurait demandé un solveur commercial tel que CPLEX; sachant que ce dernier n’arrive même pas à trouver une première solution réalisable après une durée de plus de 10 heures d’exécution sur certaines instances. L’algorithme, dans sa première version, représente à notre avis une première implémentation de l’algorithme du simplexe en nombres entiers à être capable de résoudre des instances de SPP de grande taille dans des temps acceptables en pratique. Toutefois, il souffre encore de quelques limitations telles que la nécessité de développer un branchement complexe pour pouvoir améliorer la qualité des solutions trouvées. Cela est dû au fait que le problème complémentaire présente une structure difficilement exploitable par CPLEX. Une autre limitation de cette implémentation est qu’elle ne permet pas de supporter les contraintes supplémentaires qui ne sont pas de type partitionnement. Dans un deuxième travail, nous améliorons notre algorithme en généralisant certains aspects de son concept. Notre objectif dans cette étape est d’éviter d’implémenter un branchement complexe et exhaustif tout en permettant à notre algorithme de pouvoir considérer des contraintes supplémentaires. Nous revoyons donc la façon avec laquelle l’algorithme décompose le problème et nous proposons une méthode de décomposition dynamique où l’intégralité de la solution est contrôlée au niveau du problème réduit au lieu du problème complémentaire. Ainsi, le problème complémentaire n’est plus responsable de trouver une direction menant à une solution entière mais plutôt une direction de descente quelconque ; et c’est le problème réduit qui s’occupe de chercher une solution entière autour de cette direction de descente en déléguant le branchement au solveur commercial. Avec cette décomposition dynamique, l’algorithme atteint une solution optimale, ou presque optimale, pour toutes les instances, tout en maintenant le même ordre de grandeur des temps d’exécution de la version précédente. Dans un troisième travail, nous nous donnons l’objectif d’améliorer la performance de l’algorithme. Nous visons de rendre les temps d’exécution de l’algorithme plus rapides sans perdre tous les avantages introduits par le deuxième travail. Nous constatons, alors, que la minimalité des directions de descente exigée par le problème complémentaire est un facteur qui favorise l’intégralité des solutions subséquentes, mais représente, aussi, un élément de ralentissement puisqu’il force l’algorithme à faire plusieurs petits pas, vers des solutions adjacentes uniquement, en direction de sa solution finale. Nous changeons, alors, le modèle du problème complémentaire pour lui permettre de trouver des directions de descente non minimales. Le nouveau modèle arrive, ainsi, à aller directement vers des solutions entières non adjacentes présentant des améliorations considérables dans le coût ; et ceci en un nombre d’itérations très réduit qui ne dépasse pas deux itérations pour les instances de grande taille dans nos tests. Une solution optimale est toujours atteinte et le temps global d’exécution est réduit par au moins un facteur de cinq sur toutes les instances. Ce facteur est de l’ordre de dix pour les instances de grande taille. Avec ces trois travaux, nous pensons avoir proposé un algorithme du simplexe en nombres entiers efficace qui produit des solutions de qualité en des temps courts.----------ABSTRACT : The general objective of this thesis is to develop an efficient algorithm for solving the Set Partitioning Problem (SPP). SPP is a well known problem of integer programming. Its goal is to partition a set of tasks (e.g. plane flights, bus trip segments, ...) into subsets (vehicle routes or set of tasks performed by a person) such that the selected subsets have a minimum total cost while covering each task exactly once. SPP is usually solved by the method of branch-and-price. This method can be excessively slow when solving difficult problems of large size. The paradigm behind the method is “dual” or “all or nothing” in the sense that an integer solution of the problem is generally obtained very late or at the end of the solution process for large instances. In practice, having an integer solution quickly is very appreciated. Also, it is very common in practice to solve a problem for which a solution having good primal information is already known. We want to, at least, improve that solution. The branch-and-price method is not suitable to take advantage of such a situation. A “primal” approach fits better for the solution of the SPP (e.g. bus driver scheduling). The approach is called the Integral Simplex algorithm. It consists of starting from a known initial solution and performing a series of small improvements so as to produce a series of solutions with decreasing costs and converging towards an optimal solution. Several authors have, in the past, proposed algorithms for solving the SPP in using a primal paradigm. Unfortunately, none of these algorithms is effective enough to be used in practice. The main factor behind this is the highly degenerate nature of the SPP. For each solution, there is a very large number of bases that permit to identify transitions to neighbor solutions. The degeneracy implies that it is difficult, and even combinatorial, to go from an integer solution to another; but these algorithms do not offer effective techniques to overcome degeneracy. So, specifically, the aim of this thesis is to introduce an implementation of the Integral Simplex that is effective against degeneracy in practice. This means that the intended implementation must be able to solve SPPs of large size; and it must also be able to benefit from a given initial solution and produce, iteratively and in reasonably short time, improved solutions. To do this, we first use ideas from an algorithm called Improved Primal Simplex (IPS) algorithm. This algorithm helps the primal simplex algorithm in effectively coping with degeneracy when solving linear programs. Thus, we propose an algorithm inspired by IPS and adapted to the context of the SPP. The algorithm, called Integral Simplex Using Decomposition, starts from an initial solution with good primal information. As in IPS, it iteratively improves the current solution by decomposing the original problem into two sub-problems: a first sub-problem, called reduced problem, which is a small completely non-degenerate SPP that improves the solution by considering only the columns that are said to be compatible with the current solution. A second sub-problem, called complementary problem, considers only the columns that are incompatible with the current solution. The complementary problem finds a descent direction, combining several variables, that guarantees to have a better solution; but not necessarily integer. The feasible domain of the complementary problem, where all the integrality constraints are relaxed, is a cone of feasible directions. An additional constraint, called normalization constraint, is added to ensure that the problem is bounded. The directions found are minimal in the sense that they do not contain any feasible sub-direction. This minimality feature, combined with a partial pricing technique called multi-phase, helps the complementary problem in finding directions that directly lead to integer solutions in the majority of iterations. In the remaining cases, where the directions lead to fractional solutions, a quick deep branching often lead to an integer solution. We tested the new algorithm on bus driver scheduling problems having 1600 rows and 570000 columns. The algorithm reaches an optimal, or near optimal, solution for the majority of these problems; solution times represent a fraction of what would have taken a commercial solver such as CPLEX. The latter does not even find a first feasible solution within a 10 hour runtime period for some of those problems. We think that the algorithm, under its first version, is a first implementation of the integral simplex method that was able to solve large SPP problems within acceptable times in practice. However, it still has some limitations such as the need to develop a complex branching to improve the quality of the solutions found. This is due to the fact that the complementary problem presents a structure that is not suitable to handle. Another limitation of this implementation is the fact that it does not consider supplementary non partitioning constraints. In a second paper, we improve our algorithm generalizing certain aspects of its concept. Our goal in this step is to avoid implementing a complex and exhaustive branching while allowing our algorithm to consider supplementary constraints. We review, therefore, the way in which the algorithm decomposes the problem and propose a method of dynamic decomposition where the integrality of the solution is controlled within the reduced problem instead of the complementary problem. Thus, the complementary problem is no longer responsible for finding a direction leading to an integer solution but only a descent direction; and the reduced problem handles the integrality of the solution, while searching around this descent direction, by delegating the branching to the commercial solver. With this dynamic decomposition, the algorithm reaches an optimal or near optimal solution for all instances; while maintaining execution times comparable to the ones from the previous version. In a third paper, we target the objective of improving the performance of the algorithm. We aim to make the algorithm run faster without losing the benefits introduced by the second paper. We observe, then, that the minimality of descent directions, required by the complementary problem, forces the algorithm to make small steps towards adjacent solutions. We then change the model of the complementary problem to let it find non-minimal descent directions. The new model is, thus, able to go directly to non-adjacent integer solutions with significant improvements in the cost, in a very limited number of iterations that does not exceed two iterations for large problems in our tests. An optimal solution is always reached and the execution time is reduced by at least a factor of five on all instances. This factor is about ten for large instances. With these three papers, we believe we have introduced an effective integral simplex algorithm that produces quality solutions in short times

    Étude et séparation des inégalités valides pour des problèmes de partitionnement et de couverture

    Get PDF
    RÉSUMÉ : Cette thèse s'intéresse aux inégalités valides et leurs algorithmes de séparation pour les problèmes de partitionnement et de couverture suivants : le problème d'horaires de véhicules avec plusieurs dépôts (Multiple Depot Vehicle Scheduling Problem, MDVSP), le problème de partitionnement d'ensemble (Set Partitioning Problem, SPP) et le problème du transversal de circuits de cardinalité minimale (MINimum cardinality Feedback Vertex Set problem, MIFVS). Notons que les inégalités valides introduites sont aussi applicables à d'autres problèmes ayant des structures similaires aux problèmes étudiés. Dans la première partie de cette thèse, nous présentons un algorithme combinant la méthode d'élimination de variables, la méthode de séparation et évaluation progressive et la méthode de génération de plans coupants pour la résolution du MDVSP. Nous utilisons la formulation mathématique de multi-flot dans les réseaux, proposée par Ribeiro et Soumis (1994). Pour réduire la taille du problème nous débutons par l'application de la méthode d'élimination de variables. Dans la première phase, nous appliquons une proposition énoncée par Nemhauser et Wosley (1988) et dans la deuxième phase, nous utilisons le principe introduit par Irnich et al.(2010) mais sans génération de colonnes. Ensuite, afin d'améliorer la valeur de la borne inférieure, nous décrivons une méthode de génération de plans coupants. Cette dernière est basée sur une généralisation des inégalités valides introduites par Hadjar et al. (2006). Pour séparer ces inégalités valides, nous proposons d'identifier deux structures particulières propres au MDVSP. Par la suite, nous comparons la performance de différentes stratégies de notre algorithme à l'aide des instances générées aléatoirement. Finalement, nous concluons qu'en général notre algorithme est meilleur que le solveur commercial CPLEX. La première méthode de séparation proposée pour identifier la première structure, que nous nommons structure de cycle impair conflictuel, utilise la similitude entre le problème du stable et le MDVSP. Notre méthode consiste à construire un graphe de conflit à l'aide d'un sous-ensemble d'arcs possédant certaines propriétés dans le multigraphe représentant le MDVSP. Nous prouvons qu'un trou impair dans le graphe de conflit correspond à un cycle impair conflictuel dans le multigraphe du MDVSP. Afin d'identifier les trous impairs nous adaptons l'algorithme proposé par Nemhauser et Sigismondi (1992). En outre, nous démontrons que chaque cycle impair conflictuel permet d'obtenir une inégalité valide violée par la solution fractionnaire courante. Afin d'enrichir ces inégalités, nous décrivons une procédure de liftage. La deuxième méthode de séparation proposée pour identifier la deuxième structure, que nous nommons structure de coupe impaire, exploite la ressemblance entre le problème de couplage et le MDVSP et, par conséquent, entre les inégalités valides du MDVSP et les inégalités d'Edmonds (1965). La relation entre les deux problèmes est basée sur le principe de conflit, pour le problème de couplage, deux arêtes adjacentes sont toujours en conflit et pour le MDVSP deux sous-chemins adjacents peuvent être en conflit s'ils ont la même source ou le même puits ou s'ils sont de couleurs différentes), donc si nous remplaçons un sous-chemin par une arête, alors les inégalités d'Edmonds engendrent des inégalités valides du MDVSP. Afin d'identifier des structures de coupes impaires, nous construisons un graphe de chemins réguliers, où un chemin régulier est une suite d'arcs de même couleur. Ensuite, nous formulons le problème de séparation comme un programme linéaire en nombres entiers et nous prouvons que certaines solutions entières de ce dernier nous permettent d'identifier des inégalités de coupe impaire. Afin de l'enrichir, nous proposons une procédure de liftage. Nous démontrons que chaque coupe impaire liftée correspond à une inégalité valide pour le MDVSP. Dans la deuxième partie de cette thèse, nous proposons la résolution du problème de partitionnement d'ensemble par une méthode combinant la méthode de séparation et évaluation progressive et la méthode de génération de plans coupants. Notons que nous nous intéressons au problème de partitionnement pur. Nous introduisons deux nouvelles classes d'inégalités valides: nommées les inégalités de type I et de type II, pour le problème de partitionnement. En outre, nous formulons le problème de séparation de chaque classe d'inégalités valides comme un programme linéaire en nombres entiers et nous montrons que certaines solutions entières de ce dernier permettent d'identifier des inégalités valides pour le problème de partitionnement. Ensuite, nous proposons de séparer les inégalités de clique en résolvant un autre problème auxiliaire en nombres entiers. Enfin, nous analysons l'efficacité de notre algorithme en utilisant quelques instances de Hoffman et Padberg (1993) et d'autres générées aléatoirement à l'aide du générateur proposé par Lewis et al. (2008). Finalement, nous concluons que notre algorithme est plus efficace que CPLEX lorsque la densité du problème à résoudre est supérieure à 16% et ne l'est pas dans le cas contraire. Dans la dernière partie de cette thèse, nous présentons une méthode combinant la génération de contraintes et des plans coupants afin de résoudre une variante du problème de transversal de circuits de cardinalité minimale. Ce dernier est relié à l'analyse des dictionnaires des langues naturelles. Nous nous intéressons à un des problèmes de linguistique qui consiste à déterminer le nombre minimum de mots à connaître pour comprendre toutes les définitions d'un dictionnaire donné. Ce problème est formulé comme un problème de transversal de circuits de cardinalité minimale. Nous décrivons des méthodes de séparation de trois classes d'inégalités valides : deux classes particulières des inégalités de Chvátal-Gomory et les inégalités de clique de cardinalité 3. Nous formulons le problème de séparation de chaque classe comme un programme linéaire en nombres entiers et nous démontrons que certaines solutions entières permettent d'identifier des inégalités valides pour le problème à résoudre. Enfin, nous présentons et nous analysons les résultats des tests effectués à l'aide des exemplaires extraits de dictionnaires de langue anglaise. Malheureusement, les résultats obtenus ne sont pas concluants étant donné que pour certaines instances nous n'avons pas réussi à trouver les solutions optimales en utilisant le solveur commercial, ni à prouver l'optimalité en utilisant notre algorithme. Néanmoins, nous constatons que l'ajout des inégalités valides permet de trouver de meilleures solutions réalisables dans le temps limite imparti et dans certains cas à trouver la solution optimale. Les travaux présentés dans cette thèse constituent une démarche basée sur les caractéristiques du problème à résoudre. Notre objectif est de présenter de nouveaux algorithmes efficaces pour la séparation des inégalités valides, permettant l'amélioration de la valeur de la relaxation linéaire, mais « bien qu'on ait du cœur à l'ouvrage, l'art est long et le temps est court ». (Charles Baudelaire, Les fleurs du mal).----------ABSTRACT : In this thesis, we study valid inequalities and we propose branch-and-cut algorithms for some classical problems such as : the Multiple Depot Vehicle Scheduling Problem (MDVSP), the Set Partitioning Problem (SPP) and the MINimum cardinality Feedback Set problem (MINFVS). In the first part of this thesis, we present an algorithm combining branch-and-bound, cutting planes and variable fixing to solve the MDVSP. We use the multicommodity flow model of the MDVSP, proposed by Reibero and Soumis (1994). In the first step, we apply a proposition to fix the variables that was introduced by Nemhauser and Wosley (1988) and used by Hadjar et al. (2006). In order to eliminate more variables, we use the same rule as Irnich et al.(2010) but without column generation. In the second step, we describe a method for separating the valid inequalities introduced by Hadjar et al. (2006) and generalized in the present work. Our method identifies two special structures corresponding to valid inequalities. Then we present the results of computational experiments comparing the performance of several strategies using the random instances. We conclude that our algorithm is better than the commercial software. The separation procedure that we propose to identify the first structure, called odd conflictual cycle, uses the similarity between the MDVSP and the stable set problem. We start by creating a conflict graph of the multigraph representing the MDVSP, we consider only the arcs in conflict. Then we prove that each odd hole in this conflict graph is an odd conflictual cycle in the multigraph representing the MDVSP. In order to identify odd holes we adopt the polynomial algorithm proposed by Nemhauser and Sigismondi (1992). Moreover we prove that every odd conflictual cycle identifies a valid inequality violated by the fractional solution. We also present a lifting procedure in order to enrich the valid inequalities. The separation procedure that we present to identify the second structure, called odd set, uses the relationship between the MDVSP and the matching problem, consequently the relationship between the valid inequalities for the MDVSP and the blossom inequalities introduced by Edmonds (1965). In the matching problem two adjacent edges are always in conflict and for the MDVSP two adjacent subpaths may be in conflict (if they are the same source or the same sink or of different colours). In order to identify the odd set, we use the regular path graph, where a regular path is a sequence of the arcs with the same colour. Then we formulate the separation problem as an integer program and we prove that each integer solution identifies, under certain conditions, an odd set. In addition, we present a lifting procedure and we prove that each inequality obtained by lifted odd set is a valid inequality for the MDVSP. In the second part of this thesis, we propose an algorithm combining branch-and-bound and the cutting planes method to solve the set partitioning problem. Note that we are interested in the pure partitioning problem. We derive new classes of valid inequalities for the problem. Moreover, we present a separation procedure for each class by solving an auxiliary integer program using a fractional solution of the set partitioning problem. Then we prove that each integer solution of this program, under certain conditions, is a valid inequality for the problem. We lift this inequality with variables of value 00. Also we propose to separate a clique inequality by using another auxiliary integer program and we prove that each integer solution of this program, under certain conditions, is a clique inequality for the set partitioning problem. Finally, we present the results of a computational study and we compare our results with the commercial software. Note that we use instances of Hoffman and Padberg (1993) and other randomly generated instances using the generator proposed by Lewis et al. (2008). We conclude that our algorithm is better than the commercial software when the density of the problem is greater than 16% and is not otherwise. In the last part of this thesis, we present a method combining constraint generation and cutting planes generation in order to solve a class of feedback vertex set problem arising in the analysis of the natural language dictionaries. A dictionary is a set of definitions, where a definition consist of one or several sentences represented by the sequence of words. We are interested in the linguistic problem of determining the minimum number of words to know in order to understand all definitions in the dictionary. We propose to separate two classes of Chvátal-Gomory inequalities and clique inequalities of cardinality 3 by solving an auxiliary integer program for each of them. Also we prove that each integer solution of the auxiliary program identifies a valid inequality for the feedback vertex set problem. Finally we present and analyze the resultats of computational experiments using the dictionaries of the English language are available on the Word Wide Web. Unfortunately, the results are not conclusive because we are not able to find optimal solution using a solver commercial or prove optimality using our algorithm. However, we observe that adding the valid inequalities permits to find better feasibles solutions within the time limit prescribed. The work presented in this thesis is an approach based on the characteristics of the problem. Our objective is to present new efficient algorithms for the separation of valid inequalities in order to improve the value of the linear relaxation

    Méthodes pour favoriser l’intégralité de l’amélioration dans le simplexe en nombres entiers - Application aux rotations d’équipages aériens

    Get PDF
    RÉSUMÉ : Dans son cadre le plus général, le processus d’optimisation mathématique se scinde en trois grandes étapes. La première consiste à modéliser le problème, c’est-à-dire le représenter sous la forme d’un programme mathématique, ensemble d’équations constitué d’un objectif à minimiser ou maximiser (typiquement, les coûts ou le bénéfice de l’entreprise) et de contraintes à satisfaire (contraintes opérationnelles, convention collective, etc.). Aux décisions à prendre correspondent les variables du problème. S’il est une représentation parfaite de la réalité, ce modèle est dit exact, sinon il reste approximatif. La seconde étape du processus est la résolution de ce programme mathématique. Il s’agit de déterminer une solution respectant les contraintes et pour laquelle la valeur de l’objectif est la meilleure possible. Pour ce faire, on applique généralement un algorithme de résolution, ensemble de règles opératoires dont l’application permet de résoudre le problème énoncé au moyen d’un nombre fini d’opérations. Un algorithme peut être traduit grâce à un langage de programmation en un programme exécutable par un ordinateur. L’exécution d’un tel programme permet ainsi de résoudre le programme mathématique. Enfin, la dernière étape consiste à ajuster la solution obtenue à la réalité. Dans le cas où le modèle n’est qu’approximatif, cette solution peut ne pas convenir et nécessiter d’être modifiée a posteriori afin de s’accorder aux exigences de la réalité concrète. Cette thèse se concentre sur la seconde de ces trois étapes, l’étape de résolution, en particulier sur le développement d’un algorithme de résolution d’un programme mathématique précis, le partitionnement d’ensemble. Le problème de partitionnement d’ensemble permet de modéliser des applications variées : planification d’emplois du temps, logistique, production d’électricité, partage équitable, reconnaissance de forme, etc. Pour chacun de ces exemples l’objectif et les contraintes prennent des significations physiques différentes, mais la structure du modèle est la même. D’un point de vue mathématique, il s’agit d’un programme linéaire en nombres entiers, dont les variables sont binaires, c’est-à-dire qu’elles ne peuvent prendre que les valeurs 0 et 1. Le programme est linéaire car l’objectif et les contraintes sont représentés par des fonctions linéaires des variables. Les algorithmes les plus couramment utilisés pour la résolution de tels problèmes sont basés sur le principe de séparation et évaluation (branch-and-bound). Dans ces méthodes, les contraintes d’intégralité sont d’abord relâchées : les solutions peuvent alors être fractionnaires. La résolution du programme ainsi obtenu – appelé relaxation linéaire du programme en nombres entiers – est bien plus simple que celle du programme en nombres entiers. Pour obtenir l’intégralité, on sépare le problème afin d’éliminer les solutions fractionnaires. Ces séparations donnent naissance à un arbre de branchement où, à chaque noeud, la relaxation d’un problème de partitionnement de la taille du problème original est résolue. La taille de cet arbre, et donc le temps d’exécution, croissent exponentiellement avec la taille des instances. De plus, l’algorithme utilisé pour résoudre la relaxation, le simplexe, fonctionne mal sur des problèmes dégénérés, c’est-à-dire dont trop de contraintes sont saturées. C’est malheureusement le cas de nombreux problèmes issus de l’industrie, particulièrement du problème de partitionnement dont le taux de dégénérescence est intrinsèquement élevé. Une autre approche de ce type de problèmes est celle des algorithmes primaux : il s’agit de partir d’une solution entière non optimale, de trouver une direction qui mène vers une meilleure solution entière, puis d’itérer ce processus jusqu’à atteindre l’optimalité. À chaque étape, un sous-problème d’augmentation est résolu : trouver une direction d’amélioration (ou d’augmentation) ou affirmer que la solution courante est optimale. Les travaux concernant les méthodes primales sont moins nombreux que ceux sur le branch-and-bound, qui représentent depuis quarante ans la filière dominante pour la résolution de problèmes en nombres entiers. Développer une méthode primale efficace en pratique constituerait ainsi un changement majeur dans le domaine. Des travaux computationels sur des algorithmes primaux ressortent deux principaux défis rencontrés lors de la conception et l’implémentation de ces méthodes. D’une part, de nombreuses directions d’amélioration sont irréalisables, c’est-à-dire qu’effectuer un pas, aussi petit soit-il, dans ces directions implique une violation des contraintes du problème. On parle alors de dégénérescence ; c’est par exemple le cas des directions associées à certains pivots de simplexe (pivots dégénérés). Les directions irréalisables ne permettent pas à l’algorithme de progresser et peuvent mettre en péril sa terminaison s’il est impossible de déterminer de direction réalisable. D’autre part, lorsqu’une direction d’amélioration réalisable pour la relaxation linéaire a été déterminée, il est difficile de s’assurer que la solution vers laquelle elle mène est entière. Parmi les algorithmes primaux existants, celui qui apparait comme le plus prometteur est le simplexe en nombres entiers avec décomposition (Integral Simplex Using Decomposition, ISUD) car il intègre au cadre primal des techniques de décomposition permettant de se prémunir des effets néfastes de la dégénérescence. Il s’agit à notre connaissance du premier algorithme de type primal capable de battre le branch-and-bound sur des instances de grande taille ; par ailleurs, la différence est d’autant plus importante que le problème est grand. Bien que fournissant des éléments de réponse à la problématique de la dégénérescence, cette méthode n’aborde pas pour autant la question de l’intégralité lors du passage à une solution de meilleur coût ; et pour qu’ISUD puisse envisager de supplanter les méthodes de type branch-and-bound, il lui faut parcourir cette deuxième moitié du chemin. Il s’agit là de l’objectif de ce doctorat : augmenter le taux de directions entières trouvées par ISUD pour le rendre applicable aux instances industrielles de grande taille, de type planification de personnel. Pour aller dans cette direction, nous approfondissons tout d’abord les connaissances théoriques sur ISUD. Formuler ce dernier comme un algorithme primal, comprendre en quoi il se rattache à cette famille, le traduire pour la première fois dans un langage exclusivement primal sans faire appel à la dualité, constituent le terreau de cette thèse. Cette analyse permet ensuite de mieux décrire la géométrie sous-jacente ainsi que les domaines de réalisabilité des différents problèmes linéaires considérés. Quand bien même ce pan majeur de notre travail n’est pas présenté dans cette thèse comme un chapitre à part entière, il se situe indubitablement à l’origine de chacune de nos idées, de nos approches et de nos contributions. Cette approche de l’algorithme sous un angle nouveau donne lieu à de nombreuses simplifications, améliorations et extensions de résultats déjà connus. Dans un premier temps, nous généralisons la formulation du problème d’augmentation afin d’augmenter la probabilité que la direction déterminée par l’algorithme mène vers une nouvelle solution entière. Lors de l’exécution d’ISUD, pour déterminer la direction qui mènera à la solution suivante, on résout un programme linéaire dont la solution est une direction d’amélioration qui appartient au cône des directions réalisables. Pour s’assurer que ce programme est borné (les directions pourraient partir à l’infini), on lui ajoute une contrainte de normalisation et on se restreint ainsi à une section de ce cône. Dans la version originelle de l’algorithme, les coefficients de cette contrainte sont uniformes. Nous généralisons cette contrainte à une section quelconque du cône et montrons que la direction réalisable déterminée par l’algorithme dépend fortement du choix des coefficients de cette contrainte ; il en va de même pour la probabilité que la solution vers laquelle elle mène soit entière. Nous étendons les propriétés théoriques liés à la décomposition dans l’algorihtme ISUD et montrons de nouveaux résultats dans le cas d’un choix de coefficients quelconques. Nous déterminons de nouvelles propriétés spécifiques à certains choix de normalisation et faisons des recommandations pour choisir les coefficients afin de pénaliser les directions fractionnaires au profit des directions entières. Des résultats numériques sur des instances de planification de personnel montrent le potentiel de notre approche. Alors que la version originale d’ISUD permet de résoudre 78% des instances de transport aérien du benchmark considéré, 100% sont résolues grâce à l’un, au moins, des modèles que nous proposons. Dans un second temps, nous montrons qu’il est possible d’adapter des méthodes de plans coupants utilisés en programmation linéaire en nombres entiers au cas d’ISUD. Nous montrons que des coupes peuvent êtres transférées dans le problème d’augmentation, et nous caractérisons l’ensemble des coupes transférables comme l’ensemble, non vide, des coupes primales saturées pour la solution courante du problème de partitionnement. Nous montrons que de telles coupes existent toujours, proposons des algorithmes de séparation efficaces pour les coupes primales de cycle impair et de clique, et montrons que l’espace de recherche de ces coupes peut être restreint à un petit nombre de variables, ce qui rend le processus efficace. Des résultats numériques prouvent la validité de notre approche ; ces tests sont effectués sur des instances de planification de personnel navigant et de chauffeurs d’autobus allant jusqu’à 1 600 contraintes et 570 000 variables. Sur les instances de transport aérien testées l’ajout de coupes primales permet de passer d’un taux de résolution de 70% à 92%. Sur de grandes instances d’horaires de chauffeurs d’autobus, les coupes prouvent l’optimalité locale de la solution dans plus de 80% des cas. Dans un dernier temps, nous modifions dynamiquement les coefficients de la contrainte de normalisation lorsque la direction trouvée par l’algorithme mène vers une solution fractionnaire. Nous proposons plusieurs stratégies de mise-à-jour visant à pénaliser les directions fractionnaires basées sur des observations théoriques et pratiques. Certaines visent à pénaliser la direction choisie par l’algorithme, d’autres procèdent par perturbation des coefficients de normalisation en utilisant les équations des coupes mentionnées précédemment. Cette version de l’algorithme est testée sur un nouvel ensemble d’instances provenant de l’industrie du transport aérien. À notre connaissance, l’ensemble d’instances que nous proposons n’est comparable à aucun autre. Il s’agit en effet de grands problèmes d’horaires de personnel navigant allant jusqu’à 1 700 vols et 115 000 rotations, donc autant de contraintes et de variables. Ils sont posés sous la forme de problèmes de partitionnement pour lesquels nous fournissons des solutions initiales comparables à celles dont on disposerait en milieu industriel. Notre travail montre le potentiel qu’ont les algorithmes primaux pour résoudre des problèmes de planification de personnel navigant, problèmes clés pour les compagnies aériennes, tant par leur complexité intrinsèque que par les conséquences économiques et financières qu’ils entraînent.----------ABSTRACT : Optimization is a three-step process. Step one models the problem and writes it as a mathematical program, i.e., a set of equations that includes an objective one seeks to minimize or maximize (typically the costs or benefit of a company) and constraints that must be satisfied by any acceptable solution (operational constraints, collective agreement, etc.). The unknowns of the model are the decision variables; they correspond to the quantities the decision-maker wants to infer. A model that perfectly represents reality is exact, otherwise it is approximate. The second step of the optimization process is the solution of the mathematical program, i.e., the determination of a solution that satisfies all constraints and for which the objective value is as good as possible. To this end, one generally uses an algorithm, a self-contained step-by-step set of operating rules that solves the problem in a finite number of operations. The algorithm is translated by means of a programming language into an executable program run by a computer; the execution of such software solves the mathematical program. Finally, the last step is the adaptation of the mathematical solution to reality. When the model is only approximate, the output solution may not fit the original requirements and therefore require a posteriori modifications. This thesis concentrates on the second of these three steps, the solution process. More specifically, we design and implement an algorithm that solves a specific mathematical program: set partitioning. The set partitioning problem models a very wide range of applications: workforce scheduling, logistics, electricity production planning, pattern recognition, etc. In each of these examples, the objective function and the constraints have different physical significations but the structure of the model is the same. From a mathematical point of view, it is an integer linear program whose decision variables can only take value 0 or 1. It is linear because both the objective and the constraints are linear functions of the variables. Most algorithms used to solve this family of programs are based on the principle called branch-and-bound. At first, the integrality constraints are relaxed; solutions may thus be fractional. The solution of the resulting program – called linear relaxation of the integer program – is significantly easier than that of the integer program. Then, to recover integrality, the problem is separated to eliminate fractional solutions. From the splitting a branching tree arises, in which, at each node, the relaxation of a set partitioning problem as big as the original one is solved. The size of that tree, and thus the solving time, grows exponentially with the size of the instance. Furthermore, the algorithm that solves the linear relaxations, the simplex, performs poorly on degenerate problems, i.e., problems for which too many constraints are tight. It is unfortunately the case of many industrial problems, and particularly of the set partitioning problem whose degeneracy rate is intrinsiquely high. An alternative approach is that of primal algorithms: start from a nonoptimal integer solution and find a direction that leads to a better one (also integer). That process is iterated until optimality is reached. At each step of the process one solves an augmentation subproblem which either outputs an augmenting direction or asserts that the current solution is optimal. The literature is significantly less abundant on primal algorithms than on branchand- bound and the latter has been the dominant method in integer programming for over forty years. The development of an efficient primal method would therefore stand as a major breakthrough in this field. From the computational works on primal algorithms, two main issues stand out concerning their design and implementation. On the one hand, many augmenting directions are infeasible, i.e., taking the smallest step in such a direction results in a violation of the constraints. This problem is strongly related to degeneracy and often affects simplex pivots (e.g., degenerate pivots). Infeasible directions prevent the algorithm from moving ahead and may jeopardize its performance, and even its termination when it is impossible to find a feasible direction. On the other hand, when a cost-improving direction has been succesfully determined, it may be hard to ensure that it leads to an integer solution. Among existing primal algorithms, the one appearing to be the most promising is the integral simplex using decomposition (ISUD) because it embeds decomposition techniques that palliate the unwanted effects of degeneracy into a primal framework. To our knowledge, it is the first primal algorithm to beat branch-and-bound on large scale industrial instances. Furthermore, its performances improve when the problem gets bigger. Despite its strong assets to counter degeneracy, however, this method does not handle the matter of integrality when reaching out for the next solution; and if ISUD is to compete with branch-and-bound, it is crucial that this issue be tackled. Therefore, the purpose of this thesis is the following: increasing the rate of integral directions found by ISUD to make it fully competitive with existing solvers on large-scale industrial workforce scheduling instances. To proceed in that direction, we first deepen the theoretical knowledge on ISUD. Formulating it as a primal algorithm, understanding how it belongs to that family, and translating it in a purely primal language that requires no notion of duality provide a fertile ground to our work. This analysis yields geometrical interpretations of the underlying structures and domains of the several mathematical programs involved in the solution process. Although no chapter specifically focuses on that facet of our work, most of our ideas, approaches and contributions stem from it. This groundbreaking approach of ISUD leads to simplifications, strengthening, and extensions of several theoretical results. In the first part of this work, we generalize the formulation of the augmentation problem in order to increase the likelihood that the direction found by the algorithm leads to a new integer solution. In ISUD, to find the edge leading to the next point, one solves a linear program to select an augmenting direction from a cone of feasible directions. To ensure that this linear program is bounded (the directions could go to infinity), a normalization constraint is added and the optimization is performed on a section of the cone. In the original version of the algorithm, all weights take the same value. We extend this constraint to the case of a generic normalization constraint and show that the output direction dépends strongly on the chosen normalization weights, and so does the likelihood that the next solution is integer. We extend the theoretical properties of ISUD, particularly those that are related to decomposition and we prove new results in the case of a generic normalization constraint. We explore the theoretical properties of some specific constraints, and discuss the design of the normalization constraint so as to penalize fractional directions. We also report computational results on workforce scheduling instances that show the potential behind our approach. While only 78% of aircrew scheduling instances from that benchmark are solved with the original version of ISUD, 100% of them are solved by at least one of the models we propose. In the second part, we show that cutting plane methods used in integer linear programming can be adapted to ISUD. We show that cutting planes can be transferred to the augmentation problem, and we characterize the set of transferable cuts as a nonempty subset of primal cuts that are tight to the current solution. We prove that these cutting planes always exist, we propose efficient separation procedures for primal clique and odd-cycle cuts, and we prove that their search space can be restricted to a small subset of the variables making the computation efficient. Numerical results demonstrate the effectiveness of adding cutting planes to the algorithm. Tests are performed on small- and large-scale set partitioning problems from aircrew and bus-driver scheduling instances up to 1,600 constraints and 570,000 variables. On the aircrew scheduling instances, the addition of primal cuts raises the rate of instances solved from 70% to 92%. On large bus drivers scheduling instances, primal cuts prove that the solution found by ISUD is optimal over a large subset of the domain for more than 80% of the instances. In the last part, we dynamically update the coefficients of the normalization constraint whenever the direction found by the algorithm leads to a fractional solution, to penalize that direction. We propose several update strategies based on theoretical and experimental results. Some penalize the very direction returned by the algorithm, others operate by perturbating the normalization coefficients with those of the aforementionned primal cuts. To prove the efficiency of our strategies, we show that our version of the algorithm yields better results than the former version and than classical branch-and-bound techniques on a benchmark of industrial aircrew scheduling instances. The benchmark that we propose is, to the best of our knowledge, comparable to no other from the literature. It provides largescale instances with up to 1,700 flights and 115,000 pairings, hence as many constraints and variables, and the instances are given in a set-partitioning form together with initial solutions that accurately mimic those of industrial applications. Our work shows the strong potential of primal algorithms for the crew scheduling problem, which is a key challenge for large airlines, both financially significant and notably hard to solve
    corecore