Plans Coupants et Branch-and-bound

Dimension: px
Commencer à balayer dès la page:

Download "Plans Coupants et Branch-and-bound"

Transcription

1 Plans Coupants et Branch-and-bound Pierre Bonami Optimisation Combinatoire, Masters II, ID et IF 18 décembre 2012

2 2 idées algorithmiques On considère un problème en nombres entiers z PLM = min{c T x : Ax b, x 0, x j Z, j = 1,...,p}. (PLM)

3 2 idées algorithmiques On considère un problème en nombres entiers z PLM = min{c T x : Ax b, x 0, x j Z, j = 1,...,p}. (PLM) x = (6, 1 2 ) Soit x l optimum de la relaxation continue z PL = min{c T x : Ax b, x 0}. (PL) 1. Si, j = 1,...,p, x j Z, x résoud (PLM) et z PL = z PLM. 2. Si on connait une solution ˆx de (PLM) de cout ẑ z PL, ˆx est optimale.

4 Branchement Si 1. et 2. ne sont pas vérifiés, ĵ {1,...,p} tel que x j Z). On crée deux nouveaux problèmes, où on ajoute respectivement les contraintes xĵ xĵ et xĵ xĵ x = (6, 1 2 )

5 Branchement Si 1. et 2. ne sont pas vérifiés, ĵ {1,...,p} tel que x j Z). On crée deux nouveaux problèmes, où on ajoute respectivement les contraintes xĵ xĵ et xĵ xĵ x 2 1 x = (6, 1 2 ) x 2 0

6 Branchement Si 1. et 2. ne sont pas vérifiés, ĵ {1,...,p} tel que x j Z). On crée deux nouveaux problèmes, où on ajoute respectivement les contraintes xĵ xĵ et xĵ xĵ x 2 1 x = (6, 1 2 ) x 2 0 Nécessairement, l optimum de (PLM) est dans un des deux sous-problèmes. On applique récursivement les règles 1. et 2.

7 Plans coupants Soit X = {Ax b, x 0, x j Z, j = 1,...,p}. Comme x minimize la relaxation continue et x X, on a x conv(x) (x est une solution de base de (PL)). Th. de Séparation si P est convexe et ˆx P, hyperplan α T x = β tel que α T x β x P et α Tˆx β. x = (6, 1 2 )

8 Plans coupants Soit X = {Ax b, x 0, x j Z, j = 1,...,p}. Comme x minimize la relaxation continue et x X, on a x conv(x) (x est une solution de base de (PL)). Th. de Séparation si P est convexe et ˆx P, hyperplan α T x = β tel que α T x β x P et α Tˆx β. x = (6, 1 2 ) 1. Problème de séparation : Trouver α T x = β séparant X et ˆx. 2. Ajouter α T x β à (PL) et répéter les étapes (re-résoudre PL, vérifier 1. et 2.,...).

9 Plans coupants Soit X = {Ax b, x 0, x j Z, j = 1,...,p}. Comme x minimize la relaxation continue et x X, on a x conv(x) (x est une solution de base de (PL)). Th. de Séparation si P est convexe et ˆx P, hyperplan α T x = β tel que α T x β x P et α Tˆx β. x = (6, 1 2 ) 1. Problème de séparation : Trouver α T x = β séparant X et ˆx. 2. Ajouter α T x β à (PL) et répéter les étapes (re-résoudre PL, vérifier 1. et 2.,...).

10 Setup pour branch-and-bound Pour simplifier, on considère le problème en variables 0-1 (la généralisation aux variables entières est évidente) z PLM 01 = min cx Ax b x 0 x i {0,1} i = 1,...,n (PLM-01) Pour sous ensembles de variables F 0, F 1 disjoints donnés. On définit LP(F 0,F 1 ) : z LP(F0,F 1 ) = min cx Ax b x 0 (LP(F 0,F 1 )) x i = 0, i F 0, x i = 1, i F 1

11 Algorithme branch-and-bound Initialisation. L {(, )}. ub =. x NULL. Fin? Si L =, la solution x est optimale. Selectionner un noeud. Choisir un problème N i = (F 0,F 1 ) dans L. Evaluer. Résoudre LP(F 0,F 1 ). Si le problème n est pas réalisable aller en 1, sinon soit ˆx i sa solution. Élaguer. Si cˆx i ub, aller en 1. Si ˆx i est entier : ub cˆx i, x ˆx i, enlever de L tous les problèmes avec cˆx j ub puis aller en 1. Sinon aller en 5. Diviser Choisir j tel que ˆx i j Z, ajouter à L les deux sous problème (F O {j},f 1 ) et (F O,F 1 {j}). Aller en 1.

12 Exemple max 9x 1 +5x 2 x 1 6 4x 1 +9x 2 35 x 1 3x 2 1 3x 1 +2x 2 19 x Z 2 +

13 Exemple max 9x 1 +5x 2 x 1 6 4x 1 +9x 2 35 x 1 3x 2 1 3x 1 +2x 2 19 x Z 2 +

14 Exemple max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 lb = 56,5 x 2 Z x Z 2 + ub = x = (6, 1 2 )

15 Exemple max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 lb = 56,5 x 2 Z x 2 0 x 2 1 x Z 2 + ub = x 2 1 x 2 0

16 Exemple lb = 56,5 max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x Z 2 + x 2 0 x 2 1 lb = 56 x 1 Z ub = x = ( 17 3,1)

17 Exemple lb = 56,5 max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x 2 0 x 2 1 lb = 56 x 1 Z x Z 2 + x 1 5 x 1 6 ub = x 1 5 x 1 6

18 Exemple lb = 56,5 max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x 2 0 x 2 1 lb = 56 x Z 2 + x 1 5 x 1 6 ub = lb = x 2 Z x = (5, 13 9 )

