Graphes et Programmation Lineaire

PARTIE A : GENERALITES

Presentation

Le cours "Graphes et Programmation Lineaire" couvre deux domaines complementaires de la recherche operationnelle: la theorie des graphes pour modeliser des reseaux et relations, et la programmation lineaire pour optimiser des systemes sous contraintes. Ces outils mathematiques sont essentiels pour resoudre des problemes complexes d'optimisation dans l'industrie, la logistique, et les reseaux.

Annee Academique : 2023-2024
Semestre : 8
Categorie : Mathematiques Appliquees / Recherche Operationnelle


PARTIE B : PARTIE DESCRIPTIVE

Details de l'experience

Environnement et contexte

Le cours combinait theorie mathematique rigoureuse et applications pratiques via des logiciels d'optimisation. Nous avons etudie des algorithmes classiques (Dijkstra, Ford-Fulkerson, Simplexe) et les avons appliques a des problemes reels: routage, planification, allocation de ressources, ordonnancement.

Ma fonction

Dans ce cours, j'ai ete responsable de :

  • Modeliser des problemes reels en graphes ou programmes lineaires
  • Appliquer des algorithmes de recherche de chemins, flots, et arbres couvrants
  • Formuler et resoudre des problemes d'optimisation lineaire
  • Utiliser des solveurs (Python, CPLEX, GLPK)
  • Interpreter les solutions et analyses de sensibilite
  • Resoudre des problemes de transport, affectation, et ordonnancement

PARTIE C : PARTIE TECHNIQUE

Cette section explore les aspects techniques des graphes et de la programmation lineaire.

Concepts techniques appris

1. Theorie des Graphes - Definitions

Graphe G = (V, E) :

  • V : ensemble de sommets (vertices)
  • E : ensemble d'aretes (edges) ou arcs

Types :

  • Graphe oriente : arcs avec direction
  • Graphe non oriente : aretes sans direction
  • Graphe pondere : poids sur aretes/arcs
  • Graphe simple : pas de boucle ni arete multiple

Degre :

  • Degre d'un sommet : nombre d'aretes incidentes
  • Degre entrant/sortant (graphe oriente)

Chemin : sequence de sommets relies par aretes
Cycle : chemin ferme (revient au point de depart)
Connexite : tous sommets accessibles depuis tout autre

2. Algorithmes de Plus Court Chemin

Algorithme de Dijkstra :
Trouve plus court chemin d'une source vers tous autres sommets.

Complexite : O((V+E)log V) avec tas

Limitation : poids positifs uniquement

Algorithme de Bellman-Ford :
Gere poids negatifs, detecte cycles negatifs.

Complexite : O(VE)

Algorithme de Floyd-Warshall :
Plus courts chemins entre toutes paires de sommets.

Complexite : O(V³)

Applications :

  • GPS et navigation
  • Routage reseau
  • Planification de trajets
  • Jeux video (IA)

3. Arbres Couvrants

Arbre : graphe connexe acyclique
Arbre couvrant : arbre incluant tous les sommets

Arbre Couvrant de Poids Minimum (MST) :

Algorithme de Kruskal :

  • Trier aretes par poids croissant
  • Ajouter arete si ne cree pas cycle
  • Utilise union-find pour detecter cycles

Algorithme de Prim :

  • Partir d'un sommet
  • Ajouter arete de poids min reliant arbre a sommet exterieur
  • Repeter jusqu'a tous sommets inclus
Algorithme de Dijkstra

Figure : Recherche du plus court chemin avec l'algorithme de Dijkstra

Applications :

  • Conception de reseaux (electrique, eau, telecoms) a cout minimum
  • Clustering

4. Flots dans les Reseaux

Reseau de flot :
Graphe oriente avec capacites sur arcs.

Probleme du flot maximum :
Maximiser flot de la source s vers puits t.

Contraintes :

  • Flot ≤ capacite sur chaque arc
  • Conservation du flot (entrant = sortant sauf s et t)

Algorithme de Ford-Fulkerson :

  • Trouver chemin augmentant (capacite residuelle > 0)
  • Augmenter flot le long de ce chemin
  • Repeter jusqu'a plus de chemin augmentant

Theoreme flot-max = coupe-min :
Valeur du flot maximal = capacite de la coupe minimale.

Algorithme d'Edmonds-Karp :
Ford-Fulkerson avec BFS pour trouver chemin augmentant.

Complexite : O(VE²)

