4 research outputs found
EïŹcient Algorithms for Graph Optimization Problems
A doktori Ă©rtekezĂ©s hatĂ©kony algoritmusokat mutat be grĂĄfokon Ă©rtelmezett nehĂ©z kombinatorikus optimalizĂĄlĂĄsi feladatok megoldĂĄsĂĄra. A kutatĂĄs legfontosabb eredmĂ©nyĂ©t kĂŒlönbözĆ megoldĂĄsi mĂłdszerekhez kidolgozott javĂtĂĄsok jelentik, amelyek magukban foglalnak Ășj heurisztikĂĄkat, valamint grĂĄfok Ă©s fĂĄk speciĂĄlis reprezentĂĄciĂłit is. Az elvĂ©gzett elemzĂ©sek igazoltĂĄk, hogy a szerzĆ ĂĄltal adott leghatĂ©konyabb algoritmusok az esetek többsĂ©gĂ©ben gyorsabbak, illetve jobb eredmĂ©nyeket adnak, mint mĂĄs elĂ©rhetĆ implementĂĄciĂłk. A dolgozat elsĆ fele hĂ©t kĂŒlönbözĆ algoritmust Ă©s szĂĄmos hasznos javĂtĂĄst mutat be a minimĂĄlis költsĂ©gƱ folyam feladatra, amely a legtöbbet vizsgĂĄlt Ă©s alkalmazott grĂĄfoptimalizĂĄlĂĄsi problĂ©mĂĄk egyike. Az implementĂĄciĂłinkat egy ĂĄtfogĂł tapasztalati elemzĂ©s keretĂ©ben összehasonlĂtottuk nyolc mĂĄsik megoldĂłprogrammal, köztĂŒk a leggyakrabban hasznĂĄlt Ă©s legelismertebb implementĂĄciĂłkkal. A hĂĄlĂłzati szimplex algoritmusunk lĂ©nyegesen hatĂ©konyabbnak Ă©s robusztusabbnak bizonyult, mint a mĂłdszer mĂĄs implementĂĄciĂłi, tovĂĄbbĂĄ a legtöbb tesztadaton ez az algoritmus a leggyorsabb. A bemutatott költsĂ©gskĂĄlĂĄzĂł algoritmus szintĂ©n rendkĂvĂŒl hatĂ©kony; nagy mĂ©retƱ ritka grĂĄfokon felĂŒlmĂșlja a hĂĄlĂłzati szimplex implementĂĄciĂłkat. Az Ă©rtekezĂ©sben tĂĄrgyalt mĂĄsik optimalizĂĄlĂĄsi feladat a legnagyobb közös rĂ©szgrĂĄf problĂ©ma. Ezt a feladatot kĂ©miai alkalmazĂĄsok szempontjĂĄbĂłl vizsgĂĄltuk. HatĂ©kony heurisztikĂĄkat dolgoztunk ki, amelyek jelentĆsen javĂtjĂĄk kĂ©t megoldĂĄsi mĂłdszer pontossĂĄgĂĄt Ă©s sebessĂ©gĂ©t, valamint kĂ©miailag relevĂĄnsabb mĂłdon rendelik egymĂĄshoz molekulagrĂĄfok atomjait Ă©s kötĂ©seit. Az algoritmusainkat összehasonlĂtottuk kĂ©t ismert megoldĂłprogrammal, amelyeknĂ©l lĂ©nyegesen jobb eredmĂ©nyeket sikerĂŒlt elĂ©rnĂŒnk. A kifejlesztett implementĂĄciĂłk bekerĂŒltek a ChemAxon Kft. több szoftvertermĂ©kĂ©be, melyek vezetĆ nemzetközi gyĂłgyszercĂ©gek hasznĂĄlatĂĄban ĂĄllnak. Ezen kĂvĂŒl az Ă©rtekezĂ©s röviden bemutatja a LEMON nevƱ nyĂlt forrĂĄsĂș C++ grĂĄfoptimalizĂĄciĂłs programkönyvtĂĄrat, amely magĂĄban foglalja a minimĂĄlis költsĂ©gƱ folyam feladatra adott algoritmusokat. Ezek az implementĂĄciĂłk nagy mĂ©rtĂ©kben hozzĂĄjĂĄrultak a programcsomag nĂ©pszerƱsĂ©gĂ©nek növekedĂ©sĂ©hez
Algorithme du simplexe en nombres entiers avec décomposition
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