19 Exemple lb = 56,5 max 9x 1 +5x 2 x 1 6 x 2 0 x 2 1 x 1 3x 2 1 3x 1 +2x 2 19 lb = 56 x Z 2 + x 1 5 x 1 6 ub = lb = x 2 Z x 2 2 x 2 1 x 2 2 x 2 1

20 Exemple lb = 56,5 max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x Z 2 + x 2 0 x 2 1 x 1 5 lb = 56 x 1 6 ub = 51 lb = x = (5,1) x 2 1 x 2 2 lb = 51 x Z n

21 Exemple max 9x 1 +5x 2 x 1 6 x 2 0 x 2 1 x 1 3x 2 1 3x 1 +2x 2 19 lb = 56 x Z 2 + x 1 5 x 1 6 ub = 51 lb = x 2 2 x 2 1 x 2 2 x 1 5 lb = 51 x Z n lb =

22 Exemple max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x Z 2 + x 2 0 x 2 1 x 1 5 lb = 56 x 1 6 ub = 51 lb = lb = x 1 6 x 2 1 x 2 1 x 2 2 lb = 51 x Z n

23 Exemple max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x Z 2 + x 2 0 x 2 1 x 1 5 lb = 56 x 1 6 ub = 51 lb = x 2 0 x 2 1 x 2 2 lb = 51 x Z n

24 Exemple max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x 2 0 lb = 54 x Z n x 2 1 lb = 56 x Z 2 + ub = 54 x 1 5 lb = x 1 6 x 2 1 x 2 2 x = (6,0) x 2 0 lb = 51 x Z n

25 Rendre le branch-and-bound efficace L algorithme a un temps de calcul exponentiel. En pratique l algorithme peut être rendu relativement efficace grâce à un certain nombre de choix : Avoir une bonne formulation. Trouver des solutions réalisables de manière heuristique (tabou, local search,...) pour faire baisser la borne supérieure rapidement. Bien Choisir la variable de branchement. Bien choisir l ordre dans lequel les sous problèmes sont explorés. Pour faire tous ces choix, aucune garantie théorique valable ne peut être donnée en générale... Raisonnement heuristique : essayer d avoir les meilleures bornes de manière à élaguer le plus tôt possible.

26 Parties de l algorithmes pouvant être changées 0. Initialisation. L {(, )}. C =, ub =. x NULL. 1. Fin? Si L =, la solution x est optimale. 2. Selectionner un noeud. Choisir un problème N i = (F 0,F 1 ) dans L. 3. Evaluer. Résoudre LP(C,F 0,F 1 ). Si le problème n est pas réalisable aller en 1, sinon soit ˆx i sa solution. 4. Élaguer. Si cˆx i ub, aller en 1. Si ˆx i est entier : ub cˆx i, enlever de L tous les problèmes avec cˆx j ub puis aller en 1. Sinon aller en Diviser Choisir j tel que ˆx i j Z, ajouter à L les deux sous problème (F O {j},f 1 ) et (F O,F 1 {j}). Aller en 1.

27 Exemple bis (en explorant la branche gauche d abord) max 9x 1 +5x 2 x 1 6 4x 1 +9x 2 35 x 1 3x 2 1 3x 1 +2x 2 19 x Z 2 +

28 Exemple bis (en explorant la branche gauche d abord) max 9x 1 +5x 2 x 1 6 4x 1 +9x 2 35 x 1 3x 2 1 3x 1 +2x 2 19 x Z 2 +

29 Exemple bis (en explorant la branche gauche d abord) max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x Z 2 + lb = 56,5 x 2 Z ub = x = (6, 1 2 )

30 Exemple bis (en explorant la branche gauche d abord) max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x Z 2 + lb = 56,5 x 2 Z x 2 0 x 2 1 ub = x 2 1 x 2 1

31 Exemple bis (en explorant la branche gauche d abord) lb = 56,5 max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x 2 0 x 2 1 lb = 54 x Z n x Z 2 + ub = 54 x = (6,0)

32 Exemple bis (en explorant la branche gauche d abord) lb = 56,5 max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x Z 2 + x 2 0 lb = 54 x Z n x 2 1 lb = 56 x 1 Z ub = 54

33 Exemple bis (en explorant la branche gauche d abord) lb = 56,5 max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x Z 2 + x 2 0 lb = 54 x Z n x 2 1 lb = 56 x 1 Z ub = 54 x 1 5 x 1 6

34 Exemple bis (en explorant la branche gauche d abord) lb = 56,5 max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x 2 0 lb = 54 x Z n x 2 1 lb = 56 x Z 2 + x 1 5 x 1 6 ub = 54

35 Exemple bis (en explorant la branche gauche d abord) lb = 56,5 max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x 2 0 lb = 54 x Z n x 2 1 lb = 56 x Z 2 + ub = 54 x 1 5 x 1 6 lb =

36 Exemple bis (en explorant la branche gauche d abord) max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x 2 0 lb = 54 x Z n x 2 1 lb = 56 x Z 2 + ub = 54 x 1 5 x 1 6 lb =

37 Exemple bis (en explorant la branche gauche d abord) max 9x 1 +5x 2 x 1 6 x 1 3x 2 1 3x 1 +2x 2 19 x Z 2 + ub = 54 x 2 0 lb = 54 x Z n x 2 1 x 1 5 lb = 56 x 1 6 lb =

38 Choisir un problème Le but est à la fois de trouver rapidement des bonnes solutions (pour faciliter l élaguage) et de ne pas explorer des nœuds de coût trop mauvais. Profondeur d abord : minimise l espace mémoire, mais peut être très lent si une bonne solution n est pas trouvée vite. En choissant le nœud qui donne la meilleure borne (best-bound) : minimise le nombre de nœud, mais peut demander beaucoup d espace mémoire. Une bonne approche est de combiner les deux : on plonge dans l arbre jusqu à une feuille et on remonte au nœud qui donne la meilleure borne.