Applications :

  • Reseaux de transport (trafic routier, fluides)
  • Reseaux de communication (bande passante)
  • Appariement biparti

5. Probleme d'Affectation

Probleme :
Affecter n taches a n agents, minimiser cout total.

Matrice de couts C :
C_ij = cout d'affecter tache j a agent i

Formulation :

Minimiser Σ Σ C_ij x x_ij

Contraintes:
Σ_j x_ij = 1  (chaque agent 1 tache)
Σ_i x_ij = 1  (chaque tache 1 agent)
x_ij ∈ {0,1}

Algorithme hongrois :
Resout en O(n³).

Applications :

  • Affectation personnel/postes
  • Planification production
  • Appariement (dating apps!)

6. Coloration de Graphes

Probleme :
Attribuer couleur a chaque sommet tel que sommets adjacents ont couleurs differentes.

Nombre chromatique χ(G) :
Nombre minimum de couleurs necessaires.

Theoreme des 4 couleurs :
Tout graphe planaire χ ≤ 4.

Algorithmes :

  • Glouton (pas optimal mais rapide)
  • Recherche exhaustive (exponentiel)

Applications :

  • Allocation frequences radio
  • Ordonnancement (conflits de ressources)
  • Allocation registres (compilateurs)

7. Programmation Lineaire - Formulation

Forme standard :

Maximiser (ou Minimiser) Z = c1*x1 + c2*x2 + ... + cn*xn

Sous contraintes:
a11*x1 + a12*x2 + ... + a1n*xn ≤ b1
a21*x1 + a22*x2 + ... + a2n*xn ≤ b2
...
am1*x1 + am2*x2 + ... + amn*xn ≤ bm

x1, x2, ..., xn ≥ 0

Forme matricielle :

Max c^T x
s.t. Ax ≤ b, x ≥ 0

Region admissible :
Polyedre convexe defini par contraintes.

Theoreme fondamental :
Si solution optimale existe, elle se trouve a un sommet du polyedre.

8. Algorithme du Simplexe

Principe :
Parcours iteratif des sommets du polyedre vers l'optimum.

Etapes :

  1. Partir d'un sommet admissible (solution de base)
  2. Tester directions ameliorantes
  3. Se deplacer vers sommet adjacent ameliorant Z
  4. Repeter jusqu'a optimum (aucune direction n'ameliore)

Tableau du simplexe :
Forme tableau pour calculs iteratifs.

Variables d'ecart :
Transformer inegalites en egalites.

Complexite :
Exponentielle au pire cas, mais polynomial en pratique.

9. Dualite

Probleme Primal :

Max c^T x
s.t. Ax ≤ b, x ≥ 0

Probleme Dual :

Min b^T y
s.t. A^T y ≥ c, y ≥ 0

Theoreme de dualite forte :
Si primal a solution optimale x*, dual a solution optimale y* et :

c^T x* = b^T y*

