Enseignement spécialisé Optimisation Projet sur les réseaux de distribution d eau Kengy Barty et Pierre Carpentier kengy.barty@edf.fr pierre.carpentier@ensta-paristech.fr Année 2014/2015 Site du cours : cas.ensmp.fr/ petit/esoptimisation/ Site du projet : www.ensta.fr/ pcarpent/tp Reseau/ENSMP/
Objectif et modalités du projet Prendre prétexte d un problème d ingénierie (lié à l hydraulique urbaine) pour faire apparaître un problème d optimisation, puis mettre en œuvre sur ce problème les différentes approches et les différents algorithmes présentés dans le cours d optimisation. Dans la vraie vie, il est rare d écrire une méthode d optimisation comme le gradient conjugué ou quasi-newton, car c est un travail de professionnel. Pour ce projet, vous êtes les professionnels... Langage de programmation : Scilab Travail en binôme. Contrôle continu pour l évaluation du projet. Compte rendu à l issue de la 2-ème séance. Rapport final à l issue de la dernière séance.
Schématique d un réseau de distribution d eau
Variables décrivant le réseau et notations Tailles du réseau. n arcs (canalisations du réseau), m nœuds : m r réservoirs, m d consommateurs (m = m r + m d ). Variables hydrauliques du réseau. flux aux nœuds : f = pressions aux nœuds : p = ( fr f d ( pr p d ) R m ) R m à calculer, connus. connues, à calculer. résistances des arcs : r R n connues. débits dans les arcs : q R n à calculer. (m + n) inconnues à déterminer.
Matrice d incidence et équations d équilibre du réseau Matrice d incidence nœuds arcs. 4 f 5 1 b a a b c d e f g e g c 3 d 2 A = Équations décrivant l état d équilibre. 1 1 0 0 0 0 0 0 0 1 1 0 0 0 +1 0 0 +1 1 0 1 0 +1 0 0 +1 1 0 0 0 +1 0 0 +1 +1 1 2 3 4 5 4 e b Noeud 4 : q b + q e q f = f 4. Aq f = 0. f 5 Arc f : p 4 p 5 = r f q f q f. A p + r q q = 0. (m + n) équations.
Problème d optimisation associé à l équilibre (1) En 1978, Collins et al 1 prouvent que ces équations d équilibre : Aq f = 0, A p + r q q = 0, sont en fait les conditions d optimalité du problème d optimisation : min (q R n, f r R mr ) 1 q, r q q + pr, f r, 3 sous la contrainte Aq f = 0. 1. M. Collins, L. Cooper, R. Helgason, J. Kennington and L. LeBlanc. Solving the pipe network analysis problem using optimization techniques. Management Science, Vol.24, No.7, March 1978.
Problème d optimisation associé à l équilibre (2) Le problème initial précédent peut se simplifier : d une part en éliminant les variables de flux f r (qui figurent de manière uniquement linéaire dans le problème) : 1 min q, r q q + pr, A r q, q R n 3 sous la contrainte A d q f d = 0, d autre part en écrivant la contrainte A d q f d = 0 sous la forme équivalente q = q (0) + Bq C, ce qui mène au problème d optimisation sans contrainte équivalent suivant : min q C R n m d 1 q (0) +Bq C, r ( q (0) ) +Bq C q (0) +Bq C 3 ( + p r, A r q (0) ) +Bq C. C est ce problème que l on va résoudre (pour commencer)!
But du projet Écrire des méthodes génériques d optimisation (recherche linéaire, gradient conjugué, quasi-newton, Newton) qui ne communiquent avec le problème que par l intermédiaire d un oracle associé à : F : q C 1 q (0) + Bq C, r ( q (0) ) + Bq C q (0) ( + Bq C + p r, A r q (0) ) + Bq C. 3 Oracle Fonction qui pour tout q C calcule F (q C ), F (q C ), 2 F (q C ) : Algorithme d optimisation [F,G,H] = Oracle(qc,ind). Fonction qui minimise F en partant d un point initial q ini : [Fopt,qopt,Gopt] = Minimise(Oracle,qini). Recherche linéaire Fonction qui assure la décroissance de F dans une direction d.
L algorithme du gradient à pas fixe function [fopt,xopt,gopt]=gradient_f(oracle,xini) alpha = 0.0005; x = xini; for k = 1:iter end [F,G] = Oracle(x,ind); if norm(g) <= tol then kstar = k; break end x = x - (alpha*g); logg = [ logg ; log10(norm(g)) ]; Cout = [ Cout ; F ]; fopt = F; xopt = x; gopt = G; endfunction
Enchaînement des tâches : Moniteur Skel.sce // Donnees du probleme exec( Probleme_R.sce ); exec( Structures_R.sce ); // Fonction de visualisation du deroulement de l algorithme exec( Visualg.sci ); // Fonctions de verification des resultats exec( HydrauliqueP.sci ); exec( Verification.sci ); // Oracle et algorithme d optimisation exec( Oracle.sci ); exec( Gradient_F.sci ); // Optimisation xini = 0.1 * rand(n-md,1); [fopt,xopt,gopt] = Gradient_F(Oracle,xini); // Verification des resultats [q,z,f,p] = HydrauliqueP(xopt); Verification(q,z,f,p);
Variables disponibles dans l environnement Scilab Description de la variable Nom math. Variable info. Espace Nombre total d arcs n n N Nombre total de nœuds m m N Nombre de nœuds de demande m d md N Nombre de nœuds réservoir m r mr N Flux aux nœuds de demande f d fd M(m d, 1) Pressions aux nœuds réservoir p r pr M(m r, 1) Résistances des arcs r r M(n, 1) Vecteur initial des débits q (0) q0 M(n, 1) Matrice d incidence nœuds-arcs A A M(m, n) Sous-matrice demande de A A d Ad M(m d, n) Sous-matrice réservoir de A A r Ar M(m r, n) Sous-matrice arbre de A d A d,t AdT M(m d, m d ) Sous matrice coarbre de A d A d,c AdC M(m d, n m d ) Matrice inverse de A d,t AdI M(m d, m d ) Matrice d incidence arcs-cycles B B M(n, n m d ) Attention : en Scilab, les variables sont globales!
Programme de travail de cette première séance 1 Lire le document descriptif du TP... 2 Récupérer les documents et les codes Scilab du TP : http://www.ensta.fr/ pcarpent/tp Reseau/ENSMP/ 3 Calculer le gradient et le hessien de la fonction : F : R n m d R q C 1 q (0) + Bq C, r ( q (0) ) + Bq C q (0) + Bq C + 3 ( p r, A r q (0) ) + Bq C. 4 Écrire un oracle codant les expressions obtenues (en Scilab). 5 Tester cet oracle avec la fonction optim de Scilab. 6 Écrire et mettre en œuvre l algorithme du gradient à pas fixe. Pour la prochaine séance : avoir un oracle en état de marche!!!
Programmation du projet 1 13 avril (15h00 18h15) 2 17 avril (08h30 12h30) 3 04 mai (14h00 18h15) 4 11 mai (14h00 18h15)
Ce projet...
Le vrai problème...