39 Choix de la variable de branchement Le but est de choisir la variable qui donnera le plus petit arbre. Soit ˆx i la solution du nœud. On note f j = ˆx j i ˆxi j la partie fractionnaire de cette solution. 1. Choisir la variable la plus fractionnaire : ĵ maximisant : min{f j,1 f j } (pas très bon). 2. Pseudo-coûts. 3. Strong branching.

40 Pseudo-Coûts Idée Au cours de la recherche, on va brancher plusieurs fois sur la même variables. Collectons des statistiques sur l effet de brancher sur chaque variable, au fur et à mesure de l algorithme. À chaque nœud utilisons ces statistiques pour faire le choix. Implémentation ψ + j /ψ j changement moyen de l objectif quand on branche sur la variable j à droite ou à gauce. Après chaque branchement on met à jour ψ + j ou ψ j. A chaque nœud on utilise ψ + j et ψ j pour prédire le changement : ψ j = min{f i j ψ i,(1 f i j )ψ + j }+2max{f i j ψ i,(1 f i j )ψ + j }

41 Strong-branching À chaque nœud essayons plusieurs candidats en simulant le branchement :

42 Strong-branching À chaque nœud essayons plusieurs candidats en simulant le branchement : x 1 x 1 x 1 x 1 x 1

43 Strong-branching À chaque nœud essayons plusieurs candidats en simulant le branchement : x 1,x 2,... x 2 x 2 x 2 x 2

44 Strong-branching À chaque nœud essayons plusieurs candidats en simulant le branchement : x 1,x 2,... x i x i x i x i Si pour un j les deux descendants sont irréalisables : élaguage.

45 Strong-branching À chaque nœud essayons plusieurs candidats en simulant le branchement : x 1,x 2,... x i x i x i x i Si pour un j les deux descendants sont irréalisables : élaguage. Si pour un j une des deux descendants est irréalisable fixe la variable.

46 Strong-branching À chaque nœud essayons plusieurs candidats en simulant le branchement : x 1,x 2,... x i x i x i x i Si pour un j les deux descendants sont irréalisables : élaguage. Si pour un j une des deux descendants est irréalisable fixe la variable. Choisis la variable j avec deux descendants réalisables et le meilleur potentiel.

47 Peut être combiné avec les pseudo-coûts On fait strong-branching η fois pour chaque variable ensuite on utilise les pseudo-coûts. Strong-branching À chaque nœud essayons plusieurs candidats en simulant le branchement : x 1,x 2,... x i x i x i x i Si pour un j les deux descendants sont irréalisables : élaguage. Si pour un j une des deux descendants est irréalisable fixe la variable. Choisis la variable j avec deux descendants réalisables et le meilleur potentiel.

48 Algorithme de Plans Coupants PLNE Soit P =: {x R n + : Ax b} et X := P {x : x i Z, i = 1,...,p}. On considère le problème : min c T x x X 0. Initialisation. C R \. 1. Relaxation Résoudre min{c T x : x P C}. Soit x la solution. Aller en Fin? Si x i Z, i = 1...,p, FIN, sinon Aller en Séparation Trouver α,β tel que α T x < β et α T x β pour tout x X. C {α T x β}. Aller en 1.

49 Branch-and-cut Combinaison de l algorithme de plans coupants et du branch-and-bound. Dans la boucle de traitement des nœuds, on insère la possibilité de renforcer la formulation avec des coupes.

50 0. Initialisation. L {(, )}. C =, ub =. x NULL. 1. Fin? Si L =, la solution x est optimale. 2. Selectionner un noeud. Choisir un problème N i = (F 0,F 1 ) dans L. 3. Evaluer. Résoudre LP(C,F 0,F 1 ). Si le problème n est pas réalisable aller en 1, sinon soit ˆx i sa solution. 4. Élaguer. Si cˆx i ub, aller en 1. Si ˆx i est entier : ub cˆx i, enlever de L tous les problèmes avec cˆx j ub puis aller en 1. Sinon aller en Couper ou Diviser? Choisir soit de générer des coupes soit de diviser, aller en 6 ou 7 selon le choix. 6. Couper Résoudre le problème de séparation pour ˆx i de manière à générer une ou plusieurs coupes. Aller en Diviser Choisir j tel que ˆx i j Z, ajouter à L les deux sous problème (F O {j},f 1 ) et (F O,F 1 {j}). Aller en 1.

51 Deuxième partie II Usage d un solveur de PLNE : GLPK

52 Solveurs de PLNE Plusieurs logiciels proposent des implémentations de l algorithme de branch-and-cut pour la PLNE. Parmi les meilleurs 1. IBM CPLEX, Commercial, 2. FICO XPRESS, Commercial, 3. GuRoBi, Commercial, 4. SCIP, Académique, gratuits pour les universités, 5. COIN-OR Cbc, Open source GLPK est un solveur open-source (GPL) un peu moins évolué mais dont les interfaces sont similaires aux principaux solveurs. Interfaces Différentes interfaces vers les solveurs : Fichiers textes : formats MPS et LP. Modeleurs : pour prototyper rapidement un modèle. Languages de programmation (C et C++) : plus rapide et permet d adapter l algorithme à une application.

53 Interfaces des solveurs solveur C C++ 1 CLI 2 Python Modeleurs CPLEX x x x x Ampl, Aims, OPL, GAMS XPRESS x x 3 x - Mosel, GAMS GuRoBi x x Aims, Ampl, GAMS SCIP x x - Zimpl Cbc x x - GnuMP, Ampl, GAMS Glpk x x - GnuMp 1. Aussi Java et ṄET 2. Command Line Interface : ligne de commande 3. Aussi Java et ṄET 4..NET