Interpretation economique :

  • Primal : production optimale
  • Dual : valorisation des ressources (prix d'ombre)

Ecarts complementaires :

Si x_j > 0 alors contrainte duale j saturee
Si y_i > 0 alors contrainte primale i saturee

10. Analyse de Sensibilite

Questions :

  • Comment l'optimum varie si on change un parametre (cout, ressource) ?
  • Plage de validite de la solution actuelle ?

Prix d'ombre (shadow price) :
Variation de Z si on augmente ressource b_i d'une unite.
= variable duale y_i*

Cout reduit :
Pour variable hors base : combien c_j doit diminuer pour entrer en base.

Plages de variation :

  • Coefficients objectif c_j
  • Seconds membres b_i

Dans ces plages, solution optimale (base) reste identique.

11. Probleme de Transport

Contexte :
m sources (offres s_i), n destinations (demandes d_j).
Cout c_ij pour transporter de i vers j.

Formulation :

Min Σ_i Σ_j c_ij x x_ij

s.t.
Σ_j x_ij = s_i  (offre source i)
Σ_i x_ij = d_j  (demande destination j)
x_ij ≥ 0

Condition d'existence :
Σ s_i = Σ d_j (offre totale = demande totale)

Methode de resolution :

  • Methode du coin nord-ouest (solution initiale)
  • Stepping-stone ou MODI pour optimiser

Applications :

  • Logistique et distribution
  • Planification production multi-sites

12. Programmation Lineaire en Nombres Entiers

PLNE (Programmation Lineaire en Nombres Entiers) :

Max c^T x
s.t. Ax ≤ b, x ≥ 0, x ∈ Z^n

Difficulte :
NP-difficile (pas de methode polynomiale connue).

Methodes de resolution :

Branch and Bound :

  • Resoudre relaxation continue (ignorer contrainte entiere)
  • Brancher sur variable fractionnaire
  • Explorer arbre de decision
  • Borner avec solutions entieres trouvees

Coupes (Cutting Planes) :
Ajouter contraintes lineaires eliminant solutions fractionnaires sans enlever solutions entieres.

Methodes heuristiques :
Trouver bonnes solutions (pas necessairement optimales) rapidement.

Programmation 0-1 :
Variables binaires (decisions oui/non).

Applications :

  • Planification
  • Ordonnancement
  • Localisation d'installations
  • Sac a dos (knapsack)
  • Tournees de vehicules

PARTIE D : PARTIE ANALYTIQUE

Connaissances et competences mobilisees

  • Modelisation de problemes reels en graphes ou programmes lineaires
  • Comprehension et application d'algorithmes classiques
  • Formulation mathematique de problemes d'optimisation
  • Utilisation de solveurs (Python, logiciels dedies)
  • Interpretation de solutions et analyse de sensibilite
  • Evaluation de complexite algorithmique
  • Resolution de problemes de transport, affectation, et ordonnancement
  • Esprit critique sur pertinence des modeles et limites

Auto-evaluation

Ce cours a ete mathematiquement exigeant mais tres enrichissant. La theorie des graphes offre un langage puissant pour modeliser de nombreux systemes: reseaux, relations, dependances.

Les algorithmes classiques (Dijkstra, Kruskal, Ford-Fulkerson) sont elegants et ont fait leurs preuves. Les comprendre en profondeur (pas juste les appliquer mecaniquement) aide a adapter ou concevoir de nouveaux algorithmes.

La programmation lineaire est un outil d'optimisation extremement puissant. La capacite a formuler un probleme complexe en systeme d'equations lineaires est une competence precieuse. Le simplexe, bien que conceptuellement simple (parcours de sommets), demande rigueur dans les calculs.

L'analyse de sensibilite et la dualite sont des concepts profonds. Comprendre que chaque probleme d'optimisation a un dual avec interpretation economique (prix d'ombre) est fascinant.

La programmation en nombres entiers complexifie drastiquement les problemes. La frontiere entre polynomial (PL continue) et NP-difficile (PLNE) est impressionnante. Cela souligne l'importance des heuristiques et approximations en pratique.

Les applications sont omnipresentes: logistique, telecoms, production, transport, finance. Savoir reconnaitre qu'un probleme industriel peut se modeliser en graphe ou PL est une competence transversale.

L'utilisation de solveurs modernes (comme CPLEX, Gurobi, ou bibliotheques Python) democratise l'optimisation. Mais comprendre la theorie sous-jacente reste essentiel pour formuler correctement, interpreter resultats, et diagnostiquer problemes.

Mon avis

Ce cours est fondamental pour tout ingenieur confronte a des problemes d'optimisation, de planification, ou de gestion de reseaux.

Points forts :

  • Equilibre theorie/pratique
  • Algorithmes classiques bien expliques
  • Applications variees et concretes
  • Utilisation d'outils logiciels modernes

Points a ameliorer :

  • Plus de temps sur PLNE et heuristiques
  • Cas d'etudes industriels de grande echelle
  • Programmation non-lineaire (extension naturelle)
  • Optimisation multi-objectifs

Reflexions personnelles :

L'optimisation est au coeur de nombreux defis industriels: comment produire plus avec moins de ressources, livrer plus vite a moindre cout, utiliser au mieux l'energie, etc. Les outils mathematiques de ce cours permettent d'aborder ces questions de maniere rigoureuse.

La modelisation est souvent la partie la plus difficile. Transformer un probleme reel confus en modele mathematique propre demande abstraction et simplification intelligente. Un modele trop simple perd en pertinence; trop complexe devient insoluble.

Le fosse entre problemes polynomiaux et NP-difficiles rappelle les limites de l'optimisation exacte. Pour problemes de grande taille ou complexes, les heuristiques et metaheuristiques (algorithmes genetiques, recuit simule, etc.) sont incontournables, meme si elles ne garantissent pas l'optimalite.

La recherche operationnelle est un domaine vaste et actif. Les problemes reels incluent souvent incertitudes, dynamique, contraintes non-lineaires. L'optimisation stochastique, robuste, et en ligne sont des extensions importantes.

Applications professionnelles :

Ces competences sont applicables dans de nombreux secteurs :

  • Logistique : routage de vehicules, gestion d'entrepots, supply chain
  • Telecommunications : routage, allocation de bande passante
  • Energie : optimisation de production, smart grids
  • Transport : gestion de trafic, planification de lignes
  • Production : ordonnancement, allocation de ressources
  • Finance : optimisation de portefeuille
  • Sante : planification d'emplois du temps, allocation de ressources hospitalieres

La maitrise de ces outils, couplee a des competences en data science et apprentissage automatique, ouvre des perspectives en data-driven optimization: utiliser donnees massives pour affiner modeles et predictions, puis optimiser en consequence.

Maitriser ces techniques en S8 est essentiel pour tout ingenieur souhaitant concevoir ou ameliorer des systemes efficaces dans un monde toujours plus connecte et complexe.


Documents de Cours

Annales 2018

Sujet d'examen 2018 : algorithmes de graphes (Dijkstra, Bellman-Ford), flots et programmation lineaire.

Telecharger

Correction Examen 2024

Correction complete de l'examen 2024 avec explications detaillees des algorithmes et methodes de resolution.

Telecharger

TP Algorithme de Dijkstra

Travaux pratiques : implementation de Dijkstra pour recherche de plus court chemin dans differents graphes.

Telecharger


Cours suivi en 2023-2024 a l'INSA Toulouse, Departement Genie Electrique et Informatique.

Graphs and Linear Programming

PART A: GENERALITIES

Presentation

The "Graphs and Linear Programming" course covers two complementary areas of operations research: graph theory for modeling networks and relationships, and linear programming for optimizing systems under constraints. These mathematical tools are essential for solving complex optimization problems in industry, logistics, and networks.

Academic Year: 2023-2024
Semester: 8
Category: Applied Mathematics / Operations Research


PART B: DESCRIPTIVE PART

Experience Details

Environment and Context

The course combined rigorous mathematical theory with practical applications using optimization software. We studied classical algorithms (Dijkstra, Ford-Fulkerson, Simplex) and applied them to real-world problems: routing, planning, resource allocation, scheduling.

My Function

In this course, I was responsible for:

  • Modeling real-world problems as graphs or linear programs
  • Applying path-finding, flow, and spanning tree algorithms
  • Formulating and solving linear optimization problems
  • Using solvers (Python, CPLEX, GLPK)
  • Interpreting solutions and sensitivity analyses
  • Solving transportation, assignment, and scheduling problems

PART C: TECHNICAL PART

This section explores the technical aspects of graphs and linear programming.

Technical Concepts Learned

1. Graph Theory - Definitions

Graph G = (V, E):

  • V: set of vertices
  • E: set of edges or arcs

Types:

  • Directed graph: arcs with direction
  • Undirected graph: edges without direction
  • Weighted graph: weights on edges/arcs
  • Simple graph: no loops or multiple edges

Degree:

  • Degree of a vertex: number of incident edges
  • In-degree/out-degree (directed graph)

Path: sequence of vertices connected by edges
Cycle: closed path (returns to starting point)
Connectivity: all vertices reachable from any other

2. Shortest Path Algorithms

Dijkstra's Algorithm:
Finds shortest path from a source to all other vertices.

Complexity: O((V+E)log V) with heap

Limitation: positive weights only

Bellman-Ford Algorithm:
Handles negative weights, detects negative cycles.

Complexity: O(VE)

Floyd-Warshall Algorithm:
Shortest paths between all pairs of vertices.

Complexity: O(V³)

Applications:

  • GPS and navigation
  • Network routing
  • Route planning
  • Video games (AI)

3. Spanning Trees

Tree: connected acyclic graph
Spanning tree: tree including all vertices

Minimum Spanning Tree (MST):

Kruskal's Algorithm:

  • Sort edges by increasing weight
  • Add edge if it does not create a cycle
  • Uses union-find to detect cycles

Prim's Algorithm:

  • Start from a vertex
  • Add minimum-weight edge connecting tree to external vertex
  • Repeat until all vertices are included
Dijkstra's Algorithm

Figure: Shortest path search using Dijkstra's algorithm

Applications:

  • Minimum-cost network design (electrical, water, telecoms)
  • Clustering

4. Network Flows

Flow network:
Directed graph with capacities on arcs.

Maximum flow problem:
Maximize flow from source s to sink t.

Constraints:

  • Flow ≤ capacity on each arc
  • Flow conservation (inflow = outflow except at s and t)

Ford-Fulkerson Algorithm:

  • Find augmenting path (residual capacity > 0)
  • Increase flow along this path
  • Repeat until no augmenting path exists

Max-flow min-cut theorem:
Value of maximum flow = capacity of the minimum cut.

Edmonds-Karp Algorithm:
Ford-Fulkerson with BFS to find augmenting path.

Complexity: O(VE²)

Applications:

  • Transportation networks (road traffic, fluids)
  • Communication networks (bandwidth)
  • Bipartite matching

5. Assignment Problem

Problem:
Assign n tasks to n agents, minimize total cost.

Cost matrix C:
C_ij = cost of assigning task j to agent i

Formulation:

Minimize Σ Σ C_ij x x_ij

Constraints:
Σ_j x_ij = 1  (each agent 1 task)
Σ_i x_ij = 1  (each task 1 agent)
x_ij ∈ {0,1}

Hungarian algorithm:
Solves in O(n³).

Applications:

  • Staff/position assignment
  • Production planning
  • Matching (dating apps!)

6. Graph Coloring

Problem:
Assign a color to each vertex such that adjacent vertices have different colors.

Chromatic number χ(G):
Minimum number of colors needed.

Four-color theorem:
Any planar graph χ ≤ 4.

Algorithms:

  • Greedy (not optimal but fast)
  • Exhaustive search (exponential)

Applications:

  • Radio frequency allocation
  • Scheduling (resource conflicts)
  • Register allocation (compilers)

7. Linear Programming - Formulation

Standard form:

Maximize (or Minimize) Z = c1*x1 + c2*x2 + ... + cn*xn

Subject to:
a11*x1 + a12*x2 + ... + a1n*xn ≤ b1
a21*x1 + a22*x2 + ... + a2n*xn ≤ b2
...
am1*x1 + am2*x2 + ... + amn*xn ≤ bm

x1, x2, ..., xn ≥ 0

Matrix form:

Max c^T x
s.t. Ax ≤ b, x ≥ 0

Feasible region:
Convex polyhedron defined by constraints.

Fundamental theorem:
If an optimal solution exists, it is located at a vertex of the polyhedron.

8. Simplex Algorithm

Principle:
Iterative traversal of polyhedron vertices toward the optimum.

Steps:

  1. Start from a feasible vertex (basic solution)
  2. Test improving directions
  3. Move to adjacent vertex that improves Z
  4. Repeat until optimum (no direction improves)

Simplex tableau:
Tableau form for iterative calculations.

Slack variables:
Transform inequalities into equalities.

Complexity:
Exponential in the worst case, but polynomial in practice.

9. Duality

Primal Problem:

Max c^T x
s.t. Ax ≤ b, x ≥ 0

Dual Problem:

Min b^T y
s.t. A^T y ≥ c, y ≥ 0

Strong duality theorem:
If the primal has an optimal solution x*, the dual has an optimal solution y* and:

c^T x* = b^T y*

Economic interpretation:

  • Primal: optimal production
  • Dual: resource valuation (shadow prices)

Complementary slackness:

If x_j > 0 then dual constraint j is tight
If y_i > 0 then primal constraint i is tight

10. Sensitivity Analysis

Questions:

  • How does the optimum change if a parameter (cost, resource) changes?
  • Range of validity for the current solution?

Shadow price:
Change in Z if resource b_i is increased by one unit.
= dual variable y_i*

Reduced cost:
For a non-basic variable: how much c_j must decrease to enter the basis.

Variation ranges:

  • Objective coefficients c_j
  • Right-hand sides b_i

Within these ranges, the optimal solution (basis) remains the same.

11. Transportation Problem

Context:
m sources (supplies s_i), n destinations (demands d_j).
Cost c_ij to transport from i to j.

Formulation:

Min Σ_i Σ_j c_ij x x_ij

s.t.
Σ_j x_ij = s_i  (supply at source i)
Σ_i x_ij = d_j  (demand at destination j)
x_ij ≥ 0

Existence condition:
Σ s_i = Σ d_j (total supply = total demand)

Solution method:

  • Northwest corner method (initial solution)
  • Stepping-stone or MODI for optimization

Applications:

  • Logistics and distribution
  • Multi-site production planning

12. Integer Linear Programming

ILP (Integer Linear Programming):

Max c^T x
s.t. Ax ≤ b, x ≥ 0, x ∈ Z^n

Difficulty:
NP-hard (no known polynomial method).

Solution methods:

Branch and Bound:

  • Solve continuous relaxation (ignore integer constraint)
  • Branch on fractional variable
  • Explore decision tree
  • Bound using found integer solutions

Cutting Planes:
Add linear constraints eliminating fractional solutions without removing integer solutions.

Heuristic methods:
Find good solutions (not necessarily optimal) quickly.

0-1 Programming:
Binary variables (yes/no decisions).

Applications:

  • Planning
  • Scheduling
  • Facility location
  • Knapsack problem
  • Vehicle routing

PART D: ANALYTICAL PART

Knowledge and Skills Mobilized

  • Modeling real-world problems as graphs or linear programs
  • Understanding and applying classical algorithms
  • Mathematical formulation of optimization problems
  • Using solvers (Python, dedicated software)
  • Interpreting solutions and sensitivity analysis
  • Evaluating algorithmic complexity
  • Solving transportation, assignment, and scheduling problems
  • Critical thinking about model relevance and limitations

Self Evaluation

This course was mathematically demanding but very rewarding. Graph theory provides a powerful language for modeling many systems: networks, relationships, dependencies.

Classical algorithms (Dijkstra, Kruskal, Ford-Fulkerson) are elegant and well-proven. Understanding them in depth (not just applying them mechanically) helps in adapting or designing new algorithms.

Linear programming is an extremely powerful optimization tool. The ability to formulate a complex problem as a system of linear equations is a valuable skill. The simplex method, although conceptually simple (traversing vertices), requires rigor in calculations.

Sensitivity analysis and duality are deep concepts. Understanding that every optimization problem has a dual with economic interpretation (shadow prices) is fascinating.

Integer programming drastically increases problem complexity. The boundary between polynomial (continuous LP) and NP-hard (ILP) is striking. This underscores the importance of heuristics and approximations in practice.

Applications are ubiquitous: logistics, telecoms, production, transportation, finance. Knowing how to recognize that an industrial problem can be modeled as a graph or LP is a cross-cutting skill.

Using modern solvers (such as CPLEX, Gurobi, or Python libraries) democratizes optimization. However, understanding the underlying theory remains essential for correct formulation, result interpretation, and problem diagnosis.

My Opinion

This course is fundamental for any engineer facing optimization, planning, or network management problems.

Strengths:

  • Balance between theory and practice
  • Well-explained classical algorithms
  • Varied and concrete applications
  • Use of modern software tools

Areas for improvement:

  • More time on ILP and heuristics
  • Large-scale industrial case studies
  • Nonlinear programming (natural extension)
  • Multi-objective optimization

Personal reflections:

Optimization is at the heart of many industrial challenges: how to produce more with fewer resources, deliver faster at lower cost, make the best use of energy, etc. The mathematical tools from this course allow us to address these questions rigorously.

Modeling is often the most difficult part. Transforming a messy real-world problem into a clean mathematical model requires abstraction and intelligent simplification. A model that is too simple loses relevance; too complex becomes unsolvable.

The gap between polynomial and NP-hard problems serves as a reminder of the limits of exact optimization. For large-scale or complex problems, heuristics and metaheuristics (genetic algorithms, simulated annealing, etc.) are indispensable, even though they do not guarantee optimality.

Operations research is a vast and active field. Real-world problems often involve uncertainties, dynamics, and nonlinear constraints. Stochastic, robust, and online optimization are important extensions.

Professional applications:

These skills are applicable across many sectors:

  • Logistics: vehicle routing, warehouse management, supply chain
  • Telecommunications: routing, bandwidth allocation
  • Energy: production optimization, smart grids
  • Transportation: traffic management, line planning
  • Manufacturing: scheduling, resource allocation
  • Finance: portfolio optimization
  • Healthcare: staff scheduling, hospital resource allocation

Mastering these tools, combined with data science and machine learning skills, opens perspectives in data-driven optimization: using massive data to refine models and predictions, then optimizing accordingly.

Mastering these techniques in S8 is essential for any engineer wishing to design or improve efficient systems in an increasingly connected and complex world.


Course Documents

2018 Past Exam

2018 exam paper: graph algorithms (Dijkstra, Bellman-Ford), flows and linear programming.

Download

2024 Exam Correction

Complete correction of the 2024 exam with detailed explanations of algorithms and solution methods.

Download

Dijkstra Algorithm Lab

Lab work: implementation of Dijkstra for shortest path search in various graphs.

Download


Course taken in 2023-2024 at INSA Toulouse, Department of Electrical Engineering and Computer Science.