54 Glpk Fait partie du projet GNU. Développé en Russie par Andrew Makhorin (Moscow Aviation Institute). Code source en C. Implémente une méthode de Simplexe, un branch-and-cut et un language de modélisation. Disponible dans la plupart des distributions linux. Un package est disponible pour Windows. Sous MacOS X, disponible dans MacPorts. Code propre et bien documenté.

55 Modélisation avec GnuMP Permet le prototypage rapide d un modèle. Le modèle est dans un fichier.mod Les données dans un fichier.dat Le language de moélisation est basé sur la notion d ensembles. Les modèles peuvent ensuite être résolu avec le programme glpsol. Exemple pour le problème de localisation d entrepots : avec les fichiers... glpsol -m UFL.mod -d UFL.dat

56 UFL.mod param n;#dépots param m;#clients set N:=1..n;#dépots set M:=1..m;#clients param f{j in N}; param c{i in M, j in N}; var x{i in M, j in N} >=0; var y{j in N} binary; minimize cost: sum{i in M, j in N} c[i,j] * x[i,j] + sum{j in N} f[j] * y[j]; s.t. affectation{i in M} : sum{j in N} x[i,j] = 1; cout_fixe{i in M, j in N} : x[i,j] <= y[j]; end

57 UFL.dat param n := 60;#dépots param m := 100; #clients param: f := ; param: c := ; end;

58 API C pour GLPK Les fonctions sont dans le fichier glpk.h (à inclure) Toutes les fonctions commencent par le préfixe glp. Principale difficulté : Les tableaux sont numérotés à partir de 1.

59 Initialization La principale structure de données glp prob. Création d un problème : glp_prob * glp_create_prob(); Nommer le problème : glp_set_prob_name(glp_prob lp*,const char * nom); Nommer l objectif : glp_set_obj_name(glp_prob*lp, const char * nom); Choix de la direction d optimisation (sens = GLP MIN/GLP MAX) glp_set_obj_dir(glp_prob *lp,int sens); Spécification du nombre de contraintes : glp_add_rows(glp_prob *lp, int n_rows); Spécification du nombre de variables : glp_add_cols(glp_prob *lp, int n_cols); Libération de la mémoire : glp_delete_prob(glp_prob *lp);

60 Spécification des variables Nom de la variable (j 1) : glp_set_col_name(glp_prob *lp, int j, const char *nom); Spécifie les bornes : glp_set_col_bnds(glp_prob *lp, int j, int type, double inf, double sup); où type est GLP LO variable avec borne inf seulement, GLP UP var. avec une borne sup, GLP DB bornes inf et sup, GLP FR non bornée. Spécifie le coût glp_set_obj_coef(glp_prob *lp, int j, double c); Type de la variable glp_set_col_kind(glp_prob *lp, int j, int type); (où type est GLP CV pour continue, GLP IV pour entière, et GLP BV pour binaire)

61 Écriture des contraintes Pour écrire la contrainte i du problème de la forme ax{,,=}b (on compte i à partir de 1). Spécification du nom de la contrainte : glp_set_row_name(glp_prob *lp, int i, const char * name); Spécification des bornes : glp_set_row_bnds(glp_prob *lp, int i, int sense, double b, double b); 1. GLP FX est pour une contrainte ax = b. 2. GLP UP pour une contrainte ax b. 3. GLP LO pour une contrainte ax b. Spécification du membre de gauche. On stocke les indices non-nuls dans le tableau row idx et les valeurs dans row val : glp_set_mat_row(glp_prob *lp, int i, int n, int [] row_idx, double [] row_val);

62 Exemple d écriture d une contrainte Pour écrire la contrainte 2x 1 +10x 4 +5x 10 1 : row idx = n/u row val = n/u glp_set_row_bnds(lp, i, GLP_LO, 1, 1); glp_set_mat_row(lp, i, 3, row_idx, row_val); 5. l élément 0 du tableau n est pas utilisé

63 Optimiser, récupérer les résultats Ecrit le problème dans un fichier LP glp_write_lp(glp_prob *lp, NULL, const char * nom); Résoud la relaxation continue glp_simplex(glp_prob *lp, NULL); Initializations des paramètres pour la résolution en nombres entiers glp_iocp param; glp_init_iocp(&param); Résolution d un PLM glp_intopt(glp_prob *lp, glp_iocp * param); Réecupération de la valeur objective du PLM double glp_mip_obj_val(glp_prob *lp); Récupération de la valeur d une variable double glp_mip_col_val(glp_prob *lp, int j);

64 Exemple : UFL Écriture d un problème. Optimisation Résultats On considère la version avec demandes non-unitaires du problème de localisation d entrepots (formulation faible) : n m n min c ij x ij + y j f j j=1 i=1 tel que n x ij = d i j=1 m m x ij = ( d i )y j i=1 y j {0,1} x ij [0,d i ] i=1 j=1 i = 1,...,m j = 1,...,n j = 1,...,n i = 1,...,m,j = 1,...,n.

65 Troisième partie III Fonctionnalités avancées de GLPK

66 Fonctions callback GLPK implémente un algorithme de branch-and-cut pour la programmation en nombres entiers. Une implémentation de coupes de Gomory est incluse. L utilisateur peut ajouter des méthodes supplémentaires adaptées à son application pour améliorer l efficacité du solveur. Pour ce faire, le mécanisme adopté est celui d une fonction callback. La fonction callback doit être écrite par l utilisateur est sera appelée par GLPK pendant l optimisation dans plusieurs endroit du branch-and-cut.

67 0. Initialisation. L {(, )}. C =, ub =. x NULL. 1. Fin? Si L =, la solution x est optimale. 2. Selectionner un noeud. Choisir un problème N i = (F 0,F 1 ) dans L. 3. Evaluer. Résoudre LP(C,F 0,F 1 ). Si le problème n est pas réalisable aller en 1, sinon soit ˆx i sa solution. 4. Élaguer. Si cˆx i ub, aller en 1. Si ˆx i est entier : ub cˆx i, enlever de L tous les problèmes avec cˆx j ub puis aller en 1. Sinon aller en Couper ou Diviser? Choisir soit de générer des coupes soit de diviser, aller en 6 ou 7 selon le choix. 6. Couper Résoudre le problème de séparation pour ˆx i de manière à générer une ou plusieurs coupes. Aller en Heuristique Essayer de trouver une solution réalisable de manière heuristique. 8. Diviser Choisir j tel que ˆx j i. Créer sous-problèmes, aller en 1.

68 Définition de la fonction callback La fonction callback doit être définie comme ayant deux arguments : ma_fonction(glp_tree * tree, void * info); glp tree est une structure GLPK stockant les informations sur l optimisation. info peut-être utilisé par l utilisateur pour passer des données externes. Le nom de la fonction callback doit ensuite être donnée à GLPK dans le champ cb func de la structure glp iocp. On peut passer les données externes dans cb info.

69 Exemple On définit une calback : generateur(glp_tree * tree, void * info); On crée une instance de la structure glp iocp à laquelle on passe le nom de la fonction : glp_prob * lp = glp_create_prob(); glp_iocp param; glp_init_iocp(&param); param.cb_func = generateur; /* eventuellement*/ parma.cb_info = mes_donnees; Pour optimiser le problème, on appelle la fonction int opt avec lp et param comme paramètres : glp_intopt(lp, &param);

70 Routines de bases pouvant être appelées dans la callback int ios reason(glp tree *) : Indique l endroit d où la callback a été appelée en retournant : GLP ISELECT selection de sous-problème; GLP IPREPRO preprocessing; GLP IHEUR heuristique; GLP ICUTGEN génération de coupe; GLP IBRANCH variable de branchement; glp prob *glp ios get prob(glp tree *tree) : retourne le sous-problème (programme linéaire en cours de traitement). Au travers du pointeur retourné, on peut accéder aux données du problème, la solution courante,...

71 Exemple On veut faire un générateur de coupe. void generateur(glp_tree * tree, void * info){ int reason = glp_ios_reason(tree); if(reason!= GLP_ICUTGEN)/* quitte si autre que icutgen*/ return; glp_prob * prob = glp_ios_get_prob(tree); int n = glp_get_num_cols(prob);/*nombre de variables*/ int m = glp_get_num_rows(prob);/*nombre de contraintes*/... return; }

72 Principales Routines spécifique Si GLP ISELECT, spécifie à GLPK le prochain problème comme celui de numéro p : void glp_ios_select_node(glp_tree *tree, int p); Si GLP IHEUR, spécifie à GLPK une nouvelle solution entière x : int glp_ios_heur_sol(glp_tree *tree, const double x[]); Si GLP IBRANCH : int glp_ios_can_branch(glp_tree *tree, int j); indique on peut brancher sur la variable j (elle n est pas fixée). void glp_ios_branch_upon(glp_tree *tree, int j, int sel); Spécifie à GLPK de brancher sur la variable j et d explorer en premier le nœud de gauche (sel = GLP DN BRNCH), de droite (sel = GLP UP BRNCH), de choisir lui même (sel = GLP NO BRNCH).

73 Routines spécifique (suite) Si GLP ICUTGEN : int glp_ios_add_row(glp_tree *tree, const char *name, int klass, int flags, int len, const int ind[], const double val[], int type, double rhs); Ajoute une coupe. name donne un nom à la coupe (peut être NULL. klass : un nombre entre 101 et 200. flags : non utilisé. len : nombre d éléments non-nuls dans la contrainte. ind[] : indices des éléments non-nuls. val[] : valeurs des éléments non-nuls. type : GLP LO si la contrainte est, GLP UP si la contrainte est. rhs : membre de droite.

74 Exemple de génération de coupe Génère l inegalité x i +x j +x k 1 ind[1] = i, val[1] = 1.0; ind[2] = j, val[2] = 1.0; ind[3] = k, val[3] = 1.0; glp_ios_add_row(tree, NULL, 101, 0, 3, ind, val, GLP_UP, 1.0);

75 Exemple : UFL Ajout des coupes x ij d i y j pour tout i = 1,...,m, j = 1,...,n.

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Recherche opérationnelle Les démonstrations et les exemples seront traités en cours Souad EL Bernoussi Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Table des matières 1 Programmation

Plus en détail

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique La programmation linéaire : une introduction Qu est-ce qu un programme linéaire? Qu est-ce qu un programme linéaire? Exemples : allocation de ressources problème de recouvrement Hypothèses de la programmation

Plus en détail

Programmation linéaire

Programmation linéaire 1 Programmation linéaire 1. Le problème, un exemple. 2. Le cas b = 0 3. Théorème de dualité 4. L algorithme du simplexe 5. Problèmes équivalents 6. Complexité de l Algorithme 2 Position du problème Soit

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Cours de Master Recherche

Cours de Master Recherche Cours de Master Recherche Spécialité CODE : Résolution de problèmes combinatoires Christine Solnon LIRIS, UMR 5205 CNRS / Université Lyon 1 2007 Rappel du plan du cours 16 heures de cours 1 - Introduction

Plus en détail

Programmation Linéaire - Cours 1

Programmation Linéaire - Cours 1 Programmation Linéaire - Cours 1 P. Pesneau pierre.pesneau@math.u-bordeaux1.fr Université Bordeaux 1 Bât A33 - Bur 265 Ouvrages de référence V. Chvátal - Linear Programming, W.H.Freeman, New York, 1983.

Plus en détail

Les arbres binaires de recherche

Les arbres binaires de recherche Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s

Plus en détail

Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014

Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014 numériques et Institut d Astrophysique et de Géophysique (Bât. B5c) Bureau 0/13 email:.@ulg.ac.be Tél.: 04-3669771 29 septembre 2014 Plan du cours 2014-2015 Cours théoriques 16-09-2014 numériques pour

Plus en détail

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments Recherche Opérationnelle Optimisation combinatoire : Applications et compléments Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 17 février 2014 Plan de

Plus en détail

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Jade. Projet Intelligence Artificielle «Devine à quoi je pense» Jade Projet Intelligence Artificielle «Devine à quoi je pense» Réalisé par Djénéba Djikiné, Alexandre Bernard et Julien Lafont EPSI CSII2-2011 TABLE DES MATIÈRES 1. Analyse du besoin a. Cahier des charges

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche 1 arbre des comparaisons 2 recherche dichotomique l'arbre est recalculé à chaque recherche 2 5 3 4 7 9 1 6 1 2 3 4 5 6 7 9 10 conserver la structure d'arbre au lieu de la reconstruire arbre binaire de

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Chapitre 5 : Flot maximal dans un graphe

Chapitre 5 : Flot maximal dans un graphe Graphes et RO TELECOM Nancy A Chapitre 5 : Flot maximal dans un graphe J.-F. Scheid 1 Plan du chapitre I. Définitions 1 Graphe Graphe valué 3 Représentation d un graphe (matrice d incidence, matrice d

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 1 de 46 Algorithmique Trouver et Trier Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 46 Algorithmes et structures de données La plupart des bons algorithmes

Plus en détail

Programmation mathématique Discrète et Modèles Linéaires

Programmation mathématique Discrète et Modèles Linéaires Université Pierre et Marie Curie Master IAD Module PDML Programmation mathématique Discrète et Modèles Linéaires Pierre Fouilhoux pierre.fouilhoux@lip6.fr 29 septembre 2013 Table des matières I Programmation

Plus en détail

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives introduction Chapitre 5 Images récursives http ://univ-tln.fr/~papini/sources/flocon.htm Récursivité http://www.poulain.org/fractales/index.html Image qui se contient elle-même 1 Exemples mathématiques

Plus en détail

Programmation linéaire

Programmation linéaire Programmation linéaire DIDIER MAQUIN Ecole Nationale Supérieure d Electricité et de Mécanique Institut National Polytechnique de Lorraine Mathématiques discrètes cours de 2ème année Programmation linéaire

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA 75. Un plombier connaît la disposition de trois tuyaux sous des dalles ( voir figure ci dessous ) et il lui suffit de découvrir une partie de chacun d eux pour pouvoir y poser les robinets. Il cherche

Plus en détail

Sujet 4: Programmation stochastique propriétés de fonction de recours

Sujet 4: Programmation stochastique propriétés de fonction de recours Sujet 4: Programmation stochastique propriétés de fonction de recours MSE3313: Optimisation Stochastiqe Andrew J. Miller Dernière mise au jour: October 19, 2011 Dans ce sujet... 1 Propriétés de la fonction

Plus en détail

ARBRES BINAIRES DE RECHERCHE

ARBRES BINAIRES DE RECHERCHE ARBRES BINAIRES DE RECHERCHE Table de symboles Recherche : opération fondamentale données : éléments avec clés Type abstrait d une table de symboles (symbol table) ou dictionnaire Objets : ensembles d

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Chapitre 7. Récurrences

Chapitre 7. Récurrences Chapitre 7 Récurrences 333 Plan 1. Introduction 2. Applications 3. Classification des récurrences 4. Résolution de récurrences 5. Résumé et comparaisons Lectures conseillées : I MCS, chapitre 20. I Rosen,

Plus en détail

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires Julien Jorge julien.jorge@univ-nantes.fr Laboratoire d Informatique de Nantes Atlantique,

Plus en détail

Nouvelles propositions pour la résolution exacte du problème de sac à dos bi-objectif unidimensionnel en variables binaires

Nouvelles propositions pour la résolution exacte du problème de sac à dos bi-objectif unidimensionnel en variables binaires Nouvelles propositions pour la résolution exacte du problème de sac à dos bi-objectif unidimensionnel en variables binaires Julien Jorge, Xavier Gandibleux Laboratoire d Informatique de Nantes Atlantique

Plus en détail

Contrainte de flot pour RCPSP avec temps de transfert

Contrainte de flot pour RCPSP avec temps de transfert Contrainte de flot et x-rcpsc T 1 Contrainte de flot pour RCPSP avec temps de transfert PS temp, s ij Cmax BENOIST Thierry BOUYGUES/e-Lab DIAMANTINI Maurice ENSTA/LMA Contrainte de flot et x-rcpsc T Présentation

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications A. Optimisation sans contrainte.... Généralités.... Condition nécessaire et condition suffisante

Plus en détail

Annexe 6. Notions d ordonnancement.

Annexe 6. Notions d ordonnancement. Annexe 6. Notions d ordonnancement. APP3 Optimisation Combinatoire: problèmes sur-contraints et ordonnancement. Mines-Nantes, option GIPAD, 2011-2012. Sophie.Demassey@mines-nantes.fr Résumé Ce document

Plus en détail

4 Exemples de problèmes MapReduce incrémentaux

4 Exemples de problèmes MapReduce incrémentaux 4 Exemples de problèmes MapReduce incrémentaux 1 / 32 Calcul des plus courtes distances à un noeud d un graphe Calcul des plus courts chemins entre toutes les paires de noeuds d un graphe Algorithme PageRank

Plus en détail

Application de K-means à la définition du nombre de VM optimal dans un cloud

Application de K-means à la définition du nombre de VM optimal dans un cloud Application de K-means à la définition du nombre de VM optimal dans un cloud EGC 2012 : Atelier Fouille de données complexes : complexité liée aux données multiples et massives (31 janvier - 3 février

Plus en détail

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Arbres binaires de décision

Arbres binaires de décision 1 Arbres binaires de décision Résumé Arbres binaires de décision Méthodes de construction d arbres binaires de décision, modélisant une discrimination (classification trees) ou une régression (regression

Plus en détail

Compression de Données - Algorithme de Huffman Document de Conception

Compression de Données - Algorithme de Huffman Document de Conception ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs

Plus en détail

INFO-F-310 - Algorithmique 3 et Recherche Opérationnelle

INFO-F-310 - Algorithmique 3 et Recherche Opérationnelle INFO-F- - Algorithmique et Recherche Opérationnelle Yves De Smet Bernard Fortz - Table des matières I Introduction Aide à la décision et modèles mathématiques Quelques exemples de modèles mathématiques

Plus en détail

Conception de réseaux de télécommunications : optimisation et expérimentations

Conception de réseaux de télécommunications : optimisation et expérimentations Conception de réseaux de télécommunications : optimisation et expérimentations Jean-François Lalande Directeurs de thèse: Jean-Claude Bermond - Michel Syska Université de Nice-Sophia Antipolis Mascotte,

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Cours des Méthodes de Résolution Exactes Heuristiques et Métaheuristiques

Cours des Méthodes de Résolution Exactes Heuristiques et Métaheuristiques Université Mohammed V, Faculté des Sciences de Rabat Laboratoire de Recherche Mathématiques, Informatique et Applications Cours des Méthodes de Résolution Exactes Heuristiques et Métaheuristiques MASTER

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Programmation par contraintes. Laurent Beaudou

Programmation par contraintes. Laurent Beaudou Programmation par contraintes Laurent Beaudou On se trouve où? Un problème, une solution : la solution est-elle une solution du problème? simulation, vérification 2 On se trouve où? Un problème, une solution

Plus en détail

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année 2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES Maude Manouvrier La reproduction de ce document par

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

Programmation Par Contraintes

Programmation Par Contraintes Programmation Par Contraintes Cours 2 - Arc-Consistance et autres amusettes David Savourey CNRS, École Polytechnique Séance 2 inspiré des cours de Philippe Baptiste, Ruslan Sadykov et de la thèse d Hadrien

Plus en détail

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée forax at univ-mlv dot fr - ParisJUG Java.next() - Mars 2012 What Else? Lambda == Inner class? Java a des lambdas depuis la version 1.1 Exemple utilisant

Plus en détail

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Cours de Programmation Impérative: Zones de mémoires et pointeurs Cours de Programmation Impérative: Zones de mémoires et pointeurs Julien David A101 - david@lipn.univ-paris13.fr Julien David (A101 - david@lipn.univ-paris13.fr) 1 / 1 Z`o n`e s `d`e m`é m`o i r`e Julien

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

Plus en détail

Resolution limit in community detection

Resolution limit in community detection Introduction Plan 2006 Introduction Plan Introduction Introduction Plan Introduction Point de départ : un graphe et des sous-graphes. But : quantifier le fait que les sous-graphes choisis sont des modules.

Plus en détail

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab notre compétence d'éditeur à votre service créée en juin 2010, Scilab enterprises propose services et support autour

Plus en détail

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

Plus en détail

FIMA, 7 juillet 2005

FIMA, 7 juillet 2005 F. Corset 1 S. 2 1 LabSAD Université Pierre Mendes France 2 Département de Mathématiques Université de Franche-Comté FIMA, 7 juillet 2005 Plan de l exposé plus court chemin Origine du problème Modélisation

Plus en détail

Programmation système I Les entrées/sorties

Programmation système I Les entrées/sorties Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Programmation MacOSX / ios

Programmation MacOSX / ios Programmation MacOSX / ios Master Ingénierie Informatique 2011-2012 Jean-Baptiste.Yunès@liafa.jussieu.fr deux extensions objets de C : C++ (Stroustrup) Objective-C (Cox & Love) ajout de constructions à

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Contributions à l expérimentation sur les systèmes distribués de grande taille

Contributions à l expérimentation sur les systèmes distribués de grande taille Contributions à l expérimentation sur les systèmes distribués de grande taille Lucas Nussbaum Soutenance de thèse 4 décembre 2008 Lucas Nussbaum Expérimentation sur les systèmes distribués 1 / 49 Contexte

Plus en détail

BIRT (Business Intelligence and Reporting Tools)

BIRT (Business Intelligence and Reporting Tools) BIRT (Business Intelligence and Reporting Tools) Introduction Cette publication a pour objectif de présenter l outil de reporting BIRT, dans le cadre de l unité de valeur «Data Warehouse et Outils Décisionnels»

Plus en détail

Tp 1 correction. Structures de données (IF2)

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

Plus en détail

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr 6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure

Plus en détail

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7 Cahier des charges driver WIFI pour chipset Ralink RT2571W sur hardware ARM7 RevA 13/03/2006 Création du document Sylvain Huet RevB 16/03/2006 Fusion des fonctions ARP et IP. SH Modification des milestones

Plus en détail

UE C avancé cours 1: introduction et révisions

UE C avancé cours 1: introduction et révisions Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple

Plus en détail

Quelques algorithmes simples dont l analyse n est pas si simple

Quelques algorithmes simples dont l analyse n est pas si simple Quelques algorithmes simples dont l analyse n est pas si simple Michel Habib habib@liafa.jussieu.fr http://www.liafa.jussieu.fr/~habib Algorithmique Avancée M1 Bioinformatique, Octobre 2008 Plan Histoire

Plus en détail

CHAPITRE VIII : Les circuits avec résistances ohmiques

CHAPITRE VIII : Les circuits avec résistances ohmiques CHAPITRE VIII : Les circuits avec résistances ohmiques VIII. 1 Ce chapitre porte sur les courants et les différences de potentiel dans les circuits. VIII.1 : Les résistances en série et en parallèle On

Plus en détail

IRL : Simulation distribuée pour les systèmes embarqués

IRL : Simulation distribuée pour les systèmes embarqués IRL : Simulation distribuée pour les systèmes embarqués Yassine El Khadiri, 2 ème année Ensimag, Grenoble INP Matthieu Moy, Verimag Denis Becker, Verimag 19 mai 2015 1 Table des matières 1 MPI et la sérialisation

Plus en détail

TD3: tableaux avancées, première classe et chaînes

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?

Plus en détail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7 Sommaire 1-Introduction 2 1-1- BPM (Business Process Management)..2 1-2 J-Boss JBPM 2 2-Installation de JBPM 3 2-1 Architecture de JOBSS JBPM 3 2-2 Installation du moteur JBoss JBPM et le serveur d application

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Initiation à l algorithmique

Initiation à l algorithmique Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes Loris MARCHAL Laboratoire de l Informatique du Parallélisme Équipe Graal Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes Thèse réalisée sous la direction

Plus en détail

Les structures. Chapitre 3

Les structures. Chapitre 3 Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Gestion mémoire et Représentation intermédiaire

Gestion mémoire et Représentation intermédiaire Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Excel Avancé. Plan. Outils de résolution. Interactivité dans les feuilles. Outils de simulation. La valeur cible Le solveur

Excel Avancé. Plan. Outils de résolution. Interactivité dans les feuilles. Outils de simulation. La valeur cible Le solveur Excel Avancé Plan Outils de résolution La valeur cible Le solveur Interactivité dans les feuilles Fonctions de recherche (ex: RechercheV) Utilisation de la barre d outils «Formulaires» Outils de simulation

Plus en détail

Construire des plug-ins pour SAS Management Console SAS 9.1

Construire des plug-ins pour SAS Management Console SAS 9.1 Construire des plug-ins pour SAS Management Console SAS 9.1 Janvier 2005 Sommaire 1 INTRODUCTION... 3 1.1 OBJECTIFS... 3 1.2 PERIMETRE... 3 2 LES COMPOSANTS DE SAS MANAGEMENT CONSOLE... 4 3 LA CONSTRUCTION

Plus en détail

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

Plus en détail

Utilisation du backtrack intelligent dans un branch-and-bound Application au problème d Open-Shop

Utilisation du backtrack intelligent dans un branch-and-bound Application au problème d Open-Shop Utilisation du backtrack intelligent dans un branch-and-bound Application au problème d Open-Shop Narendra Jussien et Christelle Guéret École des Mines de Nantes 4 rue Alfred Kastler BP 20722 F-44300 Nantes

Plus en détail

PROJET 1 : BASE DE DONNÉES REPARTIES

PROJET 1 : BASE DE DONNÉES REPARTIES PROJET 1 : BASE DE DONNÉES REPARTIES GESTION D UNE BANQUE Elèves : David Bréchet Frédéric Jacot Charles Secrétan DONNÉES DU PROJET SSC - Bases de Données II Laboratoire de Bases de Données BD réparties

Plus en détail

Le protocole ARP (Address Resolution Protocol) Résolution d adresses et autoconfiguration. Les protocoles ARP, RARP, TFTP, BOOTP, DHCP

Le protocole ARP (Address Resolution Protocol) Résolution d adresses et autoconfiguration. Les protocoles ARP, RARP, TFTP, BOOTP, DHCP Résolution d adresses et autoconfiguration Les protocoles ARP, RARP, TFTP, BOOTP, DHCP Le protocole ARP (Address Resolution Protocol) Se trouve au niveau de la couche réseau Interrogé par le protocole

Plus en détail

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

TP : Gestion d une image au format PGM

TP : Gestion d une image au format PGM TP : Gestion d une image au format PGM Objectif : L objectif du sujet est de créer une classe de manipulation d images au format PGM (Portable GreyMap), et de programmer des opérations relativement simples

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

Arguments d un programme

Arguments d un programme Arguments d un programme L2 SPI, Bruno Jacob 1 Arguments Quand on appelle un programme dans un environnement UNIX ou MS- DOS, on compose une ligne de commandes de la forme : nom-du-programme argument1

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. E-mail address: Nicolas.Thiery@u-psud.fr URL: http://nicolas.thiery.

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. E-mail address: Nicolas.Thiery@u-psud.fr URL: http://nicolas.thiery. Cours de Recherche Opérationnelle IUT d Orsay Nicolas M. THIÉRY E-mail address: Nicolas.Thiery@u-psud.fr URL: http://nicolas.thiery.name/ CHAPTER 1 Introduction à l optimisation 1.1. TD: Ordonnancement

Plus en détail

Éléments de programmation et introduction à Java

Éléments de programmation et introduction à Java Éléments de programmation et introduction à Java Jean-Baptiste Vioix (jean-baptiste.vioix@iut-dijon.u-bourgogne.fr) IUT de Dijon-Auxerre - LE2I http://jb.vioix.free.fr 1-20 Les différents langages informatiques

Plus en détail